From 6726f5fec1742b65b60db38606756e2ad445ab8a Mon Sep 17 00:00:00 2001 From: Zeta_Null Date: Tue, 7 Jan 2025 02:17:30 -0500 Subject: [PATCH] Enby YES internally kind of sloppy, filenames refer to Pink as a few different things and none of them are by their final name lol Haven't managed to get this to build the debug rom? Probably not a big deal, though you have to specifically run "make kep" instead of just "make" --- constants/menu_constants.asm | 2 +- data/player_names.asm | 7 ++ data/player_names_list.asm | 6 ++ data/text/unused_names.asm | 38 ++++----- data/text_boxes.asm | 8 +- engine/battle/core.asm | 6 ++ engine/menus/start_sub_menus.asm | 4 + engine/movie/hall_of_fame.asm | 14 +++- engine/movie/intro.asm | 6 +- engine/movie/oak_speech/oak_speech.asm | 99 ++++++++++++++++++------ engine/movie/oak_speech/oak_speech2.asm | 17 ++++ engine/movie/title.asm | 46 ++++++++++- engine/overworld/player_animations.asm | 19 +++++ gfx/fishing.asm | 3 + gfx/overworld/teal_fish_back.png | Bin 0 -> 602 bytes gfx/overworld/teal_fish_front.png | Bin 0 -> 635 bytes gfx/overworld/teal_fish_side.png | Bin 0 -> 633 bytes gfx/pics.asm | 3 +- gfx/player.asm | 1 + gfx/player/third.png | Bin 0 -> 1394 bytes gfx/player/thirdb.png | Bin 0 -> 902 bytes gfx/sprites.asm | 17 ++-- gfx/sprites/teal.png | Bin 0 -> 14992 bytes gfx/sprites/teal_bike.png | Bin 0 -> 15984 bytes gfx/title/nbplayer.png | Bin 0 -> 1713 bytes gfx/trainer_card.asm | 3 + home/overworld.asm | 6 ++ home/text.asm | 4 +- layout.link | 2 +- macros/scripts/text.asm | 6 +- ram/wram.asm | 2 + 31 files changed, 256 insertions(+), 63 deletions(-) create mode 100644 gfx/overworld/teal_fish_back.png create mode 100644 gfx/overworld/teal_fish_front.png create mode 100644 gfx/overworld/teal_fish_side.png create mode 100644 gfx/player/third.png create mode 100644 gfx/player/thirdb.png create mode 100644 gfx/sprites/teal.png create mode 100644 gfx/sprites/teal_bike.png create mode 100644 gfx/title/nbplayer.png diff --git a/constants/menu_constants.asm b/constants/menu_constants.asm index 569bc05f..78d8ca70 100644 --- a/constants/menu_constants.asm +++ b/constants/menu_constants.asm @@ -20,7 +20,7 @@ DEF PC_ITEM_CAPACITY EQU 50 const MONEY_BOX_TEMPLATE ; $0f const MENU_TEMPLATE_10 ; $10 unused const MON_SPRITE_POPUP ; $11 - const JP_AH_MENU_TEMPLATE ; $12 + const BOY_GIRL_NO ; $12 new for gender non-binary selection const MONEY_BOX ; $13 const TWO_OPTION_MENU ; $14 const BUY_SELL_QUIT_MENU ; $15 diff --git a/data/player_names.asm b/data/player_names.asm index 6aec50fb..87249c7d 100644 --- a/data/player_names.asm +++ b/data/player_names.asm @@ -11,6 +11,13 @@ DefaultNamesGirl: next "LEAF" next "ELAINE" db "@" + +DefaultNamesEnby: + db "NEW NAME" + next "PINK" + next "QUARTZ" + next "JAY" + db "@" DefaultNamesRival: db "NEW NAME" diff --git a/data/player_names_list.asm b/data/player_names_list.asm index f5c06f6a..d08b1518 100644 --- a/data/player_names_list.asm +++ b/data/player_names_list.asm @@ -9,6 +9,12 @@ DefaultNamesGirlList: db "GREEN@" db "LEAF@" db "ELAINE@" + +DefaultNamesEnbyList: + db "NEW NAME@" + db "PINK@" + db "QUARTZ@" + db "JAY@" DefaultNamesRivalList: db "NEW NAME@" diff --git a/data/text/unused_names.asm b/data/text/unused_names.asm index 349a31cf..7311d001 100644 --- a/data/text/unused_names.asm +++ b/data/text/unused_names.asm @@ -1,22 +1,22 @@ UnusedBadgeNames:: - db "かみなりバッヂ@" ; THUNDER BADGE - db "かいがらバッヂ@" ; SHELL BADGE - db "おじぞうバッヂ@" ; JIZOU BADGE - db "はやぶさバッヂ@" ; FALCON BADGE - db "ひんやりバッヂ@" ; CHILL BADGE - db "なかよしバッヂ@" ; FRIENDSHIP BADGE - db "バラバッヂ@" ; ROSE BADGE - db "ひのたまバッヂ@" ; FIREBALL BADGE - db "ゴールドバッヂ@" ; GOLD BADGE +; db "かみなりバッヂ@" ; THUNDER BADGE +; db "かいがらバッヂ@" ; SHELL BADGE +; db "おじぞうバッヂ@" ; JIZOU BADGE +; db "はやぶさバッヂ@" ; FALCON BADGE +; db "ひんやりバッヂ@" ; CHILL BADGE +; db "なかよしバッヂ@" ; FRIENDSHIP BADGE +; db "バラバッヂ@" ; ROSE BADGE +; db "ひのたまバッヂ@" ; FIREBALL BADGE +; db "ゴールドバッヂ@" ; GOLD BADGE UnusedRankingNames: - db "たまご@" ; EGG - db "ひよこ@" ; CHICK - db "ブロンズ@" ; BRONZE - db "シルバー@" ; SILVER - db "ゴールド@" ; GOLD - db "プチキャプテン@" ; PETIT CAPTAIN - db "キャプテン@" ; CAPTAIN - db "プチマスター@" ; PETIT MASTER - db "マスター@" ; MASTER - db "エクセレント" ; EXCELLENT +; db "たまご@" ; EGG +; db "ひよこ@" ; CHICK +; db "ブロンズ@" ; BRONZE +; db "シルバー@" ; SILVER +; db "ゴールド@" ; GOLD +; db "プチキャプテン@" ; PETIT CAPTAIN +; db "キャプテン@" ; CAPTAIN +; db "プチマスター@" ; PETIT MASTER +; db "マスター@" ; MASTER +; db "エクセレント" ; EXCELLENT diff --git a/data/text_boxes.asm b/data/text_boxes.asm index a5013d1b..35c6eec7 100644 --- a/data/text_boxes.asm +++ b/data/text_boxes.asm @@ -33,7 +33,7 @@ TextBoxTextAndCoordTable: text_box_text SWITCH_STATS_CANCEL_MENU_TEMPLATE, 11, 11, 19, 17, SwitchStatsCancelText, 13, 12 text_box_text BUY_SELL_QUIT_MENU_TEMPLATE, 0, 0, 10, 6, BuySellQuitText, 2, 1 text_box_text MONEY_BOX_TEMPLATE, 11, 0, 19, 2, MoneyText, 13, 0 - text_box_text JP_AH_MENU_TEMPLATE, 7, 6, 11, 10, JapaneseAhText, 8, 8 + text_box_text BOY_GIRL_NO, 12, 6, 19, 12, BoyGirlNoText, 14, 7 text_box_text JP_POKEDEX_MENU_TEMPLATE, 11, 8, 19, 17, JapanesePokedexMenu, 12, 10 BuySellQuitText: @@ -80,8 +80,10 @@ SwitchStatsCancelText: next "STATS" next "CANCEL@" -JapaneseAhText: - db "アッ!@" +BoyGirlNoText: + db "RED" + next "GREEN" + next "PINK@" JapanesePokedexMenu: db "データをみる" diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 24afd5be..b76e0f52 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -6543,12 +6543,18 @@ LoadPlayerBackPic: ld a, [wPlayerSex] ; do you think a republican will get off to this commit and a jr z, .RedBack + cp a, 2 + jr z, .EnbyBack 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) + jr .next +.EnbyBack + ld de, TealPicBack ; Load teal back sprite + ld a, BANK(TealPicBack) .next ASSERT BANK(GreenPicBack) == BANK(OldManPicBack) ; These two ASSERTs make sure to cover ASSERT BANK(RedPicBack) == BANK(OldManPicBack) ; both sprite cases diff --git a/engine/menus/start_sub_menus.asm b/engine/menus/start_sub_menus.asm index 65f91873..3c8d60e7 100644 --- a/engine/menus/start_sub_menus.asm +++ b/engine/menus/start_sub_menus.asm @@ -519,6 +519,10 @@ DrawTrainerInfo: ld a, [wPlayerSex] ; guess what it's genital inspection time and a jr z, .AreBoy + ld de, EnbyPicFront + lb bc, BANK(EnbyPicFront), $01 + cp a, 2 + jr z, .AreBoy ; I'm not updating these names. I'm lazy. Also did you know this was changed to wPlayerGender in one of the other tutorials? ld de, GreenPicFront lb bc, BANK(GreenPicFront), $01 .AreBoy diff --git a/engine/movie/hall_of_fame.asm b/engine/movie/hall_of_fame.asm index 556b777f..b20798a3 100644 --- a/engine/movie/hall_of_fame.asm +++ b/engine/movie/hall_of_fame.asm @@ -188,10 +188,16 @@ HoFLoadPlayerPics: jr nz, .GirlStuff1 ld de, RedPicFront ld a, BANK(RedPicFront) - jr .Routine ; skip the girl stuff and go to main routine + jr .Routine ; skip the girl stuff and go to main routine .GirlStuff1 + cp a, 2 + jr z, .TealStuff1 ld de, GreenPicFront ld a, BANK(GreenPicFront) + jr .Routine ; skip the girl stuff and go to main routine +.TealStuff1 + ld de, EnbyPicFront + ld a, BANK(EnbyPicFront) .Routine ; resume original routine call UncompressSpriteFromDE ld hl, sSpriteBuffer1 @@ -207,8 +213,14 @@ HoFLoadPlayerPics: ld a, BANK(RedPicBack) jr .routine2 ; skip the girl stuff and continue original routine if guy .GirlStuff2 + cp a, 2 + jr z, .TealStuff2 ld de, GreenPicBack ld a, BANK(GreenPicBack) + jr .routine2 +.TealStuff2 + ld de, TealPicBack + ld a, BANK(TealPicBack) .routine2 ; original routine call UncompressSpriteFromDE predef ScaleSpriteByTwo diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm index 5aa10808..e5912ed9 100644 --- a/engine/movie/intro.asm +++ b/engine/movie/intro.asm @@ -277,9 +277,9 @@ CopyTileIDsFromList_ZeroBaseTileID: PlayMoveSoundB: ; unused - predef GetMoveSoundB - ld a, b - jp PlaySound +; predef GetMoveSoundB +; ld a, b +; jp PlaySound LoadIntroGraphics: ld hl, FightIntroBackMon diff --git a/engine/movie/oak_speech/oak_speech.asm b/engine/movie/oak_speech/oak_speech.asm index f5b4d226..2156dbf2 100644 --- a/engine/movie/oak_speech/oak_speech.asm +++ b/engine/movie/oak_speech/oak_speech.asm @@ -71,7 +71,7 @@ OakSpeech: 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 + ld [wPlayerSex], a ; store player's gender. 00 for boy, 01 for girl, 02 for enby call GBFadeOutToWhite call ClearScreen @@ -80,6 +80,10 @@ OakSpeech: ld a, [wPlayerSex] ; check sex and a ; check sex jr z, .NotGreen0 + ld de, EnbyPicFront + lb bc, BANK(EnbyPicFront), $00 + cp a, 2 + jr z, .NotGreen0 ld de, GreenPicFront lb bc, BANK(GreenPicFront), $00 .NotGreen0 @@ -97,7 +101,9 @@ OakSpeech: 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 + cp a, 2 + jr z, .Nidoreign +; jr nz, .Nidorina .Nidorina ld a, NIDORINA ld [wd0b5], a @@ -117,6 +123,16 @@ OakSpeech: call LoadFlippedFrontSpriteByMonIndex call MovePicLeft ld hl, OakSpeechText2Red + jr .cont +.Nidoreign + ld a, NIDOREIGN + ld [wd0b5], a + ld [wcf91], a + call GetMonHeader + hlcoord 6, 4 + call LoadFlippedFrontSpriteByMonIndex + call MovePicLeft + ld hl, OakSpeechText2Enby .cont call PrintText @@ -124,12 +140,19 @@ OakSpeech: call ClearScreen ld de, RedPicFront lb bc, BANK(RedPicFront), $00 - ld a, [wPlayerSex] ; check sex - and a ; check sex - jr z, .NotGreen1 + ld a, [wPlayerSex] ; load gender + and a ; check gender - and a is equivalent to `cp a, 0` (but faster) + ; if a=0->gender=male, ergo jump to the vanilla part of the code + jr z, .ContinueWithOakIntro1 + cp a, 2 ; check gender: if a=2->gender=enby, jump to the yellow subroutine, otherwise continue below + jp z, .LoadEnbyPicFront1 ld de, GreenPicFront lb bc, BANK(GreenPicFront), $00 -.NotGreen1: + jr .ContinueWithOakIntro1 +.LoadEnbyPicFront1 + ld de, EnbyPicFront + lb bc, BANK(EnbyPicFront), $00 +.ContinueWithOakIntro1: call IntroDisplayPicCenteredOrUpperRight call MovePicLeft ld hl, IntroducePlayerText @@ -152,6 +175,10 @@ OakSpeech: ld a, [wPlayerSex] ; check sex and a ; check sex jr z, .NotGreen2 + ld de, EnbyPicFront + lb bc, BANK(EnbyPicFront), $00 + cp a, 2 + jr z, .NotGreen2 ld de, GreenPicFront lb bc, Bank(GreenPicFront), $00 .NotGreen2: @@ -178,6 +205,10 @@ OakSpeech: ld a, [wPlayerSex] ; check sex and a ; check sex jr z, .NotGreen3 + ld de, TealSprite + lb bc, BANK(TealSprite), $0C + cp a, 2 + jr z, .NotGreen3 ld de,GreenSprite lb bc, BANK(GreenSprite), $0C .NotGreen3: @@ -232,6 +263,11 @@ OakSpeechText2Green: sound_cry_nidorina text_far _OakSpeechText2B text_end +OakSpeechText2Enby: + text_far _OakSpeechText2A + sound_cry_nidoreign + text_far _OakSpeechText2B + text_end IntroducePlayerText: text_far _IntroducePlayerText text_end @@ -305,23 +341,40 @@ IntroDisplayPicCenteredOrUpperRight: 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, 12, 7 - ld bc, $80d - ret - - DisplayBoyGirlChoice:: - ld a, $14 - ld [wTextBoxID], a - call DisplayTextBoxID - jp LoadScreenTilesFromBuffer1 +BoyGirlChoice:: + call SaveScreenTilesToBuffer1 + jr DisplayBoyGirlNoChoice + +DisplayBoyGirlNoChoice:: + ld a, BOY_GIRL_NO + ld [wTextBoxID], a + call DisplayTextBoxID + ld hl, wTopMenuItemY + ld a, 7 + ld [hli], a ; top menu item Y + ld a, 13 + ld [hli], a ; top menu item X + xor a + ld [hli], a ; current menu item ID + inc hl + ld a, $2 + ld [hli], a ; wMaxMenuItem +; ld a, B_BUTTON | A_BUTTON + ld a, A_BUTTON + ld [hli], a ; wMenuWatchedKeys + xor a + ld [hl], a ; wLastMenuItem + call HandleMenuInput +; bit BIT_B_BUTTON, a +; jr nz, .defaultOption ; if B was pressed, assign enby +; A was pressed + call PlaceUnfilledArrowMenuCursor + ld a, [wCurrentMenuItem] + jp LoadScreenTilesFromBuffer1 +;.defaultOption +; ld a, $02 +; ld [wCurrentMenuItem], a +; jp LoadScreenTilesFromBuffer1 BoyGirlText: ; This is new so we had to add a reference to get it to compile text_far _BoyGirlText diff --git a/engine/movie/oak_speech/oak_speech2.asm b/engine/movie/oak_speech/oak_speech2.asm index 445ed567..7b11e226 100644 --- a/engine/movie/oak_speech/oak_speech2.asm +++ b/engine/movie/oak_speech/oak_speech2.asm @@ -1,6 +1,8 @@ ChoosePlayerName: call OakSpeechSlidePicRight ld a, [wPlayerSex] ; load sex + cp a, 2 + jr z, .AreEnby ; Skip to enby names if you are enby instead and a jr nz, .AreGirl ; Skip to girl names if you are a girl instead ld de, DefaultNamesPlayer @@ -24,6 +26,17 @@ ChoosePlayerName: ld de, wPlayerName call OakSpeechSlidePicLeft jr .done ; End of new Girl Names routine +.AreEnby ; Copy of the boy naming routine, just with enby's names + ld de, DefaultNamesEnby + call DisplayIntroNameTextBox + ld a, [wCurrentMenuItem] + and a + jr z, .customName + ld hl, DefaultNamesEnbyList + call GetDefaultName + ld de, wPlayerName + call OakSpeechSlidePicLeft + jr .done ; End of new Enby Names routine .customName ld hl, wPlayerName xor a ; NAME_PLAYER_SCREEN @@ -39,6 +52,10 @@ ChoosePlayerName: ld a, [wPlayerSex] ; sex check and a ; yknow it feels like republicans wanting to do penis checking jr z, .AreBoy3 + ld de, EnbyPicFront + ld b, BANK(EnbyPicFront) + cp a, 2 + jr z, .AreBoy3 ld de, GreenPicFront ld b, BANK(GreenPicFront) .AreBoy3 diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 1767ca0a..6a97078e 100644 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -93,10 +93,17 @@ DisplayTitleScreen: jr nz, .pokemonLogoLastTileRowLoop call Random ldh a, [hRandomAdd] - cp 129 + cp 86 jr c, .male + call Random + ldh a, [hRandomAdd] + cp 129 + jr c, .nb call DrawFPlayerCharacter jr .playerskip +.nb + call DrawNBPlayerCharacter + jr .playerskip .male call DrawPlayerCharacter .playerskip @@ -398,6 +405,43 @@ DrawFPlayerCharacter: dec b jr nz, .loop2 ret + +DrawNBPlayerCharacter: + ld hl, NBPlayerCharacterTitleGraphics + ld de, vSprites + ld bc, NBPlayerCharacterTitleGraphicsEnd - NBPlayerCharacterTitleGraphics + ld a, BANK(NBPlayerCharacterTitleGraphics) + call FarCopyData2 + call ClearSprites + xor a + ld [wNBPlayerCharacterOAMTile], a + ld hl, wShadowOAM + lb de, $60, $5a + ld b, 7 +.loop3 + push de + ld c, 5 +.innerLoop3 + ld a, d + ld [hli], a ; Y + ld a, e + ld [hli], a ; X + add 8 + ld e, a + ld a, [wNBPlayerCharacterOAMTile] + ld [hli], a ; tile + inc a + ld [wNBPlayerCharacterOAMTile], a + inc hl + dec c + jr nz, .innerLoop3 + pop de + ld a, 8 + add d + ld d, a + dec b + jr nz, .loop3 + ret ClearBothBGMaps: ld hl, vBGMap0 diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm index 9f5f7a19..8ab83361 100644 --- a/engine/overworld/player_animations.asm +++ b/engine/overworld/player_animations.asm @@ -389,6 +389,8 @@ FishingAnim: ld a, [wPlayerSex] ; sex check and a ; sex check jr z, .BoySpriteLoad + cp a, 2 + jr z, .EnbySpriteLoad ld de, GreenSprite ld hl, vNPCSprites ld bc, (BANK(GreenSprite) << 8) + $0c @@ -397,17 +399,28 @@ FishingAnim: ld de, RedSprite ld hl, vNPCSprites lb bc, BANK(RedSprite), $c + jr .KeepLoadingSpriteStuff +.EnbySpriteLoad + ld de, TealSprite + ld hl, vNPCSprites + lb bc, BANK(TealSprite), $c .KeepLoadingSpriteStuff 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 + cp a, 2 + jr z, .EnbyTiles 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 hl, RedFishingTiles + jr .ContinueRoutine ; go back to main routine after loading Red's stuff +.EnbyTiles ; alternately, load Teal's stuff + ld a, $4 + ld hl, TealFishingTiles .ContinueRoutine call LoadAnimSpriteGfx ld a, [wSpritePlayerStateData1ImageIndex] @@ -516,6 +529,12 @@ GreenFishingTiles: fishing_gfx GreenFishingTilesBack, 2, $06 fishing_gfx GreenFishingTilesSide, 2, $0a fishing_gfx RedFishingRodTiles, 3, $fd + +TealFishingTiles: + fishing_gfx TealFishingTilesFront, 2, $02 + fishing_gfx TealFishingTilesBack, 2, $06 + fishing_gfx TealFishingTilesSide, 2, $0a + fishing_gfx RedFishingRodTiles, 3, $fd _HandleMidJump:: ld a, [wPlayerJumpingYScreenCoordsIndex] diff --git a/gfx/fishing.asm b/gfx/fishing.asm index cfde973a..ad5bb5f8 100644 --- a/gfx/fishing.asm +++ b/gfx/fishing.asm @@ -5,3 +5,6 @@ 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" +TealFishingTilesFront: INCBIN "gfx/overworld/teal_fish_front.2bpp" +TealFishingTilesBack: INCBIN "gfx/overworld/teal_fish_back.2bpp" +TealFishingTilesSide: INCBIN "gfx/overworld/teal_fish_side.2bpp" diff --git a/gfx/overworld/teal_fish_back.png b/gfx/overworld/teal_fish_back.png new file mode 100644 index 0000000000000000000000000000000000000000..137780c80fc710b7d705e7e1a9f0faa555e433d6 GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^96&6XQ2>tmIipR1RclAn~SSCLx)RL#I( zV_#8_n4FzjqL7rDo|$K>{(kpRtPXT0L zVp4u-iLFv;X=aL5T4I`MQc8-cZc?IgimstyN}_IJim{XQ2>tmIipR1RclAn~SSCLx)RL#I( zV_#8_n4FzjqL7rDo|$K>{(kpRtPXT0L zVp4u-iLFv;X=aL5T4I`MQc8-cZc?IgimstyN}_IJim{dUfn!q_M{0ze TUA~mm21)^*u6{1-oD!MXQ2>tmIipR1RclAn~SSCLx)RL#I( zV_#8_n4FzjqL7rDo|$K>{(kpRtPXT0L zVp4u-iLFv;X=aL5T4I`MQc8-cZc?IgimstyN}_IJim{-xjn_`cm0`?$_C9jt>laP8HkB SrhgO##lNSkpUXO@geCy7Yu0%H literal 0 HcmV?d00001 diff --git a/gfx/pics.asm b/gfx/pics.asm index db5e343c..f5caa74b 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -260,7 +260,8 @@ PidgeottoPicFront:: INCBIN "gfx/pokemon/front/pidgeotto.pic" PidgeottoPicBack:: INCBIN "gfx/pokemon/back/pidgeottob.pic" RedPicBack:: INCBIN "gfx/player/redb.pic" -GreenPicBack:: INCBIN "gfx/player/greenb.pic" +GreenPicBack:: INCBIN "gfx/player/greenb.pic" +TealPicBack:: INCBIN "gfx/player/thirdb.pic" OldManPicBack:: INCBIN "gfx/battle/oldmanb.pic" diff --git a/gfx/player.asm b/gfx/player.asm index f50eb71c..825f7161 100644 --- a/gfx/player.asm +++ b/gfx/player.asm @@ -1,4 +1,5 @@ RedPicFront:: INCBIN "gfx/player/red.pic" GreenPicFront:: INCBIN "gfx/player/green.pic" +EnbyPicFront:: INCBIN "gfx/player/third.pic" ShrinkPic1:: INCBIN "gfx/player/shrink1.pic" ShrinkPic2:: INCBIN "gfx/player/shrink2.pic" diff --git a/gfx/player/third.png b/gfx/player/third.png new file mode 100644 index 0000000000000000000000000000000000000000..4adcad4d188817172bacddf9a6bae8b13fde6400 GIT binary patch literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DinK$vl=HlH+5LwjaOL`j6Nk5zJhu3lnFep0GlMQ#C5H3Nf< zeMLcHa&~HoLQ-maW}dD3``!E16*5z7)x%AF4SWlnQ!_F>s)|yBtNcQetFn_VQ`GJ4 zc)4sUtbiuurj{fsROII56ON0GHI_ zN%^HEwo0X?nJHFjiD{-uDJiD9Nr}cOx`u`+iMoj?#)i5n#>Oe;riK zGN53Bhi+;fFi6XRVW%@?1~&r(bBU*mV@QVc-Iux0&-WTG zOWM3IH0rDIjVNo5P5m0>+YOH`l;5%Y>%H%@gR+7|lF}Z&yI9R%&R>52_n9}@k3WV^ zsT2t2o;R!VwU%qz)yfZj%hzqu($}lrur*C^qrLr9ompvNqOR{H{Y0kWvcEwZKZpx`^>7(3h#DRIn7=+ z;mt0s_pYvTELtwo+)062=U%<5bXj^}M#mYK+U);J*&C%+%{%3?s{EpshNrMYcOFY$ zq}BzmbhEtHpvI0SgE{?{K}9UJvZXJ%Z1%2uVr4f!w>Tu=m1DX8XYr!DvL^L*OG6aI zZ|Y>I<(c{3{d@fLpD96&(>g9bmbCKgpC6>PVe7W)_p=+{?A3k@q7Tyt|rhvAQPAxpYa8*guW z`^aGJF^Sz8e=9jGZ*N{XYhIY4>rIRD`|*tjt1Ci}tv^!`{N7o%<6>26h~L>;BHXTBY0jxbHBm^#HJuy4U;)c`Ti+((vk8MUWy zUYS3W(EG?&(qb!lvI6;>1s;*b3=DinK$vl=HlH+5LwjaOL`j6Nk5zJhu3lnFep0GlMQ#C5H3Nf< zeMLcHa&~HoLQ-maW}dD3``!E16*5z7)x%AF4SWlnQ!_F>s)|yBtNcQetFn_VQ`GJ4 zc)4sUtbiuurj{fsROII56ON0GHI_ zN%^HEwo0X?nJHFjiD{-uDJiD9Nr}cOx`u`+iMoj?#)i5n#>Oe;riK zGN53Bhi+;fFi6XRVW%@?1~)KDIy_w*Ln7SYhC5C=qQH^!y#KB8$BAcBPbdW{pSyc5=rZk;5VqYgPJR{4GAxa4_Pw>+=T5ZLBt5mq{-@qMR(l zq50v9)Kke{i{C8JJ{08j{Eo&YpO)@l{~Es^a~D@W=aRRn`Eqz&qx!M(@a$!*k%)Wd3 zH{V?5#m91^~vnRKmc3<+@ z>&+68iNWeej(vO6Wl(&{^~X+?K(CuwUj5q_n%{|P?kG8bv0ScSwxi=%Z|_p(@~-@n z*x9|l=2=1d)sk~N9&7jX9FmliG?$qwQ|>5p{!7@yI^F+yt)FJH_$-=X_^>#~Uge|T o&aPV<{uuw_t*I4H`S|{Tbc6dj^|`UR&p?^M)78&qol`;+0MY4XFaQ7m literal 0 HcmV?d00001 diff --git a/gfx/sprites.asm b/gfx/sprites.asm index cc7ea54b..d245534e 100644 --- a/gfx/sprites.asm +++ b/gfx/sprites.asm @@ -37,6 +37,8 @@ RedBikeSprite:: INCBIN "gfx/sprites/red_bike.2bpp" RedSprite:: INCBIN "gfx/sprites/red.2bpp" GreenBikeSprite:: INCBIN "gfx/sprites/green_bike.2bpp" GreenSprite:: INCBIN "gfx/sprites/green.2bpp" +TealBikeSprite:: INCBIN "gfx/sprites/teal_bike.2bpp" +TealSprite:: INCBIN "gfx/sprites/teal.2bpp" BlueSprite:: INCBIN "gfx/sprites/blue.2bpp" OakSprite:: INCBIN "gfx/sprites/oak.2bpp" YoungsterSprite:: INCBIN "gfx/sprites/youngster.2bpp" @@ -66,12 +68,6 @@ ErikaSprite:: INCBIN "gfx/sprites/erika.2bpp" MiddleAgedWomanSprite:: INCBIN "gfx/sprites/middle_aged_woman.2bpp" BrunetteGirlSprite:: INCBIN "gfx/sprites/brunette_girl.2bpp" LanceSprite:: INCBIN "gfx/sprites/lance.2bpp" -MomSprite:: INCBIN "gfx/sprites/mom.2bpp" -BaldingGuySprite:: INCBIN "gfx/sprites/balding_guy.2bpp" -LittleBoySprite:: INCBIN "gfx/sprites/little_boy.2bpp" -GameboyKidSprite:: INCBIN "gfx/sprites/gameboy_kid.2bpp" -FairySprite:: INCBIN "gfx/sprites/fairy.2bpp" -AgathaSprite:: INCBIN "gfx/sprites/agatha.2bpp" SeelSprite:: INCBIN "gfx/sprites/seel.2bpp" ; what a SILLY thing to do. SECTION "NPC Sprites 3", ROMX @@ -98,3 +94,12 @@ MagikarpSprite:: INCBIN "gfx/sprites/magikarp.2bpp" PoliwagSprite:: INCBIN "gfx/sprites/poliwag.2bpp" LoreleiSprite:: INCBIN "gfx/sprites/lorelei.2bpp" BrunoSprite:: INCBIN "gfx/sprites/bruno.2bpp" + +SECTION "NPC Sprites 4", ROMX + +MomSprite:: INCBIN "gfx/sprites/mom.2bpp" +BaldingGuySprite:: INCBIN "gfx/sprites/balding_guy.2bpp" +LittleBoySprite:: INCBIN "gfx/sprites/little_boy.2bpp" +GameboyKidSprite:: INCBIN "gfx/sprites/gameboy_kid.2bpp" +FairySprite:: INCBIN "gfx/sprites/fairy.2bpp" +AgathaSprite:: INCBIN "gfx/sprites/agatha.2bpp" diff --git a/gfx/sprites/teal.png b/gfx/sprites/teal.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd53f9eea5e3d7b6134d76ff26c1a84e3fe13e1 GIT binary patch literal 14992 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 Z=N_7Lb9dvsht=PC7cDDs9a>t~{vXBXpw<8Y literal 0 HcmV?d00001 diff --git a/gfx/title/nbplayer.png b/gfx/title/nbplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..2d71ee89206acbfa9188ed68d8614a2cb7d37538 GIT binary patch literal 1713 zcmZ`(2~ZPf6#fCh3n(540V*+yASBsr0t(?$NjTI9#-IcRO|lyZkr0xFL{J2^8Wo9J zj(CkISQQndiUMM7%c0ibS!u1s1EeA%R2jvJV*e7(3DasZ===y3A5k z3k7D^4{7#5!;Rp^5SWO-*%B2F6<{)$-ZX{}4fPSAD4WTEw-wmIV8Z8om}@%WP+;{Z?aJ@>hUR9OAclzHEnrJhlIbEW zMU2z6a5>Wn2-Ye^5;;zg#dv~D5$N7~{-Qfsh6TDW_2Dsi$`CwJ7M`KP7iTOKNHXLS zKg>Ni$YxA{mJK^3ctR%qJYS(6q5%?um?8*D zXP8ztVRocShQlpPBZJU@kMV!`0ua+8|5z;OlLx*lM8nLOXc}f0S3pWNkUMI=VJrX^ z84;X0g2a$!!?NCefV z^ihrej0rtKvGV%XB9>#-gj*%468j@fEE~mj<+MLf79YhU^a6|XXEP1m)WPtF)WMa@ z2dePP+xIw1rtAw?W7B`Ve8o;WD>n4^)>ye-@?|~eNoKFUUB|R7WS1vUPvwiNdDz4> zW?7DZ-&2wx=JGrjT?6hr{%GXY&}gtNZuEoH$8E9CiqO1}sRuiIFFc^P$Z6WdjzlYw zZbKaRT+4|n>4koza_e;7s3YD*>vh5!gHMs$qKamv{zuC-AzaJvJ)Adr1m!j0Ne{DU ze^=QPWw@-%TPiwT*fDOysKmVu+h23h{HM3u?M1t0>+b8uzOtS+&OQHrm@CnEY4F;) zSND6Z&&)S=g(gi*d|zKF%__{ay5y*LC>E}r8*DunNOK3kfo<0+wAIyBQi*k+yj4(C zd%l2QIG1urXna}u@XolNC5M8nDjm>g4_+Lrx?ia&*uU8>>w07NF}w7>yxYQeoK0`0 z*AdOj2N3wR#yx+MbaF+cbKvYys&sk9UN?%mh*W*5#c3<6EH!va-|Pj|t!)e9cB0?B zC`0S!*F_ayd9t09ge}dEUf$IFh@Vh&&yQXsJmvBdnRRl^ZsEG(^P3l+QvWdNc-3p) zie;#R)OVX?%y#;Tb)37dAjZG{H%}{8=bpH7n@|DYTgZHoaNIF~%PQci_}RI>12#EF z_g1ysIJyFPv+t4nmY0$oyW%#%2xK=qy-}VMZnwQkC)|Z;_fOkHo^F1pqq{9y>UEJ4 zwbbt7%(^x4=ajP3v5u!7-s*f`xJ^k+t|%kLHx}1MUa3Xuy>jZ3jOkPTcb?wJj~|Ww zykl|+;@LvVv-~!*Qp^dxc}WuU*pp*ur?yyQ^>t^s%cxm9goz$u<_YK#bFy+tgC?TM zrN&p~R^ngyfJ}>u8%vqfo-x{j-Bf{0B=OBP<*f(j-zy)1&d70DMxAF9MzWQD(3E~% z8t;0wWVd&${;%|3MHX2%O7Fgl&2=~sy*T|q4(r*A{y2*_CDl$hD&B03um9zdw()Iu lV|Pf++3=NrIIWGw2SKso8vUJpmy7B57r|Y~DWAJ?{oj@>k@o-q literal 0 HcmV?d00001 diff --git a/gfx/trainer_card.asm b/gfx/trainer_card.asm index dc573e2d..9dec2bc0 100644 --- a/gfx/trainer_card.asm +++ b/gfx/trainer_card.asm @@ -9,3 +9,6 @@ BadgeNumbersTileGraphics: INCBIN "gfx/trainer_card/badge_numbers.2bpp" FPlayerCharacterTitleGraphics: INCBIN "gfx/title/fplayer.2bpp" FPlayerCharacterTitleGraphicsEnd: + +NBPlayerCharacterTitleGraphics: INCBIN "gfx/title/nbplayer.2bpp" +NBPlayerCharacterTitleGraphicsEnd: diff --git a/home/overworld.asm b/home/overworld.asm index 2216869b..06f40ec8 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -2038,6 +2038,9 @@ LoadWalkingPlayerSpriteGraphics:: ld a, [wPlayerSex] and a jr z, .AreGuy1 + ld de, TealSprite + cp a, 2 + jr z, .AreGuy1 ld de, GreenSprite .AreGuy1 ld hl,vNPCSprites @@ -2053,6 +2056,9 @@ LoadBikePlayerSpriteGraphics:: ld a, [wPlayerSex] and a jr z, .AreGuy2 + ld de, TealBikeSprite + cp a, 2 + jr z, .AreGuy2 ld de, GreenBikeSprite .AreGuy2 ld hl, vNPCSprites diff --git a/home/text.asm b/home/text.asm index bd73f49e..daf81ed6 100644 --- a/home/text.asm +++ b/home/text.asm @@ -522,6 +522,8 @@ TextCommand_SOUND:: jr z, .pokemonCry cp TX_SOUND_CRY_NIDORINA jr z, .pokemonCry + cp TX_SOUND_CRY_NIDOREIGN + jr z, .pokemonCry ld a, [hl] call PlaySound call WaitForSoundToFinish @@ -542,7 +544,7 @@ TextCommandSounds:: db TX_SOUND_GET_ITEM_1, SFX_GET_ITEM_1 ; actually plays SFX_LEVEL_UP when the battle music engine is loaded db TX_SOUND_CAUGHT_MON, SFX_CAUGHT_MON db TX_SOUND_POKEDEX_RATING, SFX_POKEDEX_RATING ; unused - db TX_SOUND_GET_ITEM_1_DUPLICATE, SFX_GET_ITEM_1 ; unused + db TX_SOUND_CRY_NIDOREIGN, NIDOREIGN ; Was SFX_GET_ITEM_1 duplicate db TX_SOUND_GET_ITEM_2, SFX_GET_ITEM_2 db TX_SOUND_GET_KEY_ITEM, SFX_GET_KEY_ITEM db TX_SOUND_DEX_PAGE_ADDED, SFX_DEX_PAGE_ADDED diff --git a/layout.link b/layout.link index 184bf5d5..e2865163 100644 --- a/layout.link +++ b/layout.link @@ -44,7 +44,7 @@ ROMX $2 ROMX $3 "bank3" ROMX $4 - "NPC Sprites 1" +; "NPC Sprites 1" "Font Graphics" "Battle Engine 1" ROMX $5 diff --git a/macros/scripts/text.asm b/macros/scripts/text.asm index bb9458ae..f999231d 100644 --- a/macros/scripts/text.asm +++ b/macros/scripts/text.asm @@ -102,9 +102,9 @@ MACRO sound_pokedex_rating db TX_SOUND_POKEDEX_RATING ENDM - const TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f -MACRO sound_get_item_1_duplicate - db TX_SOUND_GET_ITEM_1_DUPLICATE + const TX_SOUND_CRY_NIDOREIGN ; $0f +MACRO sound_cry_nidoreign + db TX_SOUND_CRY_NIDOREIGN ENDM const TX_SOUND_GET_ITEM_2 ; $10 diff --git a/ram/wram.asm b/ram/wram.asm index 321eb92d..449eb1ef 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -868,6 +868,7 @@ wWhichBadge:: wTitleMonSpecies:: wPlayerCharacterOAMTile:: wFPlayerCharacterOAMTile:: +wNBPlayerCharacterOAMTile:: ; the number of small stars OAM entries to move down wMoveDownSmallStarsOAMCount:: wChargeMoveNum:: @@ -1993,6 +1994,7 @@ wMissableObjectList:: ds 16 * 2 + 1 wPlayerSex:: ; $00 = male ; $01 = female + ; $02 = enby ds 1 wGameProgressFlags::