mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-12 22:11:29 -05:00
303 lines
6.0 KiB
NASM
Executable File
303 lines
6.0 KiB
NASM
Executable File
PalletTownScript: ; 18e5b (6:4e5b)
|
||
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
|
||
jr z, .next
|
||
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
|
||
.next
|
||
call EnableAutoTextBoxDrawing
|
||
ld hl, PalletTownScriptPointers
|
||
ld a, [W_PALLETTOWNCURSCRIPT]
|
||
jp JumpTable
|
||
|
||
PalletTownScriptPointers: ; 18e73 (6:4e73)
|
||
dw PalletTownScript0
|
||
dw PalletTownScript1
|
||
dw PalletTownScript2
|
||
dw PalletTownScript3
|
||
dw PalletTownScript4
|
||
dw PalletTownScript5
|
||
dw PalletTownScript6
|
||
dw PalletTownScript7
|
||
dw PalletTownScript8
|
||
dw PalletTownScript9
|
||
|
||
PalletTownScript0: ; 18e81 (6:4e81)
|
||
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 ; “oak appears” music
|
||
call PlayMusic
|
||
SetEvent EVENT_OAK_APPEARED_IN_PALLET
|
||
|
||
; trigger the next script
|
||
ld a, 1
|
||
ld [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript1: ; 18eb2 (6:4eb2)
|
||
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 [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript2: ; 18ed2 (6:4ed2)
|
||
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 [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript3: ; 18f12 (6:4f12)
|
||
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 [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript4: ; 18f4b (6:4f4b)
|
||
; start the pikachu battle
|
||
ld a, $FF ^ (A_BUTTON | B_BUTTON)
|
||
ld [wJoyIgnore], a
|
||
xor a
|
||
ld [wListScrollOffset], a
|
||
ld a, STARTER_PIKACHU_BATTLE
|
||
ld [wBattleType], a
|
||
ld a, PIKACHU
|
||
ld [wCurOpponent], a
|
||
ld a, 5
|
||
ld [wCurEnemyLVL], a
|
||
|
||
; trigger the next script
|
||
ld a, 5
|
||
ld [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript5: ; 18f56 (6:4f56)
|
||
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 [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript6: ; 18f87 (6:4f87)
|
||
xor a
|
||
ld [wSpriteStateData1 + 9], 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 [W_PALLETTOWNCURSCRIPT], a
|
||
ret
|
||
|
||
PalletTownScript7:
|
||
ld a, [wNPCMovementScriptPointerTableNum]
|
||
and a
|
||
ret nz
|
||
|
||
; trigger the next script
|
||
ld a, 8
|
||
ld [W_PALLETTOWNCURSCRIPT], 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
|
||
|
||
PalletTownTextPointers: ; 18f88 (6:4f88)
|
||
dw PalletTownText1
|
||
dw PalletTownText2
|
||
dw PalletTownText3
|
||
dw PalletTownText4
|
||
dw PalletTownText5
|
||
dw PalletTownText6
|
||
dw PalletTownText7
|
||
dw PalletTownText8
|
||
|
||
PalletTownText1: ; 18f96 (6:4f96)
|
||
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: ; 18fb0 (6:4fb0)
|
||
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, 0
|
||
ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
|
||
predef EmotionBubble
|
||
jp TextScriptEnd
|
||
|
||
OakWalksUpText: ; 18fce (6:4fce)
|
||
TX_FAR _OakWalksUpText
|
||
db "@"
|
||
|
||
PalletTownText_19002:
|
||
TX_FAR _OakWhewText
|
||
db "@"
|
||
|
||
PalletTownText8: ; 0x18fd3 girl
|
||
TX_FAR _OakGrassText
|
||
db "@"
|
||
|
||
PalletTownText2: ; 0x18fd8 fat man
|
||
TX_FAR _PalletTownText2
|
||
db "@"
|
||
|
||
PalletTownText3: ; 0x18fdd sign by lab
|
||
TX_FAR _PalletTownText3
|
||
db "@"
|
||
|
||
PalletTownText4: ; 0x18fe2 sign by fence
|
||
TX_FAR _PalletTownText4
|
||
db "@"
|
||
|
||
PalletTownText5: ; 0x18fe7 sign by Red’s house
|
||
TX_FAR _PalletTownText5
|
||
db "@"
|
||
|
||
PalletTownText6: ; 0x18fec sign by Blue’s house
|
||
TX_FAR _PalletTownText6
|
||
db "@"
|
||
|
||
PalletTownText7:
|
||
TX_FAR _PalletTownText7
|
||
db "@"
|