diff --git a/Makefile b/Makefile index 41c1931..6384a59 100644 --- a/Makefile +++ b/Makefile @@ -219,13 +219,17 @@ gfx/player/chris.2bpp: rgbgfx += -Z gfx/player/chris_back.2bpp: rgbgfx += -Z gfx/player/kris.2bpp: rgbgfx += -Z gfx/player/kris_back.2bpp: rgbgfx += -Z +gfx/player/enby.2bpp: rgbgfx += -Z +gfx/player/enby_back.2bpp: rgbgfx += -Z gfx/trainer_card/chris_card.2bpp: rgbgfx += -Z gfx/trainer_card/kris_card.2bpp: rgbgfx += -Z +gfx/trainer_card/enby_card.2bpp: rgbgfx += -Z gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace gfx/overworld/chris_fish.2bpp: tools/gfx += --trim-whitespace gfx/overworld/kris_fish.2bpp: tools/gfx += --trim-whitespace +gfx/overworld/enby_fish.2bpp: tools/gfx += --trim-whitespace gfx/sprites/big_onix.2bpp: tools/gfx += --remove-whitespace --remove-xflip diff --git a/constants/engine_flags.asm b/constants/engine_flags.asm index bc029d5..862fd0d 100644 --- a/constants/engine_flags.asm +++ b/constants/engine_flags.asm @@ -117,8 +117,6 @@ const ENGINE_GOLDENROD_DEPT_STORE_SALE_IS_ON ; wGameTimerPaused const ENGINE_62 -; wPlayerGender - const ENGINE_PLAYER_IS_FEMALE ; wCelebiEvent const ENGINE_FOREST_IS_RESTLESS ; wDailyRematchFlags diff --git a/constants/event_flags.asm b/constants/event_flags.asm index 1a17bad..039f521 100644 --- a/constants/event_flags.asm +++ b/constants/event_flags.asm @@ -1229,7 +1229,7 @@ const EVENT_COPYCAT_2 const EVENT_GOLDENROD_SALE_OFF const EVENT_GOLDENROD_SALE_ON - const_skip ; unused in Crystal + const EVENT_COPYCAT_3 const EVENT_ILEX_FOREST_APPRENTICE const EVENT_ILEX_FOREST_CHARCOAL_MASTER const EVENT_CHARCOAL_KILN_FARFETCH_D diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index b909d57..c4aa207 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -5,6 +5,7 @@ DEF TRUE EQU 1 ; genders DEF MALE EQU 0 DEF FEMALE EQU 1 +DEF ENBY EQU 2 ; FlagAction arguments (see home/flag.asm) const_def diff --git a/constants/script_constants.asm b/constants/script_constants.asm index 634cae2..35a776c 100644 --- a/constants/script_constants.asm +++ b/constants/script_constants.asm @@ -73,6 +73,7 @@ DEF STRING_BUFFER_LENGTH EQU 19 const VAR_BUENASPASSWORD ; 19 const VAR_KENJI_BREAK ; 1a const VAR_DEXUNCAUGHT ; 1b + const VAR_PLAYERGENDER ; 1c DEF NUM_VARS EQU const_value ; variable action types diff --git a/constants/sprite_anim_constants.asm b/constants/sprite_anim_constants.asm index bc8d3b1..dafe493 100644 --- a/constants/sprite_anim_constants.asm +++ b/constants/sprite_anim_constants.asm @@ -80,6 +80,8 @@ DEF NUM_SPRITEANIMDICT_ENTRIES EQU 10 const SPRITE_ANIM_INDEX_INTRO_UNOWN_F ; 2a const SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY ; 2b const SPRITE_ANIM_INDEX_CELEBI ; 2c + const SPRITE_ANIM_INDEX_PURPLE_WALK ; 2d + const SPRITE_ANIM_INDEX_MAGNET_TRAIN_PURPLE ; 2e DEF NUM_SPRITE_ANIM_INDEXES EQU const_value ; DoAnimFrame.Jumptable indexes (see engine/gfx/sprite_anims.asm) @@ -189,6 +191,8 @@ DEF NUM_SPRITE_ANIM_SEQS EQU const_value const SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F ; 3f const SPRITE_ANIM_FRAMESET_CELEBI_LEFT ; 40 const SPRITE_ANIM_FRAMESET_CELEBI_RIGHT ; 41 + const SPRITE_ANIM_FRAMESET_PURPLE_WALK ; 42 + const SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_PURPLE ; 43 DEF NUM_SPRITE_ANIM_FRAMESETS EQU const_value ; SpriteAnimOAMData indexes (see data/sprite_anims/oam.asm) @@ -333,4 +337,8 @@ DEF NUM_SPRITE_ANIM_FRAMESETS EQU const_value const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9 ; 89 const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10 ; 8a const SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11 ; 8b + const SPRITE_ANIM_OAMSET_PURPLE_WALK_1 ; 8c + const SPRITE_ANIM_OAMSET_PURPLE_WALK_2 ; 8d + const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_1 ; 8e + const SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_2 ; 8f DEF NUM_SPRITE_ANIM_OAMSETS EQU const_value diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm index 1181285..e301f23 100644 --- a/constants/sprite_constants.asm +++ b/constants/sprite_constants.asm @@ -104,6 +104,8 @@ const SPRITE_ENTEI ; 64 const SPRITE_RAIKOU ; 65 const SPRITE_STANDING_YOUNGSTER ; 66 + const SPRITE_ENBY ; 67 + const SPRITE_ENBY_BIKE ; 68 DEF NUM_OVERWORLD_SPRITES EQU const_value - 1 ; SpriteMons indexes (see data/sprites/sprite_mons.asm) diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index a56ab82..edbabef 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -703,4 +703,5 @@ DEF KRIS EQU __trainer_class__ trainerclass MYSTICALMAN ; 43 const EUSINE +DEF TOPAZ EQU __trainer_class__ DEF NUM_TRAINER_CLASSES EQU __trainer_class__ - 1 diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 9a80a8c..86cf4c3 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -145,9 +145,6 @@ DEF PLAYERSPRITESETUP_CUSTOM_FACING_F EQU 5 DEF PLAYERSPRITESETUP_SKIP_RELOAD_GFX_F EQU 6 DEF PLAYERSPRITESETUP_RESET_ACTION_F EQU 7 -; wPlayerGender:: -DEF PLAYERGENDER_FEMALE_F EQU 0 - ; wMapStatus:: const_def const MAPSTATUS_START ; 0 diff --git a/data/events/engine_flags.asm b/data/events/engine_flags.asm index e579a82..851f1b0 100644 --- a/data/events/engine_flags.asm +++ b/data/events/engine_flags.asm @@ -128,8 +128,6 @@ EngineFlags: engine_flag wGameTimerPaused, GAME_TIMER_MOBILE_F - engine_flag wPlayerGender, PLAYERGENDER_FEMALE_F - engine_flag wCelebiEvent, CELEBIEVENT_FOREST_IS_RESTLESS_F ; rematches diff --git a/data/player_names.asm b/data/player_names.asm index 0faadf1..39bff5d 100644 --- a/data/player_names.asm +++ b/data/player_names.asm @@ -10,10 +10,10 @@ ChrisNameMenuHeader: db 5 ; items db "NEW NAME@" MalePlayerNameArray: + db "ETHAN@" + db "GOLD@" db "CHRIS@" - db "MAT@" - db "ALLAN@" - db "JON@" + db "JIMMY@" db 2 ; title indent db " NAME @" ; title @@ -30,8 +30,28 @@ KrisNameMenuHeader: db "NEW NAME@" FemalePlayerNameArray: db "KRIS@" + db "MARINA@" db "AMANDA@" - db "JUANA@" db "JODI@" db 2 ; title indent db " NAME @" ; title + +EnbyNameMenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 0, 0, 10, TEXTBOX_Y - 1 + dw .OtherNames + db 1 ; ???? + db 0 ; default option + +.OtherNames: + db STATICMENU_CURSOR | STATICMENU_PLACE_TITLE | STATICMENU_DISABLE_B ; flags + db 5 ; items + db "NEW NAME@" +EnbyPlayerNameArray: + db "TOPAZ@" + db "SAM@" + db "CRYS@" + db "RAY@" + db 2 ; displacement + db " NAME @" ; title + \ No newline at end of file diff --git a/data/sprite_anims/framesets.asm b/data/sprite_anims/framesets.asm index 115d82d..250288b 100644 --- a/data/sprite_anims/framesets.asm +++ b/data/sprite_anims/framesets.asm @@ -67,6 +67,8 @@ SpriteAnimFrameData: dw .Frameset_IntroUnownF dw .Frameset_CelebiLeft dw .Frameset_CelebiRight + dw .Frameset_PurpleWalk + dw .Frameset_MagnetTrainPurple assert_table_length NUM_SPRITE_ANIM_FRAMESETS .Frameset_00: @@ -497,3 +499,17 @@ SpriteAnimFrameData: oamframe SPRITE_ANIM_OAMSET_CELEBI_1, 8, OAM_X_FLIP oamframe SPRITE_ANIM_OAMSET_CELEBI_2, 8, OAM_X_FLIP oamend + +.Frameset_PurpleWalk: + oamframe SPRITE_ANIM_OAMSET_PURPLE_WALK_1, 8 + oamframe SPRITE_ANIM_OAMSET_PURPLE_WALK_2, 8 + oamframe SPRITE_ANIM_OAMSET_PURPLE_WALK_1, 8 + oamframe SPRITE_ANIM_OAMSET_PURPLE_WALK_2, 8, OAM_X_FLIP + oamrestart + +.Frameset_MagnetTrainPurple: + oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_1, 8 + oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_2, 8 + oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_1, 8 + oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_2, 8, OAM_X_FLIP + oamrestart diff --git a/data/sprite_anims/oam.asm b/data/sprite_anims/oam.asm index e7099b0..1600b71 100644 --- a/data/sprite_anims/oam.asm +++ b/data/sprite_anims/oam.asm @@ -147,6 +147,10 @@ SpriteAnimOAMData: spriteanimoam $08, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_9 spriteanimoam $04, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_10 spriteanimoam $00, .OAMData_GameFreakLogo4_11 ; SPRITE_ANIM_OAMSET_GAMEFREAK_LOGO_11 + spriteanimoam $00, .OAMData_PurpleWalk ; SPRITE_ANIM_OAMSET_PURPLE_WALK_1 + spriteanimoam $04, .OAMData_PurpleWalk ; SPRITE_ANIM_OAMSET_PURPLE_WALK_2 + spriteanimoam $00, .OAMData_MagnetTrainPurple ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_1 + spriteanimoam $04, .OAMData_MagnetTrainPurple ; SPRITE_ANIM_OAMSET_MAGNET_TRAIN_PURPLE_2 assert_table_length NUM_SPRITE_ANIM_OAMSETS .OAMData_1x1_Palette0: @@ -1133,3 +1137,17 @@ SpriteAnimOAMData: dbsprite -1, 0, 4, 0, $51, 1 dbsprite 0, 0, 4, 0, $52, 1 dbsprite 1, 0, 4, 0, $53, 1 + +.OAMData_PurpleWalk: + db 4 + dbsprite -1, 0, -1, 0, $00, PAL_OW_PURPLE + dbsprite -1, 0, 0, 0, $01, PAL_OW_PURPLE + dbsprite 0, 0, -1, 0, $02, PAL_OW_PURPLE + dbsprite 0, 0, 0, 0, $03, PAL_OW_PURPLE + +.OAMData_MagnetTrainPurple: + db 4 + dbsprite -1, 0, -1, 0, $00, PAL_OW_PURPLE | PRIORITY + dbsprite -1, 0, 0, 0, $01, PAL_OW_PURPLE | PRIORITY + dbsprite 0, 0, -1, 0, $02, PAL_OW_PURPLE | PRIORITY + dbsprite 0, 0, 0, 0, $03, PAL_OW_PURPLE | PRIORITY diff --git a/data/sprite_anims/sequences.asm b/data/sprite_anims/sequences.asm index c41e96c..fafa0df 100644 --- a/data/sprite_anims/sequences.asm +++ b/data/sprite_anims/sequences.asm @@ -92,4 +92,8 @@ SpriteAnimSeqData: db SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_AWAY, SPRITE_ANIM_SEQ_INTRO_SUICUNE_AWAY, SPRITE_ANIM_DICT_DEFAULT ; SPRITE_ANIM_INDEX_CELEBI db SPRITE_ANIM_FRAMESET_CELEBI_LEFT, SPRITE_ANIM_SEQ_NULL, SPRITE_ANIM_DICT_DEFAULT +; SPRITE_ANIM_INDEX_PURPLE_WALK + db SPRITE_ANIM_FRAMESET_PURPLE_WALK, SPRITE_ANIM_SEQ_NULL, SPRITE_ANIM_DICT_DEFAULT +; SPRITE_ANIM_INDEX_MAGNET_TRAIN_PURPLE + db SPRITE_ANIM_FRAMESET_MAGNET_TRAIN_PURPLE, SPRITE_ANIM_SEQ_NULL, SPRITE_ANIM_DICT_DEFAULT assert_table_length NUM_SPRITE_ANIM_INDEXES diff --git a/data/sprites/player_sprites.asm b/data/sprites/player_sprites.asm index 89eb6e8..f442ede 100644 --- a/data/sprites/player_sprites.asm +++ b/data/sprites/player_sprites.asm @@ -11,3 +11,11 @@ KrisStateSprites: db PLAYER_SURF, SPRITE_SURF db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU db -1 ; end + +EnbyStateSprites: + db PLAYER_NORMAL, SPRITE_ENBY + db PLAYER_BIKE, SPRITE_ENBY_BIKE + db PLAYER_SURF, SPRITE_SURF + db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU + db -1 ; end + \ No newline at end of file diff --git a/data/sprites/sprites.asm b/data/sprites/sprites.asm index 25281c2..c75fe02 100644 --- a/data/sprites/sprites.asm +++ b/data/sprites/sprites.asm @@ -109,4 +109,6 @@ OverworldSprites: overworld_sprite EnteiSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED overworld_sprite RaikouSpriteGFX, 4, STILL_SPRITE, PAL_OW_RED overworld_sprite StandingYoungsterSpriteGFX, 12, STANDING_SPRITE, PAL_OW_BLUE + overworld_sprite EnbySpriteGFX, 12, WALKING_SPRITE, PAL_OW_PURPLE + overworld_sprite EnbyBikeSpriteGFX, 12, WALKING_SPRITE, PAL_OW_PURPLE assert_table_length NUM_OVERWORLD_SPRITES diff --git a/data/text/common_2.asm b/data/text/common_2.asm index 5399a87..22810ff 100644 --- a/data/text/common_2.asm +++ b/data/text/common_2.asm @@ -663,8 +663,8 @@ _YouCantUseItInABattleText:: prompt _AreYouABoyOrAreYouAGirlText:: - text "Are you a boy?" - line "Or are you a girl?" + text "Please choose your" + line "gender." done Text_BattleEffectActivate:: diff --git a/data/trainers/palettes.asm b/data/trainers/palettes.asm index 3429996..d61b8c9 100644 --- a/data/trainers/palettes.asm +++ b/data/trainers/palettes.asm @@ -12,6 +12,7 @@ KrisPalette: ; Kris shares Falkner's palette INCBIN "gfx/trainers/falkner.gbcpal", middle_colors INCBIN "gfx/trainers/whitney.gbcpal", middle_colors INCBIN "gfx/trainers/bugsy.gbcpal", middle_colors +;EnbyPalette: INCBIN "gfx/trainers/morty.gbcpal", middle_colors INCBIN "gfx/trainers/pryce.gbcpal", middle_colors INCBIN "gfx/trainers/jasmine.gbcpal", middle_colors @@ -77,4 +78,7 @@ INCBIN "gfx/trainers/officer.gbcpal", middle_colors INCBIN "gfx/trainers/grunt_f.gbcpal", middle_colors INCBIN "gfx/trainers/mysticalman.gbcpal", middle_colors - assert_table_length NUM_TRAINER_CLASSES + 1 +EnbyPalette: +INCLUDE "gfx/player/topaz.pal" + + assert_table_length NUM_TRAINER_CLASSES + 2 diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 4b49d14..a781300 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -9079,9 +9079,16 @@ GetTrainerBackpic: bit PLAYERSPRITESETUP_FEMALE_TO_MALE_F, a jr nz, .Chris ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .Chris + dec a ; FEMALE + jr z, .Kris +; It's nonbinary. + farcall GetEnbyBackpic + ret + +.Kris: ; It's a girl. farcall GetKrisBackpic ret diff --git a/engine/events/fishing_gfx.asm b/engine/events/fishing_gfx.asm index e8878b6..cb88ba1 100644 --- a/engine/events/fishing_gfx.asm +++ b/engine/events/fishing_gfx.asm @@ -6,9 +6,12 @@ LoadFishingGFX: ld de, FishingGFX ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_gender ld de, KrisFishingGFX + dec a ; FEMALE + jr z, .got_gender + ld de, EnbyFishingGFX .got_gender ld hl, vTiles0 tile $02 @@ -40,3 +43,6 @@ INCBIN "gfx/overworld/chris_fish.2bpp" KrisFishingGFX: INCBIN "gfx/overworld/kris_fish.2bpp" + +EnbyFishingGFX: +INCBIN "gfx/overworld/enby_fish.2bpp" diff --git a/engine/events/magnet_train.asm b/engine/events/magnet_train.asm index 43b1d71..49aafee 100644 --- a/engine/events/magnet_train.asm +++ b/engine/events/magnet_train.asm @@ -298,9 +298,12 @@ MagnetTrain_Jumptable: ld a, BANK(wPlayerGender) ldh [rSVBK], a ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_gender ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE + dec a ; FEMALE + jr z, .got_gender + ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_PURPLE .got_gender pop af ldh [rSVBK], a diff --git a/engine/gfx/cgb_layouts.asm b/engine/gfx/cgb_layouts.asm index 4af157c..f76a5bc 100644 --- a/engine/gfx/cgb_layouts.asm +++ b/engine/gfx/cgb_layouts.asm @@ -177,9 +177,12 @@ InitPartyMenuBGPal0: _CGB_PokegearPals: ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .male ld hl, FemalePokegearPals + dec a ; FEMALE + jr z, .got_pals + ld hl, EnbyPokegearPals jr .got_pals .male @@ -628,7 +631,7 @@ _CGB_TrainerCard: ld a, WHITNEY call GetTrainerPalettePointer call LoadPalette_White_Col1_Col2_Black - ld a, MORTY + ld a, TOPAZ ;MORTY call GetTrainerPalettePointer call LoadPalette_White_Col1_Col2_Black ld a, CHUCK @@ -644,14 +647,21 @@ _CGB_TrainerCard: call GetPredefPal call LoadHLPaletteIntoDE - ; fill screen with opposite-gender palette for the card border + ; fill screen with gender-based palette for the card border hlcoord 0, 0, wAttrmap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, [wPlayerGender] and a - ld a, $1 ; kris - jr z, .got_gender - ld a, $0 ; chris + jr z, .male + dec a + jr z, .female + ld a, $6 ; dark magenta for enby + jr .got_gender +.male + ld a, $1 ; blue for chris + jr .got_gender +.female + ld a, $0 ; red for kris .got_gender call ByteFill ; fill trainer sprite area with same-gender palette @@ -659,14 +669,18 @@ _CGB_TrainerCard: lb bc, 7, 5 ld a, [wPlayerGender] and a + jr z, .male2 + dec a + jr z, .female2 + ld a, $4 ; enby + jr .got_gender2 + .male2 ld a, $0 ; chris - jr z, .got_gender2 + jr .got_gender2 + .female2 ld a, $1 ; kris .got_gender2 call FillBoxCGB - ; top-right corner still uses the border's palette - hlcoord 18, 1, wAttrmap - ld [hl], $1 hlcoord 2, 11, wAttrmap lb bc, 2, 4 ld a, $1 ; falkner @@ -695,22 +709,24 @@ _CGB_TrainerCard: lb bc, 2, 4 ld a, $7 ; pryce call FillBoxCGB - ; clair uses kris's palette - ld a, [wPlayerGender] - and a - push af - jr z, .got_gender3 hlcoord 14, 14, wAttrmap lb bc, 2, 4 - ld a, $1 + ld a, $1 ; clair call FillBoxCGB + ; top-right corner still uses the border's palette + ld a, [wPlayerGender] + and a + jr z, .male3 + dec a + jr z, .female3 + ld a, $6 ; dark magenta for enby + jr .got_gender3 +.male3 + ld a, $1 ; blue for chris + jr .got_gender3 +.female3 + ld a, $0 ; red for kris .got_gender3 - pop af - ld c, $0 - jr nz, .got_gender4 - inc c -.got_gender4 - ld a, c hlcoord 18, 1, wAttrmap ld [hl], a call ApplyAttrmap @@ -772,9 +788,15 @@ _CGB_PackPals: jr z, .tutorial_male ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .tutorial_male + dec a ; FEMALE + jr z, .tutorial_female + ld hl, .EnbyPackPals + jr .got_gender + +.tutorial_female ld hl, .KrisPackPals jr .got_gender @@ -819,6 +841,9 @@ INCLUDE "gfx/pack/pack.pal" .KrisPackPals: INCLUDE "gfx/pack/pack_f.pal" +.EnbyPackPals: +INCLUDE "gfx/pack/pack_nb.pal" + _CGB_Pokepic: call _CGB_MapPals ld de, SCREEN_WIDTH diff --git a/engine/gfx/color.asm b/engine/gfx/color.asm index 933d163..2102973 100644 --- a/engine/gfx/color.asm +++ b/engine/gfx/color.asm @@ -689,6 +689,12 @@ GetPlayerOrMonPalettePointer: ld a, [wPlayerGender] and a jr z, .male + dec a + jr z, .female + ld hl, EnbyPalette + ret + +.female ld hl, KrisPalette ret @@ -1332,6 +1338,9 @@ INCLUDE "gfx/pokegear/pokegear.pal" FemalePokegearPals: INCLUDE "gfx/pokegear/pokegear_f.pal" +EnbyPokegearPals: +INCLUDE "gfx/pokegear/pokegear_nb.pal" + BetaPokerPals: INCLUDE "gfx/beta_poker/beta_poker.pal" diff --git a/engine/gfx/player_gfx.asm b/engine/gfx/player_gfx.asm index ca53a64..442f822 100644 --- a/engine/gfx/player_gfx.asm +++ b/engine/gfx/player_gfx.asm @@ -1,14 +1,14 @@ -BetaLoadPlayerTrainerClass: ; unreferenced - ld c, CAL - ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr z, .got_class - ld c, KAREN ; not KRIS? -.got_class - ld a, c - ld [wTrainerClass], a - ret - +;BetaLoadPlayerTrainerClass: ; unreferenced +; ld c, CAL +; ld a, [wPlayerGender] +; bit PLAYERGENDER_FEMALE_F, a +; jr z, .got_class +; ld c, KAREN ; not KRIS? +;.got_class +; ld a, c +; ld [wTrainerClass], a +; ret +; MovePlayerPicRight: hlcoord 6, 4 ld de, 1 @@ -57,9 +57,12 @@ MovePlayerPic: ShowPlayerNamingChoices: ld hl, ChrisNameMenuHeader ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_header ld hl, KrisNameMenuHeader + dec a ; FEMALE + jr z, .got_header + ld hl, EnbyNameMenuHeader .got_header call LoadMenuHeader call VerticalMenu @@ -71,34 +74,45 @@ ShowPlayerNamingChoices: INCLUDE "data/player_names.asm" -GetPlayerNameArray: ; unreferenced - ld hl, wPlayerName - ld de, MalePlayerNameArray - ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr z, .got_array - ld de, FemalePlayerNameArray -.got_array - call InitName - ret - +;GetPlayerNameArray: ; unreferenced +; ld hl, wPlayerName +; ld de, MalePlayerNameArray +; ld a, [wPlayerGender] +; bit PLAYERGENDER_FEMALE_F, a +; jr z, .got_array +; ld de, FemalePlayerNameArray +;.got_array +; call InitName +; ret +; GetPlayerIcon: ld de, ChrisSpriteGFX ld b, BANK(ChrisSpriteGFX) ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_gfx +; Female ld de, KrisSpriteGFX ld b, BANK(KrisSpriteGFX) + + dec a ; FEMALE + jr z, .got_gfx +; Enby + ld de, EnbySpriteGFX + ld b, BANK(EnbySpriteGFX) + .got_gfx ret GetCardPic: ld hl, ChrisCardPic ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_pic ld hl, KrisCardPic + dec a ; FEMALE + jr z, .got_pic + ld hl, EnbyCardPic .got_pic ld de, vTiles2 tile $00 ld bc, $23 tiles @@ -117,14 +131,19 @@ INCBIN "gfx/trainer_card/chris_card.2bpp" KrisCardPic: INCBIN "gfx/trainer_card/kris_card.2bpp" +EnbyCardPic: +INCBIN "gfx/trainer_card/enby_card.2bpp" + TrainerCardGFX: INCBIN "gfx/trainer_card/trainer_card.2bpp" GetPlayerBackpic: ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, GetChrisBackpic - call GetKrisBackpic + dec a ; FEMALE + jp z, GetKrisBackpic + call GetEnbyBackpic ret GetChrisBackpic: @@ -143,9 +162,12 @@ HOF_LoadTrainerFrontpic: ; Get class ld e, CHRIS ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_class ld e, KRIS + dec a ; FEMALE + jr z, .got_class + ld e, TOPAZ .got_class ld a, e ld [wTrainerClass], a @@ -153,9 +175,13 @@ HOF_LoadTrainerFrontpic: ; Load pic ld de, ChrisPic ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_pic ld de, KrisPic + dec a ; FEMALE + jr z, .got_pic + ld de, EnbyPic + .got_pic ld hl, vTiles2 ld b, BANK(ChrisPic) ; aka BANK(KrisPic) @@ -173,9 +199,12 @@ DrawIntroPlayerPic: ; Get class ld e, CHRIS ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_class ld e, KRIS + dec a ; FEMALE + jr z, .got_class + ld e, TOPAZ .got_class ld a, e ld [wTrainerClass], a @@ -183,9 +212,12 @@ DrawIntroPlayerPic: ; Load pic ld de, ChrisPic ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_pic ld de, KrisPic + dec a ; FEMALE + jr z, .got_pic + ld de, EnbyPic .got_pic ld hl, vTiles2 ld b, BANK(ChrisPic) ; aka BANK(KrisPic) @@ -206,6 +238,9 @@ INCBIN "gfx/player/chris.2bpp" KrisPic: INCBIN "gfx/player/kris.2bpp" +EnbyPic: +INCBIN "gfx/player/enby.2bpp" + GetKrisBackpic: ; Kris's backpic is uncompressed. ld de, KrisBackpic @@ -216,3 +251,13 @@ GetKrisBackpic: KrisBackpic: INCBIN "gfx/player/kris_back.2bpp" + +GetEnbyBackpic: + ld de, EnbyBackpic + ld hl, vTiles2 tile $31 + lb bc, BANK(EnbyBackpic), 7 * 7 ; dimensions + call Get2bpp + ret + +EnbyBackpic: +INCBIN "gfx/player/enby_back.2bpp" diff --git a/engine/items/pack.asm b/engine/items/pack.asm index 4a4b694..626cfe4 100644 --- a/engine/items/pack.asm +++ b/engine/items/pack.asm @@ -1216,8 +1216,13 @@ DrawPackGFX: cp BATTLETYPE_TUTORIAL jr z, .male_dude ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr nz, .female + and a ; MALE + jr z, .male_dude + dec a ; FEMALE + jr z, .female + farcall DrawEnbyPackGFX + ret + .male_dude ld hl, PackGFXPointers add hl, de diff --git a/engine/items/pack_kris.asm b/engine/items/pack_kris.asm index 1a169ea..7ab24f4 100644 --- a/engine/items/pack_kris.asm +++ b/engine/items/pack_kris.asm @@ -18,3 +18,24 @@ PackFGFXPointers: PackFGFX: INCBIN "gfx/pack/pack_f.2bpp" + +DrawEnbyPackGFX: + ld hl, PackNBGFXPointers + add hl, de + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld hl, vTiles2 tile $50 + lb bc, BANK(PackNBGFX), 15 + call Request2bpp + ret + +PackNBGFXPointers: + dw PackNBGFX + (15 tiles) * 1 ; ITEM_POCKET + dw PackNBGFX + (15 tiles) * 3 ; BALL_POCKET + dw PackNBGFX + (15 tiles) * 0 ; KEY_ITEM_POCKET + dw PackNBGFX + (15 tiles) * 2 ; TM_HM_POCKET + +PackNBGFX: +INCBIN "gfx/pack/pack_nb.2bpp" diff --git a/engine/menus/init_gender.asm b/engine/menus/init_gender.asm index 4bf8cc2..7c7f7a7 100644 --- a/engine/menus/init_gender.asm +++ b/engine/menus/init_gender.asm @@ -42,15 +42,16 @@ InitGender: .MenuHeader: db MENU_BACKUP_TILES ; flags - menu_coords 6, 4, 12, 9 + menu_coords 6, 3, 12, 10 dw .MenuData db 1 ; default option .MenuData: db STATICMENU_CURSOR | STATICMENU_WRAP | STATICMENU_DISABLE_B ; flags - db 2 ; items + db 3 ; items db "Boy@" db "Girl@" + db "Enby@" AreYouABoyOrAreYouAGirlText: text_far _AreYouABoyOrAreYouAGirlText diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm index 6917ae4..d324aec 100644 --- a/engine/menus/intro_menu.asm +++ b/engine/menus/intro_menu.asm @@ -797,17 +797,22 @@ NamePlayer: ld hl, wPlayerName ld de, .Chris ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr z, .Male + and a ; MALE + jr z, .GotName ld de, .Kris -.Male: + dec a ; FEMALE + jr z, .GotName + ld de, .Topaz +.GotName: call InitName ret .Chris: - db "CHRIS@@@@@@" + db "ETHAN@@@@@@" .Kris: db "KRIS@@@@@@@" +.Topaz: + db "TOPAZ@@@@@@" GSShowPlayerNamingChoices: ; unreferenced call LoadMenuHeader @@ -962,10 +967,13 @@ Intro_PlacePlayerSprite: ld b, PAL_OW_RED ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr z, .male + and a ; MALE + jr z, .okay ld b, PAL_OW_BLUE -.male + dec a ; FEMALE + jr z, .okay + ld b, PAL_OW_PURPLE +.okay ld a, b ld [hli], a ; attributes diff --git a/engine/menus/naming_screen.asm b/engine/menus/naming_screen.asm index 9cfe33d..5e4c7e2 100644 --- a/engine/menus/naming_screen.asm +++ b/engine/menus/naming_screen.asm @@ -216,7 +216,16 @@ NamingScreen: cp LOW(KrisSpriteGFX) jr nz, .not_kris ld b, SPRITE_ANIM_INDEX_BLUE_WALK + jr .not_enby .not_kris + ld a, d + cp HIGH(EnbySpriteGFX) + jr nz, .not_enby + ld a, e + cp LOW(EnbySpriteGFX) + jr nz, .not_enby + ld b, SPRITE_ANIM_INDEX_PURPLE_WALK +.not_enby ld a, b depixel 4, 4, 4, 0 call InitSpriteAnimStruct diff --git a/engine/overworld/overworld.asm b/engine/overworld/overworld.asm index 5c02818..e5a6e1c 100644 --- a/engine/overworld/overworld.asm +++ b/engine/overworld/overworld.asm @@ -59,9 +59,12 @@ GetPlayerSprite: bit PLAYERSPRITESETUP_FEMALE_TO_MALE_F, a jr nz, .go ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .go ld hl, KrisStateSprites + dec a ; FEMALE + jr z, .go + ld hl, EnbyStateSprites .go ld a, [wPlayerState] diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm index dec66f6..1f1b557 100644 --- a/engine/overworld/player_object.asm +++ b/engine/overworld/player_object.asm @@ -34,9 +34,12 @@ SpawnPlayer: bit PLAYERSPRITESETUP_FEMALE_TO_MALE_F, a jr nz, .ok ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .ok ln e, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT + dec a ; FEMALE + jr z, .ok + ln e, PAL_NPC_PURPLE, OBJECTTYPE_SCRIPT .ok ld [hl], e diff --git a/engine/pokegear/pokegear.asm b/engine/pokegear/pokegear.asm index 32e6a05..eaf93a4 100644 --- a/engine/pokegear/pokegear.asm +++ b/engine/pokegear/pokegear.asm @@ -657,9 +657,12 @@ PokegearMap_InitPlayerIcon: depixel 0, 0 ld b, SPRITE_ANIM_INDEX_RED_WALK ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_gender ld b, SPRITE_ANIM_INDEX_BLUE_WALK + dec a ; FEMALE + jr z, .got_gender + ld b, SPRITE_ANIM_INDEX_PURPLE_WALK .got_gender ld a, b call InitSpriteAnimStruct @@ -2537,10 +2540,13 @@ Pokedex_GetArea: push bc ld c, PAL_OW_RED ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a - jr z, .male + and a ; MALE + jr z, .got_gender inc c ; PAL_OW_BLUE -.male + dec a ; FEMALE + jr z, .got_gender + ld c, PAL_OW_PURPLE +.got_gender ld a, c ld [hli], a ; attributes pop bc @@ -2750,9 +2756,12 @@ TownMapPlayerIcon: depixel 0, 0 ld b, SPRITE_ANIM_INDEX_RED_WALK ; Male ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .got_gender ld b, SPRITE_ANIM_INDEX_BLUE_WALK ; Female + dec a ; FEMALE + jr z, .got_gender + ld b, SPRITE_ANIM_INDEX_PURPLE_WALK ; Enby .got_gender ld a, b call InitSpriteAnimStruct diff --git a/engine/pokemon/caught_data.asm b/engine/pokemon/caught_data.asm index 4589eac..f801769 100644 --- a/engine/pokemon/caught_data.asm +++ b/engine/pokemon/caught_data.asm @@ -192,9 +192,12 @@ SetBoxmonOrEggmonCaughtData: .NotPokecenter2F: call GetWorldMapLocation ld b, a - ld a, [wPlayerGender] - rrca ; shift bit 0 (PLAYERGENDER_FEMALE_F) to bit 7 (CAUGHT_GENDER_MASK) - or b + ld a, [wPlayerGender] ; Vestigial, get rid of this later. + dec a ; FEMALE + ld a, b + jr nz, .not_female + or CAUGHT_GENDER_MASK +.not_female ld [hl], a ret diff --git a/engine/pokemon/stats_screen.asm b/engine/pokemon/stats_screen.asm index 4fcc64d..4d41aa9 100644 --- a/engine/pokemon/stats_screen.asm +++ b/engine/pokemon/stats_screen.asm @@ -801,20 +801,20 @@ LoadBluePage: call CopyNickname farcall CorrectNickErrors hlcoord 2, 13 - call PlaceString - ld a, [wTempMonCaughtGender] - and a - jr z, .done - cp $7f - jr z, .done - and CAUGHT_GENDER_MASK - ld a, "♂" - jr z, .got_gender - ld a, "♀" -.got_gender - hlcoord 9, 13 - ld [hl], a -.done + call PlaceString ; Goodbye OT Gender display, you'd cause more of a problem than you're worth +; ld a, [wTempMonCaughtGender] +; and a +; jr z, .done +; cp $7f +; jr z, .done +; and CAUGHT_GENDER_MASK +; ld a, "♂" +; jr z, .got_gender +; ld a, "♀" +;.got_gender +; hlcoord 9, 13 +; ld [hl], a +;.done ret .OTNamePointers: diff --git a/gfx/overworld/enby_fish.png b/gfx/overworld/enby_fish.png new file mode 100644 index 0000000..58a1df1 Binary files /dev/null and b/gfx/overworld/enby_fish.png differ diff --git a/gfx/pack/pack_nb.pal b/gfx/pack/pack_nb.pal new file mode 100644 index 0000000..2d49a95 --- /dev/null +++ b/gfx/pack/pack_nb.pal @@ -0,0 +1,29 @@ + RGB 31, 31, 31 + RGB 12, 24, 01 + RGB 05, 16, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 12, 24, 01 + RGB 05, 16, 00 + RGB 00, 00, 00 + + RGB 31, 31, 11 + RGB 12, 24, 01 + RGB 05, 16, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 12, 24, 01 + RGB 05, 16, 00 + RGB 31, 00, 00 + + RGB 31, 31, 31 + RGB 12, 24, 01 + RGB 31, 00, 00 + RGB 00, 00, 00 + + RGB 31, 31, 31 + RGB 07, 19, 07 + RGB 07, 19, 07 + RGB 00, 00, 00 diff --git a/gfx/pack/pack_nb.png b/gfx/pack/pack_nb.png new file mode 100644 index 0000000..c75ba72 Binary files /dev/null and b/gfx/pack/pack_nb.png differ diff --git a/gfx/player/enby.png b/gfx/player/enby.png new file mode 100644 index 0000000..ca1ee4c Binary files /dev/null and b/gfx/player/enby.png differ diff --git a/gfx/player/enby_back.png b/gfx/player/enby_back.png new file mode 100644 index 0000000..4e0374c Binary files /dev/null and b/gfx/player/enby_back.png differ diff --git a/gfx/player/topaz.pal b/gfx/player/topaz.pal new file mode 100644 index 0000000..3450397 --- /dev/null +++ b/gfx/player/topaz.pal @@ -0,0 +1,2 @@ + RGB 30, 19, 16 + RGB 15, 00, 25 \ No newline at end of file diff --git a/gfx/pokegear/pokegear_nb.pal b/gfx/pokegear/pokegear_nb.pal new file mode 100644 index 0000000..3f7f4f1 --- /dev/null +++ b/gfx/pokegear/pokegear_nb.pal @@ -0,0 +1,31 @@ +; border + RGB 28, 31, 20 + RGB 21, 21, 21 + RGB 13, 13, 13 + RGB 00, 00, 00 +; earth + RGB 28, 31, 20 + RGB 00, 31, 00 + RGB 00, 00, 31 + RGB 00, 00, 00 +; mountain + RGB 28, 31, 20 + RGB 00, 31, 00 + RGB 15, 07, 00 + RGB 00, 00, 00 +; city (enby) + RGB 28, 31, 20 + RGB 22, 09, 31 + RGB 10, 00, 26 + RGB 00, 00, 00 +; point of interest + RGB 28, 31, 20 + RGB 00, 31, 00 + RGB 00, 00, 31 + RGB 31, 00, 00 +; mountain point of interest + RGB 28, 31, 20 + RGB 00, 31, 00 + RGB 15, 07, 00 + RGB 31, 00, 00 + \ No newline at end of file diff --git a/gfx/sprites.asm b/gfx/sprites.asm index 212c0b2..a61bbe4 100644 --- a/gfx/sprites.asm +++ b/gfx/sprites.asm @@ -106,3 +106,9 @@ SuicuneSpriteGFX:: INCBIN "gfx/sprites/suicune.2bpp" EnteiSpriteGFX:: INCBIN "gfx/sprites/entei.2bpp" RaikouSpriteGFX:: INCBIN "gfx/sprites/raikou.2bpp" StandingYoungsterSpriteGFX:: INCBIN "gfx/sprites/standing_youngster.2bpp" + + +SECTION "Sprites 3", ROMX + +EnbySpriteGFX:: INCBIN "gfx/sprites/enby.2bpp" +EnbyBikeSpriteGFX:: INCBIN "gfx/sprites/enby_bike.2bpp" diff --git a/gfx/sprites/enby.png b/gfx/sprites/enby.png new file mode 100644 index 0000000..3bf9b36 Binary files /dev/null and b/gfx/sprites/enby.png differ diff --git a/gfx/sprites/enby_bike.png b/gfx/sprites/enby_bike.png new file mode 100644 index 0000000..b324c71 Binary files /dev/null and b/gfx/sprites/enby_bike.png differ diff --git a/gfx/stats/party_menu_ob.pal b/gfx/stats/party_menu_ob.pal index 6acec53..519a7b4 100644 --- a/gfx/stats/party_menu_ob.pal +++ b/gfx/stats/party_menu_ob.pal @@ -5,22 +5,22 @@ RGB 27, 31, 27 RGB 31, 19, 10 - RGB 10, 14, 20 - RGB 00, 00, 00 - - RGB 27, 31, 27 - RGB 31, 19, 10 - RGB 31, 07, 04 - RGB 00, 00, 00 - - RGB 27, 31, 27 - RGB 31, 19, 10 - RGB 31, 07, 04 - RGB 00, 00, 00 - - RGB 27, 31, 27 - RGB 31, 19, 10 - RGB 31, 07, 04 + RGB 10, 09, 31 + RGB 00, 00, 00 + + RGB 27, 31, 27 + RGB 31, 19, 10 + RGB 07, 23, 03 + RGB 00, 00, 00 + + RGB 27, 31, 27 + RGB 31, 19, 10 + RGB 15, 10, 03 + RGB 00, 00, 00 + + RGB 27, 31, 27 + RGB 31, 19, 10 + RGB 15, 00, 25 RGB 00, 00, 00 RGB 27, 31, 27 diff --git a/gfx/trainer_card/enby_card.png b/gfx/trainer_card/enby_card.png new file mode 100644 index 0000000..48bc008 Binary files /dev/null and b/gfx/trainer_card/enby_card.png differ diff --git a/home/text.asm b/home/text.asm index 6d80e88..276bfe0 100644 --- a/home/text.asm +++ b/home/text.asm @@ -386,7 +386,7 @@ PlaceGenderedPlayerName:: ld h, b ld l, c ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE ld de, KunSuffixText jr z, PlaceCommandCharacter ld de, ChanSuffixText diff --git a/layout.link b/layout.link index c6c5faa..f2b400d 100644 --- a/layout.link +++ b/layout.link @@ -75,7 +75,7 @@ ROMX $11 ROMX $12 "Crystal Features 1" "Egg Moves 2" - "Evolutions and Attacks 2" + ROMX $13 "bank13" "Shrink Pics" diff --git a/main.asm b/main.asm index 8095928..70cd0ab 100644 --- a/main.asm +++ b/main.asm @@ -283,7 +283,6 @@ INCLUDE "engine/events/halloffame.asm" SECTION "Crystal Features 2", ROMX INCLUDE "engine/events/kurt.asm" -INCLUDE "engine/gfx/player_gfx.asm" INCLUDE "mobile/mobile_22.asm" INCLUDE "engine/events/unown_walls.asm" INCLUDE "engine/events/buena.asm" @@ -291,6 +290,10 @@ INCLUDE "engine/events/dratini.asm" INCLUDE "engine/events/battle_tower/rules.asm" INCLUDE "mobile/mobile_22_2.asm" +SECTION "Player GFX", ROMX + +INCLUDE "engine/gfx/player_gfx.asm" + SECTION "bank23", ROMX diff --git a/maps/CopycatsHouse2F.asm b/maps/CopycatsHouse2F.asm index 0e53ad0..541e4ba 100644 --- a/maps/CopycatsHouse2F.asm +++ b/maps/CopycatsHouse2F.asm @@ -5,6 +5,7 @@ const COPYCATSHOUSE2F_MONSTERDOLL const COPYCATSHOUSE2F_BIRDDOLL const COPYCATSHOUSE2F_COPYCAT2 ; if player is female + const COPYCATSHOUSE2F_COPYCAT3 ; if player is enby CopycatsHouse2F_MapScripts: def_scene_scripts @@ -13,14 +14,22 @@ CopycatsHouse2F_MapScripts: callback MAPCALLBACK_OBJECTS, CopycatsHouse2FWhichGenderCallback CopycatsHouse2FWhichGenderCallback: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Female + readvar VAR_PLAYERGENDER + ifequal FEMALE, .Female + ifequal ENBY, .Enby disappear COPYCATSHOUSE2F_COPYCAT2 + disappear COPYCATSHOUSE2F_COPYCAT3 appear COPYCATSHOUSE2F_COPYCAT1 sjump .Done .Female: disappear COPYCATSHOUSE2F_COPYCAT1 + disappear COPYCATSHOUSE2F_COPYCAT3 appear COPYCATSHOUSE2F_COPYCAT2 + sjump .Done +.Enby: + disappear COPYCATSHOUSE2F_COPYCAT1 + disappear COPYCATSHOUSE2F_COPYCAT2 + appear COPYCATSHOUSE2F_COPYCAT3 .Done: endcallback @@ -32,8 +41,9 @@ Copycat: iftrue .TryGivePassAgain checkitem LOST_ITEM iftrue .ReturnLostItem - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Default_Female_1 + readvar VAR_PLAYERGENDER + ifequal FEMALE, .Default_Female_1 + ifequal ENBY, .Default_Enby_1 applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData faceplayer variablesprite SPRITE_COPYCAT, SPRITE_CHRIS @@ -43,12 +53,18 @@ Copycat: applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData faceplayer variablesprite SPRITE_COPYCAT, SPRITE_KRIS + sjump .Default_Merge_1 + +.Default_Enby_1: + applymovement COPYCATSHOUSE2F_COPYCAT3, CopycatSpinAroundMovementData + faceplayer + variablesprite SPRITE_COPYCAT, SPRITE_ENBY .Default_Merge_1: special LoadUsedSpritesGFX checkevent EVENT_RETURNED_MACHINE_PART iftrue .TalkAboutLostItem opentext - checkflag ENGINE_PLAYER_IS_FEMALE + readvar VAR_PLAYERGENDER iftrue .Default_Female_2a writetext CopycatText_Male_1 sjump .Default_Merge_2a @@ -58,11 +74,16 @@ Copycat: .Default_Merge_2a: waitbutton closetext - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Default_Female_3a + readvar VAR_PLAYERGENDER + ifequal FEMALE, .Default_Female_3a + ifequal ENBY, .Default_Enby_3a applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData sjump .Default_Merge_3a +.Default_Enby_3a: + applymovement COPYCATSHOUSE2F_COPYCAT3, CopycatSpinAroundMovementData + sjump .Default_Merge_3a + .Default_Female_3a: applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData .Default_Merge_3a: @@ -77,7 +98,7 @@ Copycat: .TalkAboutLostItem: opentext - checkflag ENGINE_PLAYER_IS_FEMALE + readvar VAR_PLAYERGENDER iftrue .Default_Female_2b writetext CopycatText_Male_2 sjump .Default_Merge_2b @@ -87,13 +108,18 @@ Copycat: .Default_Merge_2b: waitbutton closetext - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Default_Female_3b + readvar VAR_PLAYERGENDER + ifequal FEMALE, .Default_Female_3b + ifequal ENBY, .Default_Enby_3b applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData sjump .Default_Merge_3b .Default_Female_3b: applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData + sjump .Default_Merge_3b + +.Default_Enby_3b: + applymovement COPYCATSHOUSE2F_COPYCAT3, CopycatSpinAroundMovementData .Default_Merge_3b: faceplayer variablesprite SPRITE_COPYCAT, SPRITE_LASS @@ -128,8 +154,9 @@ Copycat: end .GotPass: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .GotPass_Female_1 + readvar VAR_PLAYERGENDER + ifequal FEMALE, .GotPass_Female_1 + ifequal ENBY, .GotPass_Enby_1 applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData faceplayer variablesprite SPRITE_COPYCAT, SPRITE_CHRIS @@ -139,10 +166,16 @@ Copycat: applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData faceplayer variablesprite SPRITE_COPYCAT, SPRITE_KRIS + sjump .GotPass_Merge_1 + +.GotPass_Enby_1: + applymovement COPYCATSHOUSE2F_COPYCAT3, CopycatSpinAroundMovementData + faceplayer + variablesprite SPRITE_COPYCAT, SPRITE_ENBY .GotPass_Merge_1: special LoadUsedSpritesGFX opentext - checkflag ENGINE_PLAYER_IS_FEMALE + readvar VAR_PLAYERGENDER iftrue .GotPass_Female_2 writetext CopycatText_Male_3 sjump .GotPass_Merge_2 @@ -152,13 +185,18 @@ Copycat: .GotPass_Merge_2: waitbutton closetext - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .GotPass_Female_3 + readvar VAR_PLAYERGENDER + ifequal FEMALE, .GotPass_Female_3 + ifequal ENBY, .GotPass_Enby_3 applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData sjump .GotPass_Merge_3 .GotPass_Female_3: applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData + sjump .GotPass_Merge_3 + +.GotPass_Enby_3: + applymovement COPYCATSHOUSE2F_COPYCAT3, CopycatSpinAroundMovementData .GotPass_Merge_3: faceplayer variablesprite SPRITE_COPYCAT, SPRITE_LASS @@ -377,3 +415,4 @@ CopycatsHouse2F_MapEvents: object_event 2, 1, SPRITE_MONSTER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1 object_event 7, 1, SPRITE_BIRD, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, CopycatsHouse2FDoll, -1 object_event 4, 3, SPRITE_COPYCAT, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_2 + object_event 4, 3, SPRITE_COPYCAT, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_PURPLE, OBJECTTYPE_SCRIPT, 0, Copycat, EVENT_COPYCAT_3 diff --git a/maps/DanceTheater.asm b/maps/DanceTheater.asm index f3704ba..d44a188 100644 --- a/maps/DanceTheater.asm +++ b/maps/DanceTheater.asm @@ -89,8 +89,9 @@ DanceTheaterSurfGuy: sjump .GetSurf .KimonoGirlsUndefeated: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .PlayerIsFemale + readvar VAR_PLAYERGENDER + if_equal FEMALE, .PlayerIsFemale + if_equal ENBY, .PlayerIsEnby writetext SurfGuyLadGiftText waitbutton closetext @@ -101,6 +102,12 @@ DanceTheaterSurfGuy: waitbutton closetext end + +.PlayerIsEnby: + writetext SurfGuyChildGiftText + waitbutton + closetext + end .GetSurf: writetext SurfGuyLikeADanceText @@ -263,6 +270,14 @@ SurfGuyLassieGiftText: para "KIMONO GIRLS, I'll" line "give you a gift." done + +SurfGuyChildGiftText: + text "Pal, if you can" + line "defeat all the" + + para "KIMONO GIRLS, I'll" + line "give you a gift." + done SurfGuyLikeADanceText: text "The way you bat-" diff --git a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm index 2bdc7c2..b8ef493 100644 --- a/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm +++ b/maps/FastShipCabins_SE_SSE_CaptainsCabin.asm @@ -59,8 +59,9 @@ SSAquaGranddaughterBefore: showemote EMOTE_SHOCK, FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, 15 applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN1, SSAquaGranddaughterEntersCabinMovement turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, RIGHT - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .PlayerIsFemale + readvar VAR_PLAYERGENDER + ifequal FEMALE, .PlayerIsFemale + ifequal ENBY, .PlayerIsEnby opentext writetext SSAquaGranddaughterWasPlayingMText waitbutton @@ -72,6 +73,14 @@ SSAquaGranddaughterBefore: writetext SSAquaGranddaughterWasPlayingFText waitbutton closetext + sjump .cont + +.PlayerIsEnby: + opentext + writetext SSAquaGranddaughterWasPlayingNBText + waitbutton + closetext + sjump .cont .cont: turnobject FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_TWIN2, DOWN applymovement FASTSHIPCABINS_SE_SSE_CAPTAINSCABIN_GENTLEMAN, SSAquaGrandpaApproachesPlayerMovement @@ -330,12 +339,20 @@ SSAquaGranddaughterWasPlayingFText: para "with the CAPTAIN" line "and this big girl!" done + +SSAquaGranddaughterWasPlayingNBText: + text "Grandpa, here I" + line "am! I was playing" + + para "with the CAPTAIN" + line "and this kid!" + done SSAquaGranddaughterHadFunText: text "I had lots of fun" line "playing!" done - + PokefanmColinSeenText: text "Hey, kid! Want to" line "battle with me?" diff --git a/maps/Pokecenter2F.asm b/maps/Pokecenter2F.asm index e4175fd..0ac1af5 100644 --- a/maps/Pokecenter2F.asm +++ b/maps/Pokecenter2F.asm @@ -411,8 +411,8 @@ Script_WalkOutOfMobileBattleRoom: end Pokecenter2F_CheckGender: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Female + readvar VAR_PLAYERGENDER + ifnotequal MALE, .Female applymovementlasttalked Pokecenter2FMovementData_ReceptionistWalksUpAndLeft_LookRight applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesThreeStepsUp end @@ -459,8 +459,7 @@ Script_WalkOutOfLinkTradeRoom: clearflag ENGINE_KRIS_IN_CABLE_CLUB playsound SFX_TINGLE applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight - setval (PAL_NPC_BLUE << 4) - special SetPlayerPalette + scall Script_RestorePlayerColor applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft special UpdatePlayerSprite applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsDown_2 @@ -481,8 +480,7 @@ Script_WalkOutOfLinkBattleRoom: clearflag ENGINE_KRIS_IN_CABLE_CLUB playsound SFX_TINGLE applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight - setval (PAL_NPC_BLUE << 4) - special SetPlayerPalette + scall Script_RestorePlayerColor applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft special UpdatePlayerSprite applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesTwoStepsDown_2 @@ -490,8 +488,8 @@ Script_WalkOutOfLinkBattleRoom: end TimeCapsuleScript_CheckPlayerGender: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Female + readvar VAR_PLAYERGENDER + ifnotequal MALE, .Female readvar VAR_FACING ifequal LEFT, .MaleFacingLeft ifequal RIGHT, .MaleFacingRight @@ -569,8 +567,7 @@ Script_LeftTimeCapsule: clearflag ENGINE_KRIS_IN_CABLE_CLUB playsound SFX_TINGLE applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingRight - setval (PAL_NPC_BLUE << 4) - special SetPlayerPalette + scall Script_RestorePlayerColor applymovement PLAYER, Pokecenter2FMovementData_PlayerSpinsClockwiseEndsFacingLeft special UpdatePlayerSprite applymovement PLAYER, Pokecenter2FMovementData_PlayerTakesOneStepDown @@ -580,6 +577,17 @@ Script_LeftTimeCapsule: setmapscene TIME_CAPSULE, SCENE_TIMECAPSULE_INITIALIZE end +Script_RestorePlayerColor: + readvar VAR_PLAYERGENDER + ifequal FEMALE, .Blue + setval (PAL_NPC_PURPLE << 4) + special SetPlayerPalette + end +.Blue + setval (PAL_NPC_BLUE << 4) + special SetPlayerPalette + end + Pokecenter2FLinkRecordSign: refreshscreen special DisplayLinkRecord diff --git a/maps/Route37.asm b/maps/Route37.asm index 3d80fd6..93a3261 100644 --- a/maps/Route37.asm +++ b/maps/Route37.asm @@ -69,15 +69,8 @@ SunnyScript: promptbutton setevent EVENT_MET_SUNNY_OF_SUNDAY .MetSunny: - checkflag ENGINE_PLAYER_IS_FEMALE - iftrue .Kris - writetext SunnyGivesGiftText1 + writetext SunnyGivesGiftText promptbutton - sjump .next -.Kris: - writetext SunnyGivesGiftText2 - promptbutton -.next verbosegiveitem MAGNET iffalse SunnyDoneScript setevent EVENT_GOT_MAGNET_FROM_SUNNY @@ -179,13 +172,7 @@ MeetSunnyText: cont "Sunday today!" done -SunnyGivesGiftText1: - text "I was told to give" - line "you this if I saw" - cont "you!" - done - -SunnyGivesGiftText2: +SunnyGivesGiftText: text "I was told to give" line "you this if I saw" cont "you!" diff --git a/mobile/mobile_12.asm b/mobile/mobile_12.asm index 7f3e171..c2e4c75 100644 --- a/mobile/mobile_12.asm +++ b/mobile/mobile_12.asm @@ -310,7 +310,7 @@ asm_4828d: ld a, [hli] cp $50 jr nz, .asm_482e1 - ld a, 1 << PLAYERGENDER_FEMALE_F + ld a, FEMALE ld [wPlayerGender], a jr .asm_482f1 .asm_482ed diff --git a/mobile/mobile_22.asm b/mobile/mobile_22.asm index f841935..48598df 100644 --- a/mobile/mobile_22.asm +++ b/mobile/mobile_22.asm @@ -579,7 +579,7 @@ Function89481: Function89492: ld d, 0 ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE ret z inc d ret @@ -1196,7 +1196,7 @@ Function897d5: Function89807: ld hl, ChrisSilhouetteGFX ld a, [wPlayerGender] - bit PLAYERGENDER_FEMALE_F, a + and a ; MALE jr z, .asm_89814 ld hl, KrisSilhouetteGFX .asm_89814 diff --git a/ram/wram.asm b/ram/wram.asm index 0e85652..b8bf6c1 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -2878,9 +2878,9 @@ wMapStatusEnd:: wCrystalData:: wPlayerGender:: -; bit 0: -; 0 male -; 1 female +; 0 male +; 1 female +; 2 enby db wd473:: ds 1 wd474:: ds 1