diff options
Diffstat (limited to 'src/engine/bank03.asm')
-rw-r--r-- | src/engine/bank03.asm | 264 |
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] |