mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-04-26 08:13:44 -05:00
Disassembled Fly and Dig
This commit is contained in:
parent
5b559fd49b
commit
85130570ed
|
|
@ -12,5 +12,7 @@
|
|||
const_value = -1
|
||||
const SPAWN_N_A
|
||||
|
||||
NUM_SPAWNS EQU 18
|
||||
|
||||
; size of each spawn point data
|
||||
SPAWN_POINT_SIZE EQU 4
|
||||
|
|
@ -7,9 +7,10 @@
|
|||
const SCRIPT_ID_03 ; 03
|
||||
|
||||
; Flags
|
||||
SCRIPT_FINISHED EQU 7
|
||||
SCRIPT_FINISHED_FLAG EQU 7
|
||||
|
||||
; Masks/Return Values
|
||||
SCRIPT_FINISHED_MASK = 1 << SCRIPT_FINISHED
|
||||
SCRIPT_SUCCESS EQU SCRIPT_FINISHED_MASK | $f
|
||||
SCRIPT_FAIL EQU SCRIPT_FINISHED_MASK | 0
|
||||
SCRIPT_FINISHED_MASK EQU 1 << SCRIPT_FINISHED_FLAG
|
||||
SCRIPT_SUCCESS EQU $f
|
||||
SCRIPT_FAIL EQU 0
|
||||
SCRIPT_FINISHED EQU $FF
|
||||
|
|
@ -1,16 +1,112 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "TeleportFunction", ROMX[$52db], BANK[$03]
|
||||
SECTION "FlyFunction", ROMX[$51af], BANK[$03]
|
||||
|
||||
; Sets wFieldMoveSucceeded to $f if successful, $0 if not
|
||||
TeleportFunction: ; 03:52db
|
||||
FlyFunction: ; 03:51af
|
||||
call .reset
|
||||
.loop
|
||||
call .next
|
||||
jr nc, .loop
|
||||
ld [wFieldMoveSucceeded], a
|
||||
ret
|
||||
.reset
|
||||
xor a
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
.next
|
||||
ld a, [wFieldMoveScriptID]
|
||||
ld hl, .FlyTable
|
||||
jp CallJumptable
|
||||
|
||||
.FlyTable ; 03:51c9
|
||||
dw .TryFly
|
||||
dw .ShowFlyMap
|
||||
dw .DoFly
|
||||
dw .FailFly
|
||||
|
||||
.TryFly: ; 03:51d1
|
||||
call GetMapEnvironment
|
||||
cp TOWN
|
||||
jr z, .success
|
||||
cp ROUTE
|
||||
jr z, .success
|
||||
ld a, SCRIPT_ID_03
|
||||
ld [wFieldMoveScriptID], a
|
||||
xor a
|
||||
ret
|
||||
.success: ; 03:51e3
|
||||
ld a, SCRIPT_ID_01
|
||||
ld [wFieldMoveScriptID], a
|
||||
xor a
|
||||
ret
|
||||
|
||||
.ShowFlyMap: ; 03:51ea
|
||||
call LoadStandardMenuHeader
|
||||
call ClearSprites
|
||||
callab FlyMap
|
||||
call ClearPalettes
|
||||
call GetMemSGBLayout
|
||||
call ExitMenu
|
||||
ld a, [wFlyDestination]
|
||||
cp -1
|
||||
jr z, .dont_fly
|
||||
cp NUM_SPAWNS
|
||||
jr nc, .dont_fly
|
||||
ld a, SCRIPT_ID_02
|
||||
ld [wFieldMoveScriptID], a
|
||||
xor a
|
||||
ret
|
||||
|
||||
.dont_fly: ; 03:5213
|
||||
call UpdateTimePals
|
||||
ld a, SCRIPT_FINISHED
|
||||
ld [wFieldMoveScriptID], a
|
||||
scf
|
||||
ld a, SCRIPT_FAIL
|
||||
ret
|
||||
|
||||
.DoFly: ; 03:521f
|
||||
ld a, [wFlyDestination]
|
||||
inc a
|
||||
ld [wDefaultSpawnPoint], a
|
||||
ldh a, [hROMBank]
|
||||
ld hl, .FlyScript
|
||||
call QueueScript
|
||||
ld a, -1
|
||||
ld [wFieldMoveScriptID], a
|
||||
scf
|
||||
ld a, SCRIPT_SUCCESS
|
||||
ret
|
||||
|
||||
.FailFly: ; 03:5237
|
||||
ld hl, .Text_CantUseFlyHere
|
||||
call MenuTextBoxBackup
|
||||
ld a, SCRIPT_FINISHED
|
||||
ld [wFieldMoveScriptID], a
|
||||
scf
|
||||
ld a, SCRIPT_FAIL
|
||||
ret
|
||||
|
||||
.Text_CantUseFlyHere: ; 03:5246
|
||||
text "ここでは つかえません!"
|
||||
prompt
|
||||
|
||||
.FlyScript: ; 03:5254
|
||||
ld a, MAPSETUP_TELEPORT
|
||||
ldh [hMapEntryMethod], a
|
||||
jpab Functionfcc24
|
||||
|
||||
|
||||
|
||||
; Sets wFieldMoveSucceeded to $f if successful, $0 if not
|
||||
DigFunction: ; 03:5260
|
||||
call .reset
|
||||
.loop
|
||||
ld a, [wFieldMoveScriptID]
|
||||
bit SCRIPT_FINISHED, a
|
||||
bit SCRIPT_FINISHED_FLAG, a
|
||||
jr nz, .finish
|
||||
ld hl, .JumpTable
|
||||
ld hl, .DigTable
|
||||
call CallJumptable
|
||||
jr .loop
|
||||
|
||||
|
|
@ -20,7 +116,82 @@ TeleportFunction: ; 03:52db
|
|||
ld [wFieldMoveSucceeded], a
|
||||
ret
|
||||
|
||||
.JumpTable
|
||||
.reset
|
||||
xor a
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
||||
.DigTable: ; 03:527D
|
||||
dw .CheckCanDig
|
||||
dw .DoDig
|
||||
dw .FailDig
|
||||
|
||||
.CheckCanDig: ; 03:5283
|
||||
call GetMapEnvironment
|
||||
cp INDOOR
|
||||
jr z, .fail
|
||||
cp CAVE
|
||||
jr z, .fail
|
||||
ld a, SCRIPT_ID_02
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
.fail
|
||||
ld a, SCRIPT_ID_01
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
||||
.DoDig: ; 03:529a
|
||||
ld hl, .DigScript
|
||||
ldh a, [hROMBank]
|
||||
call QueueScript
|
||||
ld a, SCRIPT_FINISHED_MASK | SCRIPT_SUCCESS
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
||||
.FailDig: ; 03:52a8
|
||||
ld hl, .Text_CantUseDigHere
|
||||
call MenuTextBoxBackup
|
||||
ld a, SCRIPT_FINISHED_MASK | SCRIPT_FAIL
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
||||
.Text_CantUseDigHere: ; 03:52b4
|
||||
text "ここでは つかえません!"
|
||||
prompt
|
||||
|
||||
.DigScript: ; 03:52c2
|
||||
ld hl, wDigWarpNumber
|
||||
ld de, wNextWarp
|
||||
ld bc, 3
|
||||
call CopyBytes
|
||||
ld a, MAPSETUP_WARP
|
||||
ldh [hMapEntryMethod], a
|
||||
jpab Functionfcc24
|
||||
|
||||
EmptyFunctiond2da: ; 03:52da
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; Sets wFieldMoveSucceeded to $f if successful, $0 if not
|
||||
TeleportFunction: ; 03:52db
|
||||
xor a
|
||||
ld [wFieldMoveScriptID], a
|
||||
.loop
|
||||
ld a, [wFieldMoveScriptID]
|
||||
bit SCRIPT_FINISHED_FLAG, a
|
||||
jr nz, .finish
|
||||
ld hl, .TeleportTable
|
||||
call CallJumptable
|
||||
jr .loop
|
||||
|
||||
; Finish by returning only the low nibble
|
||||
.finish
|
||||
and $FF - SCRIPT_FINISHED_MASK
|
||||
ld [wFieldMoveSucceeded], a
|
||||
ret
|
||||
|
||||
.TeleportTable
|
||||
dw .TryTeleport
|
||||
dw .DoTeleport
|
||||
dw .FailTeleport
|
||||
|
|
@ -49,12 +220,12 @@ TeleportFunction: ; 03:52db
|
|||
jr c, .not_spawn
|
||||
ld hl, .Text_CantFindDestination
|
||||
call MenuTextBoxBackup
|
||||
ld a, SCRIPT_FAIL
|
||||
ld a, SCRIPT_FINISHED_MASK | SCRIPT_FAIL
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
.not_spawn
|
||||
ld a, c
|
||||
ld [wDefaultSpawnpoint], a
|
||||
ld [wDefaultSpawnPoint], a
|
||||
ld a, SCRIPT_ID_01
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
|
@ -68,19 +239,19 @@ TeleportFunction: ; 03:52db
|
|||
ldh a, [hROMBank]
|
||||
ld hl, .TeleportScript
|
||||
call QueueScript
|
||||
ld a, SCRIPT_SUCCESS
|
||||
ld a, SCRIPT_FINISHED_MASK | SCRIPT_SUCCESS
|
||||
ld [wFieldMoveScriptID], a
|
||||
ret
|
||||
|
||||
.FailTeleport: ; 03:5359
|
||||
ld hl, .Text_CantUseHere
|
||||
ld hl, .Text_CantUseTeleportHere
|
||||
call MenuTextBoxBackup
|
||||
ld a, SCRIPT_FAIL
|
||||
ld a, SCRIPT_FINISHED_MASK | SCRIPT_FAIL
|
||||
ld [wFieldMoveScriptID], a
|
||||
scf
|
||||
ret
|
||||
|
||||
.Text_CantUseHere: ; 03:5366
|
||||
.Text_CantUseTeleportHere: ; 03:5366
|
||||
text "ここでは つかえません!"
|
||||
para
|
||||
done
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ INCLUDE "constants.asm"
|
|||
SECTION "LoadSpawnPoint", ROMX[$4791], BANK[$03]
|
||||
|
||||
LoadSpawnPoint: ; 03:4791
|
||||
; loads the spawn point in wDefaultSpawnpoint
|
||||
; loads the spawn point in wDefaultSpawnPoint
|
||||
push hl
|
||||
push de
|
||||
ld a, [wDefaultSpawnpoint]
|
||||
ld a, [wDefaultSpawnPoint]
|
||||
and a
|
||||
jr z, .skip
|
||||
dec a
|
||||
|
|
|
|||
1
shim.sym
1
shim.sym
|
|
@ -48,6 +48,7 @@
|
|||
02:43E8 Function83e8
|
||||
02:45DF QueueFollowerFirstStep
|
||||
02:462E Function862e
|
||||
02:46CB FlyMap
|
||||
02:4786 Function8786
|
||||
02:4856 DecompTownMapTilemap
|
||||
02:48DA DecompTownMapTilemap.tilemap
|
||||
|
|
|
|||
11
wram.asm
11
wram.asm
|
|
@ -228,7 +228,10 @@ wCurSpecies:: db ; cb5b
|
|||
wNamedObjectTypeBuffer:: db ; cb5c
|
||||
|
||||
SECTION "CB5E", WRAM0[$CB5E]
|
||||
wJumptableIndex:: ds 4
|
||||
wJumptableIndex:: db ; cb5e
|
||||
wFlyDestination:: db ; cb5f
|
||||
|
||||
ds 2
|
||||
|
||||
SECTION "CB62", WRAM0[$CB62]
|
||||
|
||||
|
|
@ -331,7 +334,7 @@ wcc38::
|
|||
wTitleSequenceOpeningType:: ; cc38
|
||||
db
|
||||
|
||||
wDefaultSpawnpoint:: ; cc39
|
||||
wDefaultSpawnPoint:: ; cc39
|
||||
db
|
||||
|
||||
wMovementBufferCount:: db ; cc3a
|
||||
|
|
@ -713,6 +716,10 @@ wJoypadFlags:: db ; d4ab
|
|||
; |\------- joypad sync mtx
|
||||
; \-------- joypad disabled
|
||||
|
||||
SECTION "wDigWarpNumber", WRAM0[$D4B2]
|
||||
|
||||
wDigWarpNumber:: db ; d4b2
|
||||
|
||||
|
||||
SECTION "Warp data", WRAM0[$D514]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user