summaryrefslogtreecommitdiff
path: root/scripts/PalletTown.asm
diff options
context:
space:
mode:
authordannye <33dannye@gmail.com>2020-05-20 19:40:33 -0500
committerdannye <33dannye@gmail.com>2020-05-20 20:02:53 -0500
commit10f9559eab8c93b94abb8ae8d1083704ad4e169a (patch)
tree7dbe7b152dde8a6e9b56664b5b8cdfc0d6be1253 /scripts/PalletTown.asm
parentb8954732a3eaa3a784a6e3eaaa68977a9ccd9816 (diff)
Sync with pokered
Diffstat (limited to 'scripts/PalletTown.asm')
-rwxr-xr-xscripts/PalletTown.asm302
1 files changed, 302 insertions, 0 deletions
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm
new file mode 100755
index 00000000..fbdee4bc
--- /dev/null
+++ b/scripts/PalletTown.asm
@@ -0,0 +1,302 @@
+PalletTown_Script:
+ CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
+ jr z, .next
+ SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
+.next
+ call EnableAutoTextBoxDrawing
+ ld hl, PalletTown_ScriptPointers
+ ld a, [wPalletTownCurScript]
+ jp CallFunctionInTable
+
+PalletTown_ScriptPointers:
+ dw PalletTownScript0
+ dw PalletTownScript1
+ dw PalletTownScript2
+ dw PalletTownScript3
+ 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 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, $ff
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ call StopAllMusic
+ ld a, BANK(Music_MeetProfOak)
+ ld c, a
+ ld a, MUSIC_MEET_PROF_OAK
+ call PlayMusic
+ SetEvent EVENT_OAK_APPEARED_IN_PALLET
+
+ ; trigger the next script
+ ld a, 1
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript1:
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ xor a
+ ld [wcf0d], a
+ ld a, 1
+ ld [hSpriteIndexOrTextID], a
+ 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:
+ call Delay3
+ ld a, 0
+ ld [wYCoord], a
+ ld a, 1
+ ld [hNPCPlayerRelativePosPerspective], a
+ ld a, 1
+ swap a
+ ld [hNPCSpriteOffset], a
+ predef CalcPositionOfPlayerRelativeToNPC
+ ld hl, hNPCPlayerYDistance
+ dec [hl]
+ predef FindPathToPlayer ; load Oak’s movement into wNPCMovementDirections2
+ ld de, wNPCMovementDirections2
+ ld a, 1 ; oak
+ ld [H_SPRITEINDEX], a
+ call MoveSprite
+
+ ; trigger the next script
+ ld a, 3
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript3:
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, 1
+ ld [wcf0d], 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
+ ; oak faces the horizontally adjacent patch of grass to face pikachu
+ ld a, $FF
+ ld [wJoyIgnore], a
+ 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 [wNPCMovementScriptPointerTableNum], a
+ ld a, [H_LOADEDROMBANK]
+ ld [wNPCMovementScriptBank], a
+
+ ; trigger the next script
+ ld a, 7
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript7:
+ ld a, [wNPCMovementScriptPointerTableNum]
+ and a
+ ret nz
+
+ ; trigger the next script
+ ld a, 8
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript8:
+ CheckEvent EVENT_DAISY_WALKING
+ 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
+ predef HideObject
+ ld a, HS_DAISY_WALKING
+ ld [wMissableObjectIndex], a
+ predef_jump ShowObject
+
+.asm_18f9e
+ CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
+ ret z
+ SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
+PalletTownScript9:
+ ret
+
+PalletTown_TextPointers:
+ dw PalletTownText1
+ dw PalletTownText2
+ dw PalletTownText3
+ dw PalletTownText4
+ dw PalletTownText5
+ dw PalletTownText6
+ dw PalletTownText7
+ dw PalletTownText8
+
+PalletTownText1:
+ TX_ASM
+ ld a, [wcf0d]
+ and a
+ jr nz, .next
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ 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
+
+OakAppearsText:
+ TX_FAR _OakAppearsText
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ 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 "@"
+
+PalletTownText_19002:
+ TX_FAR _OakWhewText
+ db "@"
+
+PalletTownText8: ; girl
+ TX_FAR _OakGrassText
+ db "@"
+
+PalletTownText2: ; fat man
+ TX_FAR _PalletTownText2
+ db "@"
+
+PalletTownText3: ; sign by lab
+ TX_FAR _PalletTownText3
+ db "@"
+
+PalletTownText4: ; sign by fence
+ TX_FAR _PalletTownText4
+ db "@"
+
+PalletTownText5: ; sign by Red’s house
+ TX_FAR _PalletTownText5
+ db "@"
+
+PalletTownText6: ; sign by Blue’s house
+ TX_FAR _PalletTownText6
+ db "@"
+
+PalletTownText7:
+ TX_FAR _PalletTownText7
+ db "@"