diff options
Diffstat (limited to 'scripts/MtMoonB2F.asm')
-rwxr-xr-x | scripts/MtMoonB2F.asm | 480 |
1 files changed, 377 insertions, 103 deletions
diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm index 9faf038a..a02d7d42 100755 --- a/scripts/MtMoonB2F.asm +++ b/scripts/MtMoonB2F.asm @@ -37,13 +37,23 @@ CoordsData_49d37: dbmapcoord 14, 8 db -1 ; end -MtMoon3Script_49d58: +MtMoon3Script_49cd7: + CheckAndResetEvent EVENT_57E + call nz, MtMoon3Script_49cec xor a ld [wJoyIgnore], a +MtMoon3Script_49ce5: ld [wMtMoonB2FCurScript], a ld [wCurMapScript], a ret +MtMoon3Script_49cec: + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + ret + MtMoonB2F_ScriptPointers: dw MtMoon3Script0 dw DisplayEnemyTrainerTextAndStartBattle @@ -51,23 +61,41 @@ MtMoonB2F_ScriptPointers: dw MtMoon3Script3 dw MtMoon3Script4 dw MtMoon3Script5 + dw MtMoon3Script6 + dw MtMoon3Script7 + dw MtMoon3Script8 + dw MtMoon3Script9 + dw MtMoon3Script10 + dw MtMoon3Script11 + dw MtMoon3Script12 + dw MtMoon3Script13 + dw MtMoon3Script14 + dw MtMoon3Script15 MtMoon3Script0: + CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + call z, MtMoon3Script_49d28 + CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + call z, MtMoon3Script_49e15 + ret + +MtMoon3Script_49d28: CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wYCoord] cp 8 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wXCoord] cp 13 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b xor a ldh [hJoyHeld], a ld a, $1 ldh [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoon3Script_49d91: +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -75,55 +103,91 @@ MtMoon3Script_49d91: MtMoon3Script3: ld a, [wIsInBattle] cp $ff - jp z, MtMoon3Script_49d58 + jp z, MtMoon3Script_49cd7 call UpdateSprites call Delay3 SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret MtMoon3Script4: ld a, $1 ldh [hSpriteIndex], a call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 + call ArePlayerCoordsInArray + jr c, .asm_49db0 + ld hl, CoordsData_49dd5 call ArePlayerCoordsInArray - jr c, .asm_49dd7 - ld hl, CoordsData_49df1 + jr c, .asm_49d9b + ld hl, CoordsData_49dce call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MovementData_49df9 - jr .asm_49dda -.asm_49dd7 - ld de, MovementData_49df8 -.asm_49dda + jr c, .asm_49da3 + jp CheckFightingMapTrainers + +.asm_49d9b + ld b, SPRITE_FACING_LEFT + ld hl, PikachuMovementData_49dd8 + call MtMoon3Script_4a325 +.asm_49da3 + ld de, MovementData_49ddd + jr .asm_49db3 + +.asm_49da8 + ld b, SPRITE_FACING_RIGHT + ld hl, PikachuMovementData_49dca + call MtMoon3Script_4a325 +.asm_49db0 + ld de, MovementData_49ddc +.asm_49db3 ld a, $1 ldh [hSpriteIndex], a call MoveSprite ld a, $5 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret -CoordsData_49dea: +CoordsData_49dc0: dbmapcoord 12, 7 dbmapcoord 11, 6 dbmapcoord 12, 5 db -1 ; end -CoordsData_49df1: +CoordsData_49dc7: + dbmapcoord 12, 7 + db -1 ; end + +PikachuMovementData_49dca: + db $00 + db $35 + db $33 + db $3f + +CoordsData_49dce: dbmapcoord 13, 7 dbmapcoord 14, 6 dbmapcoord 14, 5 db -1 ; end -MovementData_49df8: +CoordsData_49dd5: + dbmapcoord 13, 7 + db -1 ; end + +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: db NPC_MOVEMENT_RIGHT -MovementData_49df9: +MovementData_49ddd: db NPC_MOVEMENT_UP db -1 ; end @@ -135,23 +199,213 @@ MtMoon3Script5: ld [wJoyIgnore], a ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld a, $a + ld a, $b ldh [hSpriteIndexOrTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL + CheckEvent EVENT_GOT_HELIX_FOSSIL jr z, .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_2 + ld a, HS_MT_MOON_B2F_FOSSIL_1 jr .asm_49e1f .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_1 + ld a, HS_MT_MOON_B2F_FOSSIL_2 .asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49e15: + ld a, [wXCoord] + cp $3 + ret nz + ld a, [wYCoord] + cp $5 + ret nz + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ldh [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f84 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f84 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $c + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call MtMoon3Script_49ce5 + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoon3Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ldh [hSpriteIndex], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $7 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script7: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script8: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +MtMoon3Script9: + ld a, $6 + ldh [hSpriteIndex], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script10: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script11: + ld a, $2 + ld [wSpriteStateData1 + 6 * $10 + 1], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 6 * $10 + 9], a + call Delay3 + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $d + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +MtMoon3Script12: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3JessieJamesEndBattleText + ld de, MtMoon3JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2a + ld [wTrainerNo], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_57E + ld a, $d + call MtMoon3Script_49ce5 + ret + +MtMoon3Script13: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoon3Script_49cd7 + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld [wSpriteStateData1 + 6 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld [wSpriteStateData1 + 6 * $10 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $e + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $e + call MtMoon3Script_49ce5 + ret + +MtMoon3Script14: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $f + call MtMoon3Script_49ce5 + ret + +MtMoon3Script15: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + ResetEventReuseHL EVENT_57E + ld a, $0 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49f84: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoon3Script_49f93: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoonB2F_TextPointers: @@ -162,185 +416,204 @@ MtMoonB2F_TextPointers: dw MtMoon3Text5 dw MtMoon3Text6 dw MtMoon3Text7 + dw MtMoon3Text8 dw PickUpItemText dw PickUpItemText - dw MtMoon3Text_49f99 + dw MtMoon3Text11 + dw MtMoon3Text12 + dw MtMoon3Text13 + dw MtMoon3Text14 MtMoon3TrainerHeader0: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoon3BattleText2, MtMoon3EndBattleText2, MtMoon3AfterBattleText2 -MtMoon3TrainerHeader1: trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoon3BattleText3, MtMoon3EndBattleText3, MtMoon3AfterBattleText3 -MtMoon3TrainerHeader2: +MtMoon3TrainerHeader1: trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoon3BattleText4, MtMoon3EndBattleText4, MtMoon3AfterBattleText4 -MtMoon3TrainerHeader3: +MtMoon3TrainerHeader2: trainer EVENT_BEAT_MT_MOON_3_TRAINER_3, 4, MtMoon3BattleText5, MtMoon3EndBattleText5, MtMoon3AfterBattleText5 db -1 ; end +MtMoon3Text2: +MtMoon3Text6: + text_end + +MtMoon3Text12: + text_far _MtMoonJessieJamesText1 + text_asm + 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 + +MtMoon3Text13: + text_far _MtMoonJessieJamesText2 + text_end + +MtMoon3JessieJamesEndBattleText: + text_far _MtMoonJessieJamesText3 + text_end + +MtMoon3Text14: + text_far _MtMoonJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + MtMoon3Text1: text_asm CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jr z, .asm_49e8d - and $c0 - jr nz, .asm_49eb8 - ld hl, MtMoon3Text_49f8f + jr z, .asm_4a02f + ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + and (1 << (EVENT_GOT_DOME_FOSSIL % 8)) | (1 << (EVENT_GOT_HELIX_FOSSIL % 8)) + jr nz, .asm_4a057 + ld hl, MtMoon3Text_4a116 call PrintText - jr .asm_49ebe -.asm_49e8d - ld hl, MtMoon3Text_49f85 + jr .asm_4a05d + +.asm_4a02f + ld hl, MtMoon3Text_4a10c call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, MtMoon3Text_49f8a - ld de, MtMoon3Text_49f8a + ld hl, MtMoon3SuperNerdEndBattleText + ld de, MtMoon3SuperNerdEndBattleText call SaveEndBattleTextPointers ldh a, [hSpriteIndex] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ld a, $3 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a - jr .asm_49ebe -.asm_49eb8 - ld hl, MtMoon3Text_49f94 + call MtMoon3Script_49ce5 + jr .asm_4a05d + +.asm_4a057 + ld hl, MtMoon3Text_4a11b call PrintText -.asm_49ebe +.asm_4a05d jp TextScriptEnd -MtMoon3Text2: +MtMoon3Text3: text_asm ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text3: +MtMoon3Text4: text_asm ld hl, MtMoon3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text4: - text_asm - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd MtMoon3Text5: text_asm - ld hl, MtMoon3TrainerHeader3 + ld hl, MtMoon3TrainerHeader2 +MtMoon3TalkToTrainer: call TalkToTrainer jp TextScriptEnd -MtMoon3Text6: +MtMoon3Text7: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f24 + ld hl, MtMoon3Text_4a0ae call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f21 + jr nz, .asm_4a0ab lb bc, DOME_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_1 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f21 + call MtMoon3Script_49ce5 +.asm_4a0ab jp TextScriptEnd -MtMoon3Text_49f24: +MtMoon3Text_4a0ae: text_far _MtMoon3Text_49f24 text_end -MtMoon3Text7: +MtMoon3Text8: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f64 + ld hl, MtMoon3Text_4a0eb call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f61 + jr nz, .asm_4a0e8 lb bc, HELIX_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_2 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f61 + call MtMoon3Script_49ce5 +.asm_4a0e8 jp TextScriptEnd -MtMoon3Text_49f64: +MtMoon3Text_4a0eb: text_far _MtMoon3Text_49f64 text_end -MtMoon3Script_49f69: - ld hl, MtMoon3Text_49f6f +MtMoon3Script_4a0f0: + ld hl, MtMoon3Text_4a0f6 jp PrintText -MtMoon3Text_49f6f: +MtMoon3Text_4a0f6: text_far _MtMoon3Text_49f6f sound_get_key_item text_waitbutton text_end -MtMoon3Script_49f76: - ld hl, MtMoon3Text_49f7f +MtMoon3Script_4a0fd: + ld hl, MtMoon3Text_4a106 call PrintText jp TextScriptEnd -MtMoon3Text_49f7f: +MtMoon3Text_4a106: text_far _MtMoon3Text_49f7f text_waitbutton text_end -MtMoon3Text_49f85: +MtMoon3Text_4a10c: text_far _MtMoon3Text_49f85 text_end -MtMoon3Text_49f8a: +MtMoon3SuperNerdEndBattleText: text_far _MtMoon3Text_49f8a text_end -MtMoon3Text_49f8f: +MtMoon3Text_4a116: text_far _MtMoon3Text_49f8f text_end -MtMoon3Text_49f94: +MtMoon3Text_4a11b: text_far _MtMoon3Text_49f94 text_end -MtMoon3Text_49f99: +MtMoon3Text11: text_far _MtMoon3Text_49f99 sound_get_key_item text_end -MtMoon3BattleText2: - text_far _MtMoon3BattleText2 - text_end - -MtMoon3EndBattleText2: - text_far _MtMoon3EndBattleText2 - text_end - -MtMoon3AfterBattleText2: - text_far _MtMoon3AfterBattleText2 - text_end - MtMoon3BattleText3: text_far _MtMoon3BattleText3 text_end @@ -376,3 +649,4 @@ MtMoon3EndBattleText5: MtMoon3AfterBattleText5: text_far _MtMoon3AfterBattleText5 text_end + |