Boy/Girl option
This adds the boy/girl selection from later generations, using the pret tutorial and a spriteset from Pokemon Anniversary Red. I made some alterations, namely inserting the option later into the speech to be less clunky, and having the Nidorino become a Nidorina if you pick the feminine option. I decided to make the third name option Seren, a common Welsh name for girls. It means "star", which is really cute! But...most people will probably say it's a Panel de Pon reference, which is cool too.
|
@ -85,6 +85,7 @@ Improved areas
|
||||||
|
|
||||||
QoL Enhancements
|
QoL Enhancements
|
||||||
====
|
====
|
||||||
|
- A girl option is now available, featuring the sprite from Pokemon Anniversary Red, which is based on Green's manga and later LGPE appearance (sort of).
|
||||||
- All 151 original Pokemon, plus an additional 100, can be obtained without the use of trading or glitches, including Mew!
|
- All 151 original Pokemon, plus an additional 100, can be obtained without the use of trading or glitches, including Mew!
|
||||||
- New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it!
|
- New Pokedex entries for most Pokemon are available, sourced from the original 1996 Pokedex book by Creatures Inc., restoring a ton of old Kanto lore. Thanks to [Dr. Lava and Nob Ogasawara](http://lavacutcontent.com/1996-creatures-pokedex-translation-1/) for their incredible work translating and writing about it!
|
||||||
- Pikachu and Eevee are now starters, featuring fully functional Rival lineups. If you pick Pikachu, he picks Eevee, and if you pick Eevee, he picks Pikachu!
|
- Pikachu and Eevee are now starters, featuring fully functional Rival lineups. If you pick Pikachu, he picks Eevee, and if you pick Eevee, he picks Pikachu!
|
||||||
|
@ -290,6 +291,7 @@ Credits
|
||||||
* FrenchOrange - Reconstructions of various overworld beta sprites.
|
* FrenchOrange - Reconstructions of various overworld beta sprites.
|
||||||
* Helix Chamber, RacieBeep, loumilouminosus, Orchid, GBCRetro, & catstorm26 - Prototype Pokémon sprites
|
* Helix Chamber, RacieBeep, loumilouminosus, Orchid, GBCRetro, & catstorm26 - Prototype Pokémon sprites
|
||||||
* Vortiene - Reused a bit of code from their pureRGB hack. Assisted in bug fixes.
|
* Vortiene - Reused a bit of code from their pureRGB hack. Assisted in bug fixes.
|
||||||
|
* Pigu-A, RevoSucks, walle303 - Contributors to Pokemon Anniversary Red, which we used as reference points for the Girl sprites and the Battle Tent.
|
||||||
* jojobear13 & Mateo - Move deleter & move relearner functionality from Shin Pokered, followed [this guide](https://github.com/jojobear13/shinpokered/blob/master/how%20to%20guides/how%20to%20add%20the%20move%20relearner%26deleter.txt). Tweaks were made to make it compatible with the pokered version we worked off of.
|
* jojobear13 & Mateo - Move deleter & move relearner functionality from Shin Pokered, followed [this guide](https://github.com/jojobear13/shinpokered/blob/master/how%20to%20guides/how%20to%20add%20the%20move%20relearner%26deleter.txt). Tweaks were made to make it compatible with the pokered version we worked off of.
|
||||||
* Rangi - Reused a bit of code from their Red* / Blue* hack to make HMs usable in the overworld!
|
* Rangi - Reused a bit of code from their Red* / Blue* hack to make HMs usable in the overworld!
|
||||||
* wrulfy - Technical advice
|
* wrulfy - Technical advice
|
||||||
|
|
|
@ -5,6 +5,13 @@ DefaultNamesPlayer:
|
||||||
next "JACK"
|
next "JACK"
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
|
DefaultNamesGirl:
|
||||||
|
db "NEW NAME"
|
||||||
|
next "GREEN"
|
||||||
|
next "LEAF"
|
||||||
|
next "SEREN"
|
||||||
|
db "@"
|
||||||
|
|
||||||
DefaultNamesRival:
|
DefaultNamesRival:
|
||||||
db "NEW NAME"
|
db "NEW NAME"
|
||||||
next "BLUE"
|
next "BLUE"
|
||||||
|
|
|
@ -4,6 +4,12 @@ DefaultNamesPlayerList:
|
||||||
db "ASH@"
|
db "ASH@"
|
||||||
db "JACK@"
|
db "JACK@"
|
||||||
|
|
||||||
|
DefaultNamesGirlList:
|
||||||
|
db "NEW NAME@"
|
||||||
|
db "GREEN@"
|
||||||
|
db "LEAF@"
|
||||||
|
db "SEREN@"
|
||||||
|
|
||||||
DefaultNamesRivalList:
|
DefaultNamesRivalList:
|
||||||
db "NEW NAME@"
|
db "NEW NAME@"
|
||||||
db "BLUE@"
|
db "BLUE@"
|
||||||
|
|
|
@ -1740,7 +1740,7 @@ _OakSpeechText2B::
|
||||||
prompt
|
prompt
|
||||||
|
|
||||||
_IntroducePlayerText::
|
_IntroducePlayerText::
|
||||||
text "First, what is"
|
text "Next, what is"
|
||||||
line "your name?"
|
line "your name?"
|
||||||
prompt
|
prompt
|
||||||
|
|
||||||
|
@ -1819,3 +1819,8 @@ _PromptToCutText::
|
||||||
text "Would you like to"
|
text "Would you like to"
|
||||||
line "use CUT?"
|
line "use CUT?"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
_BoyGirlText::
|
||||||
|
text "Firstly, are you a"
|
||||||
|
line "boy or a girl?"
|
||||||
|
done
|
||||||
|
|
|
@ -8,7 +8,7 @@ TwoOptionMenuStrings:
|
||||||
table_width 5, TwoOptionMenuStrings
|
table_width 5, TwoOptionMenuStrings
|
||||||
; width, height, blank line before first menu item?, text pointer
|
; width, height, blank line before first menu item?, text pointer
|
||||||
two_option_menu 4, 3, FALSE, .YesNoMenu
|
two_option_menu 4, 3, FALSE, .YesNoMenu
|
||||||
two_option_menu 6, 3, FALSE, .NorthWestMenu
|
two_option_menu 5, 3, FALSE, .BoyGirlMenu
|
||||||
two_option_menu 6, 3, FALSE, .SouthEastMenu
|
two_option_menu 6, 3, FALSE, .SouthEastMenu
|
||||||
two_option_menu 6, 3, FALSE, .YesNoMenu
|
two_option_menu 6, 3, FALSE, .YesNoMenu
|
||||||
two_option_menu 6, 3, FALSE, .NorthEastMenu
|
two_option_menu 6, 3, FALSE, .NorthEastMenu
|
||||||
|
@ -25,9 +25,10 @@ TwoOptionMenuStrings:
|
||||||
db "YES"
|
db "YES"
|
||||||
next "NO@"
|
next "NO@"
|
||||||
|
|
||||||
.NorthWestMenu:
|
; There is probably a better way to word this...
|
||||||
db "NORTH"
|
.BoyGirlMenu:
|
||||||
next "WEST@"
|
db "BOY"
|
||||||
|
next "GIRL@"
|
||||||
|
|
||||||
.SouthEastMenu:
|
.SouthEastMenu:
|
||||||
db "SOUTH"
|
db "SOUTH"
|
||||||
|
|
|
@ -6365,12 +6365,21 @@ SwapPlayerAndEnemyLevels:
|
||||||
LoadPlayerBackPic:
|
LoadPlayerBackPic:
|
||||||
ld a, [wBattleType]
|
ld a, [wBattleType]
|
||||||
dec a ; is it the old man tutorial?
|
dec a ; is it the old man tutorial?
|
||||||
ld de, RedPicBack
|
ld de, OldManPicBack ; Load the old man back sprite preemptively
|
||||||
jr nz, .next
|
ld a, BANK(RedPicBack) ; Default Red back sprite will be used as a means to load in the Old Man back sprite
|
||||||
ld de, OldManPicBack
|
jr z, .next
|
||||||
.next
|
ld a, [wPlayerSex] ; do you think a republican will get off to this commit
|
||||||
|
and a
|
||||||
|
jr z, .RedBack
|
||||||
|
ld de, GreenPicBack
|
||||||
|
ld a, BANK(GreenPicBack) ; Load female back sprite
|
||||||
|
jr .next
|
||||||
|
.RedBack
|
||||||
|
ld de, RedPicBack ; Load default Red back sprite
|
||||||
ld a, BANK(RedPicBack)
|
ld a, BANK(RedPicBack)
|
||||||
ASSERT BANK(RedPicBack) == BANK(OldManPicBack)
|
.next
|
||||||
|
ASSERT BANK(GreenPicBack) == BANK(OldManPicBack) ; These two ASSERTs make sure to cover
|
||||||
|
ASSERT BANK(RedPicBack) == BANK(OldManPicBack) ; both sprite cases
|
||||||
call UncompressSpriteFromDE
|
call UncompressSpriteFromDE
|
||||||
predef ScaleSpriteByTwo
|
predef ScaleSpriteByTwo
|
||||||
ld hl, wShadowOAM
|
ld hl, wShadowOAM
|
||||||
|
|
|
@ -41,6 +41,10 @@ IF DEF(_DEBUG)
|
||||||
ld [wTownVisitedFlag], a
|
ld [wTownVisitedFlag], a
|
||||||
ld [wTownVisitedFlag + 1], a
|
ld [wTownVisitedFlag + 1], a
|
||||||
|
|
||||||
|
; This hack was coded by transfems.
|
||||||
|
ld a, 1
|
||||||
|
ld [wPlayerSex], a
|
||||||
|
|
||||||
; Get all badges except Earth Badge.
|
; Get all badges except Earth Badge.
|
||||||
ld a, ~(1 << BIT_EARTHBADGE)
|
ld a, ~(1 << BIT_EARTHBADGE)
|
||||||
ld [wObtainedBadges], a
|
ld [wObtainedBadges], a
|
||||||
|
|
|
@ -486,6 +486,12 @@ StartMenu_TrainerInfo::
|
||||||
DrawTrainerInfo:
|
DrawTrainerInfo:
|
||||||
ld de, RedPicFront
|
ld de, RedPicFront
|
||||||
lb bc, BANK(RedPicFront), $01
|
lb bc, BANK(RedPicFront), $01
|
||||||
|
ld a, [wPlayerSex] ; guess what it's genital inspection time
|
||||||
|
and a
|
||||||
|
jr z, .AreBoy
|
||||||
|
ld de, GreenPicFront
|
||||||
|
lb bc, BANK(GreenPicFront), $01
|
||||||
|
.AreBoy
|
||||||
predef DisplayPicCenteredOrUpperRight
|
predef DisplayPicCenteredOrUpperRight
|
||||||
call DisableLCD
|
call DisableLCD
|
||||||
hlcoord 0, 2
|
hlcoord 0, 2
|
||||||
|
|
|
@ -183,8 +183,16 @@ HoFMonInfoText:
|
||||||
next "TYPE2/@"
|
next "TYPE2/@"
|
||||||
|
|
||||||
HoFLoadPlayerPics:
|
HoFLoadPlayerPics:
|
||||||
|
ld a, [wPlayerSex] ; sex check
|
||||||
|
and a ; sex check
|
||||||
|
jr nz, .GirlStuff1
|
||||||
ld de, RedPicFront
|
ld de, RedPicFront
|
||||||
ld a, BANK(RedPicFront)
|
ld a, BANK(RedPicFront)
|
||||||
|
jr .Routine ; skip the girl stuff and go to main routine
|
||||||
|
.GirlStuff1
|
||||||
|
ld de, GreenPicFront
|
||||||
|
ld a, BANK(GreenPicFront)
|
||||||
|
.Routine ; resume original routine
|
||||||
call UncompressSpriteFromDE
|
call UncompressSpriteFromDE
|
||||||
ld hl, sSpriteBuffer1
|
ld hl, sSpriteBuffer1
|
||||||
ld de, sSpriteBuffer0
|
ld de, sSpriteBuffer0
|
||||||
|
@ -192,8 +200,16 @@ HoFLoadPlayerPics:
|
||||||
call CopyData
|
call CopyData
|
||||||
ld de, vFrontPic
|
ld de, vFrontPic
|
||||||
call InterlaceMergeSpriteBuffers
|
call InterlaceMergeSpriteBuffers
|
||||||
|
ld a, [wPlayerSex] ; sex check
|
||||||
|
and a ; maybe the tories are like this too
|
||||||
|
jr nz, .GirlStuff2
|
||||||
ld de, RedPicBack
|
ld de, RedPicBack
|
||||||
ld a, BANK(RedPicBack)
|
ld a, BANK(RedPicBack)
|
||||||
|
jr .routine2 ; skip the girl stuff and continue original routine if guy
|
||||||
|
.GirlStuff2
|
||||||
|
ld de, GreenPicBack
|
||||||
|
ld a, BANK(GreenPicBack)
|
||||||
|
.routine2 ; original routine
|
||||||
call UncompressSpriteFromDE
|
call UncompressSpriteFromDE
|
||||||
predef ScaleSpriteByTwo
|
predef ScaleSpriteByTwo
|
||||||
ld de, vBackPic
|
ld de, vBackPic
|
||||||
|
|
|
@ -58,14 +58,36 @@ OakSpeech:
|
||||||
ld a, [wd732]
|
ld a, [wd732]
|
||||||
bit 1, a ; possibly a debug mode bit
|
bit 1, a ; possibly a debug mode bit
|
||||||
jp nz, .skipChoosingNames
|
jp nz, .skipChoosingNames
|
||||||
|
call ClearScreen ; clear the screen before resuming normal intro
|
||||||
ld de, ProfOakPic
|
ld de, ProfOakPic
|
||||||
lb bc, BANK(ProfOakPic), $00
|
lb bc, BANK(ProfOakPic), $00
|
||||||
call IntroDisplayPicCenteredOrUpperRight
|
call IntroDisplayPicCenteredOrUpperRight
|
||||||
call FadeInIntroPic
|
call FadeInIntroPic
|
||||||
ld hl, OakSpeechText1
|
ld hl, OakSpeechText1
|
||||||
call PrintText
|
call PrintText
|
||||||
|
ld hl, BoyGirlText ; added to the same file as the other oak text
|
||||||
|
call PrintText ; show this text
|
||||||
|
call BoyGirlChoice ; added routine at the end of this file
|
||||||
|
ld a, [wCurrentMenuItem]
|
||||||
|
ld [wPlayerSex], a ; store player's gender. 00 for boy, 01 for girl
|
||||||
call GBFadeOutToWhite
|
call GBFadeOutToWhite
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
|
||||||
|
ld a, [wPlayerSex] ; Let's change the Nidorins based on the choice. It's really cute and makes use of an unused command sound.
|
||||||
|
and a
|
||||||
|
jr z, .Nidorino
|
||||||
|
jr nz, .Nidorina
|
||||||
|
.Nidorina
|
||||||
|
ld a, NIDORINA
|
||||||
|
ld [wd0b5], a
|
||||||
|
ld [wcf91], a
|
||||||
|
call GetMonHeader
|
||||||
|
hlcoord 6, 4
|
||||||
|
call LoadFlippedFrontSpriteByMonIndex
|
||||||
|
call MovePicLeft
|
||||||
|
ld hl, OakSpeechText2Green
|
||||||
|
jr .cont
|
||||||
|
.Nidorino
|
||||||
ld a, NIDORINO
|
ld a, NIDORINO
|
||||||
ld [wd0b5], a
|
ld [wd0b5], a
|
||||||
ld [wcf91], a
|
ld [wcf91], a
|
||||||
|
@ -73,12 +95,21 @@ OakSpeech:
|
||||||
hlcoord 6, 4
|
hlcoord 6, 4
|
||||||
call LoadFlippedFrontSpriteByMonIndex
|
call LoadFlippedFrontSpriteByMonIndex
|
||||||
call MovePicLeft
|
call MovePicLeft
|
||||||
ld hl, OakSpeechText2
|
ld hl, OakSpeechText2Red
|
||||||
|
jr .cont
|
||||||
|
|
||||||
|
.cont
|
||||||
call PrintText
|
call PrintText
|
||||||
call GBFadeOutToWhite
|
call GBFadeOutToWhite
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
ld de, RedPicFront
|
ld de, RedPicFront
|
||||||
lb bc, BANK(RedPicFront), $00
|
lb bc, BANK(RedPicFront), $00
|
||||||
|
ld a, [wPlayerSex] ; check sex
|
||||||
|
and a ; check sex
|
||||||
|
jr z, .NotGreen1
|
||||||
|
ld de, GreenPicFront
|
||||||
|
lb bc, BANK(GreenPicFront), $00
|
||||||
|
.NotGreen1:
|
||||||
call IntroDisplayPicCenteredOrUpperRight
|
call IntroDisplayPicCenteredOrUpperRight
|
||||||
call MovePicLeft
|
call MovePicLeft
|
||||||
ld hl, IntroducePlayerText
|
ld hl, IntroducePlayerText
|
||||||
|
@ -98,6 +129,12 @@ OakSpeech:
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
ld de, RedPicFront
|
ld de, RedPicFront
|
||||||
lb bc, BANK(RedPicFront), $00
|
lb bc, BANK(RedPicFront), $00
|
||||||
|
ld a, [wPlayerSex] ; check sex
|
||||||
|
and a ; check sex
|
||||||
|
jr z, .NotGreen2
|
||||||
|
ld de, GreenPicFront
|
||||||
|
lb bc, Bank(GreenPicFront), $00
|
||||||
|
.NotGreen2:
|
||||||
call IntroDisplayPicCenteredOrUpperRight
|
call IntroDisplayPicCenteredOrUpperRight
|
||||||
call GBFadeInFromWhite
|
call GBFadeInFromWhite
|
||||||
ld a, [wd72d]
|
ld a, [wd72d]
|
||||||
|
@ -118,10 +155,17 @@ OakSpeech:
|
||||||
ld de, RedSprite
|
ld de, RedSprite
|
||||||
ld hl, vSprites
|
ld hl, vSprites
|
||||||
lb bc, BANK(RedSprite), $0C
|
lb bc, BANK(RedSprite), $0C
|
||||||
call CopyVideoData
|
ld a, [wPlayerSex] ; check sex
|
||||||
ld de, ShrinkPic1
|
and a ; check sex
|
||||||
lb bc, BANK(ShrinkPic1), $00
|
jr z, .NotGreen3
|
||||||
call IntroDisplayPicCenteredOrUpperRight
|
ld de,GreenSprite
|
||||||
|
lb bc, BANK(GreenSprite), $0C
|
||||||
|
.NotGreen3:
|
||||||
|
ld hl, vSprites
|
||||||
|
call CopyVideoData
|
||||||
|
ld de, ShrinkPic1
|
||||||
|
lb bc, BANK(ShrinkPic1), $00
|
||||||
|
call IntroDisplayPicCenteredOrUpperRight
|
||||||
ld c, 4
|
ld c, 4
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
ld de, ShrinkPic2
|
ld de, ShrinkPic2
|
||||||
|
@ -158,11 +202,16 @@ OakSpeech:
|
||||||
OakSpeechText1:
|
OakSpeechText1:
|
||||||
text_far _OakSpeechText1
|
text_far _OakSpeechText1
|
||||||
text_end
|
text_end
|
||||||
OakSpeechText2:
|
OakSpeechText2Red: ; this is such a clunky way to do it but the text_asm way caused crashes
|
||||||
text_far _OakSpeechText2A
|
text_far _OakSpeechText2A
|
||||||
sound_cry_nidorino
|
sound_cry_nidorino
|
||||||
text_far _OakSpeechText2B
|
text_far _OakSpeechText2B
|
||||||
text_end
|
text_end
|
||||||
|
OakSpeechText2Green:
|
||||||
|
text_far _OakSpeechText2A
|
||||||
|
sound_cry_nidorina
|
||||||
|
text_far _OakSpeechText2B
|
||||||
|
text_end
|
||||||
IntroducePlayerText:
|
IntroducePlayerText:
|
||||||
text_far _IntroducePlayerText
|
text_far _IntroducePlayerText
|
||||||
text_end
|
text_end
|
||||||
|
@ -234,3 +283,26 @@ IntroDisplayPicCenteredOrUpperRight:
|
||||||
xor a
|
xor a
|
||||||
ldh [hStartTileID], a
|
ldh [hStartTileID], a
|
||||||
predef_jump CopyUncompressedPicToTilemap
|
predef_jump CopyUncompressedPicToTilemap
|
||||||
|
|
||||||
|
; displays boy/girl choice
|
||||||
|
BoyGirlChoice::
|
||||||
|
call SaveScreenTilesToBuffer1
|
||||||
|
call InitBoyGirlTextBoxParameters
|
||||||
|
jr DisplayBoyGirlChoice
|
||||||
|
|
||||||
|
InitBoyGirlTextBoxParameters::
|
||||||
|
ld a, $1 ; loads the value for the unused North/West choice, that was changed to say Boy/Girl
|
||||||
|
ld [wTwoOptionMenuID], a
|
||||||
|
coord hl, 13, 7
|
||||||
|
ld bc, $80e
|
||||||
|
ret
|
||||||
|
|
||||||
|
DisplayBoyGirlChoice::
|
||||||
|
ld a, $14
|
||||||
|
ld [wTextBoxID], a
|
||||||
|
call DisplayTextBoxID
|
||||||
|
jp LoadScreenTilesFromBuffer1
|
||||||
|
|
||||||
|
BoyGirlText: ; This is new so we had to add a reference to get it to compile
|
||||||
|
text_far _BoyGirlText
|
||||||
|
text_end
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
ChoosePlayerName:
|
ChoosePlayerName:
|
||||||
call OakSpeechSlidePicRight
|
call OakSpeechSlidePicRight
|
||||||
ld de, DefaultNamesPlayer
|
ld a, [wPlayerSex] ; load sex
|
||||||
call DisplayIntroNameTextBox
|
and a
|
||||||
|
jr nz, .AreGirl ; Skip to girl names if you are a girl instead
|
||||||
|
ld de, DefaultNamesPlayer
|
||||||
|
call DisplayIntroNameTextBox
|
||||||
ld a, [wCurrentMenuItem]
|
ld a, [wCurrentMenuItem]
|
||||||
and a
|
and a
|
||||||
jr z, .customName
|
jr z, .customName
|
||||||
|
@ -10,6 +13,17 @@ ChoosePlayerName:
|
||||||
ld de, wPlayerName
|
ld de, wPlayerName
|
||||||
call OakSpeechSlidePicLeft
|
call OakSpeechSlidePicLeft
|
||||||
jr .done
|
jr .done
|
||||||
|
.AreGirl ; Copy of the boy naming routine, just with girl's names
|
||||||
|
ld de, DefaultNamesGirl
|
||||||
|
call DisplayIntroNameTextBox
|
||||||
|
ld a, [wCurrentMenuItem]
|
||||||
|
and a
|
||||||
|
jr z, .customName
|
||||||
|
ld hl, DefaultNamesGirlList
|
||||||
|
call GetDefaultName
|
||||||
|
ld de, wPlayerName
|
||||||
|
call OakSpeechSlidePicLeft
|
||||||
|
jr .done ; End of new Girl Names routine
|
||||||
.customName
|
.customName
|
||||||
ld hl, wPlayerName
|
ld hl, wPlayerName
|
||||||
xor a ; NAME_PLAYER_SCREEN
|
xor a ; NAME_PLAYER_SCREEN
|
||||||
|
@ -22,6 +36,12 @@ ChoosePlayerName:
|
||||||
call Delay3
|
call Delay3
|
||||||
ld de, RedPicFront
|
ld de, RedPicFront
|
||||||
ld b, BANK(RedPicFront)
|
ld b, BANK(RedPicFront)
|
||||||
|
ld a, [wPlayerSex] ; sex check
|
||||||
|
and a ; yknow it feels like republicans wanting to do penis checking
|
||||||
|
jr z, .AreBoy3
|
||||||
|
ld de, GreenPicFront
|
||||||
|
ld b, BANK(GreenPicFront)
|
||||||
|
.AreBoy3
|
||||||
call IntroDisplayPicCenteredOrUpperRight
|
call IntroDisplayPicCenteredOrUpperRight
|
||||||
.done
|
.done
|
||||||
ld hl, YourNameIsText
|
ld hl, YourNameIsText
|
||||||
|
|
|
@ -385,12 +385,29 @@ FishingAnim:
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
ld hl, wd736
|
ld hl, wd736
|
||||||
set 6, [hl] ; reserve the last 4 OAM entries
|
set 6, [hl] ; reserve the last 4 OAM entries
|
||||||
|
ld a, [wPlayerSex] ; sex check
|
||||||
|
and a ; sex check
|
||||||
|
jr z, .BoySpriteLoad
|
||||||
|
ld de, GreenSprite
|
||||||
|
ld hl, vNPCSprites
|
||||||
|
ld bc, (BANK(GreenSprite) << 8) + $0c
|
||||||
|
jr .KeepLoadingSpriteStuff
|
||||||
|
.BoySpriteLoad
|
||||||
ld de, RedSprite
|
ld de, RedSprite
|
||||||
ld hl, vNPCSprites tile $00
|
ld hl, vNPCSprites
|
||||||
lb bc, BANK(RedSprite), 12
|
lb bc, BANK(RedSprite), $c
|
||||||
|
.KeepLoadingSpriteStuff
|
||||||
call CopyVideoData
|
call CopyVideoData
|
||||||
|
ld a, [wPlayerSex] ; ; sex check
|
||||||
|
and a ; ; sex check seriously i feel like a republican here
|
||||||
|
jr z, .BoyTiles ; skip loading Green's stuff if you're Red
|
||||||
|
ld a, $4
|
||||||
|
ld hl, GreenFishingTiles
|
||||||
|
jr .ContinueRoutine ; go back to main routine after loading Green's stuff
|
||||||
|
.BoyTiles ; alternately, load Red's stuff
|
||||||
ld a, $4
|
ld a, $4
|
||||||
ld hl, RedFishingTiles
|
ld hl, RedFishingTiles
|
||||||
|
.ContinueRoutine
|
||||||
call LoadAnimSpriteGfx
|
call LoadAnimSpriteGfx
|
||||||
ld a, [wSpritePlayerStateData1ImageIndex]
|
ld a, [wSpritePlayerStateData1ImageIndex]
|
||||||
ld c, a
|
ld c, a
|
||||||
|
@ -493,6 +510,12 @@ RedFishingTiles:
|
||||||
fishing_gfx RedFishingTilesSide, 2, $0a
|
fishing_gfx RedFishingTilesSide, 2, $0a
|
||||||
fishing_gfx RedFishingRodTiles, 3, $fd
|
fishing_gfx RedFishingRodTiles, 3, $fd
|
||||||
|
|
||||||
|
GreenFishingTiles:
|
||||||
|
fishing_gfx GreenFishingTilesFront, 2, $02
|
||||||
|
fishing_gfx GreenFishingTilesBack, 2, $06
|
||||||
|
fishing_gfx GreenFishingTilesSide, 2, $0a
|
||||||
|
fishing_gfx RedFishingRodTiles, 3, $fd
|
||||||
|
|
||||||
_HandleMidJump::
|
_HandleMidJump::
|
||||||
ld a, [wPlayerJumpingYScreenCoordsIndex]
|
ld a, [wPlayerJumpingYScreenCoordsIndex]
|
||||||
ld c, a
|
ld c, a
|
||||||
|
|
|
@ -2,3 +2,6 @@ RedFishingTilesFront: INCBIN "gfx/overworld/red_fish_front.2bpp"
|
||||||
RedFishingTilesBack: INCBIN "gfx/overworld/red_fish_back.2bpp"
|
RedFishingTilesBack: INCBIN "gfx/overworld/red_fish_back.2bpp"
|
||||||
RedFishingTilesSide: INCBIN "gfx/overworld/red_fish_side.2bpp"
|
RedFishingTilesSide: INCBIN "gfx/overworld/red_fish_side.2bpp"
|
||||||
RedFishingRodTiles: INCBIN "gfx/overworld/fishing_rod.2bpp"
|
RedFishingRodTiles: INCBIN "gfx/overworld/fishing_rod.2bpp"
|
||||||
|
GreenFishingTilesFront: INCBIN "gfx/overworld/green_fish_front.2bpp"
|
||||||
|
GreenFishingTilesBack: INCBIN "gfx/overworld/green_fish_back.2bpp"
|
||||||
|
GreenFishingTilesSide: INCBIN "gfx/overworld/green_fish_side.2bpp"
|
||||||
|
|
BIN
gfx/overworld/green_fish_back.png
Normal file
After Width: | Height: | Size: 242 B |
BIN
gfx/overworld/green_fish_front.png
Normal file
After Width: | Height: | Size: 309 B |
BIN
gfx/overworld/green_fish_side.png
Normal file
After Width: | Height: | Size: 281 B |
|
@ -260,6 +260,7 @@ PidgeottoPicFront:: INCBIN "gfx/pokemon/front/pidgeotto.pic"
|
||||||
PidgeottoPicBack:: INCBIN "gfx/pokemon/back/pidgeottob.pic"
|
PidgeottoPicBack:: INCBIN "gfx/pokemon/back/pidgeottob.pic"
|
||||||
|
|
||||||
RedPicBack:: INCBIN "gfx/player/redb.pic"
|
RedPicBack:: INCBIN "gfx/player/redb.pic"
|
||||||
|
GreenPicBack:: INCBIN "gfx/player/greenb.pic"
|
||||||
OldManPicBack:: INCBIN "gfx/battle/oldmanb.pic"
|
OldManPicBack:: INCBIN "gfx/battle/oldmanb.pic"
|
||||||
|
|
||||||
|
|
||||||
|
@ -318,7 +319,6 @@ VileplumePicBack:: INCBIN "gfx/pokemon/back/vileplumeb.pic"
|
||||||
BellsproutPicFront:: INCBIN "gfx/pokemon/front/bellsprout.pic"
|
BellsproutPicFront:: INCBIN "gfx/pokemon/front/bellsprout.pic"
|
||||||
BellsproutPicBack:: INCBIN "gfx/pokemon/back/bellsproutb.pic"
|
BellsproutPicBack:: INCBIN "gfx/pokemon/back/bellsproutb.pic"
|
||||||
|
|
||||||
|
|
||||||
SECTION "Pics 6", ROMX
|
SECTION "Pics 6", ROMX
|
||||||
|
|
||||||
YoungsterPic:: INCBIN "gfx/trainers/youngster.pic"
|
YoungsterPic:: INCBIN "gfx/trainers/youngster.pic"
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
RedPicFront:: INCBIN "gfx/player/red.pic"
|
RedPicFront:: INCBIN "gfx/player/red.pic"
|
||||||
|
GreenPicFront:: INCBIN "gfx/player/green.pic"
|
||||||
ShrinkPic1:: INCBIN "gfx/player/shrink1.pic"
|
ShrinkPic1:: INCBIN "gfx/player/shrink1.pic"
|
||||||
ShrinkPic2:: INCBIN "gfx/player/shrink2.pic"
|
ShrinkPic2:: INCBIN "gfx/player/shrink2.pic"
|
||||||
|
|
BIN
gfx/player/green.png
Normal file
After Width: | Height: | Size: 929 B |
BIN
gfx/player/greenb.png
Normal file
After Width: | Height: | Size: 537 B |
|
@ -35,6 +35,8 @@ SECTION "NPC Sprites 2", ROMX
|
||||||
|
|
||||||
RedBikeSprite:: INCBIN "gfx/sprites/red_bike.2bpp"
|
RedBikeSprite:: INCBIN "gfx/sprites/red_bike.2bpp"
|
||||||
RedSprite:: INCBIN "gfx/sprites/red.2bpp"
|
RedSprite:: INCBIN "gfx/sprites/red.2bpp"
|
||||||
|
GreenBikeSprite:: INCBIN "gfx/sprites/green_bike.2bpp"
|
||||||
|
GreenSprite:: INCBIN "gfx/sprites/green.2bpp"
|
||||||
BlueSprite:: INCBIN "gfx/sprites/blue.2bpp"
|
BlueSprite:: INCBIN "gfx/sprites/blue.2bpp"
|
||||||
OakSprite:: INCBIN "gfx/sprites/oak.2bpp"
|
OakSprite:: INCBIN "gfx/sprites/oak.2bpp"
|
||||||
YoungsterSprite:: INCBIN "gfx/sprites/youngster.2bpp"
|
YoungsterSprite:: INCBIN "gfx/sprites/youngster.2bpp"
|
||||||
|
@ -71,8 +73,6 @@ GameboyKidSprite:: INCBIN "gfx/sprites/gameboy_kid.2bpp"
|
||||||
FairySprite:: INCBIN "gfx/sprites/fairy.2bpp"
|
FairySprite:: INCBIN "gfx/sprites/fairy.2bpp"
|
||||||
AgathaSprite:: INCBIN "gfx/sprites/agatha.2bpp"
|
AgathaSprite:: INCBIN "gfx/sprites/agatha.2bpp"
|
||||||
BrunoSprite:: INCBIN "gfx/sprites/bruno.2bpp"
|
BrunoSprite:: INCBIN "gfx/sprites/bruno.2bpp"
|
||||||
LoreleiSprite:: INCBIN "gfx/sprites/lorelei.2bpp"
|
|
||||||
SeelSprite:: INCBIN "gfx/sprites/seel.2bpp"
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "NPC Sprites 3", ROMX
|
SECTION "NPC Sprites 3", ROMX
|
||||||
|
@ -97,3 +97,5 @@ VoltorbSprite:: INCBIN "gfx/sprites/voltorb.2bpp"
|
||||||
GengarSprite:: INCBIN "gfx/sprites/gengar.2bpp"
|
GengarSprite:: INCBIN "gfx/sprites/gengar.2bpp"
|
||||||
MagikarpSprite:: INCBIN "gfx/sprites/magikarp.2bpp"
|
MagikarpSprite:: INCBIN "gfx/sprites/magikarp.2bpp"
|
||||||
PoliwagSprite:: INCBIN "gfx/sprites/poliwag.2bpp"
|
PoliwagSprite:: INCBIN "gfx/sprites/poliwag.2bpp"
|
||||||
|
LoreleiSprite:: INCBIN "gfx/sprites/lorelei.2bpp"
|
||||||
|
SeelSprite:: INCBIN "gfx/sprites/seel.2bpp"
|
||||||
|
|
BIN
gfx/sprites/green.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
gfx/sprites/green_bike.png
Normal file
After Width: | Height: | Size: 16 KiB |
|
@ -2027,7 +2027,12 @@ RunMapScript::
|
||||||
|
|
||||||
LoadWalkingPlayerSpriteGraphics::
|
LoadWalkingPlayerSpriteGraphics::
|
||||||
ld de, RedSprite
|
ld de, RedSprite
|
||||||
ld hl, vNPCSprites
|
ld a, [wPlayerSex]
|
||||||
|
and a
|
||||||
|
jr z, .AreGuy1
|
||||||
|
ld de, GreenSprite
|
||||||
|
.AreGuy1
|
||||||
|
ld hl,vNPCSprites
|
||||||
jr LoadPlayerSpriteGraphicsCommon
|
jr LoadPlayerSpriteGraphicsCommon
|
||||||
|
|
||||||
LoadSurfingPlayerSpriteGraphics::
|
LoadSurfingPlayerSpriteGraphics::
|
||||||
|
@ -2037,6 +2042,11 @@ LoadSurfingPlayerSpriteGraphics::
|
||||||
|
|
||||||
LoadBikePlayerSpriteGraphics::
|
LoadBikePlayerSpriteGraphics::
|
||||||
ld de, RedBikeSprite
|
ld de, RedBikeSprite
|
||||||
|
ld a, [wPlayerSex]
|
||||||
|
and a
|
||||||
|
jr z, .AreGuy2
|
||||||
|
ld de, GreenBikeSprite
|
||||||
|
.AreGuy2
|
||||||
ld hl, vNPCSprites
|
ld hl, vNPCSprites
|
||||||
|
|
||||||
LoadPlayerSpriteGraphicsCommon::
|
LoadPlayerSpriteGraphicsCommon::
|
||||||
|
|
|
@ -520,7 +520,7 @@ TextCommand_SOUND::
|
||||||
jr z, .pokemonCry
|
jr z, .pokemonCry
|
||||||
cp TX_SOUND_CRY_PIDGEOT
|
cp TX_SOUND_CRY_PIDGEOT
|
||||||
jr z, .pokemonCry
|
jr z, .pokemonCry
|
||||||
cp TX_SOUND_CRY_DEWGONG
|
cp TX_SOUND_CRY_NIDORINA
|
||||||
jr z, .pokemonCry
|
jr z, .pokemonCry
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
call PlaySound
|
call PlaySound
|
||||||
|
@ -548,7 +548,7 @@ TextCommandSounds::
|
||||||
db TX_SOUND_DEX_PAGE_ADDED, SFX_DEX_PAGE_ADDED
|
db TX_SOUND_DEX_PAGE_ADDED, SFX_DEX_PAGE_ADDED
|
||||||
db TX_SOUND_CRY_NIDORINO, NIDORINO ; used in OakSpeech
|
db TX_SOUND_CRY_NIDORINO, NIDORINO ; used in OakSpeech
|
||||||
db TX_SOUND_CRY_PIDGEOT, PIDGEOT ; used in SaffronCityText12
|
db TX_SOUND_CRY_PIDGEOT, PIDGEOT ; used in SaffronCityText12
|
||||||
db TX_SOUND_CRY_DEWGONG, DEWGONG ; unused
|
db TX_SOUND_CRY_NIDORINA, NIDORINA ; was unused dewgong call
|
||||||
|
|
||||||
TextCommand_DOTS::
|
TextCommand_DOTS::
|
||||||
; wait for button press or 30 frames while printing "…"s
|
; wait for button press or 30 frames while printing "…"s
|
||||||
|
|
|
@ -137,9 +137,9 @@ MACRO sound_cry_pidgeot
|
||||||
db TX_SOUND_CRY_PIDGEOT
|
db TX_SOUND_CRY_PIDGEOT
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
const TX_SOUND_CRY_DEWGONG ; $16
|
const TX_SOUND_CRY_NIDORINA ; $16
|
||||||
MACRO sound_cry_dewgong
|
MACRO sound_cry_nidorina
|
||||||
db TX_SOUND_CRY_DEWGONG
|
db TX_SOUND_CRY_NIDORINA
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
const TX_FAR ; $17
|
const TX_FAR ; $17
|
||||||
|
|
2
main.asm
|
@ -356,9 +356,9 @@ INCLUDE "data/moves/animations.asm"
|
||||||
INCLUDE "data/battle_anims/subanimations.asm"
|
INCLUDE "data/battle_anims/subanimations.asm"
|
||||||
INCLUDE "data/battle_anims/frame_blocks.asm"
|
INCLUDE "data/battle_anims/frame_blocks.asm"
|
||||||
INCLUDE "engine/movie/evolution.asm"
|
INCLUDE "engine/movie/evolution.asm"
|
||||||
INCLUDE "engine/items/tm_prices.asm"
|
|
||||||
INCLUDE "engine/overworld/elevator.asm"
|
INCLUDE "engine/overworld/elevator.asm"
|
||||||
|
|
||||||
SECTION "Engine Spillover", ROMX
|
SECTION "Engine Spillover", ROMX
|
||||||
|
|
||||||
INCLUDE "engine/menus/item_descriptions.asm"
|
INCLUDE "engine/menus/item_descriptions.asm"
|
||||||
|
INCLUDE "engine/items/tm_prices.asm"
|
||||||
|
|
|
@ -1972,7 +1972,10 @@ wd5cd:: db
|
||||||
; terminated with $FF
|
; terminated with $FF
|
||||||
wMissableObjectList:: ds 16 * 2 + 1
|
wMissableObjectList:: ds 16 * 2 + 1
|
||||||
|
|
||||||
ds 1
|
wPlayerSex::
|
||||||
|
; $00 = male
|
||||||
|
; $01 = female
|
||||||
|
ds 1
|
||||||
|
|
||||||
wGameProgressFlags::
|
wGameProgressFlags::
|
||||||
wOaksLabCurScript:: db
|
wOaksLabCurScript:: db
|
||||||
|
|