summaryrefslogtreecommitdiff
path: root/src/engine/bank03.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/bank03.asm')
-rw-r--r--src/engine/bank03.asm264
1 files changed, 155 insertions, 109 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index 6149c08..5330bd1 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -176,7 +176,7 @@ Func_c158: ; c158 (3:4158)
cp $1
ret nz
ld a, [wd0c4]
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
jr c, .asm_c179
ld a, [wd3aa]
@@ -580,7 +580,7 @@ Func_c4b9: ; c4b9 (3:44b9)
ld a, b
ld [wd337], a
ld a, $0
- farcall Func_1299f
+ farcall CreateSpriteAndAnimBufferEntry
ld a, [wWhichSprite]
ld [wd336], a
ld b, $2
@@ -1225,51 +1225,51 @@ Func_c943: ; c943 (3:4943)
push hl
push bc
push de
- ld l, $0
- call Func_3abd
- jr nc, .asm_c98f
-.asm_c94d
+ ld l, MAP_SCRIPT_NPCS
+ call GetMapScriptPointer
+ jr nc, .quit
+.loadNPCLoop
ld a, l
- ld [wd4c4], a
+ ld [wTempPointer], a
ld a, h
- ld [wd4c5], a
- ld a, $4
- ld [wd4c6], a
- ld de, wd3ab
- ld bc, $0006
+ ld [wTempPointer + 1], a
+ ld a, BANK(MapScripts)
+ ld [wTempPointerBank], a
+ ld de, wTempNPC
+ ld bc, NPC_MAP_SIZE
call CopyBankedDataToDE
- ld a, [wd3ab]
+ ld a, [wTempNPC]
or a
- jr z, .asm_c98f
+ jr z, .quit
push hl
- ld a, [wd3af]
+ ld a, [wLoadNPCFunction]
ld l, a
- ld a, [wd3b0]
+ ld a, [wLoadNPCFunction+1]
ld h, a
or l
- jr z, .asm_c97a
+ jr z, .noScript
call CallHL2
- jr nc, .asm_c988
-.asm_c97a
- ld a, [wd3ab]
- farcall Func_11857
+ jr nc, .nextNPC
+.noScript
+ ld a, [wTempNPC]
+ farcall LoadNPCSpriteData
call Func_c998
farcall Func_1c485
-.asm_c988
+.nextNPC
pop hl
- ld bc, $0006
+ ld bc, NPC_MAP_SIZE
add hl, bc
- jr .asm_c94d
-.asm_c98f
- ld l, $2
- call Func_c9c2
+ jr .loadNPCLoop
+.quit
+ ld l, MAP_SCRIPT_POST_NPC
+ call CallMapScriptPointerIfExists
pop de
pop bc
pop hl
ret
Func_c998: ; c998 (3:4998)
- ld a, [wd3ab]
+ ld a, [wTempNPC]
cp $22
ret nz
ld a, [wd3d0]
@@ -1289,23 +1289,23 @@ Func_c998: ; c998 (3:4998)
Func_c9b8: ; c9b8 (3:49b8)
ld l, $8
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9bc: ; c9bc (3:49bc)
ld l, $a
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9c0: ; c9c0 (3:49c0)
ld l, $c
-Func_c9c2: ; c9c2 (3:49c2)
- call Func_3abd
+CallMapScriptPointerIfExists: ; c9c2 (3:49c2)
+ call GetMapScriptPointer
ret nc
jp hl
Func_c9c7: ; c9c7 (3:49c7)
ld l, $e
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9cb: ; c9cb (3:49cb)
push hl
@@ -1493,7 +1493,9 @@ MaxOutEventFlag: ; cac5 (3:4ac5)
ret
; 0xcacd
- INCROM $cacd, $cad0
+Func_cacd: ; cacd (3:4acd)
+ call Func_cab3
+; fallthrough
ZeroOutEventFlag: ; cad0 (3:4ad0)
push bc
@@ -1951,7 +1953,7 @@ OWScript_PrintVariableText: ; cd83 (3:4d83)
Func_cd94: ; cd94 (3:4d94)
call Func_ca69
- ld b, h
+ db $44
Unknown_cd98:
dec a
and $3
@@ -1995,14 +1997,14 @@ Func_cdd1: ; cdd1 (3:4dd1)
Func_cdd8: ; cdd8 (3:4dd8)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
call Func_cdd1
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2010,21 +2012,21 @@ Func_cdd8: ; cdd8 (3:4dd8)
Func_cdf5: ; cdf5 (3:4df5)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
- ld [wd3ab], a
+ ld [wTempNPC], a
ld a, c
- ld [wd3ac], a
+ ld [wLoadNPCXPos], a
ld a, b
- ld [wd3ad], a
+ ld [wLoadNPCYPos], a
ld a, $2
- ld [wd3ae], a
- ld a, [wd3ab]
- farcall Func_11857
+ ld [wLoadNPCDirection], a
+ ld a, [wTempNPC]
+ farcall LoadNPCSpriteData
farcall Func_1c485
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
jp IncreaseOWScriptPointerBy3
@@ -2059,15 +2061,15 @@ Func_ce4a: ; ce4a (3:4e4a)
Func_ce52: ; ce52 (3:4e52)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
asm_ce5d
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
call Func_ce3a
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2075,7 +2077,7 @@ asm_ce5d
Func_ce6f: ; ce6f (3:4e6f)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, c
push af
@@ -2270,28 +2272,30 @@ Func_cf7b: ; cf7b (3:4f7b)
jr c, .asm_cf7d
jp IncreaseOWScriptPointerBy1
-; This function doesn't look like a valid function, but it's pointed to in the table.
Func_cf96: ; cf96 (3:4f96)
ld c, $0
call Func_ca69
- ld de, $28b7
- ld hl, $08fe
+ db $11
+ or a
+ jr z, Func_cfc0
+ cp a, $08
jr c, .asm_cfa4
inc c
.asm_cfa4
call Func_ca69
- rla
+ db $17
cp $8
jr c, .asm_cfad
inc c
.asm_cfad
call Func_ca69
-.asm_cfb0
- jr nz, .asm_cfb0
- ld [$0138], sp
+ db $20
+ cp a, $08
+ jr c, .asm_cfb6
inc c
+.asm_cfb6
ld a, c
rlca
add $3
@@ -2311,7 +2315,7 @@ Func_cfc6: ; cfc6 (3:4fc6)
Func_cfd4: ; cfd4 (3:4fd4)
call Func_ca69
- dec l
+ db $2d
ld b, a
.asm_cfd9
ld a, $5
@@ -2356,7 +2360,7 @@ Func_d00b: ; d00b (3:500b)
add hl, bc
push hl
call Func_ca69
- dec hl
+ db $2b
ld e, a
ld d, $0
call GetCardName
@@ -2368,21 +2372,21 @@ Func_d00b: ; d00b (3:500b)
Func_d025: ; d025 (3:5025)
call Func_ca69
- dec hl
+ db $2b
call GetCardCountInCollectionAndDecks
jp c, Func_cf67
jp Func_cf6d
Func_d032: ; d032 (3:5032)
call Func_ca69
- dec hl
+ db $2b
call GetCardCountInCollection
jp c, Func_cf67
jp Func_cf6d
Func_d03f: ; d03f (3:503f)
call Func_ca69
- dec hl
+ db $2b
call RemoveCardFromCollection
jp IncreaseOWScriptPointerBy1
@@ -2399,7 +2403,8 @@ Func_d055: ; d055 (3:5055)
call Func_c5ce
jp IncreaseOWScriptPointerBy2
-
+; arg1 - Direction (index in ScriptedMovementOffsetTable)
+; arg2 - Tiles Moves (Speed)
OWScript_MovePlayer: ; 505c (3:505c)
ld a, c
ld [wd339], a
@@ -2426,7 +2431,7 @@ OWScript_SetDialogName: ; d080 (3:5080)
; Not confident enough to give it a name yet
Func_d088: ; d088 (3:5088)
ld a, c
- ld [wd3ab], a
+ ld [wTempNPC], a
call GetOWSArgs2AfterPointer
call Func_c926
jp IncreaseOWScriptPointerBy4
@@ -2498,10 +2503,10 @@ Func_d0f2: ; d0f2 (3:50f2)
Func_d103: ; d103 (3:5103)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, c
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
jr c, .asm_d119
call $54d1
@@ -2512,7 +2517,7 @@ Func_d103: ; d103 (3:5103)
.asm_d11c
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2575,17 +2580,17 @@ Func_d16b: ; d16b (3:516b)
jp IncreaseOWScriptPointerBy2
Func_d195: ; d195 (3:5195)
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
call Func_ca69
- ld b, l
+ db $45
inc a
ld c, a
call Func_ca8f
ld b, l
call Func_f580
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
jp IncreaseOWScriptPointerBy1
Func_d1ad: ; d1ad (3:51ad)
@@ -2594,7 +2599,7 @@ Func_d1ad: ; d1ad (3:51ad)
Func_d1b3: ; d1b3 (3:51b3)
call Func_ca69
- ld b, h
+ db $44
dec a
cp $2
jr c, .asm_d1c3
@@ -2623,7 +2628,7 @@ asm_d1c6
Func_d209: ; d209 (3:5209)
call Func_ca69
- ld [hl], c
+ db $71
ld e, a
.asm_d20e
call UpdateRNGSources
@@ -2870,7 +2875,7 @@ OWScript_GivePCPack: ; d3c9 (3:53c9)
farcall GivePCPack
jp IncreaseOWScriptPointerBy2
-Func_d3d1: ; d3d1 (3:53d1)
+OWScript_nop: ; d3d1 (3:53d1)
jp IncreaseOWScriptPointerBy1
Func_d3d4: ; d3d4 (3:53d4)
@@ -3065,7 +3070,44 @@ OWScript_JumpIfFlagZero2:
jp IncreaseOWScriptPointerBy4
; 0xd4ec
- INCROM $d4ec, $d52e
+LoadOverworld: ; d4ec (3:54ec)
+ call Func_d4fb
+ call Func_ca69
+ ld a, $b7
+ ret nz
+ ld bc, OWSequence_d52e
+ jp Func_c935
+
+Func_d4fb: ; d4fb (3:54fb)
+ call Func_cacd
+ ld e, c
+ call Func_f602
+ call Func_ca69
+ db $3f
+ cp $02
+ jr z, .asm_d527
+ call Func_ca69
+ db $40
+ cp $02
+ jr z, .asm_d521
+ call Func_ca69
+ db $41
+ cp $02
+ jr z, .asm_d51b
+ ret
+.asm_d51b
+ ld c, $07
+ call Func_ca8f
+ ld b, c
+.asm_d521
+ ld c, $07
+ call Func_ca8f
+ ld b, b
+.asm_d527
+ ld c, $07
+ call Func_ca8f
+ ccf
+ ret
OWSequence_d52e: ; d52e (3:552e)
start_script
@@ -3088,31 +3130,31 @@ OWSequence_d52e: ; d52e (3:552e)
OWSequence_d753: ; d753 (3:5753)
start_script
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_PrintTextString
tx Text05e3
@@ -3145,8 +3187,7 @@ OWSequence_d779: ; d779 (03:5779)
run_script OWScript_CloseAdvancedTextBox
run_script Func_d088
db $01
- db $94
- db $57
+ dw $5794
run_script OWScript_EndScriptLoop1
INCROM $d793, $e13f
@@ -3156,11 +3197,11 @@ WaterClubMovePlayer: ; e13f (3:613f)
cp $8
ret nz
call Func_ca69
- inc sp
+ db $33
cp $2
ret nc
ld a, $21
- ld [wd3ab], a
+ ld [wTempNPC], a
ld bc, OWSequence_NotReadyToSeeAmy
jp Func_c926
@@ -3282,7 +3323,7 @@ OWSequence_NotReadyToSeeAmy:
db $08
dw $61f8
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $04
run_script Func_ce4a
db $13
@@ -3474,15 +3515,15 @@ OWSequence_MeetAmy: ; e2d1 (3:62d1)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $00
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script Func_ce6f
db $21
@@ -3622,7 +3663,7 @@ FindEndOfBattleScript: ; e52c (3:652c)
.found_enemy
ld a, [hli]
- ld [wd3ab], a
+ ld [wTempNPC], a
ld b, $0
add hl, bc
ld c, [hl]
@@ -3748,6 +3789,8 @@ ClubEntranceAfterDuel: ; e7f6 (3:67f6)
dw OWSequence_LostToSecondRonaldFight
db $00
+; A Ronald is already loaded or not loaded depending on Pre-Load scripts
+; in data/npc_map_data.asm. This just starts a sequence if possible.
LoadClubEntrance: ; e809 (3:6809)
call TryFirstRonaldFight
call TrySecondRonaldFight
@@ -3756,7 +3799,7 @@ LoadClubEntrance: ; e809 (3:6809)
TryFirstRonaldEncounter: ; e813 (3:6813)
ld a, RONALD1
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
ret c
ld bc, OWSequence_FirstRonaldEncounter
@@ -3768,7 +3811,7 @@ TryFirstRonaldFight: ; e822 (3:6822)
call Func_39c3
ret c
call Func_ca69
- ld c, h
+ db $4c
or a
ret nz
ld bc, OWSequence_FirstRonaldFight
@@ -3780,7 +3823,7 @@ TrySecondRonaldFight: ; e837 (3:6837)
call Func_39c3
ret c
call Func_ca69
- ld c, l
+ db $4d
or a
ret nz
ld bc, OWSequenceSecondRonaldFight
@@ -3792,7 +3835,7 @@ TrySecondRonaldFight: ; e837 (3:6837)
OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
start_script
run_script OWScript_MaxOutFlagValue
- db $4b
+ db EVENT_FLAG_4B
run_script Func_ce4a
db $94
db $68
@@ -3802,10 +3845,10 @@ OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
tx Text0645
run_script OWScript_CloseTextBox
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_PrintTextString
tx Text0646
@@ -3827,7 +3870,7 @@ OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $01
+ db EAST
db $04
run_script Func_ce4a
db $94
@@ -3858,15 +3901,15 @@ OWSequence_FirstRonaldFight: ; e8c0 (3:68c0)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $02
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_PrintTextString
tx Text064b
@@ -3931,15 +3974,15 @@ OWSequenceSecondRonaldFight: ; e91e (3:691e)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $02
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_PrintTextString
tx Text0650
@@ -3987,11 +4030,11 @@ OWJump_FinishedSecondRonaldFight ; e959 (3:6959)
Func_f580: ; f580 (3:7580)
call Func_ca69
- ld b, h
+ db $44
cp $3
jr z, .asm_f596
call Func_ca69
- ld b, l
+ db $45
cp $3
ld d, $18
jr nz, .asm_f598
@@ -4014,12 +4057,15 @@ Func_f580: ; f580 (3:7580)
ld a, [hl]
.asm_f5ac
- ld [wd3ab], a
+ ld [wTempNPC], a
ld [wd696], a
ret
; 0xf5b3
- INCROM $f5b3, $fc2b
+ INCROM $f5b3, $f602
+
+Func_f602: ; f602 (3:7602)
+ INCROM $f602, $fc2b
Func_fc2b: ; fc2b (3:7c2b)
ld a, [wDuelResult]