summaryrefslogtreecommitdiff
path: root/scripts/ViridianCity.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/ViridianCity.asm')
-rwxr-xr-xscripts/ViridianCity.asm363
1 files changed, 363 insertions, 0 deletions
diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm
new file mode 100755
index 00000000..6dc68d4f
--- /dev/null
+++ b/scripts/ViridianCity.asm
@@ -0,0 +1,363 @@
+ViridianCity_Script:
+ call EnableAutoTextBoxDrawing
+ ld hl, ViridianCity_ScriptPointers
+ ld a, [wViridianCityCurScript]
+ call CallFunctionInTable
+ ret
+
+ViridianCity_ScriptPointers:
+ 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 %01111111
+ jr nz, .gymClosed
+ SetEvent EVENT_VIRIDIAN_GYM_OPEN
+ ret
+.gymClosed
+ 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 [wSpritePlayerStateData1FacingDirection], 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 [wSpritePlayerStateData1FacingDirection], 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 [wSpritePlayerStateData1FacingDirection], 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
+
+ViridianCity_TextPointers:
+ 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