Merge branch 'master' into mistress

This commit is contained in:
Thorn Avery 2025-09-13 16:25:28 +10:00
commit 72f77260be
51 changed files with 296 additions and 98 deletions

View file

@ -4,6 +4,8 @@ This is a ROM Hack of Pokémon Red and Blue, aiming to expand the Kanto region w
If playing on an emulator, BGB is strongly recommended for its accuracy and features. Inaccurate emulators, such as VBA and TGB Dual, can experience unintended glitches. This hack is fully playable on official hardware as well.
# For all Pokemon info go [here](https://docs.google.com/spreadsheets/d/1cP8tvoj19__bx08hSG7dOtefVcdaNwZXohVu1RKzjPI/edit?usp=sharing)
New Pokemon
====
The Kanto Expansion Pak's ethos is to add every "Kanto-related" Pokemon to RBY without fundamentally changing the grander metagame. What's defined as "Kanto-related" is a Pokemon that evolves from an existing Kanto Pokemon, made an appearance in a Kanto-based game (LGPE), is a regional variant, or was a Kanto-related Pokemon cut during the development of an official game.
@ -173,7 +175,7 @@ Improved Areas
QoL Enhancements
====
- A feminine character option is now available, featuring the sprite from Pokemon Anniversary Red, which is based on Green's manga appearance.
- Feminine and Androgynous character options are now available, featuring Green's sprite from Pokemon Anniversary Red, which is based on her manga appearance, as well as a custom Nonbinary character named Pink.
- To accomodate this, Celadon Gym's trainers use their more neutral text from Crystal.
- The protagonist is also referred to in a gender neutral manner. This changes like, 2-3 lines in the whole game.
- All 151 original Pokemon, plus an additional 100, can be obtained without the use of trading or glitches, including Mew!
@ -198,6 +200,7 @@ QoL Enhancements
- Traded Pokemon ("Outsiders") can now be nicknamed at the Name Rater's House.
- HP bar has been doubled in speed, having a 1 frame delay per pixel rather than 2.
- The blinking animation when hit by moves like Tackle now repeats 4 instead of 6 times, speeding up battles by a bit while not sacrificing impact.
- The Safari Zone Rest Houses now have PCs in them, so if the box is full, you can still change boxes to continue catching Pokemon.
- The Rock in the Safari Zone now only raises the flee chance by 1.5x, rather than 2x, opening up new strategies.
- PP symbol is displayed in the battle menu. PP displayed before, it just looks nicer now. Done by changing a straggler Japanese character.
- Lorelei, Bruno, and Agatha now play the Gym Leader Battle theme.
@ -421,7 +424,7 @@ RacieBeep sprites: Balumba, Blastyke, Blottle, Buu, Cactormus, Cheep, Coinpur, C
Orchid: Luxwan (back), Buu (back)
Zeta_Null: Porygon (front)
Zeta_Null: Porygon (front), All sprites for Pink (Nonbinary player option)
Official sprites: Crobat (front, edited by Marthas Against Humanity), Disturban, Espeon (front, edited by Marthas Against Humanity), Slowking (front), Steelix (front), Tricules, Umbreon (front, edited by Marthas Against Humanity)

View file

@ -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

View file

@ -58,6 +58,7 @@ HiddenObjectMaps:
db VICTORY_ROAD_2F
db BILLS_HOUSE
db VIRIDIAN_CITY
db SAFARI_ZONE_CENTER_REST_HOUSE
db SAFARI_ZONE_WEST_REST_HOUSE
db SAFARI_ZONE_EAST_REST_HOUSE
db SAFARI_ZONE_NORTH_REST_HOUSE
@ -153,6 +154,7 @@ HiddenObjectPointers:
dw VictoryRoad2HiddenObjects
dw BillsHouseHiddenObjects
dw ViridianCityHiddenObjects
dw SafariZoneRestHouse1HiddenObjects
dw SafariZoneRestHouse2HiddenObjects
dw SafariZoneRestHouse3HiddenObjects
dw SafariZoneRestHouse4HiddenObjects
@ -535,19 +537,13 @@ ViridianCityHiddenObjects:
hidden_object 14, 4, POTION, HiddenItems
db -1 ; end
; Moved these to the same slot to save bytes.
SafariZoneRestHouse1HiddenObjects:
SafariZoneRestHouse2HiddenObjects:
hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
db -1 ; end
SafariZoneRestHouse3HiddenObjects:
hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
db -1 ; end
SafariZoneRestHouse4HiddenObjects:
hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText
hidden_object 13, 3, SPRITE_FACING_UP, OpenPokemonCenterPC
hidden_object 0, 4, SPRITE_FACING_LEFT, PrintBenchGuyText ; still unused
hidden_object 4, 1, SPRITE_FACING_UP, OpenPokemonCenterPC
db -1 ; end
Route15GateUpstairsHiddenObjects:

View file

@ -1,2 +1,2 @@
map_header SafariZoneCenterRestHouse, SAFARI_ZONE_CENTER_REST_HOUSE, GATE, 0
map_header SafariZoneCenterRestHouse, SAFARI_ZONE_CENTER_REST_HOUSE, HOUSE, 0
end_map_header

View file

@ -1,2 +1,2 @@
map_header SafariZoneEastRestHouse, SAFARI_ZONE_EAST_REST_HOUSE, GATE, 0
map_header SafariZoneEastRestHouse, SAFARI_ZONE_EAST_REST_HOUSE, HOUSE, 0
end_map_header

View file

@ -1,2 +1,2 @@
map_header SafariZoneNorthRestHouse, SAFARI_ZONE_NORTH_REST_HOUSE, GATE, 0
map_header SafariZoneNorthRestHouse, SAFARI_ZONE_NORTH_REST_HOUSE, HOUSE, 0
end_map_header

View file

@ -1,2 +1,2 @@
map_header SafariZoneWestRestHouse, SAFARI_ZONE_WEST_REST_HOUSE, GATE, 0
map_header SafariZoneWestRestHouse, SAFARI_ZONE_WEST_REST_HOUSE, HOUSE, 0
end_map_header

View file

@ -8,7 +8,7 @@ SafariZoneCenterRestHouse_Object:
def_bg_events
def_object_events
object_event 3, 2, SPRITE_GIRL, STAY, DOWN, 1 ; person
object_event 1, 4, SPRITE_SCIENTIST, WALK, UP_DOWN, 2 ; person
object_event 3, 3, SPRITE_GIRL, STAY, LEFT, 1 ; person
object_event 5, 6, SPRITE_SCIENTIST, WALK, UP_DOWN, 2 ; person
def_warps_to SAFARI_ZONE_CENTER_REST_HOUSE

View file

@ -8,9 +8,9 @@ SafariZoneEastRestHouse_Object:
def_bg_events
def_object_events
object_event 2, 3, SPRITE_SCIENTIST, WALK, UP_DOWN, 1 ; person
object_event 0, 2, SPRITE_ROCKER, STAY, NONE, 2 ; person
object_event 5, 2, SPRITE_SILPH_WORKER, STAY, NONE, 3 ; person
object_event 6, 2, SPRITE_SILPH_WORKER, STAY, NONE, 4 ; person
object_event 5, 5, SPRITE_SCIENTIST, WALK, UP_DOWN, 1 ; person
object_event 0, 4, SPRITE_ROCKER, STAY, RIGHT, 2 ; person
object_event 3, 3, SPRITE_SILPH_WORKER, STAY, LEFT, 3 ; person
object_event 3, 4, SPRITE_SILPH_WORKER, STAY, LEFT, 4 ; person
def_warps_to SAFARI_ZONE_EAST_REST_HOUSE

View file

@ -9,7 +9,7 @@ SafariZoneNorthRestHouse_Object:
def_object_events
object_event 6, 3, SPRITE_SCIENTIST, WALK, LEFT_RIGHT, 1 ; person
object_event 3, 4, SPRITE_SAFARI_ZONE_WORKER, STAY, NONE, 2 ; person
object_event 3, 4, SPRITE_SAFARI_ZONE_WORKER, LEFT, NONE, 2 ; person
object_event 1, 5, SPRITE_GENTLEMAN, WALK, UP_DOWN, 3 ; person
def_warps_to SAFARI_ZONE_NORTH_REST_HOUSE

View file

@ -8,8 +8,8 @@ SafariZoneWestRestHouse_Object:
def_bg_events
def_object_events
object_event 4, 4, SPRITE_SCIENTIST, WALK, ANY_DIR, 1 ; person
object_event 0, 2, SPRITE_COOLTRAINER_M, STAY, RIGHT, 2 ; person
object_event 6, 2, SPRITE_ERIKA, STAY, DOWN, 3 ; person
object_event 5, 3, SPRITE_SCIENTIST, WALK, ANY_DIR, 1 ; person
object_event 0, 3, SPRITE_COOLTRAINER_M, STAY, RIGHT, 2 ; person
object_event 3, 4, SPRITE_ERIKA, STAY, LEFT, 3 ; person
def_warps_to SAFARI_ZONE_WEST_REST_HOUSE

View file

@ -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"

View file

@ -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@"

View file

@ -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

View file

@ -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 "データをみる"

View file

@ -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

View file

@ -42,10 +42,16 @@ DisplayDiploma::
ld a, [wPlayerSex]
and a ; are you playing as Red
jr z, .red ; if yes, Red appears on the diploma
ld a, [wPlayerSex]
cp a, 2
jr z, .pink ; if yes, Pink appears on the diploma
jr nz, .green ; if no, Green replaces him
.green
farcall DrawFPlayerCharacter
jr .skip
.pink
farcall DrawNBPlayerCharacter
jr .skip
.red
farcall DrawPlayerCharacter
.skip

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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]

Binary file not shown.

View file

@ -7,7 +7,7 @@
()O*+:;<<<<<<<<<<<<<<HI77XY77,,,,,,,,,,,,77779999999999FG99VW#
#,,,,,,,,,,,,,,,,RRRRRRRRRRRRRRRRSS88SSSSSS 88@A@APQPQ@A@APQPQ%&
#,,,,,,,,,,,,,,,,RRRRRRRRRRRRRRRRSS^^SSSSSS 88@A@APQPQ@A@APQPQ%&
"""
@ -19,7 +19,7 @@ N"/?"""""

()"""
O*+*+:;:;*+*+:;:;*+:;*+*+:;:;*+:;*+*+:;:;*+*+:;:;*+:;*+*+:;:;*+:;*+:;*+:;*+:;*+:;9999999999996777##UU####UU######9###@A@APQPQ33332223333TTT3333LSSSZZ\SSSMZZ]!########!## ######## '''''6776777$$$$774$7774##!########!########''''''''$$$$$$$$7'57$533,,,,,,,,,,,,74<<%&
O*+*+:;:;*+*+:;:;*+:;*+*+:;:;*+:;*+*+:;:;*+*+:;:;*+:;*+*+:;:;*+:;*+:;*+:;*+:;*+:;9999999999996777##UU####UU######9###@A@APQPQ33332223333TTT3333LSSSZZ\SSSM__]!########!## ######## '''''6776777$$$$774$7774##!########!########''''''''$$$$$$$$7'57$533,,,,,,,,,,,,74<<%&
"N9999999999999999@A-.PQ=>@A,,PQ,,@A@APQPQ,,-.,,=>-.,,=>,,@A@APQPQ,,-.,,=>@A,,PQ,,@A@APQPQ,,@A,,PQ
@ -50,7 +50,7 @@ KKKK
KKKBCKJJO
KKKDEKJJO,,,,,,,,,,,,88%&""88""()99999999UUUU11110000000000FG00VW,0,00,0,,0,00,0,0909909009099090
KKKDEKJJO,,,,,,,,,,,,^^%&""88""()99999999UUUU11110000000000FG00VW,0,00,0,,0,00,0,0909909009099090
KKKK N

View file

@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

View file

@ -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"

View file

@ -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"

BIN
gfx/player/third.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
gfx/player/thirdb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

View file

@ -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"

BIN
gfx/sprites/teal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
gfx/sprites/teal_bike.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
gfx/title/nbplayer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -44,7 +44,7 @@ ROMX $2
ROMX $3
"bank3"
ROMX $4
"NPC Sprites 1"
; "NPC Sprites 1"
"Font Graphics"
"Battle Engine 1"
ROMX $5

View file

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1 +1 @@
 
 

Binary file not shown.

View file

@ -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::

View file

@ -84,11 +84,11 @@ _SafariZoneEntranceText_753eb::
cont "BALLs, it's game"
cont "over for you!"
para "Before you go,"
line "open an unused"
cont "#MON BOX so"
cont "there's room for"
cont "new #MON!"
para "It's ok if the"
line "#MON BOX is"
cont "full: Go to a"
cont "REST HOUSE and"
cont "switch!"
done
_SafariZoneEntranceText_753f0::