diff options
Diffstat (limited to 'scripts/PalletTown.asm')
-rwxr-xr-x | scripts/PalletTown.asm | 172 |
1 files changed, 130 insertions, 42 deletions
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm index 5ad7d40f..fbdee4bc 100755 --- a/scripts/PalletTown.asm +++ b/scripts/PalletTown.asm @@ -16,25 +16,33 @@ PalletTown_ScriptPointers: dw PalletTownScript4 dw PalletTownScript5 dw PalletTownScript6 + dw PalletTownScript7 + dw PalletTownScript8 + dw PalletTownScript9 PalletTownScript0: CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB ret nz ld a, [wYCoord] - cp 1 ; is player near north exit? + cp 0 ; is player at north exit? ret nz + ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, [wXCoord] + cp 10 + jr z, .asm_18e40 + SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN +.asm_18e40 xor a ld [hJoyHeld], a - ld a, PLAYER_DIR_DOWN + ld a, $ff + ld [wJoyIgnore], a + ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, $FF - call PlaySound ; stop music + call StopAllMusic ld a, BANK(Music_MeetProfOak) ld c, a - ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music + ld a, MUSIC_MEET_PROF_OAK call PlayMusic - ld a, $FC - ld [wJoyIgnore], a SetEvent EVENT_OAK_APPEARED_IN_PALLET ; trigger the next script @@ -43,6 +51,8 @@ PalletTownScript0: ret PalletTownScript1: + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a xor a ld [wcf0d], a ld a, 1 @@ -50,23 +60,27 @@ PalletTownScript1: call DisplayTextID ld a, $FF ld [wJoyIgnore], a + ld hl, wSpriteStateData2 + 1 * $10 + 4 + ld a, $8 + ld [hli], a + ld a, $e + ld [hl], a ld a, HS_PALLET_TOWN_OAK ld [wMissableObjectIndex], a predef ShowObject ; trigger the next script + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, 2 ld [wPalletTownCurScript], a ret PalletTownScript2: - ld a, 1 - ld [H_SPRITEINDEX], a - ld a, SPRITE_FACING_UP - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, 1 + ld a, 0 ld [wYCoord], a ld a, 1 ld [hNPCPlayerRelativePosPerspective], a @@ -81,8 +95,6 @@ PalletTownScript2: ld a, 1 ; oak ld [H_SPRITEINDEX], a call MoveSprite - ld a, $FF - ld [wJoyIgnore], a ; trigger the next script ld a, 3 @@ -93,47 +105,106 @@ PalletTownScript3: ld a, [wd730] bit 0, a ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpriteStateData1 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, 1 ld [wcf0d], a - ld a, $FC - ld [wJoyIgnore], a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, 1 ld [hSpriteIndexOrTextID], a call DisplayTextID -; set up movement script that causes the player to follow Oak to his lab + ; oak faces the horizontally adjacent patch of grass to face pikachu ld a, $FF ld [wJoyIgnore], a - ld a, 1 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, SPRITE_FACING_RIGHT + jr z, .asm_18f01 + ld a, SPRITE_FACING_LEFT +.asm_18f01 + ld [wSpriteStateData1 + 1 * $10 + 9], a + + ; trigger the next script + ld a, 4 + ld [wPalletTownCurScript], a + ret + +PalletTownScript4: + ; start the pikachu battle + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + xor a + ld [wListScrollOffset], a + ld a, BATTLE_TYPE_PIKACHU + ld [wBattleType], a + ld a, PIKACHU + ld [wCurOpponent], a + ld a, 5 + ld [wCurEnemyLVL], a + + ; trigger the next script + ld a, 5 + ld [wPalletTownCurScript], a + ret + +PalletTownScript5: + ld a, $2 + ld [wcf0d], a + ld a, $1 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $ff + ld [wJoyIgnore], a + + ; trigger the next script + ld a, 6 + ld [wPalletTownCurScript], a + ret + +PalletTownScript6: + xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $1 ld [wSpriteIndex], a xor a ld [wNPCMovementScriptFunctionNum], a - ld a, 1 + ld a, $1 ld [wNPCMovementScriptPointerTableNum], a ld a, [H_LOADEDROMBANK] ld [wNPCMovementScriptBank], a ; trigger the next script - ld a, 4 + ld a, 7 ld [wPalletTownCurScript], a ret -PalletTownScript4: +PalletTownScript7: ld a, [wNPCMovementScriptPointerTableNum] - and a ; is the movement script over? + and a ret nz ; trigger the next script - ld a, 5 + ld a, 8 ld [wPalletTownCurScript], a ret -PalletTownScript5: +PalletTownScript8: CheckEvent EVENT_DAISY_WALKING - jr nz, .next - CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1 - jr nz, .next + jr nz, .asm_18f9e + and $3 ; (EVENT_GOT_TOWN_MAP | EVENT_ENTERED_BLUES_HOUSE) + cp $3 + jr nz, .asm_18f9e SetEvent EVENT_DAISY_WALKING ld a, HS_DAISY_SITTING ld [wMissableObjectIndex], a @@ -141,11 +212,12 @@ PalletTownScript5: ld a, HS_DAISY_WALKING ld [wMissableObjectIndex], a predef_jump ShowObject -.next + +.asm_18f9e CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK ret z SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2 -PalletTownScript6: +PalletTownScript9: ret PalletTown_TextPointers: @@ -156,6 +228,7 @@ PalletTown_TextPointers: dw PalletTownText5 dw PalletTownText6 dw PalletTownText7 + dw PalletTownText8 PalletTownText1: TX_ASM @@ -167,7 +240,13 @@ PalletTownText1: ld hl, OakAppearsText jr .done .next + dec a + jr nz, .asm_18fd3 ld hl, OakWalksUpText + jr .done + +.asm_18fd3 + ld hl, PalletTownText_19002 .done call PrintText jp TextScriptEnd @@ -177,38 +256,47 @@ OakAppearsText: TX_ASM ld c, 10 call DelayFrames - xor a - ld [wEmotionBubbleSpriteIndex], a ; player's sprite - ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE - predef EmotionBubble ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a + ld a, 0 + ld [wEmotionBubbleSpriteIndex], a ; player's sprite + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble jp TextScriptEnd OakWalksUpText: TX_FAR _OakWalksUpText db "@" -PalletTownText2: ; girl +PalletTownText_19002: + TX_FAR _OakWhewText + db "@" + +PalletTownText8: ; girl + TX_FAR _OakGrassText + db "@" + +PalletTownText2: ; fat man TX_FAR _PalletTownText2 db "@" -PalletTownText3: ; fat man +PalletTownText3: ; sign by lab TX_FAR _PalletTownText3 db "@" -PalletTownText4: ; sign by lab +PalletTownText4: ; sign by fence TX_FAR _PalletTownText4 db "@" -PalletTownText5: ; sign by fence +PalletTownText5: ; sign by Red’s house TX_FAR _PalletTownText5 db "@" -PalletTownText6: ; sign by Red’s house +PalletTownText6: ; sign by Blue’s house TX_FAR _PalletTownText6 db "@" -PalletTownText7: ; sign by Blue’s house +PalletTownText7: TX_FAR _PalletTownText7 db "@" |