Backporting Tower Jessie & James

This saves a HS constant to boot, which is handy.
This commit is contained in:
Llinos Evans 2023-05-06 08:16:20 +01:00
parent cc36099e92
commit 06d2e7786e
5 changed files with 282 additions and 274 deletions

View file

@ -79,9 +79,8 @@ DEF SHOW EQU $15
const HS_POKEMON_TOWER_5F_ITEM ; 43 X const HS_POKEMON_TOWER_5F_ITEM ; 43 X
const HS_POKEMON_TOWER_6F_ITEM_1 ; 44 X const HS_POKEMON_TOWER_6F_ITEM_1 ; 44 X
const HS_POKEMON_TOWER_6F_ITEM_2 ; 45 X const HS_POKEMON_TOWER_6F_ITEM_2 ; 45 X
const HS_POKEMON_TOWER_7F_ROCKET_1 ; 46 X const HS_POKEMON_TOWER_7F_JESSIE ; 46 X
const HS_POKEMON_TOWER_7F_ROCKET_2 ; 47 X const HS_POKEMON_TOWER_7F_JAMES ; 47 X
const HS_POKEMON_TOWER_7F_ROCKET_3 ; 48 X
const HS_POKEMON_TOWER_7F_MR_FUJI ; 49 const HS_POKEMON_TOWER_7F_MR_FUJI ; 49
const HS_MR_FUJIS_HOUSE_MR_FUJI ; 4A const HS_MR_FUJIS_HOUSE_MR_FUJI ; 4A
const HS_CELADON_MANSION_EEVEE_GIFT ; 4B const HS_CELADON_MANSION_EEVEE_GIFT ; 4B

View file

@ -361,10 +361,9 @@ PokemonTower6FHS:
db POKEMON_TOWER_6F, $04, SHOW ; HS_POKEMON_TOWER_6F_ITEM_1 db POKEMON_TOWER_6F, $04, SHOW ; HS_POKEMON_TOWER_6F_ITEM_1
db POKEMON_TOWER_6F, $05, SHOW ; HS_POKEMON_TOWER_6F_ITEM_2 db POKEMON_TOWER_6F, $05, SHOW ; HS_POKEMON_TOWER_6F_ITEM_2
PokemonTower7FHS: PokemonTower7FHS:
db POKEMON_TOWER_7F, $01, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_1 db POKEMON_TOWER_7F, $01, HIDE ; jessie & james?
db POKEMON_TOWER_7F, $02, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_2 db POKEMON_TOWER_7F, $02, HIDE
db POKEMON_TOWER_7F, $03, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_3 db POKEMON_TOWER_7F, $03, SHOW
db POKEMON_TOWER_7F, $04, SHOW ; HS_POKEMON_TOWER_7F_MR_FUJI
MrFujisHouseHS: MrFujisHouseHS:
db MR_FUJIS_HOUSE, $05, HIDE ; HS_MR_FUJIS_HOUSE_MR_FUJI db MR_FUJIS_HOUSE, $05, HIDE ; HS_MR_FUJIS_HOUSE_MR_FUJI
CeladonMansionRoofHouseHS: CeladonMansionRoofHouseHS:

View file

@ -7,9 +7,8 @@ PokemonTower7F_Object:
def_bg_events def_bg_events
def_object_events def_object_events
object_event 9, 11, SPRITE_ROCKET, STAY, RIGHT, 1, OPP_ROCKET, 19 object_event 10, 8, SPRITE_JESSIE, STAY, DOWN, 1
object_event 12, 9, SPRITE_ROCKET, STAY, LEFT, 2, OPP_ROCKET, 20 object_event 11, 8, SPRITE_JAMES, STAY, DOWN, 2
object_event 9, 7, SPRITE_ROCKET, STAY, RIGHT, 3, OPP_ROCKET, 21 object_event 10, 3, SPRITE_MR_FUJI, STAY, DOWN, 3
object_event 10, 3, SPRITE_MR_FUJI, STAY, DOWN, 4 ; person
def_warps_to POKEMON_TOWER_7F def_warps_to POKEMON_TOWER_7F

View file

@ -1,69 +1,240 @@
PokemonTower7F_Script: PokemonTower7F_Script:
call EnableAutoTextBoxDrawing call EnableAutoTextBoxDrawing
ld hl, PokemonTower7TrainerHeaders ld hl, PokemonTower7F_ScriptPointers
ld de, PokemonTower7F_ScriptPointers
ld a, [wPokemonTower7FCurScript] ld a, [wPokemonTower7FCurScript]
call ExecuteCurMapScriptInTable call CallFunctionInTable
ld [wPokemonTower7FCurScript], a
ret ret
PokemonTower7Script_60d18: PokemonTower7Script_60d01:
xor a xor a
ld [wJoyIgnore], a ld [wJoyIgnore], a
PokemonTower7Script_60d05:
ld [wPokemonTower7FCurScript], a ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
ret ret
PokemonTower7F_ScriptPointers: PokemonTower7F_ScriptPointers:
dw CheckFightingMapTrainers dw PokemonTower7Script0
dw DisplayEnemyTrainerTextAndStartBattle dw PokemonTower7Script1
dw PokemonTower7Script2 dw PokemonTower7Script2
dw PokemonTower7Script3 dw PokemonTower7Script3
dw PokemonTower7Script4 dw PokemonTower7Script4
dw PokemonTower7Script5
dw PokemonTower7Script6
dw PokemonTower7Script7
dw PokemonTower7Script8
dw PokemonTower7Script9
dw PokemonTower7Script10
dw PokemonTower7Script11
PokemonTower7Script2: PokemonTower7Script0:
ld hl, wFlags_0xcd60 IF DEF(_DEBUG)
res 0, [hl] call DebugPressedOrHeldB
ld a, [wIsInBattle] ret nz
cp $ff ENDC
jp z, PokemonTower7Script_60d18 CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
call EndTrainerBattle call z, PokemonTower7Script_60d2a
ld a, $f0
ld [wJoyIgnore], a
ld a, [wSpriteIndex]
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call PokemonTower7Script_60db6
ld a, $3
ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
ret ret
PokemonTower7Script3: PokemonTower7Script_60d2a:
ld a, [wYCoord]
cp $c
ret nz
ResetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
ld a, [wXCoord]
cp $a
jr z, .asm_60d47
ld a, [wXCoord] ; why?
cp $b
ret nz
SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
.asm_60d47
call StopMusic
ld c, 0 ; BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
xor a
ldh [hJoyHeld], a
ld a, ~(A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, HS_POKEMON_TOWER_7F_JESSIE
call PokemonTower7Script_60eaf
ld a, HS_POKEMON_TOWER_7F_JAMES
call PokemonTower7Script_60eaf
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, $4
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $ff
ld [wJoyIgnore], a
ld a, $1
call PokemonTower7Script_60d05
ret
PokemonTower7MovementData_60d7a:
db $4
PokemonTower7MovementData_60d7b:
db $4
db $4
db $4
db $FF
PokemonTower7Script1:
ld de, PokemonTower7MovementData_60d7b
CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
jr z, .asm_60d8c
ld de, PokemonTower7MovementData_60d7a
.asm_60d8c
ld a, $1
ldh [hSpriteIndexOrTextID], a
call MoveSprite
ld a, $ff
ld [wJoyIgnore], a
ld a, $2
call PokemonTower7Script_60d05
ret
PokemonTower7Script2:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wd730] ld a, [wd730]
bit 0, a bit 0, a
ret nz ret nz
ld hl, wMissableObjectList PokemonTower7Script3:
ld a, [wSpriteIndex]
ld b, a
.missableObjectsListLoop
ld a, [hli]
cp b ; search for sprite ID in missing objects list
ld a, [hli]
jr nz, .missableObjectsListLoop
ld [wMissableObjectIndex], a ; remove missable object
predef HideObject
xor a
ld [wJoyIgnore], a
ld [wSpriteIndex], a
ld [wTrainerHeaderFlagBit], a
ld [wUnusedDA38], a
ld a, $0 ld a, $0
ld [wPokemonTower7FCurScript], a ld [wSprite01StateData1FacingDirection], a
ld [wCurMapScript], a CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
jr z, .asm_60dba
ld a, $c
ld [wSprite01StateData1FacingDirection], a
.asm_60dba
ld a, $2
ld [wSprite01StateData1MovementStatus], a
PokemonTower7Script4:
ld de, PokemonTower7MovementData_60d7a
CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
jr z, .asm_60dcc
ld de, PokemonTower7MovementData_60d7b
.asm_60dcc
ld a, $2
ldh [hSpriteIndexOrTextID], a
call MoveSprite
ld a, $ff
ld [wJoyIgnore], a
ld a, $5
call PokemonTower7Script_60d05
ret
PokemonTower7Script5:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wd730]
bit 0, a
ret nz
PokemonTower7Script6:
ld a, $2
ld [wSprite02StateData1MovementStatus], a
ld a, $8
ld [wSprite02StateData1FacingDirection], a
CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
jr z, .asm_60dff
ld a, $0
ld [wSprite02StateData1FacingDirection], a
.asm_60dff
call Delay3
ld a, ~(A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, $5
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
PokemonTower7Script7:
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld hl, PokemonTower7JessieJamesEndBattleText
ld de, PokemonTower7JessieJamesEndBattleText
call SaveEndBattleTextPointers
ld a, OPP_JESSIE_JAMES
ld [wCurOpponent], a
ld a, 3
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
ld a, $8
call PokemonTower7Script_60d05
ret ret
PokemonTower7Script4: PokemonTower7Script8:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower7Script_60d01
ld a, $2
ld [wSprite01StateData1MovementStatus], a
ld [wSprite02StateData1MovementStatus], a
xor a
ld [wSprite01StateData1FacingDirection], a
ld [wSprite02StateData1FacingDirection], a
ld a, ~(A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, $6
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
call StopMusic
ld c, 0 ; BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
ld a, $ff
ld [wJoyIgnore], a
ld a, $9
call PokemonTower7Script_60d05
ret
PokemonTower7Script9:
ld a, $ff
ld [wJoyIgnore], a
call GBFadeOutToBlack
ld a, HS_POKEMON_TOWER_7F_JESSIE
call PokemonTower7Script_60ebe
ld a, HS_POKEMON_TOWER_7F_JAMES
call PokemonTower7Script_60ebe
call UpdateSprites
call Delay3
call GBFadeInFromBlack
ld a, $a
call PokemonTower7Script_60d05
ret
PokemonTower7Script10:
call PlayDefaultMusic
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
ld a, $0
call PokemonTower7Script_60d05
ret
PokemonTower7Script_60eaf:
ld [wMissableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
PokemonTower7Script_60ebe:
ld [wMissableObjectIndex], a
predef HideObject
ret
PokemonTower7Script11:
ld a, $ff ld a, $ff
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld a, HS_POKEMON_TOWER_7F_MR_FUJI ld a, HS_POKEMON_TOWER_7F_MR_FUJI
@ -77,154 +248,58 @@ PokemonTower7Script4:
ld [wDestinationWarpID], a ld [wDestinationWarpID], a
ld a, LAVENDER_TOWN ld a, LAVENDER_TOWN
ld [wLastMap], a ld [wLastMap], a
ld hl, wd736
set 2, [hl] ; fixes some weirdness when saving fuji - PvK
ld hl, wd72d ld hl, wd72d
set 3, [hl] set 3, [hl]
ld a, $0 ld a, $0
ld [wPokemonTower7FCurScript], a ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
ret ret
PokemonTower7Script_60db6:
ld hl, CoordsData_60de3
ld a, [wSpriteIndex]
dec a
swap a
ld d, $0
ld e, a
add hl, de
ld a, [wYCoord]
ld b, a
ld a, [wXCoord]
ld c, a
.asm_60dcb
ld a, [hli]
cp b
jr nz, .asm_60dde
ld a, [hli]
cp c
jr nz, .asm_60ddf
ld a, [hli]
ld d, [hl]
ld e, a
ld a, [wSpriteIndex]
ldh [hSpriteIndex], a
jp MoveSprite
.asm_60dde
inc hl
.asm_60ddf
inc hl
inc hl
jr .asm_60dcb
CoordsData_60de3:
map_coord_movement 9, 12, MovementData_60e13
map_coord_movement 10, 11, MovementData_60e1b
map_coord_movement 11, 11, MovementData_60e22
map_coord_movement 12, 11, MovementData_60e22
map_coord_movement 12, 10, MovementData_60e28
map_coord_movement 11, 9, MovementData_60e30
map_coord_movement 10, 9, MovementData_60e22
map_coord_movement 9, 9, MovementData_60e22
map_coord_movement 9, 8, MovementData_60e37
map_coord_movement 10, 7, MovementData_60e22
map_coord_movement 11, 7, MovementData_60e22
map_coord_movement 12, 7, MovementData_60e22
MovementData_60e13:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_LEFT
db -1 ; end
MovementData_60e1b:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
MovementData_60e22:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
MovementData_60e28:
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
MovementData_60e30:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
MovementData_60e37:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
PokemonTower7F_TextPointers: PokemonTower7F_TextPointers:
dw PokemonTower7Text1 dw PokemonTower7Text1
dw PokemonTower7Text2 dw PokemonTower7Text2
dw PokemonTower7Text3 dw PokemonTower7Text3
dw PokemonTower7FujiText dw PokemonTower7Text4
dw PokemonTower7Text5
PokemonTower7TrainerHeaders: dw PokemonTower7Text6
def_trainers
PokemonTower7TrainerHeader0:
trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_0, 3, PokemonTower7BattleText1, PokemonTower7EndBattleText1, PokemonTower7AfterBattleText1
PokemonTower7TrainerHeader1:
trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_1, 3, PokemonTower7BattleText2, PokemonTower7EndBattleText2, PokemonTower7AfterBattleText2
PokemonTower7TrainerHeader2:
trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_2, 3, PokemonTower7BattleText3, PokemonTower7EndBattleText3, PokemonTower7AfterBattleText3
db -1 ; end
PokemonTower7Text1: PokemonTower7Text1:
PokemonTower7Text2:
text_end
PokemonTower7Text4:
text_far _PokemonTowerJessieJamesText1
text_asm text_asm
ld hl, PokemonTower7TrainerHeader0 ld c, 10
call TalkToTrainer call DelayFrames
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
ld a, $0
ld [wEmotionBubbleSpriteIndex], a
ld a, EXCLAMATION_BUBBLE
ld [wWhichEmotionBubble], a
predef EmotionBubble
ld c, 20
call DelayFrames
jp TextScriptEnd jp TextScriptEnd
PokemonTower7Text2: PokemonTower7Text5:
text_far _PokemonTowerJessieJamesText2
text_end
PokemonTower7JessieJamesEndBattleText:
text_far _PokemonTowerJessieJamesText3
text_end
PokemonTower7Text6:
text_far _PokemonTowerJessieJamesText4
text_asm text_asm
ld hl, PokemonTower7TrainerHeader1 ld c, 64
call TalkToTrainer call DelayFrames
jp TextScriptEnd jp TextScriptEnd
PokemonTower7Text3: PokemonTower7Text3:
text_asm text_asm
ld hl, PokemonTower7TrainerHeader2 ld hl, PokemonTower7Text_60f75
call TalkToTrainer
jp TextScriptEnd
PokemonTower7FujiText:
text_asm
ld hl, TowerRescueFujiText
call PrintText call PrintText
SetEvent EVENT_RESCUED_MR_FUJI SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2 SetEvent EVENT_RESCUED_MR_FUJI_2
@ -237,47 +312,10 @@ PokemonTower7FujiText:
ld a, HS_SAFFRON_CITY_F ld a, HS_SAFFRON_CITY_F
ld [wMissableObjectIndex], a ld [wMissableObjectIndex], a
predef ShowObject predef ShowObject
ld a, $4 ld a, $b
ld [wPokemonTower7FCurScript], a ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
jp TextScriptEnd jp TextScriptEnd
TowerRescueFujiText: PokemonTower7Text_60f75:
text_far _TowerRescueFujiText text_far _TowerRescueFujiText
text_end text_end
PokemonTower7BattleText1:
text_far _PokemonTower7BattleText1
text_end
PokemonTower7EndBattleText1:
text_far _PokemonTower7EndBattleText1
text_end
PokemonTower7AfterBattleText1:
text_far _PokemonTower7AfterBattleText1
text_end
PokemonTower7BattleText2:
text_far _PokemonTower7BattleText2
text_end
PokemonTower7EndBattleText2:
text_far _PokemonTower7EndBattleText2
text_end
PokemonTower7AfterBattleText2:
text_far _PokemonTower7AfterBattleText2
text_end
PokemonTower7BattleText3:
text_far _PokemonTower7BattleText3
text_end
PokemonTower7EndBattleText3:
text_far _PokemonTower7EndBattleText3
text_end
PokemonTower7AfterBattleText3:
text_far _PokemonTower7AfterBattleText3
text_end

View file

@ -1,3 +1,29 @@
_PokemonTowerJessieJamesText1::
text "Stop right there!@"
text_end
_PokemonTowerJessieJamesText2::
text "Grampa here wanted"
line "to complain, so"
cont "we're setting him"
cont "straight."
para "So render yourself"
line "invisible, or"
cont "prepare to fight!"
done
_PokemonTowerJessieJamesText3::
text "You"
line "will regret this!"
prompt
_PokemonTowerJessieJamesText4::
text "Looks like TEAM"
line "ROCKET's blasting"
cont "off again!@"
text_end
_TowerRescueFujiText:: _TowerRescueFujiText::
text "MR.FUJI: Heh? You" text "MR.FUJI: Heh? You"
line "came to save me?" line "came to save me?"
@ -23,56 +49,3 @@ _TowerRescueFujiText::
cont "HOUSE at the foot" cont "HOUSE at the foot"
cont "of this tower." cont "of this tower."
done done
_PokemonTower7BattleText1::
text "What do you want?"
line "Why are you here?"
done
_PokemonTower7EndBattleText1::
text "I give up!"
prompt
_PokemonTower7AfterBattleText1::
text "I'm not going to"
line "forget this!"
done
_PokemonTower7BattleText2::
text "This old guy came"
line "and complained"
cont "about us harming"
cont "useless #MON!"
para "We're talking it"
line "over as adults!"
done
_PokemonTower7EndBattleText2::
text "Please!"
line "No more!"
prompt
_PokemonTower7AfterBattleText2::
text "#MON are only"
line "good for making"
cont "money!"
para "Stay out of our"
line "business!"
done
_PokemonTower7BattleText3::
text "You're not saving"
line "anyone, kid!"
done
_PokemonTower7EndBattleText3::
text "Don't"
line "fight us ROCKETs!"
prompt
_PokemonTower7AfterBattleText3::
text "You're not getting"
line "away with this!"
done