2013-11-22 23:51:48 -08:00
|
|
|
INCLUDE "includes.asm"
|
|
|
|
|
2013-11-25 20:33:54 -08:00
|
|
|
|
|
|
|
SECTION "Events", ROMX, BANK[EVENTS]
|
2013-11-22 23:51:48 -08:00
|
|
|
|
2014-02-01 17:26:39 -08:00
|
|
|
OverworldLoop:: ; 966b0
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
2013-12-27 02:56:23 -08:00
|
|
|
ld [MapStatus], a
|
|
|
|
.loop
|
|
|
|
ld a, [MapStatus]
|
|
|
|
ld hl, .jumps
|
2013-11-22 02:04:32 -08:00
|
|
|
rst JumpTable
|
2013-12-27 02:56:23 -08:00
|
|
|
ld a, [MapStatus]
|
2013-11-22 02:04:32 -08:00
|
|
|
cp 3 ; done
|
2013-12-27 02:56:23 -08:00
|
|
|
jr nz, .loop
|
2013-11-22 02:04:32 -08:00
|
|
|
.done
|
|
|
|
ret
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
.jumps
|
|
|
|
dw StartMap
|
|
|
|
dw EnterMap
|
|
|
|
dw HandleMap
|
2013-11-22 02:04:32 -08:00
|
|
|
dw .done
|
|
|
|
; 966cb
|
|
|
|
|
|
|
|
|
|
|
|
Function966cb: ; 966cb
|
|
|
|
xor a
|
|
|
|
ld [ScriptFlags3], a
|
|
|
|
ret
|
|
|
|
; 966d0
|
|
|
|
|
2014-02-01 17:26:39 -08:00
|
|
|
Function966d0:: ; 966d0
|
2013-11-22 02:04:32 -08:00
|
|
|
ld a, $ff
|
|
|
|
ld [ScriptFlags3], a
|
|
|
|
ret
|
|
|
|
; 966d6
|
|
|
|
|
|
|
|
Function966d6: ; 966d6
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
bit 5, [hl]
|
|
|
|
ret
|
|
|
|
; 966dc
|
|
|
|
|
|
|
|
Function966dc: ; 966dc
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
res 2, [hl]
|
|
|
|
ret
|
|
|
|
; 966e2
|
|
|
|
|
|
|
|
Function966e2: ; 966e2
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
res 1, [hl]
|
|
|
|
ret
|
|
|
|
; 966e8
|
|
|
|
|
|
|
|
Function966e8: ; 966e8
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
res 0, [hl]
|
|
|
|
ret
|
|
|
|
; 966ee
|
|
|
|
|
|
|
|
Function966ee: ; 966ee
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
res 4, [hl]
|
|
|
|
ret
|
|
|
|
; 966f4
|
|
|
|
|
|
|
|
Function966f4: ; 966f4
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
set 2, [hl]
|
|
|
|
ret
|
|
|
|
; 966fa
|
|
|
|
|
|
|
|
Function966fa: ; 966fa
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
set 1, [hl]
|
|
|
|
ret
|
|
|
|
; 96700
|
|
|
|
|
|
|
|
Function96700: ; 96700
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
set 0, [hl]
|
|
|
|
ret
|
|
|
|
; 96706
|
|
|
|
|
|
|
|
Function96706: ; 96706
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
set 4, [hl]
|
|
|
|
ret
|
|
|
|
; 9670c
|
|
|
|
|
|
|
|
Function9670c: ; 9670c
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
bit 2, [hl]
|
|
|
|
ret
|
|
|
|
; 96712
|
|
|
|
|
|
|
|
Function96712: ; 96712
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
bit 1, [hl]
|
|
|
|
ret
|
|
|
|
; 96718
|
|
|
|
|
|
|
|
Function96718: ; 96718
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
bit 0, [hl]
|
|
|
|
ret
|
|
|
|
; 9671e
|
|
|
|
|
|
|
|
Function9671e: ; 9671e
|
|
|
|
ld hl, ScriptFlags3
|
|
|
|
bit 4, [hl]
|
|
|
|
ret
|
|
|
|
; 96724
|
|
|
|
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
StartMap: ; 96724
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
|
|
|
ld [ScriptVar], a
|
|
|
|
xor a
|
|
|
|
ld [ScriptRunning], a
|
2013-12-27 02:56:23 -08:00
|
|
|
ld hl, MapStatus
|
2013-11-22 02:04:32 -08:00
|
|
|
ld bc, $3e
|
|
|
|
call ByteFill
|
|
|
|
callba Function113e5
|
2013-12-22 14:30:35 -08:00
|
|
|
call ClearJoypad
|
2013-11-22 02:04:32 -08:00
|
|
|
; fallthrough
|
|
|
|
; 9673e
|
|
|
|
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
EnterMap: ; 9673e
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
|
|
|
ld [$d453], a
|
|
|
|
ld [$d454], a
|
|
|
|
call Function968d1
|
2014-01-26 19:07:19 -08:00
|
|
|
callba RunMapSetupScript
|
2013-11-22 02:04:32 -08:00
|
|
|
call Function966cb
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
ld a, [$ff9f]
|
|
|
|
cp $f7
|
|
|
|
jr nz, .asm_9675a
|
|
|
|
call Function966d0
|
|
|
|
.asm_9675a
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
ld a, [$ff9f]
|
|
|
|
cp $f3
|
|
|
|
jr nz, .asm_96764
|
|
|
|
xor a
|
|
|
|
ld [PoisonStepCount], a
|
|
|
|
.asm_96764
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
|
|
|
ld [$ff9f], a
|
2013-12-27 02:56:23 -08:00
|
|
|
ld a, 2 ; HandleMap
|
|
|
|
ld [MapStatus], a
|
2013-11-22 02:04:32 -08:00
|
|
|
ret
|
|
|
|
; 9676d
|
|
|
|
|
|
|
|
|
|
|
|
Function9676d: ; 9676d
|
|
|
|
ld c, 30
|
|
|
|
call DelayFrames
|
|
|
|
ret
|
|
|
|
; 96773
|
|
|
|
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
HandleMap: ; 96773
|
2013-11-22 02:04:32 -08:00
|
|
|
call ResetOverworldDelay
|
|
|
|
call Function967c1
|
|
|
|
callba Function97e08
|
2013-12-27 02:56:23 -08:00
|
|
|
call MapEvents
|
|
|
|
|
|
|
|
; Not immediately entering a connected map will cause problems.
|
|
|
|
ld a, [MapStatus]
|
|
|
|
cp 2 ; HandleMap
|
2013-11-22 02:04:32 -08:00
|
|
|
ret nz
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
call Function967d1
|
|
|
|
call NextOverworldFrame
|
|
|
|
call Function967e1
|
|
|
|
call Function967f4
|
|
|
|
ret
|
|
|
|
; 96795
|
|
|
|
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
MapEvents: ; 96795
|
|
|
|
ld a, [MapEventStatus]
|
|
|
|
ld hl, .jumps
|
2013-11-22 02:04:32 -08:00
|
|
|
rst JumpTable
|
|
|
|
ret
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
.jumps
|
|
|
|
dw .events
|
|
|
|
dw .no_events
|
2013-11-22 02:04:32 -08:00
|
|
|
; 967a1
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
.events ; 967a1
|
2013-11-22 02:04:32 -08:00
|
|
|
call PlayerEvents
|
|
|
|
call Function966cb
|
|
|
|
callba ScriptEvents
|
|
|
|
ret
|
|
|
|
; 967ae
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
.no_events ; 967ae
|
2013-11-22 02:04:32 -08:00
|
|
|
ret
|
|
|
|
; 967af
|
|
|
|
|
|
|
|
|
|
|
|
MaxOverworldDelay: ; 967af
|
|
|
|
db 2
|
|
|
|
; 967b0
|
|
|
|
|
|
|
|
ResetOverworldDelay: ; 967b0
|
|
|
|
ld a, [MaxOverworldDelay]
|
|
|
|
ld [OverworldDelay], a
|
|
|
|
ret
|
|
|
|
; 967b7
|
|
|
|
|
|
|
|
NextOverworldFrame: ; 967b7
|
|
|
|
ld a, [OverworldDelay]
|
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
ld c, a
|
|
|
|
call DelayFrames
|
|
|
|
ret
|
|
|
|
; 967c1
|
|
|
|
|
|
|
|
Function967c1: ; 967c1
|
2013-12-27 02:56:23 -08:00
|
|
|
ld a, [MapEventStatus]
|
|
|
|
cp 1 ; no events
|
2013-11-22 02:04:32 -08:00
|
|
|
ret z
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
call UpdateTime
|
2013-12-22 14:30:35 -08:00
|
|
|
call GetJoypad
|
2013-11-22 02:04:32 -08:00
|
|
|
call TimeOfDayPals
|
|
|
|
ret
|
|
|
|
; 967d1
|
|
|
|
|
|
|
|
Function967d1: ; 967d1
|
|
|
|
callba Function576a
|
|
|
|
callba Functiond497
|
|
|
|
call Function96812
|
|
|
|
ret
|
|
|
|
; 967e1
|
|
|
|
|
|
|
|
Function967e1: ; 967e1
|
|
|
|
callba Function5920
|
|
|
|
callba Functiond4d2
|
|
|
|
callba Functionb8098
|
|
|
|
ret
|
|
|
|
; 967f4
|
|
|
|
|
|
|
|
Function967f4: ; 967f4
|
|
|
|
ld a, [$d150]
|
|
|
|
bit 5, a
|
|
|
|
jr z, .asm_96806
|
|
|
|
bit 6, a
|
|
|
|
jr z, .asm_9680c
|
|
|
|
bit 4, a
|
|
|
|
jr nz, .asm_9680c
|
|
|
|
call Function966d0
|
|
|
|
|
|
|
|
.asm_96806
|
2013-12-27 02:56:23 -08:00
|
|
|
ld a, 0 ; events
|
|
|
|
ld [MapEventStatus], a
|
2013-11-22 02:04:32 -08:00
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_9680c
|
2013-12-27 02:56:23 -08:00
|
|
|
ld a, 1 ; no events
|
|
|
|
ld [MapEventStatus], a
|
2013-11-22 02:04:32 -08:00
|
|
|
ret
|
|
|
|
; 96812
|
|
|
|
|
|
|
|
Function96812: ; 96812
|
|
|
|
ld hl, $d150
|
|
|
|
bit 6, [hl]
|
|
|
|
ret z
|
|
|
|
|
2013-12-27 02:56:23 -08:00
|
|
|
callba Function81ca
|
2013-11-22 02:04:32 -08:00
|
|
|
ret
|
|
|
|
; 9681f
|
|
|
|
|
|
|
|
|
|
|
|
PlayerEvents: ; 9681f
|
|
|
|
|
|
|
|
xor a
|
|
|
|
|
|
|
|
ld a, [ScriptRunning]
|
|
|
|
and a
|
|
|
|
ret nz
|
|
|
|
|
|
|
|
call Function968e4
|
|
|
|
|
|
|
|
call CheckTrainerBattle3
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
call CheckTileEvent
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
call Function97c30
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
call Function968ec
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
call Function9693a
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
call OWPlayerInput
|
|
|
|
jr c, .asm_96848
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
.asm_96848
|
|
|
|
push af
|
|
|
|
callba Function96c56
|
|
|
|
pop af
|
|
|
|
|
|
|
|
ld [ScriptRunning], a
|
|
|
|
call Function96beb
|
|
|
|
ld a, [ScriptRunning]
|
|
|
|
cp 4
|
|
|
|
jr z, .asm_96865
|
|
|
|
cp 9
|
|
|
|
jr z, .asm_96865
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ld [$c2da], a
|
|
|
|
|
|
|
|
.asm_96865
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96867
|
|
|
|
|
|
|
|
|
|
|
|
CheckTrainerBattle3: ; 96867
|
|
|
|
nop
|
|
|
|
nop
|
|
|
|
call CheckTrainerBattle2
|
|
|
|
jr nc, .asm_96872
|
2013-12-27 02:56:23 -08:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
ld a, 1
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96872
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96874
|
|
|
|
|
|
|
|
|
|
|
|
CheckTileEvent: ; 96874
|
|
|
|
; Check for warps, tile triggers or wild battles.
|
|
|
|
|
|
|
|
call Function9670c
|
|
|
|
jr z, .asm_96886
|
|
|
|
|
|
|
|
callba Function104820
|
|
|
|
jr c, .asm_968a6
|
|
|
|
|
|
|
|
call Function2238
|
|
|
|
jr c, .asm_968aa
|
|
|
|
|
|
|
|
.asm_96886
|
|
|
|
call Function96712
|
|
|
|
jr z, .asm_96890
|
|
|
|
|
|
|
|
call Function2ad4
|
|
|
|
jr c, .asm_968ba
|
|
|
|
|
|
|
|
.asm_96890
|
|
|
|
call Function96718
|
|
|
|
jr z, .asm_96899
|
|
|
|
|
|
|
|
call CountStep
|
|
|
|
ret c
|
|
|
|
|
|
|
|
.asm_96899
|
|
|
|
call Function9671e
|
|
|
|
jr z, .asm_968a4
|
|
|
|
|
|
|
|
call Function97cc0
|
|
|
|
ret c
|
|
|
|
jr .asm_968a4
|
|
|
|
|
|
|
|
.asm_968a4
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_968a6
|
|
|
|
ld a, 4
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_968aa
|
|
|
|
ld a, [StandingTile]
|
|
|
|
call CheckPitTile
|
|
|
|
jr nz, .asm_968b6
|
|
|
|
ld a, 6
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_968b6
|
|
|
|
ld a, 5
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_968ba
|
|
|
|
ld hl, MovementAnimation
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call CallScript
|
|
|
|
ret
|
|
|
|
; 968c7
|
|
|
|
|
|
|
|
|
2014-02-01 17:26:39 -08:00
|
|
|
Function968c7:: ; 968c7
|
2013-11-22 02:04:32 -08:00
|
|
|
ld hl, $d452
|
|
|
|
ld a, [hl]
|
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
dec [hl]
|
|
|
|
ret z
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 968d1
|
|
|
|
|
|
|
|
Function968d1: ; 968d1
|
|
|
|
ld a, 5
|
|
|
|
ld [$d452], a
|
|
|
|
ret
|
|
|
|
; 968d7
|
|
|
|
|
|
|
|
Function968d7: ; 968d7
|
|
|
|
ret
|
|
|
|
; 968d8
|
|
|
|
|
|
|
|
Function968d8: ; 968d8
|
|
|
|
ld a, [$d452]
|
|
|
|
cp 2
|
|
|
|
ret nc
|
|
|
|
ld a, 2
|
|
|
|
ld [$d452], a
|
|
|
|
ret
|
|
|
|
; 968e4
|
|
|
|
|
|
|
|
Function968e4: ; 968e4
|
|
|
|
call Function966d6
|
|
|
|
ret z
|
|
|
|
call Function2f3e
|
|
|
|
ret
|
|
|
|
; 968ec
|
|
|
|
|
|
|
|
Function968ec: ; 968ec
|
|
|
|
ld a, [$dc07]
|
|
|
|
and a
|
|
|
|
jr z, .asm_96938
|
|
|
|
|
|
|
|
ld c, a
|
|
|
|
call Function211b
|
|
|
|
cp c
|
|
|
|
jr nc, .asm_96938
|
|
|
|
|
|
|
|
ld e, a
|
|
|
|
ld d, 0
|
|
|
|
ld hl, $dc08
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
add hl, de
|
|
|
|
add hl, de
|
|
|
|
add hl, de
|
|
|
|
add hl, de
|
|
|
|
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call GetFarHalfword
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call CallScript
|
|
|
|
|
|
|
|
ld hl, ScriptFlags
|
|
|
|
res 3, [hl]
|
|
|
|
|
|
|
|
callba Function96c56
|
|
|
|
callba ScriptEvents
|
|
|
|
|
|
|
|
ld hl, ScriptFlags
|
|
|
|
bit 3, [hl]
|
|
|
|
jr z, .asm_96938
|
|
|
|
|
|
|
|
ld hl, $d44f
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
ld a, [$d44e]
|
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96938
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 9693a
|
|
|
|
|
|
|
|
Function9693a: ; 9693a
|
|
|
|
ld a, [InLinkBattle]
|
|
|
|
and a
|
2014-07-24 20:19:56 -07:00
|
|
|
jr nz, .nothing
|
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
ld hl, StatusFlags2
|
|
|
|
bit 2, [hl]
|
|
|
|
jr z, .asm_96951
|
2014-07-24 20:19:56 -07:00
|
|
|
|
2013-11-22 02:04:32 -08:00
|
|
|
callba Function114a4
|
2014-07-24 20:19:56 -07:00
|
|
|
jr c, .elevator
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96951
|
|
|
|
callba Function11452
|
|
|
|
callba Function114e7
|
2014-07-24 20:19:56 -07:00
|
|
|
callba CheckPhoneCall
|
2013-11-22 02:04:32 -08:00
|
|
|
ret c
|
|
|
|
|
2014-07-24 20:19:56 -07:00
|
|
|
.nothing
|
2013-11-22 02:04:32 -08:00
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
2014-07-24 20:19:56 -07:00
|
|
|
.elevator
|
2014-03-01 07:18:26 -08:00
|
|
|
ld a, BANK(UnknownScript_0x135f8)
|
|
|
|
ld hl, UnknownScript_0x135f8
|
2013-11-22 02:04:32 -08:00
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96970
|
|
|
|
|
|
|
|
Function96970: ; 96970
|
|
|
|
ld a, 8
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96974
|
|
|
|
|
|
|
|
|
|
|
|
OWPlayerInput: ; 96974
|
|
|
|
|
|
|
|
call PlayerMovement
|
|
|
|
ret c
|
|
|
|
and a
|
|
|
|
jr nz, .NoAction
|
|
|
|
|
|
|
|
; Can't perform button actions while sliding on ice.
|
|
|
|
callba Function80404
|
|
|
|
jr c, .NoAction
|
|
|
|
|
|
|
|
call CheckAPressOW
|
|
|
|
jr c, .Action
|
|
|
|
|
|
|
|
call CheckMenuOW
|
|
|
|
jr c, .Action
|
|
|
|
|
|
|
|
.NoAction
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.Action
|
|
|
|
push af
|
|
|
|
callba Function80422
|
|
|
|
pop af
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96999
|
|
|
|
|
|
|
|
|
|
|
|
CheckAPressOW: ; 96999
|
|
|
|
ld a, [hJoyPressed]
|
|
|
|
and A_BUTTON
|
|
|
|
ret z
|
|
|
|
call TryObjectEvent
|
|
|
|
ret c
|
|
|
|
call TryReadSign
|
|
|
|
ret c
|
|
|
|
call Function97c5f
|
|
|
|
ret c
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 969ac
|
|
|
|
|
|
|
|
|
|
|
|
PlayTalkObject: ; 969ac
|
|
|
|
push de
|
|
|
|
ld de, SFX_READ_TEXT_2
|
|
|
|
call PlaySFX
|
|
|
|
pop de
|
|
|
|
ret
|
|
|
|
; 969b5
|
|
|
|
|
|
|
|
|
|
|
|
TryObjectEvent: ; 969b5
|
|
|
|
callba CheckFacingObject
|
|
|
|
jr c, .IsObject
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.IsObject
|
|
|
|
call PlayTalkObject
|
|
|
|
ld a, [hConnectedMapWidth]
|
|
|
|
call Function1ae5
|
|
|
|
ld hl, $0001
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hl]
|
|
|
|
ld [$ffe0], a
|
|
|
|
|
|
|
|
ld a, [$ffe0]
|
|
|
|
call GetMapObject
|
|
|
|
ld hl, $0008
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hl]
|
|
|
|
and $f
|
|
|
|
|
|
|
|
; Bug: If IsInArray returns nc, data at bc will be executed as code.
|
|
|
|
push bc
|
|
|
|
ld de, 3
|
|
|
|
ld hl, .data_969ee
|
|
|
|
call IsInArray
|
|
|
|
jr nc, .asm_969ec
|
|
|
|
pop bc
|
|
|
|
|
|
|
|
inc hl
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
jp [hl]
|
|
|
|
|
|
|
|
.asm_969ec
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.data_969ee
|
|
|
|
dbw 0, .zero
|
|
|
|
dbw 1, .one
|
|
|
|
dbw 2, .two
|
|
|
|
dbw 3, .three
|
|
|
|
dbw 4, .four
|
|
|
|
dbw 5, .five
|
|
|
|
dbw 6, .six
|
|
|
|
db $ff
|
|
|
|
; 96a04
|
|
|
|
|
|
|
|
.zero ; 96a04
|
|
|
|
ld hl, $000a
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call CallScript
|
|
|
|
; ld a, -1
|
|
|
|
ret
|
|
|
|
; 96a12
|
|
|
|
|
|
|
|
.one ; 96a12
|
|
|
|
ld hl, $000a
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
ld de, EngineBuffer1
|
|
|
|
ld bc, 2
|
|
|
|
call FarCopyBytes
|
|
|
|
ld a, 3
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96a29
|
|
|
|
|
|
|
|
.two ; 96a29
|
|
|
|
call Function3674
|
|
|
|
ld a, 2
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96a30
|
|
|
|
|
|
|
|
.three ; 96a30
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96a32
|
|
|
|
|
|
|
|
.four ; 96a32
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96a34
|
|
|
|
|
|
|
|
.five ; 96a34
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96a36
|
|
|
|
|
|
|
|
.six ; 96a36
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96a38
|
|
|
|
|
|
|
|
|
|
|
|
TryReadSign: ; 96a38
|
|
|
|
call CheckFacingSign
|
|
|
|
jr c, .IsSign
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.IsSign
|
|
|
|
ld a, [MartPointer]
|
|
|
|
ld hl, .signs
|
|
|
|
rst JumpTable
|
|
|
|
ret
|
|
|
|
|
|
|
|
.signs
|
|
|
|
dw .read
|
|
|
|
dw .up
|
|
|
|
dw .down
|
|
|
|
dw .right
|
|
|
|
dw .left
|
|
|
|
dw .ifset
|
|
|
|
dw .ifnotset
|
|
|
|
dw .itemifset
|
|
|
|
dw .asm_96aa2
|
|
|
|
; 96a59
|
|
|
|
|
|
|
|
.up
|
|
|
|
ld b, UP << 2
|
|
|
|
jr .checkdir
|
|
|
|
.down
|
|
|
|
ld b, DOWN << 2
|
|
|
|
jr .checkdir
|
|
|
|
.right
|
|
|
|
ld b, RIGHT << 2
|
|
|
|
jr .checkdir
|
|
|
|
.left
|
|
|
|
ld b, LEFT << 2
|
|
|
|
jr .checkdir
|
|
|
|
|
|
|
|
.checkdir
|
|
|
|
ld a, [PlayerDirection]
|
|
|
|
and %1100
|
|
|
|
cp b
|
|
|
|
jp nz, .dontread
|
|
|
|
|
|
|
|
.read
|
|
|
|
call PlayTalkObject
|
|
|
|
ld hl, $d041
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.itemifset
|
|
|
|
call CheckSignFlag
|
|
|
|
jp nz, .dontread
|
|
|
|
call PlayTalkObject
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
ld de, EngineBuffer1
|
|
|
|
ld bc, 3
|
|
|
|
call FarCopyBytes
|
2014-03-01 07:18:26 -08:00
|
|
|
ld a, BANK(UnknownScript_0x13625)
|
|
|
|
ld hl, UnknownScript_0x13625
|
2013-11-22 02:04:32 -08:00
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96aa2
|
|
|
|
call CheckSignFlag
|
|
|
|
jr nz, .dontread
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
ld de, EngineBuffer1
|
|
|
|
ld bc, 3
|
|
|
|
call FarCopyBytes
|
|
|
|
jr .dontread
|
|
|
|
|
|
|
|
.ifset
|
|
|
|
call CheckSignFlag
|
|
|
|
jr z, .dontread
|
|
|
|
jr .asm_96ac1
|
|
|
|
|
|
|
|
.ifnotset
|
|
|
|
call CheckSignFlag
|
|
|
|
jr nz, .dontread
|
|
|
|
|
|
|
|
.asm_96ac1
|
|
|
|
push hl
|
|
|
|
call PlayTalkObject
|
|
|
|
pop hl
|
|
|
|
inc hl
|
|
|
|
inc hl
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call GetFarHalfword
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.dontread
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
; 96ad8
|
|
|
|
|
|
|
|
|
|
|
|
CheckSignFlag: ; 96ad8
|
|
|
|
ld hl, $d041
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
|
|
|
push hl
|
|
|
|
call GetMapScriptHeaderBank
|
|
|
|
call GetFarHalfword
|
|
|
|
ld e, l
|
|
|
|
ld d, h
|
|
|
|
ld b, $2
|
|
|
|
call EventFlagAction
|
|
|
|
ld a, c
|
|
|
|
and a
|
|
|
|
pop hl
|
|
|
|
ret
|
|
|
|
; 96af0
|
|
|
|
|
|
|
|
|
|
|
|
PlayerMovement: ; 96af0
|
|
|
|
callba DoPlayerMovement
|
|
|
|
ld a, c
|
|
|
|
ld hl, .pointers
|
|
|
|
rst JumpTable
|
|
|
|
ld a, c
|
|
|
|
ret
|
|
|
|
; 96afd
|
|
|
|
|
|
|
|
.pointers
|
|
|
|
dw .zero
|
|
|
|
dw .one
|
|
|
|
dw .two
|
|
|
|
dw .three
|
|
|
|
dw .four
|
|
|
|
dw .five
|
|
|
|
dw .six
|
|
|
|
dw .seven
|
|
|
|
|
|
|
|
.zero
|
|
|
|
.four ; 96b0d
|
|
|
|
xor a
|
|
|
|
ld c, a
|
|
|
|
ret
|
|
|
|
; 96b10
|
|
|
|
|
|
|
|
.seven ; 96b10
|
|
|
|
call Function968d7 ; empty
|
|
|
|
xor a
|
|
|
|
ld c, a
|
|
|
|
ret
|
|
|
|
; 96b16
|
|
|
|
|
|
|
|
.one ; 96b16
|
|
|
|
ld a, 5
|
|
|
|
ld c, a
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96b1b
|
|
|
|
|
|
|
|
.two ; 96b1b
|
|
|
|
ld a, 9
|
|
|
|
ld c, a
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96b20
|
|
|
|
|
|
|
|
.three ; 96b20
|
|
|
|
; force the player to move in some direction
|
2014-03-01 07:18:26 -08:00
|
|
|
ld a, BANK(UnknownScript_0x1253d)
|
|
|
|
ld hl, UnknownScript_0x1253d
|
2013-11-22 02:04:32 -08:00
|
|
|
call CallScript
|
|
|
|
; ld a, -1
|
|
|
|
ld c, a
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96b2b
|
|
|
|
|
|
|
|
.five
|
|
|
|
.six ; 96b2b
|
|
|
|
ld a, -1
|
|
|
|
ld c, a
|
|
|
|
and a
|
|
|
|
ret
|
|
|
|
; 96b30
|
|
|
|
|
|
|
|
|
|
|
|
CheckMenuOW: ; 96b30
|
|
|
|
xor a
|
|
|
|
ld [$ffa0], a
|
|
|
|
ld [$ffa1], a
|
|
|
|
ld a, [hJoyPressed]
|
|
|
|
|
|
|
|
bit 2, a ; SELECT
|
|
|
|
jr nz, .Select
|
|
|
|
|
|
|
|
bit 3, a ; START
|
|
|
|
jr z, .NoMenu
|
|
|
|
|
|
|
|
ld a, BANK(StartMenuScript)
|
|
|
|
ld hl, StartMenuScript
|
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.NoMenu
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.Select
|
|
|
|
call PlayTalkObject
|
|
|
|
ld a, BANK(SelectMenuScript)
|
|
|
|
ld hl, SelectMenuScript
|
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96b58
|
|
|
|
|
|
|
|
|
|
|
|
StartMenuScript: ; 96b58
|
2013-12-02 11:18:03 -08:00
|
|
|
3callasm StartMenu
|
2013-11-22 02:04:32 -08:00
|
|
|
2jump StartMenuCallback
|
|
|
|
; 96b5f
|
|
|
|
|
|
|
|
SelectMenuScript: ; 96b5f
|
2013-12-02 11:18:03 -08:00
|
|
|
3callasm SelectMenu
|
2013-11-22 02:04:32 -08:00
|
|
|
2jump SelectMenuCallback
|
|
|
|
; 96b66
|
|
|
|
|
|
|
|
StartMenuCallback:
|
|
|
|
SelectMenuCallback: ; 96b66
|
|
|
|
copybytetovar $ffa0
|
|
|
|
if_equal $80, .Script
|
|
|
|
if_equal $ff, .Asm
|
|
|
|
end
|
|
|
|
; 96b72
|
|
|
|
|
|
|
|
.Script ; 96b72
|
|
|
|
2ptjump $d0e8
|
|
|
|
; 96b75
|
|
|
|
|
|
|
|
.Asm ; 96b75
|
|
|
|
2ptcallasm $d0e8
|
|
|
|
end
|
|
|
|
; 96b79
|
|
|
|
|
|
|
|
|
|
|
|
CountStep: ; 96b79
|
|
|
|
ld a, [InLinkBattle]
|
|
|
|
and a
|
|
|
|
jr nz, .asm_96bc9
|
|
|
|
|
|
|
|
callba Function90136
|
|
|
|
jr c, .asm_96bcb
|
|
|
|
|
|
|
|
call Function96bd7
|
|
|
|
jr c, .asm_96bcb
|
|
|
|
|
|
|
|
ld hl, PoisonStepCount
|
|
|
|
inc [hl]
|
|
|
|
ld hl, StepCount
|
|
|
|
inc [hl]
|
|
|
|
jr nz, .asm_96b9c
|
|
|
|
|
|
|
|
callba StepHappiness
|
|
|
|
|
|
|
|
.asm_96b9c
|
|
|
|
ld a, [StepCount]
|
|
|
|
cp $80
|
|
|
|
jr nz, .asm_96bab
|
|
|
|
|
|
|
|
callba Function16f3e
|
|
|
|
jr nz, .asm_96bcf
|
|
|
|
|
|
|
|
.asm_96bab
|
|
|
|
callba DaycareStep
|
|
|
|
|
|
|
|
ld hl, PoisonStepCount
|
|
|
|
ld a, [hl]
|
|
|
|
cp 4
|
|
|
|
jr c, .asm_96bc3
|
|
|
|
ld [hl], 0
|
|
|
|
|
|
|
|
callba Function505da
|
|
|
|
jr c, .asm_96bcb
|
|
|
|
|
|
|
|
.asm_96bc3
|
|
|
|
callba Function97db3
|
|
|
|
|
|
|
|
.asm_96bc9
|
|
|
|
xor a
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96bcb
|
|
|
|
ld a, -1
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
|
|
|
|
.asm_96bcf
|
|
|
|
ld a, 8
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96bd3
|
|
|
|
|
|
|
|
|
|
|
|
Function96bd3: ; 96bd3
|
|
|
|
ld a, $7
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96bd7
|
|
|
|
|
|
|
|
Function96bd7: ; 96bd7
|
|
|
|
ld a, [$dca1]
|
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
dec a
|
|
|
|
ld [$dca1], a
|
|
|
|
ret nz
|
2014-03-01 07:18:26 -08:00
|
|
|
ld a, BANK(UnknownScript_0x13619)
|
|
|
|
ld hl, UnknownScript_0x13619
|
2013-11-22 02:04:32 -08:00
|
|
|
call CallScript
|
|
|
|
scf
|
|
|
|
ret
|
|
|
|
; 96beb
|
|
|
|
|
|
|
|
Function96beb: ; 96beb
|
|
|
|
ld a, [ScriptRunning]
|
|
|
|
and a
|
|
|
|
ret z
|
|
|
|
cp $ff
|
|
|
|
ret z
|
|
|
|
cp $a
|
|
|
|
ret nc
|
|
|
|
|
|
|
|
ld c, a
|
|
|
|
ld b, 0
|
|
|
|
ld hl, ScriptPointers96c0c
|
|
|
|
add hl, bc
|
|
|
|
add hl, bc
|
|
|
|
add hl, bc
|
|
|
|
ld a, [hli]
|
|
|
|
ld [ScriptBank], a
|
|
|
|
ld a, [hli]
|
|
|
|
ld [ScriptPos], a
|
|
|
|
ld a, [hl]
|
|
|
|
ld [ScriptPos + 1], a
|
|
|
|
ret
|
|
|
|
; 96c0c
|
|
|
|
|
|
|
|
ScriptPointers96c0c: ; 96c0c
|
|
|
|
dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
|
|
|
|
dbw BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
|
|
|
|
dbw BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
|
|
|
|
dbw BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
|
|
|
|
dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
|
|
|
|
dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
|
|
|
|
dbw BANK(FallIntoMapScript), FallIntoMapScript
|
|
|
|
dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
|
|
|
|
dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
|
|
|
|
dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
|
|
|
|
dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
|
|
|
|
; 96c2d
|
|
|
|
|
|
|
|
UnknownScript_0x96c2d: ; 96c2d
|
|
|
|
end
|
|
|
|
; 96c2e
|
|
|
|
|
|
|
|
UnknownScript_0x96c2e: ; 96c2e
|
|
|
|
end
|
|
|
|
; 96c2f
|
|
|
|
|
|
|
|
UnknownScript_0x96c2f: ; 96c2f
|
2013-12-02 11:18:03 -08:00
|
|
|
3callasm Function16f5e
|
2013-11-22 02:04:32 -08:00
|
|
|
end
|
|
|
|
; 96c34
|
|
|
|
|
|
|
|
UnknownScript_0x96c34: ; 96c34
|
|
|
|
warpsound
|
|
|
|
newloadmap $f5
|
|
|
|
end
|
|
|
|
; 96c38
|
|
|
|
|
|
|
|
FallIntoMapScript: ; 96c38
|
|
|
|
newloadmap $f6
|
|
|
|
playsound SFX_KINESIS
|
|
|
|
applymovement $0, MovementData_0x96c48
|
|
|
|
playsound SFX_STRENGTH
|
|
|
|
2call UnknownScript_0x96c4a
|
|
|
|
end
|
|
|
|
; 96c48
|
|
|
|
|
|
|
|
MovementData_0x96c48: ; 96c48
|
|
|
|
skyfall
|
|
|
|
step_end
|
|
|
|
; 96c4a
|
|
|
|
|
|
|
|
UnknownScript_0x96c4a: ; 96c4a
|
|
|
|
earthquake 16
|
|
|
|
end
|
|
|
|
; 96c4d
|
|
|
|
|
|
|
|
UnknownScript_0x96c4d: ; 96c4d
|
|
|
|
reloadandreturn $f7
|
|
|
|
; 96c4f
|
|
|
|
|
|
|
|
UnknownScript_0x96c4f: ; 96c4f
|
|
|
|
deactivatefacing $3
|
2013-12-02 11:18:03 -08:00
|
|
|
3callasm Function96706
|
2013-11-22 02:04:32 -08:00
|
|
|
end
|
|
|
|
; 96c56
|
|
|
|
|