pokeyellow/scripts/viridiancity.asm

365 lines
6.3 KiB
NASM
Executable File

ViridianCityScript:
call EnableAutoTextBoxDrawing
ld hl, ViridianCityScriptPointers
ld a, [wViridianCityCurScript]
call JumpTable
ret
ViridianCityScriptPointers:
dw ViridianCityScript0
dw ViridianCityScript1
dw ViridianCityScript2
dw ViridianCityScript3
dw ViridianCityScript4
dw ViridianCityScript5
dw ViridianCityScript6
dw ViridianCityScript7
dw ViridianCityScript8
dw ViridianCityScript9
dw ViridianCityScript10
ViridianCityScript0:
call ViridianCityScript_1905b
call ViridianCityScript_190ab
ret
ViridianCityScript1:
call ViridianCityScript_19162
ViridianCityScript2:
call ViridianCityScript_1905b
ret
ViridianCityScript_1905b:
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
ret nz
ld a, [wObtainedBadges]
cp $7f ; all but Earthbadge
jr nz, .asm_1906e
SetEvent EVENT_VIRIDIAN_GYM_OPEN
ret
.asm_1906e
ld a, [wYCoord]
cp 8
ret nz
ld a, [wXCoord]
cp 32
ret nz
ld a, $f
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
xor a
ld [wPlayerFacingDirection], a
ld [wJoyIgnore], a
ld [hJoyHeld], a
ld a, $6
ld [wViridianCityCurScript], a
ret
ViridianCityScript6:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
ld a, $2
ld [wViridianCityCurScript], a
ret
ViridianCityScript_190ab:
ld a, [wYCoord]
cp 9
ret nz
ld a, [wXCoord]
cp 19
ret nz
ld a, $5
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [hJoyHeld], a
call ViridianCityScript_1914d
ld a, $5
ld [wViridianCityCurScript], a
ret
ViridianCityScript3:
call ViridianCityScript_190ef
call ViridianCityScript_190db
ResetEvent EVENT_02F
ld a, $4
ld [wViridianCityCurScript], a
ret
ViridianCityScript_190db:
xor a
ld [wListScrollOffset], a
ld a, BATTLE_TYPE_OLD_MAN
ld [wBattleType], a
ld a, 5
ld [wCurEnemyLVL], a
ld a, RATTATA
ld [wCurOpponent], a
ret
ViridianCityScript_190ef:
ld a, [wSpriteStateData1 + 3 * $10 + 4]
ld [$ffeb], a
ld a, [wSpriteStateData1 + 3 * $10 + 6]
ld [$ffec], a
ld a, [wSpriteStateData2 + 3 * $10 + 4]
ld [$ffed], a
ld a, [wSpriteStateData2 + 3 * $10 + 5]
ld [$ffee], a
ret
ViridianCityScript4:
call ViridianCityScript_1912a
call UpdateSprites
call Delay3
SetEvent EVENT_02E
xor a
ld [wJoyIgnore], a
ld a, $10
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wBattleType], a
ld [wJoyIgnore], a
ld a, $2
ld [wViridianCityCurScript], a
ret
ViridianCityScript_1912a:
ld a, [$ffeb]
ld [wSpriteStateData1 + 3 * $10 + 4], a
ld a, [$ffec]
ld [wSpriteStateData1 + 3 * $10 + 6], a
ld a, [$ffed]
ld [wSpriteStateData2 + 3 * $10 + 4], a
ld a, [$ffee]
ld [wSpriteStateData2 + 3 * $10 + 5], a
ret
ViridianCityScript5:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
ld a, $0
ld [wViridianCityCurScript], a
ret
ViridianCityScript_1914d:
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
xor a
ld [wPlayerFacingDirection], a
ld [wJoyIgnore], a
ret
ViridianCityScript_19162:
CheckEvent EVENT_02D
ret nz
ld a, [wYCoord]
cp 9
ret nz
ld a, [wXCoord]
cp 19
ret nz
ld a, $8
ld [hSpriteIndexOrTextID], a
ld a, SPRITE_FACING_RIGHT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, $8
ld [wPlayerFacingDirection], a
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
ld [wJoyIgnore], a
ret
ViridianCityScript7:
call ViridianCityScript_190ef
call ViridianCityScript_190db
SetEvent EVENT_02F
ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
ld [wJoyIgnore], a
ld a, $8
ld [wViridianCityCurScript], a
ret
ViridianCityScript8:
call ViridianCityScript_1912a
call UpdateSprites
call Delay3
SetEvent EVENT_02D
ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
ld [wJoyIgnore], a
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wBattleType], a
dec a
ld [wJoyIgnore], a
ld a, $9
ld [wViridianCityCurScript], a
ret
ViridianCityScript9:
ld de, ViridianCityOldManMovementData2
ld a, [wXCoord]
cp 19
jr z, .asm_191e4
callab Func_f1a01
ld de, ViridianCityOldManMovementData1
.asm_191e4
ld a, $8
ld [hSpriteIndexOrTextID], a
call MoveSprite
ld a, $a
ld [wViridianCityCurScript], a
ret
ViridianCityOldManMovementData1:
db NPC_MOVEMENT_RIGHT
ViridianCityOldManMovementData2:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db $ff
ViridianCityScript10:
ld a, [wd730]
bit 0, a
ret nz
ld a, $3
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
ld a, $2
ld [wViridianCityCurScript], a
ret
ViridianCityTextPointers:
dw ViridianCityText_0
dw ViridianCityText_1
dw ViridianCityText_2
dw ViridianCityText_3
dw ViridianCityText_4
dw ViridianCityText_5
dw ViridianCityText_6
dw ViridianCityText_7
dw ViridianCityText_8
dw ViridianCityText_9
dw ViridianCityText_10
dw MartSignText
dw PokeCenterSignText
dw ViridianCityText_11
dw ViridianCityText_12
dw ViridianCityText_13
ViridianCityText_0:
TX_ASM
callba Func_f18bb
jp TextScriptEnd
ViridianCityText_1:
TX_ASM
callba Func_f18c7
jp TextScriptEnd
ViridianCityText_2:
TX_ASM
callba Func_f18e9
jp TextScriptEnd
ViridianCityText_3:
TX_ASM
callba Func_f1911
jp TextScriptEnd
ViridianCityText_4:
TX_ASM
callba Func_f192c
jp TextScriptEnd
ViridianCityText_5:
TX_ASM
callba Func_f194a
jp TextScriptEnd
ViridianCityText_6:
TX_ASM
callba Func_f198e
jp TextScriptEnd
ViridianCityText_13:
TX_FAR _ViridianCityText_19219
db "@"
ViridianCityText_7:
TX_ASM
CheckEvent EVENT_02D
jr nz, .asm_192a6
ld hl, ViridianCityText_192af
call PrintText
ld c, 2
call DelayFrames
ld a, $7
ld [wViridianCityCurScript], a
jr .asm_192ac
.asm_192a6
ld hl, ViridianCityText_192b4
call PrintText
.asm_192ac
jp TextScriptEnd
ViridianCityText_192af:
TX_FAR _ViridianCityText_1920a
db "@"
ViridianCityText_192b4:
TX_FAR _OldManTextAfterBattle
db "@"
ViridianCityText_8:
TX_ASM
callba Func_f19c5
jp TextScriptEnd
ViridianCityText_9:
TX_ASM
callba Func_f19d1
jp TextScriptEnd
ViridianCityText_10:
TX_ASM
callba Func_f19dd
jp TextScriptEnd
ViridianCityText_11:
TX_ASM
callba Func_f19e9
jp TextScriptEnd
ViridianCityText_12:
TX_ASM
callba Func_f19f5
jp TextScriptEnd