summaryrefslogtreecommitdiff
path: root/scripts/PalletTown.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/PalletTown.asm')
-rwxr-xr-xscripts/PalletTown.asm170
1 files changed, 129 insertions, 41 deletions
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm
index 5c26fc55..28f93411 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
ldh [hJoyHeld], a
- ld a, PLAYER_DIR_DOWN
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, SFX_STOP_ALL_MUSIC
- call PlaySound
+ call StopAllMusic
ld a, BANK(Music_MeetProfOak)
ld c, a
ld a, MUSIC_MEET_PROF_OAK ; "oak appears" music
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
- ldh [hSpriteIndex], a
- ld a, SPRITE_FACING_UP
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, 1
+ ld a, 0
ld [wYCoord], a
ld a, 1
ldh [hNPCPlayerRelativePosPerspective], a
@@ -81,8 +95,6 @@ PalletTownScript2:
ld a, 1 ; oak
ldh [hSpriteIndex], 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 [wSpritePlayerStateData1FacingDirection], 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
ldh [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
+ ldh [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
+ ldh [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
ldh a, [hLoadedROMBank]
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:
text_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:
text_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:
text_far _OakWalksUpText
text_end
-PalletTownText2: ; girl
+PalletTownText_19002:
+ text_far _OakWhewText
+ text_end
+
+PalletTownText8: ; girl
+ text_far _OakGrassText
+ text_end
+
+PalletTownText2: ; fat man
text_far _PalletTownText2
text_end
-PalletTownText3: ; fat man
+PalletTownText3: ; sign by lab
text_far _PalletTownText3
text_end
-PalletTownText4: ; sign by lab
+PalletTownText4: ; sign by fence
text_far _PalletTownText4
text_end
-PalletTownText5: ; sign by fence
+PalletTownText5: ; sign by Red's house
text_far _PalletTownText5
text_end
-PalletTownText6: ; sign by Red's house
+PalletTownText6: ; sign by Blue's house
text_far _PalletTownText6
text_end
-PalletTownText7: ; sign by Blue's house
+PalletTownText7:
text_far _PalletTownText7
text_end