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_6F_ITEM_1 ; 44 X
const HS_POKEMON_TOWER_6F_ITEM_2 ; 45 X
const HS_POKEMON_TOWER_7F_ROCKET_1 ; 46 X
const HS_POKEMON_TOWER_7F_ROCKET_2 ; 47 X
const HS_POKEMON_TOWER_7F_ROCKET_3 ; 48 X
const HS_POKEMON_TOWER_7F_JESSIE ; 46 X
const HS_POKEMON_TOWER_7F_JAMES ; 47 X
const HS_POKEMON_TOWER_7F_MR_FUJI ; 49
const HS_MR_FUJIS_HOUSE_MR_FUJI ; 4A
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, $05, SHOW ; HS_POKEMON_TOWER_6F_ITEM_2
PokemonTower7FHS:
db POKEMON_TOWER_7F, $01, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_1
db POKEMON_TOWER_7F, $02, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_2
db POKEMON_TOWER_7F, $03, SHOW ; HS_POKEMON_TOWER_7F_ROCKET_3
db POKEMON_TOWER_7F, $04, SHOW ; HS_POKEMON_TOWER_7F_MR_FUJI
db POKEMON_TOWER_7F, $01, HIDE ; jessie & james?
db POKEMON_TOWER_7F, $02, HIDE
db POKEMON_TOWER_7F, $03, SHOW
MrFujisHouseHS:
db MR_FUJIS_HOUSE, $05, HIDE ; HS_MR_FUJIS_HOUSE_MR_FUJI
CeladonMansionRoofHouseHS:

View file

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

View file

@ -1,69 +1,240 @@
PokemonTower7F_Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower7TrainerHeaders
ld de, PokemonTower7F_ScriptPointers
ld hl, PokemonTower7F_ScriptPointers
ld a, [wPokemonTower7FCurScript]
call ExecuteCurMapScriptInTable
ld [wPokemonTower7FCurScript], a
call CallFunctionInTable
ret
PokemonTower7Script_60d18:
PokemonTower7Script_60d01:
xor a
ld [wJoyIgnore], a
PokemonTower7Script_60d05:
ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower7F_ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw PokemonTower7Script0
dw PokemonTower7Script1
dw PokemonTower7Script2
dw PokemonTower7Script3
dw PokemonTower7Script4
dw PokemonTower7Script5
dw PokemonTower7Script6
dw PokemonTower7Script7
dw PokemonTower7Script8
dw PokemonTower7Script9
dw PokemonTower7Script10
dw PokemonTower7Script11
PokemonTower7Script2:
ld hl, wFlags_0xcd60
res 0, [hl]
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower7Script_60d18
call EndTrainerBattle
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
PokemonTower7Script0:
IF DEF(_DEBUG)
call DebugPressedOrHeldB
ret nz
ENDC
CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
call z, PokemonTower7Script_60d2a
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]
bit 0, a
ret nz
ld hl, wMissableObjectList
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
PokemonTower7Script3:
ld a, $0
ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
ld [wSprite01StateData1FacingDirection], 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
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 [wJoyIgnore], a
ld a, HS_POKEMON_TOWER_7F_MR_FUJI
@ -77,154 +248,58 @@ PokemonTower7Script4:
ld [wDestinationWarpID], a
ld a, LAVENDER_TOWN
ld [wLastMap], a
ld hl, wd736
set 2, [hl] ; fixes some weirdness when saving fuji - PvK
ld hl, wd72d
set 3, [hl]
ld a, $0
ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
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:
dw PokemonTower7Text1
dw PokemonTower7Text2
dw PokemonTower7Text3
dw PokemonTower7FujiText
PokemonTower7TrainerHeaders:
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
dw PokemonTower7Text4
dw PokemonTower7Text5
dw PokemonTower7Text6
PokemonTower7Text1:
PokemonTower7Text2:
text_end
PokemonTower7Text4:
text_far _PokemonTowerJessieJamesText1
text_asm
ld hl, PokemonTower7TrainerHeader0
call TalkToTrainer
ld c, 10
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
PokemonTower7Text2:
PokemonTower7Text5:
text_far _PokemonTowerJessieJamesText2
text_end
PokemonTower7JessieJamesEndBattleText:
text_far _PokemonTowerJessieJamesText3
text_end
PokemonTower7Text6:
text_far _PokemonTowerJessieJamesText4
text_asm
ld hl, PokemonTower7TrainerHeader1
call TalkToTrainer
ld c, 64
call DelayFrames
jp TextScriptEnd
PokemonTower7Text3:
text_asm
ld hl, PokemonTower7TrainerHeader2
call TalkToTrainer
jp TextScriptEnd
PokemonTower7FujiText:
text_asm
ld hl, TowerRescueFujiText
ld hl, PokemonTower7Text_60f75
call PrintText
SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2
@ -237,47 +312,10 @@ PokemonTower7FujiText:
ld a, HS_SAFFRON_CITY_F
ld [wMissableObjectIndex], a
predef ShowObject
ld a, $4
ld a, $b
ld [wPokemonTower7FCurScript], a
ld [wCurMapScript], a
jp TextScriptEnd
TowerRescueFujiText:
PokemonTower7Text_60f75:
text_far _TowerRescueFujiText
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::
text "MR.FUJI: Heh? You"
line "came to save me?"
@ -23,56 +49,3 @@ _TowerRescueFujiText::
cont "HOUSE at the foot"
cont "of this tower."
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