diff options
-rw-r--r-- | engine/bank3c.asm | 4 | ||||
-rwxr-xr-x | scripts/viridiancity.asm | 236 |
2 files changed, 228 insertions, 12 deletions
diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 2d10b45c..6345424f 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -342,7 +342,9 @@ NurseChanseyText: TX_FAR _NurseChanseyText db "@" - dr $f0f26, $f220e + dr $f0f26, $f1a01 +Func_f1a01: + dr $f1a01, $f220e INCLUDE "data/mapHeaders/beach_house.asm" INCLUDE "scripts/beach_house.asm" diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm index 54aaa03e..dd4931e9 100755 --- a/scripts/viridiancity.asm +++ b/scripts/viridiancity.asm @@ -19,27 +19,241 @@ ViridianCityScriptPointers: ; 19037 (6:5037) dw ViridianCityScript10 ; 191f9 ViridianCityScript0: - dr $1904d,$19054 + call ViridianCityScript_1905b + call ViridianCityScript_190ab + ret + ViridianCityScript1: ; 19054 - dr $19054,$19057 + call ViridianCityScript_19162 ViridianCityScript2: ; 19057 - dr $19057,$1909d + 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, $80 + ld [wSimulatedJoypadStatesEnd], a + xor a + ld [wSpriteStateData1 + 9], a + ld [wJoyIgnore], a + ld [hJoyHeld], a + ld a, $6 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + ViridianCityScript6: ; 1909d - dr $1909d,$190ca + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ld [W_VIRIDIANCITYCURSCRIPT], 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 [W_VIRIDIANCITYCURSCRIPT], a + ret + ViridianCityScript3: ; 190ca - dr $190ca,$19104 + call ViridianCityScript_190ef + call ViridianCityScript_190db + ResetEvent EVENT_02F + ld a, $4 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityScript_190db: + xor a + ld [wListScrollOffset], a + ld a, OLD_MAN_BATTLE + 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: ; 19104 - dr $19104,$1913f + 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 [W_VIRIDIANCITYCURSCRIPT], 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: ; 1913f - dr $1913f,$19191 + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $0 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityScript_1914d: + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, $80 + ld [wSimulatedJoypadStatesEnd], a + xor a + ld [wSpriteStateData1 + 9], 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 [wSpriteStateData1 + 9], 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: ; 19191 - dr $19191,$191a7 + 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 [W_VIRIDIANCITYCURSCRIPT], a + ret + ViridianCityScript8: ; 191a7 - dr $191a7,$191cf + 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 [W_VIRIDIANCITYCURSCRIPT], a + ret + ViridianCityScript9: ; 191cf - dr $191cf,$191f9 + 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 [W_VIRIDIANCITYCURSCRIPT], 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: ; 191f9 - dr $191f9,$19213 + 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 [W_VIRIDIANCITYCURSCRIPT], a + ret ViridianCityTextPointers: dr $19213,$192f5 |