summaryrefslogtreecommitdiff
path: root/scripts/viridiancity.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/viridiancity.asm')
-rwxr-xr-xscripts/viridiancity.asm452
1 files changed, 245 insertions, 207 deletions
diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm
index cd629d7e..5aa1dbbc 100755
--- a/scripts/viridiancity.asm
+++ b/scripts/viridiancity.asm
@@ -2,325 +2,363 @@ ViridianCityScript:
call EnableAutoTextBoxDrawing
ld hl, ViridianCityScriptPointers
ld a, [wViridianCityCurScript]
- jp CallFunctionInTable
+ 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_1900b
- jp ViridianCityScript_1903d
+ call ViridianCityScript_1905b
+ call ViridianCityScript_190ab
+ ret
+
+ViridianCityScript1:
+ call ViridianCityScript_19162
+ViridianCityScript2:
+ call ViridianCityScript_1905b
+ ret
-ViridianCityScript_1900b:
+ViridianCityScript_1905b:
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
ret nz
ld a, [wObtainedBadges]
- cp %01111111
- jr nz, .asm_1901e
+ cp $7f ; all but Earthbadge
+ jr nz, .asm_1906e
SetEvent EVENT_VIRIDIAN_GYM_OPEN
ret
-.asm_1901e
+
+.asm_1906e
ld a, [wYCoord]
- cp $8
+ cp 8
ret nz
ld a, [wXCoord]
- cp $20
+ cp 32
ret nz
- ld a, $e
+ 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
- call ViridianCityScript_190cf
- ld a, $3
+ ld a, $6
ld [wViridianCityCurScript], a
ret
-ViridianCityScript_1903d:
- CheckEvent EVENT_GOT_POKEDEX
+ViridianCityScript6:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
ret nz
+ call Delay3
+ ld a, $2
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript_190ab:
ld a, [wYCoord]
- cp $9
+ cp 9
ret nz
ld a, [wXCoord]
- cp $13
+ cp 19
ret nz
ld a, $5
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ call ViridianCityScript_1914d
+ ld a, $5
ld [wViridianCityCurScript], a
ret
-ViridianCityScript1:
- ld a, [wSpriteStateData1 + $34]
- ld [$ffeb], a
- ld a, [wSpriteStateData1 + $36]
- ld [$ffec], a
- ld a, [wSpriteStateData2 + $34]
- ld [$ffed], a
- ld a, [wSpriteStateData2 + $35]
- ld [$ffee], a
+ViridianCityScript3:
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ ResetEvent EVENT_02F
+ ld a, $4
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript_190db:
xor a
ld [wListScrollOffset], a
-
- ; set up battle for Old Man
ld a, BATTLE_TYPE_OLD_MAN
ld [wBattleType], a
ld a, 5
ld [wCurEnemyLVL], a
- ld a, WEEDLE
+ ld a, RATTATA
ld [wCurOpponent], a
- ld a, $2
- ld [wViridianCityCurScript], a
ret
-ViridianCityScript2:
- ld a, [$ffeb]
- ld [wSpriteStateData1 + $34], a
- ld a, [$ffec]
- ld [wSpriteStateData1 + $36], a
- ld a, [$ffed]
- ld [wSpriteStateData2 + $34], a
- ld a, [$ffee]
- ld [wSpriteStateData2 + $35], a
+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, $f
+ ld a, $10
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wBattleType], a
ld [wJoyIgnore], a
- ld a, $0
+ ld a, $2
ld [wViridianCityCurScript], a
ret
-ViridianCityScript3:
+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 a, $0
ld [wViridianCityCurScript], a
ret
-ViridianCityScript_190cf:
+ViridianCityScript_1914d:
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
xor a
- ld [wSpriteStateData1 + 9], 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 ViridianCityText1
- dw ViridianCityText2
- dw ViridianCityText3
- dw ViridianCityText4
- dw ViridianCityText5
- dw ViridianCityText6
- dw ViridianCityText7
- dw ViridianCityText8
- dw ViridianCityText9
- dw ViridianCityText10
+ 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 ViridianCityText13
- dw ViridianCityText14
- dw ViridianCityText15
+ dw ViridianCityText_11
+ dw ViridianCityText_12
+ dw ViridianCityText_13
-ViridianCityText1:
- TX_FAR _ViridianCityText1
- db "@"
-
-ViridianCityText2:
+ViridianCityText_0:
TX_ASM
- ld a, [wObtainedBadges]
- cp %01111111
- ld hl, ViridianCityText_19127
- jr z, .asm_ae9fe
- CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
- jr nz, .asm_ae9fe
- ld hl, ViridianCityText_19122
-.asm_ae9fe
- call PrintText
+ callba Func_f18bb
jp TextScriptEnd
-ViridianCityText_19122:
- TX_FAR _ViridianCityText_19122
- db "@"
-
-ViridianCityText_19127:
- TX_FAR _ViridianCityText_19127
- db "@"
-
-ViridianCityText3:
+ViridianCityText_1:
TX_ASM
- ld hl, ViridianCityText_1914d
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_6dfea
- ld hl, ViridianCityText_19157
- call PrintText
- jr .asm_d611f
-.asm_6dfea
- ld hl, ViridianCityText_19152
- call PrintText
-.asm_d611f
+ callba Func_f18c7
jp TextScriptEnd
-ViridianCityText_1914d:
- TX_FAR _ViridianCityText_1914d
- db "@"
-
-ViridianCityText_19152:
- TX_FAR _ViridianCityText_19152
- db "@"
-
-ViridianCityText_19157:
- TX_FAR _ViridianCityText_19157
- db "@"
-
-ViridianCityText4:
+ViridianCityText_2:
TX_ASM
- CheckEvent EVENT_GOT_POKEDEX
- jr nz, .asm_83894
- ld hl, ViridianCityText_19175
- call PrintText
- jr .asm_700a6
-.asm_83894
- ld hl, ViridianCityText_1917a
- call PrintText
-.asm_700a6
+ callba Func_f18e9
jp TextScriptEnd
-ViridianCityText_19175:
- TX_FAR _ViridianCityText_19175
- db "@"
-
-ViridianCityText_1917a:
- TX_FAR _ViridianCityText_1917a
- db "@"
-
-ViridianCityText5:
+ViridianCityText_3:
TX_ASM
- ld hl, ViridianCityText_19191
- call PrintText
- call ViridianCityScript_190cf
- ld a, $3
- ld [wViridianCityCurScript], a
+ callba Func_f1911
jp TextScriptEnd
-ViridianCityText_19191:
- TX_FAR _ViridianCityText_19191
- db "@"
-
-ViridianCityText6:
+ViridianCityText_4:
TX_ASM
- CheckEvent EVENT_GOT_TM42
- jr nz, .asm_4e5a0
- ld hl, ViridianCityText_191ca
- call PrintText
- lb bc, TM_42, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, ReceivedTM42Text
- call PrintText
- SetEvent EVENT_GOT_TM42
- jr .asm_3c73c
-.BagFull
- ld hl, TM42NoRoomText
- call PrintText
- jr .asm_3c73c
-.asm_4e5a0
- ld hl, TM42Explanation
- call PrintText
-.asm_3c73c
+ callba Func_f192c
jp TextScriptEnd
-ViridianCityText_191ca:
- TX_FAR _ViridianCityText_191ca
- db "@"
-
-ReceivedTM42Text:
- TX_FAR _ReceivedTM42Text
- db $10, "@"
+ViridianCityText_5:
+ TX_ASM
+ callba Func_f194a
+ jp TextScriptEnd
-TM42Explanation:
- TX_FAR _TM42Explanation
- db "@"
+ViridianCityText_6:
+ TX_ASM
+ callba Func_f198e
+ jp TextScriptEnd
-TM42NoRoomText:
- TX_FAR _TM42NoRoomText
+ViridianCityText_13:
+ TX_FAR _ViridianCityText_19219
db "@"
-ViridianCityText7:
+ViridianCityText_7:
TX_ASM
- ld hl, ViridianCityText_1920a
+ CheckEvent EVENT_02D
+ jr nz, .asm_192a6
+ ld hl, ViridianCityText_192af
call PrintText
ld c, 2
call DelayFrames
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr z, .asm_42f68
- ld hl, ViridianCityText_1920f
- call PrintText
- ld a, $1
+ ld a, $7
ld [wViridianCityCurScript], a
- jr .asm_2413a
-.asm_42f68
- ld hl, ViridianCityText_19214
+ jr .asm_192ac
+
+.asm_192a6
+ ld hl, ViridianCityText_192b4
call PrintText
-.asm_2413a
+.asm_192ac
jp TextScriptEnd
-ViridianCityText_1920a:
+ViridianCityText_192af:
TX_FAR _ViridianCityText_1920a
db "@"
-ViridianCityText_1920f:
- TX_FAR _ViridianCityText_1920f
+ViridianCityText_192b4:
+ TX_FAR _OldManTextAfterBattle
db "@"
-ViridianCityText_19214:
- TX_FAR _ViridianCityText_19214
- db "@"
-
-ViridianCityText15:
- TX_FAR _ViridianCityText_19219
- db "@"
-
-ViridianCityText8:
- TX_FAR _ViridianCityText8
- db "@"
+ViridianCityText_8:
+ TX_ASM
+ callba Func_f19c5
+ jp TextScriptEnd
-ViridianCityText9:
- TX_FAR _ViridianCityText9
- db "@"
+ViridianCityText_9:
+ TX_ASM
+ callba Func_f19d1
+ jp TextScriptEnd
-ViridianCityText10:
- TX_FAR _ViridianCityText10
- db "@"
+ViridianCityText_10:
+ TX_ASM
+ callba Func_f19dd
+ jp TextScriptEnd
-ViridianCityText13:
- TX_FAR _ViridianCityText13
- db "@"
+ViridianCityText_11:
+ TX_ASM
+ callba Func_f19e9
+ jp TextScriptEnd
-ViridianCityText14:
- TX_FAR _ViridianCityText14
- db "@"
+ViridianCityText_12:
+ TX_ASM
+ callba Func_f19f5
+ jp TextScriptEnd