diff --git a/constants/hide_show_constants.asm b/constants/hide_show_constants.asm index ea19e6b6..4e07e8c6 100644 --- a/constants/hide_show_constants.asm +++ b/constants/hide_show_constants.asm @@ -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 diff --git a/data/maps/hide_show_data.asm b/data/maps/hide_show_data.asm index 01b486fc..1ffcfb72 100644 --- a/data/maps/hide_show_data.asm +++ b/data/maps/hide_show_data.asm @@ -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: diff --git a/data/maps/objects/PokemonTower7F.asm b/data/maps/objects/PokemonTower7F.asm index 328588ed..6125f870 100644 --- a/data/maps/objects/PokemonTower7F.asm +++ b/data/maps/objects/PokemonTower7F.asm @@ -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 diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm index dc4ee36c..1eadb68d 100644 --- a/scripts/PokemonTower7F.asm +++ b/scripts/PokemonTower7F.asm @@ -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 diff --git a/text/PokemonTower7F.asm b/text/PokemonTower7F.asm index 704a71eb..86f05445 100644 --- a/text/PokemonTower7F.asm +++ b/text/PokemonTower7F.asm @@ -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