From 40a51e7870bdac422da69df73fbfc2468f8d2632 Mon Sep 17 00:00:00 2001 From: hase Date: Fri, 13 Dec 2024 03:15:42 +0000 Subject: [PATCH 1/5] Fix character script --- code/script/characters/script_characters.asm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/script/characters/script_characters.asm b/code/script/characters/script_characters.asm index daefb54..86a72f0 100644 --- a/code/script/characters/script_characters.asm +++ b/code/script/characters/script_characters.asm @@ -2075,8 +2075,13 @@ loc_266CE: ; CODE XREF: ROM:000266C6j bsr.w GetYesNoAnswer bcc.s loc_266DE trap #$01 ; Trap01Handler - move.b $00000016(sp,d6.w),(a3) - +; --------------------------------------------------------------------------- + ScriptID $2CD,$0 ; Run text script at offset 0x027D90 + ; 0x1553: SET BIT 3 OF FLAG 0x02A + ; 0xA28F: PRINT MSG 0x02DC, END: "{5B}You agree? Great!!{57}It looks like I'm a drugstore{57}owner from now on!{62}" +; --------------------------------------------------------------------------- + bra.s loc_266F4 +; --------------------------------------------------------------------------- loc_266DE: ; CODE XREF: ROM:000266D6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- From 72496eb318573d8d5d2fb26a6f14c9582aebebfe Mon Sep 17 00:00:00 2001 From: hase Date: Fri, 13 Dec 2024 18:46:58 +0000 Subject: [PATCH 2/5] Move handling code out of progress flags source file Reorganise structure Add labels for script functions --- code/script/scriptflagcheck.asm | 35 ------------------- code/scripthandling/scriptfuncs3.asm | 34 ++++++++++++++++++ .../scriptfuncs4.asm | 0 landstalker_us.asm | 32 ++++++++--------- landstalker_us_expanded.asm | 32 ++++++++--------- 5 files changed, 66 insertions(+), 67 deletions(-) rename code/{script => scripthandling}/scriptfuncs4.asm (100%) diff --git a/code/script/scriptflagcheck.asm b/code/script/scriptflagcheck.asm index c0f3002..86902f9 100644 --- a/code/script/scriptflagcheck.asm +++ b/code/script/scriptflagcheck.asm @@ -56,39 +56,4 @@ GetFlagProgress: ; CODE XREF: HandleProgressDependentDialogue+4p movea.l (sp)+,a0 rts -; =============== S U B R O U T I N E ======================================= - - -PickValueBasedOnFlags: ; CODE XREF: ROM:00025320p - ; ROM:000253A0p ... - movem.l d0/a1,-(sp) - clr.b (a0) - movea.l $00000008(sp),a1 - -loc_253D4: ; CODE XREF: PickValueBasedOnFlags+16j - move.w (a1)+,d0 - blt.s loc_253EE - bsr.w TestFlagBit - bne.s loc_253E2 - addq.l #$02,a1 - bra.s loc_253D4 -; --------------------------------------------------------------------------- - -loc_253E2: ; CODE XREF: PickValueBasedOnFlags+12j - move.b (a1),(a0) - addq.l #$02,a1 - -loc_253E6: ; CODE XREF: PickValueBasedOnFlags+22j - tst.w (a1)+ - blt.s loc_253EE - addq.l #$02,a1 - bra.s loc_253E6 -; --------------------------------------------------------------------------- - -loc_253EE: ; CODE XREF: PickValueBasedOnFlags+Cj - ; PickValueBasedOnFlags+1Ej - move.l a1,$00000008(sp) - movem.l (sp)+,d0/a1 - rts -; End of function PickValueBasedOnFlags diff --git a/code/scripthandling/scriptfuncs3.asm b/code/scripthandling/scriptfuncs3.asm index 3be2f77..b058f34 100644 --- a/code/scripthandling/scriptfuncs3.asm +++ b/code/scripthandling/scriptfuncs3.asm @@ -1,4 +1,38 @@ +; =============== S U B R O U T I N E ======================================= + + +PickValueBasedOnFlags: ; CODE XREF: ROM:00025320p + ; ROM:000253A0p ... + movem.l d0/a1,-(sp) + clr.b (a0) + movea.l $00000008(sp),a1 + +loc_253D4: ; CODE XREF: PickValueBasedOnFlags+16j + move.w (a1)+,d0 + blt.s loc_253EE + bsr.w TestFlagBit + bne.s loc_253E2 + addq.l #$02,a1 + bra.s loc_253D4 +; --------------------------------------------------------------------------- +loc_253E2: ; CODE XREF: PickValueBasedOnFlags+12j + move.b (a1),(a0) + addq.l #$02,a1 + +loc_253E6: ; CODE XREF: PickValueBasedOnFlags+22j + tst.w (a1)+ + blt.s loc_253EE + addq.l #$02,a1 + bra.s loc_253E6 +; --------------------------------------------------------------------------- + +loc_253EE: ; CODE XREF: PickValueBasedOnFlags+Cj + ; PickValueBasedOnFlags+1Ej + move.l a1,$00000008(sp) + movem.l (sp)+,d0/a1 + rts +; End of function PickValueBasedOnFlags ; =============== S U B R O U T I N E ======================================= diff --git a/code/script/scriptfuncs4.asm b/code/scripthandling/scriptfuncs4.asm similarity index 100% rename from code/script/scriptfuncs4.asm rename to code/scripthandling/scriptfuncs4.asm diff --git a/landstalker_us.asm b/landstalker_us.asm index e2b4ac4..b330be2 100644 --- a/landstalker_us.asm +++ b/landstalker_us.asm @@ -72,12 +72,12 @@ ArmourPalSwaps: incbin "assets_packed\graphics\miscpalettes\armourp SwordGfxData: include "code\graphics\staticimages\swordfx.asm" Align $2 include "code\items\items1.asm" - include "code\pointertables\items\items_preusejmptable.asm" - include "code\pointertables\items\items_postusejmptable.asm" - include "code\items\items2.asm" +ItemPreUseTable: include "code\pointertables\items\items_preusejmptable.asm" +ItemPostUseTable: include "code\pointertables\items\items_postusejmptable.asm" +ItemFuncs1: include "code\items\items2.asm" LightableRooms: incbin "assets_packed\roomdata\flagactions\lanternflags.bin" Align $2 - include "code\items\items3.asm" +ItemFuncs2: include "code\items\items3.asm" include "code\gamelogic\gamelogic5.asm" DefaultPlayerPal: incbin "assets_packed\graphics\miscpalettes\defaultplayer.pal" StatusBarPal: incbin "assets_packed\graphics\static\hud\hud.pal" @@ -144,10 +144,10 @@ SpriteAnimFlags: incbin "assets_packed\spritedata\spriteanimflags.bi InputPlayback: incbin "assets_packed\misc\playbackinputtable.bin" Align $2 include "code\sprites\spritefuncs2.asm" - include "code\scripthandling\triggeractionjumptable.asm" - include "code\scripthandling\triggeractions.asm" - include "code\scripthandling\dialogueactionjumptable.asm" - include "code\scripthandling\dialogueactions.asm" +BehaviourTriggerJumpTable: include "code\scripthandling\triggeractionjumptable.asm" +BehaviourTriggerFuncs: include "code\scripthandling\triggeractions.asm" +CutsceneJumpTable: include "code\scripthandling\dialogueactionjumptable.asm" +CutsceneFuncs: include "code\scripthandling\dialogueactions.asm" include "code\gamelogic\combat.asm" include "code\graphics\hud.asm" include "code\graphics\statusanim.asm" @@ -159,10 +159,10 @@ StatusAnimData: include "code\graphics\staticimages\statusfx.asm" include "code\sprites\spritebehaviours.asm" dcb.b $200, $FF include "code\maps\loadroomsprites.asm" - include "code\maps\customroomactions1.asm" +CustomRoomActions1: include "code\maps\customroomactions1.asm" BigTreeLocations: incbin "assets_packed\roomdata\misc\bigtreelocs.bin" Align $2 - include "code\maps\customroomactions2.asm" +CustomRoomActions2: include "code\maps\customroomactions2.asm" include "code\maps\roomspriteflags.asm" SpriteVisibilityFlags: incbin "assets_packed\roomdata\flagactions\spritevisibility.bin" Align $2 @@ -201,19 +201,19 @@ ShopSpecialItemsScript: include "code\script\shops\shoptable_specialitems.as include "code\scripthandling\shops\shopscriptfuncs2.asm" ShopScript: include "code\script\shops\shoptable.asm" include "code\scripthandling\scriptfuncs1.asm" - include "code\script\shops\script_shopspecialitems.asm" +ShopSpecialItemsFuncs: include "code\script\shops\script_shopspecialitems.asm" include "code\scripthandling\scriptfuncs2.asm" - include "code\script\scriptflagcheck.asm" +ScriptProgressFlags: include "code\script\scriptflagcheck.asm" include "code\scripthandling\scriptfuncs3.asm" CutsceneScriptTable: include "code\script\cutscenes\script_cutscenetable.asm" RoomDialogueTable: incbin "assets_packed\roomdata\roomcharatertable.bin" Align $2 CharacterScriptTable: include "code\script\characters\script_charactertable.asm" - include "code\script\scriptfuncs4.asm" - include "code\script\shops\script_shops.asm" + include "code\scripthandling\scriptfuncs4.asm" +ShopScriptFuncs: include "code\script\shops\script_shops.asm" include "code\scripthandling\scriptfuncs5.asm" - include "code\script\characters\script_characters.asm" - include "code\script\cutscenes\script_cutscenes.asm" +CharacterScriptFuncs: include "code\script\characters\script_characters.asm" +CutsceneScriptFuncs: include "code\script\cutscenes\script_cutscenes.asm" Script: incbin "assets_packed\script\script.bin" Align $2 include "code\scripthandling\scriptfuncs6.asm" diff --git a/landstalker_us_expanded.asm b/landstalker_us_expanded.asm index 36314f4..368101b 100644 --- a/landstalker_us_expanded.asm +++ b/landstalker_us_expanded.asm @@ -73,12 +73,12 @@ ArmourPalSwaps: incbin "assets_packed\graphics\miscpalettes\armourp SwordGfxData: include "code\graphics\staticimages\swordfx.asm" Align $2 include "code\items\items1.asm" - include "code\pointertables\items\items_preusejmptable.asm" - include "code\pointertables\items\items_postusejmptable.asm" - include "code\items\items2.asm" +ItemPreUseTable: include "code\pointertables\items\items_preusejmptable.asm" +ItemPostUseTable: include "code\pointertables\items\items_postusejmptable.asm" +ItemFuncs1: include "code\items\items2.asm" LightableRooms: incbin "assets_packed\roomdata\flagactions\lanternflags.bin" Align $2 - include "code\items\items3.asm" +ItemFuncs2: include "code\items\items3.asm" include "code\gamelogic\gamelogic5.asm" DefaultPlayerPal: incbin "assets_packed\graphics\miscpalettes\defaultplayer.pal" StatusBarPal: incbin "assets_packed\graphics\static\hud\hud.pal" @@ -141,10 +141,10 @@ SpriteAnimFlags: incbin "assets_packed\spritedata\spriteanimflags.bi InputPlayback: incbin "assets_packed\misc\playbackinputtable.bin" Align $2 include "code\sprites\spritefuncs2.asm" - include "code\scripthandling\triggeractionjumptable.asm" - include "code\scripthandling\triggeractions.asm" - include "code\scripthandling\dialogueactionjumptable.asm" - include "code\scripthandling\dialogueactions.asm" +BehaviourTriggerJumpTable: include "code\scripthandling\triggeractionjumptable.asm" +BehaviourTriggerFuncs: include "code\scripthandling\triggeractions.asm" +CutsceneJumpTable: include "code\scripthandling\dialogueactionjumptable.asm" +CutsceneFuncs: include "code\scripthandling\dialogueactions.asm" include "code\gamelogic\combat.asm" include "code\graphics\hud.asm" include "code\graphics\statusanim.asm" @@ -155,10 +155,10 @@ StatusAnimData: include "code\graphics\staticimages\statusfx.asm" include "code\sprites\spritebehaviourjumptable.asm" include "code\sprites\spritebehaviours.asm" include "code\maps\loadroomsprites.asm" - include "code\maps\customroomactions1.asm" +CustomRoomActions1: include "code\maps\customroomactions1.asm" BigTreeLocations: incbin "assets_packed\roomdata\misc\bigtreelocs.bin" Align $2 - include "code\maps\customroomactions2.asm" +CustomRoomActions2: include "code\maps\customroomactions2.asm" include "code\maps\roomspriteflags.asm" SpriteVisibilityFlags: incbin "assets_packed\roomdata\flagactions\spritevisibility.bin" Align $2 @@ -196,19 +196,19 @@ ShopSpecialItemsScript: include "code\script\shops\shoptable_specialitems.as include "code\scripthandling\shops\shopscriptfuncs2.asm" ShopScript: include "code\script\shops\shoptable.asm" include "code\scripthandling\scriptfuncs1.asm" - include "code\script\shops\script_shopspecialitems.asm" +ShopSpecialItemsFuncs: include "code\script\shops\script_shopspecialitems.asm" include "code\scripthandling\scriptfuncs2.asm" - include "code\script\scriptflagcheck.asm" +ScriptProgressFlags: include "code\script\scriptflagcheck.asm" include "code\scripthandling\scriptfuncs3.asm" CutsceneScriptTable: include "code\script\cutscenes\script_cutscenetable.asm" RoomDialogueTable: incbin "assets_packed\roomdata\roomcharatertable.bin" Align $2 CharacterScriptTable: include "code\script\characters\script_charactertable.asm" - include "code\script\scriptfuncs4.asm" - include "code\script\shops\script_shops.asm" + include "code\scripthandling\scriptfuncs4.asm" +ShopScriptFuncs: include "code\script\shops\script_shops.asm" include "code\scripthandling\scriptfuncs5.asm" - include "code\script\characters\script_characters.asm" - include "code\script\cutscenes\script_cutscenes.asm" +CharacterScriptFuncs: include "code\script\characters\script_characters.asm" +CutsceneScriptFuncs: include "code\script\cutscenes\script_cutscenes.asm" Script: incbin "assets_packed\script\script.bin" Align $2 include "code\scripthandling\scriptfuncs6.asm" From 92bfef001de1f75921f08c838090652db4197a96 Mon Sep 17 00:00:00 2001 From: hase Date: Sat, 14 Dec 2024 01:06:48 +0000 Subject: [PATCH 3/5] Fix broken script --- code/script/characters/script_characters.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/script/characters/script_characters.asm b/code/script/characters/script_characters.asm index 86a72f0..34de5ce 100644 --- a/code/script/characters/script_characters.asm +++ b/code/script/characters/script_characters.asm @@ -4541,7 +4541,7 @@ CS_011E: ScriptID $4CD,$2 ; Flag set: Run text script at offset 0x028190 ; 0xE461: PRINT MSG 0x04AE, MSGBOX CLEARED, END: "{5B}ahead and save the princess.{57}The duke has taken Miss Lara{57}prisoner...please find her!{5E}" ; --------------------------------------------------------------------------- - ScriptID $22FF,$3 + rts ; --------------------------------------------------------------------------- CS_011F: From caac6d2d0b726d0b2524b2eaf459ab20a5882e0a Mon Sep 17 00:00:00 2001 From: hase Date: Thu, 19 Dec 2024 20:13:53 +0000 Subject: [PATCH 4/5] Add label for global defines Consolidate Friday animation tables Remove unnecessary align directives --- code/misc/fridayanimationdata.asm | 30 +++++++++++++ landstalker_us.asm | 70 +------------------------------ landstalker_us_expanded.asm | 66 +---------------------------- 3 files changed, 34 insertions(+), 132 deletions(-) create mode 100644 code/misc/fridayanimationdata.asm diff --git a/code/misc/fridayanimationdata.asm b/code/misc/fridayanimationdata.asm new file mode 100644 index 0000000..e5dc8de --- /dev/null +++ b/code/misc/fridayanimationdata.asm @@ -0,0 +1,30 @@ +FridayAnimation1: incbin "assets_packed\misc\fridayanim\fridayanim01.bin" + Align $2 +FridayAnimation2: incbin "assets_packed\misc\fridayanim\fridayanim02.bin" + Align $2 +FridayAnimation3: incbin "assets_packed\misc\fridayanim\fridayanim03.bin" + Align $2 +FridayAnimation4: incbin "assets_packed\misc\fridayanim\fridayanim04.bin" + Align $2 +FridayAnimation5: incbin "assets_packed\misc\fridayanim\fridayanim05.bin" + Align $2 +FridayAnimation6: incbin "assets_packed\misc\fridayanim\fridayanim06.bin" + Align $2 +FridayAnimation7: incbin "assets_packed\misc\fridayanim\fridayanim07.bin" + Align $2 +FridayAnimation8: incbin "assets_packed\misc\fridayanim\fridayanim08.bin" + Align $2 +FridayAnimation9: incbin "assets_packed\misc\fridayanim\fridayanim09.bin" + Align $2 +FridayAnimation10: incbin "assets_packed\misc\fridayanim\fridayanim10.bin" + Align $2 +FridayAnimation11: incbin "assets_packed\misc\fridayanim\fridayanim11.bin" + Align $2 +FridayAnimation12: incbin "assets_packed\misc\fridayanim\fridayanim12.bin" + Align $2 +FridayAnimation13: incbin "assets_packed\misc\fridayanim\fridayanim13.bin" + Align $2 +FridayAnimation14: incbin "assets_packed\misc\fridayanim\fridayanim14.bin" + Align $2 +FridayAnimation15: incbin "assets_packed\misc\fridayanim\fridayanim15.bin" + Align $2 \ No newline at end of file diff --git a/landstalker_us.asm b/landstalker_us.asm index b330be2..0770dd9 100644 --- a/landstalker_us.asm +++ b/landstalker_us.asm @@ -5,7 +5,7 @@ ;; To build, run: ;; .\build\asm68k.exe /p /o ae-,e+,w+,c+,op+,os+,ow+,oz+,l_ /e EXPANDED=0 landstalker.asm,landstalker.bin - include "code\include\landstalker.inc" +Defines: include "code\include\landstalker.inc" include "code\include\ram.inc" include "code\include\macros.inc" @@ -22,46 +22,13 @@ LavaPaletteRotation: incbin "assets_packed\graphics\miscpalettes\lavapal LabrynthLitPal: incbin "assets_packed\graphics\miscpalettes\labrynthlit.pal" include "code\gamelogic\gamelogic2.asm" include "code\misc\fridayanimation.asm" -FridayAnimation1: incbin "assets_packed\misc\fridayanim\fridayanim01.bin" - Align $2 -FridayAnimation2: incbin "assets_packed\misc\fridayanim\fridayanim02.bin" - Align $2 -FridayAnimation3: incbin "assets_packed\misc\fridayanim\fridayanim03.bin" - Align $2 -FridayAnimation4: incbin "assets_packed\misc\fridayanim\fridayanim04.bin" - Align $2 -FridayAnimation5: incbin "assets_packed\misc\fridayanim\fridayanim05.bin" - Align $2 -FridayAnimation6: incbin "assets_packed\misc\fridayanim\fridayanim06.bin" - Align $2 -FridayAnimation7: incbin "assets_packed\misc\fridayanim\fridayanim07.bin" - Align $2 -FridayAnimation8: incbin "assets_packed\misc\fridayanim\fridayanim08.bin" - Align $2 -FridayAnimation9: incbin "assets_packed\misc\fridayanim\fridayanim09.bin" - Align $2 -FridayAnimation10: incbin "assets_packed\misc\fridayanim\fridayanim10.bin" - Align $2 -FridayAnimation11: incbin "assets_packed\misc\fridayanim\fridayanim11.bin" - Align $2 -FridayAnimation12: incbin "assets_packed\misc\fridayanim\fridayanim12.bin" - Align $2 -FridayAnimation13: incbin "assets_packed\misc\fridayanim\fridayanim13.bin" - Align $2 -FridayAnimation14: incbin "assets_packed\misc\fridayanim\fridayanim14.bin" - Align $2 -FridayAnimation15: incbin "assets_packed\misc\fridayanim\fridayanim15.bin" - Align $2 +FridayAnimationData: include "code\misc\fridayanimationdata.asm" include "code\gamelogic\gamelogic3.asm" include "code\maps\mapflagchanges.asm" RoomGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\roomgfxswapflags.bin" - Align $2 LockedDoorGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\lockeddoorgfxswapflags.bin" - Align $2 TreeWarpGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\treewarpgfxswapflags.bin" - Align $2 TileSwaps: incbin "assets_packed\roomdata\flagactions\tileswaps.bin" - Align $2 include "code\gamelogic\gamelogic4.asm" include "code\inventory\inventory1.asm" InvItemPal: incbin "assets_packed\graphics\static\inventory\invitempal.pal" @@ -76,7 +43,6 @@ ItemPreUseTable: include "code\pointertables\items\items_preusejmptab ItemPostUseTable: include "code\pointertables\items\items_postusejmptable.asm" ItemFuncs1: include "code\items\items2.asm" LightableRooms: incbin "assets_packed\roomdata\flagactions\lanternflags.bin" - Align $2 ItemFuncs2: include "code\items\items3.asm" include "code\gamelogic\gamelogic5.asm" DefaultPlayerPal: incbin "assets_packed\graphics\miscpalettes\defaultplayer.pal" @@ -87,38 +53,26 @@ StatusBarGfx: incbin "assets_packed\graphics\static\hud\hud.lz77" Align $2 include "code\maps\doors.asm" DoorLookup: incbin "assets_packed\roomdata\misc\doorlookup.bin" - Align $2 DoorTable: incbin "assets_packed\roomdata\misc\doortable.bin" Align $2 include "code\gamelogic\shops\shops1.asm" Shops: incbin "assets_packed\roomdata\misc\shops.bin" - Align $2 include "code\gamelogic\shops\shops2.asm" LifestockSoldFlags: incbin "assets_packed\roomdata\flagactions\lifestocksoldflags.bin" - Align $2 include "code\maps\animtilesets.asm" AnimatedTilesetTable: include "code\maps\animtilesettbl.asm" - Align $2 include "code\maps\room1.asm" RoomFallDestination: incbin "assets_packed\roomdata\warps\roomfalldests.bin" - Align $2 RoomClimbDestination: incbin "assets_packed\roomdata\warps\roomclimbdests.bin" - Align $2 RoomTransitionLookup: incbin "assets_packed\roomdata\flagactions\roomtransitions.bin" - Align $2 include "code\blocks\loadisometricblocks1.asm" VDPCopyBlockCmds: incbin "assets_packed\misc\data\vdpcopyblockcmds.bin" - Align $2 TopLeftMapOffsets: incbin "assets_packed\misc\data\ulmapoffsets.bin" - Align $2 BottomMapOffsets: incbin "assets_packed\misc\data\dmapoffsets.bin" - Align $2 RightMapOffsets: incbin "assets_packed\misc\data\rmapoffsets.bin" - Align $2 include "code\blocks\loadisometricblocks2.asm" IntroStrings: include "code\text\introstrings.asm" RoomVisitedFlagLookup: incbin "assets_packed\roomdata\flagactions\roomvisitflags.bin" - Align $2 include "code\maps\mapdecompress.asm" include "code\blocks\blockdecompress.asm" include "code\inventory\inventory3.asm" @@ -139,10 +93,8 @@ GameLoadScreen: include "code\title\gameloadscreen.asm" include "code\sprites\spritefuncsjumptable.asm" include "code\sprites\spritefuncs1.asm" SpriteAnimFlags: incbin "assets_packed\spritedata\spriteanimflags.bin" - Align $2 include "code\gamelogic\playbackinput.asm" InputPlayback: incbin "assets_packed\misc\playbackinputtable.bin" - Align $2 include "code\sprites\spritefuncs2.asm" BehaviourTriggerJumpTable: include "code\scripthandling\triggeractionjumptable.asm" BehaviourTriggerFuncs: include "code\scripthandling\triggeractions.asm" @@ -161,29 +113,21 @@ StatusAnimData: include "code\graphics\staticimages\statusfx.asm" include "code\maps\loadroomsprites.asm" CustomRoomActions1: include "code\maps\customroomactions1.asm" BigTreeLocations: incbin "assets_packed\roomdata\misc\bigtreelocs.bin" - Align $2 CustomRoomActions2: include "code\maps\customroomactions2.asm" include "code\maps\roomspriteflags.asm" SpriteVisibilityFlags: incbin "assets_packed\roomdata\flagactions\spritevisibility.bin" - Align $2 OneTimeEventFlags: incbin "assets_packed\roomdata\flagactions\onetime.bin" - Align $2 RoomClearFlags: incbin "assets_packed\roomdata\flagactions\roomcleared.bin" - Align $2 LockedDoorSpriteFlags: incbin "assets_packed\roomdata\flagactions\lockeddoorsprites.bin" - Align $2 PermanentSwitchFlags: incbin "assets_packed\roomdata\flagactions\permanentswitches.bin" - Align $2 SacredTreeFlags: incbin "assets_packed\roomdata\flagactions\sacredtrees.bin" SpriteGfxIdxLookup: incbin "assets_packed\spritedata\spritegfx.bin" SpriteDimensionsLookup: incbin "assets_packed\spritedata\spritedimensions.bin" Align $2 RoomSpriteTableOffset: incbin "assets_packed\spritedata\roomtableoffsets.bin" EnemyStats: incbin "assets_packed\spritedata\enemystats.bin" - Align $2 RoomSpriteTable: incbin "assets_packed\spritedata\roomspritetable.bin" dcb.b $30, $FF - Align $2 StringPtrs: include "code\pointertables\strings\stringbankptr.asm" include "code\text\stringfuncsjumptable.asm" include "code\text\stringfuncs1.asm" @@ -207,7 +151,6 @@ ScriptProgressFlags: include "code\script\scriptflagcheck.asm" include "code\scripthandling\scriptfuncs3.asm" CutsceneScriptTable: include "code\script\cutscenes\script_cutscenetable.asm" RoomDialogueTable: incbin "assets_packed\roomdata\roomcharatertable.bin" - Align $2 CharacterScriptTable: include "code\script\characters\script_charactertable.asm" include "code\scripthandling\scriptfuncs4.asm" ShopScriptFuncs: include "code\script\shops\script_shops.asm" @@ -215,26 +158,19 @@ ShopScriptFuncs: include "code\script\shops\script_shops.asm" CharacterScriptFuncs: include "code\script\characters\script_characters.asm" CutsceneScriptFuncs: include "code\script\cutscenes\script_cutscenes.asm" Script: incbin "assets_packed\script\script.bin" - Align $2 include "code\scripthandling\scriptfuncs6.asm" SpriteIdToTalkSfx: incbin "assets_packed\script\spritetalksfx.bin" - Align $2 include "code\scripthandling\scriptfuncs7.asm" SpecialCharacterSfxList: incbin "assets_packed\script\charactertalksfx.bin" - Align $2 include "code\scripthandling\scriptfuncs8.asm" ItemProperties: incbin "assets_packed\script\items.bin" - Align $2 include "code\scripthandling\scriptfuncs9.asm" SaveGameLocations: incbin "assets_packed\script\savegamelocations.bin" - Align $2 include "code\scripthandling\islandmaplocations.asm" IslandMapLocations: incbin "assets_packed\script\islandmaplocations.bin" - Align $2 StringTables: include "code\text\stringtables.asm" include "code\scripthandling\script_visualfx.asm" SineTable: incbin "assets_packed\misc\data\sinetable.bin" - Align $2 include "code\misc\debugmenu.asm" StringData: include "code\text\strings.asm" Align $2 @@ -275,12 +211,10 @@ RoomMaps: include "code\graphics\roommaps.asm" Align $2 RoomPals: include "code\palettes\roompals.asm" RoomExits: incbin "assets_packed\roomdata\warps\exits.bin" - Align $2 RegionCheck: include "code\system\regioncheck.asm" PadTo $120000 include "code\pointertables\sprites\spritegraphicsptr.asm" SpriteGfxOffsetTable: incbin "assets_packed\spritedata\spritegfxoffsettable.bin" - Align $2 SpriteAnimationPtrs: include "code\pointertables\sprites\spriteanimations.asm" SpriteFramePtrs: include "code\pointertables\sprites\spriteanimationframes.asm" SpriteFrames: include "code\sprites\spriteframes.asm" diff --git a/landstalker_us_expanded.asm b/landstalker_us_expanded.asm index 368101b..33261a4 100644 --- a/landstalker_us_expanded.asm +++ b/landstalker_us_expanded.asm @@ -5,7 +5,7 @@ ;; To build, run: ;; .\build\asm68k.exe /p /o ae-,e+,w+,c+,op+,os+,ow+,oz+,l_ /e EXPANDED=1 landstalker_expanded.asm,landstalker_expanded.bin - include "code\include\landstalker.inc" +Defines: include "code\include\landstalker.inc" include "code\include\ram.inc" include "code\include\macros.inc" @@ -22,47 +22,13 @@ LavaPaletteRotation: incbin "assets_packed\graphics\miscpalettes\lavapal LabrynthLitPal: incbin "assets_packed\graphics\miscpalettes\labrynthlit.pal" include "code\gamelogic\gamelogic2.asm" include "code\misc\fridayanimation.asm" -FridayAnimation1: incbin "assets_packed\misc\fridayanim\fridayanim01.bin" - Align $2 -FridayAnimation2: incbin "assets_packed\misc\fridayanim\fridayanim02.bin" - Align $2 -FridayAnimation3: incbin "assets_packed\misc\fridayanim\fridayanim03.bin" - Align $2 -FridayAnimation4: incbin "assets_packed\misc\fridayanim\fridayanim04.bin" - Align $2 -FridayAnimation5: incbin "assets_packed\misc\fridayanim\fridayanim05.bin" - Align $2 -FridayAnimation6: incbin "assets_packed\misc\fridayanim\fridayanim06.bin" - Align $2 -FridayAnimation7: incbin "assets_packed\misc\fridayanim\fridayanim07.bin" - Align $2 -FridayAnimation8: incbin "assets_packed\misc\fridayanim\fridayanim08.bin" - Align $2 -FridayAnimation9: incbin "assets_packed\misc\fridayanim\fridayanim09.bin" - Align $2 -FridayAnimation10: incbin "assets_packed\misc\fridayanim\fridayanim10.bin" - Align $2 -FridayAnimation11: incbin "assets_packed\misc\fridayanim\fridayanim11.bin" - Align $2 -FridayAnimation12: incbin "assets_packed\misc\fridayanim\fridayanim12.bin" - Align $2 -FridayAnimation13: incbin "assets_packed\misc\fridayanim\fridayanim13.bin" - Align $2 -FridayAnimation14: incbin "assets_packed\misc\fridayanim\fridayanim14.bin" - Align $2 -FridayAnimation15: incbin "assets_packed\misc\fridayanim\fridayanim15.bin" - Align $2 +FridayAnimationData: include "code\misc\fridayanimationdata.asm" include "code\gamelogic\gamelogic3.asm" include "code\maps\mapflagchanges.asm" - Align $2 RoomGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\roomgfxswapflags.bin" - Align $2 LockedDoorGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\lockeddoorgfxswapflags.bin" - Align $2 TreeWarpGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\treewarpgfxswapflags.bin" - Align $2 TileSwaps: incbin "assets_packed\roomdata\flagactions\tileswaps.bin" - Align $2 include "code\gamelogic\gamelogic4.asm" include "code\inventory\inventory1.asm" InvItemPal: incbin "assets_packed\graphics\static\inventory\invitempal.pal" @@ -88,38 +54,29 @@ StatusBarGfx: incbin "assets_packed\graphics\static\hud\hud.lz77" Align $2 include "code\maps\doors.asm" DoorLookup: incbin "assets_packed\roomdata\misc\doorlookup.bin" - Align $2 DoorTable: incbin "assets_packed\roomdata\misc\doortable.bin" Align $2 include "code\gamelogic\shops\shops1.asm" Shops: incbin "assets_packed\roomdata\misc\shops.bin" - Align $2 include "code\gamelogic\shops\shops2.asm" LifestockSoldFlags: incbin "assets_packed\roomdata\flagactions\lifestocksoldflags.bin" - Align $2 include "code\maps\animtilesets.asm" AnimatedTilesetTable: include "code\maps\animtilesettbl.asm" include "code\maps\room1.asm" RoomFallDestination: incbin "assets_packed\roomdata\warps\roomfalldests.bin" - Align $2 RoomClimbDestination: incbin "assets_packed\roomdata\warps\roomclimbdests.bin" - Align $2 RoomTransitionLookup: incbin "assets_packed\roomdata\flagactions\roomtransitions.bin" - Align $2 include "code\blocks\loadisometricblocks1.asm" VDPCopyBlockCmds: incbin "assets_packed\misc\data\vdpcopyblockcmds.bin" TopLeftMapOffsets: incbin "assets_packed\misc\data\ulmapoffsets.bin" BottomMapOffsets: incbin "assets_packed\misc\data\dmapoffsets.bin" RightMapOffsets: incbin "assets_packed\misc\data\rmapoffsets.bin" - Align $2 include "code\blocks\loadisometricblocks2.asm" IntroStrings: include "code\text\introstrings.asm" RoomVisitedFlagLookup: incbin "assets_packed\roomdata\flagactions\roomvisitflags.bin" - Align $2 include "code\maps\mapdecompress.asm" include "code\blocks\blockdecompress.asm" include "code\inventory\inventory3.asm" - Align $2 InventoryItems: incbin "assets_packed\misc\inventory\inventoryitems.bin" Align $2 include "code\inventory\inventory4.asm" @@ -136,10 +93,8 @@ GameLoadScreen: include "code\title\gameloadscreen.asm" include "code\sprites\spritefuncsjumptable.asm" include "code\sprites\spritefuncs1.asm" SpriteAnimFlags: incbin "assets_packed\spritedata\spriteanimflags.bin" - Align $2 include "code\gamelogic\playbackinput.asm" InputPlayback: incbin "assets_packed\misc\playbackinputtable.bin" - Align $2 include "code\sprites\spritefuncs2.asm" BehaviourTriggerJumpTable: include "code\scripthandling\triggeractionjumptable.asm" BehaviourTriggerFuncs: include "code\scripthandling\triggeractions.asm" @@ -157,28 +112,20 @@ StatusAnimData: include "code\graphics\staticimages\statusfx.asm" include "code\maps\loadroomsprites.asm" CustomRoomActions1: include "code\maps\customroomactions1.asm" BigTreeLocations: incbin "assets_packed\roomdata\misc\bigtreelocs.bin" - Align $2 CustomRoomActions2: include "code\maps\customroomactions2.asm" include "code\maps\roomspriteflags.asm" SpriteVisibilityFlags: incbin "assets_packed\roomdata\flagactions\spritevisibility.bin" - Align $2 OneTimeEventFlags: incbin "assets_packed\roomdata\flagactions\onetime.bin" - Align $2 RoomClearFlags: incbin "assets_packed\roomdata\flagactions\roomcleared.bin" - Align $2 LockedDoorSpriteFlags: incbin "assets_packed\roomdata\flagactions\lockeddoorsprites.bin" - Align $2 PermanentSwitchFlags: incbin "assets_packed\roomdata\flagactions\permanentswitches.bin" - Align $2 SacredTreeFlags: incbin "assets_packed\roomdata\flagactions\sacredtrees.bin" SpriteGfxIdxLookup: incbin "assets_packed\spritedata\spritegfx.bin" SpriteDimensionsLookup: incbin "assets_packed\spritedata\spritedimensions.bin" Align $2 RoomSpriteTableOffset: incbin "assets_packed\spritedata\roomtableoffsets.bin" EnemyStats: incbin "assets_packed\spritedata\enemystats.bin" - Align $2 RoomSpriteTable: incbin "assets_packed\spritedata\roomspritetable.bin" - Align $2 StringPtrs: include "code\pointertables\strings\stringbankptr.asm" include "code\text\stringfuncsjumptable.asm" include "code\text\stringfuncs1.asm" @@ -202,7 +149,6 @@ ScriptProgressFlags: include "code\script\scriptflagcheck.asm" include "code\scripthandling\scriptfuncs3.asm" CutsceneScriptTable: include "code\script\cutscenes\script_cutscenetable.asm" RoomDialogueTable: incbin "assets_packed\roomdata\roomcharatertable.bin" - Align $2 CharacterScriptTable: include "code\script\characters\script_charactertable.asm" include "code\scripthandling\scriptfuncs4.asm" ShopScriptFuncs: include "code\script\shops\script_shops.asm" @@ -210,25 +156,19 @@ ShopScriptFuncs: include "code\script\shops\script_shops.asm" CharacterScriptFuncs: include "code\script\characters\script_characters.asm" CutsceneScriptFuncs: include "code\script\cutscenes\script_cutscenes.asm" Script: incbin "assets_packed\script\script.bin" - Align $2 include "code\scripthandling\scriptfuncs6.asm" SpriteIdToTalkSfx: incbin "assets_packed\script\spritetalksfx.bin" - Align $2 include "code\scripthandling\scriptfuncs7.asm" SpecialCharacterSfxList: incbin "assets_packed\script\charactertalksfx.bin" - Align $2 include "code\scripthandling\scriptfuncs8.asm" ItemProperties: incbin "assets_packed\script\items.bin" - Align $2 include "code\scripthandling\scriptfuncs9.asm" SaveGameLocations: incbin "assets_packed\script\savegamelocations.bin" - Align $2 include "code\scripthandling\islandmaplocations.asm" IslandMapLocations: incbin "assets_packed\script\islandmaplocations.bin" StringTables: include "code\text\stringtables.asm" include "code\scripthandling\script_visualfx.asm" SineTable: incbin "assets_packed\misc\data\sinetable.bin" - Align $2 include "code\misc\debugmenu.asm" StringData: include "code\text\strings.asm" Align $2 @@ -265,11 +205,9 @@ RoomData_0: include "code\pointertables\maps\roomlist.asm" RoomMaps: include "code\graphics\roommaps.asm" RoomPals: include "code\palettes\roompals.asm" RoomExits: incbin "assets_packed\roomdata\warps\exits.bin" - Align $2 RegionCheck: include "code\system\regioncheck.asm" include "code\pointertables\sprites\spritegraphicsptr.asm" SpriteGfxOffsetTable: incbin "assets_packed\spritedata\spritegfxoffsettable.bin" - Align $2 SpriteAnimationPtrs: include "code\pointertables\sprites\spriteanimations.asm" SpriteFramePtrs: include "code\pointertables\sprites\spriteanimationframes.asm" SpriteFrames: include "code\sprites\spriteframes.asm" From 0240d423adca8baafcef45658f72b9a088960967 Mon Sep 17 00:00:00 2001 From: hase Date: Wed, 1 Jan 2025 12:40:54 +0000 Subject: [PATCH 5/5] Updated from latest IDB --- code/blocks/loadisometricblocks1.asm | 4 +- code/blocks/loadisometricblocks2.asm | 12 +- code/ending/endcredits1.asm | 2 +- code/ending/endcredits2.asm | 2 +- code/gamelogic/ai/enemies/bubble1.asm | 69 + code/gamelogic/ai/enemies/bubble2.asm | 93 + code/gamelogic/ai/enemies/bubble3.asm | 103 + code/gamelogic/ai/enemies/duke.asm | 241 + code/gamelogic/ai/enemies/fireball.asm | 9 + code/gamelogic/ai/enemies/ghost1.asm | 157 + code/gamelogic/ai/enemies/ghost2.asm | 198 + code/gamelogic/ai/enemies/ghost3.asm | 198 + code/gamelogic/ai/enemies/ghostgen.asm | 69 + code/gamelogic/ai/enemies/giant1.asm | 244 + code/gamelogic/ai/enemies/giant2.asm | 262 + code/gamelogic/ai/enemies/giant3.asm | 278 + code/gamelogic/ai/enemies/gola.asm | 668 + code/gamelogic/ai/enemies/golem1.asm | 132 + code/gamelogic/ai/enemies/golem2.asm | 134 + code/gamelogic/ai/enemies/harpy1.asm | 237 + code/gamelogic/ai/enemies/harpy2.asm | 237 + code/gamelogic/ai/enemies/harpy3.asm | 237 + code/gamelogic/ai/enemies/ifrit.asm | 500 + code/gamelogic/ai/enemies/knight1.asm | 247 + code/gamelogic/ai/enemies/knight2.asm | 246 + code/gamelogic/ai/enemies/knight3.asm | 241 + code/gamelogic/ai/enemies/lizard1.asm | 262 + code/gamelogic/ai/enemies/lizard2.asm | 240 + code/gamelogic/ai/enemies/lizard3.asm | 257 + code/gamelogic/ai/enemies/mimic1.asm | 389 + code/gamelogic/ai/enemies/mimic2.asm | 403 + code/gamelogic/ai/enemies/mimic3.asm | 403 + code/gamelogic/ai/enemies/mir.asm | 175 + code/gamelogic/ai/enemies/miro.asm | 345 + code/gamelogic/ai/enemies/mummy1.asm | 316 + code/gamelogic/ai/enemies/mummy2.asm | 316 + code/gamelogic/ai/enemies/mummy3.asm | 268 + code/gamelogic/ai/enemies/mushroom1.asm | 355 + code/gamelogic/ai/enemies/mushroom2.asm | 356 + code/gamelogic/ai/enemies/mushroom3.asm | 360 + code/gamelogic/ai/enemies/ninja1.asm | 246 + code/gamelogic/ai/enemies/ninja2.asm | 310 + code/gamelogic/ai/enemies/ninja3.asm | 315 + code/gamelogic/ai/enemies/nole.asm | 404 + code/gamelogic/ai/enemies/orc1.asm | 234 + code/gamelogic/ai/enemies/orc2.asm | 256 + code/gamelogic/ai/enemies/orc3.asm | 251 + code/gamelogic/ai/enemies/reaper1.asm | 287 + code/gamelogic/ai/enemies/reaper2.asm | 287 + code/gamelogic/ai/enemies/reaper3.asm | 287 + code/gamelogic/ai/enemies/skeleton1.asm | 279 + code/gamelogic/ai/enemies/skeleton2.asm | 270 + code/gamelogic/ai/enemies/skeleton3.asm | 255 + code/gamelogic/ai/enemies/spectre1.asm | 282 + code/gamelogic/ai/enemies/spectre2.asm | 282 + code/gamelogic/ai/enemies/spectre3.asm | 282 + code/gamelogic/ai/enemies/spinner.asm | 256 + code/gamelogic/ai/enemies/stonewarrior.asm | 273 + code/gamelogic/ai/enemies/unicorn1.asm | 268 + code/gamelogic/ai/enemies/unicorn2.asm | 268 + code/gamelogic/ai/enemies/unicorn3.asm | 268 + code/gamelogic/ai/enemies/worm1.asm | 363 + code/gamelogic/ai/enemies/worm2.asm | 408 + code/gamelogic/ai/enemies/worm3.asm | 415 + code/gamelogic/ai/enemies/zak.asm | 387 + code/gamelogic/ai/enemies1.asm | 21 + code/gamelogic/ai/enemies2.asm | 2 + code/gamelogic/ai/enemies3.asm | 21 + code/gamelogic/ai/enemies4.asm | 17 + code/gamelogic/ai/enemyai1.asm | 12449 +--------------- code/gamelogic/ai/enemyai2.asm | 5369 +------ code/gamelogic/ai/enemyai3.asm | 31 + code/gamelogic/ai/enemyai4.asm | 69 + code/gamelogic/ai/enemyai5.asm | 31 + code/gamelogic/combat.asm | 198 +- code/gamelogic/gamefuncs.asm | 16 +- code/gamelogic/gamelogic1.asm | 195 +- code/gamelogic/gamelogic2.asm | 14 +- code/gamelogic/gamelogic3.asm | 114 +- code/gamelogic/gamelogic4.asm | 716 +- code/gamelogic/gamelogic5.asm | 22 +- code/gamelogic/gamelogic6.asm | 22 +- code/gamelogic/shops/shops1.asm | 5 +- code/graphics/hud.asm | 24 +- .../staticimages/islandmaproutines.asm | 16 +- code/graphics/staticimages/lithograph.asm | 2 +- code/graphics/staticimages/segalogo1.asm | 2 +- code/graphics/staticimages/titlescreen1.asm | 6 +- code/graphics/statusanim.asm | 2 +- code/graphics/visualeffects1.asm | 134 +- code/graphics/visualeffects2.asm | 14 +- code/include/landstalker.inc | 50 +- code/include/ram.inc | 18 +- code/inventory/inventory1.asm | 8 +- code/inventory/inventory3.asm | 8 +- code/inventory/inventory4.asm | 22 +- code/inventory/inventory5.asm | 10 +- code/inventory/inventory6.asm | 16 +- code/items/items2.asm | 4 +- code/items/items3.asm | 58 +- code/maps/animtilesets.asm | 10 +- code/maps/chests1.asm | 4 +- code/maps/chests2.asm | 2 +- code/maps/customroomactions1.asm | 223 +- code/maps/customroomactions2.asm | 116 +- code/maps/doors.asm | 2 +- code/maps/lavapalette.asm | 2 +- code/maps/loadroomsprites.asm | 164 +- code/maps/mapflagchanges.asm | 76 +- code/maps/mapflagdata.asm | 8 + code/maps/mapload.asm | 56 +- code/maps/room1.asm | 66 +- code/maps/roomspriteflags.asm | 54 +- code/misc/debugmenu.asm | 20 +- code/pointertables/maps/mappointers.asm | 2 +- code/pointertables/maps/roomlist.asm | 2 +- .../sprites/spritegraphicsptr.asm | 2 +- .../pointertables/strings/introstringptrs.asm | 2 +- code/script/characters/script_characters.asm | 485 +- code/script/cutscenes/script_cutscenes.asm | 390 +- code/script/scriptflagcheck.asm | 2 - code/script/shops/script_shops.asm | 10 +- code/script/shops/script_shopspecialitems.asm | 4 +- code/script/shops/shoptable.asm | 2 +- code/script/shops/shoptable_specialitems.asm | 40 +- code/scripthandling/dialogueactions.asm | 342 +- code/scripthandling/scriptfuncs1.asm | 2 - code/scripthandling/scriptfuncs2.asm | 6 +- code/scripthandling/scriptfuncs3.asm | 3 + code/scripthandling/scriptfuncs4.asm | 8 +- code/scripthandling/scriptfuncs6.asm | 54 +- code/scripthandling/scriptfuncs8.asm | 18 +- code/scripthandling/scriptfuncs9.asm | 18 +- .../scripthandling/shops/shopscriptfuncs1.asm | 2 +- .../scripthandling/shops/shopscriptfuncs2.asm | 2 +- .../scripthandling/triggeractionjumptable.asm | 2 +- code/scripthandling/triggeractions.asm | 33 +- code/sprites/spritebehaviourjumptable.asm | 218 +- code/sprites/spritebehaviours.asm | 1104 +- code/sprites/spritefuncs1.asm | 267 +- code/sprites/spritefuncs2.asm | 18 +- code/sprites/spritefuncsjumptable.asm | 88 +- code/sprites/spritefuncsjumptable2.asm | 4 +- code/sprites/sprites1.asm | 8 +- code/system/header.asm | 92 +- code/system/regioncheck_routine.asm | 18 +- code/system/regioncheck_strings.asm | 24 +- code/system/savegame.asm | 6 +- code/system/system.asm | 28 +- code/system/system_jmps.asm | 48 +- code/system/vector_table.asm | 90 + code/text/stringfuncs1.asm | 96 +- code/text/stringfuncs2.asm | 12 +- code/text/stringfuncs3.asm | 8 +- code/text/stringfuncsjumptable.asm | 58 +- code/title/gameloadscreen1.asm | 4 +- code/title/gameloadscreen2.asm | 4 +- landstalker_us.asm | 10 +- landstalker_us_expanded.asm | 10 +- 159 files changed, 20460 insertions(+), 20393 deletions(-) create mode 100644 code/gamelogic/ai/enemies/bubble1.asm create mode 100644 code/gamelogic/ai/enemies/bubble2.asm create mode 100644 code/gamelogic/ai/enemies/bubble3.asm create mode 100644 code/gamelogic/ai/enemies/duke.asm create mode 100644 code/gamelogic/ai/enemies/fireball.asm create mode 100644 code/gamelogic/ai/enemies/ghost1.asm create mode 100644 code/gamelogic/ai/enemies/ghost2.asm create mode 100644 code/gamelogic/ai/enemies/ghost3.asm create mode 100644 code/gamelogic/ai/enemies/ghostgen.asm create mode 100644 code/gamelogic/ai/enemies/giant1.asm create mode 100644 code/gamelogic/ai/enemies/giant2.asm create mode 100644 code/gamelogic/ai/enemies/giant3.asm create mode 100644 code/gamelogic/ai/enemies/gola.asm create mode 100644 code/gamelogic/ai/enemies/golem1.asm create mode 100644 code/gamelogic/ai/enemies/golem2.asm create mode 100644 code/gamelogic/ai/enemies/harpy1.asm create mode 100644 code/gamelogic/ai/enemies/harpy2.asm create mode 100644 code/gamelogic/ai/enemies/harpy3.asm create mode 100644 code/gamelogic/ai/enemies/ifrit.asm create mode 100644 code/gamelogic/ai/enemies/knight1.asm create mode 100644 code/gamelogic/ai/enemies/knight2.asm create mode 100644 code/gamelogic/ai/enemies/knight3.asm create mode 100644 code/gamelogic/ai/enemies/lizard1.asm create mode 100644 code/gamelogic/ai/enemies/lizard2.asm create mode 100644 code/gamelogic/ai/enemies/lizard3.asm create mode 100644 code/gamelogic/ai/enemies/mimic1.asm create mode 100644 code/gamelogic/ai/enemies/mimic2.asm create mode 100644 code/gamelogic/ai/enemies/mimic3.asm create mode 100644 code/gamelogic/ai/enemies/mir.asm create mode 100644 code/gamelogic/ai/enemies/miro.asm create mode 100644 code/gamelogic/ai/enemies/mummy1.asm create mode 100644 code/gamelogic/ai/enemies/mummy2.asm create mode 100644 code/gamelogic/ai/enemies/mummy3.asm create mode 100644 code/gamelogic/ai/enemies/mushroom1.asm create mode 100644 code/gamelogic/ai/enemies/mushroom2.asm create mode 100644 code/gamelogic/ai/enemies/mushroom3.asm create mode 100644 code/gamelogic/ai/enemies/ninja1.asm create mode 100644 code/gamelogic/ai/enemies/ninja2.asm create mode 100644 code/gamelogic/ai/enemies/ninja3.asm create mode 100644 code/gamelogic/ai/enemies/nole.asm create mode 100644 code/gamelogic/ai/enemies/orc1.asm create mode 100644 code/gamelogic/ai/enemies/orc2.asm create mode 100644 code/gamelogic/ai/enemies/orc3.asm create mode 100644 code/gamelogic/ai/enemies/reaper1.asm create mode 100644 code/gamelogic/ai/enemies/reaper2.asm create mode 100644 code/gamelogic/ai/enemies/reaper3.asm create mode 100644 code/gamelogic/ai/enemies/skeleton1.asm create mode 100644 code/gamelogic/ai/enemies/skeleton2.asm create mode 100644 code/gamelogic/ai/enemies/skeleton3.asm create mode 100644 code/gamelogic/ai/enemies/spectre1.asm create mode 100644 code/gamelogic/ai/enemies/spectre2.asm create mode 100644 code/gamelogic/ai/enemies/spectre3.asm create mode 100644 code/gamelogic/ai/enemies/spinner.asm create mode 100644 code/gamelogic/ai/enemies/stonewarrior.asm create mode 100644 code/gamelogic/ai/enemies/unicorn1.asm create mode 100644 code/gamelogic/ai/enemies/unicorn2.asm create mode 100644 code/gamelogic/ai/enemies/unicorn3.asm create mode 100644 code/gamelogic/ai/enemies/worm1.asm create mode 100644 code/gamelogic/ai/enemies/worm2.asm create mode 100644 code/gamelogic/ai/enemies/worm3.asm create mode 100644 code/gamelogic/ai/enemies/zak.asm create mode 100644 code/gamelogic/ai/enemies1.asm create mode 100644 code/gamelogic/ai/enemies2.asm create mode 100644 code/gamelogic/ai/enemies3.asm create mode 100644 code/gamelogic/ai/enemies4.asm create mode 100644 code/gamelogic/ai/enemyai3.asm create mode 100644 code/gamelogic/ai/enemyai4.asm create mode 100644 code/gamelogic/ai/enemyai5.asm create mode 100644 code/maps/mapflagdata.asm create mode 100644 code/system/vector_table.asm diff --git a/code/blocks/loadisometricblocks1.asm b/code/blocks/loadisometricblocks1.asm index cbbe44b..4a5e1eb 100644 --- a/code/blocks/loadisometricblocks1.asm +++ b/code/blocks/loadisometricblocks1.asm @@ -2,8 +2,8 @@ ; =============== S U B R O U T I N E ======================================= -LoadTopTiles: ; CODE XREF: sub_90C4:loc_9110p - ; sub_90C4:loc_913Ep +LoadTopTiles: ; CODE XREF: InitBlocks:loc_9110p + ; InitBlocks:loc_913Ep ; DATA XREF: ... move.b (g_PlayerXFlattened).l,d0 move.b (g_PlayerYFlattened).l,d1 diff --git a/code/blocks/loadisometricblocks2.asm b/code/blocks/loadisometricblocks2.asm index a02ac1b..26d2ea2 100644 --- a/code/blocks/loadisometricblocks2.asm +++ b/code/blocks/loadisometricblocks2.asm @@ -10,7 +10,7 @@ ConvertXYToBlockPtr: ; CODE XREF: LoadTopTiles+20p move.w Mult148tbl(pc,d1.w),d1 add.w d0,d1 add.w d0,d1 - lea (g_BackgroundBlocks).l,a6 + lea (g_ForegroundBlocks).l,a6 adda.w d1,a6 rts ; End of function ConvertXYToBlockPtr @@ -30,7 +30,7 @@ MultiplyD0By148: ; CODE XREF: CheckForDoorNE+DCp ; =============== S U B R O U T I N E ======================================= -MultiplyD1By148: ; CODE XREF: sub_4DECp +MultiplyD1By148: ; CODE XREF: GetMapCoordOffsetp ; DATA XREF: sub_3146+26t ... add.w d1,d1 move.w Mult148tbl(pc,d1.w),d1 @@ -78,7 +78,7 @@ Mult148tbl: dc.w 00000, 00148, 00296, 00444, 00592, 00740, 00888, 01036 CheckAndDisplayIntroString: ; CODE XREF: ROM:00008DFEp - ; DATA XREF: sub_16DC+82t + ; DATA XREF: GameLoop+82t move.b (g_IntroStringToDisplay).l,d0 beq.s _Return move.w (g_IntroStringDisplayTime).l,d1 @@ -86,7 +86,7 @@ CheckAndDisplayIntroString: ; CODE XREF: ROM:00008DFEp andi.w #$00FF,d0 lsl.b #$02,d0 lea IntroStringPointers(pc),a2 - movea.l loc_C598+2-IntroStringPointers(a2,d0.w),a2 + movea.l -0000000004(a2,d0.w),a2 move.w (a2)+,d0 move.w (a2)+,d1 move.w (a2)+,d2 @@ -214,7 +214,7 @@ LoadIntroStringLine2Sprites: ; CODE XREF: CheckAndDisplayIntroString+44p loc_C584: ; CODE XREF: LoadIntroStringLine1Sprites+Aj moveq #$00000003,d7 -loc_C586: ; CODE XREF: LoadIntroStringLine1Sprites:loc_C598j +loc_C586: ; CODE XREF: LoadIntroStringLine1Sprites+2Aj move.w d1,(a0)+ ; Y move.b #$0D,(a0) ; Size addq.l #$02,a0 @@ -222,8 +222,6 @@ loc_C586: ; CODE XREF: LoadIntroStringLine1Sprites:loc_C598j move.w d0,(a0)+ ; X addq.w #$08,d2 addi.w #$0020,d0 - -loc_C598: ; DATA XREF: CheckAndDisplayIntroString+1Cr dbf d7,loc_C586 ; Y rts ; End of function LoadIntroStringLine1Sprites diff --git a/code/ending/endcredits1.asm b/code/ending/endcredits1.asm index 1a4f6ad..f21aafb 100644 --- a/code/ending/endcredits1.asm +++ b/code/ending/endcredits1.asm @@ -74,7 +74,7 @@ loc_9ECBC: ; CODE XREF: ROM:0009ECA6j loc_9ECC2: ; CODE XREF: ROM:0009ECB0j move.w #10799,d0 jsr (j_Sleep).l - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d1 unlk a6 rts diff --git a/code/ending/endcredits2.asm b/code/ending/endcredits2.asm index 94592cb..e9fe18b 100644 --- a/code/ending/endcredits2.asm +++ b/code/ending/endcredits2.asm @@ -12,7 +12,7 @@ UpdateCreditScroll: ; CODE XREF: sub_9ECDC:loc_9ECF8p ScrollCredits1Tile: ; CODE XREF: UpdateCreditScroll+Cj lea (g_HUD_Row1).l,a0 - lea g_HUD_Row2-g_HUD_Row1(a0),a1 + lea $00000080(a0),a1 move.w #$013F,d7 loc_9F662: ; CODE XREF: UpdateCreditScroll+20j diff --git a/code/gamelogic/ai/enemies/bubble1.asm b/code/gamelogic/ai/enemies/bubble1.asm new file mode 100644 index 0000000..4e9dab6 --- /dev/null +++ b/code/gamelogic/ai/enemies/bubble1.asm @@ -0,0 +1,69 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Bubble1_B: ; CODE XREF: ROM:001A85CAj + bra.s EnemyAI_Bubble1 +; --------------------------------------------------------------------------- + +EnemyAI_Bubble1_A: ; CODE XREF: ROM:001A85C6j + btst #$01,Flags2(a5) + bne.s loc_1AB9B4 + move.b ChestIndex(a5),d0 + beq.s loc_1AB9BA + cmpi.b #$10,d0 + beq.s loc_1ABA0C + +loc_1AB9B4: ; CODE XREF: ROM:001AB9A6j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB9BA: ; CODE XREF: ROM:001AB9ACj + tst.w BehavParam(a5) + bne.s loc_1AB9E2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #$01,d7 + bcs.s loc_1AB9D8 + cmpi.b #$02,d7 + bcs.s loc_1AB9E8 + rts +; --------------------------------------------------------------------------- + +loc_1AB9D8: ; CODE XREF: ROM:001AB9CEj + move.w #$0020,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + +loc_1AB9E2: ; CODE XREF: ROM:001AB9BEj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB9E8: ; CODE XREF: ROM:001AB9D4j + move.b #$10,ChestIndex(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +EnemyAI_Bubble1: ; CODE XREF: ROM:EnemyAI_Bubble1_Bj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$00,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABA0C: ; CODE XREF: ROM:001AB9B2j + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$40,Unk0D(a5) + bcs.s locret_1ABA38 + clr.w QueuedAction(a5) + move.w #$FFFF,PrevAction(a5) + clr.b ChestIndex(a5) + +locret_1ABA38: ; CODE XREF: ROM:001ABA28j + rts diff --git a/code/gamelogic/ai/enemies/bubble2.asm b/code/gamelogic/ai/enemies/bubble2.asm new file mode 100644 index 0000000..c54e3c6 --- /dev/null +++ b/code/gamelogic/ai/enemies/bubble2.asm @@ -0,0 +1,93 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Bubble2_B: ; CODE XREF: ROM:001A85D2j + bra.s EnemyAI_Bubble2 +; --------------------------------------------------------------------------- + +EnemyAI_Bubble2_A: ; CODE XREF: ROM:001A85CEj + btst #$01,Flags2(a5) + bne.s loc_1ABA52 + move.b ChestIndex(a5),d0 + beq.s loc_1ABA70 + cmpi.b #$10,d0 + beq.w loc_1ABAE8 + +loc_1ABA52: ; CODE XREF: ROM:001ABA42j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_Bubble2: ; CODE XREF: ROM:EnemyAI_Bubble2_Bj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$00,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABA70: ; CODE XREF: ROM:001ABA48j + tst.w BehavParam(a5) + bne.s loc_1ABAAE + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #$01,d7 + bcs.s loc_1ABA8E + cmpi.b #$02,d7 + bcs.s loc_1ABAC4 + rts +; --------------------------------------------------------------------------- + +loc_1ABA8E: ; CODE XREF: ROM:001ABA84j + move.b #$22,d0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #080,d7 + bcs.s loc_1ABAA6 + move.b #$21,d0 + +loc_1ABAA6: ; CODE XREF: ROM:001ABAA0j + move.w d0,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + +loc_1ABAAE: ; CODE XREF: ROM:001ABA74j + btst #$05,Action1(a5) + bne.s loc_1ABAD0 + btst #$04,Action1(a5) + bne.s loc_1ABADC + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABAC4: ; CODE XREF: ROM:001ABA8Aj + move.b #$10,ChestIndex(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABAD0: ; CODE XREF: ROM:001ABAB4j + bsr.w j_j_OnTick + move.w #$0100,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABADC: ; CODE XREF: ROM:001ABABCj + bsr.w j_j_OnTick + move.w #$0200,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABAE8: ; CODE XREF: ROM:001ABA4Ej + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$40,Unk0D(a5) + bcs.s locret_1ABB14 + clr.w QueuedAction(a5) + move.w #$FFFF,PrevAction(a5) + clr.b ChestIndex(a5) + +locret_1ABB14: ; CODE XREF: ROM:001ABB04j + rts diff --git a/code/gamelogic/ai/enemies/bubble3.asm b/code/gamelogic/ai/enemies/bubble3.asm new file mode 100644 index 0000000..547a555 --- /dev/null +++ b/code/gamelogic/ai/enemies/bubble3.asm @@ -0,0 +1,103 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Bubble3_B: ; CODE XREF: ROM:001A85DAj + ; ROM:001A86B2j ... + bra.s EnemyAI_Bubble3 +; --------------------------------------------------------------------------- + +EnemyAI_Bubble3_A: ; CODE XREF: ROM:001A85D6j + ; ROM:001A86AEj ... + btst #$01,Flags2(a5) + bne.s loc_1ABB2E + move.b ChestIndex(a5),d0 + beq.s loc_1ABB4C + cmpi.b #$10,d0 + beq.w loc_1ABBE6 + +loc_1ABB2E: ; CODE XREF: ROM:001ABB1Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_Bubble3: ; CODE XREF: ROM:EnemyAI_Bubble3_Bj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$00,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABB4C: ; CODE XREF: ROM:001ABB24j + tst.w BehavParam(a5) + bne.s loc_1ABBAC + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s loc_1ABB8C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #$01,d7 + bcs.s loc_1ABB8C + cmpi.b #$02,d7 + bcs.s loc_1ABBC2 + rts +; --------------------------------------------------------------------------- + +loc_1ABB8C: ; CODE XREF: ROM:001ABB72j + ; ROM:001ABB82j + move.b #$22,d0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #080,d7 + bcs.s loc_1ABBA4 + move.b #$21,d0 + +loc_1ABBA4: ; CODE XREF: ROM:001ABB9Ej + move.w d0,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + +loc_1ABBAC: ; CODE XREF: ROM:001ABB50j + btst #$05,Action1(a5) + bne.s loc_1ABBCE + btst #$04,Action1(a5) + bne.s loc_1ABBDA + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABBC2: ; CODE XREF: ROM:001ABB88j + move.b #$10,ChestIndex(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABBCE: ; CODE XREF: ROM:001ABBB2j + bsr.w j_j_OnTick + move.w #$0100,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABBDA: ; CODE XREF: ROM:001ABBBAj + bsr.w j_j_OnTick + move.w #$0200,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABBE6: ; CODE XREF: ROM:001ABB2Aj + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$40,Unk0D(a5) + bcs.s locret_1ABC12 + clr.w QueuedAction(a5) + move.w #$FFFF,PrevAction(a5) + clr.b ChestIndex(a5) + +locret_1ABC12: ; CODE XREF: ROM:001ABC02j + rts diff --git a/code/gamelogic/ai/enemies/duke.asm b/code/gamelogic/ai/enemies/duke.asm new file mode 100644 index 0000000..c08d8c3 --- /dev/null +++ b/code/gamelogic/ai/enemies/duke.asm @@ -0,0 +1,241 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Duke_B: ; CODE XREF: ROM:001A8602j + bra.s EnemyAI_Duke +; --------------------------------------------------------------------------- + +EnemyAI_Duke_A: ; CODE XREF: ROM:001A85FEj + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + btst #$01,Flags2(a5) + bne.s loc_1ACAD2 + move.b ChestIndex(a5),d0 + beq.s loc_1ACADE + cmpi.b #$10,d0 + beq.s loc_1ACB24 + bra.w loc_1ACC7A +; --------------------------------------------------------------------------- + +loc_1ACAD2: ; CODE XREF: ROM:001ACAC0j + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACADE: ; CODE XREF: ROM:001ACAC6j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Duke + rts +; --------------------------------------------------------------------------- + +EnemyAI_Duke: ; CODE XREF: ROM:EnemyAI_Duke_Bj + ; ROM:001ACB02j ... + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ACB24: ; CODE XREF: ROM:001ACACCj + tst.b (byte_FF1142).l + bne.s loc_1ACB54 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ACB64 + bcs.s loc_1ACB4E + bsr.s sub_1ACBA0 + bcs.s loc_1ACB4E + bsr.w sub_1ACBE0 + bcs.s loc_1ACB4E + bsr.w sub_1ACC20 + +loc_1ACB4E: ; CODE XREF: ROM:001ACB3Ej + ; ROM:001ACB42j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACB54: ; CODE XREF: ROM:001ACB2Aj + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACB64: ; CODE XREF: ROM:001ACB3Cp + move.w #$0070,d5 + move.w #$FFB0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACB9C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00086,d7 + bhi.s loc_1ACB9C + move.b #$20,ChestIndex(a5) + move.w #$001A,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACB9C: ; CODE XREF: sub_1ACB64+10j + ; sub_1ACB64+20j + tst.b d0 + rts +; End of function sub_1ACB64 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACBA0: ; CODE XREF: ROM:001ACB40p + move.w #$0050,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACBDC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00125,d7 + bhi.s loc_1ACBDC + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACBDC: ; CODE XREF: sub_1ACBA0+10j + ; sub_1ACBA0+20j + tst.b d0 + rts +; End of function sub_1ACBA0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACBE0: ; CODE XREF: ROM:001ACB44p + move.w #$0030,d5 + move.w #$FFE0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACC1C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00043,d7 + bhi.s loc_1ACC1C + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACC1C: ; CODE XREF: sub_1ACBE0+10j + ; sub_1ACBE0+20j + tst.b d0 + rts +; End of function sub_1ACBE0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACC20: ; CODE XREF: ROM:001ACB4Ap + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACC76 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1ACC5C + move.b #$23,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACC5C: ; CODE XREF: sub_1ACC20+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACC76: ; CODE XREF: sub_1ACC20+10j + tst.b d0 + rts +; End of function sub_1ACC20 + +; --------------------------------------------------------------------------- + +loc_1ACC7A: ; CODE XREF: ROM:001ACACEj + andi.b #$0F,d0 + beq.s loc_1ACC9A + cmpi.b #$01,d0 + beq.s loc_1ACCBE + cmpi.b #$02,d0 + beq.w loc_1ACCE0 + cmpi.b #$03,d0 + beq.w loc_1ACC9A + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1ACC9A: ; CODE XREF: ROM:001ACC7Ej + ; ROM:001ACC92j ... + cmpi.b #$18,BehavParam(a5) + bcc.s loc_1ACCB8 + move.w #$0100,QueuedAction(a5) + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + +loc_1ACCB8: ; CODE XREF: ROM:001ACCA0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACCBE: ; CODE XREF: ROM:001ACC84j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$28,Unk0D(a5) + bcc.w EnemyAI_Duke + rts +; --------------------------------------------------------------------------- + +loc_1ACCDA: ; CODE XREF: ROM:001ACD00j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACCE0: ; CODE XREF: ROM:001ACC8Aj + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1ACCDA + bra.w EnemyAI_Duke diff --git a/code/gamelogic/ai/enemies/fireball.asm b/code/gamelogic/ai/enemies/fireball.asm new file mode 100644 index 0000000..c30594d --- /dev/null +++ b/code/gamelogic/ai/enemies/fireball.asm @@ -0,0 +1,9 @@ +; --------------------------------------------------------------------------- + +EnemyAI_SmallFireball_B: ; CODE XREF: ROM:001A85FAj + nop + +EnemyAI_SmallFireball_A: ; CODE XREF: ROM:001A85F6j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/ghost1.asm b/code/gamelogic/ai/enemies/ghost1.asm new file mode 100644 index 0000000..2bd308b --- /dev/null +++ b/code/gamelogic/ai/enemies/ghost1.asm @@ -0,0 +1,157 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ghost1_B: ; CODE XREF: ROM:001A8522j + bra.s EnemyAI_Ghost1 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost1_A: ; CODE XREF: ROM:001A851Ej + btst #$01,Flags2(a5) + bne.s loc_1A7536 + move.b ChestIndex(a5),d0 + beq.s loc_1A753C + cmpi.b #$10,d0 + beq.s loc_1A757C + bra.w loc_1A75E4 +; --------------------------------------------------------------------------- + +loc_1A7536: ; CODE XREF: ROM:001A7524j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A753C: ; CODE XREF: ROM:001A752Aj + bra.s loc_1A7544 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost1: ; CODE XREF: ROM:EnemyAI_Ghost1_Bj + ; ROM:001A75F0j ... + tst.b Unk0A(a5) + bpl.s loc_1A7560 + +loc_1A7544: ; CODE XREF: ROM:loc_1A753Cj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$20,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7560: ; CODE XREF: ROM:001A7542j + ; ROM:001A767Cj ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A757C: ; CODE XREF: ROM:001A7530j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.w sub_1A7596 + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7596: ; CODE XREF: ROM:001A758Cp + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A75E0 + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0020,d0 + bcc.s loc_1A75E0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A75E0: ; CODE XREF: sub_1A7596+10j + ; sub_1A7596+20j + tst.b d0 + rts +; End of function sub_1A7596 + +; --------------------------------------------------------------------------- + +loc_1A75E4: ; CODE XREF: ROM:001A7532j + andi.b #$0F,d0 + beq.s loc_1A75F4 + cmpi.b #$01,d0 + beq.s loc_1A7642 + bra.w EnemyAI_Ghost1 +; --------------------------------------------------------------------------- + +loc_1A75F4: ; CODE XREF: ROM:001A75E8j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s locret_1A7640 + move.w #$0200,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s locret_1A7640 + move.w #$0300,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A7640 + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A7640 + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + +locret_1A7640: ; CODE XREF: ROM:001A7604j + ; ROM:001A7612j ... + rts +; --------------------------------------------------------------------------- + +loc_1A7642: ; CODE XREF: ROM:001A75EEj + tst.b (byte_FF1145).l + bne.w EnemyAI_Ghost1 + tst.b (byte_FF1142).l + bne.s loc_1A765C + move.b #$01,(byte_FF1142).l + +loc_1A765C: ; CODE XREF: ROM:001A7652j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.w loc_1A7560 + move.b Unk4D(a5),d0 + addq.b #$01,Unk4D(a5) + tst.b d0 + bne.s loc_1A76A4 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_GhostAbsorbHP +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0080,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A76AE + +loc_1A76A4: ; CODE XREF: ROM:001A768Aj + cmpi.b #$3C,d0 + bcc.w loc_1A7560 + rts +; --------------------------------------------------------------------------- + +loc_1A76AE: ; CODE XREF: ROM:001A76A2j + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC diff --git a/code/gamelogic/ai/enemies/ghost2.asm b/code/gamelogic/ai/enemies/ghost2.asm new file mode 100644 index 0000000..c791c21 --- /dev/null +++ b/code/gamelogic/ai/enemies/ghost2.asm @@ -0,0 +1,198 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ghost2_B: ; CODE XREF: ROM:001A852Aj + bra.s EnemyAI_Ghost2 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost2_A: ; CODE XREF: ROM:001A8526j + btst #$01,Flags2(a5) + bne.s loc_1A76D2 + move.b ChestIndex(a5),d0 + beq.s loc_1A76D8 + cmpi.b #$10,d0 + beq.s loc_1A7718 + bra.w loc_1A77A0 +; --------------------------------------------------------------------------- + +loc_1A76D2: ; CODE XREF: ROM:001A76C0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A76D8: ; CODE XREF: ROM:001A76C6j + bra.s loc_1A76E0 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost2: ; CODE XREF: ROM:EnemyAI_Ghost2_Bj + ; ROM:001A77B4j ... + tst.b Unk0A(a5) + bpl.s loc_1A76FC + +loc_1A76E0: ; CODE XREF: ROM:loc_1A76D8j + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$20,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A76FC: ; CODE XREF: ROM:001A76DEj + ; ROM:001A7846j ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7718: ; CODE XREF: ROM:001A76CCj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.w sub_1A7732 + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7732: ; CODE XREF: ROM:001A7728p + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A779C + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0020,d0 + bcc.s loc_1A779C + move.w #$0064,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$005A,d7 + bcc.s loc_1A7782 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7782: ; CODE XREF: sub_1A7732+30j + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A779C: ; CODE XREF: sub_1A7732+10j + ; sub_1A7732+20j + tst.b d0 + rts +; End of function sub_1A7732 + +; --------------------------------------------------------------------------- + +loc_1A77A0: ; CODE XREF: ROM:001A76CEj + andi.b #$0F,d0 + beq.s loc_1A77B8 + cmpi.b #$01,d0 + beq.s loc_1A7806 + cmpi.b #$02,d0 + beq.w loc_1A7882 + bra.w EnemyAI_Ghost2 +; --------------------------------------------------------------------------- + +loc_1A77B8: ; CODE XREF: ROM:001A77A4j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s locret_1A7804 + move.w #$0200,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s locret_1A7804 + move.w #$0300,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A7804 + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A7804 + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + +locret_1A7804: ; CODE XREF: ROM:001A77C8j + ; ROM:001A77D6j ... + rts +; --------------------------------------------------------------------------- + +loc_1A7806: ; CODE XREF: ROM:001A77AAj + tst.b (byte_FF1145).l + bne.w EnemyAI_Ghost2 + tst.b (byte_FF1142).l + bne.w loc_1A7826 + move.b #$01,(byte_FF1142).l + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1A7826: ; CODE XREF: ROM:001A7816j + ; ROM:001A7822j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0019,d5 + move.w #$0009,d6 + move.w #$0009,d7 + bsr.w sub_1A8964 + bcc.w loc_1A76FC + move.b Unk4D(a5),d0 + addq.b #$01,Unk4D(a5) + tst.b d0 + bne.s loc_1A786E + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_GhostAbsorbHP +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0100,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A7878 + +loc_1A786E: ; CODE XREF: ROM:001A7854j + cmpi.b #$3C,d0 + bcc.w loc_1A76FC + rts +; --------------------------------------------------------------------------- + +loc_1A7878: ; CODE XREF: ROM:001A786Cj + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC +; --------------------------------------------------------------------------- + +loc_1A7882: ; CODE XREF: ROM:001A77B0j + move.w #$0029,d1 + move.w #$0029,d2 + move.w #$0019,d3 + bsr.w sub_1A880C + move.w #$0500,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcc.w loc_1A78B4 + cmpi.b #$02,Unk0D(a5) + bne.s locret_1A78B2 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_EnemyDie1 +; --------------------------------------------------------------------------- + +locret_1A78B2: ; CODE XREF: ROM:001A78ACj + rts +; --------------------------------------------------------------------------- + +loc_1A78B4: ; CODE XREF: ROM:001A78A2j + bsr.w MoveSpriteOffscreen + bra.w EnemyAI_Ghost2 diff --git a/code/gamelogic/ai/enemies/ghost3.asm b/code/gamelogic/ai/enemies/ghost3.asm new file mode 100644 index 0000000..327abb3 --- /dev/null +++ b/code/gamelogic/ai/enemies/ghost3.asm @@ -0,0 +1,198 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ghost3_B: ; CODE XREF: ROM:001A8532j + bra.s EnemyAI_Ghost3 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost3_A: ; CODE XREF: ROM:001A852Ej + btst #$01,Flags2(a5) + bne.s loc_1A78D6 + move.b ChestIndex(a5),d0 + beq.s loc_1A78DC + cmpi.b #$10,d0 + beq.s loc_1A791C + bra.w loc_1A79A4 +; --------------------------------------------------------------------------- + +loc_1A78D6: ; CODE XREF: ROM:001A78C4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A78DC: ; CODE XREF: ROM:001A78CAj + bra.s loc_1A78E4 +; --------------------------------------------------------------------------- + +EnemyAI_Ghost3: ; CODE XREF: ROM:EnemyAI_Ghost3_Bj + ; ROM:001A79B8j ... + tst.b Unk0A(a5) + bpl.s loc_1A7900 + +loc_1A78E4: ; CODE XREF: ROM:loc_1A78DCj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$20,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7900: ; CODE XREF: ROM:001A78E2j + ; ROM:001A7A4Aj ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A791C: ; CODE XREF: ROM:001A78D0j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.w sub_1A7936 + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7936: ; CODE XREF: ROM:001A792Cp + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A79A0 + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0020,d0 + bcc.s loc_1A79A0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcc.s loc_1A7986 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7986: ; CODE XREF: sub_1A7936+30j + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A79A0: ; CODE XREF: sub_1A7936+10j + ; sub_1A7936+20j + tst.b d0 + rts +; End of function sub_1A7936 + +; --------------------------------------------------------------------------- + +loc_1A79A4: ; CODE XREF: ROM:001A78D2j + andi.b #$0F,d0 + beq.s loc_1A79BC + cmpi.b #$01,d0 + beq.s loc_1A7A0A + cmpi.b #$02,d0 + beq.w loc_1A7A86 + bra.w EnemyAI_Ghost3 +; --------------------------------------------------------------------------- + +loc_1A79BC: ; CODE XREF: ROM:001A79A8j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s locret_1A7A08 + move.w #$0200,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s locret_1A7A08 + move.w #$0300,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A7A08 + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A7A08 + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + +locret_1A7A08: ; CODE XREF: ROM:001A79CCj + ; ROM:001A79DAj ... + rts +; --------------------------------------------------------------------------- + +loc_1A7A0A: ; CODE XREF: ROM:001A79AEj + tst.b (byte_FF1145).l + bne.w EnemyAI_Ghost3 + tst.b (byte_FF1142).l + bne.w loc_1A7A2A + move.b #$01,(byte_FF1142).l + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1A7A2A: ; CODE XREF: ROM:001A7A1Aj + ; ROM:001A7A26j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0019,d5 + move.w #$0009,d6 + move.w #$0009,d7 + bsr.w sub_1A8964 + bcc.w loc_1A7900 + move.b Unk4D(a5),d0 + addq.b #$01,Unk4D(a5) + tst.b d0 + bne.s loc_1A7A72 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_GhostAbsorbHP +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0200,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A7A7C + +loc_1A7A72: ; CODE XREF: ROM:001A7A58j + cmpi.b #$3C,d0 + bcc.w loc_1A7900 + rts +; --------------------------------------------------------------------------- + +loc_1A7A7C: ; CODE XREF: ROM:001A7A70j + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC +; --------------------------------------------------------------------------- + +loc_1A7A86: ; CODE XREF: ROM:001A79B4j + move.w #$0029,d1 + move.w #$0029,d2 + move.w #$0019,d3 + bsr.w sub_1A880C + move.w #$0500,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcc.w loc_1A7AB8 + cmpi.b #$02,Unk0D(a5) + bne.s locret_1A7AB6 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_EnemyDie1 +; --------------------------------------------------------------------------- + +locret_1A7AB6: ; CODE XREF: ROM:001A7AB0j + rts +; --------------------------------------------------------------------------- + +loc_1A7AB8: ; CODE XREF: ROM:001A7AA6j + bsr.w MoveSpriteOffscreen + bra.w EnemyAI_Ghost3 diff --git a/code/gamelogic/ai/enemies/ghostgen.asm b/code/gamelogic/ai/enemies/ghostgen.asm new file mode 100644 index 0000000..d029e42 --- /dev/null +++ b/code/gamelogic/ai/enemies/ghostgen.asm @@ -0,0 +1,69 @@ +; --------------------------------------------------------------------------- + +EnemyAI_GhostGen_B: ; CODE XREF: ROM:001A860Aj + ; ROM:001A8612j ... + bra.s EnemyAI_GhostGen +; --------------------------------------------------------------------------- + +EnemyAI_GhostGen_A: ; CODE XREF: ROM:001A8606j + ; ROM:001A860Ej ... + clr.b Speed(a5) + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_GhostGen: ; CODE XREF: ROM:EnemyAI_GhostGen_Bj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A83E6 + +loc_1A870E: ; CODE XREF: sub_1A83E6+4j + cmpi.b #SpriteB_Ghost,InitSpriteGraphic(a5) + beq.s loc_1A8718 + +locret_1A8716: ; CODE XREF: sub_1A83E6+33Aj + ; sub_1A83E6+34Ej + rts +; --------------------------------------------------------------------------- + +loc_1A8718: ; CODE XREF: sub_1A83E6+32Ej + lea (Sprite1_X).l,a0 + +loc_1A871E: ; CODE XREF: sub_1A83E6+348j + move.w (a0),d0 + bmi.s locret_1A8716 + cmpi.b #SpriteB_GhostGen,SpriteGraphic(a0) + beq.s loc_1A8730 + lea SPRITE_SIZE(a0),a0 + bra.s loc_1A871E +; --------------------------------------------------------------------------- + +loc_1A8730: ; CODE XREF: sub_1A83E6+342j + cmpi.b #$7F,d0 + beq.s locret_1A8716 + move.w InitX(a5),X(a5) + move.w InitSubX(a5),SubX(a5) + move.w InitRotAndSize(a5),RotationAndSize(a5) + andi.b #$1F,TileSource(a5) + move.b InitTileSource(a5),d0 + or.b d0,TileSource(a5) + move.w InitUnk0A(a5),Unk0A(a5) + move.b InitFlags2(a5),Flags2(a5) + move.w InitZ(a5),Z(a5) + move.w Unk6A(a5),BehavParam(a5) + move.l InitBehaviourLUTPtr(a5),BehaviourLUTPtr(a5) + move.b InitGoldOrChestCont(a5),GoldOrChestContents(a5) + move.w InitDialogue(a5),Dialogue(a5) + move.w MaxHealth(a5),CurrentHealth(a5) + bclr #$00,Flags1(a5) + clr.b ChestIndex(a5) + clr.b Flags4(a5) ; Bit 0 = Invincible / Solid + movea.l a5,a1 + jsr (j_LookupSpriteAnimFlags).l + bsr.w sub_1A8AE6 + jsr (sub_3BC).l + bcc.s loc_1A87D2 +; END OF FUNCTION CHUNK FOR sub_1A83E6 diff --git a/code/gamelogic/ai/enemies/giant1.asm b/code/gamelogic/ai/enemies/giant1.asm new file mode 100644 index 0000000..700c8a5 --- /dev/null +++ b/code/gamelogic/ai/enemies/giant1.asm @@ -0,0 +1,244 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Giant1_B: ; CODE XREF: ROM:001A85B2j + bra.s EnemyAI_Giant1 +; --------------------------------------------------------------------------- + +EnemyAI_Giant1_A: ; CODE XREF: ROM:001A85AEj + btst #$01,Flags2(a5) + bne.s loc_1AB27C + move.b ChestIndex(a5),d0 + beq.s loc_1AB282 + cmpi.b #$10,d0 + beq.s loc_1AB2AE + bra.w loc_1AB3F0 +; --------------------------------------------------------------------------- + +loc_1AB27C: ; CODE XREF: ROM:001AB26Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB282: ; CODE XREF: ROM:001AB270j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Giant1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Giant1: ; CODE XREF: ROM:EnemyAI_Giant1_Bj + ; ROM:001AB2A6j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AB2AE: ; CODE XREF: ROM:001AB276j + tst.b (byte_FF1142).l + bne.s loc_1AB2DE + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AB2E2 + bcs.s loc_1AB2D8 + bsr.s sub_1AB31E + bcs.s loc_1AB2D8 + bsr.w sub_1AB35A + bcs.s loc_1AB2D8 + bsr.w sub_1AB396 + +loc_1AB2D8: ; CODE XREF: ROM:001AB2C8j + ; ROM:001AB2CCj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB2DE: ; CODE XREF: ROM:001AB2B4j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB2E2: ; CODE XREF: ROM:001AB2C6p + move.w #$0050,d5 + move.w #$FFB8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB31A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AB31A + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB31A: ; CODE XREF: sub_1AB2E2+10j + ; sub_1AB2E2+20j + tst.b d0 + rts +; End of function sub_1AB2E2 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB31E: ; CODE XREF: ROM:001AB2CAp + move.w #$0058,d5 + move.w #$FFC0,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB356 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00008,d7 + bhi.s loc_1AB356 + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB356: ; CODE XREF: sub_1AB31E+10j + ; sub_1AB31E+20j + tst.b d0 + rts +; End of function sub_1AB31E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB35A: ; CODE XREF: ROM:001AB2CEp + move.w #$0038,d5 + move.w #$FFE0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB392 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00004,d7 + bhi.s loc_1AB392 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB392: ; CODE XREF: sub_1AB35A+10j + ; sub_1AB35A+20j + tst.b d0 + rts +; End of function sub_1AB35A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB396: ; CODE XREF: ROM:001AB2D4p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB3EC + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00070,d7 + bcc.s loc_1AB3D2 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB3D2: ; CODE XREF: sub_1AB396+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB3EC: ; CODE XREF: sub_1AB396+10j + tst.b d0 + rts +; End of function sub_1AB396 + +; --------------------------------------------------------------------------- + +loc_1AB3F0: ; CODE XREF: ROM:001AB278j + andi.b #$0F,d0 + beq.s loc_1AB40C + cmpi.b #$01,d0 + beq.s loc_1AB418 + cmpi.b #$02,d0 + beq.s loc_1AB42A + cmpi.b #$03,d0 + beq.s loc_1AB42A + bra.w loc_1AB464 +; --------------------------------------------------------------------------- + +loc_1AB40C: ; CODE XREF: ROM:001AB3F4j + move.w #$0100,QueuedAction(a5) + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB418: ; CODE XREF: ROM:001AB3FAj + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Giant1 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB42A: ; CODE XREF: ROM:001AB400j + ; ROM:001AB406j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1AB45E + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1AB45E + bra.w EnemyAI_Giant1 +; --------------------------------------------------------------------------- + +loc_1AB45E: ; CODE XREF: ROM:001AB43Aj + ; ROM:001AB458j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB464: ; CODE XREF: ROM:001AB408j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AB498 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$2D,Unk0D(a5) + bcs.s locret_1AB498 + bra.w EnemyAI_Giant1 +; --------------------------------------------------------------------------- + +locret_1AB498: ; CODE XREF: ROM:001AB474j + ; ROM:001AB492j + rts diff --git a/code/gamelogic/ai/enemies/giant2.asm b/code/gamelogic/ai/enemies/giant2.asm new file mode 100644 index 0000000..a3ab6bb --- /dev/null +++ b/code/gamelogic/ai/enemies/giant2.asm @@ -0,0 +1,262 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Giant2_B: ; CODE XREF: ROM:001A85BAj + bra.s EnemyAI_Giant2 +; --------------------------------------------------------------------------- + +EnemyAI_Giant2_A: ; CODE XREF: ROM:001A85B6j + btst #$01,Flags2(a5) + bne.s loc_1AB4B4 + move.b ChestIndex(a5),d0 + beq.s loc_1AB4BA + cmpi.b #$10,d0 + beq.s loc_1AB4E6 + bra.w loc_1AB628 +; --------------------------------------------------------------------------- + +loc_1AB4B4: ; CODE XREF: ROM:001AB4A2j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB4BA: ; CODE XREF: ROM:001AB4A8j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Giant2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Giant2: ; CODE XREF: ROM:EnemyAI_Giant2_Bj + ; ROM:001AB4DEj ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AB4E6: ; CODE XREF: ROM:001AB4AEj + tst.b (byte_FF1142).l + bne.s loc_1AB516 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AB51A + bcs.s loc_1AB510 + bsr.s sub_1AB556 + bcs.s loc_1AB510 + bsr.w sub_1AB592 + bcs.s loc_1AB510 + bsr.w sub_1AB5CE + +loc_1AB510: ; CODE XREF: ROM:001AB500j + ; ROM:001AB504j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB516: ; CODE XREF: ROM:001AB4ECj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB51A: ; CODE XREF: ROM:001AB4FEp + move.w #$0060,d5 + move.w #$FFB8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB552 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00008,d7 + bhi.s loc_1AB552 + move.b #$20,ChestIndex(a5) + move.w #$0014,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB552: ; CODE XREF: sub_1AB51A+10j + ; sub_1AB51A+20j + tst.b d0 + rts +; End of function sub_1AB51A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB556: ; CODE XREF: ROM:001AB502p + move.w #$0058,d5 + move.w #$FFC0,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB58E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$000C,d7 + bhi.s loc_1AB58E + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB58E: ; CODE XREF: sub_1AB556+10j + ; sub_1AB556+20j + tst.b d0 + rts +; End of function sub_1AB556 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB592: ; CODE XREF: ROM:001AB506p + move.w #$0038,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB5CA + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00003,d7 + bhi.s loc_1AB5CA + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB5CA: ; CODE XREF: sub_1AB592+10j + ; sub_1AB592+20j + tst.b d0 + rts +; End of function sub_1AB592 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB5CE: ; CODE XREF: ROM:001AB50Cp + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB624 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bcc.s loc_1AB60A + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB60A: ; CODE XREF: sub_1AB5CE+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB624: ; CODE XREF: sub_1AB5CE+10j + tst.b d0 + rts +; End of function sub_1AB5CE + +; --------------------------------------------------------------------------- + +loc_1AB628: ; CODE XREF: ROM:001AB4B0j + andi.b #$0F,d0 + beq.s loc_1AB644 + cmpi.b #$01,d0 + beq.s loc_1AB64A + cmpi.b #$02,d0 + beq.s loc_1AB65C + cmpi.b #$03,d0 + beq.s loc_1AB696 + bra.w loc_1AB6CC +; --------------------------------------------------------------------------- + +loc_1AB644: ; CODE XREF: ROM:001AB62Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB64A: ; CODE XREF: ROM:001AB632j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Giant2 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB65C: ; CODE XREF: ROM:001AB638j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1AB690 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1AB690 + bra.w EnemyAI_Giant2 +; --------------------------------------------------------------------------- + +loc_1AB690: ; CODE XREF: ROM:001AB66Cj + ; ROM:001AB68Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB696: ; CODE XREF: ROM:001AB63Ej + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AB6CA + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$2D,Unk0D(a5) + bcs.s locret_1AB6CA + bra.w EnemyAI_Giant2 +; --------------------------------------------------------------------------- + +locret_1AB6CA: ; CODE XREF: ROM:001AB6A6j + ; ROM:001AB6C4j + rts +; --------------------------------------------------------------------------- + +loc_1AB6CC: ; CODE XREF: ROM:001AB640j + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0008,d0 + lsl.w #$05,d0 + addi.w #$0100,d0 + move.w d0,QueuedAction(a5) + cmpi.w #$0100,d0 + beq.s loc_1AB6F8 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + +loc_1AB6F8: ; CODE XREF: ROM:001AB6E6j + cmpi.b #$60,Unk0D(a5) + bcc.w EnemyAI_Giant2 + rts diff --git a/code/gamelogic/ai/enemies/giant3.asm b/code/gamelogic/ai/enemies/giant3.asm new file mode 100644 index 0000000..297b3ad --- /dev/null +++ b/code/gamelogic/ai/enemies/giant3.asm @@ -0,0 +1,278 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Giant3_B: ; CODE XREF: ROM:001A85C2j + bra.s EnemyAI_Giant3 +; --------------------------------------------------------------------------- + +EnemyAI_Giant3_A: ; CODE XREF: ROM:001A85BEj + btst #$01,Flags2(a5) + bne.s loc_1AB71E + move.b ChestIndex(a5),d0 + beq.s loc_1AB724 + cmpi.b #$10,d0 + beq.s loc_1AB750 + bra.w loc_1AB892 +; --------------------------------------------------------------------------- + +loc_1AB71E: ; CODE XREF: ROM:001AB70Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB724: ; CODE XREF: ROM:001AB712j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Giant3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Giant3: ; CODE XREF: ROM:EnemyAI_Giant3_Bj + ; ROM:001AB748j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AB750: ; CODE XREF: ROM:001AB718j + tst.b (byte_FF1142).l + bne.s loc_1AB780 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AB784 + bcs.s loc_1AB77A + bsr.s sub_1AB7C0 + bcs.s loc_1AB77A + bsr.w sub_1AB7FC + bcs.s loc_1AB77A + bsr.w sub_1AB838 + +loc_1AB77A: ; CODE XREF: ROM:001AB76Aj + ; ROM:001AB76Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB780: ; CODE XREF: ROM:001AB756j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB784: ; CODE XREF: ROM:001AB768p + move.w #$0058,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB7BC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0008,d7 + bhi.s loc_1AB7BC + move.b #$20,ChestIndex(a5) + move.w #$001F,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB7BC: ; CODE XREF: sub_1AB784+10j + ; sub_1AB784+20j + tst.b d0 + rts +; End of function sub_1AB784 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB7C0: ; CODE XREF: ROM:001AB76Cp + move.w #$0048,d5 + move.w #$FFC8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB7F8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1AB7F8 + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB7F8: ; CODE XREF: sub_1AB7C0+10j + ; sub_1AB7C0+20j + tst.b d0 + rts +; End of function sub_1AB7C0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB7FC: ; CODE XREF: ROM:001AB770p + move.w #$0038,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB834 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00005,d7 + bhi.s loc_1AB834 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB834: ; CODE XREF: sub_1AB7FC+10j + ; sub_1AB7FC+20j + tst.b d0 + rts +; End of function sub_1AB7FC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB838: ; CODE XREF: ROM:001AB776p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB88E + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1AB874 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB874: ; CODE XREF: sub_1AB838+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB88E: ; CODE XREF: sub_1AB838+10j + tst.b d0 + rts +; End of function sub_1AB838 + +; --------------------------------------------------------------------------- + +loc_1AB892: ; CODE XREF: ROM:001AB71Aj + andi.b #$0F,d0 + beq.s loc_1AB8B0 + cmpi.b #$01,d0 + beq.s loc_1AB8B6 + cmpi.b #$02,d0 + beq.s loc_1AB8F6 + cmpi.b #$03,d0 + beq.w loc_1AB930 + bra.w loc_1AB966 +; --------------------------------------------------------------------------- + +loc_1AB8B0: ; CODE XREF: ROM:001AB896j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB8B6: ; CODE XREF: ROM:001AB89Cj + move.b Action1(a5),d1 + move.b d1,d2 + move.w #$0100,QueuedAction(a5) + andi.b #$20,d1 + bne.s loc_1AB8F0 + movem.w d2,-(sp) + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + movem.w (sp)+,d2 + move.w #$0200,QueuedAction(a5) + andi.b #$10,d2 + bne.s loc_1AB8F0 + bra.w EnemyAI_Giant3 +; --------------------------------------------------------------------------- + +loc_1AB8F0: ; CODE XREF: ROM:001AB8C6j + ; ROM:001AB8EAj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB8F6: ; CODE XREF: ROM:001AB8A2j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1AB92A + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1AB92A + bra.w EnemyAI_Giant3 +; --------------------------------------------------------------------------- + +loc_1AB92A: ; CODE XREF: ROM:001AB906j + ; ROM:001AB924j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB930: ; CODE XREF: ROM:001AB8A8j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AB964 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$2D,Unk0D(a5) + bcs.s locret_1AB964 + bra.w EnemyAI_Giant3 +; --------------------------------------------------------------------------- + +locret_1AB964: ; CODE XREF: ROM:001AB940j + ; ROM:001AB95Ej + rts +; --------------------------------------------------------------------------- + +loc_1AB966: ; CODE XREF: ROM:001AB8ACj + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0008,d0 + lsl.w #$05,d0 + addi.w #$0100,d0 + move.w d0,QueuedAction(a5) + cmpi.w #$0100,d0 + beq.s loc_1AB992 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + +loc_1AB992: ; CODE XREF: ROM:001AB980j + cmpi.b #$60,Unk0D(a5) + bcc.w EnemyAI_Giant3 + rts diff --git a/code/gamelogic/ai/enemies/gola.asm b/code/gamelogic/ai/enemies/gola.asm new file mode 100644 index 0000000..8bbb7d7 --- /dev/null +++ b/code/gamelogic/ai/enemies/gola.asm @@ -0,0 +1,668 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Gola_B: ; CODE XREF: ROM:001A869Aj + bra.s EnemyAI_Gola +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +EnemyAI_Gola_A: ; CODE XREF: ROM:001A8696j + ; DATA XREF: sub_1A4414+8t + move.b #$02,Speed(a5) + btst #$01,Flags2(a5) + bne.s loc_1AEEF8 + move.b ChestIndex(a5),d0 + beq.s loc_1AEF4C + cmpi.b #$10,d0 + beq.s loc_1AEF4C + bra.w loc_1AF1FC +; --------------------------------------------------------------------------- + +loc_1AEEF8: ; CODE XREF: sub_1A4414+AAD2j + bsr.w j_j_OnTick + rts +; END OF FUNCTION CHUNK FOR sub_1A4414 +; --------------------------------------------------------------------------- + +EnemyAI_Gola: ; CODE XREF: ROM:EnemyAI_Gola_Bj + bsr.s sub_1AEF04 + bra.w loc_1AF1BA + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEF04: ; CODE XREF: ROM:EnemyAI_Golap + ; sub_1A4414+ACCAj ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + move.l #$C0000000,(VDP_CTRL_REG).l + move.w #$0000,(VDP_DATA_REG).l + move.l #$C01E0000,(VDP_CTRL_REG).l + move.w #$0000,(VDP_DATA_REG).l + rts +; End of function sub_1AEF04 + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +loc_1AEF4C: ; CODE XREF: sub_1A4414+AAD8j + ; sub_1A4414+AADEj + bsr.w sub_1AEF72 + bcs.s loc_1AEF6C + bsr.w sub_1AF01A + bcs.s loc_1AEF6C + bsr.s sub_1AEFAC + bcs.s loc_1AEF6C + bsr.w sub_1AF052 + bcs.s loc_1AEF6C + bsr.w sub_1AF084 + bcs.s locret_1AEF70 + bsr.w sub_1AF18A + +loc_1AEF6C: ; CODE XREF: sub_1A4414+AB3Cj + ; sub_1A4414+AB42j ... + bsr.w j_j_OnTick + +locret_1AEF70: ; CODE XREF: sub_1A4414+AB52j + rts +; END OF FUNCTION CHUNK FOR sub_1A4414 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEF72: ; CODE XREF: sub_1A4414:loc_1AEF4Cp + cmpi.w #$0064,Z(a5) + bcc.w loc_1AF0BA + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.w loc_1AF0BA + move.b #$27,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Slash1 +; --------------------------------------------------------------------------- + ori #$01,ccr + rts +; End of function sub_1AEF72 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEFAC: ; CODE XREF: sub_1A4414+AB44p + +; FUNCTION CHUNK AT 001AF0BE SIZE 0000001A BYTES + + cmpi.w #$00F0,Z(a5) + bcs.s loc_1AF016 + move.w #$0002,d6 + jsr (j_GenerateRandomNumber).l + tst.b d7 + beq.s loc_1AEFE2 + move.b (Player_X).l,(a5) + move.b #$16,Y(a5) + andi.b #$3F,RotationAndSize(a5) + ori.b #$80,RotationAndSize(a5) + bclr #$03,TileSource(a5) + bra.s loc_1AF000 +; --------------------------------------------------------------------------- + +loc_1AEFE2: ; CODE XREF: sub_1AEFAC+14j + move.b #$19,X(a5) + move.b (Player_Y).l,Y(a5) + andi.b #$3F,RotationAndSize(a5) + ori.b #$40,RotationAndSize(a5) + bset #$03,TileSource(a5) + +loc_1AF000: ; CODE XREF: sub_1AEFAC+34j + bset #$07,Unk48(a5) + clr.w SubX(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + bra.w loc_1AF0BE +; --------------------------------------------------------------------------- + +loc_1AF016: ; CODE XREF: sub_1AEFAC+6j + tst.b d0 + rts +; End of function sub_1AEFAC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF01A: ; CODE XREF: sub_1A4414+AB3Ep + cmpi.w #$0094,Z(a5) + bcs.s loc_1AF04E + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bhi.w loc_1AF04E + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AF04E: ; CODE XREF: sub_1AF01A+6j + ; sub_1AF01A+16j + tst.b d0 + rts +; End of function sub_1AF01A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF052: ; CODE XREF: sub_1A4414+AB48p + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00010,d7 + bhi.s loc_1AF080 + move.w #$0383,BehaviourLUTIndex(a5) + +loc_1AF068: ; CODE XREF: sub_1A4414+AF5Aj + move.b #$22,ChestIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Fireball1 +; --------------------------------------------------------------------------- + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AF080: ; CODE XREF: sub_1AF052+Ej + tst.b d0 + rts +; End of function sub_1AF052 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF084: ; CODE XREF: sub_1A4414+AB4Ep + cmpi.w #$0064,Z(a5) + bcc.s loc_1AF0BA + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00085,d7 + bcc.s loc_1AF0BA + move.b #$23,ChestIndex(a5) + move.w #$0363,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Slash1 +; --------------------------------------------------------------------------- + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AF0BA: ; CODE XREF: sub_1AEF72+6j + ; sub_1AEF72+18j ... + tst.b d0 + rts +; End of function sub_1AF084 + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1AEFAC + +loc_1AF0BE: ; CODE XREF: sub_1AEFAC+66j + move.b #$24,ChestIndex(a5) + move.w #$0361,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; END OF FUNCTION CHUNK FOR sub_1AEFAC +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +loc_1AF0D8: ; CODE XREF: sub_1A4414+AE84j + tst.w (g_ControllerPlayback).l + beq.w sub_1AEF04 + move.l (a5),d0 + movem.l d0,-(sp) + move.w (Player_CentreX).l,d0 + move.w (Player_CentreY).l,d1 + move.w #$0002,d6 + jsr (j_GenerateRandomNumber).l + tst.b d7 + beq.s loc_1AF10C + subi.w #$0038,d0 + move.b #$40,d2 + bra.s loc_1AF114 +; --------------------------------------------------------------------------- + +loc_1AF10C: ; CODE XREF: sub_1A4414+ACECj + subi.w #$0038,d1 + move.b #$80,d2 + +loc_1AF114: ; CODE XREF: sub_1A4414+ACF6j + move.w d0,d3 + andi.b #$F0,d0 + lsr.w #$04,d0 + move.b d0,X(a5) + andi.b #$0F,d3 + move.b d3,SubX(a5) + move.w d1,d3 + andi.b #$F0,d1 + lsr.w #$04,d1 + move.b d1,Y(a5) + andi.b #$0F,d3 + move.b d3,SubY(a5) + andi.b #$3F,RotationAndSize(a5) + or.b d2,RotationAndSize(a5) + bset #$07,Unk48(a5) + bset #$07,Unk0A(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + movem.l (sp)+,d0 + bcs.s loc_1AF184 + move.b #$26,ChestIndex(a5) + move.w #$0361,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + subi.w #$0020,Z(a5) + subi.w #$0020,HitBoxZEnd(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AF184: ; CODE XREF: sub_1A4414+AD48j + move.l d0,(a5) + tst.b d0 + rts +; END OF FUNCTION CHUNK FOR sub_1A4414 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF18A: ; CODE XREF: sub_1A4414+AB54p + cmpi.w #$0064,Z(a5) + bcc.s loc_1AF1E6 + move.w #00025,d6 + jsr (j_GenerateRandomNumber).l + move.b (Player_X).l,d6 + subi.b #$18,d6 + add.b (Player_Y).l,d6 + subi.b #$15,d6 + move.b #$18,d5 + sub.b d6,d5 + cmp.b d5,d7 + bcc.s loc_1AF1E6 + +loc_1AF1BA: ; CODE XREF: ROM:001AEF00j + move.l #$C0000000,(VDP_CTRL_REG).l + move.w #$0000,(VDP_DATA_REG).l + move.b #$25,ChestIndex(a5) + move.w #$0362,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AF1E6: ; CODE XREF: sub_1AF18A+6j + ; sub_1AF18A+2Ej + tst.b d0 + rts +; End of function sub_1AF18A + +; --------------------------------------------------------------------------- + bsr.w sub_1AC010 + move.b d2,d1 + andi.b #$3F,RotationAndSize(a5) + or.b d2,RotationAndSize(a5) + rts +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +loc_1AF1FC: ; CODE XREF: sub_1A4414+AAE0j + andi.b #$0F,d0 + beq.s locret_1AF234 + cmpi.b #$01,d0 + beq.s loc_1AF236 + cmpi.b #$02,d0 + beq.w loc_1AF29E + cmpi.b #$03,d0 + beq.w loc_1AF372 + cmpi.b #$04,d0 + beq.w loc_1AF34E + cmpi.b #$05,d0 + beq.w loc_1AF34E + cmpi.b #$06,d0 + beq.w loc_1AF35C + bra.w loc_1AF4FE +; --------------------------------------------------------------------------- + +locret_1AF234: ; CODE XREF: sub_1A4414+ADECj + rts +; --------------------------------------------------------------------------- + +loc_1AF236: ; CODE XREF: sub_1A4414+ADF2j + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + beq.w loc_1AF27A + cmpi.b #$10,Unk4D(a5) + bne.w loc_1AF292 + move.b (Player_Z+1).l,d0 + cmp.b (Player_FloorHeight).l,d0 + bne.s loc_1AF26E + tst.b (byte_FF1142).l + bne.s loc_1AF26E + move.b #$08,d0 + jsr (j_PlaybackInput).l + +loc_1AF26E: ; CODE XREF: sub_1A4414+AE46j + ; sub_1A4414+AE4Ej + move.b #$10,d0 + bsr.s sub_1AF27E + bsr.w sub_1AEE66 + rts +; --------------------------------------------------------------------------- + +loc_1AF27A: ; CODE XREF: sub_1A4414+AE2Cj + move.b #$08,d0 +; END OF FUNCTION CHUNK FOR sub_1A4414 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF27E: ; CODE XREF: sub_1A4414+AE5Ep + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Thud +; --------------------------------------------------------------------------- + movem.l a5,-(sp) + jsr (j_DoTileSwap).l + movem.l (sp)+,a5 + rts +; End of function sub_1AF27E + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +loc_1AF292: ; CODE XREF: sub_1A4414+AE36j + cmpi.b #$11,Unk4D(a5) + beq.w loc_1AF0D8 + rts +; --------------------------------------------------------------------------- + +loc_1AF29E: ; CODE XREF: sub_1A4414+ADF8j + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AF2F4 + lea ($00009880).l,a2 + move.b #$01,d0 + jsr (j_LoadMagicSwordEffect).l + move.b #$01,d0 + bsr.w LoadProjectilePalette + bsr.w LoadPal3Low + move.l #$C0000000,(VDP_CTRL_REG).l + move.w #$000E,(VDP_DATA_REG).l + move.l #$C01E0000,(VDP_CTRL_REG).l + move.w #$000E,(VDP_DATA_REG).l + bra.w loc_1AF348 +; --------------------------------------------------------------------------- + +loc_1AF2F4: ; CODE XREF: sub_1A4414+AE9Aj + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AF332 + move.b #$01,d0 + bsr.w LoadProjectilePalette + bsr.w LoadPal3Low + move.l #$C0000000,(VDP_CTRL_REG).l + move.w #$0000,(VDP_DATA_REG).l + move.l #$C01E0000,(VDP_CTRL_REG).l + move.w #$0000,(VDP_DATA_REG).l + bra.w loc_1AF348 +; --------------------------------------------------------------------------- + +loc_1AF332: ; CODE XREF: sub_1A4414+AEE6j + cmpi.b #$03,Unk4D(a5) + bne.w loc_1AF348 + move.w #$0368,d6 + bsr.w sub_1AF448 + clr.b Unk4D(a5) + +loc_1AF348: ; CODE XREF: sub_1A4414+AEDCj + ; sub_1A4414+AF1Aj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AF34E: ; CODE XREF: sub_1A4414+AE08j + ; sub_1A4414+AE10j + bsr.w j_j_OnTick + tst.b BehavCmd(a5) + beq.w sub_1AEF04 + rts +; --------------------------------------------------------------------------- + +loc_1AF35C: ; CODE XREF: sub_1A4414+AE18j + bsr.w j_j_OnTick + tst.b BehavCmd(a5) + beq.s loc_1AF368 + rts +; --------------------------------------------------------------------------- + +loc_1AF368: ; CODE XREF: sub_1A4414+AF50j + move.w #$0384,BehaviourLUTIndex(a5) + bra.w loc_1AF068 +; --------------------------------------------------------------------------- + +loc_1AF372: ; CODE XREF: sub_1A4414+AE00j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AF398 + lea ($00009880).l,a2 + move.b #$01,d0 + jsr (j_LoadMagicSwordEffect).l + bra.w loc_1AF3E4 +; --------------------------------------------------------------------------- + +loc_1AF398: ; CODE XREF: sub_1A4414+AF6Ej + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AF3B2 + move.b #$01,d0 + bsr.w LoadProjectilePalette + bsr.w LoadPal3Low + bra.w loc_1AF3E4 +; --------------------------------------------------------------------------- + +loc_1AF3B2: ; CODE XREF: sub_1A4414+AF8Aj + cmpi.b #$0A,Unk4D(a5) + bhi.w loc_1AF3D4 + bcs.w loc_1AF3E4 + move.w #$0200,QueuedAction(a5) + move.w #$0345,d6 + bsr.w sub_1AF448 + bcs.w loc_1AF43A + bra.s loc_1AF3E4 +; --------------------------------------------------------------------------- + +loc_1AF3D4: ; CODE XREF: sub_1A4414+AFA4j + move.w #$0200,QueuedAction(a5) + cmpi.b #$14,Unk4D(a5) + beq.w loc_1AF43A + +loc_1AF3E4: ; CODE XREF: sub_1A4414+AF80j + ; sub_1A4414+AF9Aj ... + move.b RotationAndSize(a5),d0 + movem.w d0,-(sp) + andi.b #$C0,d0 + cmpi.b #$80,d0 + beq.s loc_1AF40E + move.b #$00,d1 + move.b Y(a5),d0 + cmp.b (Player_Y).l,d0 + beq.s loc_1AF430 + bhi.s loc_1AF422 + move.b #$80,d1 + bra.s loc_1AF422 +; --------------------------------------------------------------------------- + +loc_1AF40E: ; CODE XREF: sub_1A4414+AFE0j + move.b #$C0,d1 + move.b (a5),d0 + cmp.b (Player_X).l,d0 + beq.s loc_1AF430 + bhi.s loc_1AF422 + move.b #$40,d1 + +loc_1AF422: ; CODE XREF: sub_1A4414+AFF2j + ; sub_1A4414+AFF8j ... + andi.b #$3F,RotationAndSize(a5) + or.b d1,RotationAndSize(a5) + bsr.w j_j_OnTick + +loc_1AF430: ; CODE XREF: sub_1A4414+AFF0j + ; sub_1A4414+B006j + movem.w (sp)+,d0 + move.b d0,RotationAndSize(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AF43A: ; CODE XREF: sub_1A4414+AFBAj + ; sub_1A4414+AFCCj + bclr #$00,Flags2(a5) + clr.b Unk4D(a5) + bra.w sub_1AEF04 +; END OF FUNCTION CHUNK FOR sub_1A4414 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AF448: ; CODE XREF: sub_1A4414+AF2Cp + ; sub_1A4414+AFB6p ... + move.b RotationAndSize(a5),d2 + movem.w d6,-(sp) + movem.w d2,-(sp) + jsr (sub_103B2).l + movem.w (sp)+,d1 + movem.w (sp)+,d6 + bcs.w loc_1AF4F8 + move.w CentreX(a5),d2 + move.w CentreY(a5),d3 + andi.b #$C0,d1 + beq.s loc_1AF482 + cmpi.b #$80,d1 + bcs.s loc_1AF488 + beq.s loc_1AF48E + subi.w #$001A,d2 + bra.s loc_1AF492 +; --------------------------------------------------------------------------- + +loc_1AF482: ; CODE XREF: sub_1AF448+2Aj + subi.w #$001A,d3 + bra.s loc_1AF492 +; --------------------------------------------------------------------------- + +loc_1AF488: ; CODE XREF: sub_1AF448+30j + addi.w #$001A,d2 + bra.s loc_1AF492 +; --------------------------------------------------------------------------- + +loc_1AF48E: ; CODE XREF: sub_1AF448+32j + addi.w #$001A,d3 + +loc_1AF492: ; CODE XREF: sub_1AF448+38j + ; sub_1AF448+3Ej ... + move.w d2,d0 + andi.b #$0F,d0 + move.b d0,SubX(a1) + lsr.w #$04,d2 + move.b d2,(a1) + move.w d3,d0 + andi.b #$0F,d0 + move.b d0,SubY(a1) + lsr.w #$04,d3 + move.b d3,Y(a1) + move.b d1,RotationAndSize(a1) + move.b #SPR_GOLAFIREBALL,d2 + move.w #$1400,AttackStrength(a1) + move.w Z(a5),d3 + move.w d3,Z(a1) + move.w #$64B4,TileSource(a1) + move.w d6,BehaviourLUTIndex(a1) + move.b #$04,Speed(a1) + move.b #$80,FallRate(a1) + jsr (sub_103B8).l + bset #$00,Flags4(a1) ; Bit 0 = Invincible / Solid + bset #$07,Flags2(a1) + bset #$07,InitFlags2(a1) + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AF4F8: ; CODE XREF: sub_1AF448+1Aj + ori #$01,ccr + rts +; End of function sub_1AF448 + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A4414 + +loc_1AF4FE: ; CODE XREF: sub_1A4414+AE1Cj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AF520 + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AF520: ; CODE XREF: sub_1A4414+B0FAj + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AF536 + move.b #$01,d0 + bsr.w LoadProjectilePalette + bra.w LoadPal3Low +; --------------------------------------------------------------------------- + +loc_1AF536: ; CODE XREF: sub_1A4414+B112j + cmpi.b #$10,Unk4D(a5) + bhi.w loc_1AF56C + bcs.w locret_1AF57C + move.w #$0200,QueuedAction(a5) + move.w #$0345,d6 + bsr.w sub_1AF448 + bcs.w loc_1AF57E + move.w #$0346,d6 + bsr.w sub_1AF448 + bcs.w loc_1AF57E + move.w #$0347,d6 + bsr.w sub_1AF448 + rts +; --------------------------------------------------------------------------- + +loc_1AF56C: ; CODE XREF: sub_1A4414+B128j + move.w #$0200,QueuedAction(a5) + cmpi.b #$20,Unk4D(a5) + beq.w loc_1AF57E + +locret_1AF57C: ; CODE XREF: sub_1A4414+B12Cj + rts +; --------------------------------------------------------------------------- + +loc_1AF57E: ; CODE XREF: sub_1A4414+B13Ej + ; sub_1A4414+B14Aj ... + clr.b Unk4D(a5) + bra.w sub_1AEF04 +; END OF FUNCTION CHUNK FOR sub_1A4414 diff --git a/code/gamelogic/ai/enemies/golem1.asm b/code/gamelogic/ai/enemies/golem1.asm new file mode 100644 index 0000000..89411be --- /dev/null +++ b/code/gamelogic/ai/enemies/golem1.asm @@ -0,0 +1,132 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Golem1_B: ; CODE XREF: ROM:001A862Aj + bra.s EnemyAI_Golem1 +; --------------------------------------------------------------------------- + +EnemyAI_Golem1_A: ; CODE XREF: ROM:001A8626j + btst #$01,Flags2(a5) + bne.s loc_1AD0CA + move.b ChestIndex(a5),d0 + beq.s loc_1AD0D0 + cmpi.b #$10,d0 + beq.s loc_1AD0FC + bra.w loc_1AD194 +; --------------------------------------------------------------------------- + +loc_1AD0CA: ; CODE XREF: ROM:001AD0B8j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD0D0: ; CODE XREF: ROM:001AD0BEj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0040,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Golem1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Golem1: ; CODE XREF: ROM:EnemyAI_Golem1_Bj + ; ROM:001AD0F4j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AD0FC: ; CODE XREF: ROM:001AD0C4j + tst.b (byte_FF1142).l + bne.s loc_1AD120 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AD124 + bcs.s loc_1AD11A + bsr.s sub_1AD164 + +loc_1AD11A: ; CODE XREF: ROM:001AD116j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD120: ; CODE XREF: ROM:001AD102j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD124: ; CODE XREF: ROM:001AD114p + move.w #$0050,d5 + move.w #$FFD8,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD160 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bcc.s loc_1AD160 + move.b #$22,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD160: ; CODE XREF: sub_1AD124+10j + ; sub_1AD124+20j + tst.b d0 + rts +; End of function sub_1AD124 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD164: ; CODE XREF: ROM:001AD118p + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD190 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD190: ; CODE XREF: sub_1AD164+10j + tst.b d0 + rts +; End of function sub_1AD164 + +; --------------------------------------------------------------------------- + +loc_1AD194: ; CODE XREF: ROM:001AD0C6j + andi.b #$0F,d0 + cmpi.b #$03,d0 + bcs.s loc_1AD1D4 + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AD1D2 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AD1D2 + beq.w EnemyAI_Golem1 + +locret_1AD1D2: ; CODE XREF: ROM:001AD1AEj + ; ROM:001AD1CCj + rts +; --------------------------------------------------------------------------- + +loc_1AD1D4: ; CODE XREF: ROM:001AD19Cj + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/golem2.asm b/code/gamelogic/ai/enemies/golem2.asm new file mode 100644 index 0000000..2817703 --- /dev/null +++ b/code/gamelogic/ai/enemies/golem2.asm @@ -0,0 +1,134 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Golem2_B: ; CODE XREF: ROM:001A8632j + ; ROM:001A863Aj + bra.s EnemyAI_Golem2 +; --------------------------------------------------------------------------- + +EnemyAI_Golem2_A: ; CODE XREF: ROM:001A862Ej + ; ROM:001A8636j + btst #$01,Flags2(a5) + bne.s loc_1AD1F4 + move.b ChestIndex(a5),d0 + beq.s loc_1AD1FA + cmpi.b #$10,d0 + beq.s loc_1AD226 + bra.w loc_1AD2BE +; --------------------------------------------------------------------------- + +loc_1AD1F4: ; CODE XREF: ROM:001AD1E2j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD1FA: ; CODE XREF: ROM:001AD1E8j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0040,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Golem2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Golem2: ; CODE XREF: ROM:EnemyAI_Golem2_Bj + ; ROM:001AD21Ej ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AD226: ; CODE XREF: ROM:001AD1EEj + tst.b (byte_FF1142).l + bne.s loc_1AD24A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AD24E + bcs.s loc_1AD244 + bsr.s sub_1AD28E + +loc_1AD244: ; CODE XREF: ROM:001AD240j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD24A: ; CODE XREF: ROM:001AD22Cj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD24E: ; CODE XREF: ROM:001AD23Ep + move.w #$0060,d5 + move.w #$FFC0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD28A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1AD28A + move.b #$22,ChestIndex(a5) + move.w #$001A,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD28A: ; CODE XREF: sub_1AD24E+10j + ; sub_1AD24E+20j + tst.b d0 + rts +; End of function sub_1AD24E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD28E: ; CODE XREF: ROM:001AD242p + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD2BA + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD2BA: ; CODE XREF: sub_1AD28E+10j + tst.b d0 + rts +; End of function sub_1AD28E + +; --------------------------------------------------------------------------- + +loc_1AD2BE: ; CODE XREF: ROM:001AD1F0j + andi.b #$0F,d0 + cmpi.b #$03,d0 + bcs.s loc_1AD2FE + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AD2FC + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AD2FC + beq.w EnemyAI_Golem2 + +locret_1AD2FC: ; CODE XREF: ROM:001AD2D8j + ; ROM:001AD2F6j + rts +; --------------------------------------------------------------------------- + +loc_1AD2FE: ; CODE XREF: ROM:001AD2C6j + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/harpy1.asm b/code/gamelogic/ai/enemies/harpy1.asm new file mode 100644 index 0000000..0389cd2 --- /dev/null +++ b/code/gamelogic/ai/enemies/harpy1.asm @@ -0,0 +1,237 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Harpy1_B: ; CODE XREF: ROM:001A866Aj + bra.s EnemyAI_Harpy1 +; --------------------------------------------------------------------------- + +EnemyAI_Harpy1_A: ; CODE XREF: ROM:001A8666j + btst #$01,Flags2(a5) + bne.s loc_1ADAB0 + move.b ChestIndex(a5),d0 + beq.s loc_1ADAB6 + cmpi.b #$10,d0 + beq.s loc_1ADAF4 + bra.w loc_1ADC6C +; --------------------------------------------------------------------------- + +loc_1ADAB0: ; CODE XREF: ROM:001ADA9Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADAB6: ; CODE XREF: ROM:001ADAA4j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Harpy1: ; CODE XREF: ROM:EnemyAI_Harpy1_Bj + ; ROM:001ADC8Ej ... + move.w #$0004,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ADAF4: ; CODE XREF: ROM:001ADAAAj + tst.b (byte_FF1142).l + bne.s loc_1ADB24 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ADB28 + bcs.s loc_1ADB1E + bsr.s sub_1ADB76 + bcs.s loc_1ADB1E + bsr.w sub_1ADBC4 + bcs.s loc_1ADB1E + bsr.w sub_1ADC12 + +loc_1ADB1E: ; CODE XREF: ROM:001ADB0Ej + ; ROM:001ADB12j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADB24: ; CODE XREF: ROM:001ADAFAj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADB28: ; CODE XREF: ROM:001ADB0Cp + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADB72 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADB72 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ADB72 + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADB72: ; CODE XREF: sub_1ADB28+10j + ; sub_1ADB28+22j ... + tst.b d0 + rts +; End of function sub_1ADB28 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADB76: ; CODE XREF: ROM:001ADB10p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADBC0 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADBC0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1ADBC0 + move.b #$21,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADBC0: ; CODE XREF: sub_1ADB76+10j + ; sub_1ADB76+22j ... + tst.b d0 + rts +; End of function sub_1ADB76 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADBC4: ; CODE XREF: ROM:001ADB14p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADC0E + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADC0E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$000C,d7 + bhi.s loc_1ADC0E + move.b #$22,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADC0E: ; CODE XREF: sub_1ADBC4+10j + ; sub_1ADBC4+22j ... + tst.b d0 + rts +; End of function sub_1ADBC4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADC12: ; CODE XREF: ROM:001ADB1Ap + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADC68 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1ADC4E + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADC4E: ; CODE XREF: sub_1ADC12+20j + move.b #$24,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADC68: ; CODE XREF: sub_1ADC12+10j + tst.b d0 + rts +; End of function sub_1ADC12 + +; --------------------------------------------------------------------------- + +loc_1ADC6C: ; CODE XREF: ROM:001ADAACj + andi.b #$0F,d0 + beq.s loc_1ADC86 + cmpi.b #$01,d0 + beq.s loc_1ADC92 + cmpi.b #$02,d0 + beq.s loc_1ADC92 + cmpi.b #$03,d0 + beq.s loc_1ADC98 + bra.s loc_1ADC98 +; --------------------------------------------------------------------------- + +loc_1ADC86: ; CODE XREF: ROM:001ADC70j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Harpy1 + +loc_1ADC92: ; CODE XREF: ROM:001ADC76j + ; ROM:001ADC7Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADC98: ; CODE XREF: ROM:001ADC82j + ; ROM:001ADC84j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1ADCCC + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1ADCCC + beq.w EnemyAI_Harpy1 + +locret_1ADCCC: ; CODE XREF: ROM:001ADCA8j + ; ROM:001ADCC6j + rts diff --git a/code/gamelogic/ai/enemies/harpy2.asm b/code/gamelogic/ai/enemies/harpy2.asm new file mode 100644 index 0000000..96c59e7 --- /dev/null +++ b/code/gamelogic/ai/enemies/harpy2.asm @@ -0,0 +1,237 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Harpy2_B: ; CODE XREF: ROM:001A8672j + bra.s EnemyAI_Harpy2 +; --------------------------------------------------------------------------- + +EnemyAI_Harpy2_A: ; CODE XREF: ROM:001A866Ej + btst #$01,Flags2(a5) + bne.s loc_1ADCE8 + move.b ChestIndex(a5),d0 + beq.s loc_1ADCEE + cmpi.b #$10,d0 + beq.s loc_1ADD2C + bra.w loc_1ADEA4 +; --------------------------------------------------------------------------- + +loc_1ADCE8: ; CODE XREF: ROM:001ADCD6j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADCEE: ; CODE XREF: ROM:001ADCDCj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Harpy2: ; CODE XREF: ROM:EnemyAI_Harpy2_Bj + ; ROM:001ADEC6j ... + move.w #$0004,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ADD2C: ; CODE XREF: ROM:001ADCE2j + tst.b (byte_FF1142).l + bne.s loc_1ADD5C + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ADD60 + bcs.s loc_1ADD56 + bsr.s sub_1ADDAE + bcs.s loc_1ADD56 + bsr.w sub_1ADDFC + bcs.s loc_1ADD56 + bsr.w sub_1ADE4A + +loc_1ADD56: ; CODE XREF: ROM:001ADD46j + ; ROM:001ADD4Aj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADD5C: ; CODE XREF: ROM:001ADD32j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADD60: ; CODE XREF: ROM:001ADD44p + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADDAA + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADDAA + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ADDAA + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADDAA: ; CODE XREF: sub_1ADD60+10j + ; sub_1ADD60+22j ... + tst.b d0 + rts +; End of function sub_1ADD60 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADDAE: ; CODE XREF: ROM:001ADD48p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADDF8 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADDF8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1ADDF8 + move.b #$21,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADDF8: ; CODE XREF: sub_1ADDAE+10j + ; sub_1ADDAE+22j ... + tst.b d0 + rts +; End of function sub_1ADDAE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADDFC: ; CODE XREF: ROM:001ADD4Cp + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADE46 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADE46 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ADE46 + move.b #$22,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADE46: ; CODE XREF: sub_1ADDFC+10j + ; sub_1ADDFC+22j ... + tst.b d0 + rts +; End of function sub_1ADDFC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADE4A: ; CODE XREF: ROM:001ADD52p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADEA0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1ADE86 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADE86: ; CODE XREF: sub_1ADE4A+20j + move.b #$24,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADEA0: ; CODE XREF: sub_1ADE4A+10j + tst.b d0 + rts +; End of function sub_1ADE4A + +; --------------------------------------------------------------------------- + +loc_1ADEA4: ; CODE XREF: ROM:001ADCE4j + andi.b #$0F,d0 + beq.s loc_1ADEBE + cmpi.b #$01,d0 + beq.s loc_1ADECA + cmpi.b #$02,d0 + beq.s loc_1ADECA + cmpi.b #$03,d0 + beq.s loc_1ADED0 + bra.s loc_1ADED0 +; --------------------------------------------------------------------------- + +loc_1ADEBE: ; CODE XREF: ROM:001ADEA8j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Harpy2 + +loc_1ADECA: ; CODE XREF: ROM:001ADEAEj + ; ROM:001ADEB4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADED0: ; CODE XREF: ROM:001ADEBAj + ; ROM:001ADEBCj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1ADF04 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1ADF04 + beq.w EnemyAI_Harpy2 + +locret_1ADF04: ; CODE XREF: ROM:001ADEE0j + ; ROM:001ADEFEj + rts diff --git a/code/gamelogic/ai/enemies/harpy3.asm b/code/gamelogic/ai/enemies/harpy3.asm new file mode 100644 index 0000000..02579dd --- /dev/null +++ b/code/gamelogic/ai/enemies/harpy3.asm @@ -0,0 +1,237 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Harpy3_B: ; CODE XREF: ROM:001A867Aj + bra.s EnemyAI_Harpy3 +; --------------------------------------------------------------------------- + +EnemyAI_Harpy3_A: ; CODE XREF: ROM:001A8676j + btst #$01,Flags2(a5) + bne.s loc_1ADF20 + move.b ChestIndex(a5),d0 + beq.s loc_1ADF26 + cmpi.b #$10,d0 + beq.s loc_1ADF64 + bra.w loc_1AE0DC +; --------------------------------------------------------------------------- + +loc_1ADF20: ; CODE XREF: ROM:001ADF0Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADF26: ; CODE XREF: ROM:001ADF14j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Harpy3: ; CODE XREF: ROM:EnemyAI_Harpy3_Bj + ; ROM:001AE0FEj ... + move.w #$0004,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ADF64: ; CODE XREF: ROM:001ADF1Aj + tst.b (byte_FF1142).l + bne.s loc_1ADF94 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ADF98 + bcs.s loc_1ADF8E + bsr.s sub_1ADFE6 + bcs.s loc_1ADF8E + bsr.w sub_1AE034 + bcs.s loc_1ADF8E + bsr.w sub_1AE082 + +loc_1ADF8E: ; CODE XREF: ROM:001ADF7Ej + ; ROM:001ADF82j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ADF94: ; CODE XREF: ROM:001ADF6Aj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADF98: ; CODE XREF: ROM:001ADF7Cp + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1ADFE2 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1ADFE2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ADFE2 + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ADFE2: ; CODE XREF: sub_1ADF98+10j + ; sub_1ADF98+22j ... + tst.b d0 + rts +; End of function sub_1ADF98 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ADFE6: ; CODE XREF: ROM:001ADF80p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE030 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1AE030 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1AE030 + move.b #$21,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE030: ; CODE XREF: sub_1ADFE6+10j + ; sub_1ADFE6+22j ... + tst.b d0 + rts +; End of function sub_1ADFE6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE034: ; CODE XREF: ROM:001ADF84p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE07E + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1AE07E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1AE07E + move.b #$22,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE07E: ; CODE XREF: sub_1AE034+10j + ; sub_1AE034+22j ... + tst.b d0 + rts +; End of function sub_1AE034 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE082: ; CODE XREF: ROM:001ADF8Ap + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE0D8 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1AE0BE + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE0BE: ; CODE XREF: sub_1AE082+20j + move.b #$24,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE0D8: ; CODE XREF: sub_1AE082+10j + tst.b d0 + rts +; End of function sub_1AE082 + +; --------------------------------------------------------------------------- + +loc_1AE0DC: ; CODE XREF: ROM:001ADF1Cj + andi.b #$0F,d0 + beq.s loc_1AE0F6 + cmpi.b #$01,d0 + beq.s loc_1AE102 + cmpi.b #$02,d0 + beq.s loc_1AE102 + cmpi.b #$03,d0 + beq.s loc_1AE108 + bra.s loc_1AE108 +; --------------------------------------------------------------------------- + +loc_1AE0F6: ; CODE XREF: ROM:001AE0E0j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Harpy3 + +loc_1AE102: ; CODE XREF: ROM:001AE0E6j + ; ROM:001AE0ECj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AE108: ; CODE XREF: ROM:001AE0F2j + ; ROM:001AE0F4j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AE13C + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AE13C + beq.w EnemyAI_Harpy3 + +locret_1AE13C: ; CODE XREF: ROM:001AE118j + ; ROM:001AE136j + rts diff --git a/code/gamelogic/ai/enemies/ifrit.asm b/code/gamelogic/ai/enemies/ifrit.asm new file mode 100644 index 0000000..95f99c3 --- /dev/null +++ b/code/gamelogic/ai/enemies/ifrit.asm @@ -0,0 +1,500 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ifrit_B: ; CODE XREF: ROM:001A8692j + bra.s EnemyAI_Ifrit +; --------------------------------------------------------------------------- + +EnemyAI_Ifrit_A: ; CODE XREF: ROM:001A868Ej + btst #$01,Flags2(a5) + bne.s loc_1AE3B8 + move.b ChestIndex(a5),d0 + beq.s EnemyAI_Ifrit + cmpi.b #$10,d0 + beq.s loc_1AE3EC + bra.w loc_1AE562 +; --------------------------------------------------------------------------- + +loc_1AE3B8: ; CODE XREF: ROM:001AE3A6j + clr.b Speed(a5) + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_Ifrit: ; CODE XREF: ROM:EnemyAI_Ifrit_Bj + ; ROM:001AE3ACj + bsr.s sub_1AE3C8 + bra.w loc_1AE4D4 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE3C8: ; CODE XREF: ROM:EnemyAI_Ifritp + ; ROM:001AE602j ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; End of function sub_1AE3C8 + +; --------------------------------------------------------------------------- + +loc_1AE3EC: ; CODE XREF: ROM:001AE3B2j + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AE41C + bcs.s loc_1AE416 + bsr.w sub_1AE4C4 + bcs.s loc_1AE416 + bsr.w sub_1AE4F8 + bcs.s loc_1AE416 + bsr.w sub_1AE524 + +loc_1AE416: ; CODE XREF: ROM:001AE404j + ; ROM:001AE40Aj ... + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE41C: ; CODE XREF: ROM:001AE402p + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00010,d7 + bhi.w loc_1AE4C0 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + cmpi.w #$1B1D,X(a5) + beq.s loc_1AE45C + cmpi.w #$221D,X(a5) + beq.s loc_1AE472 + cmpi.w #$1B24,X(a5) + beq.s loc_1AE488 + move.w #$034A,d1 + tst.b d0 + beq.s loc_1AE49C + move.w #$034D,d1 + cmpi.b #$C0,d0 + beq.s loc_1AE49C + bra.s loc_1AE4C0 +; --------------------------------------------------------------------------- + +loc_1AE45C: ; CODE XREF: sub_1AE41C+1Ej + move.w #$034B,d1 + cmpi.b #$40,d0 + beq.s loc_1AE49C + move.w #$034C,d1 + cmpi.b #$80,d0 + beq.s loc_1AE49C + bra.s loc_1AE4C0 +; --------------------------------------------------------------------------- + +loc_1AE472: ; CODE XREF: sub_1AE41C+24j + move.w #$034C,d1 + cmpi.b #$80,d0 + beq.s loc_1AE49C + move.w #$034D,d1 + cmpi.b #$C0,d0 + beq.s loc_1AE49C + bra.s loc_1AE4C0 +; --------------------------------------------------------------------------- + +loc_1AE488: ; CODE XREF: sub_1AE41C+2Aj + move.w #$034B,d1 + cmpi.b #$40,d0 + beq.s loc_1AE49C + move.w #$034A,d1 + tst.b d0 + beq.s loc_1AE49C + bra.s loc_1AE4C0 +; --------------------------------------------------------------------------- + +loc_1AE49C: ; CODE XREF: sub_1AE41C+32j + ; sub_1AE41C+3Cj ... + move.b #$21,ChestIndex(a5) + move.w d1,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE4C0: ; CODE XREF: sub_1AE41C+Ej + ; sub_1AE41C+3Ej ... + tst.b d0 + rts +; End of function sub_1AE41C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE4C4: ; CODE XREF: ROM:001AE406p + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00020,d7 + bhi.s loc_1AE4F4 + +loc_1AE4D4: ; CODE XREF: ROM:001AE3C4j + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE4F4: ; CODE XREF: sub_1AE4C4+Ej + tst.b d0 + rts +; End of function sub_1AE4C4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE4F8: ; CODE XREF: ROM:001AE40Cp + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00075,d7 + bcc.s sub_1AE524 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + bsr.s sub_1AE550 + ori #$01,ccr + rts +; End of function sub_1AE4F8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE524: ; CODE XREF: ROM:001AE412p + ; sub_1AE4F8+Ej + move.w #$0040,d5 + move.w #$FFF0,d6 + move.w #$0010,d7 + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + bsr.s sub_1AE550 + ori #$01,ccr + rts +; End of function sub_1AE524 + +; --------------------------------------------------------------------------- + tst.b d0 + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE550: ; CODE XREF: sub_1AE4F8+24p + ; sub_1AE524+20p ... + bsr.w sub_1AC010 + move.b d2,d1 + andi.b #$3F,RotationAndSize(a5) + or.b d2,RotationAndSize(a5) + rts +; End of function sub_1AE550 + +; --------------------------------------------------------------------------- + +loc_1AE562: ; CODE XREF: ROM:001AE3B4j + andi.b #$0F,d0 + beq.s locret_1AE582 + cmpi.b #$01,d0 + beq.s loc_1AE584 + cmpi.b #$02,d0 + beq.w loc_1AE612 + cmpi.b #$03,d0 + beq.w loc_1AE6A4 + bra.w loc_1AE714 +; --------------------------------------------------------------------------- + +locret_1AE582: ; CODE XREF: ROM:001AE566j + rts +; --------------------------------------------------------------------------- + +loc_1AE584: ; CODE XREF: ROM:001AE56Cj + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$05,Unk4D(a5) + bcs.w loc_1AE606 + cmpi.b #$0F,Unk4D(a5) + bne.s loc_1AE5BC + move.w #$0500,QueuedAction(a5) + addi.w #$0010,Z(a5) + bra.w loc_1AE606 +; --------------------------------------------------------------------------- + +loc_1AE5BC: ; CODE XREF: ROM:001AE5AAj + move.w #$0400,QueuedAction(a5) + cmpi.b #$10,Unk4D(a5) + bcs.w loc_1AE606 + clr.w QueuedAction(a5) + cmpi.b #$1D,Unk4D(a5) + bcs.w loc_1AE606 + bne.s loc_1AE5E2 + subi.w #$0010,Z(a5) + +loc_1AE5E2: ; CODE XREF: ROM:001AE5DAj + move.w #$0400,QueuedAction(a5) + cmpi.b #$22,Unk4D(a5) + bcs.w loc_1AE606 + move.w #$0300,QueuedAction(a5) + cmpi.b #$27,Unk4D(a5) + bcs.w loc_1AE606 + bra.w sub_1AE3C8 +; --------------------------------------------------------------------------- + +loc_1AE606: ; CODE XREF: ROM:001AE5A0j + ; ROM:001AE5B8j ... + bsr.w j_j_OnTick + bclr #$07,Unk0A(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AE612: ; CODE XREF: ROM:001AE572j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0600,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$05,Unk4D(a5) + bcs.w locret_1AE6A2 + move.w #$0700,QueuedAction(a5) + cmpi.b #$0F,Unk4D(a5) + bcs.s locret_1AE6A2 + bhi.s loc_1AE67A + bset #$06,Flags2(a5) + move.w #00004,d6 + jsr (j_GenerateRandomNumber).l + add.b d7,d7 + move.w IfritCoordinates(pc,d7.w),d6 + cmp.w X(a5),d6 + bne.s loc_1AE660 + addq.b #$02,d7 + andi.b #$06,d7 + move.w IfritCoordinates(pc,d7.w),d6 + +loc_1AE660: ; CODE XREF: ROM:001AE654j + move.w d6,X(a5) + move.w #$0808,SubX(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + rts +; --------------------------------------------------------------------------- +IfritCoordinates:dc.w $1B1D ; DATA XREF: ROM:001AE64Er + ; ROM:001AE65Cr + dc.w $221D + dc.w $1B24 + dc.w $2224 +; --------------------------------------------------------------------------- + +loc_1AE67A: ; CODE XREF: ROM:001AE63Aj + cmpi.b #$14,Unk4D(a5) + bcs.s locret_1AE6A2 + bhi.s loc_1AE690 + bsr.w sub_1AE550 + bclr #$06,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AE690: ; CODE XREF: ROM:001AE682j + move.w #$0600,QueuedAction(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s locret_1AE6A2 + beq.w sub_1AE3C8 + +locret_1AE6A2: ; CODE XREF: ROM:001AE628j + ; ROM:001AE638j ... + rts +; --------------------------------------------------------------------------- + +loc_1AE6A4: ; CODE XREF: ROM:001AE57Aj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AE6C6 + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AE6C6: ; CODE XREF: ROM:001AE6B4j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AE6D8 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AE6D8: ; CODE XREF: ROM:001AE6CCj + cmpi.b #$0A,Unk4D(a5) + bhi.w loc_1AE6FA + bcs.w locret_1AE70A + move.w #$0200,QueuedAction(a5) + move.w #$0345,d6 + bsr.w sub_1AE792 + bcs.w loc_1AE70C + rts +; --------------------------------------------------------------------------- + +loc_1AE6FA: ; CODE XREF: ROM:001AE6DEj + move.w #$0200,QueuedAction(a5) + cmpi.b #$14,Unk4D(a5) + beq.w loc_1AE70C + +locret_1AE70A: ; CODE XREF: ROM:001AE6E2j + rts +; --------------------------------------------------------------------------- + +loc_1AE70C: ; CODE XREF: ROM:001AE6F4j + ; ROM:001AE706j + clr.b Unk4D(a5) + bra.w sub_1AE3C8 +; --------------------------------------------------------------------------- + +loc_1AE714: ; CODE XREF: ROM:001AE57Ej + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AE736 + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AE736: ; CODE XREF: ROM:001AE724j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AE748 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AE748: ; CODE XREF: ROM:001AE73Cj + cmpi.b #$10,Unk4D(a5) + bhi.w loc_1AE778 + bcs.w locret_1AE788 + move.w #$0200,QueuedAction(a5) + move.w #$0345,d6 + bsr.s sub_1AE792 + bcs.w loc_1AE78A + move.w #$0346,d6 + bsr.s sub_1AE792 + bcs.w loc_1AE78A + move.w #$0347,d6 + bsr.s sub_1AE792 + rts +; --------------------------------------------------------------------------- + +loc_1AE778: ; CODE XREF: ROM:001AE74Ej + move.w #$0200,QueuedAction(a5) + cmpi.b #$20,Unk4D(a5) + beq.w loc_1AE78A + +locret_1AE788: ; CODE XREF: ROM:001AE752j + rts +; --------------------------------------------------------------------------- + +loc_1AE78A: ; CODE XREF: ROM:001AE762j + ; ROM:001AE76Cj ... + clr.b Unk4D(a5) + bra.w sub_1AE3C8 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE792: ; CODE XREF: ROM:001AE6F0p + ; ROM:001AE760p ... + move.b RotationAndSize(a5),d2 + movem.w d6,-(sp) + movem.w d2,-(sp) + jsr (sub_103B2).l + movem.w (sp)+,d1 + movem.w (sp)+,d6 + bcs.w loc_1AE876 + move.w (a5),d0 + andi.b #$C0,d1 + beq.s loc_1AE7DA + cmpi.b #$80,d1 + bcs.s loc_1AE7F2 + beq.s loc_1AE80C + subi.w #$0100,d0 + cmpi.w #$0345,d6 + beq.s loc_1AE822 + subi.w #$0001,d0 + cmpi.w #$0346,d6 + beq.s loc_1AE822 + addi.w #$0002,d0 + bra.s loc_1AE822 +; --------------------------------------------------------------------------- + +loc_1AE7DA: ; CODE XREF: sub_1AE792+24j + subq.b #$01,d0 + cmpi.w #$0345,d6 + beq.s loc_1AE822 + addi.w #$0100,d0 + cmpi.w #$0346,d6 + beq.s loc_1AE822 + subi.w #$0200,d0 + bra.s loc_1AE822 +; --------------------------------------------------------------------------- + +loc_1AE7F2: ; CODE XREF: sub_1AE792+2Aj + addi.w #$0100,d0 + cmpi.w #$0345,d6 + beq.s loc_1AE822 + addi.w #$0001,d0 + cmpi.w #$0346,d6 + beq.s loc_1AE822 + subi.w #$0002,d0 + bra.s loc_1AE822 +; --------------------------------------------------------------------------- + +loc_1AE80C: ; CODE XREF: sub_1AE792+2Cj + addq.b #$01,d0 + cmpi.w #$0345,d6 + beq.s loc_1AE822 + subi.w #$0100,d0 + cmpi.w #$0346,d6 + beq.s loc_1AE822 + addi.w #$0200,d0 + +loc_1AE822: ; CODE XREF: sub_1AE792+36j + ; sub_1AE792+40j ... + move.w d0,X(a1) + move.b d1,RotationAndSize(a1) + move.b #SPR_IFRITFIREBALL,d2 + move.w #$0F00,AttackStrength(a1) + move.w Z(a5),d3 + addi.w #$0020,d3 + move.w d3,Z(a1) + move.w SubX(a5),SubX(a1) + move.w #$24B4,TileSource(a1) + move.w d6,BehaviourLUTIndex(a1) + move.b #$04,Speed(a1) + move.b #$80,FallRate(a1) + jsr (sub_103B8).l + bset #$00,Flags4(a1) ; Bit 0 = Invincible / Solid + bset #$07,Flags2(a1) + bset #$07,InitFlags2(a1) + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AE876: ; CODE XREF: sub_1AE792+1Aj + ori #$01,ccr + rts +; End of function sub_1AE792 + diff --git a/code/gamelogic/ai/enemies/knight1.asm b/code/gamelogic/ai/enemies/knight1.asm new file mode 100644 index 0000000..4315587 --- /dev/null +++ b/code/gamelogic/ai/enemies/knight1.asm @@ -0,0 +1,247 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Knight1_B: ; CODE XREF: ROM:001A850Aj + bra.s EnemyAI_Knight1 +; --------------------------------------------------------------------------- + +EnemyAI_Knight1_A: ; CODE XREF: ROM:001A8506j + btst #$01,Flags2(a5) + bne.s loc_1A6EB6 + move.b ChestIndex(a5),d0 + beq.s loc_1A6EBC + cmpi.b #$10,d0 + beq.s loc_1A6EE8 + bra.w loc_1A703A +; --------------------------------------------------------------------------- + +loc_1A6EB6: ; CODE XREF: ROM:001A6EA4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6EBC: ; CODE XREF: ROM:001A6EAAj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0010,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Knight1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Knight1: ; CODE XREF: ROM:EnemyAI_Knight1_Bj + ; ROM:001A6EE0j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A6EE8: ; CODE XREF: ROM:001A6EB0j + tst.b (byte_FF1142).l + bne.s loc_1A6F18 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6F1C + bcs.s loc_1A6F12 + bsr.s sub_1A6F58 + bcs.s loc_1A6F12 + bsr.w sub_1A6F94 + bcs.s loc_1A6F12 + bsr.w sub_1A6FE0 + +loc_1A6F12: ; CODE XREF: ROM:001A6F02j + ; ROM:001A6F06j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6F18: ; CODE XREF: ROM:001A6EEEj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6F1C: ; CODE XREF: ROM:001A6F00p + move.w #$0048,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6F54 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1A6F54 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6F54: ; CODE XREF: sub_1A6F1C+10j + ; sub_1A6F1C+20j + tst.b d0 + rts +; End of function sub_1A6F1C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6F58: ; CODE XREF: ROM:001A6F04p + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6F90 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A6F90 + move.b #$21,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6F90: ; CODE XREF: sub_1A6F58+10j + ; sub_1A6F58+20j + tst.b d0 + rts +; End of function sub_1A6F58 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6F94: ; CODE XREF: ROM:001A6F08p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6FDC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00150,d7 + bhi.s loc_1A6FDC + move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) + ; Bit1 - Walk SW (+Y) + ; Bit2 - Walk NW (-X) + ; Bit3 - Walk SE (+X) + ; Bit4 - Fall + ; Bit5 - Jump + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack + ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage + andi.b #$07,d0 + beq.s loc_1A6FDC + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6FDC: ; CODE XREF: sub_1A6F94+10j + ; sub_1A6F94+20j ... + tst.b d0 + rts +; End of function sub_1A6F94 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6FE0: ; CODE XREF: ROM:001A6F0Ep + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7036 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bcc.s loc_1A701C + move.b #$23,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A701C: ; CODE XREF: sub_1A6FE0+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7036: ; CODE XREF: sub_1A6FE0+10j + tst.b d0 + rts +; End of function sub_1A6FE0 + +; --------------------------------------------------------------------------- + +loc_1A703A: ; CODE XREF: ROM:001A6EB2j + andi.b #$0F,d0 + beq.s loc_1A7056 + cmpi.b #$01,d0 + beq.s loc_1A7056 + cmpi.b #$02,d0 + beq.s loc_1A705C + cmpi.b #$03,d0 + beq.s loc_1A708E + bra.w loc_1A708E +; --------------------------------------------------------------------------- + +loc_1A7056: ; CODE XREF: ROM:001A703Ej + ; ROM:001A7044j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A705C: ; CODE XREF: ROM:001A704Aj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$05,Unk0D(a5) + bcs.s loc_1A7086 + move.w #$0400,QueuedAction(a5) + cmpi.b #$17,Unk0D(a5) + bcs.s loc_1A7086 + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Knight1 +; --------------------------------------------------------------------------- + +loc_1A7086: ; CODE XREF: ROM:001A706Cj + ; ROM:001A707Aj + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + rts +; --------------------------------------------------------------------------- + +loc_1A708E: ; CODE XREF: ROM:001A7050j + ; ROM:001A7052j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A70C2 + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A70C2 + bra.w EnemyAI_Knight1 +; --------------------------------------------------------------------------- + +loc_1A70C2: ; CODE XREF: ROM:001A709Ej + ; ROM:001A70BCj + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/knight2.asm b/code/gamelogic/ai/enemies/knight2.asm new file mode 100644 index 0000000..9f03c57 --- /dev/null +++ b/code/gamelogic/ai/enemies/knight2.asm @@ -0,0 +1,246 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Knight2_B: ; CODE XREF: ROM:001A8512j + bra.s EnemyAI_Knight2 +; --------------------------------------------------------------------------- + +EnemyAI_Knight2_A: ; CODE XREF: ROM:001A850Ej + btst #$01,Flags2(a5) + bne.s loc_1A70E2 + move.b ChestIndex(a5),d0 + beq.s loc_1A70E8 + cmpi.b #$10,d0 + beq.s loc_1A7114 + bra.w loc_1A7266 +; --------------------------------------------------------------------------- + +loc_1A70E2: ; CODE XREF: ROM:001A70D0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A70E8: ; CODE XREF: ROM:001A70D6j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0010,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Knight2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Knight2: ; CODE XREF: ROM:EnemyAI_Knight2_Bj + ; ROM:001A710Cj ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A7114: ; CODE XREF: ROM:001A70DCj + tst.b (byte_FF1142).l + bne.s loc_1A7144 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A7148 + bcs.s loc_1A713E + bsr.s sub_1A7184 + bcs.s loc_1A713E + bsr.w sub_1A71C0 + bcs.s loc_1A713E + bsr.w sub_1A720C + +loc_1A713E: ; CODE XREF: ROM:001A712Ej + ; ROM:001A7132j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7144: ; CODE XREF: ROM:001A711Aj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7148: ; CODE XREF: ROM:001A712Cp + move.w #$0048,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7180 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A7180 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7180: ; CODE XREF: sub_1A7148+10j + ; sub_1A7148+20j + tst.b d0 + rts +; End of function sub_1A7148 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7184: ; CODE XREF: ROM:001A7130p + move.w #$0030,d5 + move.w #$FFE8,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A71BC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A71BC + move.b #$21,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A71BC: ; CODE XREF: sub_1A7184+10j + ; sub_1A7184+20j + tst.b d0 + rts +; End of function sub_1A7184 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A71C0: ; CODE XREF: ROM:001A7134p + move.w #$0030,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7208 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00150,d7 + bhi.s loc_1A7208 + move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) + ; Bit1 - Walk SW (+Y) + ; Bit2 - Walk NW (-X) + ; Bit3 - Walk SE (+X) + ; Bit4 - Fall + ; Bit5 - Jump + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack + ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage + andi.b #$07,d0 + beq.s loc_1A7208 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7208: ; CODE XREF: sub_1A71C0+10j + ; sub_1A71C0+20j ... + tst.b d0 + rts +; End of function sub_1A71C0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A720C: ; CODE XREF: ROM:001A713Ap + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7262 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00020,d7 + bcc.s loc_1A7248 + move.b #$23,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7248: ; CODE XREF: sub_1A720C+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7262: ; CODE XREF: sub_1A720C+10j + tst.b d0 + rts +; End of function sub_1A720C + +; --------------------------------------------------------------------------- + +loc_1A7266: ; CODE XREF: ROM:001A70DEj + andi.b #$0F,d0 + beq.s loc_1A7282 + cmpi.b #$01,d0 + beq.s loc_1A72BA + cmpi.b #$02,d0 + beq.s loc_1A7288 + cmpi.b #$03,d0 + beq.s loc_1A72BA + bra.w loc_1A72BA +; --------------------------------------------------------------------------- + +loc_1A7282: ; CODE XREF: ROM:001A726Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7288: ; CODE XREF: ROM:001A7276j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$05,Unk0D(a5) + bcs.s loc_1A72B2 + move.w #$0400,QueuedAction(a5) + cmpi.b #$17,Unk0D(a5) + bcs.s loc_1A72B2 + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Knight2 +; --------------------------------------------------------------------------- + +loc_1A72B2: ; CODE XREF: ROM:001A7298j + ; ROM:001A72A6j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + rts +; --------------------------------------------------------------------------- + +loc_1A72BA: ; CODE XREF: ROM:001A7270j + ; ROM:001A727Cj ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A72EE + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A72EE + bra.w EnemyAI_Knight2 +; --------------------------------------------------------------------------- + +loc_1A72EE: ; CODE XREF: ROM:001A72CAj + ; ROM:001A72E8j + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/knight3.asm b/code/gamelogic/ai/enemies/knight3.asm new file mode 100644 index 0000000..7eb4a79 --- /dev/null +++ b/code/gamelogic/ai/enemies/knight3.asm @@ -0,0 +1,241 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Knight3_B: ; CODE XREF: ROM:001A851Aj + bra.s EnemyAI_Knight3 +; --------------------------------------------------------------------------- + +EnemyAI_Knight3_A: ; CODE XREF: ROM:001A8516j + btst #$01,Flags2(a5) + bne.s loc_1A730E + move.b ChestIndex(a5),d0 + beq.s loc_1A7314 + cmpi.b #$10,d0 + beq.s loc_1A7340 + bra.w loc_1A7490 +; --------------------------------------------------------------------------- + +loc_1A730E: ; CODE XREF: ROM:001A72FCj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7314: ; CODE XREF: ROM:001A7302j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0010,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Knight3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Knight3: ; CODE XREF: ROM:EnemyAI_Knight3_Bj + ; ROM:001A7338j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A7340: ; CODE XREF: ROM:001A7308j + tst.b (byte_FF1142).l + bne.s loc_1A7370 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A7374 + bcs.s loc_1A736A + bsr.s sub_1A73B0 + bcs.s loc_1A736A + bsr.w sub_1A73F6 + bcs.s loc_1A736A + bsr.w sub_1A7436 + +loc_1A736A: ; CODE XREF: ROM:001A735Aj + ; ROM:001A735Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7370: ; CODE XREF: ROM:001A7346j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7374: ; CODE XREF: ROM:001A7358p + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A73AC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A73AC + move.b #$20,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A73AC: ; CODE XREF: sub_1A7374+10j + ; sub_1A7374+20j + tst.b d0 + rts +; End of function sub_1A7374 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A73B0: ; CODE XREF: ROM:001A735Cp + move.w #$0038,d5 + move.w #$FFE0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A73F2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) + ; Bit1 - Walk SW (+Y) + ; Bit2 - Walk NW (-X) + ; Bit3 - Walk SE (+X) + ; Bit4 - Fall + ; Bit5 - Jump + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack + ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage + andi.b #$07,d0 + beq.s loc_1A73F2 + move.b #$21,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A73F2: ; CODE XREF: sub_1A73B0+10j + ; sub_1A73B0+2Aj + tst.b d0 + rts +; End of function sub_1A73B0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A73F6: ; CODE XREF: ROM:001A7360p + move.w #$0030,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7432 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00075,d7 + bhi.s loc_1A7432 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7432: ; CODE XREF: sub_1A73F6+10j + ; sub_1A73F6+20j + tst.b d0 + rts +; End of function sub_1A73F6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7436: ; CODE XREF: ROM:001A7366p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A748C + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00010,d7 + bcc.s loc_1A7472 + move.b #$23,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7472: ; CODE XREF: sub_1A7436+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A748C: ; CODE XREF: sub_1A7436+10j + tst.b d0 + rts +; End of function sub_1A7436 + +; --------------------------------------------------------------------------- + +loc_1A7490: ; CODE XREF: ROM:001A730Aj + andi.b #$0F,d0 + beq.s loc_1A74E2 + cmpi.b #$01,d0 + beq.s loc_1A74AC + cmpi.b #$02,d0 + beq.s loc_1A74E2 + cmpi.b #$03,d0 + beq.s loc_1A74E2 + bra.w loc_1A74E2 +; --------------------------------------------------------------------------- + +loc_1A74AC: ; CODE XREF: ROM:001A749Aj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$05,Unk0D(a5) + bcs.s loc_1A74D6 + move.w #$0400,QueuedAction(a5) + cmpi.b #$17,Unk0D(a5) + bcs.s loc_1A74D6 + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Knight3 +; --------------------------------------------------------------------------- + +loc_1A74D6: ; CODE XREF: ROM:001A74BCj + ; ROM:001A74CAj + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A74E2: ; CODE XREF: ROM:001A7494j + ; ROM:001A74A0j ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A7516 + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A7516 + bra.w EnemyAI_Knight3 +; --------------------------------------------------------------------------- + +loc_1A7516: ; CODE XREF: ROM:001A74F2j + ; ROM:001A7510j + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/lizard1.asm b/code/gamelogic/ai/enemies/lizard1.asm new file mode 100644 index 0000000..3d93454 --- /dev/null +++ b/code/gamelogic/ai/enemies/lizard1.asm @@ -0,0 +1,262 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Lizard1_B: ; CODE XREF: ROM:001A84F2j + bra.s EnemyAI_Lizard1 +; --------------------------------------------------------------------------- + +EnemyAI_Lizard1_A: ; CODE XREF: ROM:001A84EEj + btst #$01,Flags2(a5) + bne.s loc_1A67BE + move.b ChestIndex(a5),d0 + beq.s loc_1A67C4 + cmpi.b #$10,d0 + beq.s loc_1A67F0 + bra.w loc_1A6932 +; --------------------------------------------------------------------------- + +loc_1A67BE: ; CODE XREF: ROM:001A67ACj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A67C4: ; CODE XREF: ROM:001A67B2j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Lizard1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Lizard1: ; CODE XREF: ROM:EnemyAI_Lizard1_Bj + ; ROM:001A67E8j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A67F0: ; CODE XREF: ROM:001A67B8j + tst.b (byte_FF1142).l + bne.s loc_1A6820 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6824 + bcs.s loc_1A681A + bsr.s sub_1A6860 + bcs.s loc_1A681A + bsr.w sub_1A689C + bcs.s loc_1A681A + bsr.w sub_1A68D8 + +loc_1A681A: ; CODE XREF: ROM:001A680Aj + ; ROM:001A680Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6820: ; CODE XREF: ROM:001A67F6j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6824: ; CODE XREF: ROM:001A6808p + move.w #$0048,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A685C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A685C + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A685C: ; CODE XREF: sub_1A6824+10j + ; sub_1A6824+20j + tst.b d0 + rts +; End of function sub_1A6824 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6860: ; CODE XREF: ROM:001A680Cp + move.w #$0050,d5 + move.w #$FFC8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6898 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A6898 + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6898: ; CODE XREF: sub_1A6860+10j + ; sub_1A6860+20j + tst.b d0 + rts +; End of function sub_1A6860 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A689C: ; CODE XREF: ROM:001A6810p + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A68D4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A68D4 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A68D4: ; CODE XREF: sub_1A689C+10j + ; sub_1A689C+20j + tst.b d0 + rts +; End of function sub_1A689C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A68D8: ; CODE XREF: ROM:001A6816p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A692E + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bcc.s loc_1A6914 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6914: ; CODE XREF: sub_1A68D8+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A692E: ; CODE XREF: sub_1A68D8+10j + tst.b d0 + rts +; End of function sub_1A68D8 + +; --------------------------------------------------------------------------- + +loc_1A6932: ; CODE XREF: ROM:001A67BAj + andi.b #$0F,d0 + beq.s loc_1A694E + cmpi.b #$01,d0 + beq.s loc_1A6954 + cmpi.b #$02,d0 + beq.s loc_1A6966 + cmpi.b #$03,d0 + beq.s loc_1A69A0 + bra.w loc_1A69D6 +; --------------------------------------------------------------------------- + +loc_1A694E: ; CODE XREF: ROM:001A6936j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6954: ; CODE XREF: ROM:001A693Cj + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Lizard1 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6966: ; CODE XREF: ROM:001A6942j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A699A + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A699A + bra.w EnemyAI_Lizard1 +; --------------------------------------------------------------------------- + +loc_1A699A: ; CODE XREF: ROM:001A6976j + ; ROM:001A6994j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A69A0: ; CODE XREF: ROM:001A6948j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A69D4 + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A69D4 + bra.w EnemyAI_Lizard1 +; --------------------------------------------------------------------------- + +locret_1A69D4: ; CODE XREF: ROM:001A69B0j + ; ROM:001A69CEj + rts +; --------------------------------------------------------------------------- + +loc_1A69D6: ; CODE XREF: ROM:001A694Aj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A6A0A + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A6A0A + bra.w EnemyAI_Lizard1 +; --------------------------------------------------------------------------- + +locret_1A6A0A: ; CODE XREF: ROM:001A69E6j + ; ROM:001A6A04j + rts diff --git a/code/gamelogic/ai/enemies/lizard2.asm b/code/gamelogic/ai/enemies/lizard2.asm new file mode 100644 index 0000000..875212c --- /dev/null +++ b/code/gamelogic/ai/enemies/lizard2.asm @@ -0,0 +1,240 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Lizard2_B: ; CODE XREF: ROM:001A84FAj + bra.s EnemyAI_Lizard2 +; --------------------------------------------------------------------------- + +EnemyAI_Lizard2_A: ; CODE XREF: ROM:001A84F6j + btst #$01,Flags2(a5) + bne.s loc_1A6A26 + move.b ChestIndex(a5),d0 + beq.s loc_1A6A2C + cmpi.b #$10,d0 + beq.s loc_1A6A58 + bra.w loc_1A6B9A +; --------------------------------------------------------------------------- + +loc_1A6A26: ; CODE XREF: ROM:001A6A14j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6A2C: ; CODE XREF: ROM:001A6A1Aj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Lizard2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Lizard2: ; CODE XREF: ROM:EnemyAI_Lizard2_Bj + ; ROM:001A6A50j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A6A58: ; CODE XREF: ROM:001A6A20j + tst.b (byte_FF1142).l + bne.s loc_1A6A88 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6A8C + bcs.s loc_1A6A82 + bsr.s sub_1A6AC8 + bcs.s loc_1A6A82 + bsr.w sub_1A6B04 + bcs.s loc_1A6A82 + bsr.w sub_1A6B40 + +loc_1A6A82: ; CODE XREF: ROM:001A6A72j + ; ROM:001A6A76j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6A88: ; CODE XREF: ROM:001A6A5Ej + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6A8C: ; CODE XREF: ROM:001A6A70p + move.w #$0048,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6AC4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0006,d7 + bhi.s loc_1A6AC4 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6AC4: ; CODE XREF: sub_1A6A8C+10j + ; sub_1A6A8C+20j + tst.b d0 + rts +; End of function sub_1A6A8C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6AC8: ; CODE XREF: ROM:001A6A74p + move.w #$0050,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6B00 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A6B00 + move.b #$21,ChestIndex(a5) + move.w #$0014,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6B00: ; CODE XREF: sub_1A6AC8+10j + ; sub_1A6AC8+20j + tst.b d0 + rts +; End of function sub_1A6AC8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6B04: ; CODE XREF: ROM:001A6A78p + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6B3C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A6B3C + move.b #$22,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6B3C: ; CODE XREF: sub_1A6B04+10j + ; sub_1A6B04+20j + tst.b d0 + rts +; End of function sub_1A6B04 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6B40: ; CODE XREF: ROM:001A6A7Ep + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6B96 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1A6B7C + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6B7C: ; CODE XREF: sub_1A6B40+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6B96: ; CODE XREF: sub_1A6B40+10j + tst.b d0 + rts +; End of function sub_1A6B40 + +; --------------------------------------------------------------------------- + +loc_1A6B9A: ; CODE XREF: ROM:001A6A22j + andi.b #$0F,d0 + beq.s loc_1A6BB6 + cmpi.b #$01,d0 + beq.s loc_1A6BBC + cmpi.b #$02,d0 + beq.s loc_1A6BC2 + cmpi.b #$03,d0 + beq.s loc_1A6BFC + bra.w loc_1A6BC2 +; --------------------------------------------------------------------------- + +loc_1A6BB6: ; CODE XREF: ROM:001A6B9Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6BBC: ; CODE XREF: ROM:001A6BA4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6BC2: ; CODE XREF: ROM:001A6BAAj + ; ROM:001A6BB2j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A6BF6 + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A6BF6 + bra.w EnemyAI_Lizard2 +; --------------------------------------------------------------------------- + +loc_1A6BF6: ; CODE XREF: ROM:001A6BD2j + ; ROM:001A6BF0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6BFC: ; CODE XREF: ROM:001A6BB0j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A6C30 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A6C30 + bra.w EnemyAI_Lizard2 +; --------------------------------------------------------------------------- + +locret_1A6C30: ; CODE XREF: ROM:001A6C0Cj + ; ROM:001A6C2Aj + rts diff --git a/code/gamelogic/ai/enemies/lizard3.asm b/code/gamelogic/ai/enemies/lizard3.asm new file mode 100644 index 0000000..1cd104b --- /dev/null +++ b/code/gamelogic/ai/enemies/lizard3.asm @@ -0,0 +1,257 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Lizard3_B: ; CODE XREF: ROM:001A8502j + bra.s EnemyAI_Lizard3 +; --------------------------------------------------------------------------- + +EnemyAI_Lizard3_A: ; CODE XREF: ROM:001A84FEj + btst #$01,Flags2(a5) + bne.s loc_1A6C4C + move.b ChestIndex(a5),d0 + beq.s loc_1A6C52 + cmpi.b #$10,d0 + beq.s loc_1A6C7E + bra.w loc_1A6DC0 +; --------------------------------------------------------------------------- + +loc_1A6C4C: ; CODE XREF: ROM:001A6C3Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6C52: ; CODE XREF: ROM:001A6C40j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Lizard3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Lizard3: ; CODE XREF: ROM:EnemyAI_Lizard3_Bj + ; ROM:001A6C76j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A6C7E: ; CODE XREF: ROM:001A6C46j + tst.b (byte_FF1142).l + bne.s loc_1A6CAE + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6CB2 + bcs.s loc_1A6CA8 + bsr.s sub_1A6CEE + bcs.s loc_1A6CA8 + bsr.w sub_1A6D2A + bcs.s loc_1A6CA8 + bsr.w sub_1A6D66 + +loc_1A6CA8: ; CODE XREF: ROM:001A6C98j + ; ROM:001A6C9Cj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6CAE: ; CODE XREF: ROM:001A6C84j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6CB2: ; CODE XREF: ROM:001A6C96p + move.w #$0050,d5 + move.w #$FFD0,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6CEA + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bhi.s loc_1A6CEA + move.b #$20,ChestIndex(a5) + move.w #$0015,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6CEA: ; CODE XREF: sub_1A6CB2+10j + ; sub_1A6CB2+20j + tst.b d0 + rts +; End of function sub_1A6CB2 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6CEE: ; CODE XREF: ROM:001A6C9Ap + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6D26 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A6D26 + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6D26: ; CODE XREF: sub_1A6CEE+10j + ; sub_1A6CEE+20j + tst.b d0 + rts +; End of function sub_1A6CEE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6D2A: ; CODE XREF: ROM:001A6C9Ep + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6D62 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A6D62 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6D62: ; CODE XREF: sub_1A6D2A+10j + ; sub_1A6D2A+20j + tst.b d0 + rts +; End of function sub_1A6D2A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6D66: ; CODE XREF: ROM:001A6CA4p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6DBC + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bcc.s loc_1A6DA2 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6DA2: ; CODE XREF: sub_1A6D66+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6DBC: ; CODE XREF: sub_1A6D66+10j + tst.b d0 + rts +; End of function sub_1A6D66 + +; --------------------------------------------------------------------------- + +loc_1A6DC0: ; CODE XREF: ROM:001A6C48j + andi.b #$0F,d0 + beq.s loc_1A6DDE + cmpi.b #$01,d0 + beq.s loc_1A6E2C + cmpi.b #$02,d0 + beq.s loc_1A6E02 + cmpi.b #$03,d0 + beq.w loc_1A6E66 + bra.w loc_1A6E2C +; --------------------------------------------------------------------------- + +loc_1A6DDE: ; CODE XREF: ROM:001A6DC4j + cmpi.b #$08,BehavParam(a5) + bcc.s loc_1A6DFC + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + +loc_1A6DFC: ; CODE XREF: ROM:001A6DE4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6E02: ; CODE XREF: ROM:001A6DD0j + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$19,Unk0D(a5) + bcc.w EnemyAI_Lizard3 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6E2C: ; CODE XREF: ROM:001A6DCAj + ; ROM:001A6DDAj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A6E60 + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A6E60 + bra.w EnemyAI_Lizard3 +; --------------------------------------------------------------------------- + +loc_1A6E60: ; CODE XREF: ROM:001A6E3Cj + ; ROM:001A6E5Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6E66: ; CODE XREF: ROM:001A6DD6j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A6E9A + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A6E9A + bra.w EnemyAI_Lizard3 +; --------------------------------------------------------------------------- + +locret_1A6E9A: ; CODE XREF: ROM:001A6E76j + ; ROM:001A6E94j + rts diff --git a/code/gamelogic/ai/enemies/mimic1.asm b/code/gamelogic/ai/enemies/mimic1.asm new file mode 100644 index 0000000..2eea7b6 --- /dev/null +++ b/code/gamelogic/ai/enemies/mimic1.asm @@ -0,0 +1,389 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mimic1_B: ; CODE XREF: ROM:001A8582j + bra.s EnemyAI_Mimic1 +; --------------------------------------------------------------------------- + +EnemyAI_Mimic1_A: ; CODE XREF: ROM:001A857Ej + btst #$01,Flags2(a5) + bne.s loc_1A9B20 + move.b ChestIndex(a5),d0 + beq.s loc_1A9B26 + cmpi.b #$10,d0 + beq.s loc_1A9B6C + bra.w loc_1A9CD4 +; --------------------------------------------------------------------------- + +loc_1A9B20: ; CODE XREF: ROM:001A9B0Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9B26: ; CODE XREF: ROM:001A9B14j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mimic1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mimic1: ; CODE XREF: ROM:EnemyAI_Mimic1_Bj + ; ROM:001A9B4Aj ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9B6C: ; CODE XREF: ROM:001A9B1Aj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A9B9E + bcs.s loc_1A9B90 + bsr.w sub_1A9BF6 + bcs.s loc_1A9B90 + bsr.w sub_1A9C3E + bcs.s loc_1A9B90 + bsr.w sub_1A9C88 + +loc_1A9B90: ; CODE XREF: ROM:001A9B7Ej + ; ROM:001A9B84j ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1A9B9C + bsr.w j_j_OnTick + +locret_1A9B9C: ; CODE XREF: ROM:001A9B96j + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9B9E: ; CODE XREF: ROM:001A9B7Cp + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A9BF2 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A9BF2 + move.w #$0080,d5 + move.w #$0080,d6 + move.w #$0080,d7 + bsr.w sub_1A8964 + bcs.s loc_1A9BF2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0002,d7 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9BF2: ; CODE XREF: sub_1A9B9E+8j + ; sub_1A9B9E+12j ... + tst.b d0 + rts +; End of function sub_1A9B9E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9BF6: ; CODE XREF: ROM:001A9B80p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A9C3A + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9C3A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00400,d7 + bhi.s loc_1A9C3A + move.b #$21,ChestIndex(a5) + move.w #$001B,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9C3A: ; CODE XREF: sub_1A9BF6+6j + ; sub_1A9BF6+18j ... + tst.b d0 + rts +; End of function sub_1A9BF6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9C3E: ; CODE XREF: ROM:001A9B86p + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A9C84 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s loc_1A9C84 + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9C84 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9C84: ; CODE XREF: sub_1A9C3E+8j + ; sub_1A9C3E+12j ... + tst.b d0 + rts +; End of function sub_1A9C3E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9C88: ; CODE XREF: ROM:001A9B8Cp + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A9CD0 + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9CD0 + move.b HitBoxSubZEnd(a5),d0 + subi.b #$10,d0 + sub.b (Player_HitBoxZEnd+1).l,d0 + cmpi.b #$20,d0 + bcc.s loc_1A9CD0 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9CD0: ; CODE XREF: sub_1A9C88+6j + ; sub_1A9C88+18j ... + tst.b d0 + rts +; End of function sub_1A9C88 + +; --------------------------------------------------------------------------- + +loc_1A9CD4: ; CODE XREF: ROM:001A9B1Cj + andi.b #$0F,d0 + beq.s loc_1A9CF6 + cmpi.b #$01,d0 + beq.w locret_1A9DA0 + cmpi.b #$02,d0 + beq.w loc_1A9DA2 + cmpi.b #$03,d0 + beq.w loc_1A9E4A + bra.w loc_1A9E4A +; --------------------------------------------------------------------------- + +loc_1A9CF6: ; CODE XREF: ROM:001A9CD8j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A9D10 + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D10: ; CODE XREF: ROM:001A9D00j + cmpi.b #$08,Unk0D(a5) + bne.s loc_1A9D26 + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D26: ; CODE XREF: ROM:001A9D16j + cmpi.b #$10,Unk0D(a5) + bne.s loc_1A9D3C + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D3C: ; CODE XREF: ROM:001A9D2Cj + cmpi.b #$18,Unk0D(a5) + bne.s loc_1A9D52 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D52: ; CODE XREF: ROM:001A9D42j + cmpi.b #$20,Unk0D(a5) + bne.w loc_1A9D6A + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D6A: ; CODE XREF: ROM:001A9D58j + cmpi.b #$28,Unk0D(a5) + bne.w loc_1A9D82 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9D82: ; CODE XREF: ROM:001A9D70j + cmpi.b #$30,Unk0D(a5) + bne.w locret_1A9D9E + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + move.b #$10,ChestIndex(a5) + +locret_1A9D9E: ; CODE XREF: ROM:001A9D88j + rts +; --------------------------------------------------------------------------- + +locret_1A9DA0: ; CODE XREF: ROM:001A9CDEj + rts +; --------------------------------------------------------------------------- + +loc_1A9DA2: ; CODE XREF: ROM:001A9CE6j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A9DBC + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9DBC: ; CODE XREF: ROM:001A9DACj + cmpi.b #$08,Unk0D(a5) + bne.s loc_1A9DD2 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9DD2: ; CODE XREF: ROM:001A9DC2j + cmpi.b #$10,Unk0D(a5) + bne.s loc_1A9DE8 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9DE8: ; CODE XREF: ROM:001A9DD8j + cmpi.b #$18,Unk0D(a5) + bne.s loc_1A9DFE + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9DFE: ; CODE XREF: ROM:001A9DEEj + cmpi.b #$20,Unk0D(a5) + bne.w loc_1A9E16 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9E16: ; CODE XREF: ROM:001A9E04j + cmpi.b #$28,Unk0D(a5) + bne.w loc_1A9E2E + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9E2E: ; CODE XREF: ROM:001A9E1Cj + cmpi.b #$30,Unk0D(a5) + bne.w locret_1A9E48 + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + bra.w EnemyAI_Mimic1 +; --------------------------------------------------------------------------- + +locret_1A9E48: ; CODE XREF: ROM:001A9E34j + rts +; --------------------------------------------------------------------------- + +loc_1A9E4A: ; CODE XREF: ROM:001A9CEEj + ; ROM:001A9CF2j + move.w #$0100,QueuedAction(a5) + move.w Z(a5),d0 + move.w HitBoxZEnd(a5),d1 + movem.w d0-d1,-(sp) + move.w (Player_HitBoxZEnd).l,d0 + addi.w #$0011,d0 + move.w d0,HitBoxZEnd(a5) + clr.w d1 + move.b Height(a5),d1 + sub.w d1,d0 + addq.w #$01,d0 + move.w d0,Z(a5) + jsr (sub_3BC).l + bcc.s loc_1A9E90 + movem.w (sp)+,d0-d1 + move.w d0,Z(a5) + move.w d1,HitBoxZEnd(a5) + bra.w EnemyAI_Mimic1 +; --------------------------------------------------------------------------- + +loc_1A9E90: ; CODE XREF: ROM:001A9E7Ej + movem.w (sp)+,d0-d1 + tst.b (byte_FF1145).l + bne.w EnemyAI_Mimic1 + tst.b (byte_FF1142).l + bne.s loc_1A9EAE + move.b #$01,(byte_FF1142).l + +loc_1A9EAE: ; CODE XREF: ROM:001A9EA4j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mimic1 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1A9EF6 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0100,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A9F04 + +loc_1A9EF6: ; CODE XREF: ROM:001A9EDCj + cmpi.b #$1E,d0 + bcs.w locret_1A9F02 + clr.b Unk0D(a5) + +locret_1A9F02: ; CODE XREF: ROM:001A9EFAj + rts +; --------------------------------------------------------------------------- + +loc_1A9F04: ; CODE XREF: ROM:001A9EF4j + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC diff --git a/code/gamelogic/ai/enemies/mimic2.asm b/code/gamelogic/ai/enemies/mimic2.asm new file mode 100644 index 0000000..c9b2210 --- /dev/null +++ b/code/gamelogic/ai/enemies/mimic2.asm @@ -0,0 +1,403 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mimic2_B: ; CODE XREF: ROM:001A858Aj + bra.s EnemyAI_Mimic2 +; --------------------------------------------------------------------------- + +EnemyAI_Mimic2_A: ; CODE XREF: ROM:001A8586j + btst #$01,Flags2(a5) + bne.s loc_1A9F28 + move.b ChestIndex(a5),d0 + beq.s loc_1A9F2E + cmpi.b #$10,d0 + beq.s loc_1A9F74 + bra.w loc_1AA104 +; --------------------------------------------------------------------------- + +loc_1A9F28: ; CODE XREF: ROM:001A9F16j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9F2E: ; CODE XREF: ROM:001A9F1Cj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mimic2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mimic2: ; CODE XREF: ROM:EnemyAI_Mimic2_Bj + ; ROM:001A9F52j ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9F74: ; CODE XREF: ROM:001A9F22j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A9FA6 + bcs.s loc_1A9F98 + bsr.w sub_1AA000 + bcs.s loc_1A9F98 + bsr.w sub_1AA048 + bcs.s loc_1A9F98 + bsr.w sub_1AA092 + +loc_1A9F98: ; CODE XREF: ROM:001A9F86j + ; ROM:001A9F8Cj ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1A9FA4 + bsr.w j_j_OnTick + +locret_1A9FA4: ; CODE XREF: ROM:001A9F9Ej + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9FA6: ; CODE XREF: ROM:001A9F84p + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A9FFC + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A9FFC + move.w #$0080,d5 + move.w #$0080,d6 + move.w #$0080,d7 + bsr.w sub_1A8964 + bcs.s loc_1A9FFC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00002,d7 + bhi.s loc_1A9FFC + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9FFC: ; CODE XREF: sub_1A9FA6+8j + ; sub_1A9FA6+12j ... + tst.b d0 + rts +; End of function sub_1A9FA6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA000: ; CODE XREF: ROM:001A9F88p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA044 + move.w #$0050,d5 + move.w #$0000,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA044 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bhi.s loc_1AA044 + move.b #$21,ChestIndex(a5) + move.w #$001C,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA044: ; CODE XREF: sub_1AA000+6j + ; sub_1AA000+18j ... + tst.b d0 + rts +; End of function sub_1AA000 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA048: ; CODE XREF: ROM:001A9F8Ep + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AA08E + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s loc_1AA08E + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA08E + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA08E: ; CODE XREF: sub_1AA048+8j + ; sub_1AA048+12j ... + tst.b d0 + rts +; End of function sub_1AA048 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA092: ; CODE XREF: ROM:001A9F94p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA100 + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA100 + move.b HitBoxSubZEnd(a5),d0 + subi.b #$10,d0 + sub.b (Player_HitBoxZEnd+1).l,d0 + cmpi.b #$20,d0 + bcc.s loc_1AA100 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00010,d7 + bhi.s loc_1AA0EA + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA0EA: ; CODE XREF: sub_1AA092+3Cj + move.b #$24,ChestIndex(a5) + move.w #$001D,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA100: ; CODE XREF: sub_1AA092+6j + ; sub_1AA092+18j ... + tst.b d0 + rts +; End of function sub_1AA092 + +; --------------------------------------------------------------------------- + +loc_1AA104: ; CODE XREF: ROM:001A9F24j + andi.b #$0F,d0 + beq.s loc_1AA126 + cmpi.b #$01,d0 + beq.w loc_1AA1D0 + cmpi.b #$02,d0 + beq.w loc_1AA1D6 + cmpi.b #$03,d0 + beq.w loc_1AA27E + bra.w loc_1AA1D0 +; --------------------------------------------------------------------------- + +loc_1AA126: ; CODE XREF: ROM:001AA108j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AA140 + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA140: ; CODE XREF: ROM:001AA130j + cmpi.b #$07,Unk0D(a5) + bne.s loc_1AA156 + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA156: ; CODE XREF: ROM:001AA146j + cmpi.b #$0E,Unk0D(a5) + bne.s loc_1AA16C + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA16C: ; CODE XREF: ROM:001AA15Cj + cmpi.b #$15,Unk0D(a5) + bne.s loc_1AA182 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA182: ; CODE XREF: ROM:001AA172j + cmpi.b #$1C,Unk0D(a5) + bne.w loc_1AA19A + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA19A: ; CODE XREF: ROM:001AA188j + cmpi.b #$23,Unk0D(a5) + bne.w loc_1AA1B2 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA1B2: ; CODE XREF: ROM:001AA1A0j + cmpi.b #$2A,Unk0D(a5) + bne.w locret_1AA1CE + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + move.b #$10,ChestIndex(a5) + +locret_1AA1CE: ; CODE XREF: ROM:001AA1B8j + rts +; --------------------------------------------------------------------------- + +loc_1AA1D0: ; CODE XREF: ROM:001AA10Ej + ; ROM:001AA122j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AA1D6: ; CODE XREF: ROM:001AA116j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AA1F0 + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA1F0: ; CODE XREF: ROM:001AA1E0j + cmpi.b #$07,Unk0D(a5) + bne.s loc_1AA206 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA206: ; CODE XREF: ROM:001AA1F6j + cmpi.b #$0E,Unk0D(a5) + bne.s loc_1AA21C + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA21C: ; CODE XREF: ROM:001AA20Cj + cmpi.b #$15,Unk0D(a5) + bne.s loc_1AA232 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA232: ; CODE XREF: ROM:001AA222j + cmpi.b #$1C,Unk0D(a5) + bne.w loc_1AA24A + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA24A: ; CODE XREF: ROM:001AA238j + cmpi.b #$23,Unk0D(a5) + bne.w loc_1AA262 + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA262: ; CODE XREF: ROM:001AA250j + cmpi.b #$2A,Unk0D(a5) + bne.w locret_1AA27C + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + bra.w EnemyAI_Mimic2 +; --------------------------------------------------------------------------- + +locret_1AA27C: ; CODE XREF: ROM:001AA268j + rts +; --------------------------------------------------------------------------- + +loc_1AA27E: ; CODE XREF: ROM:001AA11Ej + move.w #$0100,QueuedAction(a5) + move.w Z(a5),d0 + move.w HitBoxZEnd(a5),d1 + movem.w d0-d1,-(sp) + move.w (Player_HitBoxZEnd).l,d0 + addi.w #$0011,d0 + move.w d0,HitBoxZEnd(a5) + clr.w d1 + move.b Height(a5),d1 + sub.w d1,d0 + addq.w #$01,d0 + move.w d0,Z(a5) + jsr (sub_3BC).l + bcc.s loc_1AA2C4 + movem.w (sp)+,d0-d1 + move.w d0,Z(a5) + move.w d1,HitBoxZEnd(a5) + bra.w EnemyAI_Mimic2 +; --------------------------------------------------------------------------- + +loc_1AA2C4: ; CODE XREF: ROM:001AA2B2j + movem.w (sp)+,d0-d1 + tst.b (byte_FF1145).l + bne.w EnemyAI_Mimic2 + tst.b (byte_FF1142).l + bne.s loc_1AA2E2 + move.b #$01,(byte_FF1142).l + +loc_1AA2E2: ; CODE XREF: ROM:001AA2D8j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mimic2 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1AA32C + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0200,d0 + jsr (j_j_RemoveHealth).l + tst.w CurrentHealth(a5) + beq.s loc_1AA33A + +loc_1AA32C: ; CODE XREF: ROM:001AA310j + cmpi.b #$1E,d0 + bcs.w locret_1AA338 + clr.b Unk0D(a5) + +locret_1AA338: ; CODE XREF: ROM:001AA330j + rts +; --------------------------------------------------------------------------- + +loc_1AA33A: ; CODE XREF: ROM:001AA32Aj + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC diff --git a/code/gamelogic/ai/enemies/mimic3.asm b/code/gamelogic/ai/enemies/mimic3.asm new file mode 100644 index 0000000..aec2949 --- /dev/null +++ b/code/gamelogic/ai/enemies/mimic3.asm @@ -0,0 +1,403 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mimic3_B: ; CODE XREF: ROM:001A8592j + bra.s EnemyAI_Mimic3 +; --------------------------------------------------------------------------- + +EnemyAI_Mimic3_A: ; CODE XREF: ROM:001A858Ej + btst #$01,Flags2(a5) + bne.s loc_1AA35E + move.b ChestIndex(a5),d0 + beq.s loc_1AA364 + cmpi.b #$10,d0 + beq.s loc_1AA3AA + bra.w loc_1AA53A +; --------------------------------------------------------------------------- + +loc_1AA35E: ; CODE XREF: ROM:001AA34Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AA364: ; CODE XREF: ROM:001AA352j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mimic3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mimic3: ; CODE XREF: ROM:EnemyAI_Mimic3_Bj + ; ROM:001AA388j ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA3AA: ; CODE XREF: ROM:001AA358j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AA3DC + bcs.s loc_1AA3CE + bsr.w sub_1AA436 + bcs.s loc_1AA3CE + bsr.w sub_1AA47E + bcs.s loc_1AA3CE + bsr.w sub_1AA4C8 + +loc_1AA3CE: ; CODE XREF: ROM:001AA3BCj + ; ROM:001AA3C2j ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1AA3DA + bsr.w j_j_OnTick + +locret_1AA3DA: ; CODE XREF: ROM:001AA3D4j + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA3DC: ; CODE XREF: ROM:001AA3BAp + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AA432 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA432 + move.w #$0080,d5 + move.w #$0080,d6 + move.w #$0080,d7 + bsr.w sub_1A8964 + bcs.s loc_1AA432 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00020,d7 + bhi.s loc_1AA432 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA432: ; CODE XREF: sub_1AA3DC+8j + ; sub_1AA3DC+12j ... + tst.b d0 + rts +; End of function sub_1AA3DC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA436: ; CODE XREF: ROM:001AA3BEp + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA47A + move.w #$0050,d5 + move.w #$0000,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA47A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bhi.s loc_1AA47A + move.b #$21,ChestIndex(a5) + move.w #$001D,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA47A: ; CODE XREF: sub_1AA436+6j + ; sub_1AA436+18j ... + tst.b d0 + rts +; End of function sub_1AA436 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA47E: ; CODE XREF: ROM:001AA3C4p + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AA4C4 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s loc_1AA4C4 + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA4C4 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA4C4: ; CODE XREF: sub_1AA47E+8j + ; sub_1AA47E+12j ... + tst.b d0 + rts +; End of function sub_1AA47E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA4C8: ; CODE XREF: ROM:001AA3CAp + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA536 + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA536 + move.b HitBoxSubZEnd(a5),d0 + subi.b #$10,d0 + sub.b (Player_HitBoxZEnd+1).l,d0 + cmpi.b #$20,d0 + bcc.s loc_1AA536 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00005,d7 + bhi.s loc_1AA520 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA520: ; CODE XREF: sub_1AA4C8+3Cj + move.b #$24,ChestIndex(a5) + move.w #$001E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA536: ; CODE XREF: sub_1AA4C8+6j + ; sub_1AA4C8+18j ... + tst.b d0 + rts +; End of function sub_1AA4C8 + +; --------------------------------------------------------------------------- + +loc_1AA53A: ; CODE XREF: ROM:001AA35Aj + andi.b #$0F,d0 + beq.s loc_1AA55C + cmpi.b #$01,d0 + beq.w loc_1AA606 + cmpi.b #$02,d0 + beq.w loc_1AA60C + cmpi.b #$03,d0 + beq.w loc_1AA6B4 + bra.w loc_1AA606 +; --------------------------------------------------------------------------- + +loc_1AA55C: ; CODE XREF: ROM:001AA53Ej + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AA576 + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA576: ; CODE XREF: ROM:001AA566j + cmpi.b #$05,Unk0D(a5) + bne.s loc_1AA58C + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA58C: ; CODE XREF: ROM:001AA57Cj + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1AA5A2 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA5A2: ; CODE XREF: ROM:001AA592j + cmpi.b #$0F,Unk0D(a5) + bne.s loc_1AA5B8 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA5B8: ; CODE XREF: ROM:001AA5A8j + cmpi.b #$14,Unk0D(a5) + bne.w loc_1AA5D0 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA5D0: ; CODE XREF: ROM:001AA5BEj + cmpi.b #$19,Unk0D(a5) + bne.w loc_1AA5E8 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA5E8: ; CODE XREF: ROM:001AA5D6j + cmpi.b #$1E,Unk0D(a5) + bne.w locret_1AA604 + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + move.b #$10,ChestIndex(a5) + +locret_1AA604: ; CODE XREF: ROM:001AA5EEj + rts +; --------------------------------------------------------------------------- + +loc_1AA606: ; CODE XREF: ROM:001AA544j + ; ROM:001AA558j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AA60C: ; CODE XREF: ROM:001AA54Cj + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AA626 + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA626: ; CODE XREF: ROM:001AA616j + cmpi.b #$05,Unk0D(a5) + bne.s loc_1AA63C + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA63C: ; CODE XREF: ROM:001AA62Cj + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1AA652 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA652: ; CODE XREF: ROM:001AA642j + cmpi.b #$0F,Unk0D(a5) + bne.s loc_1AA668 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA668: ; CODE XREF: ROM:001AA658j + cmpi.b #$14,Unk0D(a5) + bne.w loc_1AA680 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA680: ; CODE XREF: ROM:001AA66Ej + cmpi.b #$19,Unk0D(a5) + bne.w loc_1AA698 + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA698: ; CODE XREF: ROM:001AA686j + cmpi.b #$1E,Unk0D(a5) + bne.w locret_1AA6B2 + move.b #$FF,Action1(a5) + move.w #$01C0,PrevAction(a5) + bra.w EnemyAI_Mimic3 +; --------------------------------------------------------------------------- + +locret_1AA6B2: ; CODE XREF: ROM:001AA69Ej + rts +; --------------------------------------------------------------------------- + +loc_1AA6B4: ; CODE XREF: ROM:001AA554j + move.w #$0100,QueuedAction(a5) + move.w Z(a5),d0 + move.w HitBoxZEnd(a5),d1 + movem.w d0-d1,-(sp) + move.b (Player_HitBoxZEnd).l,d0 + addi.w #$0011,d0 + move.w d0,HitBoxZEnd(a5) + clr.w d1 + move.b Height(a5),d1 + sub.w d1,d0 + addq.w #$01,d0 + move.w d0,Z(a5) + jsr (sub_3BC).l + bcc.s loc_1AA6FA + movem.w (sp)+,d0-d1 + move.w d0,Z(a5) + move.w d1,HitBoxZEnd(a5) + bra.w EnemyAI_Mimic3 +; --------------------------------------------------------------------------- + +loc_1AA6FA: ; CODE XREF: ROM:001AA6E8j + movem.w (sp)+,d0-d1 + tst.b (byte_FF1145).l + bne.w EnemyAI_Mimic3 + tst.b (byte_FF1142).l + bne.s loc_1AA718 + move.b #$01,(byte_FF1142).l + +loc_1AA718: ; CODE XREF: ROM:001AA70Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0010,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mimic3 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1AA762 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0300,d0 + jsr (j_j_RemoveHealth).l + tst.w CurrentHealth(a5) + beq.s loc_1AA770 + +loc_1AA762: ; CODE XREF: ROM:001AA746j + cmpi.b #$0A,d0 + bcs.w locret_1AA76E + clr.b Unk0D(a5) + +locret_1AA76E: ; CODE XREF: ROM:001AA766j + rts +; --------------------------------------------------------------------------- + +loc_1AA770: ; CODE XREF: ROM:001AA760j + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC diff --git a/code/gamelogic/ai/enemies/mir.asm b/code/gamelogic/ai/enemies/mir.asm new file mode 100644 index 0000000..93584ea --- /dev/null +++ b/code/gamelogic/ai/enemies/mir.asm @@ -0,0 +1,175 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mir_B: ; CODE XREF: ROM:001A85EAj + bra.s EnemyAI_Mir +; --------------------------------------------------------------------------- + +EnemyAI_Mir_A: ; CODE XREF: ROM:001A85E6j + bset #$00,Flags2(a5) + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + btst #$01,Flags2(a5) + bne.w loc_1ABFF2 + move.b ChestIndex(a5),d0 + cmpi.b #$10,d0 + bne.w loc_1AC04E + bra.s loc_1ABF72 +; --------------------------------------------------------------------------- + +EnemyAI_Mir: ; CODE XREF: ROM:EnemyAI_Mir_Bj + ; ROM:001AC104j ... + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABF72: ; CODE XREF: ROM:001ABF58j + bsr.w sub_1AC010 + move.b d2,d1 + movea.l a5,a1 + bclr #$00,Flags2(a5) + jsr (j_SetSpriteRotationAnimFlags).l + bset #$07,Unk48(a5) + clr.b Unk0A(a5) + move.w (Player_CentreX).l,d0 + subi.w #$0070,d0 + move.w CentreX(a5),d1 + sub.w d0,d1 + cmpi.w #$00E0,d1 + bcc.s loc_1ABFF8 + move.w (Player_CentreY).l,d0 + subi.w #$0070,d0 + move.w CentreY(a5),d2 + sub.w d0,d2 + cmpi.w #$00E0,d2 + bcc.s loc_1ABFF8 + move.w (Player_CentreX).l,d0 + subi.w #$0060,d0 + move.w CentreX(a5),d1 + sub.w d0,d1 + cmpi.w #$00C0,d1 + bcc.s loc_1AC004 + move.w (Player_CentreY).l,d0 + subi.w #$0060,d0 + move.w CentreY(a5),d2 + sub.w d0,d2 + cmpi.w #$00C0,d2 + bcc.s loc_1AC004 + move.w #$0266,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + +loc_1ABFF2: ; CODE XREF: ROM:001ABF48j + ; ROM:001AC002j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABFF8: ; CODE XREF: ROM:001ABFA4j + ; ROM:001ABFBAj + move.w #$0267,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bra.s loc_1ABFF2 +; --------------------------------------------------------------------------- + +loc_1AC004: ; CODE XREF: ROM:001ABFD0j + ; ROM:001ABFE6j + clr.b Unk4D(a5) + move.b #$20,ChestIndex(a5) + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC010: ; CODE XREF: ROM:loc_1ABF72p + ; ROM:001AC054p ... + move.w CentreX(a5),d0 + sub.w (Player_CentreX).l,d0 + move.w CentreY(a5),d1 + sub.w (Player_CentreY).l,d1 + movem.w d0-d1,-(sp) + add.w d0,d1 + bpl.s loc_1AC03E + movem.w (sp)+,d0-d1 + move.b #$80,d2 + sub.w d1,d0 + bpl.s locret_1AC04C + move.b #$40,d2 + bra.s locret_1AC04C +; --------------------------------------------------------------------------- + +loc_1AC03E: ; CODE XREF: sub_1AC010+1Aj + movem.w (sp)+,d0-d1 + move.b #$C0,d2 + sub.w d1,d0 + bpl.s locret_1AC04C + clr.b d2 + +locret_1AC04C: ; CODE XREF: sub_1AC010+26j + ; sub_1AC010+2Cj ... + rts +; End of function sub_1AC010 + +; --------------------------------------------------------------------------- + +loc_1AC04E: ; CODE XREF: ROM:001ABF54j + bset #$07,Unk48(a5) + bsr.w sub_1AC010 + move.b d2,d1 + movea.l a5,a1 + bclr #$00,Flags2(a5) + jsr (j_SetSpriteRotationAnimFlags).l + bset #$00,Flags2(a5) + andi.w #$0004,AnimationIndex(a5) + addi.w #$0008,AnimationIndex(a5) + move.b #$01,Unk0A(a5) + andi.b #$BF,Flags2(a5) + addq.b #$01,Unk4D(a5) + move.w #$0000,AnimationFrame(a5) + move.w #$0100,QueuedAction(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AC0AE + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AC0AE: ; CODE XREF: ROM:001AC09Cj + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AC0C0 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AC0C0: ; CODE XREF: ROM:001AC0B4j + cmpi.b #$0F,Unk4D(a5) + bhi.w loc_1AC108 + bcs.w locret_1AC11E + bsr.w sub_1AC010 + move.b RotationAndSize(a5),d0 + movem.w d0,-(sp) + andi.b #$3F,RotationAndSize(a5) + or.b d2,RotationAndSize(a5) + move.b #$01,d0 + move.w #$0300,d1 + bsr.w sub_1AC474 + bcs.s loc_1AC0FC + movem.w (sp)+,d0 + move.b d0,RotationAndSize(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC0FC: ; CODE XREF: ROM:001AC0F0j + movem.w (sp)+,d0 + move.b d0,RotationAndSize(a5) + bra.w EnemyAI_Mir +; --------------------------------------------------------------------------- + +loc_1AC108: ; CODE XREF: ROM:001AC0C6j + move.w #$0004,AnimationFrame(a5) + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk4D(a5) + beq.w EnemyAI_Mir + +locret_1AC11E: ; CODE XREF: ROM:001AC0CAj + rts diff --git a/code/gamelogic/ai/enemies/miro.asm b/code/gamelogic/ai/enemies/miro.asm new file mode 100644 index 0000000..e6f0801 --- /dev/null +++ b/code/gamelogic/ai/enemies/miro.asm @@ -0,0 +1,345 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Miro_B: ; CODE XREF: ROM:001A85E2j + ; ROM:001A868Aj + bra.s EnemyAI_Miro +; --------------------------------------------------------------------------- + +EnemyAI_Miro_A: ; CODE XREF: ROM:001A85DEj + ; ROM:001A8686j + btst #$01,Flags2(a5) + bne.s loc_1ABC2E + move.b ChestIndex(a5),d0 + beq.s EnemyAI_Miro + cmpi.b #$10,d0 + beq.s loc_1ABC4C + bra.w loc_1ABE36 +; --------------------------------------------------------------------------- + +loc_1ABC2E: ; CODE XREF: ROM:001ABC1Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_Miro: ; CODE XREF: ROM:EnemyAI_Miro_Bj + ; ROM:001ABC22j ... + move.w #$0180,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ABC4C: ; CODE XREF: ROM:001ABC28j + tst.b (byte_FF1142).l + bne.s loc_1ABC8A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ABC8E + bcs.s loc_1ABC84 + bsr.s sub_1ABCCE + bcs.s loc_1ABC84 + bsr.w sub_1ABD0E + bcs.s loc_1ABC84 + bsr.w sub_1ABD4E + bcs.s loc_1ABC84 + bsr.w sub_1ABD9A + bcs.w loc_1ABC84 + bsr.w sub_1ABDDA + +loc_1ABC84: ; CODE XREF: ROM:001ABC66j + ; ROM:001ABC6Aj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABC8A: ; CODE XREF: ROM:001ABC52j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABC8E: ; CODE XREF: ROM:001ABC64p + move.w #$0070,d5 + move.w #$FFB0,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABCCA + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00009,d7 + bhi.s loc_1ABCCA + move.b #$20,ChestIndex(a5) + move.w #$0019,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABCCA: ; CODE XREF: sub_1ABC8E+10j + ; sub_1ABC8E+20j + tst.b d0 + rts +; End of function sub_1ABC8E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABCCE: ; CODE XREF: ROM:001ABC68p + move.w #$0040,d5 + move.w #$FFD8,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABD0A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1ABD0A + move.b #$21,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABD0A: ; CODE XREF: sub_1ABCCE+10j + ; sub_1ABCCE+20j + tst.b d0 + rts +; End of function sub_1ABCCE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABD0E: ; CODE XREF: ROM:001ABC6Cp + move.w #$0050,d5 + move.w #$FFC0,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABD4A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ABD4A + move.b #$22,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABD4A: ; CODE XREF: sub_1ABD0E+10j + ; sub_1ABD0E+20j + tst.b d0 + rts +; End of function sub_1ABD0E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABD4E: ; CODE XREF: ROM:001ABC72p + move.w #$0040,d5 + move.w #$FFF0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABD96 + move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) + ; Bit1 - Walk SW (+Y) + ; Bit2 - Walk NW (-X) + ; Bit3 - Walk SE (+X) + ; Bit4 - Fall + ; Bit5 - Jump + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack + ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage + andi.b #$07,d0 + beq.s loc_1ABD96 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00090,d7 + bhi.s loc_1ABD96 + move.b #$23,ChestIndex(a5) + move.w #$017F,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABD96: ; CODE XREF: sub_1ABD4E+10j + ; sub_1ABD4E+1Cj ... + tst.b d0 + rts +; End of function sub_1ABD4E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABD9A: ; CODE XREF: ROM:001ABC78p + move.w #$0038,d5 + move.w #$0000,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABDD6 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00007,d7 + bhi.s loc_1ABDD6 + move.b #$24,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABDD6: ; CODE XREF: sub_1ABD9A+10j + ; sub_1ABD9A+20j + tst.b d0 + rts +; End of function sub_1ABD9A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABDDA: ; CODE XREF: ROM:001ABC80p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcc.s loc_1ABE32 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00070,d7 + bcc.s loc_1ABE18 + bra.s loc_1ABE18 +; --------------------------------------------------------------------------- + move.b #$25,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABE18: ; CODE XREF: sub_1ABDDA+20j + ; sub_1ABDDA+22j + move.b #$26,ChestIndex(a5) + move.w #$0181,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ABE32: ; CODE XREF: sub_1ABDDA+10j + tst.b d0 + rts +; End of function sub_1ABDDA + +; --------------------------------------------------------------------------- + +loc_1ABE36: ; CODE XREF: ROM:001ABC2Aj + andi.b #$0F,d0 + beq.w loc_1ABEC0 + cmpi.b #$01,d0 + beq.s loc_1ABEC0 + cmpi.b #$02,d0 + beq.w loc_1ABED4 + cmpi.b #$03,d0 + beq.w loc_1ABED4 + cmpi.b #$04,d0 + beq.s sub_1ABE66 + cmpi.b #$05,d0 + beq.s loc_1ABEDA + bra.w loc_1ABEE6 +; --------------------------------------------------------------------------- + nop + +; =============== S U B R O U T I N E ======================================= + + +sub_1ABE66: ; CODE XREF: ROM:001ABE58j + ; ROM:001ABEC4j ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$04,Unk4D(a5) + bcs.s loc_1ABEBA + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$000D,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$08,Unk4D(a5) + bcs.s loc_1ABEBA + move.w #$0300,QueuedAction(a5) + cmpi.b #$0C,Unk4D(a5) + bcs.s loc_1ABEBA + move.w #$0400,QueuedAction(a5) + cmpi.b #$10,Unk4D(a5) + bcs.s loc_1ABEBA + clr.w QueuedAction(a5) + clr.b Unk4D(a5) + +loc_1ABEBA: ; CODE XREF: sub_1ABE66+10j + ; sub_1ABE66+2Ej ... + bsr.w j_j_OnTick + rts +; End of function sub_1ABE66 + +; --------------------------------------------------------------------------- + +loc_1ABEC0: ; CODE XREF: ROM:001ABE3Aj + ; ROM:001ABE42j + tst.b Unk4D(a5) + bne.s sub_1ABE66 + btst #$04,Action1(a5) + bne.s sub_1ABE66 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABED4: ; CODE XREF: ROM:001ABE48j + ; ROM:001ABE50j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ABEDA: ; CODE XREF: ROM:001ABE5Ej + bsr.s sub_1ABE66 + tst.w QueuedAction(a5) + beq.w EnemyAI_Miro + rts +; --------------------------------------------------------------------------- + +loc_1ABEE6: ; CODE XREF: ROM:001ABE60j + tst.b BehavCmd(a5) + bne.w loc_1ABF26 + tst.b Unk4D(a5) + bne.w sub_1ABE66 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Miro + tst.b (byte_FF1142).l + beq.w sub_1ABE66 + rts +; --------------------------------------------------------------------------- + +loc_1ABF26: ; CODE XREF: ROM:001ABEEAj + clr.w QueuedAction(a5) + clr.b Unk4D(a5) + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/mummy1.asm b/code/gamelogic/ai/enemies/mummy1.asm new file mode 100644 index 0000000..d343d3f --- /dev/null +++ b/code/gamelogic/ai/enemies/mummy1.asm @@ -0,0 +1,316 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mummy1_B: ; CODE XREF: ROM:001A853Aj + bra.s EnemyAI_Mummy1 +; --------------------------------------------------------------------------- + +EnemyAI_Mummy1_A: ; CODE XREF: ROM:001A8536j + btst #$01,Flags2(a5) + bne.s loc_1A7ADA + move.b ChestIndex(a5),d0 + beq.s loc_1A7AE0 + cmpi.b #$10,d0 + beq.s loc_1A7B40 + bra.w loc_1A7C9E +; --------------------------------------------------------------------------- + +loc_1A7ADA: ; CODE XREF: ROM:001A7AC8j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7AE0: ; CODE XREF: ROM:001A7ACEj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mummy1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mummy1: ; CODE XREF: ROM:EnemyAI_Mummy1_Bj + ; ROM:001A7B04j ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7B24: ; CODE XREF: ROM:001A7DB4j + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$24,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7B40: ; CODE XREF: ROM:001A7AD4j + tst.b (byte_FF1142).l + bne.s loc_1A7B70 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A7B80 + bcs.s loc_1A7B6A + bsr.s sub_1A7BBC + bcs.s loc_1A7B6A + bsr.w sub_1A7BF8 + bcs.s loc_1A7B6A + bsr.w sub_1A7C34 + +loc_1A7B6A: ; CODE XREF: ROM:001A7B5Aj + ; ROM:001A7B5Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7B70: ; CODE XREF: ROM:001A7B46j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7B80: ; CODE XREF: ROM:001A7B58p + move.w #$0050,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7BB8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0012,d7 + bhi.s loc_1A7BB8 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7BB8: ; CODE XREF: sub_1A7B80+10j + ; sub_1A7B80+20j + tst.b d0 + rts +; End of function sub_1A7B80 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7BBC: ; CODE XREF: ROM:001A7B5Cp + move.w #$0048,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7BF4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A7BF4 + move.b #$21,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7BF4: ; CODE XREF: sub_1A7BBC+10j + ; sub_1A7BBC+20j + tst.b d0 + rts +; End of function sub_1A7BBC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7BF8: ; CODE XREF: ROM:001A7B60p + move.w #$0038,d5 + move.w #$FFD8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7C30 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00020,d7 + bhi.s loc_1A7C30 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7C30: ; CODE XREF: sub_1A7BF8+10j + ; sub_1A7BF8+20j + tst.b d0 + rts +; End of function sub_1A7BF8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7C34: ; CODE XREF: ROM:001A7B66p + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7C9A + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0021,d0 + bhi.s loc_1A7C9A + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcc.s loc_1A7C80 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7C80: ; CODE XREF: sub_1A7C34+30j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7C9A: ; CODE XREF: sub_1A7C34+10j + ; sub_1A7C34+20j + tst.b d0 + rts +; End of function sub_1A7C34 + +; --------------------------------------------------------------------------- + +loc_1A7C9E: ; CODE XREF: ROM:001A7AD6j + andi.b #$0F,d0 + beq.s loc_1A7CBE + cmpi.b #$01,d0 + beq.s loc_1A7CBE + cmpi.b #$02,d0 + beq.w loc_1A7CC4 + cmpi.b #$03,d0 + beq.w loc_1A7DC4 + bra.w loc_1A7D48 +; --------------------------------------------------------------------------- + +loc_1A7CBE: ; CODE XREF: ROM:001A7CA2j + ; ROM:001A7CA8j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7CC4: ; CODE XREF: ROM:001A7CAEj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s locret_1A7D46 + move.w #$0400,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s locret_1A7D46 + move.w #$0500,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A7D46 + cmpi.b #$19,Unk0D(a5) + bcc.s loc_1A7D22 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.w loc_1A7D42 + addq.b #$01,Unk0D(a5) + +loc_1A7D22: ; CODE XREF: ROM:001A7CF8j + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A7D46 + move.w #$0300,QueuedAction(a5) + cmpi.b #$28,Unk0D(a5) + bcs.s locret_1A7D46 + bra.w EnemyAI_Mummy1 +; --------------------------------------------------------------------------- + +loc_1A7D42: ; CODE XREF: ROM:001A7D1Aj + subq.b #$01,Unk0D(a5) + +locret_1A7D46: ; CODE XREF: ROM:001A7CD4j + ; ROM:001A7CE2j ... + rts +; --------------------------------------------------------------------------- + +loc_1A7D48: ; CODE XREF: ROM:001A7CBAj + tst.b (byte_FF1145).l + bne.w EnemyAI_Mummy1 + tst.b (byte_FF1142).l + bne.w loc_1A7D68 + move.b #$01,(byte_FF1142).l + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1A7D68: ; CODE XREF: ROM:001A7D58j + ; ROM:001A7D64j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0015,d5 + move.w #$0009,d6 + move.w #$0009,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mummy1 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1A7DB0 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0040,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A7DBA + +loc_1A7DB0: ; CODE XREF: ROM:001A7D96j + cmpi.b #$28,d0 + bcc.w loc_1A7B24 + rts +; --------------------------------------------------------------------------- + +loc_1A7DBA: ; CODE XREF: ROM:001A7DAEj + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC +; --------------------------------------------------------------------------- + +loc_1A7DC4: ; CODE XREF: ROM:001A7CB6j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.w locret_1A7DF8 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0011,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcc.w EnemyAI_Mummy1 + +locret_1A7DF8: ; CODE XREF: ROM:001A7DD4j + rts diff --git a/code/gamelogic/ai/enemies/mummy2.asm b/code/gamelogic/ai/enemies/mummy2.asm new file mode 100644 index 0000000..0d635a9 --- /dev/null +++ b/code/gamelogic/ai/enemies/mummy2.asm @@ -0,0 +1,316 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mummy2_B: ; CODE XREF: ROM:001A8542j + bra.s EnemyAI_Mummy2 +; --------------------------------------------------------------------------- + +EnemyAI_Mummy2_A: ; CODE XREF: ROM:001A853Ej + btst #$01,Flags2(a5) + bne.s loc_1A7E14 + move.b ChestIndex(a5),d0 + beq.s loc_1A7E1A + cmpi.b #$10,d0 + beq.s loc_1A7E7A + bra.w loc_1A7FD8 +; --------------------------------------------------------------------------- + +loc_1A7E14: ; CODE XREF: ROM:001A7E02j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7E1A: ; CODE XREF: ROM:001A7E08j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mummy2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mummy2: ; CODE XREF: ROM:EnemyAI_Mummy2_Bj + ; ROM:001A7E3Ej ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7E5E: ; CODE XREF: ROM:001A80EEj + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$24,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A7E7A: ; CODE XREF: ROM:001A7E0Ej + tst.b (byte_FF1142).l + bne.s loc_1A7EAA + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A7EBA + bcs.s loc_1A7EA4 + bsr.s sub_1A7EF6 + bcs.s loc_1A7EA4 + bsr.w sub_1A7F32 + bcs.s loc_1A7EA4 + bsr.w sub_1A7F6E + +loc_1A7EA4: ; CODE XREF: ROM:001A7E94j + ; ROM:001A7E98j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7EAA: ; CODE XREF: ROM:001A7E80j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7EBA: ; CODE XREF: ROM:001A7E92p + move.w #$0050,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7EF2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A7EF2 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7EF2: ; CODE XREF: sub_1A7EBA+10j + ; sub_1A7EBA+20j + tst.b d0 + rts +; End of function sub_1A7EBA + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7EF6: ; CODE XREF: ROM:001A7E96p + move.w #$0048,d5 + move.w #$FFC8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7F2E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A7F2E + move.b #$21,ChestIndex(a5) + move.w #$0014,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7F2E: ; CODE XREF: sub_1A7EF6+10j + ; sub_1A7EF6+20j + tst.b d0 + rts +; End of function sub_1A7EF6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7F32: ; CODE XREF: ROM:001A7E9Ap + move.w #$0038,d5 + move.w #$FFD8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7F6A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bhi.s loc_1A7F6A + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7F6A: ; CODE XREF: sub_1A7F32+10j + ; sub_1A7F32+20j + tst.b d0 + rts +; End of function sub_1A7F32 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A7F6E: ; CODE XREF: ROM:001A7EA0p + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A7FD4 + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0021,d0 + bhi.s loc_1A7FD4 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bcc.s loc_1A7FBA + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7FBA: ; CODE XREF: sub_1A7F6E+30j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A7FD4: ; CODE XREF: sub_1A7F6E+10j + ; sub_1A7F6E+20j + tst.b d0 + rts +; End of function sub_1A7F6E + +; --------------------------------------------------------------------------- + +loc_1A7FD8: ; CODE XREF: ROM:001A7E10j + andi.b #$0F,d0 + beq.s loc_1A7FF8 + cmpi.b #$01,d0 + beq.s loc_1A7FF8 + cmpi.b #$02,d0 + beq.w loc_1A7FFE + cmpi.b #$03,d0 + beq.w loc_1A80FE + bra.w loc_1A8082 +; --------------------------------------------------------------------------- + +loc_1A7FF8: ; CODE XREF: ROM:001A7FDCj + ; ROM:001A7FE2j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A7FFE: ; CODE XREF: ROM:001A7FE8j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s locret_1A8080 + move.w #$0400,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s locret_1A8080 + move.w #$0500,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A8080 + cmpi.b #$19,Unk0D(a5) + bcc.s loc_1A805C + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.w loc_1A807C + addq.b #$01,Unk0D(a5) + +loc_1A805C: ; CODE XREF: ROM:001A8032j + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A8080 + move.w #$0300,QueuedAction(a5) + cmpi.b #$28,Unk0D(a5) + bcs.s locret_1A8080 + bra.w EnemyAI_Mummy2 +; --------------------------------------------------------------------------- + +loc_1A807C: ; CODE XREF: ROM:001A8054j + subq.b #$01,Unk0D(a5) + +locret_1A8080: ; CODE XREF: ROM:001A800Ej + ; ROM:001A801Cj ... + rts +; --------------------------------------------------------------------------- + +loc_1A8082: ; CODE XREF: ROM:001A7FF4j + tst.b (byte_FF1145).l + bne.w EnemyAI_Mummy2 + tst.b (byte_FF1142).l + bne.w loc_1A80A2 + move.b #$01,(byte_FF1142).l + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1A80A2: ; CODE XREF: ROM:001A8092j + ; ROM:001A809Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0015,d5 + move.w #$0009,d6 + move.w #$0009,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mummy2 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1A80EA + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0040,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A80F4 + +loc_1A80EA: ; CODE XREF: ROM:001A80D0j + cmpi.b #$28,d0 + bcc.w loc_1A7E5E + rts +; --------------------------------------------------------------------------- + +loc_1A80F4: ; CODE XREF: ROM:001A80E8j + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC +; --------------------------------------------------------------------------- + +loc_1A80FE: ; CODE XREF: ROM:001A7FF0j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.w locret_1A8132 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0011,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcc.w EnemyAI_Mummy2 + +locret_1A8132: ; CODE XREF: ROM:001A810Ej + rts diff --git a/code/gamelogic/ai/enemies/mummy3.asm b/code/gamelogic/ai/enemies/mummy3.asm new file mode 100644 index 0000000..5c31191 --- /dev/null +++ b/code/gamelogic/ai/enemies/mummy3.asm @@ -0,0 +1,268 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mummy3_B: ; CODE XREF: ROM:001A854Aj + bra.s EnemyAI_Mummy3 +; --------------------------------------------------------------------------- + +EnemyAI_Mummy3_A: ; CODE XREF: ROM:001A8546j + btst #$01,Flags2(a5) + bne.s loc_1A814E + move.b ChestIndex(a5),d0 + beq.s loc_1A8154 + cmpi.b #$10,d0 + beq.s loc_1A81B4 + bra.w loc_1A830E +; --------------------------------------------------------------------------- + +loc_1A814E: ; CODE XREF: ROM:001A813Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8154: ; CODE XREF: ROM:001A8142j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mummy3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mummy3: ; CODE XREF: ROM:EnemyAI_Mummy3_Bj + ; ROM:001A8178j ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A8198: ; CODE XREF: ROM:001A83A0j + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$24,ChestIndex(a5) + bclr #$01,Flags2(a5) + clr.b Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A81B4: ; CODE XREF: ROM:001A8148j + tst.b (byte_FF1142).l + bne.s loc_1A81E0 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A822C + bcs.s loc_1A81DA + bsr.w sub_1A8268 + bcs.s loc_1A81DA + bsr.w sub_1A82A4 + +loc_1A81DA: ; CODE XREF: ROM:001A81CEj + ; ROM:001A81D4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A81E0: ; CODE XREF: ROM:001A81BAj + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + move.w #$0050,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8228 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A8228 + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8228: ; CODE XREF: ROM:001A8200j + ; ROM:001A8210j + tst.b d0 + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A822C: ; CODE XREF: ROM:001A81CCp + move.w #$0050,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8264 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A8264 + move.b #$21,ChestIndex(a5) + move.w #$0016,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8264: ; CODE XREF: sub_1A822C+10j + ; sub_1A822C+20j + tst.b d0 + rts +; End of function sub_1A822C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8268: ; CODE XREF: ROM:001A81D0p + move.w #$0048,d5 + move.w #$FFC8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A82A0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A82A0 + move.b #$22,ChestIndex(a5) + move.w #$0014,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A82A0: ; CODE XREF: sub_1A8268+10j + ; sub_1A8268+20j + tst.b d0 + rts +; End of function sub_1A8268 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A82A4: ; CODE XREF: ROM:001A81D6p + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A830A + move.w HitBoxZEnd(a5),d0 + sub.w (Player_Z).l,d0 + cmpi.w #$0021,d0 + bhi.s loc_1A830A + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bcc.s loc_1A82F0 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A82F0: ; CODE XREF: sub_1A82A4+30j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A830A: ; CODE XREF: sub_1A82A4+10j + ; sub_1A82A4+20j + tst.b d0 + rts +; End of function sub_1A82A4 + +; --------------------------------------------------------------------------- + +loc_1A830E: ; CODE XREF: ROM:001A814Aj + andi.b #$0F,d0 + beq.s loc_1A832E + cmpi.b #$01,d0 + beq.s loc_1A832E + cmpi.b #$02,d0 + beq.w loc_1A832E + cmpi.b #$03,d0 + beq.w loc_1A83B0 + bra.w loc_1A8334 +; --------------------------------------------------------------------------- + +loc_1A832E: ; CODE XREF: ROM:001A8312j + ; ROM:001A8318j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8334: ; CODE XREF: ROM:001A832Aj + tst.b (byte_FF1145).l + bne.w EnemyAI_Mummy3 + tst.b (byte_FF1142).l + bne.w loc_1A8354 + move.b #$01,(byte_FF1142).l + bra.w *+4 +; --------------------------------------------------------------------------- + +loc_1A8354: ; CODE XREF: ROM:001A8344j + ; ROM:001A8350j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0015,d5 + move.w #$0009,d6 + move.w #$0009,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Mummy3 + move.b Unk0D(a5),d0 + addq.b #$01,Unk0D(a5) + tst.b d0 + bne.s loc_1A839C + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Throw +; --------------------------------------------------------------------------- + lea (Player_X).l,a5 + move.w #$0040,d0 + bsr.w j_j_RemoveHealth + tst.w CurrentHealth(a5) + beq.s loc_1A83A6 + +loc_1A839C: ; CODE XREF: ROM:001A8382j + cmpi.b #$28,d0 + bcc.w loc_1A8198 + rts +; --------------------------------------------------------------------------- + +loc_1A83A6: ; CODE XREF: ROM:001A839Aj + bclr #$06,Flags2(a5) + bra.w loc_1A8AEC +; --------------------------------------------------------------------------- + +loc_1A83B0: ; CODE XREF: ROM:001A8326j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.w locret_1A83E4 + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0011,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcc.w EnemyAI_Mummy3 + +locret_1A83E4: ; CODE XREF: ROM:001A83C0j + rts diff --git a/code/gamelogic/ai/enemies/mushroom1.asm b/code/gamelogic/ai/enemies/mushroom1.asm new file mode 100644 index 0000000..9c6bb61 --- /dev/null +++ b/code/gamelogic/ai/enemies/mushroom1.asm @@ -0,0 +1,355 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom1_B: ; CODE XREF: ROM:001A859Aj + bra.s EnemyAI_Mushroom1 +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom1_A: ; CODE XREF: ROM:001A8596j + btst #$01,Flags2(a5) + bne.s loc_1AA794 + move.b ChestIndex(a5),d0 + beq.s loc_1AA79A + cmpi.b #$10,d0 + beq.s loc_1AA7E0 + bra.w loc_1AA9B6 +; --------------------------------------------------------------------------- + +loc_1AA794: ; CODE XREF: ROM:001AA782j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AA79A: ; CODE XREF: ROM:001AA788j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mushroom1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom1: ; CODE XREF: ROM:EnemyAI_Mushroom1_Bj + ; ROM:001AA7BEj ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA7E0: ; CODE XREF: ROM:001AA78Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AA812 + bcs.s loc_1AA804 + bsr.w sub_1AA8C4 + bcs.s loc_1AA804 + bsr.w sub_1AA90C + bcs.s loc_1AA804 + bsr.w sub_1AA954 + +loc_1AA804: ; CODE XREF: ROM:001AA7F2j + ; ROM:001AA7F8j ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1AA810 + bsr.w j_j_OnTick + +locret_1AA810: ; CODE XREF: ROM:001AA80Aj + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA812: ; CODE XREF: ROM:001AA7F0p + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AA8C0 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA882 + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.w loc_1AA8C0 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1AA8C0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AA8C0 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w Z(a5),HitBoxZEnd(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA882: ; CODE XREF: sub_1AA812+12j + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA8C0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AA8C0 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$1F,Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA8C0: ; CODE XREF: sub_1AA812+8j + ; sub_1AA812+24j ... + tst.b d0 + rts +; End of function sub_1AA812 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA8C4: ; CODE XREF: ROM:001AA7F4p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA908 + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA908 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AA908 + move.b #$21,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA908: ; CODE XREF: sub_1AA8C4+6j + ; sub_1AA8C4+18j ... + tst.b d0 + rts +; End of function sub_1AA8C4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA90C: ; CODE XREF: ROM:001AA7FAp + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA950 + move.w #$0020,d5 + move.w #$FFE8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA950 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bhi.s loc_1AA950 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA950: ; CODE XREF: sub_1AA90C+6j + ; sub_1AA90C+18j ... + tst.b d0 + rts +; End of function sub_1AA90C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AA954: ; CODE XREF: ROM:001AA800p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AA9B2 + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AA9B2 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1AA998 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA998: ; CODE XREF: sub_1AA954+28j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AA9B2: ; CODE XREF: sub_1AA954+6j + ; sub_1AA954+18j + tst.b d0 + rts +; End of function sub_1AA954 + +; --------------------------------------------------------------------------- + +loc_1AA9B6: ; CODE XREF: ROM:001AA790j + andi.b #$0F,d0 + beq.s loc_1AA9D8 + cmpi.b #$01,d0 + beq.w loc_1AAAA2 + cmpi.b #$02,d0 + beq.w loc_1AAAA8 + cmpi.b #$03,d0 + beq.w loc_1AAAE4 + bra.w loc_1AAAA2 +; --------------------------------------------------------------------------- + +loc_1AA9D8: ; CODE XREF: ROM:001AA9BAj + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AA9F2 + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AA9F2: ; CODE XREF: ROM:001AA9E2j + cmpi.b #$08,Unk0D(a5) + bne.s loc_1AAA08 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA08: ; CODE XREF: ROM:001AA9F8j + cmpi.b #$10,Unk0D(a5) + bne.s loc_1AAA1E + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA1E: ; CODE XREF: ROM:001AAA0Ej + cmpi.b #$18,Unk0D(a5) + bne.s loc_1AAA3A + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + move.b #$10,ChestIndex(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA3A: ; CODE XREF: ROM:001AAA24j + cmpi.b #$20,Unk0D(a5) + bne.w loc_1AAA72 + clr.w d0 + move.b #$20,d0 + subq.b #$01,d0 + add.w d0,HitBoxZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1AAA64 + move.w Z(a5),HitBoxZEnd(a5) + subq.b #$01,Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA64: ; CODE XREF: ROM:001AAA56j + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA72: ; CODE XREF: ROM:001AAA40j + cmpi.b #$28,Unk0D(a5) + bne.s loc_1AAA88 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAA88: ; CODE XREF: ROM:001AAA78j + cmpi.b #$30,Unk0D(a5) + bne.s locret_1AAAA0 + move.w #$0040,PrevAction(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Mushroom1 +; --------------------------------------------------------------------------- + +locret_1AAAA0: ; CODE XREF: ROM:001AAA8Ej + rts +; --------------------------------------------------------------------------- + +loc_1AAAA2: ; CODE XREF: ROM:001AA9C0j + ; ROM:001AA9D4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AAAA8: ; CODE XREF: ROM:001AA9C8j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AAAC4 + move.w #$0049,d1 + move.w #$0049,d2 + move.w #$0049,d3 + bsr.w sub_1A880C + +loc_1AAAC4: ; CODE XREF: ROM:001AAAB2j + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1AAAE2 + bra.w EnemyAI_Mushroom1 +; --------------------------------------------------------------------------- + +locret_1AAAE2: ; CODE XREF: ROM:001AAADCj + rts +; --------------------------------------------------------------------------- + +loc_1AAAE4: ; CODE XREF: ROM:001AA9D0j + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0100,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1AAB16 + bra.w EnemyAI_Mushroom1 +; --------------------------------------------------------------------------- + +locret_1AAB16: ; CODE XREF: ROM:001AAB10j + rts diff --git a/code/gamelogic/ai/enemies/mushroom2.asm b/code/gamelogic/ai/enemies/mushroom2.asm new file mode 100644 index 0000000..eac7baf --- /dev/null +++ b/code/gamelogic/ai/enemies/mushroom2.asm @@ -0,0 +1,356 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom2_B: ; CODE XREF: ROM:001A85A2j + bra.s EnemyAI_Mushroom2 +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom2_A: ; CODE XREF: ROM:001A859Ej + btst #$01,Flags2(a5) + bne.s loc_1AAB32 + move.b ChestIndex(a5),d0 + beq.s loc_1AAB38 + cmpi.b #$10,d0 + beq.s loc_1AAB7E + bra.w loc_1AAD42 +; --------------------------------------------------------------------------- + +loc_1AAB32: ; CODE XREF: ROM:001AAB20j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AAB38: ; CODE XREF: ROM:001AAB26j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mushroom2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom2: ; CODE XREF: ROM:EnemyAI_Mushroom2_Bj + ; ROM:001AAB5Cj ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAB7E: ; CODE XREF: ROM:001AAB2Cj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AABB0 + bcs.s loc_1AABA2 + bsr.w sub_1AAC50 + bcs.s loc_1AABA2 + bsr.w sub_1AAC98 + bcs.s loc_1AABA2 + bsr.w sub_1AACE0 + +loc_1AABA2: ; CODE XREF: ROM:001AAB90j + ; ROM:001AAB96j ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1AABAE + bsr.w j_j_OnTick + +locret_1AABAE: ; CODE XREF: ROM:001AABA8j + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AABB0: ; CODE XREF: ROM:001AAB8Ep + move.b Action1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AAC4C + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AAC0E + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.w loc_1AAC4C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1AAC4C + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w Z(a5),HitBoxZEnd(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAC0E: ; CODE XREF: sub_1AABB0+12j + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AAC4C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1AAC4C + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$1F,Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAC4C: ; CODE XREF: sub_1AABB0+8j + ; sub_1AABB0+24j ... + tst.b d0 + rts +; End of function sub_1AABB0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AAC50: ; CODE XREF: ROM:001AAB92p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AAC94 + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AAC94 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1AAC94 + move.b #$21,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAC94: ; CODE XREF: sub_1AAC50+6j + ; sub_1AAC50+18j ... + tst.b d0 + rts +; End of function sub_1AAC50 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AAC98: ; CODE XREF: ROM:001AAB98p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AACDC + move.w #$0020,d5 + move.w #$FFE8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AACDC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00062,d7 + bhi.s loc_1AACDC + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AACDC: ; CODE XREF: sub_1AAC98+6j + ; sub_1AAC98+18j ... + tst.b d0 + rts +; End of function sub_1AAC98 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AACE0: ; CODE XREF: ROM:001AAB9Ep + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AAD3E + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AAD3E + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bcc.s loc_1AAD24 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAD24: ; CODE XREF: sub_1AACE0+28j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAD3E: ; CODE XREF: sub_1AACE0+6j + ; sub_1AACE0+18j + tst.b d0 + rts +; End of function sub_1AACE0 + +; --------------------------------------------------------------------------- + +loc_1AAD42: ; CODE XREF: ROM:001AAB2Ej + andi.b #$0F,d0 + beq.s loc_1AAD64 + cmpi.b #$01,d0 + beq.w loc_1AAE2C + cmpi.b #$02,d0 + beq.w loc_1AAE32 + cmpi.b #$03,d0 + beq.w loc_1AAE84 + bra.w loc_1AAE2C +; --------------------------------------------------------------------------- + +loc_1AAD64: ; CODE XREF: ROM:001AAD46j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AAD7E + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAD7E: ; CODE XREF: ROM:001AAD6Ej + cmpi.b #$08,Unk0D(a5) + bne.s loc_1AAD94 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAD94: ; CODE XREF: ROM:001AAD84j + cmpi.b #$10,Unk0D(a5) + bne.s loc_1AADAA + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AADAA: ; CODE XREF: ROM:001AAD9Aj + cmpi.b #$18,Unk0D(a5) + bne.s loc_1AADC0 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AADC0: ; CODE XREF: ROM:001AADB0j + cmpi.b #$20,Unk0D(a5) + bne.s loc_1AADF6 + clr.w d0 + move.b #$20,d0 + subq.b #$01,d0 + add.w d0,HitBoxZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1AADE8 + move.w Z(a5),HitBoxZEnd(a5) + subq.b #$01,Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AADE8: ; CODE XREF: ROM:001AADDAj + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AADF6: ; CODE XREF: ROM:001AADC6j + cmpi.b #$28,Unk0D(a5) + bne.s loc_1AAE0C + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAE0C: ; CODE XREF: ROM:001AADFCj + cmpi.b #$30,Unk0D(a5) + bne.s locret_1AAE2A + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Mushroom2 +; --------------------------------------------------------------------------- + +locret_1AAE2A: ; CODE XREF: ROM:001AAE12j + rts +; --------------------------------------------------------------------------- + +loc_1AAE2C: ; CODE XREF: ROM:001AAD4Cj + ; ROM:001AAD60j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AAE32: ; CODE XREF: ROM:001AAD54j + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.w locret_1AAE82 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + move.b #STATUS_POISON,d0 + cmpi.b #040,d7 + bcs.s loc_1AAE7A + move.w #$0049,d1 + move.w #$0049,d2 + move.w #$0049,d3 + bsr.w sub_1A880C + bra.w EnemyAI_Mushroom2 +; --------------------------------------------------------------------------- + +loc_1AAE7A: ; CODE XREF: ROM:001AAE64j + bsr.w j_j_AddStatusEffect + bra.w EnemyAI_Mushroom2 +; --------------------------------------------------------------------------- + +locret_1AAE82: ; CODE XREF: ROM:001AAE4Ej + rts +; --------------------------------------------------------------------------- + +loc_1AAE84: ; CODE XREF: ROM:001AAD5Cj + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0100,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1AAEB6 + bra.w EnemyAI_Mushroom2 +; --------------------------------------------------------------------------- + +locret_1AAEB6: ; CODE XREF: ROM:001AAEB0j + rts diff --git a/code/gamelogic/ai/enemies/mushroom3.asm b/code/gamelogic/ai/enemies/mushroom3.asm new file mode 100644 index 0000000..b05e7c8 --- /dev/null +++ b/code/gamelogic/ai/enemies/mushroom3.asm @@ -0,0 +1,360 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom3_B: ; CODE XREF: ROM:001A85AAj + bra.s EnemyAI_Mushroom3 +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom3_A: ; CODE XREF: ROM:001A85A6j + btst #$01,Flags2(a5) + bne.s loc_1AAED2 + move.b ChestIndex(a5),d0 + beq.s loc_1AAED8 + cmpi.b #$10,d0 + beq.s loc_1AAF1E + bra.w loc_1AB0E2 +; --------------------------------------------------------------------------- + +loc_1AAED2: ; CODE XREF: ROM:001AAEC0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AAED8: ; CODE XREF: ROM:001AAEC6j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Mushroom3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Mushroom3: ; CODE XREF: ROM:EnemyAI_Mushroom3_Bj + ; ROM:001AAEFCj ... + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AAF1E: ; CODE XREF: ROM:001AAECCj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AAF50 + bcs.s loc_1AAF42 + bsr.w sub_1AAFF0 + bcs.s loc_1AAF42 + bsr.w sub_1AB038 + bcs.s loc_1AAF42 + bsr.w sub_1AB080 + +loc_1AAF42: ; CODE XREF: ROM:001AAF30j + ; ROM:001AAF36j ... + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s locret_1AAF4E + bsr.w j_j_OnTick + +locret_1AAF4E: ; CODE XREF: ROM:001AAF48j + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AAF50: ; CODE XREF: ROM:001AAF2Ep + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1AAFEC + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AAFAE + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.w loc_1AAFEC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1AAFEC + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w Z(a5),HitBoxZEnd(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAFAE: ; CODE XREF: sub_1AAF50+12j + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AAFEC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1AAFEC + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$1F,Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AAFEC: ; CODE XREF: sub_1AAF50+8j + ; sub_1AAF50+24j ... + tst.b d0 + rts +; End of function sub_1AAF50 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AAFF0: ; CODE XREF: ROM:001AAF32p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AB034 + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB034 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1AB034 + move.b #$21,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB034: ; CODE XREF: sub_1AAFF0+6j + ; sub_1AAFF0+18j ... + tst.b d0 + rts +; End of function sub_1AAFF0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB038: ; CODE XREF: ROM:001AAF38p + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AB07C + move.w #$0020,d5 + move.w #$FFE8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB07C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00087,d7 + bhi.s loc_1AB07C + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB07C: ; CODE XREF: sub_1AB038+6j + ; sub_1AB038+18j ... + tst.b d0 + rts +; End of function sub_1AB038 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AB080: ; CODE XREF: ROM:001AAF3Ep + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1AB0DE + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AB0DE + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00070,d7 + bcc.s loc_1AB0C4 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB0C4: ; CODE XREF: sub_1AB080+28j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AB0DE: ; CODE XREF: sub_1AB080+6j + ; sub_1AB080+18j + tst.b d0 + rts +; End of function sub_1AB080 + +; --------------------------------------------------------------------------- + +loc_1AB0E2: ; CODE XREF: ROM:001AAECEj + andi.b #$0F,d0 + beq.s loc_1AB104 + cmpi.b #$01,d0 + beq.w loc_1AB1CC + cmpi.b #$02,d0 + beq.w loc_1AB1D2 + cmpi.b #$03,d0 + beq.w loc_1AB22E + bra.w loc_1AB1CC +; --------------------------------------------------------------------------- + +loc_1AB104: ; CODE XREF: ROM:001AB0E6j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1AB11E + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB11E: ; CODE XREF: ROM:001AB10Ej + cmpi.b #$08,Unk0D(a5) + bne.s loc_1AB134 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB134: ; CODE XREF: ROM:001AB124j + cmpi.b #$10,Unk0D(a5) + bne.s loc_1AB14A + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB14A: ; CODE XREF: ROM:001AB13Aj + cmpi.b #$18,Unk0D(a5) + bne.s loc_1AB160 + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB160: ; CODE XREF: ROM:001AB150j + cmpi.b #$20,Unk0D(a5) + bne.s loc_1AB196 + clr.w d0 + move.b #$20,d0 + subq.b #$01,d0 + add.w d0,HitBoxZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1AB188 + move.w Z(a5),HitBoxZEnd(a5) + subq.b #$01,Unk0D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB188: ; CODE XREF: ROM:001AB17Aj + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB196: ; CODE XREF: ROM:001AB166j + cmpi.b #$28,Unk0D(a5) + bne.s loc_1AB1AC + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AB1AC: ; CODE XREF: ROM:001AB19Cj + cmpi.b #$30,Unk0D(a5) + bne.s locret_1AB1CA + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Mushroom3 +; --------------------------------------------------------------------------- + +locret_1AB1CA: ; CODE XREF: ROM:001AB1B2j + rts +; --------------------------------------------------------------------------- + +loc_1AB1CC: ; CODE XREF: ROM:001AB0ECj + ; ROM:001AB100j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AB1D2: ; CODE XREF: ROM:001AB0F4j + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1AB22C + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + move.b #STATUS_POISON,d0 + cmpi.b #030,d7 + bcs.s loc_1AB224 + move.b #STATUS_PARALYSIS,d0 + cmpi.b #050,d7 + bcs.s loc_1AB224 + move.b #STATUS_CONFUSION,d0 + cmpi.b #065,d7 + bcs.s loc_1AB224 + move.b #STATUS_CURSE,d0 + cmpi.b #070,d7 + bcc.w EnemyAI_Mushroom3 + +loc_1AB224: ; CODE XREF: ROM:001AB202j + ; ROM:001AB20Cj ... + bsr.w j_j_AddStatusEffect + bra.w EnemyAI_Mushroom3 +; --------------------------------------------------------------------------- + +locret_1AB22C: ; CODE XREF: ROM:001AB1EEj + rts +; --------------------------------------------------------------------------- + +loc_1AB22E: ; CODE XREF: ROM:001AB0FCj + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.b Unk0D(a5),d0 + andi.w #$0004,d0 + lsl.w #$06,d0 + addi.w #$0100,d0 + move.w d0,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1AB260 + bra.w EnemyAI_Mushroom3 +; --------------------------------------------------------------------------- + +locret_1AB260: ; CODE XREF: ROM:001AB25Aj + rts diff --git a/code/gamelogic/ai/enemies/ninja1.asm b/code/gamelogic/ai/enemies/ninja1.asm new file mode 100644 index 0000000..f7a8db6 --- /dev/null +++ b/code/gamelogic/ai/enemies/ninja1.asm @@ -0,0 +1,246 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ninja1_B: ; CODE XREF: ROM:001A84DAj + bra.s EnemyAI_Ninja1 +; --------------------------------------------------------------------------- + +EnemyAI_Ninja1_A: ; CODE XREF: ROM:001A84D6j + btst #$01,Flags2(a5) + bne.s loc_1A5F52 + move.b ChestIndex(a5),d0 + beq.s loc_1A5F58 + cmpi.b #$10,d0 + beq.s loc_1A5F84 + bra.w loc_1A60DC +; --------------------------------------------------------------------------- + +loc_1A5F52: ; CODE XREF: ROM:001A5F40j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5F58: ; CODE XREF: ROM:001A5F46j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Ninja1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Ninja1: ; CODE XREF: ROM:EnemyAI_Ninja1_Bj + ; ROM:001A5F7Cj ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A5F84: ; CODE XREF: ROM:001A5F4Cj + tst.b (byte_FF1142).l + bne.s loc_1A5FB4 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A5FB8 + bcs.s loc_1A5FAE + bsr.s sub_1A5FF8 + bcs.s loc_1A5FAE + bsr.w sub_1A6034 + bcs.s loc_1A5FAE + bsr.w sub_1A6082 + +loc_1A5FAE: ; CODE XREF: ROM:001A5F9Ej + ; ROM:001A5FA2j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5FB4: ; CODE XREF: ROM:001A5F8Aj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5FB8: ; CODE XREF: ROM:001A5F9Cp + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5FF4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1A5FF4 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5FF4: ; CODE XREF: sub_1A5FB8+10j + ; sub_1A5FB8+20j + tst.b d0 + rts +; End of function sub_1A5FB8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5FF8: ; CODE XREF: ROM:001A5FA0p + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6030 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A6030 + move.b #$21,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6030: ; CODE XREF: sub_1A5FF8+10j + ; sub_1A5FF8+20j + tst.b d0 + rts +; End of function sub_1A5FF8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6034: ; CODE XREF: ROM:001A5FA4p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.s loc_1A607E + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A607E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A607E + move.b #$22,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A607E: ; CODE XREF: sub_1A6034+10j + ; sub_1A6034+22j ... + tst.b d0 + rts +; End of function sub_1A6034 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6082: ; CODE XREF: ROM:001A5FAAp + move.w #$0016,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A60D8 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bcc.s loc_1A60BE + move.b #$23,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A60BE: ; CODE XREF: sub_1A6082+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A60D8: ; CODE XREF: sub_1A6082+10j + tst.b d0 + rts +; End of function sub_1A6082 + +; --------------------------------------------------------------------------- + +loc_1A60DC: ; CODE XREF: ROM:001A5F4Ej + andi.b #$0F,d0 + beq.s loc_1A60FA + cmpi.b #$01,d0 + beq.s loc_1A6152 + cmpi.b #$02,d0 + beq.s loc_1A6158 + cmpi.b #$03,d0 + beq.w loc_1A6158 + bra.w loc_1A6158 +; --------------------------------------------------------------------------- + +loc_1A60FA: ; CODE XREF: ROM:001A60E0j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Ninja1 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + cmpi.b #$80,d0 + beq.w EnemyAI_Ninja1 + andi.b #$0F,d0 + cmpi.b #$01,d0 + bne.s locret_1A6150 + move.b #$FF,Action1(a5) + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + addi.b #$10,d0 + lsl.b #$02,d0 + move.w d0,PrevAction(a5) + +locret_1A6150: ; CODE XREF: ROM:001A6136j + rts +; --------------------------------------------------------------------------- + +loc_1A6152: ; CODE XREF: ROM:001A60E6j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6158: ; CODE XREF: ROM:001A60ECj + ; ROM:001A60F2j ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A618C + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A618C + beq.w EnemyAI_Ninja1 + +loc_1A618C: ; CODE XREF: ROM:001A6168j + ; ROM:001A6186j + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/ninja2.asm b/code/gamelogic/ai/enemies/ninja2.asm new file mode 100644 index 0000000..c52dc1b --- /dev/null +++ b/code/gamelogic/ai/enemies/ninja2.asm @@ -0,0 +1,310 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ninja2_B: ; CODE XREF: ROM:001A84E2j + bra.s EnemyAI_Ninja2 +; --------------------------------------------------------------------------- + +EnemyAI_Ninja2_A: ; CODE XREF: ROM:001A84DEj + btst #$01,$0000000C(a5) + bne.s loc_1A61AC + move.b ChestIndex(a5),d0 + beq.s loc_1A61B2 + cmpi.b #$10,d0 + beq.s loc_1A61DE + bra.w loc_1A633A +; --------------------------------------------------------------------------- + +loc_1A61AC: ; CODE XREF: ROM:001A619Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A61B2: ; CODE XREF: ROM:001A61A0j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Ninja2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Ninja2: ; CODE XREF: ROM:EnemyAI_Ninja2_Bj + ; ROM:001A61D6j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A61DE: ; CODE XREF: ROM:001A61A6j + tst.b (byte_FF1142).l + bne.s loc_1A620E + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6212 + bcs.s loc_1A6208 + bsr.s sub_1A6252 + bcs.s loc_1A6208 + bsr.w sub_1A628E + bcs.s loc_1A6208 + bsr.w sub_1A62E0 + +loc_1A6208: ; CODE XREF: ROM:001A61F8j + ; ROM:001A61FCj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A620E: ; CODE XREF: ROM:001A61E4j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6212: ; CODE XREF: ROM:001A61F6p + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1A624E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1A624E + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A624E: ; CODE XREF: sub_1A6212+10j + ; sub_1A6212+20j + tst.b d0 + rts +; End of function sub_1A6212 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6252: ; CODE XREF: ROM:001A61FAp + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A628A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$000C,d7 + bhi.s loc_1A628A + move.b #$21,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A628A: ; CODE XREF: sub_1A6252+10j + ; sub_1A6252+20j + tst.b d0 + rts +; End of function sub_1A6252 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A628E: ; CODE XREF: ROM:001A61FEp + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A62DC + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1A62DC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A62DC + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A62DC: ; CODE XREF: sub_1A628E+10j + ; sub_1A628E+22j ... + tst.b d0 + rts +; End of function sub_1A628E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A62E0: ; CODE XREF: ROM:001A6204p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6336 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1A631C + move.b #$23,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A631C: ; CODE XREF: sub_1A62E0+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6336: ; CODE XREF: sub_1A62E0+10j + tst.b d0 + rts +; End of function sub_1A62E0 + +; --------------------------------------------------------------------------- + +loc_1A633A: ; CODE XREF: ROM:001A61A8j + andi.b #$0F,d0 + beq.s loc_1A6358 + cmpi.b #$01,d0 + beq.s loc_1A63B0 + cmpi.b #$02,d0 + beq.s loc_1A63B6 + cmpi.b #$03,d0 + beq.w loc_1A645C + bra.w loc_1A645C +; --------------------------------------------------------------------------- + +loc_1A6358: ; CODE XREF: ROM:001A633Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Ninja2 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + cmpi.b #$80,d0 + beq.w EnemyAI_Ninja2 + andi.b #$0F,d0 + cmpi.b #$01,d0 + bne.s locret_1A63AE + move.b #$FF,Action1(a5) + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + addi.b #$10,d0 + lsl.b #$02,d0 + move.w d0,PrevAction(a5) + +locret_1A63AE: ; CODE XREF: ROM:001A6394j + rts +; --------------------------------------------------------------------------- + +loc_1A63B0: ; CODE XREF: ROM:001A6344j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A63B6: ; CODE XREF: ROM:001A634Aj + move.l (a5),d0 + movem.l d0,-(sp) + move.w (Player_CentreX).l,d1 + move.w (Player_CentreY).l,d2 + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + beq.s loc_1A63E2 + cmpi.b #$80,d0 + beq.s loc_1A63E8 + bhi.s loc_1A63EE + addi.w #$0018,d1 + bra.s loc_1A63F2 +; --------------------------------------------------------------------------- + +loc_1A63E2: ; CODE XREF: ROM:001A63D2j + subi.w #$0018,d2 + bra.s loc_1A63F2 +; --------------------------------------------------------------------------- + +loc_1A63E8: ; CODE XREF: ROM:001A63D8j + addi.w #$0018,d2 + bra.s loc_1A63F2 +; --------------------------------------------------------------------------- + +loc_1A63EE: ; CODE XREF: ROM:001A63DAj + subi.w #$0018,d1 + +loc_1A63F2: ; CODE XREF: ROM:001A63E0j + ; ROM:001A63E6j ... + move.w d1,d0 + lsr.w #$04,d1 + move.b d1,X(a5) + andi.b #$0F,d0 + move.b d0,SubX(a5) + move.w d2,d0 + lsr.w #$04,d2 + move.b d2,Y(a5) + andi.b #$0F,d0 + move.b d0,SubY(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + jsr (sub_3BC).l + bcc.s loc_1A6432 + movem.l (sp)+,d0 + move.l d0,(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + bra.w EnemyAI_Ninja2 +; --------------------------------------------------------------------------- + +loc_1A6432: ; CODE XREF: ROM:001A641Ej + bset #$05,Action1(a5) + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + eori.b #$80,d0 + andi.b #$3F,RotationAndSize(a5) + or.b d0,RotationAndSize(a5) + movem.l (sp)+,d0 + move.b #$23,ChestIndex(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A645C: ; CODE XREF: ROM:001A6350j + ; ROM:001A6354j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A6490 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A6490 + beq.w EnemyAI_Ninja2 + +loc_1A6490: ; CODE XREF: ROM:001A646Cj + ; ROM:001A648Aj + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/ninja3.asm b/code/gamelogic/ai/enemies/ninja3.asm new file mode 100644 index 0000000..24da157 --- /dev/null +++ b/code/gamelogic/ai/enemies/ninja3.asm @@ -0,0 +1,315 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Ninja3_B: ; CODE XREF: ROM:001A84EAj + bra.s EnemyAI_Ninja3 +; --------------------------------------------------------------------------- + +EnemyAI_Ninja3_A: ; CODE XREF: ROM:001A84E6j + btst #$01,Flags2(a5) + bne.s loc_1A64B0 + move.b ChestIndex(a5),d0 + beq.s loc_1A64B6 + cmpi.b #$10,d0 + beq.s loc_1A64E2 + bra.w loc_1A662C +; --------------------------------------------------------------------------- + +loc_1A64B0: ; CODE XREF: ROM:001A649Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A64B6: ; CODE XREF: ROM:001A64A4j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Ninja3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Ninja3: ; CODE XREF: ROM:EnemyAI_Ninja3_Bj + ; ROM:001A64DAj ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A64E2: ; CODE XREF: ROM:001A64AAj + tst.b (byte_FF1142).l + bne.s loc_1A6512 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A6516 + bcs.s loc_1A650C + bsr.s sub_1A6556 + bcs.s loc_1A650C + bsr.w sub_1A6592 + bcs.s loc_1A650C + bsr.w sub_1A65D2 + +loc_1A650C: ; CODE XREF: ROM:001A64FCj + ; ROM:001A6500j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A6512: ; CODE XREF: ROM:001A64E8j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6516: ; CODE XREF: ROM:001A64FAp + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6552 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1A6552 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6552: ; CODE XREF: sub_1A6516+10j + ; sub_1A6516+20j + tst.b d0 + rts +; End of function sub_1A6516 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6556: ; CODE XREF: ROM:001A64FEp + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A658E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A658E + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A658E: ; CODE XREF: sub_1A6556+10j + ; sub_1A6556+20j + tst.b d0 + rts +; End of function sub_1A6556 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A6592: ; CODE XREF: ROM:001A6502p + move.w #$0038,d5 + move.w #$FFD0,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A65CE + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A65CE + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A65CE: ; CODE XREF: sub_1A6592+10j + ; sub_1A6592+20j + tst.b d0 + rts +; End of function sub_1A6592 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A65D2: ; CODE XREF: ROM:001A6508p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcc.s loc_1A6628 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00070,d7 + bcc.s loc_1A660E + move.b #$23,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A660E: ; CODE XREF: sub_1A65D2+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A6628: ; CODE XREF: sub_1A65D2+10j + tst.b d0 + rts +; End of function sub_1A65D2 + +; --------------------------------------------------------------------------- + +loc_1A662C: ; CODE XREF: ROM:001A64ACj + andi.b #$0F,d0 + beq.s loc_1A664A + cmpi.b #$01,d0 + beq.s loc_1A66A2 + cmpi.b #$02,d0 + beq.s loc_1A66B6 + cmpi.b #$03,d0 + beq.w loc_1A676A + bra.w loc_1A676A +; --------------------------------------------------------------------------- + +loc_1A664A: ; CODE XREF: ROM:001A6630j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$FFC8,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Ninja3 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + cmpi.b #$80,d0 + beq.w EnemyAI_Ninja3 + andi.b #$0F,d0 + cmpi.b #$01,d0 + bne.s locret_1A66A0 + move.b #$FF,Action1(a5) + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + addi.b #$10,d0 + lsl.b #$02,d0 + move.w d0,PrevAction(a5) + +locret_1A66A0: ; CODE XREF: ROM:001A6686j + rts +; --------------------------------------------------------------------------- + +loc_1A66A2: ; CODE XREF: ROM:001A6636j + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + eori.b #$80,d0 + clr.b d1 + bra.s loc_1A66C6 +; --------------------------------------------------------------------------- + +loc_1A66B6: ; CODE XREF: ROM:001A663Cj + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + move.b #$80,d1 + +loc_1A66C6: ; CODE XREF: ROM:001A66B4j + movem.w d1,-(sp) + move.w (Player_CentreX).l,d1 + move.w (Player_CentreY).l,d2 + andi.b #$C0,d0 + beq.s loc_1A66EA + cmpi.b #$80,d0 + beq.s loc_1A66F0 + bhi.s loc_1A66F6 + addi.w #$0018,d1 + bra.s loc_1A66FA +; --------------------------------------------------------------------------- + +loc_1A66EA: ; CODE XREF: ROM:001A66DAj + subi.w #$0018,d2 + bra.s loc_1A66FA +; --------------------------------------------------------------------------- + +loc_1A66F0: ; CODE XREF: ROM:001A66E0j + addi.w #$0018,d2 + bra.s loc_1A66FA +; --------------------------------------------------------------------------- + +loc_1A66F6: ; CODE XREF: ROM:001A66E2j + subi.w #$0018,d1 + +loc_1A66FA: ; CODE XREF: ROM:001A66E8j + ; ROM:001A66EEj ... + move.w d1,d0 + lsr.w #$04,d1 + move.b d1,X(a5) + andi.b #$0F,d0 + move.b d0,SubX(a5) + move.w d2,d0 + lsr.w #$04,d2 + move.b d2,Y(a5) + andi.b #$0F,d0 + move.b d0,SubY(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + jsr (sub_3BC).l + bcc.s loc_1A673E + movem.w (sp)+,d1 + movem.l (sp)+,d0 + move.l d0,(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + bra.w EnemyAI_Ninja3 +; --------------------------------------------------------------------------- + +loc_1A673E: ; CODE XREF: ROM:001A6726j + movem.w (sp)+,d1 + bset #$05,Action1(a5) + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + eor.b d1,d0 + andi.b #$3F,RotationAndSize(a5) + or.b d0,RotationAndSize(a5) + movem.l (sp)+,d0 + move.b #$23,ChestIndex(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A676A: ; CODE XREF: ROM:001A6642j + ; ROM:001A6646j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A679E + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A679E + beq.w EnemyAI_Ninja3 + +loc_1A679E: ; CODE XREF: ROM:001A677Aj + ; ROM:001A6798j + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/nole.asm b/code/gamelogic/ai/enemies/nole.asm new file mode 100644 index 0000000..aa28e4a --- /dev/null +++ b/code/gamelogic/ai/enemies/nole.asm @@ -0,0 +1,404 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Nole_B: ; CODE XREF: ROM:001A86A2j + bra.s EnemyAI_Nole +; --------------------------------------------------------------------------- + +EnemyAI_Nole_A: ; CODE XREF: ROM:001A869Ej + btst #$01,Flags2(a5) + bne.s loc_1AE896 + move.b ChestIndex(a5),d0 + beq.s loc_1AE89C + cmpi.b #$10,d0 + beq.s loc_1AE8CE + bra.w loc_1AEAE4 +; --------------------------------------------------------------------------- + +loc_1AE896: ; CODE XREF: ROM:001AE884j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AE89C: ; CODE XREF: ROM:001AE88Aj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s sub_1AE8CA + rts +; --------------------------------------------------------------------------- + +EnemyAI_Nole: ; CODE XREF: ROM:EnemyAI_Nole_Bj + bsr.s sub_1AE8CA + bra.w loc_1AE9FE + +; =============== S U B R O U T I N E ======================================= + +; Attributes: thunk + +sub_1AE8CA: ; CODE XREF: ROM:001AE8C0j + ; ROM:EnemyAI_Nolep ... + bra.w loc_1A8AB6 +; End of function sub_1AE8CA + +; --------------------------------------------------------------------------- + +loc_1AE8CE: ; CODE XREF: ROM:001AE890j + btst #$06,Flags2(a5) + beq.s loc_1AE8E6 + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s loc_1AE912 + subq.b #$01,Unk4D(a5) + +loc_1AE8E6: ; CODE XREF: ROM:001AE8D4j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.w sub_1AE91C + bcs.s loc_1AE912 + bsr.w sub_1AE9EE + bcs.s loc_1AE912 + bsr.w sub_1AEA1C + bcs.s loc_1AE912 + bsr.w sub_1AEA64 + bcs.s loc_1AE912 + bsr.w sub_1AEAAC + +loc_1AE912: ; CODE XREF: ROM:001AE8E0j + ; ROM:001AE8FAj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE91C: ; CODE XREF: ROM:001AE8F6p + +; FUNCTION CHUNK AT 001AE9D4 SIZE 0000001A BYTES + + btst #$06,Flags2(a5) + beq.w loc_1AE9CA + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bhi.w loc_1AE9CA + move.w #$001F,d1 + bsr.s sub_1AE944 + bcs.w loc_1AE9D4 + rts +; End of function sub_1AE91C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE944: ; CODE XREF: sub_1AD4A4+Cp + ; sub_1AD72A+Cp ... + movem.w d1,-(sp) + move.w #00007,d6 + jsr (j_GenerateRandomNumber).l + addi.b #$03,d7 + move.w d7,d5 + move.w #00002,d6 + jsr (j_GenerateRandomNumber).l + tst.b d7 + beq.s loc_1AE968 + neg.b d5 + +loc_1AE968: ; CODE XREF: sub_1AE944+20j + move.w #00002,d6 + jsr (j_GenerateRandomNumber).l + tst.b d7 + beq.s loc_1AE988 + add.b (Player_X).l,d5 + move.b d5,X(a5) + move.b (Player_Y).l,Y(a5) + bra.s loc_1AE998 +; --------------------------------------------------------------------------- + +loc_1AE988: ; CODE XREF: sub_1AE944+30j + add.b (Player_Y).l,d5 + move.b d5,Y(a5) + move.b (Player_X).l,X(a5) + +loc_1AE998: ; CODE XREF: sub_1AE944+42j + movea.l a5,a1 + jsr (sub_1A8AE6).l + move.w (Player_Z).l,d0 + move.w d0,Z(a5) + movem.w (sp)+,d1 + add.w d1,d0 + move.w d0,HitBoxZEnd(a5) + movea.l a5,a1 + jsr (sub_3BC).l + bcc.s loc_1AE9CE + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + +loc_1AE9CA: ; CODE XREF: sub_1AE91C+6j + ; sub_1AE91C+18j + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AE9CE: ; CODE XREF: sub_1AE944+78j + ori #$01,ccr + rts +; End of function sub_1AE944 + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1AE91C + +loc_1AE9D4: ; CODE XREF: sub_1AE91C+22j + move.b #$25,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; END OF FUNCTION CHUNK FOR sub_1AE91C + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE9EE: ; CODE XREF: ROM:001AE8FCp + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00001,d7 + bhi.s loc_1AEA18 + +loc_1AE9FE: ; CODE XREF: ROM:001AE8C6j + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AEA18: ; CODE XREF: sub_1AE9EE+Ej + tst.b d0 + rts +; End of function sub_1AE9EE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEA1C: ; CODE XREF: ROM:001AE902p + btst #$06,Flags2(a5) + bne.s loc_1AEA60 + move.w #$00A0,d5 + move.w #$FFD8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AEA60 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00300,d7 + bhi.s loc_1AEA60 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AEA60: ; CODE XREF: sub_1AEA1C+6j + ; sub_1AEA1C+18j ... + tst.b d0 + rts +; End of function sub_1AEA1C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEA64: ; CODE XREF: ROM:001AE908p + btst #$06,Flags2(a5) + bne.s loc_1AEAA8 + move.w #$0048,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AEAA8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AEAA8 + move.b #$22,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AEAA8: ; CODE XREF: sub_1AEA64+6j + ; sub_1AEA64+18j ... + tst.b d0 + rts +; End of function sub_1AEA64 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEAAC: ; CODE XREF: ROM:001AE90Ep + btst #$06,Flags2(a5) + bne.s loc_1AEAE0 + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AEAE0 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AEAE0: ; CODE XREF: sub_1AEAAC+6j + ; sub_1AEAAC+18j + tst.b d0 + rts +; End of function sub_1AEAAC + +; --------------------------------------------------------------------------- + +loc_1AEAE4: ; CODE XREF: ROM:001AE892j + andi.b #$0F,d0 + beq.s loc_1AEB0C + cmpi.b #$01,d0 + beq.w loc_1AEB8C + cmpi.b #$02,d0 + beq.w loc_1AEBFC + cmpi.b #$03,d0 + beq.w loc_1AEBFC + cmpi.b #$04,d0 + beq.w loc_1AEBFC + bra.s loc_1AEB54 +; --------------------------------------------------------------------------- + +loc_1AEB0C: ; CODE XREF: ROM:001AEAE8j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0500,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$04,Unk4D(a5) + bcs.s locret_1AEB52 + move.w #$0600,QueuedAction(a5) + cmpi.b #$08,Unk4D(a5) + bcs.s locret_1AEB52 + bset #$06,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + bset #$07,FallRate(a5) + clr.b Unk4D(a5) + bra.w sub_1AE8CA +; --------------------------------------------------------------------------- + +locret_1AEB52: ; CODE XREF: ROM:001AEB22j + ; ROM:001AEB30j + rts +; --------------------------------------------------------------------------- + +loc_1AEB54: ; CODE XREF: ROM:001AEB0Aj + bclr #$06,Flags2(a5) + move.w #$0600,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$04,Unk4D(a5) + bcs.s locret_1AEB8A + move.w #$0500,QueuedAction(a5) + cmpi.b #$08,Unk4D(a5) + bcs.s locret_1AEB8A + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bclr #$07,FallRate(a5) + bra.w sub_1AE8CA +; --------------------------------------------------------------------------- + +locret_1AEB8A: ; CODE XREF: ROM:001AEB6Aj + ; ROM:001AEB78j + rts +; --------------------------------------------------------------------------- + +loc_1AEB8C: ; CODE XREF: ROM:001AEAEEj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$08,Unk4D(a5) + bcs.s locret_1AEBF2 + move.w #$0200,QueuedAction(a5) + cmpi.b #$10,Unk4D(a5) + bcs.s locret_1AEBF2 + move.w #$0300,QueuedAction(a5) + cmpi.b #$18,Unk4D(a5) + bhi.w loc_1AEBE2 + bcs.w locret_1AEBF2 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_GhostAbsorbHP +; --------------------------------------------------------------------------- + move.b #$02,d0 + move.w #$1E00,d1 + bsr.w sub_1AC474 + bcs.w loc_1AEBF4 + move.w #$24C0,TileSource(a1) + move.b #$08,Speed(a1) + rts +; --------------------------------------------------------------------------- + +loc_1AEBE2: ; CODE XREF: ROM:001AEBB8j + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk4D(a5) + beq.w loc_1AEBF4 + +locret_1AEBF2: ; CODE XREF: ROM:001AEB9Cj + ; ROM:001AEBAAj ... + rts +; --------------------------------------------------------------------------- + +loc_1AEBF4: ; CODE XREF: ROM:001AEBD0j + ; ROM:001AEBEEj + clr.b Unk4D(a5) + bra.w sub_1AE8CA +; --------------------------------------------------------------------------- + +loc_1AEBFC: ; CODE XREF: ROM:001AEAF6j + ; ROM:001AEAFEj ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$08,Unk0D(a5) + bcs.s loc_1AEC52 + move.w #$0200,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s loc_1AEC52 + bhi.s loc_1AEC22 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_SwordSwing +; --------------------------------------------------------------------------- + +loc_1AEC22: ; CODE XREF: ROM:001AEC1Cj + move.w #$0021,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + cmpi.b #$18,Unk0D(a5) + bcs.s loc_1AEC52 + move.w #$0400,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s loc_1AEC52 + beq.w sub_1AE8CA + +loc_1AEC52: ; CODE XREF: ROM:001AEC0Cj + ; ROM:001AEC1Aj ... + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/orc1.asm b/code/gamelogic/ai/enemies/orc1.asm new file mode 100644 index 0000000..71f2475 --- /dev/null +++ b/code/gamelogic/ai/enemies/orc1.asm @@ -0,0 +1,234 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Orc1_B: ; CODE XREF: ROM:001A84AAj + bra.s EnemyAI_Orc1 +; --------------------------------------------------------------------------- + +EnemyAI_Orc1_A: ; CODE XREF: ROM:loc_1A84A6j + btst #$01,Flags2(a5) + bne.s loc_1A4CA8 + move.b ChestIndex(a5),d0 + beq.s loc_1A4CAE + cmpi.b #$10,d0 + beq.s loc_1A4CDA + bra.w loc_1A4E52 +; --------------------------------------------------------------------------- + +loc_1A4CA8: ; CODE XREF: ROM:001A4C96j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A4CAE: ; CODE XREF: ROM:001A4C9Cj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Orc1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Orc1: ; CODE XREF: ROM:EnemyAI_Orc1_Bj + ; ROM:001A4CD2j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A4CDA: ; CODE XREF: ROM:001A4CA2j + tst.b (byte_FF1142).l + bne.s loc_1A4D0A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A4D0E + bcs.s loc_1A4D04 + bsr.s sub_1A4D5C + bcs.s loc_1A4D04 + bsr.w sub_1A4DAA + bcs.s loc_1A4D04 + bsr.w sub_1A4DF8 + +loc_1A4D04: ; CODE XREF: ROM:001A4CF4j + ; ROM:001A4CF8j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A4D0A: ; CODE XREF: ROM:001A4CE0j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4D0E: ; CODE XREF: ROM:001A4CF2p + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4D58 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1A4D58 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A4D58 + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4D58: ; CODE XREF: sub_1A4D0E+10j + ; sub_1A4D0E+22j ... + tst.b d0 + rts +; End of function sub_1A4D0E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4D5C: ; CODE XREF: ROM:001A4CF6p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4DA6 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A4DA6 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A4DA6 + move.b #$21,ChestIndex(a5) + move.w #$0007,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4DA6: ; CODE XREF: sub_1A4D5C+10j + ; sub_1A4D5C+22j ... + tst.b d0 + rts +; End of function sub_1A4D5C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4DAA: ; CODE XREF: ROM:001A4CFAp + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4DF4 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A4DF4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A4DF4 + move.b #$22,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4DF4: ; CODE XREF: sub_1A4DAA+10j + ; sub_1A4DAA+22j ... + tst.b d0 + rts +; End of function sub_1A4DAA + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4DF8: ; CODE XREF: ROM:001A4D00p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4E4E + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1A4E34 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4E34: ; CODE XREF: sub_1A4DF8+20j + move.b #$24,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4E4E: ; CODE XREF: sub_1A4DF8+10j + tst.b d0 + rts +; End of function sub_1A4DF8 + +; --------------------------------------------------------------------------- + +loc_1A4E52: ; CODE XREF: ROM:001A4CA4j + andi.b #$0F,d0 + beq.s loc_1A4E6C + cmpi.b #$01,d0 + beq.s loc_1A4E78 + cmpi.b #$02,d0 + beq.s loc_1A4E78 + cmpi.b #$03,d0 + beq.s loc_1A4E7E + bra.s loc_1A4E7E +; --------------------------------------------------------------------------- + +loc_1A4E6C: ; CODE XREF: ROM:001A4E56j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Orc1 + +loc_1A4E78: ; CODE XREF: ROM:001A4E5Cj + ; ROM:001A4E62j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A4E7E: ; CODE XREF: ROM:001A4E68j + ; ROM:001A4E6Aj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A4EB2 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A4EB2 + beq.w EnemyAI_Orc1 + +locret_1A4EB2: ; CODE XREF: ROM:001A4E8Ej + ; ROM:001A4EACj + rts diff --git a/code/gamelogic/ai/enemies/orc2.asm b/code/gamelogic/ai/enemies/orc2.asm new file mode 100644 index 0000000..804540e --- /dev/null +++ b/code/gamelogic/ai/enemies/orc2.asm @@ -0,0 +1,256 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Orc2_B: ; CODE XREF: ROM:001A84B2j + bra.s EnemyAI_Orc2 +; --------------------------------------------------------------------------- + +EnemyAI_Orc2_A: ; CODE XREF: ROM:001A84AEj + btst #$01,Flags2(a5) + bne.s loc_1A4ECE + move.b ChestIndex(a5),d0 + beq.s loc_1A4ED4 + cmpi.b #$10,d0 + beq.s loc_1A4F00 + bra.w loc_1A5078 +; --------------------------------------------------------------------------- + +loc_1A4ECE: ; CODE XREF: ROM:001A4EBCj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A4ED4: ; CODE XREF: ROM:001A4EC2j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Orc2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Orc2: ; CODE XREF: ROM:EnemyAI_Orc2_Bj + ; ROM:001A4EF8j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A4F00: ; CODE XREF: ROM:001A4EC8j + tst.b (byte_FF1142).l + bne.s loc_1A4F30 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A4F34 + bcs.s loc_1A4F2A + bsr.s sub_1A4F82 + bcs.s loc_1A4F2A + bsr.w sub_1A4FD0 + bcs.s loc_1A4F2A + bsr.w sub_1A501E + +loc_1A4F2A: ; CODE XREF: ROM:001A4F1Aj + ; ROM:001A4F1Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A4F30: ; CODE XREF: ROM:001A4F06j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4F34: ; CODE XREF: ROM:001A4F18p + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4F7E + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1A4F7E + move.w #$03E8,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0008,d7 + bhi.s loc_1A4F7E + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4F7E: ; CODE XREF: sub_1A4F34+10j + ; sub_1A4F34+22j ... + tst.b d0 + rts +; End of function sub_1A4F34 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4F82: ; CODE XREF: ROM:001A4F1Cp + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A4FCC + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A4FCC + move.w #$03E8,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0012,d7 + bhi.s loc_1A4FCC + move.b #$21,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A4FCC: ; CODE XREF: sub_1A4F82+10j + ; sub_1A4F82+22j ... + tst.b d0 + rts +; End of function sub_1A4F82 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A4FD0: ; CODE XREF: ROM:001A4F20p + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A501A + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A501A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0012,d7 + bhi.s loc_1A501A + move.b #$22,ChestIndex(a5) + move.w #$0008,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A501A: ; CODE XREF: sub_1A4FD0+10j + ; sub_1A4FD0+22j ... + tst.b d0 + rts +; End of function sub_1A4FD0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A501E: ; CODE XREF: ROM:001A4F26p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5074 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bcc.s loc_1A505A + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A505A: ; CODE XREF: sub_1A501E+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5074: ; CODE XREF: sub_1A501E+10j + tst.b d0 + rts +; End of function sub_1A501E + +; --------------------------------------------------------------------------- + +loc_1A5078: ; CODE XREF: ROM:001A4ECAj + andi.b #$0F,d0 + beq.s loc_1A5092 + cmpi.b #$01,d0 + beq.s loc_1A50E0 + cmpi.b #$02,d0 + beq.s loc_1A50A4 + cmpi.b #$03,d0 + beq.s loc_1A50AA + bra.s loc_1A50E0 +; --------------------------------------------------------------------------- + +loc_1A5092: ; CODE XREF: ROM:001A507Cj + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Orc2 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A50A4: ; CODE XREF: ROM:001A5088j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A50AA: ; CODE XREF: ROM:001A508Ej + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A50DE + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A50DE + beq.w EnemyAI_Orc2 + +locret_1A50DE: ; CODE XREF: ROM:001A50BAj + ; ROM:001A50D8j + rts +; --------------------------------------------------------------------------- + +loc_1A50E0: ; CODE XREF: ROM:001A5082j + ; ROM:001A5090j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A5114 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A5114 + beq.w EnemyAI_Orc2 + +loc_1A5114: ; CODE XREF: ROM:001A50F0j + ; ROM:001A510Ej + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/orc3.asm b/code/gamelogic/ai/enemies/orc3.asm new file mode 100644 index 0000000..ce5c287 --- /dev/null +++ b/code/gamelogic/ai/enemies/orc3.asm @@ -0,0 +1,251 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Orc3_B: ; CODE XREF: ROM:001A84BAj + bra.s EnemyAI_Orc3 +; --------------------------------------------------------------------------- + +EnemyAI_Orc3_A: ; CODE XREF: ROM:001A84B6j + btst #$01,Flags2(a5) + bne.s loc_1A5134 + move.b ChestIndex(a5),d0 + beq.s loc_1A513A + cmpi.b #$10,d0 + beq.s loc_1A5166 + bra.w loc_1A52DE +; --------------------------------------------------------------------------- + +loc_1A5134: ; CODE XREF: ROM:001A5122j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A513A: ; CODE XREF: ROM:001A5128j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0040,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Orc3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Orc3: ; CODE XREF: ROM:EnemyAI_Orc3_Bj + ; ROM:001A515Ej ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1A5166: ; CODE XREF: ROM:001A512Ej + tst.b (byte_FF1142).l + bne.s loc_1A5196 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A519A + bcs.s loc_1A5190 + bsr.s sub_1A51E8 + bcs.s loc_1A5190 + bsr.w sub_1A5236 + bcs.s loc_1A5190 + bsr.w sub_1A5284 + +loc_1A5190: ; CODE XREF: ROM:001A5180j + ; ROM:001A5184j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5196: ; CODE XREF: ROM:001A516Cj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A519A: ; CODE XREF: ROM:001A517Ep + move.w #$0050,d5 + move.w #$0050,d6 + move.w #$0050,d7 + bsr.w sub_1A8964 + bcc.s loc_1A51E4 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcs.s loc_1A51E4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00008,d7 + bhi.s loc_1A51E4 + move.b #$20,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A51E4: ; CODE XREF: sub_1A519A+10j + ; sub_1A519A+22j ... + tst.b d0 + rts +; End of function sub_1A519A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A51E8: ; CODE XREF: ROM:001A5182p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5232 + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5232 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A5232 + move.b #$21,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5232: ; CODE XREF: sub_1A51E8+10j + ; sub_1A51E8+22j ... + tst.b d0 + rts +; End of function sub_1A51E8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5236: ; CODE XREF: ROM:001A5186p + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5280 + move.w #$0020,d5 + move.w #$0020,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5280 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A5280 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5280: ; CODE XREF: sub_1A5236+10j + ; sub_1A5236+22j ... + tst.b d0 + rts +; End of function sub_1A5236 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5284: ; CODE XREF: ROM:001A518Cp + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A52DA + move.w #$0064,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0032,d7 + bcc.s loc_1A52C0 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b $0000000D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A52C0: ; CODE XREF: sub_1A5284+20j + move.b #$24,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b $0000000D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A52DA: ; CODE XREF: sub_1A5284+10j + tst.b d0 + rts +; End of function sub_1A5284 + +; --------------------------------------------------------------------------- + +loc_1A52DE: ; CODE XREF: ROM:001A5130j + andi.b #$0F,d0 + beq.s loc_1A52F8 + cmpi.b #$01,d0 + beq.s loc_1A5340 + cmpi.b #$02,d0 + beq.s loc_1A5340 + cmpi.b #$03,d0 + beq.s loc_1A530A + bra.s loc_1A5340 +; --------------------------------------------------------------------------- + +loc_1A52F8: ; CODE XREF: ROM:001A52E2j + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w EnemyAI_Orc3 + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A530A: ; CODE XREF: ROM:001A52F4j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A533E + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A533E + beq.w EnemyAI_Orc3 + +locret_1A533E: ; CODE XREF: ROM:001A531Aj + ; ROM:001A5338j + rts +; --------------------------------------------------------------------------- + +loc_1A5340: ; CODE XREF: ROM:001A52E8j + ; ROM:001A52EEj ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A5374 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A5374 + beq.w EnemyAI_Orc3 + +loc_1A5374: ; CODE XREF: ROM:001A5350j + ; ROM:001A536Ej + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/reaper1.asm b/code/gamelogic/ai/enemies/reaper1.asm new file mode 100644 index 0000000..cf7fdb7 --- /dev/null +++ b/code/gamelogic/ai/enemies/reaper1.asm @@ -0,0 +1,287 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Reaper1_B: ; CODE XREF: ROM:001A85F2j + bra.s EnemyAI_Reaper1 +; --------------------------------------------------------------------------- + +EnemyAI_Reaper1_A: ; CODE XREF: ROM:001A85EEj + btst #$01,Flags2(a5) + bne.s loc_1AC13A + move.b ChestIndex(a5),d0 + beq.s loc_1AC140 + cmpi.b #$10,d0 + beq.s loc_1AC16C + bra.w loc_1AC258 +; --------------------------------------------------------------------------- + +loc_1AC13A: ; CODE XREF: ROM:001AC128j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC140: ; CODE XREF: ROM:001AC12Ej + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0100,d5 + move.w #$0100,d6 + move.w #$0100,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Reaper1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Reaper1: ; CODE XREF: ROM:EnemyAI_Reaper1_Bj + ; ROM:001AC164j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AC16C: ; CODE XREF: ROM:001AC134j + tst.b (byte_FF1142).l + bne.s loc_1AC1CC + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + addq.b #$01,Unk4D(a5) + cmpi.b #$3C,Unk4D(a5) + bcs.s loc_1AC1B8 + clr.b Unk4D(a5) + bsr.s sub_1AC1D0 + bcs.s loc_1AC1B2 + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + bsr.s sub_1AC200 + bcs.s loc_1AC1B2 + bsr.w sub_1AC22A + +loc_1AC1B2: ; CODE XREF: ROM:001AC196j + ; ROM:001AC1ACj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC1B8: ; CODE XREF: ROM:001AC18Ej + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC1CC: ; CODE XREF: ROM:001AC172j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC1D0: ; CODE XREF: ROM:001AC194p + move.w #$0060,d5 + move.w #$FFB8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AC1FC + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC1FC: ; CODE XREF: sub_1AC1D0+10j + tst.b d0 + rts +; End of function sub_1AC1D0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC200: ; CODE XREF: ROM:001AC1AAp + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00200,d7 + bhi.s loc_1AC226 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC226: ; CODE XREF: sub_1AC200+Ej + tst.b d0 + rts +; End of function sub_1AC200 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC22A: ; CODE XREF: ROM:001AC1AEp + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00200,d7 + bhi.s loc_1AC254 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC254: ; CODE XREF: sub_1AC22A+Ej + tst.b d0 + rts +; End of function sub_1AC22A + +; --------------------------------------------------------------------------- + +loc_1AC258: ; CODE XREF: ROM:001AC136j + clr.b Unk0D(a5) + andi.b #$0F,d0 + beq.w loc_1AC368 + cmpi.b #$01,d0 + beq.s loc_1AC27E + cmpi.b #$02,d0 + beq.w loc_1AC292 + cmpi.b #$03,d0 + beq.w loc_1AC292 + bra.w loc_1AC292 +; --------------------------------------------------------------------------- + +loc_1AC27E: ; CODE XREF: ROM:001AC268j + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + eori.b #$80,d0 + clr.b d1 + bra.s loc_1AC2A2 +; --------------------------------------------------------------------------- + +loc_1AC292: ; CODE XREF: ROM:001AC26Ej + ; ROM:001AC276j ... + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + move.b #$80,d1 + +loc_1AC2A2: ; CODE XREF: ROM:001AC290j + movem.w d1,-(sp) + move.w (Player_CentreX).l,d1 + move.w (Player_CentreY).l,d2 + andi.b #$C0,d0 + beq.s loc_1AC2C6 + cmpi.b #$80,d0 + beq.s loc_1AC2CC + bhi.s loc_1AC2D2 + addi.w #$0068,d1 + bra.s loc_1AC2D6 +; --------------------------------------------------------------------------- + +loc_1AC2C6: ; CODE XREF: ROM:001AC2B6j + subi.w #$0068,d2 + bra.s loc_1AC2D6 +; --------------------------------------------------------------------------- + +loc_1AC2CC: ; CODE XREF: ROM:001AC2BCj + addi.w #$0068,d2 + bra.s loc_1AC2D6 +; --------------------------------------------------------------------------- + +loc_1AC2D2: ; CODE XREF: ROM:001AC2BEj + subi.w #$0068,d1 + +loc_1AC2D6: ; CODE XREF: ROM:001AC2C4j + ; ROM:001AC2CAj ... + move.w d1,d0 + lsr.w #$04,d1 + move.b d1,X(a5) + andi.b #$0F,d0 + move.b d0,SubX(a5) + move.w d2,d0 + lsr.w #$04,d2 + move.b d2,Y(a5) + andi.b #$0F,d0 + move.b d0,SubY(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + jsr (sub_3BC).l + bcc.s loc_1AC338 + movem.w (sp)+,d1 + movem.l (sp)+,d0 + move.l d0,(a5) + movea.l a5,a1 + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + jsr (sub_1A8AE6).l + bra.w EnemyAI_Reaper1 +; --------------------------------------------------------------------------- + +loc_1AC338: ; CODE XREF: ROM:001AC314j + movem.w (sp)+,d1 + bset #$05,Action1(a5) + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + eor.b d1,d0 + andi.b #$3F,RotationAndSize(a5) + or.b d0,RotationAndSize(a5) + movem.l (sp)+,d0 + move.b #$20,ChestIndex(a5) + clr.b Unk4D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC368: ; CODE XREF: ROM:001AC260j + andi.b #$BF,Flags2(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AC3A2 + move.w #$0100,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AC3A2: ; CODE XREF: ROM:001AC38Aj + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AC3B4 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AC3B4: ; CODE XREF: ROM:001AC3A8j + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1AC3DA + bcs.w locret_1AC3EA + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0300,d1 + bsr.w sub_1AC474 + bcs.w loc_1AC3EC + rts +; --------------------------------------------------------------------------- + +loc_1AC3DA: ; CODE XREF: ROM:001AC3BAj + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1AC3EC + +locret_1AC3EA: ; CODE XREF: ROM:001AC3BEj + rts +; --------------------------------------------------------------------------- + +loc_1AC3EC: ; CODE XREF: ROM:001AC3D4j + ; ROM:001AC3E6j + clr.b Unk4D(a5) + bra.w EnemyAI_Reaper1 diff --git a/code/gamelogic/ai/enemies/reaper2.asm b/code/gamelogic/ai/enemies/reaper2.asm new file mode 100644 index 0000000..43ed02f --- /dev/null +++ b/code/gamelogic/ai/enemies/reaper2.asm @@ -0,0 +1,287 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Reaper2_B: ; CODE XREF: ROM:001A8642j + bra.s EnemyAI_Reaper2 +; --------------------------------------------------------------------------- + +EnemyAI_Reaper2_A: ; CODE XREF: ROM:001A863Ej + btst #$01,Flags2(a5) + bne.s loc_1AC524 + move.b ChestIndex(a5),d0 + beq.s loc_1AC52A + cmpi.b #$10,d0 + beq.s loc_1AC556 + bra.w loc_1AC642 +; --------------------------------------------------------------------------- + +loc_1AC524: ; CODE XREF: ROM:001AC512j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC52A: ; CODE XREF: ROM:001AC518j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0100,d5 + move.w #$0100,d6 + move.w #$0100,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Reaper2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Reaper2: ; CODE XREF: ROM:EnemyAI_Reaper2_Bj + ; ROM:001AC54Ej ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AC556: ; CODE XREF: ROM:001AC51Ej + tst.b (byte_FF1142).l + bne.s loc_1AC5B6 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + addq.b #$01,Unk4D(a5) + cmpi.b #$2D,Unk4D(a5) + bcs.s loc_1AC5A2 + clr.b Unk4D(a5) + bsr.s sub_1AC5BA + bcs.s loc_1AC59C + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + bsr.s sub_1AC5EA + bcs.s loc_1AC59C + bsr.w sub_1AC614 + +loc_1AC59C: ; CODE XREF: ROM:001AC580j + ; ROM:001AC596j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC5A2: ; CODE XREF: ROM:001AC578j + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC5B6: ; CODE XREF: ROM:001AC55Cj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC5BA: ; CODE XREF: ROM:001AC57Ep + move.w #$0060,d5 + move.w #$FFB8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AC5E6 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC5E6: ; CODE XREF: sub_1AC5BA+10j + tst.b d0 + rts +; End of function sub_1AC5BA + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC5EA: ; CODE XREF: ROM:001AC594p + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00300,d7 + bhi.s loc_1AC610 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC610: ; CODE XREF: sub_1AC5EA+Ej + tst.b d0 + rts +; End of function sub_1AC5EA + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC614: ; CODE XREF: ROM:001AC598p + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00300,d7 + bhi.s loc_1AC63E + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC63E: ; CODE XREF: sub_1AC614+Ej + tst.b d0 + rts +; End of function sub_1AC614 + +; --------------------------------------------------------------------------- + +loc_1AC642: ; CODE XREF: ROM:001AC520j + clr.b Unk0D(a5) + andi.b #$0F,d0 + beq.w loc_1AC752 + cmpi.b #$01,d0 + beq.s loc_1AC668 + cmpi.b #$02,d0 + beq.w loc_1AC67C + cmpi.b #$03,d0 + beq.w loc_1AC67C + bra.w loc_1AC67C +; --------------------------------------------------------------------------- + +loc_1AC668: ; CODE XREF: ROM:001AC652j + move.l X(a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + eori.b #$80,d0 + clr.b d1 + bra.s loc_1AC68C +; --------------------------------------------------------------------------- + +loc_1AC67C: ; CODE XREF: ROM:001AC658j + ; ROM:001AC660j ... + move.l X(a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + move.b #$80,d1 + +loc_1AC68C: ; CODE XREF: ROM:001AC67Aj + movem.w d1,-(sp) + move.w (Player_CentreX).l,d1 + move.w (Player_CentreY).l,d2 + andi.b #$C0,d0 + beq.s loc_1AC6B0 + cmpi.b #$80,d0 + beq.s loc_1AC6B6 + bhi.s loc_1AC6BC + addi.w #$0068,d1 + bra.s loc_1AC6C0 +; --------------------------------------------------------------------------- + +loc_1AC6B0: ; CODE XREF: ROM:001AC6A0j + subi.w #$0068,d2 + bra.s loc_1AC6C0 +; --------------------------------------------------------------------------- + +loc_1AC6B6: ; CODE XREF: ROM:001AC6A6j + addi.w #$0068,d2 + bra.s loc_1AC6C0 +; --------------------------------------------------------------------------- + +loc_1AC6BC: ; CODE XREF: ROM:001AC6A8j + subi.w #$0068,d1 + +loc_1AC6C0: ; CODE XREF: ROM:001AC6AEj + ; ROM:001AC6B4j ... + move.w d1,d0 + lsr.w #$04,d1 + move.b d1,X(a5) + andi.b #$0F,d0 + move.b d0,SubX(a5) + move.w d2,d0 + lsr.w #$04,d2 + move.b d2,Y(a5) + andi.b #$0F,d0 + move.b d0,SubY(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + jsr (sub_3BC).l + bcc.s loc_1AC722 + movem.w (sp)+,d1 + movem.l (sp)+,d0 + move.l d0,(a5) + movea.l a5,a1 + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + jsr (sub_1A8AE6).l + bra.w EnemyAI_Reaper2 +; --------------------------------------------------------------------------- + +loc_1AC722: ; CODE XREF: ROM:001AC6FEj + movem.w (sp)+,d1 + bset #$05,Action1(a5) + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + eor.b d1,d0 + andi.b #$3F,RotationAndSize(a5) + or.b d0,RotationAndSize(a5) + movem.l (sp)+,d0 + move.b #$20,ChestIndex(a5) + clr.b Unk4D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC752: ; CODE XREF: ROM:001AC64Aj + andi.b #$BF,Flags2(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AC78C + move.w #$0100,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AC78C: ; CODE XREF: ROM:001AC774j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AC79E + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AC79E: ; CODE XREF: ROM:001AC792j + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1AC7C4 + bcs.w locret_1AC7D4 + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0500,d1 + bsr.w sub_1AC474 + bcs.w loc_1AC7D6 + rts +; --------------------------------------------------------------------------- + +loc_1AC7C4: ; CODE XREF: ROM:001AC7A4j + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1AC7D6 + +locret_1AC7D4: ; CODE XREF: ROM:001AC7A8j + rts +; --------------------------------------------------------------------------- + +loc_1AC7D6: ; CODE XREF: ROM:001AC7BEj + ; ROM:001AC7D0j + clr.b Unk4D(a5) + bra.w EnemyAI_Reaper2 diff --git a/code/gamelogic/ai/enemies/reaper3.asm b/code/gamelogic/ai/enemies/reaper3.asm new file mode 100644 index 0000000..d37e01f --- /dev/null +++ b/code/gamelogic/ai/enemies/reaper3.asm @@ -0,0 +1,287 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Reaper3_B: ; CODE XREF: ROM:001A864Aj + bra.s EnemyAI_Reaper3 +; --------------------------------------------------------------------------- + +EnemyAI_Reaper3_A: ; CODE XREF: ROM:001A8646j + btst #$01,Flags2(a5) + bne.s loc_1AC7F8 + move.b ChestIndex(a5),d0 + beq.s loc_1AC7FE + cmpi.b #$10,d0 + beq.s loc_1AC82A + bra.w loc_1AC916 +; --------------------------------------------------------------------------- + +loc_1AC7F8: ; CODE XREF: ROM:001AC7E6j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC7FE: ; CODE XREF: ROM:001AC7ECj + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0100,d5 + move.w #$0100,d6 + move.w #$0100,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Reaper3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Reaper3: ; CODE XREF: ROM:EnemyAI_Reaper3_Bj + ; ROM:001AC822j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AC82A: ; CODE XREF: ROM:001AC7F2j + tst.b (byte_FF1142).l + bne.s loc_1AC88A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s loc_1AC876 + clr.b Unk4D(a5) + bsr.s sub_1AC88E + bcs.s loc_1AC870 + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + bsr.s sub_1AC8BE + bcs.s loc_1AC870 + bsr.w sub_1AC8E8 + +loc_1AC870: ; CODE XREF: ROM:001AC854j + ; ROM:001AC86Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AC876: ; CODE XREF: ROM:001AC84Cj + ori.b #$40,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AC88A: ; CODE XREF: ROM:001AC830j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC88E: ; CODE XREF: ROM:001AC852p + move.w #$0060,d5 + move.w #$FFB8,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AC8BA + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC8BA: ; CODE XREF: sub_1AC88E+10j + tst.b d0 + rts +; End of function sub_1AC88E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC8BE: ; CODE XREF: ROM:001AC868p + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00400,d7 + bhi.s loc_1AC8E4 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC8E4: ; CODE XREF: sub_1AC8BE+Ej + tst.b d0 + rts +; End of function sub_1AC8BE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC8E8: ; CODE XREF: ROM:001AC86Cp + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00400,d7 + bhi.s loc_1AC912 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AC912: ; CODE XREF: sub_1AC8E8+Ej + tst.b d0 + rts +; End of function sub_1AC8E8 + +; --------------------------------------------------------------------------- + +loc_1AC916: ; CODE XREF: ROM:001AC7F4j + clr.b Unk0D(a5) + andi.b #$0F,d0 + beq.w loc_1ACA26 + cmpi.b #$01,d0 + beq.s loc_1AC93C + cmpi.b #$02,d0 + beq.w loc_1AC950 + cmpi.b #$03,d0 + beq.w loc_1AC950 + bra.w loc_1AC950 +; --------------------------------------------------------------------------- + +loc_1AC93C: ; CODE XREF: ROM:001AC926j + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + eori.b #$80,d0 + clr.b d1 + bra.s loc_1AC960 +; --------------------------------------------------------------------------- + +loc_1AC950: ; CODE XREF: ROM:001AC92Cj + ; ROM:001AC934j ... + move.l (a5),d0 + movem.l d0,-(sp) + move.b (Player_RotationAndSize).l,d0 + move.b #$80,d1 + +loc_1AC960: ; CODE XREF: ROM:001AC94Ej + movem.w d1,-(sp) + move.w (Player_CentreX).l,d1 + move.w (Player_CentreY).l,d2 + andi.b #$C0,d0 + beq.s loc_1AC984 + cmpi.b #$80,d0 + beq.s loc_1AC98A + bhi.s loc_1AC990 + addi.w #$0068,d1 + bra.s loc_1AC994 +; --------------------------------------------------------------------------- + +loc_1AC984: ; CODE XREF: ROM:001AC974j + subi.w #$0068,d2 + bra.s loc_1AC994 +; --------------------------------------------------------------------------- + +loc_1AC98A: ; CODE XREF: ROM:001AC97Aj + addi.w #$0068,d2 + bra.s loc_1AC994 +; --------------------------------------------------------------------------- + +loc_1AC990: ; CODE XREF: ROM:001AC97Cj + subi.w #$0068,d1 + +loc_1AC994: ; CODE XREF: ROM:001AC982j + ; ROM:001AC988j ... + move.w d1,d0 + lsr.w #$04,d1 + move.b d1,X(a5) + andi.b #$0F,d0 + move.b d0,SubX(a5) + move.w d2,d0 + lsr.w #$04,d2 + move.b d2,Y(a5) + andi.b #$0F,d0 + move.b d0,SubY(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + jsr (sub_3BC).l + bcc.s loc_1AC9F6 + movem.w (sp)+,d1 + movem.l (sp)+,d0 + move.l d0,(a5) + movea.l a5,a1 + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + jsr (sub_1A8AE6).l + bra.w EnemyAI_Reaper3 +; --------------------------------------------------------------------------- + +loc_1AC9F6: ; CODE XREF: ROM:001AC9D2j + movem.w (sp)+,d1 + bset #$05,Action1(a5) + move.b (Player_RotationAndSize).l,d0 + andi.b #$C0,d0 + eor.b d1,d0 + andi.b #$3F,RotationAndSize(a5) + or.b d0,RotationAndSize(a5) + movem.l (sp)+,d0 + move.b #$20,ChestIndex(a5) + clr.b Unk4D(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ACA26: ; CODE XREF: ROM:001AC91Ej + andi.b #$BF,Flags2(a5) + clr.w d0 + move.b FloorHeight(a5),d0 + move.w d0,Z(a5) + addi.w #$001F,d0 + move.w d0,HitBoxZEnd(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1ACA60 + move.w #$0100,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1ACA60: ; CODE XREF: ROM:001ACA48j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1ACA72 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1ACA72: ; CODE XREF: ROM:001ACA66j + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1ACA98 + bcs.w locret_1ACAA8 + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0800,d1 + bsr.w sub_1AC474 + bcs.w loc_1ACAAA + rts +; --------------------------------------------------------------------------- + +loc_1ACA98: ; CODE XREF: ROM:001ACA78j + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1ACAAA + +locret_1ACAA8: ; CODE XREF: ROM:001ACA7Cj + rts +; --------------------------------------------------------------------------- + +loc_1ACAAA: ; CODE XREF: ROM:001ACA92j + ; ROM:001ACAA4j + clr.b Unk4D(a5) + bra.w EnemyAI_Reaper3 diff --git a/code/gamelogic/ai/enemies/skeleton1.asm b/code/gamelogic/ai/enemies/skeleton1.asm new file mode 100644 index 0000000..b85e02c --- /dev/null +++ b/code/gamelogic/ai/enemies/skeleton1.asm @@ -0,0 +1,279 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton1_B: ; CODE XREF: ROM:001A856Aj + bra.s EnemyAI_Skeleton1 +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton1_A: ; CODE XREF: ROM:001A8566j + btst #$01,Flags2(a5) + bne.s loc_1A934C + move.b ChestIndex(a5),d0 + beq.s loc_1A9352 + cmpi.b #$10,d0 + beq.s loc_1A9392 + bra.w loc_1A94E8 +; --------------------------------------------------------------------------- + +loc_1A934C: ; CODE XREF: ROM:001A933Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9352: ; CODE XREF: ROM:001A9340j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Skeleton1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton1: ; CODE XREF: ROM:EnemyAI_Skeleton1_Bj + ; ROM:001A9376j ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9392: ; CODE XREF: ROM:001A9346j + tst.b (byte_FF1142).l + bne.s loc_1A93C2 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A93D2 + bcs.s loc_1A93BC + bsr.s sub_1A940E + bcs.s loc_1A93BC + bsr.w sub_1A944E + bcs.s loc_1A93BC + bsr.w sub_1A948E + +loc_1A93BC: ; CODE XREF: ROM:001A93ACj + ; ROM:001A93B0j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A93C2: ; CODE XREF: ROM:001A9398j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A93D2: ; CODE XREF: ROM:001A93AAp + move.w #$0090,d5 + move.w #$FFA0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A940A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00036,d7 + bhi.s loc_1A940A + move.b #$20,ChestIndex(a5) + move.w #$0014,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A940A: ; CODE XREF: sub_1A93D2+10j + ; sub_1A93D2+20j + tst.b d0 + rts +; End of function sub_1A93D2 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A940E: ; CODE XREF: ROM:001A93AEp + move.w #$0040,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A944A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00036,d7 + bhi.s loc_1A944A + move.b #$21,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A944A: ; CODE XREF: sub_1A940E+10j + ; sub_1A940E+20j + tst.b d0 + rts +; End of function sub_1A940E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A944E: ; CODE XREF: ROM:001A93B2p + move.w #$0048,d5 + move.w #$FFD8,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A948A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00036,d7 + bhi.s loc_1A948A + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A948A: ; CODE XREF: sub_1A944E+10j + ; sub_1A944E+20j + tst.b d0 + rts +; End of function sub_1A944E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A948E: ; CODE XREF: ROM:001A93B8p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A94E4 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bcc.s loc_1A94CA + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A94CA: ; CODE XREF: sub_1A948E+20j + move.b #$24,ChestIndex(a5) + move.w #$0009,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A94E4: ; CODE XREF: sub_1A948E+10j + tst.b d0 + rts +; End of function sub_1A948E + +; --------------------------------------------------------------------------- + +loc_1A94E8: ; CODE XREF: ROM:001A9348j + andi.b #$0F,d0 + beq.s loc_1A9506 + cmpi.b #$01,d0 + beq.s loc_1A950C + cmpi.b #$02,d0 + beq.s loc_1A9546 + cmpi.b #$03,d0 + beq.w loc_1A950C + bra.w loc_1A950C +; --------------------------------------------------------------------------- + +loc_1A9506: ; CODE XREF: ROM:001A94ECj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A950C: ; CODE XREF: ROM:001A94F2j + ; ROM:001A94FEj ... + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9540 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A9540 + beq.w EnemyAI_Skeleton1 + +loc_1A9540: ; CODE XREF: ROM:001A951Cj + ; ROM:001A953Aj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9546: ; CODE XREF: ROM:001A94F8j + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9540 + bra.w EnemyAI_Skeleton1 +; --------------------------------------------------------------------------- + jsr (sub_103B2).l + bcs.w loc_1A95D4 + move.w (a5),d0 + move.b RotationAndSize(a5),d1 + andi.b #$C0,d1 + eori.b #$80,d1 + beq.s loc_1A9594 + cmpi.b #$80,d1 + bcs.s loc_1A9598 + beq.s loc_1A959E + subi.w #$0200,d0 + bra.s loc_1A95A0 +; --------------------------------------------------------------------------- + +loc_1A9594: ; CODE XREF: ROM:001A9584j + subq.b #$02,d0 + bra.s loc_1A95A0 +; --------------------------------------------------------------------------- + +loc_1A9598: ; CODE XREF: ROM:001A958Aj + addi.w #$0200,d0 + bra.s loc_1A95A0 +; --------------------------------------------------------------------------- + +loc_1A959E: ; CODE XREF: ROM:001A958Cj + addq.b #$02,d0 + +loc_1A95A0: ; CODE XREF: ROM:001A9592j + ; ROM:001A9596j ... + move.w d0,(a1) + move.b d1,RotationAndSize(a1) + move.b #$78,d2 + move.w Z(a5),d3 + addi.w #$0010,d3 + move.w d3,Z(a1) + move.w SubX(a5),SubX(a1) + move.w #$47C0,TileSource(a1) + move.w #$013C,BehaviourLUTIndex(a1) + move.b #$04,Speed(a1) + jsr (sub_103B8).l + +loc_1A95D4: ; CODE XREF: ROM:001A9572j + bra.w EnemyAI_Skeleton1 diff --git a/code/gamelogic/ai/enemies/skeleton2.asm b/code/gamelogic/ai/enemies/skeleton2.asm new file mode 100644 index 0000000..6708c7f --- /dev/null +++ b/code/gamelogic/ai/enemies/skeleton2.asm @@ -0,0 +1,270 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton2_B: ; CODE XREF: ROM:001A8572j + bra.s EnemyAI_Skeleton2 +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton2_A: ; CODE XREF: ROM:001A856Ej + btst #$01,Flags2(a5) + bne.s loc_1A95F2 + move.b ChestIndex(a5),d0 + beq.s loc_1A95FE + cmpi.b #$10,d0 + beq.s loc_1A9644 + bra.w loc_1A97B4 +; --------------------------------------------------------------------------- + +loc_1A95F2: ; CODE XREF: ROM:001A95E0j + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A95FE: ; CODE XREF: ROM:001A95E6j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Skeleton2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton2: ; CODE XREF: ROM:EnemyAI_Skeleton2_Bj + ; ROM:001A9622j ... + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9644: ; CODE XREF: ROM:001A95ECj + tst.b (byte_FF1142).l + bne.s loc_1A9674 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A9684 + bcs.s loc_1A966E + bsr.s sub_1A96C0 + bcs.s loc_1A966E + bsr.w sub_1A971A + bcs.s loc_1A966E + bsr.w sub_1A975A + +loc_1A966E: ; CODE XREF: ROM:001A965Ej + ; ROM:001A9662j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9674: ; CODE XREF: ROM:001A964Aj + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9684: ; CODE XREF: ROM:001A965Cp + move.w #$0070,d5 + move.w #$FFB0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A96BC + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$003E,d7 + bhi.s loc_1A96BC + move.b #$20,ChestIndex(a5) + move.w #$0019,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A96BC: ; CODE XREF: sub_1A9684+10j + ; sub_1A9684+20j + tst.b d0 + rts +; End of function sub_1A9684 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A96C0: ; CODE XREF: ROM:001A9660p + move.w #$0050,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9716 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A9716 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00060,d7 + bhi.s loc_1A9716 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9716: ; CODE XREF: sub_1A96C0+10j + ; sub_1A96C0+2Aj ... + tst.b d0 + rts +; End of function sub_1A96C0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A971A: ; CODE XREF: ROM:001A9664p + move.w #$0030,d5 + move.w #$FFE0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9756 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1A9756 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9756: ; CODE XREF: sub_1A971A+10j + ; sub_1A971A+20j + tst.b d0 + rts +; End of function sub_1A971A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A975A: ; CODE XREF: ROM:001A966Ap + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A97B0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00040,d7 + bcc.s loc_1A9796 + move.b #$23,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9796: ; CODE XREF: sub_1A975A+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A97B0: ; CODE XREF: sub_1A975A+10j + tst.b d0 + rts +; End of function sub_1A975A + +; --------------------------------------------------------------------------- + +loc_1A97B4: ; CODE XREF: ROM:001A95EEj + andi.b #$0F,d0 + beq.s loc_1A97D4 + cmpi.b #$01,d0 + beq.s loc_1A9808 + cmpi.b #$02,d0 + beq.w loc_1A985E + cmpi.b #$03,d0 + beq.w loc_1A9824 + bra.w loc_1A9824 +; --------------------------------------------------------------------------- + +loc_1A97D4: ; CODE XREF: ROM:001A97B8j + btst #$05,Action1(a5) + beq.s loc_1A97E4 + move.w #$0100,QueuedAction(a5) + bra.s loc_1A9802 +; --------------------------------------------------------------------------- + +loc_1A97E4: ; CODE XREF: ROM:001A97DAj + btst #$04,Action1(a5) + beq.s loc_1A9802 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + +loc_1A9802: ; CODE XREF: ROM:001A97E2j + ; ROM:001A97EAj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9808: ; CODE XREF: ROM:001A97BEj + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0400,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$28,Unk0D(a5) + bcc.w EnemyAI_Skeleton2 + rts +; --------------------------------------------------------------------------- + +loc_1A9824: ; CODE XREF: ROM:001A97CCj + ; ROM:001A97D0j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9858 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A9858 + beq.w EnemyAI_Skeleton2 + +loc_1A9858: ; CODE XREF: ROM:001A9834j + ; ROM:001A9852j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A985E: ; CODE XREF: ROM:001A97C4j + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9858 + bra.w EnemyAI_Skeleton2 diff --git a/code/gamelogic/ai/enemies/skeleton3.asm b/code/gamelogic/ai/enemies/skeleton3.asm new file mode 100644 index 0000000..dc888df --- /dev/null +++ b/code/gamelogic/ai/enemies/skeleton3.asm @@ -0,0 +1,255 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton3_B: ; CODE XREF: ROM:001A857Aj + bra.s EnemyAI_Skeleton3 +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton3_A: ; CODE XREF: ROM:001A8576j + btst #$01,Flags2(a5) + bne.s loc_1A989E + move.b ChestIndex(a5),d0 + beq.s loc_1A98AA + cmpi.b #$10,d0 + beq.s loc_1A98F0 + bra.w loc_1A9A46 +; --------------------------------------------------------------------------- + +loc_1A989E: ; CODE XREF: ROM:001A988Cj + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A98AA: ; CODE XREF: ROM:001A9892j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Skeleton3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Skeleton3: ; CODE XREF: ROM:EnemyAI_Skeleton3_Bj + ; ROM:001A98CEj ... + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A98F0: ; CODE XREF: ROM:001A9898j + tst.b (byte_FF1142).l + bne.s loc_1A9920 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A9930 + bcs.s loc_1A991A + bsr.s sub_1A996C + bcs.s loc_1A991A + bsr.w sub_1A99AC + bcs.s loc_1A991A + bsr.w sub_1A99EC + +loc_1A991A: ; CODE XREF: ROM:001A990Aj + ; ROM:001A990Ej ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9920: ; CODE XREF: ROM:001A98F6j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A9930: ; CODE XREF: ROM:001A9908p + move.w #$0070,d5 + move.w #$FFB0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9968 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00086,d7 + bhi.s loc_1A9968 + move.b #$20,ChestIndex(a5) + move.w #$001A,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9968: ; CODE XREF: sub_1A9930+10j + ; sub_1A9930+20j + tst.b d0 + rts +; End of function sub_1A9930 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A996C: ; CODE XREF: ROM:001A990Cp + move.w #$0050,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A99A8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00125,d7 + bhi.s loc_1A99A8 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A99A8: ; CODE XREF: sub_1A996C+10j + ; sub_1A996C+20j + tst.b d0 + rts +; End of function sub_1A996C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A99AC: ; CODE XREF: ROM:001A9910p + move.w #$0030,d5 + move.w #$FFE0,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A99E8 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00043,d7 + bhi.s loc_1A99E8 + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A99E8: ; CODE XREF: sub_1A99AC+10j + ; sub_1A99AC+20j + tst.b d0 + rts +; End of function sub_1A99AC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A99EC: ; CODE XREF: ROM:001A9916p + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9A42 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1A9A28 + move.b #$23,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9A28: ; CODE XREF: sub_1A99EC+20j + move.b #$24,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9A42: ; CODE XREF: sub_1A99EC+10j + tst.b d0 + rts +; End of function sub_1A99EC + +; --------------------------------------------------------------------------- + +loc_1A9A46: ; CODE XREF: ROM:001A989Aj + andi.b #$0F,d0 + beq.s loc_1A9A66 + cmpi.b #$01,d0 + beq.s loc_1A9A8A + cmpi.b #$02,d0 + beq.w loc_1A9AE0 + cmpi.b #$03,d0 + beq.w loc_1A9AA6 + bra.w loc_1A9AA6 +; --------------------------------------------------------------------------- + +loc_1A9A66: ; CODE XREF: ROM:001A9A4Aj + cmpi.b #$18,BehavParam(a5) + bcc.s loc_1A9A84 + move.w #$0300,QueuedAction(a5) + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + +loc_1A9A84: ; CODE XREF: ROM:001A9A6Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9A8A: ; CODE XREF: ROM:001A9A50j + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0400,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$28,Unk0D(a5) + bcc.w EnemyAI_Skeleton3 + rts +; --------------------------------------------------------------------------- + +loc_1A9AA6: ; CODE XREF: ROM:001A9A5Ej + ; ROM:001A9A62j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9ADA + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1A9ADA + beq.w EnemyAI_Skeleton3 + +loc_1A9ADA: ; CODE XREF: ROM:001A9AB6j + ; ROM:001A9AD4j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9AE0: ; CODE XREF: ROM:001A9A56j + move.w #$0029,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1A9ADA + bra.w EnemyAI_Skeleton3 diff --git a/code/gamelogic/ai/enemies/spectre1.asm b/code/gamelogic/ai/enemies/spectre1.asm new file mode 100644 index 0000000..2febab0 --- /dev/null +++ b/code/gamelogic/ai/enemies/spectre1.asm @@ -0,0 +1,282 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Spectre1_B: ; CODE XREF: ROM:001A8652j + bra.s EnemyAI_Spectre1 +; --------------------------------------------------------------------------- + +EnemyAI_Spectre1_A: ; CODE XREF: ROM:001A864Ej + bset #$07,FallRate(a5) + btst #$01,Flags2(a5) + bne.s loc_1AD324 + move.b ChestIndex(a5),d0 + beq.s loc_1AD32A + cmpi.b #$10,d0 + beq.s loc_1AD356 + bra.w loc_1AD4C6 +; --------------------------------------------------------------------------- + +loc_1AD324: ; CODE XREF: ROM:001AD312j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD32A: ; CODE XREF: ROM:001AD318j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Spectre1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Spectre1: ; CODE XREF: ROM:EnemyAI_Spectre1_Bj + ; ROM:001AD34Ej ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AD356: ; CODE XREF: ROM:001AD31Ej + tst.b (byte_FF1142).l + bne.s loc_1AD3A2 + btst #$06,Flags2(a5) + beq.s loc_1AD37A + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s loc_1AD39C + subq.b #$01,Unk4D(a5) + bsr.w sub_1AD4A4 + +loc_1AD37A: ; CODE XREF: ROM:001AD364j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AD3A6 + bcs.s loc_1AD39C + bsr.s sub_1AD3E8 + bcs.s loc_1AD39C + bsr.w sub_1AD41A + bcs.s loc_1AD39C + bsr.w sub_1AD460 + +loc_1AD39C: ; CODE XREF: ROM:001AD370j + ; ROM:001AD38Cj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD3A2: ; CODE XREF: ROM:001AD35Cj + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD3A6: ; CODE XREF: ROM:001AD38Ap + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD3E4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0008,d7 + bhi.s loc_1AD3E4 + bset #$06,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD3E4: ; CODE XREF: sub_1AD3A6+10j + ; sub_1AD3A6+20j + tst.b d0 + rts +; End of function sub_1AD3A6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD3E8: ; CODE XREF: ROM:001AD38Ep + move.w #$0060,d5 + move.w #$0000,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD416 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00006,d7 + bhi.s loc_1AD416 + bsr.w sub_1AD4A4 + bcc.s loc_1AD416 + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD416: ; CODE XREF: sub_1AD3E8+10j + ; sub_1AD3E8+20j ... + tst.b d0 + rts +; End of function sub_1AD3E8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD41A: ; CODE XREF: ROM:001AD392p + move.w #$0060,d5 + move.w #$0048,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD45C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1AD45C + bsr.w sub_1AD4A4 + bcc.s loc_1AD45C + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD45C: ; CODE XREF: sub_1AD41A+10j + ; sub_1AD41A+20j ... + tst.b d0 + rts +; End of function sub_1AD41A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD460: ; CODE XREF: ROM:001AD398p + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD4A0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcc.s loc_1AD4A0 + bsr.s sub_1AD4A4 + bcc.s loc_1AD4A0 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD4A0: ; CODE XREF: sub_1AD460+10j + ; sub_1AD460+20j ... + tst.b d0 + rts +; End of function sub_1AD460 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD4A4: ; CODE XREF: ROM:001AD376p + ; sub_1AD3E8+22p ... + btst #$06,Flags2(a5) + beq.s loc_1AD4BA + move.w #$000F,d1 + bsr.w sub_1AE944 + bcs.s loc_1AD4BA + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AD4BA: ; CODE XREF: sub_1AD4A4+6j + ; sub_1AD4A4+10j + bclr #$06,Flags2(a5) + ori #$01,ccr + rts +; End of function sub_1AD4A4 + +; --------------------------------------------------------------------------- + +loc_1AD4C6: ; CODE XREF: ROM:001AD320j + andi.b #$0F,d0 + beq.s loc_1AD4E0 + cmpi.b #$01,d0 + beq.s loc_1AD4E0 + cmpi.b #$02,d0 + beq.s loc_1AD4E0 + cmpi.b #$03,d0 + beq.s loc_1AD554 + bra.s loc_1AD554 +; --------------------------------------------------------------------------- + +loc_1AD4E0: ; CODE XREF: ROM:001AD4CAj + ; ROM:001AD4D0j ... + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AD502 + move.w #$0300,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AD502: ; CODE XREF: ROM:001AD4EAj + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AD514 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AD514: ; CODE XREF: ROM:001AD508j + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1AD53A + bcs.w locret_1AD54A + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0300,d1 + bsr.w sub_1AC474 + bcs.w loc_1AD54C + rts +; --------------------------------------------------------------------------- + +loc_1AD53A: ; CODE XREF: ROM:001AD51Aj + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1AD54C + +locret_1AD54A: ; CODE XREF: ROM:001AD51Ej + rts +; --------------------------------------------------------------------------- + +loc_1AD54C: ; CODE XREF: ROM:001AD534j + ; ROM:001AD546j + clr.b Unk4D(a5) + bra.w EnemyAI_Spectre1 +; --------------------------------------------------------------------------- + +loc_1AD554: ; CODE XREF: ROM:001AD4DCj + ; ROM:001AD4DEj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AD588 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AD588 + beq.w EnemyAI_Spectre1 + +locret_1AD588: ; CODE XREF: ROM:001AD564j + ; ROM:001AD582j + rts diff --git a/code/gamelogic/ai/enemies/spectre2.asm b/code/gamelogic/ai/enemies/spectre2.asm new file mode 100644 index 0000000..2ae794b --- /dev/null +++ b/code/gamelogic/ai/enemies/spectre2.asm @@ -0,0 +1,282 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Spectre2_B: ; CODE XREF: ROM:001A865Aj + bra.s EnemyAI_Spectre2 +; --------------------------------------------------------------------------- + +EnemyAI_Spectre2_A: ; CODE XREF: ROM:001A8656j + bset #$07,FallRate(a5) + btst #$01,Flags2(a5) + bne.s loc_1AD5AA + move.b ChestIndex(a5),d0 + beq.s loc_1AD5B0 + cmpi.b #$10,d0 + beq.s loc_1AD5DC + bra.w loc_1AD74C +; --------------------------------------------------------------------------- + +loc_1AD5AA: ; CODE XREF: ROM:001AD598j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD5B0: ; CODE XREF: ROM:001AD59Ej + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Spectre2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Spectre2: ; CODE XREF: ROM:EnemyAI_Spectre2_Bj + ; ROM:001AD5D4j ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AD5DC: ; CODE XREF: ROM:001AD5A4j + tst.b (byte_FF1142).l + bne.s loc_1AD628 + btst #$06,Flags2(a5) + beq.s loc_1AD600 + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s loc_1AD622 + subq.b #$01,Unk4D(a5) + bsr.w sub_1AD72A + +loc_1AD600: ; CODE XREF: ROM:001AD5EAj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AD62C + bcs.s loc_1AD622 + bsr.s sub_1AD66E + bcs.s loc_1AD622 + bsr.w sub_1AD6A0 + bcs.s loc_1AD622 + bsr.w sub_1AD6E6 + +loc_1AD622: ; CODE XREF: ROM:001AD5F6j + ; ROM:001AD612j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD628: ; CODE XREF: ROM:001AD5E2j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD62C: ; CODE XREF: ROM:001AD610p + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD66A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00018,d7 + bhi.s loc_1AD66A + bset #$06,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD66A: ; CODE XREF: sub_1AD62C+10j + ; sub_1AD62C+20j + tst.b d0 + rts +; End of function sub_1AD62C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD66E: ; CODE XREF: ROM:001AD614p + move.w #$0060,d5 + move.w #$0000,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD69C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00006,d7 + bhi.s loc_1AD69C + bsr.w sub_1AD72A + bcc.s loc_1AD69C + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD69C: ; CODE XREF: sub_1AD66E+10j + ; sub_1AD66E+20j ... + tst.b d0 + rts +; End of function sub_1AD66E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD6A0: ; CODE XREF: ROM:001AD618p + move.w #$0060,d5 + move.w #$0048,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD6E2 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00016,d7 + bhi.s loc_1AD6E2 + bsr.w sub_1AD72A + bcc.s loc_1AD6E2 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD6E2: ; CODE XREF: sub_1AD6A0+10j + ; sub_1AD6A0+20j ... + tst.b d0 + rts +; End of function sub_1AD6A0 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD6E6: ; CODE XREF: ROM:001AD61Ep + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD726 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcc.s loc_1AD726 + bsr.s sub_1AD72A + bcc.s loc_1AD726 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD726: ; CODE XREF: sub_1AD6E6+10j + ; sub_1AD6E6+20j ... + tst.b d0 + rts +; End of function sub_1AD6E6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD72A: ; CODE XREF: ROM:001AD5FCp + ; sub_1AD66E+22p ... + btst #$06,Flags2(a5) + beq.s loc_1AD740 + move.w #$000F,d1 + bsr.w sub_1AE944 + bcs.s loc_1AD740 + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AD740: ; CODE XREF: sub_1AD72A+6j + ; sub_1AD72A+10j + bclr #$06,Flags2(a5) + ori #$01,ccr + rts +; End of function sub_1AD72A + +; --------------------------------------------------------------------------- + +loc_1AD74C: ; CODE XREF: ROM:001AD5A6j + andi.b #$0F,d0 + beq.s loc_1AD766 + cmpi.b #$01,d0 + beq.s loc_1AD766 + cmpi.b #$02,d0 + beq.s loc_1AD766 + cmpi.b #$03,d0 + beq.s loc_1AD7DA + bra.s loc_1AD7DA +; --------------------------------------------------------------------------- + +loc_1AD766: ; CODE XREF: ROM:001AD750j + ; ROM:001AD756j ... + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AD788 + move.w #$0300,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1AD788: ; CODE XREF: ROM:001AD770j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1AD79A + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1AD79A: ; CODE XREF: ROM:001AD78Ej + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1AD7C0 + bcs.w locret_1AD7D0 + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0500,d1 + bsr.w sub_1AC474 + bcs.w loc_1AD7D2 + rts +; --------------------------------------------------------------------------- + +loc_1AD7C0: ; CODE XREF: ROM:001AD7A0j + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1AD7D2 + +locret_1AD7D0: ; CODE XREF: ROM:001AD7A4j + rts +; --------------------------------------------------------------------------- + +loc_1AD7D2: ; CODE XREF: ROM:001AD7BAj + ; ROM:001AD7CCj + clr.b Unk4D(a5) + bra.w EnemyAI_Spectre2 +; --------------------------------------------------------------------------- + +loc_1AD7DA: ; CODE XREF: ROM:001AD762j + ; ROM:001AD764j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AD80E + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AD80E + beq.w EnemyAI_Spectre2 + +locret_1AD80E: ; CODE XREF: ROM:001AD7EAj + ; ROM:001AD808j + rts diff --git a/code/gamelogic/ai/enemies/spectre3.asm b/code/gamelogic/ai/enemies/spectre3.asm new file mode 100644 index 0000000..d6ca4cc --- /dev/null +++ b/code/gamelogic/ai/enemies/spectre3.asm @@ -0,0 +1,282 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Spectre3_B: ; CODE XREF: ROM:001A8662j + bra.s EnemyAI_Spectre3 +; --------------------------------------------------------------------------- + +EnemyAI_Spectre3_A: ; CODE XREF: ROM:001A865Ej + bset #$07,FallRate(a5) + btst #$01,Flags2(a5) + bne.s loc_1AD830 + move.b ChestIndex(a5),d0 + beq.s loc_1AD836 + cmpi.b #$10,d0 + beq.s loc_1AD862 + bra.w loc_1AD9D2 +; --------------------------------------------------------------------------- + +loc_1AD830: ; CODE XREF: ROM:001AD81Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD836: ; CODE XREF: ROM:001AD824j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Spectre3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Spectre3: ; CODE XREF: ROM:EnemyAI_Spectre3_Bj + ; ROM:001AD85Aj ... + bra.w loc_1A8AB6 +; --------------------------------------------------------------------------- + +loc_1AD862: ; CODE XREF: ROM:001AD82Aj + tst.b (byte_FF1142).l + bne.s loc_1AD8AE + btst #$06,Flags2(a5) + beq.s loc_1AD886 + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.s loc_1AD8A8 + subq.b #$01,Unk4D(a5) + bsr.w sub_1AD9B0 + +loc_1AD886: ; CODE XREF: ROM:001AD870j + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AD8B2 + bcs.s loc_1AD8A8 + bsr.s sub_1AD8F4 + bcs.s loc_1AD8A8 + bsr.w sub_1AD926 + bcs.s loc_1AD8A8 + bsr.w sub_1AD96C + +loc_1AD8A8: ; CODE XREF: ROM:001AD87Cj + ; ROM:001AD898j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD8AE: ; CODE XREF: ROM:001AD868j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD8B2: ; CODE XREF: ROM:001AD896p + move.w #$0070,d5 + move.w #$0030,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD8F0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00032,d7 + bhi.s loc_1AD8F0 + bset #$06,Flags2(a5) + move.w #$0100,Z(a5) + move.w #$0120,HitBoxZEnd(a5) + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD8F0: ; CODE XREF: sub_1AD8B2+10j + ; sub_1AD8B2+20j + tst.b d0 + rts +; End of function sub_1AD8B2 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD8F4: ; CODE XREF: ROM:001AD89Ap + move.w #$0060,d5 + move.w #$0000,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD922 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00006,d7 + bhi.s loc_1AD922 + bsr.w sub_1AD9B0 + bcc.s loc_1AD922 + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD922: ; CODE XREF: sub_1AD8F4+10j + ; sub_1AD8F4+20j ... + tst.b d0 + rts +; End of function sub_1AD8F4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD926: ; CODE XREF: ROM:001AD89Ep + move.w #$0060,d5 + move.w #$0048,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD968 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AD968 + bsr.w sub_1AD9B0 + bcc.s loc_1AD968 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD968: ; CODE XREF: sub_1AD926+10j + ; sub_1AD926+20j ... + tst.b d0 + rts +; End of function sub_1AD926 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD96C: ; CODE XREF: ROM:001AD8A4p + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AD9AC + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcc.s loc_1AD9AC + bsr.s sub_1AD9B0 + bcc.s loc_1AD9AC + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AD9AC: ; CODE XREF: sub_1AD96C+10j + ; sub_1AD96C+20j ... + tst.b d0 + rts +; End of function sub_1AD96C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AD9B0: ; CODE XREF: ROM:001AD882p + ; sub_1AD8F4+22p ... + btst #$06,Flags2(a5) + beq.s loc_1AD9C6 + move.w #$000F,d1 + bsr.w sub_1AE944 + bcs.s loc_1AD9C6 + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AD9C6: ; CODE XREF: sub_1AD9B0+6j + ; sub_1AD9B0+10j + bclr #$06,Flags2(a5) + ori #$01,ccr + rts +; End of function sub_1AD9B0 + +; --------------------------------------------------------------------------- + +loc_1AD9D2: ; CODE XREF: ROM:001AD82Cj + andi.b #$0F,d0 + beq.s loc_1AD9EC + cmpi.b #$01,d0 + beq.s loc_1AD9EC + cmpi.b #$02,d0 + beq.s loc_1AD9EC + cmpi.b #$03,d0 + beq.s loc_1ADA60 + bra.s loc_1ADA60 +; --------------------------------------------------------------------------- + +loc_1AD9EC: ; CODE XREF: ROM:001AD9D6j + ; ROM:001AD9DCj ... + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1ADA0E + move.w #$0300,QueuedAction(a5) + lea ($00009880).l,a2 + move.b #$01,d0 + jmp (j_LoadMagicSwordEffect).l +; --------------------------------------------------------------------------- + +loc_1ADA0E: ; CODE XREF: ROM:001AD9F6j + cmpi.b #$02,Unk4D(a5) + bne.w loc_1ADA20 + move.b #$01,d0 + bra.w LoadProjectilePalette +; --------------------------------------------------------------------------- + +loc_1ADA20: ; CODE XREF: ROM:001ADA14j + cmpi.b #$2D,Unk4D(a5) + bhi.w loc_1ADA46 + bcs.w locret_1ADA56 + move.w #$0200,QueuedAction(a5) + move.b #$01,d0 + move.w #$0700,d1 + bsr.w sub_1AC474 + bcs.w loc_1ADA58 + rts +; --------------------------------------------------------------------------- + +loc_1ADA46: ; CODE XREF: ROM:001ADA26j + move.w #$0200,QueuedAction(a5) + cmpi.b #$46,Unk4D(a5) + beq.w loc_1ADA58 + +locret_1ADA56: ; CODE XREF: ROM:001ADA2Aj + rts +; --------------------------------------------------------------------------- + +loc_1ADA58: ; CODE XREF: ROM:001ADA40j + ; ROM:001ADA52j + clr.b Unk4D(a5) + bra.w EnemyAI_Spectre3 +; --------------------------------------------------------------------------- + +loc_1ADA60: ; CODE XREF: ROM:001AD9E8j + ; ROM:001AD9EAj + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1ADA94 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0200,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1ADA94 + beq.w EnemyAI_Spectre3 + +locret_1ADA94: ; CODE XREF: ROM:001ADA70j + ; ROM:001ADA8Ej + rts diff --git a/code/gamelogic/ai/enemies/spinner.asm b/code/gamelogic/ai/enemies/spinner.asm new file mode 100644 index 0000000..547ce68 --- /dev/null +++ b/code/gamelogic/ai/enemies/spinner.asm @@ -0,0 +1,256 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Spinner_B: ; CODE XREF: ROM:001A8682j + ; ROM:001A86CAj + bra.s EnemyAI_Spinner +; --------------------------------------------------------------------------- + +EnemyAI_Spinner_A: ; CODE XREF: ROM:001A867Ej + ; ROM:001A86C6j + btst #$01,Flags2(a5) + bne.s loc_1AE156 + move.b ChestIndex(a5),d0 + cmpi.b #$10,d0 + beq.s loc_1AE180 + bra.w loc_1AE2DC +; --------------------------------------------------------------------------- + +loc_1AE156: ; CODE XREF: ROM:001AE146j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +EnemyAI_Spinner: ; CODE XREF: ROM:EnemyAI_Spinner_Bj + ; ROM:001AE394j + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0180,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AE180: ; CODE XREF: ROM:001AE150j + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1AE1B4 + bcs.s loc_1AE1AE + bsr.s sub_1AE1F4 + bcs.s loc_1AE1AE + bsr.w sub_1AE234 + bcs.s loc_1AE1AE + bsr.w sub_1AE274 + bcs.s loc_1AE1AE + bsr.w sub_1AE2A0 + +loc_1AE1AE: ; CODE XREF: ROM:001AE198j + ; ROM:001AE19Cj ... + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE1B4: ; CODE XREF: ROM:001AE196p + move.w #$00A0,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE1F0 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + cmpi.b #$40,d0 + cmpi.b #$80,d0 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE1F0: ; CODE XREF: sub_1AE1B4+10j + tst.b d0 + rts +; End of function sub_1AE1B4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE1F4: ; CODE XREF: ROM:001AE19Ap + move.w #$0050,d5 + move.w #$FFE0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE230 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00025,d7 + bhi.s loc_1AE230 + move.b #$21,ChestIndex(a5) + move.w #$001A,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE230: ; CODE XREF: sub_1AE1F4+10j + ; sub_1AE1F4+20j + tst.b d0 + rts +; End of function sub_1AE1F4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE234: ; CODE XREF: ROM:001AE19Ep + move.w #$0030,d5 + move.w #$FFE0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE270 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00016,d7 + bhi.s loc_1AE270 + move.b #$22,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE270: ; CODE XREF: sub_1AE234+10j + ; sub_1AE234+20j + tst.b d0 + rts +; End of function sub_1AE234 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE274: ; CODE XREF: ROM:001AE1A4p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE2D8 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; End of function sub_1AE274 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AE2A0: ; CODE XREF: ROM:001AE1AAp + move.w #$0040,d5 + move.w #$FFF0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1AE2D8 + move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) + ; Bit1 - Walk SW (+Y) + ; Bit2 - Walk NW (-X) + ; Bit3 - Walk SE (+X) + ; Bit4 - Fall + ; Bit5 - Jump + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack + ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage + andi.b #$07,d0 + beq.s loc_1AE2D8 + move.b #$24,ChestIndex(a5) + move.w #$017F,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AE2D8: ; CODE XREF: sub_1AE274+10j + ; sub_1AE2A0+10j ... + tst.b d0 + rts +; End of function sub_1AE2A0 + +; --------------------------------------------------------------------------- + +loc_1AE2DC: ; CODE XREF: ROM:001AE152j + andi.b #$0F,d0 + beq.s loc_1AE2F8 + cmpi.b #$01,d0 + beq.s loc_1AE33C + cmpi.b #$02,d0 + beq.s loc_1AE33C + cmpi.b #$03,d0 + beq.s loc_1AE33C + bra.w loc_1AE398 +; --------------------------------------------------------------------------- + +loc_1AE2F8: ; CODE XREF: ROM:001AE2E0j + cmpi.b #$14,Unk4D(a5) + bhi.s loc_1AE336 + move.w #$0500,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$0A,Unk4D(a5) + bcs.s loc_1AE336 + move.w #$0600,QueuedAction(a5) + cmpi.b #$14,Unk4D(a5) + bcs.s loc_1AE336 + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0320,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + +loc_1AE336: ; CODE XREF: ROM:001AE2FEj + ; ROM:001AE310j ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AE33C: ; CODE XREF: ROM:001AE2E6j + ; ROM:001AE2ECj ... + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$05,Unk4D(a5) + bcs.s loc_1AE398 + bne.s loc_1AE35A + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_SwordSwing +; --------------------------------------------------------------------------- + +loc_1AE35A: ; CODE XREF: ROM:001AE354j + move.w #$0200,QueuedAction(a5) + cmpi.b #$0A,Unk4D(a5) + bcs.s loc_1AE398 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + cmpi.b #$0F,Unk4D(a5) + bcs.s loc_1AE398 + move.w #$0400,QueuedAction(a5) + cmpi.b #$14,Unk4D(a5) + bcs.s loc_1AE398 + beq.w EnemyAI_Spinner + +loc_1AE398: ; CODE XREF: ROM:001AE2F4j + ; ROM:001AE352j ... + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/stonewarrior.asm b/code/gamelogic/ai/enemies/stonewarrior.asm new file mode 100644 index 0000000..e77cfcf --- /dev/null +++ b/code/gamelogic/ai/enemies/stonewarrior.asm @@ -0,0 +1,273 @@ +; --------------------------------------------------------------------------- + +EnemyAI_StoneWarrior_B: ; CODE XREF: ROM:001A86AAj + ; ROM:001A86D2j + bra.s EnemyAI_StoneWarrior +; --------------------------------------------------------------------------- + +EnemyAI_StoneWarrior_A: ; CODE XREF: ROM:001A86A6j + ; ROM:001A86CEj + btst #$01,Flags2(a5) + bne.s loc_1AEC72 + move.b ChestIndex(a5),d0 + beq.s loc_1AEC78 + cmpi.b #$10,d0 + beq.s loc_1AECB0 + bra.w loc_1AED88 +; --------------------------------------------------------------------------- + +loc_1AEC72: ; CODE XREF: ROM:001AEC60j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AEC78: ; CODE XREF: ROM:001AEC66j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0020,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s sub_1AECAC + rts +; --------------------------------------------------------------------------- + +EnemyAI_StoneWarrior: ; CODE XREF: ROM:EnemyAI_StoneWarrior_Bj + bsr.s sub_1AECAC + eori.b #$80,RotationAndSize(a5) + bra.w loc_1AED50 + +; =============== S U B R O U T I N E ======================================= + +; Attributes: thunk + +sub_1AECAC: ; CODE XREF: ROM:001AEC9Cj + ; ROM:EnemyAI_StoneWarriorp ... + bra.w loc_1A8AB6 +; End of function sub_1AECAC + +; --------------------------------------------------------------------------- + +loc_1AECB0: ; CODE XREF: ROM:001AEC6Cj + tst.b (byte_FF1142).l + bne.s loc_1AECD8 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.w sub_1AECDC + bcs.s loc_1AECD2 + bsr.w sub_1AED2E + +loc_1AECD2: ; CODE XREF: ROM:001AECCCj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AECD8: ; CODE XREF: ROM:001AECB6j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1AECDC: ; CODE XREF: ROM:001AECC8p + move.w #$0080,d5 + move.w #$0080,d6 + move.w #$0080,d7 + bsr.w sub_1A8964 + bcc.s loc_1AED2A + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1AED2A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00006,d7 + bhi.s loc_1AED2A + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AED2A: ; CODE XREF: sub_1AECDC+10j + ; sub_1AECDC+22j ... + tst.b d0 + rts +; End of function sub_1AECDC + + +; =============== S U B R O U T I N E ======================================= + + +sub_1AED2E: ; CODE XREF: ROM:001AECCEp + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1AED84 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1AED6A + +loc_1AED50: ; CODE XREF: ROM:001AECA8j + move.b #$23,ChestIndex(a5) + move.w #$000E,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AED6A: ; CODE XREF: sub_1AED2E+20j + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1AED84: ; CODE XREF: sub_1AED2E+10j + tst.b d0 + rts +; End of function sub_1AED2E + +; --------------------------------------------------------------------------- + +loc_1AED88: ; CODE XREF: ROM:001AEC6Ej + andi.b #$0F,d0 + beq.s loc_1AEDA2 + cmpi.b #$01,d0 + beq.s loc_1AEDAE + cmpi.b #$02,d0 + beq.s loc_1AEDAE + cmpi.b #$03,d0 + beq.s loc_1AEDB4 + bra.s loc_1AEDF0 +; --------------------------------------------------------------------------- + +loc_1AEDA2: ; CODE XREF: ROM:001AED8Cj + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w sub_1AECAC + +loc_1AEDAE: ; CODE XREF: ROM:001AED92j + ; ROM:001AED98j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AEDB4: ; CODE XREF: ROM:001AED9Ej + bclr #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w loc_1AEDD2 + bset #$00,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AEDD2: ; CODE XREF: ROM:001AEDC2j + addq.b #$01,Unk4D(a5) + cmpi.b #$01,Unk4D(a5) + bne.s loc_1AEDEA + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_DoorLock +; --------------------------------------------------------------------------- + move.w #$0400,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1AEDEA: ; CODE XREF: ROM:001AEDDCj + bsr.s sub_1AEE66 + bra.w sub_1AECAC +; --------------------------------------------------------------------------- + +loc_1AEDF0: ; CODE XREF: ROM:001AEDA0j + move.w #$0100,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$0F,Unk4D(a5) + bcs.w locret_1AEED6 + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$1E,Unk4D(a5) + bcs.w locret_1AEED6 + bne.s loc_1AEE1E + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_DoorLock +; --------------------------------------------------------------------------- + +loc_1AEE1E: ; CODE XREF: ROM:001AEE18j + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + cmpi.b #$20,Unk4D(a5) + bne.w loc_1AEEC4 + bsr.w sub_1AEE66 + move.b (Player_Z+1).l,d0 + cmp.b (Player_FloorHeight).l,d0 + bne.s loc_1AEE62 + tst.b (byte_FF1142).l + bne.s loc_1AEE62 + move.b #$08,d0 ; Stun player + jsr (j_PlaybackInput).l + +loc_1AEE62: ; CODE XREF: ROM:001AEE4Ej + ; ROM:001AEE56j + tst.b d0 + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1AEE66: ; CODE XREF: ROM:loc_1AEDEAp + ; ROM:001AEE3Ep ... + moveq #$00000007,d7 + move.w #$0009,d0 + +loc_1AEE6C: ; CODE XREF: sub_1AEE66+58j + movem.w d7,-(sp) + move.w #$0007,d6 + +loc_1AEE74: ; CODE XREF: sub_1AEE66+4Ej + movem.w d0/d6,-(sp) + movem.w d0,-(sp) + add.w d0,(g_VSRAMData).l + add.w d0,(g_VSRAMData+2).l + jsr (j_QueueVSRAMUpdate).l + jsr (j_FlushDMACopyQueue).l + movem.w (sp)+,d0 + sub.w d0,(g_VSRAMData).l + sub.w d0,(g_VSRAMData+2).l + jsr (j_QueueVSRAMUpdate).l + jsr (j_FlushDMACopyQueue).l + movem.w (sp)+,d0/d6 + dbf d6,loc_1AEE74 + subq.w #$01,d0 + movem.w (sp)+,d7 + dbf d7,loc_1AEE6C + rts +; End of function sub_1AEE66 + +; --------------------------------------------------------------------------- + +loc_1AEEC4: ; CODE XREF: ROM:001AEE3Aj + cmpi.b #$2D,Unk4D(a5) + bcs.s locret_1AEED6 + bra.w sub_1AECAC +; --------------------------------------------------------------------------- + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +locret_1AEED6: ; CODE XREF: ROM:001AEE00j + ; ROM:001AEE14j ... + rts diff --git a/code/gamelogic/ai/enemies/unicorn1.asm b/code/gamelogic/ai/enemies/unicorn1.asm new file mode 100644 index 0000000..5ffcef4 --- /dev/null +++ b/code/gamelogic/ai/enemies/unicorn1.asm @@ -0,0 +1,268 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn1_B: ; CODE XREF: ROM:001A8552j + bra.s EnemyAI_Unicorn1 +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn1_A: ; CODE XREF: ROM:001A854Ej + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + btst #$01,Flags2(a5) + bne.s loc_1A8B12 + move.b ChestIndex(a5),d0 + beq.s loc_1A8B18 + cmpi.b #$10,d0 + beq.s loc_1A8B5E + bra.w loc_1A8CCA +; --------------------------------------------------------------------------- + +loc_1A8B12: ; CODE XREF: ROM:001A8B00j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8B18: ; CODE XREF: ROM:001A8B06j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Unicorn1 + rts + +; =============== S U B R O U T I N E ======================================= + + +EnemyAI_Unicorn1: ; CODE XREF: ROM:EnemyAI_Unicorn1_Bj + ; ROM:001A8B3Cj ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + rts +; End of function EnemyAI_Unicorn1 + +; --------------------------------------------------------------------------- + +loc_1A8B5E: ; CODE XREF: ROM:001A8B0Cj + tst.b (byte_FF1142).l + bne.s loc_1A8B8A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A8B9A + bcs.s loc_1A8B84 + bsr.w sub_1A8C1E + bcs.s loc_1A8B84 + bsr.w sub_1A8C9E + +loc_1A8B84: ; CODE XREF: ROM:001A8B78j + ; ROM:001A8B7Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8B8A: ; CODE XREF: ROM:001A8B64j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8B9A: ; CODE XREF: ROM:001A8B76p + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8C1A + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1A8C1A + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A8C16 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bls.w loc_1A8C00 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8C00: ; CODE XREF: sub_1A8B9A+4Cj + ; ROM:001A8D5Cj + move.b #$21,ChestIndex(a5) + move.w #$0018,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8C16: ; CODE XREF: sub_1A8B9A+3Cj + bsr.w EnemyAI_Unicorn1 + +loc_1A8C1A: ; CODE XREF: sub_1A8B9A+10j + ; sub_1A8B9A+22j + tst.b d0 + rts +; End of function sub_1A8B9A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8C1E: ; CODE XREF: ROM:001A8B7Ap + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8C84 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A8C84 + move.b (Player_AnimAction).l,d0 + andi.b #$07,d0 + beq.w loc_1A8C88 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bhi.s loc_1A8C84 + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$22,ChestIndex(a5) + move.w #$0017,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8C84: ; CODE XREF: sub_1A8C1E+10j + ; sub_1A8C1E+2Aj ... + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1A8C88: ; CODE XREF: sub_1A8C1E+36j + move.b #$23,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A8C1E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8C9E: ; CODE XREF: ROM:001A8B80p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8CC6 + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8CC6: ; CODE XREF: sub_1A8C9E+10j + tst.b d0 + rts +; End of function sub_1A8C9E + +; --------------------------------------------------------------------------- + +loc_1A8CCA: ; CODE XREF: ROM:001A8B0Ej + andi.b #$0F,d0 + beq.s loc_1A8CEC + cmpi.b #$01,d0 + beq.w loc_1A8D74 + cmpi.b #$02,d0 + beq.w loc_1A8DA6 + cmpi.b #$03,d0 + beq.w loc_1A8D7A + bra.w loc_1A8D7A +; --------------------------------------------------------------------------- + +loc_1A8CEC: ; CODE XREF: ROM:001A8CCEj + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Unicorn1 + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.w EnemyAI_Unicorn1 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.w EnemyAI_Unicorn1 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.b #$0F,d0 + bne.s loc_1A8D60 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00080,d7 + bcs.w loc_1A8C00 + +loc_1A8D60: ; CODE XREF: ROM:001A8D4Cj + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + lsl.w #$04,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A8D74: ; CODE XREF: ROM:001A8CD4j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8D7A: ; CODE XREF: ROM:001A8CE4j + ; ROM:001A8CE8j + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0100,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s loc_1A8DA0 + bra.w EnemyAI_Unicorn1 +; --------------------------------------------------------------------------- + +loc_1A8DA0: ; CODE XREF: ROM:001A8D9Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8DA6: ; CODE XREF: ROM:001A8CDCj + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/unicorn2.asm b/code/gamelogic/ai/enemies/unicorn2.asm new file mode 100644 index 0000000..9ea1ff0 --- /dev/null +++ b/code/gamelogic/ai/enemies/unicorn2.asm @@ -0,0 +1,268 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn2_B: ; CODE XREF: ROM:001A855Aj + bra.s EnemyAI_Unicorn2 +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn2_A: ; CODE XREF: ROM:001A8556j + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + btst #$01,Flags2(a5) + bne.s loc_1A8DD2 + move.b ChestIndex(a5),d0 + beq.s loc_1A8DD8 + cmpi.b #$10,d0 + beq.s loc_1A8E1E + bra.w loc_1A8F8A +; --------------------------------------------------------------------------- + +loc_1A8DD2: ; CODE XREF: ROM:001A8DC0j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8DD8: ; CODE XREF: ROM:001A8DC6j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Unicorn2 + rts + +; =============== S U B R O U T I N E ======================================= + + +EnemyAI_Unicorn2: ; CODE XREF: ROM:EnemyAI_Unicorn2_Bj + ; ROM:001A8DFCj ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + rts +; End of function EnemyAI_Unicorn2 + +; --------------------------------------------------------------------------- + +loc_1A8E1E: ; CODE XREF: ROM:001A8DCCj + tst.b (byte_FF1142).l + bne.s loc_1A8E4A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A8E5A + bcs.s loc_1A8E44 + bsr.w sub_1A8EDE + bcs.s loc_1A8E44 + bsr.w sub_1A8F5E + +loc_1A8E44: ; CODE XREF: ROM:001A8E38j + ; ROM:001A8E3Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A8E4A: ; CODE XREF: ROM:001A8E24j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8E5A: ; CODE XREF: ROM:001A8E36p + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8EDA + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1A8EDA + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A8ED6 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bls.w loc_1A8EC0 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8EC0: ; CODE XREF: sub_1A8E5A+4Cj + ; ROM:001A901Cj + move.b #$21,ChestIndex(a5) + move.w #$0018,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8ED6: ; CODE XREF: sub_1A8E5A+3Cj + bsr.w EnemyAI_Unicorn2 + +loc_1A8EDA: ; CODE XREF: sub_1A8E5A+10j + ; sub_1A8E5A+22j + tst.b d0 + rts +; End of function sub_1A8E5A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8EDE: ; CODE XREF: ROM:001A8E3Ap + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8F44 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A8F44 + move.b (Player_AnimAction).l,d0 + andi.b #$07,d0 + beq.w loc_1A8F48 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bhi.s loc_1A8F44 + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$22,ChestIndex(a5) + move.w #$0017,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8F44: ; CODE XREF: sub_1A8EDE+10j + ; sub_1A8EDE+2Aj ... + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1A8F48: ; CODE XREF: sub_1A8EDE+36j + move.b #$23,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A8EDE + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A8F5E: ; CODE XREF: ROM:001A8E40p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A8F86 + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A8F86: ; CODE XREF: sub_1A8F5E+10j + tst.b d0 + rts +; End of function sub_1A8F5E + +; --------------------------------------------------------------------------- + +loc_1A8F8A: ; CODE XREF: ROM:001A8DCEj + andi.b #$0F,d0 + beq.s loc_1A8FAC + cmpi.b #$01,d0 + beq.w loc_1A9034 + cmpi.b #$02,d0 + beq.w loc_1A9066 + cmpi.b #$03,d0 + beq.w loc_1A903A + bra.w loc_1A903A +; --------------------------------------------------------------------------- + +loc_1A8FAC: ; CODE XREF: ROM:001A8F8Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Unicorn2 + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.w EnemyAI_Unicorn2 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.w EnemyAI_Unicorn2 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.b #$0F,d0 + bne.s loc_1A9020 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcs.w loc_1A8EC0 + +loc_1A9020: ; CODE XREF: ROM:001A900Cj + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + lsl.w #$04,d0 + addi.w #$0300,d0 + move.w d0,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A9034: ; CODE XREF: ROM:001A8F94j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A903A: ; CODE XREF: ROM:001A8FA4j + ; ROM:001A8FA8j + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0100,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s loc_1A9060 + bra.w EnemyAI_Unicorn2 +; --------------------------------------------------------------------------- + +loc_1A9060: ; CODE XREF: ROM:001A905Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9066: ; CODE XREF: ROM:001A8F9Cj + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/unicorn3.asm b/code/gamelogic/ai/enemies/unicorn3.asm new file mode 100644 index 0000000..85651a6 --- /dev/null +++ b/code/gamelogic/ai/enemies/unicorn3.asm @@ -0,0 +1,268 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn3_B: ; CODE XREF: ROM:001A8562j + bra.s EnemyAI_Unicorn3 +; --------------------------------------------------------------------------- + +EnemyAI_Unicorn3_A: ; CODE XREF: ROM:001A855Ej + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + btst #$01,Flags2(a5) + bne.s loc_1A9092 + move.b ChestIndex(a5),d0 + beq.s loc_1A9098 + cmpi.b #$10,d0 + beq.s loc_1A90DE + bra.w loc_1A924A +; --------------------------------------------------------------------------- + +loc_1A9092: ; CODE XREF: ROM:001A9080j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9098: ; CODE XREF: ROM:001A9086j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0030,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Unicorn3 + rts + +; =============== S U B R O U T I N E ======================================= + + +EnemyAI_Unicorn3: ; CODE XREF: ROM:EnemyAI_Unicorn3_Bj + ; ROM:001A90BCj ... + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + rts +; End of function EnemyAI_Unicorn3 + +; --------------------------------------------------------------------------- + +loc_1A90DE: ; CODE XREF: ROM:001A908Cj + tst.b (byte_FF1142).l + bne.s loc_1A910A + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A911A + bcs.s loc_1A9104 + bsr.w sub_1A919E + bcs.s loc_1A9104 + bsr.w sub_1A921E + +loc_1A9104: ; CODE XREF: ROM:001A90F8j + ; ROM:001A90FEj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A910A: ; CODE XREF: ROM:001A90E4j + move.w #$0006,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A911A: ; CODE XREF: ROM:001A90F6p + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.s loc_1A919A + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1A919A + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A9196 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bls.w loc_1A9180 + move.b #$20,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9180: ; CODE XREF: sub_1A911A+4Cj + ; ROM:001A92DCj + move.b #$21,ChestIndex(a5) + move.w #$0018,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9196: ; CODE XREF: sub_1A911A+3Cj + bsr.w EnemyAI_Unicorn3 + +loc_1A919A: ; CODE XREF: sub_1A911A+10j + ; sub_1A911A+22j + tst.b d0 + rts +; End of function sub_1A911A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A919E: ; CODE XREF: ROM:001A90FAp + move.w #$0028,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9204 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.s loc_1A9204 + move.b (Player_AnimAction).l,d0 + andi.b #$07,d0 + beq.w loc_1A9208 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #$0050,d7 + bhi.s loc_1A9204 + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$22,ChestIndex(a5) + move.w #$0017,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9204: ; CODE XREF: sub_1A919E+10j + ; sub_1A919E+2Aj ... + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1A9208: ; CODE XREF: sub_1A919E+36j + move.b #$23,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A919E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A921E: ; CODE XREF: ROM:001A9100p + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1A9246 + move.b #$24,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A9246: ; CODE XREF: sub_1A921E+10j + tst.b d0 + rts +; End of function sub_1A921E + +; --------------------------------------------------------------------------- + +loc_1A924A: ; CODE XREF: ROM:001A908Ej + andi.b #$0F,d0 + beq.s loc_1A926C + cmpi.b #$01,d0 + beq.w loc_1A92F4 + cmpi.b #$02,d0 + beq.w loc_1A9326 + cmpi.b #$03,d0 + beq.w loc_1A92FA + bra.w loc_1A92FA +; --------------------------------------------------------------------------- + +loc_1A926C: ; CODE XREF: ROM:001A924Ej + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0040,d5 + move.w #$0040,d6 + move.w #$0040,d7 + bsr.w sub_1A8964 + bcc.w EnemyAI_Unicorn3 + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.w EnemyAI_Unicorn3 + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + eori.b #$80,d0 + move.b (Player_RotationAndSize).l,d1 + andi.b #$C0,d1 + cmp.b d0,d1 + bne.w EnemyAI_Unicorn3 + addq.b #$01,Unk0D(a5) + move.b Unk0D(a5),d0 + andi.b #$0F,d0 + bne.s loc_1A92E0 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00030,d7 + bcs.w loc_1A9180 + +loc_1A92E0: ; CODE XREF: ROM:001A92CCj + move.b Unk0D(a5),d0 + andi.w #$0010,d0 + lsl.w #$04,d0 + addi.w #$0200,d0 + move.w d0,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A92F4: ; CODE XREF: ROM:001A9254j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A92FA: ; CODE XREF: ROM:001A9264j + ; ROM:001A9268j + addq.b #$01,Unk0D(a5) + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0100,QueuedAction(a5) + cmpi.b #$10,Unk0D(a5) + bcs.s loc_1A9320 + bra.w EnemyAI_Unicorn3 +; --------------------------------------------------------------------------- + +loc_1A9320: ; CODE XREF: ROM:001A931Aj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A9326: ; CODE XREF: ROM:001A925Cj + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + bsr.w j_j_OnTick + rts diff --git a/code/gamelogic/ai/enemies/worm1.asm b/code/gamelogic/ai/enemies/worm1.asm new file mode 100644 index 0000000..4b11dcb --- /dev/null +++ b/code/gamelogic/ai/enemies/worm1.asm @@ -0,0 +1,363 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Worm1_B: ; CODE XREF: ROM:001A84C2j + bra.s EnemyAI_Worm1 +; --------------------------------------------------------------------------- + +EnemyAI_Worm1_A: ; CODE XREF: ROM:001A84BEj + btst #$01,Flags2(a5) + bne.s loc_1A5394 + move.b ChestIndex(a5),d0 + beq.s loc_1A539A + cmpi.b #$10,d0 + beq.s loc_1A53E0 + bra.w loc_1A558A +; --------------------------------------------------------------------------- + +loc_1A5394: ; CODE XREF: ROM:001A5382j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A539A: ; CODE XREF: ROM:001A5388j + move.w Z(a5),HitBoxZEnd(a5) + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Worm1 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Worm1: ; CODE XREF: ROM:EnemyAI_Worm1_Bj + ; ROM:001A53C4j ... + move.w #$0005,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A53E0: ; CODE XREF: ROM:001A538Ej + tst.b (byte_FF1142).l + bne.s loc_1A5414 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A5424 + bcs.s loc_1A540E + bsr.w sub_1A548A + bcs.w loc_1A558A + bsr.w sub_1A54F4 + bcs.s loc_1A540E + bsr.w sub_1A5550 + +loc_1A540E: ; CODE XREF: ROM:001A53FAj + ; ROM:001A5408j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5414: ; CODE XREF: ROM:001A53E6j + move.w #$0005,$00000034(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5424: ; CODE XREF: ROM:001A53F8p + +; FUNCTION CHUNK AT 001A5486 SIZE 00000004 BYTES + + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A5486 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5486 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5486 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5486 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A5486 +; End of function sub_1A5424 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A546C: ; CODE XREF: sub_1A548A+46j + ; sub_1A54F4+3Aj ... + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A546C + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A5424 + +loc_1A5486: ; CODE XREF: sub_1A5424+8j + ; sub_1A5424+12j ... + tst.b d0 + rts +; END OF FUNCTION CHUNK FOR sub_1A5424 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A548A: ; CODE XREF: ROM:001A53FCp + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A54F0 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A54F0 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A54F0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A54F0 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s sub_1A546C + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$01,d0 + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A54F0: ; CODE XREF: sub_1A548A+8j + ; sub_1A548A+1Cj ... + tst.b d0 + rts +; End of function sub_1A548A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A54F4: ; CODE XREF: ROM:001A5404p + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcc.s loc_1A554C + move.w #$0018,d5 + move.w #$0018,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcs.s loc_1A554C + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1A554C + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A546C + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A554C: ; CODE XREF: sub_1A54F4+10j + ; sub_1A54F4+22j ... + tst.b d0 + rts +; End of function sub_1A54F4 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5550: ; CODE XREF: ROM:001A540Ap + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5586 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A546C + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5586: ; CODE XREF: sub_1A5550+10j + tst.b d0 + rts +; End of function sub_1A5550 + +; --------------------------------------------------------------------------- + +loc_1A558A: ; CODE XREF: ROM:001A5390j + ; ROM:001A5400j + andi.b #$0F,d0 + beq.s loc_1A55A8 + cmpi.b #$01,d0 + beq.w loc_1A5638 + cmpi.b #$02,d0 + beq.w loc_1A56BA + cmpi.b #$03,d0 + bra.w loc_1A56BA +; --------------------------------------------------------------------------- + +loc_1A55A8: ; CODE XREF: ROM:001A558Ej + ; ROM:001A56C6j + tst.b Unk0D(a5) + bne.s loc_1A55CE + move.b #$18,d0 + subq.b #$01,d0 + add.b d0,HitBoxSubZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1A55C8 + move.w Z(a5),HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A55C8: ; CODE XREF: ROM:001A55BEj + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + +loc_1A55CE: ; CODE XREF: ROM:001A55ACj + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A55E8 + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A55E8: ; CODE XREF: ROM:001A55D8j + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A55FE + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A55FE: ; CODE XREF: ROM:001A55EEj + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A5614 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5614: ; CODE XREF: ROM:001A5604j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A562A + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A562A: ; CODE XREF: ROM:001A561Aj + cmpi.b #$32,Unk0D(a5) + bne.w locret_1A56B8 + bra.w EnemyAI_Worm1 +; --------------------------------------------------------------------------- + +loc_1A5638: ; CODE XREF: ROM:001A5594j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A5658 + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5658: ; CODE XREF: ROM:001A5642j + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A566E + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A566E: ; CODE XREF: ROM:001A565Ej + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A5684 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5684: ; CODE XREF: ROM:001A5674j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A569A + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A569A: ; CODE XREF: ROM:001A568Aj + cmpi.b #$28,Unk0D(a5) + bne.s locret_1A56B8 + move.b #$FF,Action1(a5) + move.w #$0020,PrevAction(a5) + move.w Z(a5),HitBoxZEnd(a5) + bra.w EnemyAI_Worm1 +; --------------------------------------------------------------------------- + +locret_1A56B8: ; CODE XREF: ROM:001A5630j + ; ROM:001A56A0j + rts +; --------------------------------------------------------------------------- + +loc_1A56BA: ; CODE XREF: ROM:001A559Cj + ; ROM:001A55A4j + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A56CA + bsr.w sub_1A546C + bra.w loc_1A55A8 +; --------------------------------------------------------------------------- + +loc_1A56CA: ; CODE XREF: ROM:001A56C0j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A570C + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A570C + clr.w QueuedAction(a5) + clr.w PrevAction(a5) + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Worm1 +; --------------------------------------------------------------------------- + +locret_1A570C: ; CODE XREF: ROM:001A56DAj + ; ROM:001A56F8j + rts diff --git a/code/gamelogic/ai/enemies/worm2.asm b/code/gamelogic/ai/enemies/worm2.asm new file mode 100644 index 0000000..da4b6bb --- /dev/null +++ b/code/gamelogic/ai/enemies/worm2.asm @@ -0,0 +1,408 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Worm2_B: ; CODE XREF: ROM:001A84CAj + bra.s EnemyAI_Worm2 +; --------------------------------------------------------------------------- + +EnemyAI_Worm2_A: ; CODE XREF: ROM:001A84C6j + btst #$01,Flags2(a5) + bne.s loc_1A5728 + move.b ChestIndex(a5),d0 + beq.s loc_1A572E + cmpi.b #$10,d0 + beq.s loc_1A5774 + bra.w loc_1A591E +; --------------------------------------------------------------------------- + +loc_1A5728: ; CODE XREF: ROM:001A5716j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A572E: ; CODE XREF: ROM:001A571Cj + move.w Z(a5),HitBoxZEnd(a5) + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Worm2 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Worm2: ; CODE XREF: ROM:EnemyAI_Worm2_Bj + ; ROM:001A5758j ... + move.w #$0005,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5774: ; CODE XREF: ROM:001A5722j + tst.b (byte_FF1142).l + bne.s loc_1A57A8 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1A57B8 + bcs.s loc_1A57A2 + bsr.w sub_1A581E + bcs.w loc_1A591E + bsr.w sub_1A5888 + bcs.s loc_1A57A2 + bsr.w sub_1A58E4 + +loc_1A57A2: ; CODE XREF: ROM:001A578Ej + ; ROM:001A579Cj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A57A8: ; CODE XREF: ROM:001A577Aj + move.w #$0005,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A57B8: ; CODE XREF: ROM:001A578Cp + +; FUNCTION CHUNK AT 001A581A SIZE 00000004 BYTES + + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A581A + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A581A + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A581A + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A581A + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A581A +; End of function sub_1A57B8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5800: ; CODE XREF: sub_1A581E+46j + ; sub_1A5888+3Aj ... + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A5800 + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A57B8 + +loc_1A581A: ; CODE XREF: sub_1A57B8+8j + ; sub_1A57B8+12j ... + tst.b d0 + rts +; END OF FUNCTION CHUNK FOR sub_1A57B8 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A581E: ; CODE XREF: ROM:001A5790p + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A5884 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5884 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5884 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00043,d7 + bhi.s loc_1A5884 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s sub_1A5800 + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$01,d0 + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5884: ; CODE XREF: sub_1A581E+8j + ; sub_1A581E+1Cj ... + tst.b d0 + rts +; End of function sub_1A581E + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5888: ; CODE XREF: ROM:001A5798p + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcc.s loc_1A58E0 + move.w #$0018,d5 + move.w #$0018,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcs.s loc_1A58E0 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00031,d7 + bhi.s loc_1A58E0 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A5800 + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A58E0: ; CODE XREF: sub_1A5888+10j + ; sub_1A5888+22j ... + tst.b d0 + rts +; End of function sub_1A5888 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A58E4: ; CODE XREF: ROM:001A579Ep + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A591A + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A5800 + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A591A: ; CODE XREF: sub_1A58E4+10j + tst.b d0 + rts +; End of function sub_1A58E4 + +; --------------------------------------------------------------------------- + +loc_1A591E: ; CODE XREF: ROM:001A5724j + ; ROM:001A5794j + andi.b #$0F,d0 + beq.s loc_1A593C + cmpi.b #$01,d0 + beq.w loc_1A59CC + cmpi.b #$02,d0 + beq.w loc_1A5A4E + cmpi.b #$03,d0 + bra.w loc_1A5AC8 +; --------------------------------------------------------------------------- + +loc_1A593C: ; CODE XREF: ROM:001A5922j + ; ROM:001A5A5Aj ... + tst.b Unk0D(a5) + bne.s loc_1A5962 + move.b #$18,d0 + subq.b #$01,d0 + add.b d0,HitBoxSubZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1A595C + move.w Z(a5),HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A595C: ; CODE XREF: ROM:001A5952j + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + +loc_1A5962: ; CODE XREF: ROM:001A5940j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A597C + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A597C: ; CODE XREF: ROM:001A596Cj + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A5992 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5992: ; CODE XREF: ROM:001A5982j + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A59A8 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A59A8: ; CODE XREF: ROM:001A5998j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A59BE + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A59BE: ; CODE XREF: ROM:001A59AEj + cmpi.b #$32,Unk0D(a5) + bne.w locret_1A5A4C + bra.w EnemyAI_Worm2 +; --------------------------------------------------------------------------- + +loc_1A59CC: ; CODE XREF: ROM:001A5928j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A59EC + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A59EC: ; CODE XREF: ROM:001A59D6j + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A5A02 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5A02: ; CODE XREF: ROM:001A59F2j + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A5A18 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5A18: ; CODE XREF: ROM:001A5A08j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A5A2E + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5A2E: ; CODE XREF: ROM:001A5A1Ej + cmpi.b #$28,Unk0D(a5) + bne.s locret_1A5A4C + move.b #$FF,Action1(a5) + move.w #$0020,PrevAction(a5) + move.w Z(a5),HitBoxZEnd(a5) + bra.w EnemyAI_Worm2 +; --------------------------------------------------------------------------- + +locret_1A5A4C: ; CODE XREF: ROM:001A59C4j + ; ROM:001A5A34j + rts +; --------------------------------------------------------------------------- + +loc_1A5A4E: ; CODE XREF: ROM:001A5930j + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5A5E + bsr.w sub_1A5800 + bra.w loc_1A593C +; --------------------------------------------------------------------------- + +loc_1A5A5E: ; CODE XREF: ROM:001A5A54j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0C,Unk0D(a5) + bcs.w locret_1A5B1A + move.w #$0500,QueuedAction(a5) + move.w #$0018,d1 + move.w #$0000,d2 + move.w #$0008,d3 + bsr.w sub_1A880C + bcc.s loc_1A5AAC + cmpi.b #$0C,Unk0D(a5) + bne.s loc_1A5AAC + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.b #040,d7 + bcc.s locret_1A5AC6 + move.b #STATUS_POISON,d0 + bsr.w j_j_AddStatusEffect + bra.s locret_1A5AC6 +; --------------------------------------------------------------------------- + +loc_1A5AAC: ; CODE XREF: ROM:001A5A88j + ; ROM:001A5A90j + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A5AC6 + move.w #$0600,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A5AC6 + bra.w loc_1A5B08 +; --------------------------------------------------------------------------- + +locret_1A5AC6: ; CODE XREF: ROM:001A5AA0j + ; ROM:001A5AAAj ... + rts +; --------------------------------------------------------------------------- + +loc_1A5AC8: ; CODE XREF: ROM:001A5938j + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5AD8 + bsr.w sub_1A5800 + bra.w loc_1A593C +; --------------------------------------------------------------------------- + +loc_1A5AD8: ; CODE XREF: ROM:001A5ACEj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A5B1A + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A5B1A + +loc_1A5B08: ; CODE XREF: ROM:001A5AC2j + clr.w QueuedAction(a5) + clr.w PrevAction(a5) + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Worm2 +; --------------------------------------------------------------------------- + +locret_1A5B1A: ; CODE XREF: ROM:001A5A6Ej + ; ROM:001A5AE8j ... + rts diff --git a/code/gamelogic/ai/enemies/worm3.asm b/code/gamelogic/ai/enemies/worm3.asm new file mode 100644 index 0000000..1552975 --- /dev/null +++ b/code/gamelogic/ai/enemies/worm3.asm @@ -0,0 +1,415 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Worm3_B: ; CODE XREF: ROM:001A84D2j + bra.s EnemyAI_Worm3 +; --------------------------------------------------------------------------- + +EnemyAI_Worm3_A: ; CODE XREF: ROM:001A84CEj + btst #$01,Flags2(a5) + bne.s loc_1A5B36 + move.b ChestIndex(a5),d0 + beq.s loc_1A5B3C + cmpi.b #$10,d0 + beq.s loc_1A5B82 + bra.w loc_1A5D2C +; --------------------------------------------------------------------------- + +loc_1A5B36: ; CODE XREF: ROM:001A5B24j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5B3C: ; CODE XREF: ROM:001A5B2Aj + move.w Z(a5),HitBoxZEnd(a5) + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0050,d5 + move.w #$0010,d6 + move.w #$0020,d7 + bsr.w sub_1A8964 + bcs.s EnemyAI_Worm3 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Worm3: ; CODE XREF: ROM:EnemyAI_Worm3_Bj + ; ROM:001A5B66j ... + move.w #$0005,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5B82: ; CODE XREF: ROM:001A5B30j + tst.b (byte_FF1142).l + bne.s loc_1A5BB6 + move.w $00000014(a5),(word_FF1800).l + move.w $00000016(a5),(dword_FF1804).l + bsr.s sub_1A5BC6 + bcs.s loc_1A5BB0 + bsr.w sub_1A5C2C + bcs.w loc_1A5D2C + bsr.w sub_1A5C96 + bcs.s loc_1A5BB0 + bsr.w sub_1A5CF2 + +loc_1A5BB0: ; CODE XREF: ROM:001A5B9Cj + ; ROM:001A5BAAj + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1A5BB6: ; CODE XREF: ROM:001A5B88j + move.w #$0005,$00000034(a5) + bsr.w j_j_LoadSpriteBehaviour + bsr.w j_j_OnTick + rts + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5BC6: ; CODE XREF: ROM:001A5B9Ap + +; FUNCTION CHUNK AT 001A5C28 SIZE 00000004 BYTES + + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A5C28 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5C28 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5C28 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5C28 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1A5C28 +; End of function sub_1A5BC6 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5C0E: ; CODE XREF: sub_1A5C2C+46j + ; sub_1A5C96+3Aj ... + move.b #$20,ChestIndex(a5) + move.w #$0013,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; End of function sub_1A5C0E + +; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A5BC6 + +loc_1A5C28: ; CODE XREF: sub_1A5BC6+8j + ; sub_1A5BC6+12j ... + tst.b d0 + rts +; END OF FUNCTION CHUNK FOR sub_1A5BC6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5C2C: ; CODE XREF: ROM:001A5B9Ep + move.b AnimAction1(a5),d0 + andi.b #$30,d0 + bne.w loc_1A5C92 + move.w #$0038,d5 + move.w #$0038,d6 + move.w #$0038,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5C92 + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5C92 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bhi.s loc_1A5C92 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.s sub_1A5C0E + move.b #$21,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + clr.b Unk0D(a5) + bsr.w j_j_LoadSpriteBehaviour + move.b #$01,d0 + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5C92: ; CODE XREF: sub_1A5C2C+8j + ; sub_1A5C2C+1Cj ... + tst.b d0 + rts +; End of function sub_1A5C2C + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5C96: ; CODE XREF: ROM:001A5BA6p + move.w #$0028,d5 + move.w #$0028,d6 + move.w #$0028,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5CEE + move.w #$0018,d5 + move.w #$0018,d6 + move.w #$0018,d7 + bsr.w sub_1A8964 + bcs.s loc_1A5CEE + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00037,d7 + bhi.s loc_1A5CEE + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A5C0E + move.b #$22,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5CEE: ; CODE XREF: sub_1A5C96+10j + ; sub_1A5C96+22j ... + tst.b d0 + rts +; End of function sub_1A5C96 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1A5CF2: ; CODE XREF: ROM:001A5BACp + move.w #$0018,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1A5D28 + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + beq.w sub_1A5C0E + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1A5D28: ; CODE XREF: sub_1A5CF2+10j + tst.b d0 + rts +; End of function sub_1A5CF2 + +; --------------------------------------------------------------------------- + +loc_1A5D2C: ; CODE XREF: ROM:001A5B32j + ; ROM:001A5BA2j + andi.b #$0F,d0 + beq.s loc_1A5D4A + cmpi.b #$01,d0 + beq.w loc_1A5DDA + cmpi.b #$02,d0 + beq.w loc_1A5E5C + cmpi.b #$03,d0 + bra.w loc_1A5EE4 +; --------------------------------------------------------------------------- + +loc_1A5D4A: ; CODE XREF: ROM:001A5D30j + ; ROM:001A5E68j ... + tst.b Unk0D(a5) + bne.s loc_1A5D70 + move.b #$18,d0 + subq.b #$01,d0 + add.b d0,HitBoxSubZEnd(a5) + jsr (sub_3BC).l + bcc.s loc_1A5D6A + move.w Z(a5),HitBoxZEnd(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5D6A: ; CODE XREF: ROM:001A5D60j + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + +loc_1A5D70: ; CODE XREF: ROM:001A5D4Ej + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A5D8A + move.b #$FF,Action1(a5) + move.w #$0040,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5D8A: ; CODE XREF: ROM:001A5D7Aj + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A5DA0 + move.b #$FF,Action1(a5) + move.w #$0080,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5DA0: ; CODE XREF: ROM:001A5D90j + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A5DB6 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5DB6: ; CODE XREF: ROM:001A5DA6j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A5DCC + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5DCC: ; CODE XREF: ROM:001A5DBCj + cmpi.b #$32,Unk0D(a5) + bne.w locret_1A5E5A + bra.w EnemyAI_Worm3 +; --------------------------------------------------------------------------- + +loc_1A5DDA: ; CODE XREF: ROM:001A5D36j + addq.b #$01,Unk0D(a5) + cmpi.b #$01,Unk0D(a5) + bne.s loc_1A5DFA + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + move.b #$FF,Action1(a5) + move.w #$0100,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5DFA: ; CODE XREF: ROM:001A5DE4j + cmpi.b #$0A,Unk0D(a5) + bne.s loc_1A5E10 + move.b #$FF,Action1(a5) + move.w #$00C0,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5E10: ; CODE XREF: ROM:001A5E00j + cmpi.b #$14,Unk0D(a5) + bne.s loc_1A5E26 + move.b #$FF,Action1(a5) + move.w #$0140,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5E26: ; CODE XREF: ROM:001A5E16j + cmpi.b #$1E,Unk0D(a5) + bne.s loc_1A5E3C + move.b #$FF,Action1(a5) + move.w #$0180,PrevAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1A5E3C: ; CODE XREF: ROM:001A5E2Cj + cmpi.b #$28,Unk0D(a5) + bne.s locret_1A5E5A + move.b #$FF,Action1(a5) + move.w #$0020,PrevAction(a5) + move.w Z(a5),HitBoxZEnd(a5) + bra.w EnemyAI_Worm3 +; --------------------------------------------------------------------------- + +locret_1A5E5A: ; CODE XREF: ROM:001A5DD2j + ; ROM:001A5E42j + rts +; --------------------------------------------------------------------------- + +loc_1A5E5C: ; CODE XREF: ROM:001A5D3Ej + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5E6C + bsr.w sub_1A5C0E + bra.w loc_1A5D4A +; --------------------------------------------------------------------------- + +loc_1A5E6C: ; CODE XREF: ROM:001A5E62j + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0C,Unk0D(a5) + bcs.w locret_1A5F36 + move.w #$0500,QueuedAction(a5) + move.w #$0020,d1 + move.w #$0000,d2 + move.w #$0008,d3 + bsr.w sub_1A880C + bcc.s loc_1A5EC8 + cmpi.b #$0C,Unk0D(a5) + bne.s loc_1A5EC8 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + move.b #STATUS_POISON,d0 + cmpi.b #010,d7 + bcs.s loc_1A5EC2 + move.b #STATUS_PARALYSIS,d0 + cmpi.b #010,d7 + bcs.s loc_1A5EC2 + move.b #STATUS_CONFUSION,d0 + +loc_1A5EC2: ; CODE XREF: ROM:001A5EB2j + ; ROM:001A5EBCj + bsr.w j_j_AddStatusEffect + bra.s locret_1A5EE2 +; --------------------------------------------------------------------------- + +loc_1A5EC8: ; CODE XREF: ROM:001A5E96j + ; ROM:001A5E9Ej + cmpi.b #$18,Unk0D(a5) + bcs.s locret_1A5EE2 + move.w #$0600,QueuedAction(a5) + cmpi.b #$20,Unk0D(a5) + bcs.s locret_1A5EE2 + bra.w loc_1A5F24 +; --------------------------------------------------------------------------- + +locret_1A5EE2: ; CODE XREF: ROM:001A5EC6j + ; ROM:001A5ECEj ... + rts +; --------------------------------------------------------------------------- + +loc_1A5EE4: ; CODE XREF: ROM:001A5D46j + btst #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bne.s loc_1A5EF4 + bsr.w sub_1A5C0E + bra.w loc_1A5D4A +; --------------------------------------------------------------------------- + +loc_1A5EF4: ; CODE XREF: ROM:001A5EEAj + move.w #$0300,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1A5F36 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0400,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1A5F36 + +loc_1A5F24: ; CODE XREF: ROM:001A5EDEj + clr.w QueuedAction(a5) + clr.w PrevAction(a5) + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w EnemyAI_Worm3 +; --------------------------------------------------------------------------- + +locret_1A5F36: ; CODE XREF: ROM:001A5E7Cj + ; ROM:001A5F04j ... + rts diff --git a/code/gamelogic/ai/enemies/zak.asm b/code/gamelogic/ai/enemies/zak.asm new file mode 100644 index 0000000..8169ff0 --- /dev/null +++ b/code/gamelogic/ai/enemies/zak.asm @@ -0,0 +1,387 @@ +; --------------------------------------------------------------------------- + +EnemyAI_Zak_B_0: ; CODE XREF: ROM:001A8622j + bra.s EnemyAI_Zak +; --------------------------------------------------------------------------- + +EnemyAI_Zak_A_0: ; CODE XREF: ROM:001A861Ej + btst #$01,Flags2(a5) + bne.s loc_1ACD20 + move.b ChestIndex(a5),d0 + beq.s loc_1ACD26 + cmpi.b #$10,d0 + beq.s loc_1ACD5E + bra.w loc_1ACEFC +; --------------------------------------------------------------------------- + +loc_1ACD20: ; CODE XREF: ROM:001ACD0Ej + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACD26: ; CODE XREF: ROM:001ACD14j + bsr.w j_j_OnTick + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + move.w #$0060,d5 + move.w #$0040,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s sub_1ACD54 + rts +; --------------------------------------------------------------------------- + +EnemyAI_Zak: ; CODE XREF: ROM:EnemyAI_Zak_B_0j + bsr.s sub_1ACD54 + bra.w loc_1ACE0C + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACD54: ; CODE XREF: ROM:001ACD4Aj + ; ROM:EnemyAI_Zakp ... + +; FUNCTION CHUNK AT 001A8AB6 SIZE 00000018 BYTES + + bset #$08,FallRate(a5) + bra.w loc_1A8AB6 +; End of function sub_1ACD54 + +; --------------------------------------------------------------------------- + +loc_1ACD5E: ; CODE XREF: ROM:001ACD1Aj + tst.b (byte_FF1142).l + bne.s loc_1ACD94 + move.w CentreX(a5),(word_FF1800).l + move.w CentreY(a5),(dword_FF1804).l + bsr.s sub_1ACD98 + bcs.s loc_1ACD8E + bsr.s sub_1ACDD8 + bcs.s loc_1ACD8E + bsr.w sub_1ACE2A + bcs.s loc_1ACD8E + bsr.w sub_1ACE66 + bcs.s loc_1ACD8E + bsr.w sub_1ACEA2 + +loc_1ACD8E: ; CODE XREF: ROM:001ACD78j + ; ROM:001ACD7Cj ... + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACD94: ; CODE XREF: ROM:001ACD64j + bra.w loc_1A8AA6 + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACD98: ; CODE XREF: ROM:001ACD76p + move.w #$0080,d5 + move.w #$FFC0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACDD4 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00016,d7 + bhi.s loc_1ACDD4 + move.b #$25,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACDD4: ; CODE XREF: sub_1ACD98+10j + ; sub_1ACD98+20j + tst.b d0 + rts +; End of function sub_1ACD98 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACDD8: ; CODE XREF: ROM:001ACD7Ap + move.w #$0070,d5 + move.w #$0070,d6 + move.w #$0070,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACE26 + move.w #$0030,d5 + move.w #$0030,d6 + move.w #$0030,d7 + bsr.w sub_1A8964 + bcs.s loc_1ACE26 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00016,d7 + bhi.s loc_1ACE26 + +loc_1ACE0C: ; CODE XREF: ROM:001ACD50j + move.b #$20,ChestIndex(a5) + move.w #$0004,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk4D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACE26: ; CODE XREF: sub_1ACDD8+10j + ; sub_1ACDD8+22j ... + tst.b d0 + rts +; End of function sub_1ACDD8 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACE2A: ; CODE XREF: ROM:001ACD7Ep + move.w #$0060,d5 + move.w #$FFD0,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACE62 + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ACE62 + move.b #$21,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACE62: ; CODE XREF: sub_1ACE2A+10j + ; sub_1ACE2A+20j + tst.b d0 + rts +; End of function sub_1ACE2A + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACE66: ; CODE XREF: ROM:001ACD84p + move.w #$0040,d5 + move.w #$0020,d6 + move.w #$0010,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACE9E + move.w #01000,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00012,d7 + bhi.s loc_1ACE9E + move.b #$22,ChestIndex(a5) + move.w #$0011,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACE9E: ; CODE XREF: sub_1ACE66+10j + ; sub_1ACE66+20j + tst.b d0 + rts +; End of function sub_1ACE66 + + +; =============== S U B R O U T I N E ======================================= + + +sub_1ACEA2: ; CODE XREF: ROM:001ACD8Ap + move.w #$0020,d5 + move.w #$0000,d6 + move.w #$0008,d7 + bsr.w sub_1A8964 + bcc.s loc_1ACEF8 + move.w #00100,d6 + jsr (j_GenerateRandomNumber).l + cmpi.w #00050,d7 + bcc.s loc_1ACEDE + move.b #$23,ChestIndex(a5) + move.w #$0000,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACEDE: ; CODE XREF: sub_1ACEA2+20j + move.b #$24,ChestIndex(a5) + move.w #$0012,BehaviourLUTIndex(a5) + bsr.w j_j_LoadSpriteBehaviour + clr.b Unk0D(a5) + ori #$01,ccr + rts +; --------------------------------------------------------------------------- + +loc_1ACEF8: ; CODE XREF: sub_1ACEA2+10j + tst.b d0 + rts +; End of function sub_1ACEA2 + +; --------------------------------------------------------------------------- + +loc_1ACEFC: ; CODE XREF: ROM:001ACD1Cj + andi.b #$0F,d0 + beq.s loc_1ACF26 + cmpi.b #$01,d0 + beq.w loc_1AD014 + cmpi.b #$02,d0 + beq.w loc_1AD014 + cmpi.b #$03,d0 + beq.w loc_1ACFDE + cmpi.b #$04,d0 + beq.w loc_1AD014 + bra.w loc_1AD04E +; --------------------------------------------------------------------------- + +loc_1ACF26: ; CODE XREF: ROM:001ACF00j + addq.b #$01,Unk4D(a5) + cmpi.b #$1F,Unk4D(a5) + bhi.s loc_1ACF6A + bset #$07,FallRate(a5) + addi.w #$0004,Z(a5) + addi.w #$0004,HitBoxZEnd(a5) + move.b Unk4D(a5),d0 + andi.w #$000E,d0 + lsl.w #$07,d0 + move.w d0,QueuedAction(a5) + bsr.w sub_1AC010 + andi.b #$3F,RotationAndSize(a5) + or.b d2,RotationAndSize(a5) + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Slash1 +; --------------------------------------------------------------------------- + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1ACF6A: ; CODE XREF: ROM:001ACF30j + bclr #$07,FallRate(a5) + cmpi.b #$20,Unk4D(a5) + bne.s loc_1ACF98 + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Fall +; --------------------------------------------------------------------------- + move.w #$0002,d6 + jsr (j_GenerateRandomNumber).l + move.w #$0040,d0 + tst.b d7 + beq.s loc_1ACF92 + move.w #$0058,d0 + +loc_1ACF92: ; CODE XREF: ROM:001ACF8Cj + move.w d0,RepeatPtr(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ACF98: ; CODE XREF: ROM:001ACF76j + subq.b #$01,Unk4D(a5) + bclr #$07,FallRate(a5) + move.b Action1(a5),d0 + andi.b #$30,d0 + beq.w loc_1ACFD6 + move.w (Player_Z).l,d0 + add.w RepeatPtr(a5),d0 + cmp.w Z(a5),d0 + bcc.s loc_1ACFCE + move.l (Player_X).l,(a5) + movea.l a5,a1 + jsr (sub_1A8AE6).l + rts +; --------------------------------------------------------------------------- + +loc_1ACFCE: ; CODE XREF: ROM:001ACFBCj + move.w #$0300,QueuedAction(a5) + rts +; --------------------------------------------------------------------------- + +loc_1ACFD6: ; CODE XREF: ROM:001ACFAAj + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_LadderClimb +; --------------------------------------------------------------------------- + bra.w sub_1ACD54 +; --------------------------------------------------------------------------- + +loc_1ACFDE: ; CODE XREF: ROM:001ACF16j + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s locret_1AD012 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s locret_1AD012 + beq.w sub_1ACD54 + +locret_1AD012: ; CODE XREF: ROM:001ACFEEj + ; ROM:001AD00Cj + rts +; --------------------------------------------------------------------------- + +loc_1AD014: ; CODE XREF: ROM:001ACF06j + ; ROM:001ACF0Ej ... + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk0D(a5) + cmpi.b #$0F,Unk0D(a5) + bcs.s loc_1AD048 + move.w #$0019,d1 + move.w #$0009,d2 + move.w #$0009,d3 + bsr.w sub_1A880C + move.w #$0300,QueuedAction(a5) + cmpi.b #$1E,Unk0D(a5) + bcs.s loc_1AD048 + beq.w sub_1ACD54 + +loc_1AD048: ; CODE XREF: ROM:001AD024j + ; ROM:001AD042j + bsr.w j_j_OnTick + rts +; --------------------------------------------------------------------------- + +loc_1AD04E: ; CODE XREF: ROM:001ACF22j + move.w #$0200,QueuedAction(a5) + addq.b #$01,Unk4D(a5) + cmpi.b #$0F,Unk4D(a5) + bcs.s locret_1AD09C + bhi.s loc_1AD09E + move.w #$0300,QueuedAction(a5) + trap #$00 ; Trap00Handler +; --------------------------------------------------------------------------- + dc.w SND_Slash2 +; --------------------------------------------------------------------------- + move.b #$03,d0 + move.w #$1400,d1 + bsr.w sub_1AC474 + bcs.w locret_1AD09C + move.w #$44C0,TileSource(a1) + move.b #$04,Speed(a1) + move.w #$036A,BehaviourLUTIndex(a1) + movem.l a5,-(sp) + movea.l a1,a5 + bsr.w j_j_LoadSpriteBehaviour + movem.l (sp)+,a5 + +locret_1AD09C: ; CODE XREF: ROM:001AD05Ej + ; ROM:001AD078j + rts +; --------------------------------------------------------------------------- + +loc_1AD09E: ; CODE XREF: ROM:001AD060j + move.w #$0300,QueuedAction(a5) + cmpi.b #$3C,Unk4D(a5) + beq.w sub_1ACD54 + rts diff --git a/code/gamelogic/ai/enemies1.asm b/code/gamelogic/ai/enemies1.asm new file mode 100644 index 0000000..92b43b7 --- /dev/null +++ b/code/gamelogic/ai/enemies1.asm @@ -0,0 +1,21 @@ + include "code/gamelogic/ai/enemies/orc1.asm" + include "code/gamelogic/ai/enemies/orc2.asm" + include "code/gamelogic/ai/enemies/orc3.asm" + include "code/gamelogic/ai/enemies/worm1.asm" + include "code/gamelogic/ai/enemies/worm2.asm" + include "code/gamelogic/ai/enemies/worm3.asm" + include "code/gamelogic/ai/enemies/ninja1.asm" + include "code/gamelogic/ai/enemies/ninja2.asm" + include "code/gamelogic/ai/enemies/ninja3.asm" + include "code/gamelogic/ai/enemies/lizard1.asm" + include "code/gamelogic/ai/enemies/lizard2.asm" + include "code/gamelogic/ai/enemies/lizard3.asm" + include "code/gamelogic/ai/enemies/knight1.asm" + include "code/gamelogic/ai/enemies/knight2.asm" + include "code/gamelogic/ai/enemies/knight3.asm" + include "code/gamelogic/ai/enemies/ghost1.asm" + include "code/gamelogic/ai/enemies/ghost2.asm" + include "code/gamelogic/ai/enemies/ghost3.asm" + include "code/gamelogic/ai/enemies/mummy1.asm" + include "code/gamelogic/ai/enemies/mummy2.asm" + include "code/gamelogic/ai/enemies/mummy3.asm" \ No newline at end of file diff --git a/code/gamelogic/ai/enemies2.asm b/code/gamelogic/ai/enemies2.asm new file mode 100644 index 0000000..0691f06 --- /dev/null +++ b/code/gamelogic/ai/enemies2.asm @@ -0,0 +1,2 @@ + include "code/gamelogic/ai/enemies/fireball.asm" + include "code/gamelogic/ai/enemies/ghostgen.asm" \ No newline at end of file diff --git a/code/gamelogic/ai/enemies3.asm b/code/gamelogic/ai/enemies3.asm new file mode 100644 index 0000000..9215c49 --- /dev/null +++ b/code/gamelogic/ai/enemies3.asm @@ -0,0 +1,21 @@ + include "code/gamelogic/ai/enemies/unicorn1.asm" + include "code/gamelogic/ai/enemies/unicorn2.asm" + include "code/gamelogic/ai/enemies/unicorn3.asm" + include "code/gamelogic/ai/enemies/skeleton1.asm" + include "code/gamelogic/ai/enemies/skeleton2.asm" + include "code/gamelogic/ai/enemies/skeleton3.asm" + include "code/gamelogic/ai/enemies/mimic1.asm" + include "code/gamelogic/ai/enemies/mimic2.asm" + include "code/gamelogic/ai/enemies/mimic3.asm" + include "code/gamelogic/ai/enemies/mushroom1.asm" + include "code/gamelogic/ai/enemies/mushroom2.asm" + include "code/gamelogic/ai/enemies/mushroom3.asm" + include "code/gamelogic/ai/enemies/giant1.asm" + include "code/gamelogic/ai/enemies/giant2.asm" + include "code/gamelogic/ai/enemies/giant3.asm" + include "code/gamelogic/ai/enemies/bubble1.asm" + include "code/gamelogic/ai/enemies/bubble2.asm" + include "code/gamelogic/ai/enemies/bubble3.asm" + include "code/gamelogic/ai/enemies/miro.asm" + include "code/gamelogic/ai/enemies/mir.asm" + include "code/gamelogic/ai/enemies/reaper1.asm" \ No newline at end of file diff --git a/code/gamelogic/ai/enemies4.asm b/code/gamelogic/ai/enemies4.asm new file mode 100644 index 0000000..1cc9abb --- /dev/null +++ b/code/gamelogic/ai/enemies4.asm @@ -0,0 +1,17 @@ + include "code/gamelogic/ai/enemies/reaper2.asm" + include "code/gamelogic/ai/enemies/reaper3.asm" + include "code/gamelogic/ai/enemies/duke.asm" + include "code/gamelogic/ai/enemies/zak.asm" + include "code/gamelogic/ai/enemies/golem1.asm" + include "code/gamelogic/ai/enemies/golem2.asm" + include "code/gamelogic/ai/enemies/spectre1.asm" + include "code/gamelogic/ai/enemies/spectre2.asm" + include "code/gamelogic/ai/enemies/spectre3.asm" + include "code/gamelogic/ai/enemies/harpy1.asm" + include "code/gamelogic/ai/enemies/harpy2.asm" + include "code/gamelogic/ai/enemies/harpy3.asm" + include "code/gamelogic/ai/enemies/spinner.asm" + include "code/gamelogic/ai/enemies/ifrit.asm" + include "code/gamelogic/ai/enemies/nole.asm" + include "code/gamelogic/ai/enemies/stonewarrior.asm" + include "code/gamelogic/ai/enemies/gola.asm" \ No newline at end of file diff --git a/code/gamelogic/ai/enemyai1.asm b/code/gamelogic/ai/enemyai1.asm index 870aa58..41ebb24 100644 --- a/code/gamelogic/ai/enemyai1.asm +++ b/code/gamelogic/ai/enemyai1.asm @@ -1,12354 +1,405 @@ -; --------------------------------------------------------------------------- - -EnemyAI_Orc1_B: ; CODE XREF: ROM:001A84AAj - bra.s loc_1A4CD6 -; --------------------------------------------------------------------------- - -EnemyAI_Orc1_A: ; CODE XREF: ROM:loc_1A84A6j - btst #$01,$0000000C(a5) - bne.s loc_1A4CA8 - move.b $00000037(a5),d0 - beq.s loc_1A4CAE - cmpi.b #$10,d0 - beq.s loc_1A4CDA - bra.w loc_1A4E52 -; --------------------------------------------------------------------------- - -loc_1A4CA8: ; CODE XREF: ROM:001A4C96j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A4CAE: ; CODE XREF: ROM:001A4C9Cj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4CD6 - rts -; --------------------------------------------------------------------------- - -loc_1A4CD6: ; CODE XREF: ROM:EnemyAI_Orc1_Bj - ; ROM:001A4CD2j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A4CDA: ; CODE XREF: ROM:001A4CA2j - tst.b (byte_FF1142).l - bne.s loc_1A4D0A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A4D0E - bcs.s loc_1A4D04 - bsr.s sub_1A4D5C - bcs.s loc_1A4D04 - bsr.w sub_1A4DAA - bcs.s loc_1A4D04 - bsr.w sub_1A4DF8 - -loc_1A4D04: ; CODE XREF: ROM:001A4CF4j - ; ROM:001A4CF8j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A4D0A: ; CODE XREF: ROM:001A4CE0j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4D0E: ; CODE XREF: ROM:001A4CF2p - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4D58 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4D58 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A4D58 - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4D58: ; CODE XREF: sub_1A4D0E+10j - ; sub_1A4D0E+22j ... - tst.b d0 - rts -; End of function sub_1A4D0E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4D5C: ; CODE XREF: ROM:001A4CF6p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4DA6 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4DA6 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A4DA6 - move.b #$21,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4DA6: ; CODE XREF: sub_1A4D5C+10j - ; sub_1A4D5C+22j ... - tst.b d0 - rts -; End of function sub_1A4D5C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4DAA: ; CODE XREF: ROM:001A4CFAp - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4DF4 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4DF4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A4DF4 - move.b #$22,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4DF4: ; CODE XREF: sub_1A4DAA+10j - ; sub_1A4DAA+22j ... - tst.b d0 - rts -; End of function sub_1A4DAA - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4DF8: ; CODE XREF: ROM:001A4D00p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4E4E - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1A4E34 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4E34: ; CODE XREF: sub_1A4DF8+20j - move.b #$24,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4E4E: ; CODE XREF: sub_1A4DF8+10j - tst.b d0 - rts -; End of function sub_1A4DF8 - -; --------------------------------------------------------------------------- - -loc_1A4E52: ; CODE XREF: ROM:001A4CA4j - andi.b #$0F,d0 - beq.s loc_1A4E6C - cmpi.b #$01,d0 - beq.s loc_1A4E78 - cmpi.b #$02,d0 - beq.s loc_1A4E78 - cmpi.b #$03,d0 - beq.s loc_1A4E7E - bra.s loc_1A4E7E -; --------------------------------------------------------------------------- - -loc_1A4E6C: ; CODE XREF: ROM:001A4E56j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1A4CD6 - -loc_1A4E78: ; CODE XREF: ROM:001A4E5Cj - ; ROM:001A4E62j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A4E7E: ; CODE XREF: ROM:001A4E68j - ; ROM:001A4E6Aj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A4EB2 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A4EB2 - beq.w loc_1A4CD6 - -locret_1A4EB2: ; CODE XREF: ROM:001A4E8Ej - ; ROM:001A4EACj - rts -; --------------------------------------------------------------------------- - -EnemyAI_Orc2_B: ; CODE XREF: ROM:001A84B2j - bra.s loc_1A4EFC -; --------------------------------------------------------------------------- - -EnemyAI_Orc2_A: ; CODE XREF: ROM:001A84AEj - btst #$01,$0000000C(a5) - bne.s loc_1A4ECE - move.b $00000037(a5),d0 - beq.s loc_1A4ED4 - cmpi.b #$10,d0 - beq.s loc_1A4F00 - bra.w loc_1A5078 -; --------------------------------------------------------------------------- - -loc_1A4ECE: ; CODE XREF: ROM:001A4EBCj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A4ED4: ; CODE XREF: ROM:001A4EC2j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4EFC - rts -; --------------------------------------------------------------------------- - -loc_1A4EFC: ; CODE XREF: ROM:EnemyAI_Orc2_Bj - ; ROM:001A4EF8j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A4F00: ; CODE XREF: ROM:001A4EC8j - tst.b (byte_FF1142).l - bne.s loc_1A4F30 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A4F34 - bcs.s loc_1A4F2A - bsr.s sub_1A4F82 - bcs.s loc_1A4F2A - bsr.w sub_1A4FD0 - bcs.s loc_1A4F2A - bsr.w sub_1A501E - -loc_1A4F2A: ; CODE XREF: ROM:001A4F1Aj - ; ROM:001A4F1Ej ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A4F30: ; CODE XREF: ROM:001A4F06j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4F34: ; CODE XREF: ROM:001A4F18p - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4F7E - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4F7E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1A4F7E - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4F7E: ; CODE XREF: sub_1A4F34+10j - ; sub_1A4F34+22j ... - tst.b d0 - rts -; End of function sub_1A4F34 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4F82: ; CODE XREF: ROM:001A4F1Cp - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A4FCC - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A4FCC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A4FCC - move.b #$21,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A4FCC: ; CODE XREF: sub_1A4F82+10j - ; sub_1A4F82+22j ... - tst.b d0 - rts -; End of function sub_1A4F82 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A4FD0: ; CODE XREF: ROM:001A4F20p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A501A - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A501A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A501A - move.b #$22,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A501A: ; CODE XREF: sub_1A4FD0+10j - ; sub_1A4FD0+22j ... - tst.b d0 - rts -; End of function sub_1A4FD0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A501E: ; CODE XREF: ROM:001A4F26p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5074 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bcc.s loc_1A505A - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A505A: ; CODE XREF: sub_1A501E+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5074: ; CODE XREF: sub_1A501E+10j - tst.b d0 - rts -; End of function sub_1A501E - -; --------------------------------------------------------------------------- - -loc_1A5078: ; CODE XREF: ROM:001A4ECAj - andi.b #$0F,d0 - beq.s loc_1A5092 - cmpi.b #$01,d0 - beq.s loc_1A50E0 - cmpi.b #$02,d0 - beq.s loc_1A50A4 - cmpi.b #$03,d0 - beq.s loc_1A50AA - bra.s loc_1A50E0 -; --------------------------------------------------------------------------- - -loc_1A5092: ; CODE XREF: ROM:001A507Cj - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1A4EFC - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A50A4: ; CODE XREF: ROM:001A5088j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A50AA: ; CODE XREF: ROM:001A508Ej - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A50DE - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A50DE - beq.w loc_1A4EFC - -locret_1A50DE: ; CODE XREF: ROM:001A50BAj - ; ROM:001A50D8j - rts -; --------------------------------------------------------------------------- - -loc_1A50E0: ; CODE XREF: ROM:001A5082j - ; ROM:001A5090j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A5114 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A5114 - beq.w loc_1A4EFC - -loc_1A5114: ; CODE XREF: ROM:001A50F0j - ; ROM:001A510Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Orc3_B: ; CODE XREF: ROM:001A84BAj - bra.s loc_1A5162 -; --------------------------------------------------------------------------- - -EnemyAI_Orc3_A: ; CODE XREF: ROM:001A84B6j - btst #$01,$0000000C(a5) - bne.s loc_1A5134 - move.b $00000037(a5),d0 - beq.s loc_1A513A - cmpi.b #$10,d0 - beq.s loc_1A5166 - bra.w loc_1A52DE -; --------------------------------------------------------------------------- - -loc_1A5134: ; CODE XREF: ROM:001A5122j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A513A: ; CODE XREF: ROM:001A5128j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0040,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5162 - rts -; --------------------------------------------------------------------------- - -loc_1A5162: ; CODE XREF: ROM:EnemyAI_Orc3_Bj - ; ROM:001A515Ej ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A5166: ; CODE XREF: ROM:001A512Ej - tst.b (byte_FF1142).l - bne.s loc_1A5196 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A519A - bcs.s loc_1A5190 - bsr.s sub_1A51E8 - bcs.s loc_1A5190 - bsr.w sub_1A5236 - bcs.s loc_1A5190 - bsr.w sub_1A5284 - -loc_1A5190: ; CODE XREF: ROM:001A5180j - ; ROM:001A5184j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5196: ; CODE XREF: ROM:001A516Cj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A519A: ; CODE XREF: ROM:001A517Ep - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1A51E4 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1A51E4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1A51E4 - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A51E4: ; CODE XREF: sub_1A519A+10j - ; sub_1A519A+22j ... - tst.b d0 - rts -; End of function sub_1A519A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A51E8: ; CODE XREF: ROM:001A5182p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5232 - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5232 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A5232 - move.b #$21,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5232: ; CODE XREF: sub_1A51E8+10j - ; sub_1A51E8+22j ... - tst.b d0 - rts -; End of function sub_1A51E8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5236: ; CODE XREF: ROM:001A5186p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5280 - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5280 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A5280 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5280: ; CODE XREF: sub_1A5236+10j - ; sub_1A5236+22j ... - tst.b d0 - rts -; End of function sub_1A5236 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5284: ; CODE XREF: ROM:001A518Cp - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A52DA - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1A52C0 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A52C0: ; CODE XREF: sub_1A5284+20j - move.b #$24,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A52DA: ; CODE XREF: sub_1A5284+10j - tst.b d0 - rts -; End of function sub_1A5284 - -; --------------------------------------------------------------------------- - -loc_1A52DE: ; CODE XREF: ROM:001A5130j - andi.b #$0F,d0 - beq.s loc_1A52F8 - cmpi.b #$01,d0 - beq.s loc_1A5340 - cmpi.b #$02,d0 - beq.s loc_1A5340 - cmpi.b #$03,d0 - beq.s loc_1A530A - bra.s loc_1A5340 -; --------------------------------------------------------------------------- - -loc_1A52F8: ; CODE XREF: ROM:001A52E2j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1A5162 - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A530A: ; CODE XREF: ROM:001A52F4j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A533E - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A533E - beq.w loc_1A5162 - -locret_1A533E: ; CODE XREF: ROM:001A531Aj - ; ROM:001A5338j - rts -; --------------------------------------------------------------------------- - -loc_1A5340: ; CODE XREF: ROM:001A52E8j - ; ROM:001A52EEj ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A5374 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A5374 - beq.w loc_1A5162 - -loc_1A5374: ; CODE XREF: ROM:001A5350j - ; ROM:001A536Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Worm1_B: ; CODE XREF: ROM:001A84C2j - bra.s loc_1A53C8 -; --------------------------------------------------------------------------- - -EnemyAI_Worm1_A: ; CODE XREF: ROM:001A84BEj - btst #$01,$0000000C(a5) - bne.s loc_1A5394 - move.b $00000037(a5),d0 - beq.s loc_1A539A - cmpi.b #$10,d0 - beq.s loc_1A53E0 - bra.w loc_1A558A -; --------------------------------------------------------------------------- - -loc_1A5394: ; CODE XREF: ROM:001A5382j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A539A: ; CODE XREF: ROM:001A5388j - move.w $00000012(a5),$00000054(a5) - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A53C8 - rts -; --------------------------------------------------------------------------- - -loc_1A53C8: ; CODE XREF: ROM:EnemyAI_Worm1_Bj - ; ROM:001A53C4j ... - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A53E0: ; CODE XREF: ROM:001A538Ej - tst.b (byte_FF1142).l - bne.s loc_1A5414 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A5424 - bcs.s loc_1A540E - bsr.w sub_1A548A - bcs.w loc_1A558A - bsr.w sub_1A54F4 - bcs.s loc_1A540E - bsr.w sub_1A5550 - -loc_1A540E: ; CODE XREF: ROM:001A53FAj - ; ROM:001A5408j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5414: ; CODE XREF: ROM:001A53E6j - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5424: ; CODE XREF: ROM:001A53F8p - -; FUNCTION CHUNK AT 001A5486 SIZE 00000004 BYTES - - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A5486 - btst #$06,$00000038(a5) - bne.s loc_1A5486 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5486 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5486 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A5486 -; End of function sub_1A5424 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A546C: ; CODE XREF: sub_1A548A+46j - ; sub_1A54F4+3Aj ... - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A546C - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A5424 - -loc_1A5486: ; CODE XREF: sub_1A5424+8j - ; sub_1A5424+12j ... - tst.b d0 - rts -; END OF FUNCTION CHUNK FOR sub_1A5424 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A548A: ; CODE XREF: ROM:001A53FCp - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A54F0 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A54F0 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A54F0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A54F0 - btst #$06,$00000038(a5) - beq.s sub_1A546C - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$01,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A54F0: ; CODE XREF: sub_1A548A+8j - ; sub_1A548A+1Cj ... - tst.b d0 - rts -; End of function sub_1A548A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A54F4: ; CODE XREF: ROM:001A5404p - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcc.s loc_1A554C - move.w #$0018,d5 - move.w #$0018,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcs.s loc_1A554C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A554C - btst #$06,$00000038(a5) - beq.w sub_1A546C - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A554C: ; CODE XREF: sub_1A54F4+10j - ; sub_1A54F4+22j ... - tst.b d0 - rts -; End of function sub_1A54F4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5550: ; CODE XREF: ROM:001A540Ap - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5586 - btst #$06,$00000038(a5) - beq.w sub_1A546C - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5586: ; CODE XREF: sub_1A5550+10j - tst.b d0 - rts -; End of function sub_1A5550 - -; --------------------------------------------------------------------------- - -loc_1A558A: ; CODE XREF: ROM:001A5390j - ; ROM:001A5400j - andi.b #$0F,d0 - beq.s loc_1A55A8 - cmpi.b #$01,d0 - beq.w loc_1A5638 - cmpi.b #$02,d0 - beq.w loc_1A56BA - cmpi.b #$03,d0 - bra.w loc_1A56BA -; --------------------------------------------------------------------------- - -loc_1A55A8: ; CODE XREF: ROM:001A558Ej - ; ROM:001A56C6j - tst.b $0000000D(a5) - bne.s loc_1A55CE - move.b #$18,d0 - subq.b #$01,d0 - add.b d0,$00000055(a5) - jsr (sub_3BC).l - bcc.s loc_1A55C8 - move.w $00000012(a5),$00000054(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A55C8: ; CODE XREF: ROM:001A55BEj - bset #$06,$00000038(a5) - -loc_1A55CE: ; CODE XREF: ROM:001A55ACj - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A55E8 - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A55E8: ; CODE XREF: ROM:001A55D8j - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A55FE - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A55FE: ; CODE XREF: ROM:001A55EEj - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A5614 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5614: ; CODE XREF: ROM:001A5604j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A562A - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A562A: ; CODE XREF: ROM:001A561Aj - cmpi.b #$32,$0000000D(a5) - bne.w locret_1A56B8 - bra.w loc_1A53C8 -; --------------------------------------------------------------------------- - -loc_1A5638: ; CODE XREF: ROM:001A5594j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A5658 - bclr #$06,$00000038(a5) - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5658: ; CODE XREF: ROM:001A5642j - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A566E - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A566E: ; CODE XREF: ROM:001A565Ej - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A5684 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5684: ; CODE XREF: ROM:001A5674j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A569A - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A569A: ; CODE XREF: ROM:001A568Aj - cmpi.b #$28,$0000000D(a5) - bne.s locret_1A56B8 - move.b #$FF,$0000002D(a5) - move.w #$0020,$0000002E(a5) - move.w $00000012(a5),$00000054(a5) - bra.w loc_1A53C8 -; --------------------------------------------------------------------------- - -locret_1A56B8: ; CODE XREF: ROM:001A5630j - ; ROM:001A56A0j - rts -; --------------------------------------------------------------------------- - -loc_1A56BA: ; CODE XREF: ROM:001A559Cj - ; ROM:001A55A4j - btst #$06,$00000038(a5) - bne.s loc_1A56CA - bsr.w sub_1A546C - bra.w loc_1A55A8 -; --------------------------------------------------------------------------- - -loc_1A56CA: ; CODE XREF: ROM:001A56C0j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A570C - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A570C - clr.w $0000002C(a5) - clr.w $0000002E(a5) - bset #$06,$00000038(a5) - bra.w loc_1A53C8 -; --------------------------------------------------------------------------- - -locret_1A570C: ; CODE XREF: ROM:001A56DAj - ; ROM:001A56F8j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Worm2_B: ; CODE XREF: ROM:001A84CAj - bra.s loc_1A575C -; --------------------------------------------------------------------------- - -EnemyAI_Worm2_A: ; CODE XREF: ROM:001A84C6j - btst #$01,$0000000C(a5) - bne.s loc_1A5728 - move.b $00000037(a5),d0 - beq.s loc_1A572E - cmpi.b #$10,d0 - beq.s loc_1A5774 - bra.w loc_1A591E -; --------------------------------------------------------------------------- - -loc_1A5728: ; CODE XREF: ROM:001A5716j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A572E: ; CODE XREF: ROM:001A571Cj - move.w $00000012(a5),$00000054(a5) - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A575C - rts -; --------------------------------------------------------------------------- - -loc_1A575C: ; CODE XREF: ROM:EnemyAI_Worm2_Bj - ; ROM:001A5758j ... - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5774: ; CODE XREF: ROM:001A5722j - tst.b (byte_FF1142).l - bne.s loc_1A57A8 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A57B8 - bcs.s loc_1A57A2 - bsr.w sub_1A581E - bcs.w loc_1A591E - bsr.w sub_1A5888 - bcs.s loc_1A57A2 - bsr.w sub_1A58E4 - -loc_1A57A2: ; CODE XREF: ROM:001A578Ej - ; ROM:001A579Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A57A8: ; CODE XREF: ROM:001A577Aj - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A57B8: ; CODE XREF: ROM:001A578Cp - -; FUNCTION CHUNK AT 001A581A SIZE 00000004 BYTES - - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A581A - btst #$06,$00000038(a5) - bne.s loc_1A581A - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A581A - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A581A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A581A -; End of function sub_1A57B8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5800: ; CODE XREF: sub_1A581E+46j - ; sub_1A5888+3Aj ... - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A5800 - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A57B8 - -loc_1A581A: ; CODE XREF: sub_1A57B8+8j - ; sub_1A57B8+12j ... - tst.b d0 - rts -; END OF FUNCTION CHUNK FOR sub_1A57B8 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A581E: ; CODE XREF: ROM:001A5790p - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A5884 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5884 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5884 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$002B,d7 - bhi.s loc_1A5884 - btst #$06,$00000038(a5) - beq.s sub_1A5800 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$01,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5884: ; CODE XREF: sub_1A581E+8j - ; sub_1A581E+1Cj ... - tst.b d0 - rts -; End of function sub_1A581E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5888: ; CODE XREF: ROM:001A5798p - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcc.s loc_1A58E0 - move.w #$0018,d5 - move.w #$0018,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcs.s loc_1A58E0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A58E0 - btst #$06,$00000038(a5) - beq.w sub_1A5800 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A58E0: ; CODE XREF: sub_1A5888+10j - ; sub_1A5888+22j ... - tst.b d0 - rts -; End of function sub_1A5888 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A58E4: ; CODE XREF: ROM:001A579Ep - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A591A - btst #$06,$00000038(a5) - beq.w sub_1A5800 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A591A: ; CODE XREF: sub_1A58E4+10j - tst.b d0 - rts -; End of function sub_1A58E4 - -; --------------------------------------------------------------------------- - -loc_1A591E: ; CODE XREF: ROM:001A5724j - ; ROM:001A5794j - andi.b #$0F,d0 - beq.s loc_1A593C - cmpi.b #$01,d0 - beq.w loc_1A59CC - cmpi.b #$02,d0 - beq.w loc_1A5A4E - cmpi.b #$03,d0 - bra.w loc_1A5AC8 -; --------------------------------------------------------------------------- - -loc_1A593C: ; CODE XREF: ROM:001A5922j - ; ROM:001A5A5Aj ... - tst.b $0000000D(a5) - bne.s loc_1A5962 - move.b #$18,d0 - subq.b #$01,d0 - add.b d0,$00000055(a5) - jsr (sub_3BC).l - bcc.s loc_1A595C - move.w $00000012(a5),$00000054(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A595C: ; CODE XREF: ROM:001A5952j - bset #$06,$00000038(a5) - -loc_1A5962: ; CODE XREF: ROM:001A5940j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A597C - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A597C: ; CODE XREF: ROM:001A596Cj - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A5992 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5992: ; CODE XREF: ROM:001A5982j - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A59A8 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A59A8: ; CODE XREF: ROM:001A5998j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A59BE - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A59BE: ; CODE XREF: ROM:001A59AEj - cmpi.b #$32,$0000000D(a5) - bne.w locret_1A5A4C - bra.w loc_1A575C -; --------------------------------------------------------------------------- - -loc_1A59CC: ; CODE XREF: ROM:001A5928j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A59EC - bclr #$06,$00000038(a5) - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A59EC: ; CODE XREF: ROM:001A59D6j - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A5A02 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5A02: ; CODE XREF: ROM:001A59F2j - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A5A18 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5A18: ; CODE XREF: ROM:001A5A08j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A5A2E - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5A2E: ; CODE XREF: ROM:001A5A1Ej - cmpi.b #$28,$0000000D(a5) - bne.s locret_1A5A4C - move.b #$FF,$0000002D(a5) - move.w #$0020,$0000002E(a5) - move.w $00000012(a5),$00000054(a5) - bra.w loc_1A575C -; --------------------------------------------------------------------------- - -locret_1A5A4C: ; CODE XREF: ROM:001A59C4j - ; ROM:001A5A34j - rts -; --------------------------------------------------------------------------- - -loc_1A5A4E: ; CODE XREF: ROM:001A5930j - btst #$06,$00000038(a5) - bne.s loc_1A5A5E - bsr.w sub_1A5800 - bra.w loc_1A593C -; --------------------------------------------------------------------------- - -loc_1A5A5E: ; CODE XREF: ROM:001A5A54j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0C,$0000000D(a5) - bcs.w locret_1A5B1A - move.w #$0500,$0000002C(a5) - move.w #$0018,d1 - move.w #$0000,d2 - move.w #$0008,d3 - bsr.w sub_1A880C - bcc.s loc_1A5AAC - cmpi.b #$0C,$0000000D(a5) - bne.s loc_1A5AAC - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$28,d7 - bcc.s locret_1A5AC6 - move.b #STATUS_POISON,d0 - bsr.w j_j_AddStatusEffect - bra.s locret_1A5AC6 -; --------------------------------------------------------------------------- - -loc_1A5AAC: ; CODE XREF: ROM:001A5A88j - ; ROM:001A5A90j - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A5AC6 - move.w #$0600,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A5AC6 - bra.w loc_1A5B08 -; --------------------------------------------------------------------------- - -locret_1A5AC6: ; CODE XREF: ROM:001A5AA0j - ; ROM:001A5AAAj ... - rts -; --------------------------------------------------------------------------- - -loc_1A5AC8: ; CODE XREF: ROM:001A5938j - btst #$06,$00000038(a5) - bne.s loc_1A5AD8 - bsr.w sub_1A5800 - bra.w loc_1A593C -; --------------------------------------------------------------------------- - -loc_1A5AD8: ; CODE XREF: ROM:001A5ACEj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A5B1A - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A5B1A - -loc_1A5B08: ; CODE XREF: ROM:001A5AC2j - clr.w $0000002C(a5) - clr.w $0000002E(a5) - bset #$06,$00000038(a5) - bra.w loc_1A575C -; --------------------------------------------------------------------------- - -locret_1A5B1A: ; CODE XREF: ROM:001A5A6Ej - ; ROM:001A5AE8j ... - rts -; --------------------------------------------------------------------------- - -EnemyAI_Worm3_B: ; CODE XREF: ROM:001A84D2j - bra.s loc_1A5B6A -; --------------------------------------------------------------------------- - -EnemyAI_Worm3_A: ; CODE XREF: ROM:001A84CEj - btst #$01,$0000000C(a5) - bne.s loc_1A5B36 - move.b $00000037(a5),d0 - beq.s loc_1A5B3C - cmpi.b #$10,d0 - beq.s loc_1A5B82 - bra.w loc_1A5D2C -; --------------------------------------------------------------------------- - -loc_1A5B36: ; CODE XREF: ROM:001A5B24j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5B3C: ; CODE XREF: ROM:001A5B2Aj - move.w $00000012(a5),$00000054(a5) - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5B6A - rts -; --------------------------------------------------------------------------- - -loc_1A5B6A: ; CODE XREF: ROM:EnemyAI_Worm3_Bj - ; ROM:001A5B66j ... - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5B82: ; CODE XREF: ROM:001A5B30j - tst.b (byte_FF1142).l - bne.s loc_1A5BB6 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A5BC6 - bcs.s loc_1A5BB0 - bsr.w sub_1A5C2C - bcs.w loc_1A5D2C - bsr.w sub_1A5C96 - bcs.s loc_1A5BB0 - bsr.w sub_1A5CF2 - -loc_1A5BB0: ; CODE XREF: ROM:001A5B9Cj - ; ROM:001A5BAAj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5BB6: ; CODE XREF: ROM:001A5B88j - move.w #$0005,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5BC6: ; CODE XREF: ROM:001A5B9Ap - -; FUNCTION CHUNK AT 001A5C28 SIZE 00000004 BYTES - - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A5C28 - btst #$06,$00000038(a5) - bne.s loc_1A5C28 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5C28 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5C28 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1A5C28 -; End of function sub_1A5BC6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5C0E: ; CODE XREF: sub_1A5C2C+46j - ; sub_1A5C96+3Aj ... - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A5C0E - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A5BC6 - -loc_1A5C28: ; CODE XREF: sub_1A5BC6+8j - ; sub_1A5BC6+12j ... - tst.b d0 - rts -; END OF FUNCTION CHUNK FOR sub_1A5BC6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5C2C: ; CODE XREF: ROM:001A5B9Ep - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A5C92 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5C92 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5C92 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bhi.s loc_1A5C92 - btst #$06,$00000038(a5) - beq.s sub_1A5C0E - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$01,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5C92: ; CODE XREF: sub_1A5C2C+8j - ; sub_1A5C2C+1Cj ... - tst.b d0 - rts -; End of function sub_1A5C2C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5C96: ; CODE XREF: ROM:001A5BA6p - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5CEE - move.w #$0018,d5 - move.w #$0018,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5CEE - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1A5CEE - btst #$06,$00000038(a5) - beq.w sub_1A5C0E - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5CEE: ; CODE XREF: sub_1A5C96+10j - ; sub_1A5C96+22j ... - tst.b d0 - rts -; End of function sub_1A5C96 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5CF2: ; CODE XREF: ROM:001A5BACp - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5D28 - btst #$06,$00000038(a5) - beq.w sub_1A5C0E - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5D28: ; CODE XREF: sub_1A5CF2+10j - tst.b d0 - rts -; End of function sub_1A5CF2 - -; --------------------------------------------------------------------------- - -loc_1A5D2C: ; CODE XREF: ROM:001A5B32j - ; ROM:001A5BA2j - andi.b #$0F,d0 - beq.s loc_1A5D4A - cmpi.b #$01,d0 - beq.w loc_1A5DDA - cmpi.b #$02,d0 - beq.w loc_1A5E5C - cmpi.b #$03,d0 - bra.w loc_1A5EE4 -; --------------------------------------------------------------------------- - -loc_1A5D4A: ; CODE XREF: ROM:001A5D30j - ; ROM:001A5E68j ... - tst.b $0000000D(a5) - bne.s loc_1A5D70 - move.b #$18,d0 - subq.b #$01,d0 - add.b d0,$00000055(a5) - jsr (sub_3BC).l - bcc.s loc_1A5D6A - move.w $00000012(a5),$00000054(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5D6A: ; CODE XREF: ROM:001A5D60j - bset #$06,$00000038(a5) - -loc_1A5D70: ; CODE XREF: ROM:001A5D4Ej - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A5D8A - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5D8A: ; CODE XREF: ROM:001A5D7Aj - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A5DA0 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5DA0: ; CODE XREF: ROM:001A5D90j - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A5DB6 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5DB6: ; CODE XREF: ROM:001A5DA6j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A5DCC - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5DCC: ; CODE XREF: ROM:001A5DBCj - cmpi.b #$32,$0000000D(a5) - bne.w locret_1A5E5A - bra.w loc_1A5B6A -; --------------------------------------------------------------------------- - -loc_1A5DDA: ; CODE XREF: ROM:001A5D36j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A5DFA - bclr #$06,$00000038(a5) - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5DFA: ; CODE XREF: ROM:001A5DE4j - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1A5E10 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5E10: ; CODE XREF: ROM:001A5E00j - cmpi.b #$14,$0000000D(a5) - bne.s loc_1A5E26 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5E26: ; CODE XREF: ROM:001A5E16j - cmpi.b #$1E,$0000000D(a5) - bne.s loc_1A5E3C - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A5E3C: ; CODE XREF: ROM:001A5E2Cj - cmpi.b #$28,$0000000D(a5) - bne.s locret_1A5E5A - move.b #$FF,$0000002D(a5) - move.w #$0020,$0000002E(a5) - move.w $00000012(a5),$00000054(a5) - bra.w loc_1A5B6A -; --------------------------------------------------------------------------- - -locret_1A5E5A: ; CODE XREF: ROM:001A5DD2j - ; ROM:001A5E42j - rts -; --------------------------------------------------------------------------- - -loc_1A5E5C: ; CODE XREF: ROM:001A5D3Ej - btst #$06,$00000038(a5) - bne.s loc_1A5E6C - bsr.w sub_1A5C0E - bra.w loc_1A5D4A -; --------------------------------------------------------------------------- - -loc_1A5E6C: ; CODE XREF: ROM:001A5E62j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0C,$0000000D(a5) - bcs.w locret_1A5F36 - move.w #$0500,$0000002C(a5) - move.w #$0020,d1 - move.w #$0000,d2 - move.w #$0008,d3 - bsr.w sub_1A880C - bcc.s loc_1A5EC8 - cmpi.b #$0C,$0000000D(a5) - bne.s loc_1A5EC8 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - move.b #$00,d0 - cmpi.b #$0A,d7 - bcs.s loc_1A5EC2 - move.b #$02,d0 - cmpi.b #$0A,d7 - bcs.s loc_1A5EC2 - move.b #STATUS_CONFUSION,d0 - -loc_1A5EC2: ; CODE XREF: ROM:001A5EB2j - ; ROM:001A5EBCj - bsr.w j_j_AddStatusEffect - bra.s locret_1A5EE2 -; --------------------------------------------------------------------------- - -loc_1A5EC8: ; CODE XREF: ROM:001A5E96j - ; ROM:001A5E9Ej - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A5EE2 - move.w #$0600,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A5EE2 - bra.w loc_1A5F24 -; --------------------------------------------------------------------------- - -locret_1A5EE2: ; CODE XREF: ROM:001A5EC6j - ; ROM:001A5ECEj ... - rts -; --------------------------------------------------------------------------- - -loc_1A5EE4: ; CODE XREF: ROM:001A5D46j - btst #$06,$00000038(a5) - bne.s loc_1A5EF4 - bsr.w sub_1A5C0E - bra.w loc_1A5D4A -; --------------------------------------------------------------------------- - -loc_1A5EF4: ; CODE XREF: ROM:001A5EEAj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A5F36 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A5F36 - -loc_1A5F24: ; CODE XREF: ROM:001A5EDEj - clr.w $0000002C(a5) - clr.w $0000002E(a5) - bset #$06,$00000038(a5) - bra.w loc_1A5B6A -; --------------------------------------------------------------------------- - -locret_1A5F36: ; CODE XREF: ROM:001A5E7Cj - ; ROM:001A5F04j ... - rts -; --------------------------------------------------------------------------- - -EnemyAI_Ninja1_B: ; CODE XREF: ROM:001A84DAj - bra.s loc_1A5F80 -; --------------------------------------------------------------------------- - -EnemyAI_Ninja1_A: ; CODE XREF: ROM:001A84D6j - btst #$01,$0000000C(a5) - bne.s loc_1A5F52 - move.b $00000037(a5),d0 - beq.s loc_1A5F58 - cmpi.b #$10,d0 - beq.s loc_1A5F84 - bra.w loc_1A60DC -; --------------------------------------------------------------------------- - -loc_1A5F52: ; CODE XREF: ROM:001A5F40j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5F58: ; CODE XREF: ROM:001A5F46j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A5F80 - rts -; --------------------------------------------------------------------------- - -loc_1A5F80: ; CODE XREF: ROM:EnemyAI_Ninja1_Bj - ; ROM:001A5F7Cj ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A5F84: ; CODE XREF: ROM:001A5F4Cj - tst.b (byte_FF1142).l - bne.s loc_1A5FB4 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A5FB8 - bcs.s loc_1A5FAE - bsr.s sub_1A5FF8 - bcs.s loc_1A5FAE - bsr.w sub_1A6034 - bcs.s loc_1A5FAE - bsr.w sub_1A6082 - -loc_1A5FAE: ; CODE XREF: ROM:001A5F9Ej - ; ROM:001A5FA2j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A5FB4: ; CODE XREF: ROM:001A5F8Aj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5FB8: ; CODE XREF: ROM:001A5F9Cp - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1A5FF4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1A5FF4 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A5FF4: ; CODE XREF: sub_1A5FB8+10j - ; sub_1A5FB8+20j - tst.b d0 - rts -; End of function sub_1A5FB8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A5FF8: ; CODE XREF: ROM:001A5FA0p - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6030 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A6030 - move.b #$21,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6030: ; CODE XREF: sub_1A5FF8+10j - ; sub_1A5FF8+20j - tst.b d0 - rts -; End of function sub_1A5FF8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6034: ; CODE XREF: ROM:001A5FA4p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.s loc_1A607E - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1A607E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A607E - move.b #$22,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A607E: ; CODE XREF: sub_1A6034+10j - ; sub_1A6034+22j ... - tst.b d0 - rts -; End of function sub_1A6034 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6082: ; CODE XREF: ROM:001A5FAAp - move.w #$0016,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A60D8 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bcc.s loc_1A60BE - move.b #$23,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A60BE: ; CODE XREF: sub_1A6082+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A60D8: ; CODE XREF: sub_1A6082+10j - tst.b d0 - rts -; End of function sub_1A6082 - -; --------------------------------------------------------------------------- - -loc_1A60DC: ; CODE XREF: ROM:001A5F4Ej - andi.b #$0F,d0 - beq.s loc_1A60FA - cmpi.b #$01,d0 - beq.s loc_1A6152 - cmpi.b #$02,d0 - beq.s loc_1A6158 - cmpi.b #$03,d0 - beq.w loc_1A6158 - bra.w loc_1A6158 -; --------------------------------------------------------------------------- - -loc_1A60FA: ; CODE XREF: ROM:001A60E0j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.w loc_1A5F80 - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - cmpi.b #$80,d0 - beq.w loc_1A5F80 - andi.b #$0F,d0 - cmpi.b #$01,d0 - bne.s locret_1A6150 - move.b #$FF,$0000002D(a5) - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - addi.b #$10,d0 - lsl.b #$02,d0 - move.w d0,$0000002E(a5) - -locret_1A6150: ; CODE XREF: ROM:001A6136j - rts -; --------------------------------------------------------------------------- - -loc_1A6152: ; CODE XREF: ROM:001A60E6j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6158: ; CODE XREF: ROM:001A60ECj - ; ROM:001A60F2j ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A618C - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A618C - beq.w loc_1A5F80 - -loc_1A618C: ; CODE XREF: ROM:001A6168j - ; ROM:001A6186j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Ninja2_B: ; CODE XREF: ROM:001A84E2j - bra.s loc_1A61DA -; --------------------------------------------------------------------------- - -EnemyAI_Ninja2_A: ; CODE XREF: ROM:001A84DEj - btst #$01,$0000000C(a5) - bne.s loc_1A61AC - move.b ChestIndex(a5),d0 - beq.s loc_1A61B2 - cmpi.b #$10,d0 - beq.s loc_1A61DE - bra.w loc_1A633A -; --------------------------------------------------------------------------- - -loc_1A61AC: ; CODE XREF: ROM:001A619Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A61B2: ; CODE XREF: ROM:001A61A0j - bsr.w LoadSpecialAI - move.w CentreX(a5),(word_FF1800).l - move.w CentreY(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A61DA - rts -; --------------------------------------------------------------------------- - -loc_1A61DA: ; CODE XREF: ROM:EnemyAI_Ninja2_Bj - ; ROM:001A61D6j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A61DE: ; CODE XREF: ROM:001A61A6j - tst.b (byte_FF1142).l - bne.s loc_1A620E - move.w CentreX(a5),(word_FF1800).l - move.w CentreY(a5),(dword_FF1804).l - bsr.s sub_1A6212 - bcs.s loc_1A6208 - bsr.s sub_1A6252 - bcs.s loc_1A6208 - bsr.w sub_1A628E - bcs.s loc_1A6208 - bsr.w sub_1A62E0 - -loc_1A6208: ; CODE XREF: ROM:001A61F8j - ; ROM:001A61FCj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A620E: ; CODE XREF: ROM:001A61E4j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6212: ; CODE XREF: ROM:001A61F6p - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1A624E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1A624E - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A624E: ; CODE XREF: sub_1A6212+10j - ; sub_1A6212+20j - tst.b d0 - rts -; End of function sub_1A6212 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6252: ; CODE XREF: ROM:001A61FAp - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A628A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A628A - move.b #$21,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A628A: ; CODE XREF: sub_1A6252+10j - ; sub_1A6252+20j - tst.b d0 - rts -; End of function sub_1A6252 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A628E: ; CODE XREF: ROM:001A61FEp - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A62DC - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A62DC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A62DC - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A62DC: ; CODE XREF: sub_1A628E+10j - ; sub_1A628E+22j ... - tst.b d0 - rts -; End of function sub_1A628E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A62E0: ; CODE XREF: ROM:001A6204p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6336 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1A631C - move.b #$23,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A631C: ; CODE XREF: sub_1A62E0+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6336: ; CODE XREF: sub_1A62E0+10j - tst.b d0 - rts -; End of function sub_1A62E0 - -; --------------------------------------------------------------------------- - -loc_1A633A: ; CODE XREF: ROM:001A61A8j - andi.b #$0F,d0 - beq.s loc_1A6358 - cmpi.b #$01,d0 - beq.s loc_1A63B0 - cmpi.b #$02,d0 - beq.s loc_1A63B6 - cmpi.b #$03,d0 - beq.w loc_1A645C - bra.w loc_1A645C -; --------------------------------------------------------------------------- - -loc_1A6358: ; CODE XREF: ROM:001A633Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.w loc_1A61DA - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - cmpi.b #$80,d0 - beq.w loc_1A61DA - andi.b #$0F,d0 - cmpi.b #$01,d0 - bne.s locret_1A63AE - move.b #$FF,$0000002D(a5) - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - addi.b #$10,d0 - lsl.b #$02,d0 - move.w d0,$0000002E(a5) - -locret_1A63AE: ; CODE XREF: ROM:001A6394j - rts -; --------------------------------------------------------------------------- - -loc_1A63B0: ; CODE XREF: ROM:001A6344j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A63B6: ; CODE XREF: ROM:001A634Aj - move.l (a5),d0 - movem.l d0,-(sp) - move.w (Player_CentreX).l,d1 - move.w (Player_CentreY).l,d2 - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - beq.s loc_1A63E2 - cmpi.b #$80,d0 - beq.s loc_1A63E8 - bhi.s loc_1A63EE - addi.w #$0018,d1 - bra.s loc_1A63F2 -; --------------------------------------------------------------------------- - -loc_1A63E2: ; CODE XREF: ROM:001A63D2j - subi.w #$0018,d2 - bra.s loc_1A63F2 -; --------------------------------------------------------------------------- - -loc_1A63E8: ; CODE XREF: ROM:001A63D8j - addi.w #$0018,d2 - bra.s loc_1A63F2 -; --------------------------------------------------------------------------- - -loc_1A63EE: ; CODE XREF: ROM:001A63DAj - subi.w #$0018,d1 - -loc_1A63F2: ; CODE XREF: ROM:001A63E0j - ; ROM:001A63E6j ... - move.w d1,d0 - lsr.w #$04,d1 - move.b d1,(a5) - andi.b #$0F,d0 - move.b d0,$00000002(a5) - move.w d2,d0 - lsr.w #$04,d2 - move.b d2,$00000001(a5) - andi.b #$0F,d0 - move.b d0,$00000003(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - jsr (sub_3BC).l - bcc.s loc_1A6432 - movem.l (sp)+,d0 - move.l d0,(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - bra.w loc_1A61DA -; --------------------------------------------------------------------------- - -loc_1A6432: ; CODE XREF: ROM:001A641Ej - bset #$05,$0000002D(a5) - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - eori.b #$80,d0 - andi.b #$3F,$00000004(a5) - or.b d0,$00000004(a5) - movem.l (sp)+,d0 - move.b #$23,$00000037(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A645C: ; CODE XREF: ROM:001A6350j - ; ROM:001A6354j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A6490 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A6490 - beq.w loc_1A61DA - -loc_1A6490: ; CODE XREF: ROM:001A646Cj - ; ROM:001A648Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Ninja3_B: ; CODE XREF: ROM:001A84EAj - bra.s loc_1A64DE -; --------------------------------------------------------------------------- - -EnemyAI_Ninja3_A: ; CODE XREF: ROM:001A84E6j - btst #$01,Flags2(a5) - bne.s loc_1A64B0 - move.b ChestIndex(a5),d0 - beq.s loc_1A64B6 - cmpi.b #$10,d0 - beq.s loc_1A64E2 - bra.w loc_1A662C -; --------------------------------------------------------------------------- - -loc_1A64B0: ; CODE XREF: ROM:001A649Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A64B6: ; CODE XREF: ROM:001A64A4j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A64DE - rts -; --------------------------------------------------------------------------- - -loc_1A64DE: ; CODE XREF: ROM:EnemyAI_Ninja3_Bj - ; ROM:001A64DAj ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A64E2: ; CODE XREF: ROM:001A64AAj - tst.b (byte_FF1142).l - bne.s loc_1A6512 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A6516 - bcs.s loc_1A650C - bsr.s sub_1A6556 - bcs.s loc_1A650C - bsr.w sub_1A6592 - bcs.s loc_1A650C - bsr.w sub_1A65D2 - -loc_1A650C: ; CODE XREF: ROM:001A64FCj - ; ROM:001A6500j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6512: ; CODE XREF: ROM:001A64E8j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6516: ; CODE XREF: ROM:001A64FAp - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6552 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A6552 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6552: ; CODE XREF: sub_1A6516+10j - ; sub_1A6516+20j - tst.b d0 - rts -; End of function sub_1A6516 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6556: ; CODE XREF: ROM:001A64FEp - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A658E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A658E - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A658E: ; CODE XREF: sub_1A6556+10j - ; sub_1A6556+20j - tst.b d0 - rts -; End of function sub_1A6556 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6592: ; CODE XREF: ROM:001A6502p - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1A65CE - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A65CE - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A65CE: ; CODE XREF: sub_1A6592+10j - ; sub_1A6592+20j - tst.b d0 - rts -; End of function sub_1A6592 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A65D2: ; CODE XREF: ROM:001A6508p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6628 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0046,d7 - bcc.s loc_1A660E - move.b #$23,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A660E: ; CODE XREF: sub_1A65D2+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6628: ; CODE XREF: sub_1A65D2+10j - tst.b d0 - rts -; End of function sub_1A65D2 - -; --------------------------------------------------------------------------- - -loc_1A662C: ; CODE XREF: ROM:001A64ACj - andi.b #$0F,d0 - beq.s loc_1A664A - cmpi.b #$01,d0 - beq.s loc_1A66A2 - cmpi.b #$02,d0 - beq.s loc_1A66B6 - cmpi.b #$03,d0 - beq.w loc_1A676A - bra.w loc_1A676A -; --------------------------------------------------------------------------- - -loc_1A664A: ; CODE XREF: ROM:001A6630j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$FFC8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.w loc_1A64DE - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - cmpi.b #$80,d0 - beq.w loc_1A64DE - andi.b #$0F,d0 - cmpi.b #$01,d0 - bne.s locret_1A66A0 - move.b #$FF,$0000002D(a5) - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - addi.b #$10,d0 - lsl.b #$02,d0 - move.w d0,$0000002E(a5) - -locret_1A66A0: ; CODE XREF: ROM:001A6686j - rts -; --------------------------------------------------------------------------- - -loc_1A66A2: ; CODE XREF: ROM:001A6636j - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - eori.b #$80,d0 - clr.b d1 - bra.s loc_1A66C6 -; --------------------------------------------------------------------------- - -loc_1A66B6: ; CODE XREF: ROM:001A663Cj - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - move.b #$80,d1 - -loc_1A66C6: ; CODE XREF: ROM:001A66B4j - movem.w d1,-(sp) - move.w (Player_CentreX).l,d1 - move.w (Player_CentreY).l,d2 - andi.b #$C0,d0 - beq.s loc_1A66EA - cmpi.b #$80,d0 - beq.s loc_1A66F0 - bhi.s loc_1A66F6 - addi.w #$0018,d1 - bra.s loc_1A66FA -; --------------------------------------------------------------------------- - -loc_1A66EA: ; CODE XREF: ROM:001A66DAj - subi.w #$0018,d2 - bra.s loc_1A66FA -; --------------------------------------------------------------------------- - -loc_1A66F0: ; CODE XREF: ROM:001A66E0j - addi.w #$0018,d2 - bra.s loc_1A66FA -; --------------------------------------------------------------------------- - -loc_1A66F6: ; CODE XREF: ROM:001A66E2j - subi.w #$0018,d1 - -loc_1A66FA: ; CODE XREF: ROM:001A66E8j - ; ROM:001A66EEj ... - move.w d1,d0 - lsr.w #$04,d1 - move.b d1,(a5) - andi.b #$0F,d0 - move.b d0,$00000002(a5) - move.w d2,d0 - lsr.w #$04,d2 - move.b d2,$00000001(a5) - andi.b #$0F,d0 - move.b d0,$00000003(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - jsr (sub_3BC).l - bcc.s loc_1A673E - movem.w (sp)+,d1 - movem.l (sp)+,d0 - move.l d0,(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - bra.w loc_1A64DE -; --------------------------------------------------------------------------- - -loc_1A673E: ; CODE XREF: ROM:001A6726j - movem.w (sp)+,d1 - bset #$05,$0000002D(a5) - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - eor.b d1,d0 - andi.b #$3F,$00000004(a5) - or.b d0,$00000004(a5) - movem.l (sp)+,d0 - move.b #$23,$00000037(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A676A: ; CODE XREF: ROM:001A6642j - ; ROM:001A6646j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A679E - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A679E - beq.w loc_1A64DE - -loc_1A679E: ; CODE XREF: ROM:001A677Aj - ; ROM:001A6798j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Lizard1_B: ; CODE XREF: ROM:001A84F2j - bra.s loc_1A67EC -; --------------------------------------------------------------------------- - -EnemyAI_Lizard1_A: ; CODE XREF: ROM:001A84EEj - btst #$01,$0000000C(a5) - bne.s loc_1A67BE - move.b $00000037(a5),d0 - beq.s loc_1A67C4 - cmpi.b #$10,d0 - beq.s loc_1A67F0 - bra.w loc_1A6932 -; --------------------------------------------------------------------------- - -loc_1A67BE: ; CODE XREF: ROM:001A67ACj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A67C4: ; CODE XREF: ROM:001A67B2j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A67EC - rts -; --------------------------------------------------------------------------- - -loc_1A67EC: ; CODE XREF: ROM:EnemyAI_Lizard1_Bj - ; ROM:001A67E8j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A67F0: ; CODE XREF: ROM:001A67B8j - tst.b (byte_FF1142).l - bne.s loc_1A6820 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A6824 - bcs.s loc_1A681A - bsr.s sub_1A6860 - bcs.s loc_1A681A - bsr.w sub_1A689C - bcs.s loc_1A681A - bsr.w sub_1A68D8 - -loc_1A681A: ; CODE XREF: ROM:001A680Aj - ; ROM:001A680Ej ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6820: ; CODE XREF: ROM:001A67F6j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6824: ; CODE XREF: ROM:001A6808p - move.w #$0048,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A685C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A685C - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A685C: ; CODE XREF: sub_1A6824+10j - ; sub_1A6824+20j - tst.b d0 - rts -; End of function sub_1A6824 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6860: ; CODE XREF: ROM:001A680Cp - move.w #$0050,d5 - move.w #$FFC8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6898 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A6898 - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6898: ; CODE XREF: sub_1A6860+10j - ; sub_1A6860+20j - tst.b d0 - rts -; End of function sub_1A6860 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A689C: ; CODE XREF: ROM:001A6810p - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A68D4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A68D4 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A68D4: ; CODE XREF: sub_1A689C+10j - ; sub_1A689C+20j - tst.b d0 - rts -; End of function sub_1A689C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A68D8: ; CODE XREF: ROM:001A6816p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A692E - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bcc.s loc_1A6914 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6914: ; CODE XREF: sub_1A68D8+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A692E: ; CODE XREF: sub_1A68D8+10j - tst.b d0 - rts -; End of function sub_1A68D8 - -; --------------------------------------------------------------------------- - -loc_1A6932: ; CODE XREF: ROM:001A67BAj - andi.b #$0F,d0 - beq.s loc_1A694E - cmpi.b #$01,d0 - beq.s loc_1A6954 - cmpi.b #$02,d0 - beq.s loc_1A6966 - cmpi.b #$03,d0 - beq.s loc_1A69A0 - bra.w loc_1A69D6 -; --------------------------------------------------------------------------- - -loc_1A694E: ; CODE XREF: ROM:001A6936j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6954: ; CODE XREF: ROM:001A693Cj - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1A67EC - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6966: ; CODE XREF: ROM:001A6942j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A699A - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A699A - bra.w loc_1A67EC -; --------------------------------------------------------------------------- - -loc_1A699A: ; CODE XREF: ROM:001A6976j - ; ROM:001A6994j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A69A0: ; CODE XREF: ROM:001A6948j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A69D4 - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A69D4 - bra.w loc_1A67EC -; --------------------------------------------------------------------------- - -locret_1A69D4: ; CODE XREF: ROM:001A69B0j - ; ROM:001A69CEj - rts -; --------------------------------------------------------------------------- - -loc_1A69D6: ; CODE XREF: ROM:001A694Aj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A6A0A - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A6A0A - bra.w loc_1A67EC -; --------------------------------------------------------------------------- - -locret_1A6A0A: ; CODE XREF: ROM:001A69E6j - ; ROM:001A6A04j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Lizard2_B: ; CODE XREF: ROM:001A84FAj - bra.s loc_1A6A54 -; --------------------------------------------------------------------------- - -EnemyAI_Lizard2_A: ; CODE XREF: ROM:001A84F6j - btst #$01,$0000000C(a5) - bne.s loc_1A6A26 - move.b $00000037(a5),d0 - beq.s loc_1A6A2C - cmpi.b #$10,d0 - beq.s loc_1A6A58 - bra.w loc_1A6B9A -; --------------------------------------------------------------------------- - -loc_1A6A26: ; CODE XREF: ROM:001A6A14j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6A2C: ; CODE XREF: ROM:001A6A1Aj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A6A54 - rts -; --------------------------------------------------------------------------- - -loc_1A6A54: ; CODE XREF: ROM:EnemyAI_Lizard2_Bj - ; ROM:001A6A50j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A6A58: ; CODE XREF: ROM:001A6A20j - tst.b (byte_FF1142).l - bne.s loc_1A6A88 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A6A8C - bcs.s loc_1A6A82 - bsr.s sub_1A6AC8 - bcs.s loc_1A6A82 - bsr.w sub_1A6B04 - bcs.s loc_1A6A82 - bsr.w sub_1A6B40 - -loc_1A6A82: ; CODE XREF: ROM:001A6A72j - ; ROM:001A6A76j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6A88: ; CODE XREF: ROM:001A6A5Ej - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6A8C: ; CODE XREF: ROM:001A6A70p - move.w #$0048,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6AC4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0006,d7 - bhi.s loc_1A6AC4 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6AC4: ; CODE XREF: sub_1A6A8C+10j - ; sub_1A6A8C+20j - tst.b d0 - rts -; End of function sub_1A6A8C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6AC8: ; CODE XREF: ROM:001A6A74p - move.w #$0050,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6B00 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A6B00 - move.b #$21,$00000037(a5) - move.w #$0014,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6B00: ; CODE XREF: sub_1A6AC8+10j - ; sub_1A6AC8+20j - tst.b d0 - rts -; End of function sub_1A6AC8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6B04: ; CODE XREF: ROM:001A6A78p - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6B3C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A6B3C - move.b #$22,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6B3C: ; CODE XREF: sub_1A6B04+10j - ; sub_1A6B04+20j - tst.b d0 - rts -; End of function sub_1A6B04 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6B40: ; CODE XREF: ROM:001A6A7Ep - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6B96 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1A6B7C - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6B7C: ; CODE XREF: sub_1A6B40+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6B96: ; CODE XREF: sub_1A6B40+10j - tst.b d0 - rts -; End of function sub_1A6B40 - -; --------------------------------------------------------------------------- - -loc_1A6B9A: ; CODE XREF: ROM:001A6A22j - andi.b #$0F,d0 - beq.s loc_1A6BB6 - cmpi.b #$01,d0 - beq.s loc_1A6BBC - cmpi.b #$02,d0 - beq.s loc_1A6BC2 - cmpi.b #$03,d0 - beq.s loc_1A6BFC - bra.w loc_1A6BC2 -; --------------------------------------------------------------------------- - -loc_1A6BB6: ; CODE XREF: ROM:001A6B9Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6BBC: ; CODE XREF: ROM:001A6BA4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6BC2: ; CODE XREF: ROM:001A6BAAj - ; ROM:001A6BB2j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A6BF6 - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A6BF6 - bra.w loc_1A6A54 -; --------------------------------------------------------------------------- - -loc_1A6BF6: ; CODE XREF: ROM:001A6BD2j - ; ROM:001A6BF0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6BFC: ; CODE XREF: ROM:001A6BB0j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A6C30 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A6C30 - bra.w loc_1A6A54 -; --------------------------------------------------------------------------- - -locret_1A6C30: ; CODE XREF: ROM:001A6C0Cj - ; ROM:001A6C2Aj - rts -; --------------------------------------------------------------------------- - -EnemyAI_Lizard3_B: ; CODE XREF: ROM:001A8502j - bra.s loc_1A6C7A -; --------------------------------------------------------------------------- - -EnemyAI_Lizard3_A: ; CODE XREF: ROM:001A84FEj - btst #$01,$0000000C(a5) - bne.s loc_1A6C4C - move.b $00000037(a5),d0 - beq.s loc_1A6C52 - cmpi.b #$10,d0 - beq.s loc_1A6C7E - bra.w loc_1A6DC0 -; --------------------------------------------------------------------------- - -loc_1A6C4C: ; CODE XREF: ROM:001A6C3Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6C52: ; CODE XREF: ROM:001A6C40j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A6C7A - rts -; --------------------------------------------------------------------------- - -loc_1A6C7A: ; CODE XREF: ROM:EnemyAI_Lizard3_Bj - ; ROM:001A6C76j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A6C7E: ; CODE XREF: ROM:001A6C46j - tst.b (byte_FF1142).l - bne.s loc_1A6CAE - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A6CB2 - bcs.s loc_1A6CA8 - bsr.s sub_1A6CEE - bcs.s loc_1A6CA8 - bsr.w sub_1A6D2A - bcs.s loc_1A6CA8 - bsr.w sub_1A6D66 - -loc_1A6CA8: ; CODE XREF: ROM:001A6C98j - ; ROM:001A6C9Cj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6CAE: ; CODE XREF: ROM:001A6C84j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6CB2: ; CODE XREF: ROM:001A6C96p - move.w #$0050,d5 - move.w #$FFD0,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6CEA - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bhi.s loc_1A6CEA - move.b #$20,$00000037(a5) - move.w #$0015,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6CEA: ; CODE XREF: sub_1A6CB2+10j - ; sub_1A6CB2+20j - tst.b d0 - rts -; End of function sub_1A6CB2 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6CEE: ; CODE XREF: ROM:001A6C9Ap - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6D26 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A6D26 - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6D26: ; CODE XREF: sub_1A6CEE+10j - ; sub_1A6CEE+20j - tst.b d0 - rts -; End of function sub_1A6CEE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6D2A: ; CODE XREF: ROM:001A6C9Ep - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6D62 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A6D62 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6D62: ; CODE XREF: sub_1A6D2A+10j - ; sub_1A6D2A+20j - tst.b d0 - rts -; End of function sub_1A6D2A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6D66: ; CODE XREF: ROM:001A6CA4p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6DBC - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bcc.s loc_1A6DA2 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6DA2: ; CODE XREF: sub_1A6D66+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6DBC: ; CODE XREF: sub_1A6D66+10j - tst.b d0 - rts -; End of function sub_1A6D66 - -; --------------------------------------------------------------------------- - -loc_1A6DC0: ; CODE XREF: ROM:001A6C48j - andi.b #$0F,d0 - beq.s loc_1A6DDE - cmpi.b #$01,d0 - beq.s loc_1A6E2C - cmpi.b #$02,d0 - beq.s loc_1A6E02 - cmpi.b #$03,d0 - beq.w loc_1A6E66 - bra.w loc_1A6E2C -; --------------------------------------------------------------------------- - -loc_1A6DDE: ; CODE XREF: ROM:001A6DC4j - cmpi.b #$08,$0000002A(a5) - bcc.s loc_1A6DFC - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - -loc_1A6DFC: ; CODE XREF: ROM:001A6DE4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6E02: ; CODE XREF: ROM:001A6DD0j - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$19,$0000000D(a5) - bcc.w loc_1A6C7A - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6E2C: ; CODE XREF: ROM:001A6DCAj - ; ROM:001A6DDAj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A6E60 - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A6E60 - bra.w loc_1A6C7A -; --------------------------------------------------------------------------- - -loc_1A6E60: ; CODE XREF: ROM:001A6E3Cj - ; ROM:001A6E5Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6E66: ; CODE XREF: ROM:001A6DD6j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1A6E9A - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0400,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1A6E9A - bra.w loc_1A6C7A -; --------------------------------------------------------------------------- - -locret_1A6E9A: ; CODE XREF: ROM:001A6E76j - ; ROM:001A6E94j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Knight1_B: ; CODE XREF: ROM:001A850Aj - bra.s loc_1A6EE4 -; --------------------------------------------------------------------------- - -EnemyAI_Knight1_A: ; CODE XREF: ROM:001A8506j - btst #$01,$0000000C(a5) - bne.s loc_1A6EB6 - move.b $00000037(a5),d0 - beq.s loc_1A6EBC - cmpi.b #$10,d0 - beq.s loc_1A6EE8 - bra.w loc_1A703A -; --------------------------------------------------------------------------- - -loc_1A6EB6: ; CODE XREF: ROM:001A6EA4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6EBC: ; CODE XREF: ROM:001A6EAAj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0010,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A6EE4 - rts -; --------------------------------------------------------------------------- - -loc_1A6EE4: ; CODE XREF: ROM:EnemyAI_Knight1_Bj - ; ROM:001A6EE0j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A6EE8: ; CODE XREF: ROM:001A6EB0j - tst.b (byte_FF1142).l - bne.s loc_1A6F18 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A6F1C - bcs.s loc_1A6F12 - bsr.s sub_1A6F58 - bcs.s loc_1A6F12 - bsr.w sub_1A6F94 - bcs.s loc_1A6F12 - bsr.w sub_1A6FE0 - -loc_1A6F12: ; CODE XREF: ROM:001A6F02j - ; ROM:001A6F06j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A6F18: ; CODE XREF: ROM:001A6EEEj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6F1C: ; CODE XREF: ROM:001A6F00p - move.w #$0048,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6F54 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1A6F54 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6F54: ; CODE XREF: sub_1A6F1C+10j - ; sub_1A6F1C+20j - tst.b d0 - rts -; End of function sub_1A6F1C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6F58: ; CODE XREF: ROM:001A6F04p - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6F90 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A6F90 - move.b #$21,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6F90: ; CODE XREF: sub_1A6F58+10j - ; sub_1A6F58+20j - tst.b d0 - rts -; End of function sub_1A6F58 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6F94: ; CODE XREF: ROM:001A6F08p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A6FDC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0096,d7 - bhi.s loc_1A6FDC - move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) - ; Bit1 - Walk SW (+Y) - ; Bit2 - Walk NW (-X) - ; Bit3 - Walk SE (+X) - ; Bit4 - Fall - ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing - ; Bit12 - Ladder Climb - andi.b #$07,d0 - beq.s loc_1A6FDC - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A6FDC: ; CODE XREF: sub_1A6F94+10j - ; sub_1A6F94+20j ... - tst.b d0 - rts -; End of function sub_1A6F94 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A6FE0: ; CODE XREF: ROM:001A6F0Ep - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7036 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bcc.s loc_1A701C - move.b #$23,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A701C: ; CODE XREF: sub_1A6FE0+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7036: ; CODE XREF: sub_1A6FE0+10j - tst.b d0 - rts -; End of function sub_1A6FE0 - -; --------------------------------------------------------------------------- - -loc_1A703A: ; CODE XREF: ROM:001A6EB2j - andi.b #$0F,d0 - beq.s loc_1A7056 - cmpi.b #$01,d0 - beq.s loc_1A7056 - cmpi.b #$02,d0 - beq.s loc_1A705C - cmpi.b #$03,d0 - beq.s loc_1A708E - bra.w loc_1A708E -; --------------------------------------------------------------------------- - -loc_1A7056: ; CODE XREF: ROM:001A703Ej - ; ROM:001A7044j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A705C: ; CODE XREF: ROM:001A704Aj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$05,$0000000D(a5) - bcs.s loc_1A7086 - move.w #$0400,$0000002C(a5) - cmpi.b #$17,$0000000D(a5) - bcs.s loc_1A7086 - bclr #$00,$00000038(a5) - bra.w loc_1A6EE4 -; --------------------------------------------------------------------------- - -loc_1A7086: ; CODE XREF: ROM:001A706Cj - ; ROM:001A707Aj - bset #$00,$00000038(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A708E: ; CODE XREF: ROM:001A7050j - ; ROM:001A7052j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A70C2 - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A70C2 - bra.w loc_1A6EE4 -; --------------------------------------------------------------------------- - -loc_1A70C2: ; CODE XREF: ROM:001A709Ej - ; ROM:001A70BCj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Knight2_B: ; CODE XREF: ROM:001A8512j - bra.s loc_1A7110 -; --------------------------------------------------------------------------- - -EnemyAI_Knight2_A: ; CODE XREF: ROM:001A850Ej - btst #$01,$0000000C(a5) - bne.s loc_1A70E2 - move.b $00000037(a5),d0 - beq.s loc_1A70E8 - cmpi.b #$10,d0 - beq.s loc_1A7114 - bra.w loc_1A7266 -; --------------------------------------------------------------------------- - -loc_1A70E2: ; CODE XREF: ROM:001A70D0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A70E8: ; CODE XREF: ROM:001A70D6j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0010,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A7110 - rts -; --------------------------------------------------------------------------- - -loc_1A7110: ; CODE XREF: ROM:EnemyAI_Knight2_Bj - ; ROM:001A710Cj ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A7114: ; CODE XREF: ROM:001A70DCj - tst.b (byte_FF1142).l - bne.s loc_1A7144 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A7148 - bcs.s loc_1A713E - bsr.s sub_1A7184 - bcs.s loc_1A713E - bsr.w sub_1A71C0 - bcs.s loc_1A713E - bsr.w sub_1A720C - -loc_1A713E: ; CODE XREF: ROM:001A712Ej - ; ROM:001A7132j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7144: ; CODE XREF: ROM:001A711Aj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7148: ; CODE XREF: ROM:001A712Cp - move.w #$0048,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7180 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A7180 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7180: ; CODE XREF: sub_1A7148+10j - ; sub_1A7148+20j - tst.b d0 - rts -; End of function sub_1A7148 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7184: ; CODE XREF: ROM:001A7130p - move.w #$0030,d5 - move.w #$FFE8,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A71BC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A71BC - move.b #$21,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A71BC: ; CODE XREF: sub_1A7184+10j - ; sub_1A7184+20j - tst.b d0 - rts -; End of function sub_1A7184 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A71C0: ; CODE XREF: ROM:001A7134p - move.w #$0030,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7208 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0096,d7 - bhi.s loc_1A7208 - move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) - ; Bit1 - Walk SW (+Y) - ; Bit2 - Walk NW (-X) - ; Bit3 - Walk SE (+X) - ; Bit4 - Fall - ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing - ; Bit12 - Ladder Climb - andi.b #$07,d0 - beq.s loc_1A7208 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7208: ; CODE XREF: sub_1A71C0+10j - ; sub_1A71C0+20j ... - tst.b d0 - rts -; End of function sub_1A71C0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A720C: ; CODE XREF: ROM:001A713Ap - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7262 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0014,d7 - bcc.s loc_1A7248 - move.b #$23,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7248: ; CODE XREF: sub_1A720C+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7262: ; CODE XREF: sub_1A720C+10j - tst.b d0 - rts -; End of function sub_1A720C - -; --------------------------------------------------------------------------- - -loc_1A7266: ; CODE XREF: ROM:001A70DEj - andi.b #$0F,d0 - beq.s loc_1A7282 - cmpi.b #$01,d0 - beq.s loc_1A72BA - cmpi.b #$02,d0 - beq.s loc_1A7288 - cmpi.b #$03,d0 - beq.s loc_1A72BA - bra.w loc_1A72BA -; --------------------------------------------------------------------------- - -loc_1A7282: ; CODE XREF: ROM:001A726Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7288: ; CODE XREF: ROM:001A7276j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$05,$0000000D(a5) - bcs.s loc_1A72B2 - move.w #$0400,$0000002C(a5) - cmpi.b #$17,$0000000D(a5) - bcs.s loc_1A72B2 - bclr #$00,$00000038(a5) - bra.w loc_1A7110 -; --------------------------------------------------------------------------- - -loc_1A72B2: ; CODE XREF: ROM:001A7298j - ; ROM:001A72A6j - bset #$00,$00000038(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A72BA: ; CODE XREF: ROM:001A7270j - ; ROM:001A727Cj ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A72EE - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A72EE - bra.w loc_1A7110 -; --------------------------------------------------------------------------- - -loc_1A72EE: ; CODE XREF: ROM:001A72CAj - ; ROM:001A72E8j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Knight3_B: ; CODE XREF: ROM:001A851Aj - bra.s loc_1A733C -; --------------------------------------------------------------------------- - -EnemyAI_Knight3_A: ; CODE XREF: ROM:001A8516j - btst #$01,$0000000C(a5) - bne.s loc_1A730E - move.b $00000037(a5),d0 - beq.s loc_1A7314 - cmpi.b #$10,d0 - beq.s loc_1A7340 - bra.w loc_1A7490 -; --------------------------------------------------------------------------- - -loc_1A730E: ; CODE XREF: ROM:001A72FCj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7314: ; CODE XREF: ROM:001A7302j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0010,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A733C - rts -; --------------------------------------------------------------------------- - -loc_1A733C: ; CODE XREF: ROM:EnemyAI_Knight3_Bj - ; ROM:001A7338j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1A7340: ; CODE XREF: ROM:001A7308j - tst.b (byte_FF1142).l - bne.s loc_1A7370 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A7374 - bcs.s loc_1A736A - bsr.s sub_1A73B0 - bcs.s loc_1A736A - bsr.w sub_1A73F6 - bcs.s loc_1A736A - bsr.w sub_1A7436 - -loc_1A736A: ; CODE XREF: ROM:001A735Aj - ; ROM:001A735Ej ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7370: ; CODE XREF: ROM:001A7346j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7374: ; CODE XREF: ROM:001A7358p - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A73AC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A73AC - move.b #$20,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A73AC: ; CODE XREF: sub_1A7374+10j - ; sub_1A7374+20j - tst.b d0 - rts -; End of function sub_1A7374 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A73B0: ; CODE XREF: ROM:001A735Cp - move.w #$0038,d5 - move.w #$FFE0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A73F2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) - ; Bit1 - Walk SW (+Y) - ; Bit2 - Walk NW (-X) - ; Bit3 - Walk SE (+X) - ; Bit4 - Fall - ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing - ; Bit12 - Ladder Climb - andi.b #$07,d0 - beq.s loc_1A73F2 - move.b #$21,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A73F2: ; CODE XREF: sub_1A73B0+10j - ; sub_1A73B0+2Aj - tst.b d0 - rts -; End of function sub_1A73B0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A73F6: ; CODE XREF: ROM:001A7360p - move.w #$0030,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7432 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$004B,d7 - bhi.s loc_1A7432 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7432: ; CODE XREF: sub_1A73F6+10j - ; sub_1A73F6+20j - tst.b d0 - rts -; End of function sub_1A73F6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7436: ; CODE XREF: ROM:001A7366p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A748C - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000A,d7 - bcc.s loc_1A7472 - move.b #$23,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7472: ; CODE XREF: sub_1A7436+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A748C: ; CODE XREF: sub_1A7436+10j - tst.b d0 - rts -; End of function sub_1A7436 - -; --------------------------------------------------------------------------- - -loc_1A7490: ; CODE XREF: ROM:001A730Aj - andi.b #$0F,d0 - beq.s loc_1A74E2 - cmpi.b #$01,d0 - beq.s loc_1A74AC - cmpi.b #$02,d0 - beq.s loc_1A74E2 - cmpi.b #$03,d0 - beq.s loc_1A74E2 - bra.w loc_1A74E2 -; --------------------------------------------------------------------------- - -loc_1A74AC: ; CODE XREF: ROM:001A749Aj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$05,$0000000D(a5) - bcs.s loc_1A74D6 - move.w #$0400,$0000002C(a5) - cmpi.b #$17,$0000000D(a5) - bcs.s loc_1A74D6 - bclr #$00,$00000038(a5) - bra.w loc_1A733C -; --------------------------------------------------------------------------- - -loc_1A74D6: ; CODE XREF: ROM:001A74BCj - ; ROM:001A74CAj - bset #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A74E2: ; CODE XREF: ROM:001A7494j - ; ROM:001A74A0j ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A7516 - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A7516 - bra.w loc_1A733C -; --------------------------------------------------------------------------- - -loc_1A7516: ; CODE XREF: ROM:001A74F2j - ; ROM:001A7510j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Ghost1_B: ; CODE XREF: ROM:001A8522j - bra.s loc_1A753E -; --------------------------------------------------------------------------- - -EnemyAI_Ghost1_A: ; CODE XREF: ROM:001A851Ej - btst #$01,$0000000C(a5) - bne.s loc_1A7536 - move.b $00000037(a5),d0 - beq.s loc_1A753C - cmpi.b #$10,d0 - beq.s loc_1A757C - bra.w loc_1A75E4 -; --------------------------------------------------------------------------- - -loc_1A7536: ; CODE XREF: ROM:001A7524j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A753C: ; CODE XREF: ROM:001A752Aj - bra.s loc_1A7544 -; --------------------------------------------------------------------------- - -loc_1A753E: ; CODE XREF: ROM:EnemyAI_Ghost1_Bj - ; ROM:001A75F0j ... - tst.b $0000000A(a5) - bpl.s loc_1A7560 - -loc_1A7544: ; CODE XREF: ROM:loc_1A753Cj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$20,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7560: ; CODE XREF: ROM:001A7542j - ; ROM:001A767Cj ... - move.w #$0006,BehaviourLUTIndex(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,ChestIndex(a5) - bclr #$01,Flags2(a5) - clr.b Unk0D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A757C: ; CODE XREF: ROM:001A7530j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.w sub_1A7596 - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7596: ; CODE XREF: ROM:001A758Cp - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A75E0 - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0020,d0 - bcc.s loc_1A75E0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A75E0: ; CODE XREF: sub_1A7596+10j - ; sub_1A7596+20j - tst.b d0 - rts -; End of function sub_1A7596 - -; --------------------------------------------------------------------------- - -loc_1A75E4: ; CODE XREF: ROM:001A7532j - andi.b #$0F,d0 - beq.s loc_1A75F4 - cmpi.b #$01,d0 - beq.s loc_1A7642 - bra.w loc_1A753E -; --------------------------------------------------------------------------- - -loc_1A75F4: ; CODE XREF: ROM:001A75E8j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s locret_1A7640 - move.w #$0200,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s locret_1A7640 - move.w #$0300,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A7640 - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A7640 - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - -locret_1A7640: ; CODE XREF: ROM:001A7604j - ; ROM:001A7612j ... - rts -; --------------------------------------------------------------------------- - -loc_1A7642: ; CODE XREF: ROM:001A75EEj - tst.b (byte_FF1145).l - bne.w loc_1A753E - tst.b (byte_FF1142).l - bne.s loc_1A765C - move.b #$01,(byte_FF1142).l - -loc_1A765C: ; CODE XREF: ROM:001A7652j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.w loc_1A7560 - move.b $0000004D(a5),d0 - addq.b #$01,$0000004D(a5) - tst.b d0 - bne.s loc_1A76A4 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_GhostAbsorbHP -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0080,d0 - bsr.w j_j_RemoveHealth - tst.w CurrentHealth(a5) - beq.s loc_1A76AE - -loc_1A76A4: ; CODE XREF: ROM:001A768Aj - cmpi.b #$3C,d0 - bcc.w loc_1A7560 - rts -; --------------------------------------------------------------------------- - -loc_1A76AE: ; CODE XREF: ROM:001A76A2j - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -EnemyAI_Ghost2_B: ; CODE XREF: ROM:001A852Aj - bra.s loc_1A76DA -; --------------------------------------------------------------------------- - -EnemyAI_Ghost2_A: ; CODE XREF: ROM:001A8526j - btst #$01,$0000000C(a5) - bne.s loc_1A76D2 - move.b $00000037(a5),d0 - beq.s loc_1A76D8 - cmpi.b #$10,d0 - beq.s loc_1A7718 - bra.w loc_1A77A0 -; --------------------------------------------------------------------------- - -loc_1A76D2: ; CODE XREF: ROM:001A76C0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A76D8: ; CODE XREF: ROM:001A76C6j - bra.s loc_1A76E0 -; --------------------------------------------------------------------------- - -loc_1A76DA: ; CODE XREF: ROM:EnemyAI_Ghost2_Bj - ; ROM:001A77B4j ... - tst.b $0000000A(a5) - bpl.s loc_1A76FC - -loc_1A76E0: ; CODE XREF: ROM:loc_1A76D8j - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$20,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A76FC: ; CODE XREF: ROM:001A76DEj - ; ROM:001A7846j ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7718: ; CODE XREF: ROM:001A76CCj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.w sub_1A7732 - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7732: ; CODE XREF: ROM:001A7728p - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A779C - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0020,d0 - bcc.s loc_1A779C - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$005A,d7 - bcc.s loc_1A7782 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7782: ; CODE XREF: sub_1A7732+30j - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A779C: ; CODE XREF: sub_1A7732+10j - ; sub_1A7732+20j - tst.b d0 - rts -; End of function sub_1A7732 - -; --------------------------------------------------------------------------- - -loc_1A77A0: ; CODE XREF: ROM:001A76CEj - andi.b #$0F,d0 - beq.s loc_1A77B8 - cmpi.b #$01,d0 - beq.s loc_1A7806 - cmpi.b #$02,d0 - beq.w loc_1A7882 - bra.w loc_1A76DA -; --------------------------------------------------------------------------- - -loc_1A77B8: ; CODE XREF: ROM:001A77A4j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s locret_1A7804 - move.w #$0200,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s locret_1A7804 - move.w #$0300,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A7804 - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A7804 - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - -locret_1A7804: ; CODE XREF: ROM:001A77C8j - ; ROM:001A77D6j ... - rts -; --------------------------------------------------------------------------- - -loc_1A7806: ; CODE XREF: ROM:001A77AAj - tst.b (byte_FF1145).l - bne.w loc_1A76DA - tst.b (byte_FF1142).l - bne.w loc_1A7826 - move.b #$01,(byte_FF1142).l - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1A7826: ; CODE XREF: ROM:001A7816j - ; ROM:001A7822j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0019,d5 - move.w #$0009,d6 - move.w #$0009,d7 - bsr.w sub_1A8964 - bcc.w loc_1A76FC - move.b $0000004D(a5),d0 - addq.b #$01,$0000004D(a5) - tst.b d0 - bne.s loc_1A786E - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_GhostAbsorbHP -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0100,d0 - bsr.w j_j_RemoveHealth - tst.w CurrentHealth(a5) - beq.s loc_1A7878 - -loc_1A786E: ; CODE XREF: ROM:001A7854j - cmpi.b #$3C,d0 - bcc.w loc_1A76FC - rts -; --------------------------------------------------------------------------- - -loc_1A7878: ; CODE XREF: ROM:001A786Cj - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -loc_1A7882: ; CODE XREF: ROM:001A77B0j - move.w #$0029,d1 - move.w #$0029,d2 - move.w #$0019,d3 - bsr.w sub_1A880C - move.w #$0500,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcc.w loc_1A78B4 - cmpi.b #$02,$0000000D(a5) - bne.s locret_1A78B2 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_EnemyDie1 -; --------------------------------------------------------------------------- - -locret_1A78B2: ; CODE XREF: ROM:001A78ACj - rts -; --------------------------------------------------------------------------- - -loc_1A78B4: ; CODE XREF: ROM:001A78A2j - bsr.w MoveSpriteOffscreen - bra.w loc_1A76DA -; --------------------------------------------------------------------------- - -EnemyAI_Ghost3_B: ; CODE XREF: ROM:001A8532j - bra.s loc_1A78DE -; --------------------------------------------------------------------------- - -EnemyAI_Ghost3_A: ; CODE XREF: ROM:001A852Ej - btst #$01,$0000000C(a5) - bne.s loc_1A78D6 - move.b $00000037(a5),d0 - beq.s loc_1A78DC - cmpi.b #$10,d0 - beq.s loc_1A791C - bra.w loc_1A79A4 -; --------------------------------------------------------------------------- - -loc_1A78D6: ; CODE XREF: ROM:001A78C4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A78DC: ; CODE XREF: ROM:001A78CAj - bra.s loc_1A78E4 -; --------------------------------------------------------------------------- - -loc_1A78DE: ; CODE XREF: ROM:EnemyAI_Ghost3_Bj - ; ROM:001A79B8j ... - tst.b $0000000A(a5) - bpl.s loc_1A7900 - -loc_1A78E4: ; CODE XREF: ROM:loc_1A78DCj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$20,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7900: ; CODE XREF: ROM:001A78E2j - ; ROM:001A7A4Aj ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A791C: ; CODE XREF: ROM:001A78D0j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.w sub_1A7936 - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7936: ; CODE XREF: ROM:001A792Cp - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A79A0 - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0020,d0 - bcc.s loc_1A79A0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcc.s loc_1A7986 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7986: ; CODE XREF: sub_1A7936+30j - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A79A0: ; CODE XREF: sub_1A7936+10j - ; sub_1A7936+20j - tst.b d0 - rts -; End of function sub_1A7936 - -; --------------------------------------------------------------------------- - -loc_1A79A4: ; CODE XREF: ROM:001A78D2j - andi.b #$0F,d0 - beq.s loc_1A79BC - cmpi.b #$01,d0 - beq.s loc_1A7A0A - cmpi.b #$02,d0 - beq.w loc_1A7A86 - bra.w loc_1A78DE -; --------------------------------------------------------------------------- - -loc_1A79BC: ; CODE XREF: ROM:001A79A8j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s locret_1A7A08 - move.w #$0200,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s locret_1A7A08 - move.w #$0300,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A7A08 - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A7A08 - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - -locret_1A7A08: ; CODE XREF: ROM:001A79CCj - ; ROM:001A79DAj ... - rts -; --------------------------------------------------------------------------- - -loc_1A7A0A: ; CODE XREF: ROM:001A79AEj - tst.b (byte_FF1145).l - bne.w loc_1A78DE - tst.b (byte_FF1142).l - bne.w loc_1A7A2A - move.b #$01,(byte_FF1142).l - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1A7A2A: ; CODE XREF: ROM:001A7A1Aj - ; ROM:001A7A26j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0019,d5 - move.w #$0009,d6 - move.w #$0009,d7 - bsr.w sub_1A8964 - bcc.w loc_1A7900 - move.b $0000004D(a5),d0 - addq.b #$01,$0000004D(a5) - tst.b d0 - bne.s loc_1A7A72 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_GhostAbsorbHP -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0200,d0 - bsr.w j_j_RemoveHealth - tst.w $0000003E(a5) - beq.s loc_1A7A7C - -loc_1A7A72: ; CODE XREF: ROM:001A7A58j - cmpi.b #$3C,d0 - bcc.w loc_1A7900 - rts -; --------------------------------------------------------------------------- - -loc_1A7A7C: ; CODE XREF: ROM:001A7A70j - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -loc_1A7A86: ; CODE XREF: ROM:001A79B4j - move.w #$0029,d1 - move.w #$0029,d2 - move.w #$0019,d3 - bsr.w sub_1A880C - move.w #$0500,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcc.w loc_1A7AB8 - cmpi.b #$02,$0000000D(a5) - bne.s locret_1A7AB6 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_EnemyDie1 -; --------------------------------------------------------------------------- - -locret_1A7AB6: ; CODE XREF: ROM:001A7AB0j - rts -; --------------------------------------------------------------------------- - -loc_1A7AB8: ; CODE XREF: ROM:001A7AA6j - bsr.w MoveSpriteOffscreen - bra.w loc_1A78DE -; --------------------------------------------------------------------------- - -EnemyAI_Mummy1_B: ; CODE XREF: ROM:001A853Aj - bra.s loc_1A7B08 -; --------------------------------------------------------------------------- - -EnemyAI_Mummy1_A: ; CODE XREF: ROM:001A8536j - btst #$01,$0000000C(a5) - bne.s loc_1A7ADA - move.b $00000037(a5),d0 - beq.s loc_1A7AE0 - cmpi.b #$10,d0 - beq.s loc_1A7B40 - bra.w loc_1A7C9E -; --------------------------------------------------------------------------- - -loc_1A7ADA: ; CODE XREF: ROM:001A7AC8j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7AE0: ; CODE XREF: ROM:001A7ACEj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A7B08 - rts -; --------------------------------------------------------------------------- - -loc_1A7B08: ; CODE XREF: ROM:EnemyAI_Mummy1_Bj - ; ROM:001A7B04j ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7B24: ; CODE XREF: ROM:001A7DB4j - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$24,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7B40: ; CODE XREF: ROM:001A7AD4j - tst.b (byte_FF1142).l - bne.s loc_1A7B70 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A7B80 - bcs.s loc_1A7B6A - bsr.s sub_1A7BBC - bcs.s loc_1A7B6A - bsr.w sub_1A7BF8 - bcs.s loc_1A7B6A - bsr.w sub_1A7C34 - -loc_1A7B6A: ; CODE XREF: ROM:001A7B5Aj - ; ROM:001A7B5Ej ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7B70: ; CODE XREF: ROM:001A7B46j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7B80: ; CODE XREF: ROM:001A7B58p - move.w #$0050,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7BB8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A7BB8 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7BB8: ; CODE XREF: sub_1A7B80+10j - ; sub_1A7B80+20j - tst.b d0 - rts -; End of function sub_1A7B80 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7BBC: ; CODE XREF: ROM:001A7B5Cp - move.w #$0048,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7BF4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1A7BF4 - move.b #$21,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7BF4: ; CODE XREF: sub_1A7BBC+10j - ; sub_1A7BBC+20j - tst.b d0 - rts -; End of function sub_1A7BBC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7BF8: ; CODE XREF: ROM:001A7B60p - move.w #$0038,d5 - move.w #$FFD8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7C30 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0014,d7 - bhi.s loc_1A7C30 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7C30: ; CODE XREF: sub_1A7BF8+10j - ; sub_1A7BF8+20j - tst.b d0 - rts -; End of function sub_1A7BF8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7C34: ; CODE XREF: ROM:001A7B66p - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7C9A - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0021,d0 - bhi.s loc_1A7C9A - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcc.s loc_1A7C80 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7C80: ; CODE XREF: sub_1A7C34+30j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7C9A: ; CODE XREF: sub_1A7C34+10j - ; sub_1A7C34+20j - tst.b d0 - rts -; End of function sub_1A7C34 - -; --------------------------------------------------------------------------- - -loc_1A7C9E: ; CODE XREF: ROM:001A7AD6j - andi.b #$0F,d0 - beq.s loc_1A7CBE - cmpi.b #$01,d0 - beq.s loc_1A7CBE - cmpi.b #$02,d0 - beq.w loc_1A7CC4 - cmpi.b #$03,d0 - beq.w loc_1A7DC4 - bra.w loc_1A7D48 -; --------------------------------------------------------------------------- - -loc_1A7CBE: ; CODE XREF: ROM:001A7CA2j - ; ROM:001A7CA8j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7CC4: ; CODE XREF: ROM:001A7CAEj - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s locret_1A7D46 - move.w #$0400,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s locret_1A7D46 - move.w #$0500,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A7D46 - cmpi.b #$19,$0000000D(a5) - bcc.s loc_1A7D22 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.w loc_1A7D42 - addq.b #$01,$0000000D(a5) - -loc_1A7D22: ; CODE XREF: ROM:001A7CF8j - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A7D46 - move.w #$0300,$0000002C(a5) - cmpi.b #$28,$0000000D(a5) - bcs.s locret_1A7D46 - bra.w loc_1A7B08 -; --------------------------------------------------------------------------- - -loc_1A7D42: ; CODE XREF: ROM:001A7D1Aj - subq.b #$01,$0000000D(a5) - -locret_1A7D46: ; CODE XREF: ROM:001A7CD4j - ; ROM:001A7CE2j ... - rts -; --------------------------------------------------------------------------- - -loc_1A7D48: ; CODE XREF: ROM:001A7CBAj - tst.b (byte_FF1145).l - bne.w loc_1A7B08 - tst.b (byte_FF1142).l - bne.w loc_1A7D68 - move.b #$01,(byte_FF1142).l - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1A7D68: ; CODE XREF: ROM:001A7D58j - ; ROM:001A7D64j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0015,d5 - move.w #$0009,d6 - move.w #$0009,d7 - bsr.w sub_1A8964 - bcc.w loc_1A7B08 - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1A7DB0 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0040,d0 - bsr.w j_j_RemoveHealth - tst.w $0000003E(a5) - beq.s loc_1A7DBA - -loc_1A7DB0: ; CODE XREF: ROM:001A7D96j - cmpi.b #$28,d0 - bcc.w loc_1A7B24 - rts -; --------------------------------------------------------------------------- - -loc_1A7DBA: ; CODE XREF: ROM:001A7DAEj - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -loc_1A7DC4: ; CODE XREF: ROM:001A7CB6j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.w locret_1A7DF8 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0011,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcc.w loc_1A7B08 - -locret_1A7DF8: ; CODE XREF: ROM:001A7DD4j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Mummy2_B: ; CODE XREF: ROM:001A8542j - bra.s loc_1A7E42 -; --------------------------------------------------------------------------- - -EnemyAI_Mummy2_A: ; CODE XREF: ROM:001A853Ej - btst #$01,$0000000C(a5) - bne.s loc_1A7E14 - move.b $00000037(a5),d0 - beq.s loc_1A7E1A - cmpi.b #$10,d0 - beq.s loc_1A7E7A - bra.w loc_1A7FD8 -; --------------------------------------------------------------------------- - -loc_1A7E14: ; CODE XREF: ROM:001A7E02j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7E1A: ; CODE XREF: ROM:001A7E08j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A7E42 - rts -; --------------------------------------------------------------------------- - -loc_1A7E42: ; CODE XREF: ROM:EnemyAI_Mummy2_Bj - ; ROM:001A7E3Ej ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7E5E: ; CODE XREF: ROM:001A80EEj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$24,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A7E7A: ; CODE XREF: ROM:001A7E0Ej - tst.b (byte_FF1142).l - bne.s loc_1A7EAA - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A7EBA - bcs.s loc_1A7EA4 - bsr.s sub_1A7EF6 - bcs.s loc_1A7EA4 - bsr.w sub_1A7F32 - bcs.s loc_1A7EA4 - bsr.w sub_1A7F6E - -loc_1A7EA4: ; CODE XREF: ROM:001A7E94j - ; ROM:001A7E98j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7EAA: ; CODE XREF: ROM:001A7E80j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7EBA: ; CODE XREF: ROM:001A7E92p - move.w #$0050,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7EF2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A7EF2 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7EF2: ; CODE XREF: sub_1A7EBA+10j - ; sub_1A7EBA+20j - tst.b d0 - rts -; End of function sub_1A7EBA - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7EF6: ; CODE XREF: ROM:001A7E96p - move.w #$0048,d5 - move.w #$FFC8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7F2E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1A7F2E - move.b #$21,$00000037(a5) - move.w #$0014,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7F2E: ; CODE XREF: sub_1A7EF6+10j - ; sub_1A7EF6+20j - tst.b d0 - rts -; End of function sub_1A7EF6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7F32: ; CODE XREF: ROM:001A7E9Ap - move.w #$0038,d5 - move.w #$FFD8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7F6A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bhi.s loc_1A7F6A - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7F6A: ; CODE XREF: sub_1A7F32+10j - ; sub_1A7F32+20j - tst.b d0 - rts -; End of function sub_1A7F32 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A7F6E: ; CODE XREF: ROM:001A7EA0p - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A7FD4 - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0021,d0 - bhi.s loc_1A7FD4 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bcc.s loc_1A7FBA - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7FBA: ; CODE XREF: sub_1A7F6E+30j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A7FD4: ; CODE XREF: sub_1A7F6E+10j - ; sub_1A7F6E+20j - tst.b d0 - rts -; End of function sub_1A7F6E - -; --------------------------------------------------------------------------- - -loc_1A7FD8: ; CODE XREF: ROM:001A7E10j - andi.b #$0F,d0 - beq.s loc_1A7FF8 - cmpi.b #$01,d0 - beq.s loc_1A7FF8 - cmpi.b #$02,d0 - beq.w loc_1A7FFE - cmpi.b #$03,d0 - beq.w loc_1A80FE - bra.w loc_1A8082 -; --------------------------------------------------------------------------- - -loc_1A7FF8: ; CODE XREF: ROM:001A7FDCj - ; ROM:001A7FE2j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A7FFE: ; CODE XREF: ROM:001A7FE8j - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s locret_1A8080 - move.w #$0400,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s locret_1A8080 - move.w #$0500,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s locret_1A8080 - cmpi.b #$19,$0000000D(a5) - bcc.s loc_1A805C - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.w loc_1A807C - addq.b #$01,$0000000D(a5) - -loc_1A805C: ; CODE XREF: ROM:001A8032j - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1A8080 - move.w #$0300,$0000002C(a5) - cmpi.b #$28,$0000000D(a5) - bcs.s locret_1A8080 - bra.w loc_1A7E42 -; --------------------------------------------------------------------------- - -loc_1A807C: ; CODE XREF: ROM:001A8054j - subq.b #$01,$0000000D(a5) - -locret_1A8080: ; CODE XREF: ROM:001A800Ej - ; ROM:001A801Cj ... - rts -; --------------------------------------------------------------------------- - -loc_1A8082: ; CODE XREF: ROM:001A7FF4j - tst.b (byte_FF1145).l - bne.w loc_1A7E42 - tst.b (byte_FF1142).l - bne.w loc_1A80A2 - move.b #$01,(byte_FF1142).l - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1A80A2: ; CODE XREF: ROM:001A8092j - ; ROM:001A809Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0015,d5 - move.w #$0009,d6 - move.w #$0009,d7 - bsr.w sub_1A8964 - bcc.w loc_1A7E42 - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1A80EA - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0040,d0 - bsr.w j_j_RemoveHealth - tst.w $0000003E(a5) - beq.s loc_1A80F4 - -loc_1A80EA: ; CODE XREF: ROM:001A80D0j - cmpi.b #$28,d0 - bcc.w loc_1A7E5E - rts -; --------------------------------------------------------------------------- - -loc_1A80F4: ; CODE XREF: ROM:001A80E8j - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -loc_1A80FE: ; CODE XREF: ROM:001A7FF0j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.w locret_1A8132 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0011,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcc.w loc_1A7E42 - -locret_1A8132: ; CODE XREF: ROM:001A810Ej - rts -; --------------------------------------------------------------------------- - -EnemyAI_Mummy3_B: ; CODE XREF: ROM:001A854Aj - bra.s loc_1A817C -; --------------------------------------------------------------------------- - -EnemyAI_Mummy3_A: ; CODE XREF: ROM:001A8546j - btst #$01,$0000000C(a5) - bne.s loc_1A814E - move.b $00000037(a5),d0 - beq.s loc_1A8154 - cmpi.b #$10,d0 - beq.s loc_1A81B4 - bra.w loc_1A830E -; --------------------------------------------------------------------------- - -loc_1A814E: ; CODE XREF: ROM:001A813Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8154: ; CODE XREF: ROM:001A8142j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A817C - rts -; --------------------------------------------------------------------------- - -loc_1A817C: ; CODE XREF: ROM:EnemyAI_Mummy3_Bj - ; ROM:001A8178j ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A8198: ; CODE XREF: ROM:001A83A0j - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$24,$00000037(a5) - bclr #$01,$0000000C(a5) - clr.b $0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A81B4: ; CODE XREF: ROM:001A8148j - tst.b (byte_FF1142).l - bne.s loc_1A81E0 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A822C - bcs.s loc_1A81DA - bsr.w sub_1A8268 - bcs.s loc_1A81DA - bsr.w sub_1A82A4 - -loc_1A81DA: ; CODE XREF: ROM:001A81CEj - ; ROM:001A81D4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A81E0: ; CODE XREF: ROM:001A81BAj - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - move.w #$0050,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8228 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A8228 - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8228: ; CODE XREF: ROM:001A8200j - ; ROM:001A8210j - tst.b d0 - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A822C: ; CODE XREF: ROM:001A81CCp - move.w #$0050,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8264 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001F,d7 - bhi.s loc_1A8264 - move.b #$21,$00000037(a5) - move.w #$0016,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8264: ; CODE XREF: sub_1A822C+10j - ; sub_1A822C+20j - tst.b d0 - rts -; End of function sub_1A822C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8268: ; CODE XREF: ROM:001A81D0p - move.w #$0048,d5 - move.w #$FFC8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A82A0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A82A0 - move.b #$22,$00000037(a5) - move.w #$0014,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A82A0: ; CODE XREF: sub_1A8268+10j - ; sub_1A8268+20j - tst.b d0 - rts -; End of function sub_1A8268 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A82A4: ; CODE XREF: ROM:001A81D6p - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A830A - move.w $00000054(a5),d0 - sub.w (Player_Z).l,d0 - cmpi.w #$0021,d0 - bhi.s loc_1A830A - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bcc.s loc_1A82F0 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A82F0: ; CODE XREF: sub_1A82A4+30j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A830A: ; CODE XREF: sub_1A82A4+10j - ; sub_1A82A4+20j - tst.b d0 - rts -; End of function sub_1A82A4 - -; --------------------------------------------------------------------------- - -loc_1A830E: ; CODE XREF: ROM:001A814Aj - andi.b #$0F,d0 - beq.s loc_1A832E - cmpi.b #$01,d0 - beq.s loc_1A832E - cmpi.b #$02,d0 - beq.w loc_1A832E - cmpi.b #$03,d0 - beq.w loc_1A83B0 - bra.w loc_1A8334 -; --------------------------------------------------------------------------- - -loc_1A832E: ; CODE XREF: ROM:001A8312j - ; ROM:001A8318j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8334: ; CODE XREF: ROM:001A832Aj - tst.b (byte_FF1145).l - bne.w loc_1A817C - tst.b (byte_FF1142).l - bne.w loc_1A8354 - move.b #$01,(byte_FF1142).l - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1A8354: ; CODE XREF: ROM:001A8344j - ; ROM:001A8350j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0015,d5 - move.w #$0009,d6 - move.w #$0009,d7 - bsr.w sub_1A8964 - bcc.w loc_1A817C - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1A839C - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0040,d0 - bsr.w j_j_RemoveHealth - tst.w $0000003E(a5) - beq.s loc_1A83A6 - -loc_1A839C: ; CODE XREF: ROM:001A8382j - cmpi.b #$28,d0 - bcc.w loc_1A8198 - rts -; --------------------------------------------------------------------------- - -loc_1A83A6: ; CODE XREF: ROM:001A839Aj - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -loc_1A83B0: ; CODE XREF: ROM:001A8326j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.w locret_1A83E4 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0011,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcc.w loc_1A817C - -locret_1A83E4: ; CODE XREF: ROM:001A83C0j - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A83E6: ; DATA XREF: sub_1A4404t - -; FUNCTION CHUNK AT 001A870E SIZE 00000098 BYTES -; FUNCTION CHUNK AT 001A87D2 SIZE 0000003A BYTES - - cmpi.b #$7F,(a5) - beq.w loc_1A870E - clr.w d1 -; End of function sub_1A83E6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A83F0: ; CODE XREF: sub_1A86D6+4p - move.w Dialogue(a5),d0 - andi.w #$03FF,d0 - lea EnemyTable(pc),a0 - -loc_1A83FC: ; CODE XREF: sub_1A83F0+16j - cmp.w (a0),d0 - beq.s loc_1A840E - addq.w #$08,d1 - cmpi.w #$FFFF,(a0)+ - bne.s loc_1A83FC - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A840E: ; CODE XREF: sub_1A83F0+Ej - lea loc_1A84A6(pc),a0 - nop - jmp (a0,d1.w) -; End of function sub_1A83F0 - -; --------------------------------------------------------------------------- -EnemyTable: dc.w SPR_ORC1 ; DATA XREF: sub_1A83F0+8t - ; ROM:EnemyTable+2o ... - dc.w SPR_ORC2 - dc.w SPR_ORC3 - dc.w SPR_WORM1 - dc.w SPR_WORM2 - dc.w SPR_WORM3 - dc.w SPR_NINJA1 - dc.w SPR_NINJA2 - dc.w SPR_NINJA3 - dc.w SPR_LIZARD1 - dc.w SPR_LIZARD2 - dc.w SPR_LIZARD3 - dc.w SPR_KNIGHT1 - dc.w SPR_KNIGHT2 - dc.w SPR_KNIGHT3 - dc.w SPR_GHOST1 - dc.w SPR_GHOST2 - dc.w SPR_GHOST3 - dc.w SPR_MUMMY1 - dc.w SPR_MUMMY2 - dc.w SPR_MUMMY3 - dc.w SPR_UNICORN1 - dc.w SPR_UNICORN2 - dc.w SPR_UNICORN3 - dc.w SPR_SKELETON1 - dc.w SPR_SKELETON2 - dc.w SPR_SKELETON3 - dc.w SPR_MIMIC1 - dc.w SPR_MIMIC2 - dc.w SPR_MIMIC3 - dc.w SPR_MUSHROOM1 - dc.w SPR_MUSHROOM2 - dc.w SPR_MUSHROOM3 - dc.w SPR_GIANT1 - dc.w SPR_GIANT2 - dc.w SPR_GIANT3 - dc.w SPR_BUBBLE1 - dc.w SPR_BUBBLE2 - dc.w SPR_BUBBLE3 - dc.w SPR_NIGEL - dc.w SPR_MIR - dc.w SPR_REAPER1 - dc.w SPR_SMLFIREBALL - dc.w SPR_DUKE - dc.w SPR_GHOSTGEN1 - dc.w SPR_GHOSTGEN2 - dc.w SPR_GHOSTGEN3 - dc.w SPR_ZAK - dc.w SPR_GOLEM1 - dc.w SPR_GOLEM2 - dc.w SPR_GOLEM3 - dc.w SPR_REAPER2 - dc.w SPR_UNUSEDREAPER3 - dc.w SPR_SPECTRE1 - dc.w SPR_SPECTRE2 - dc.w SPR_SPECTRE3 - dc.w SPR_UNUSEDBIRD1 - dc.w SPR_UNUSEDBIRD2 - dc.w SPR_UNUSEDBIRD3 - dc.w SPR_SPINNER1 - dc.w SPR_MIRO - dc.w SPR_IFRIT - dc.w SPR_GOLA - dc.w SPR_NOLE - dc.w SPR_STONEWARRIOR1 - dc.w SPR_BUBBLE4 - dc.w SPR_BUBBLE5 - dc.w SPR_BUBBLE6 - dc.w SPR_SPINNER2 - dc.w SPR_STONEWARRIOR2 - dc.w $FFFF -; --------------------------------------------------------------------------- - -loc_1A84A6: ; DATA XREF: sub_1A83F0:loc_1A840Et - bra.w EnemyAI_Orc1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Orc1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Orc2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Orc2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Orc3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Orc3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Worm3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ninja3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Lizard3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Knight3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ghost3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mummy3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Unicorn3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Skeleton3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mimic3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mushroom3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Giant3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Miro_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Miro_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mir_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Mir_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_SmallFireball_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_SmallFireball_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Duke_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Duke_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_GhostGen_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Zak_A_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Zak_B_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem1_A_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem1_B_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem2_A_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem2_B_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem2_A_0 ; Golem3 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Golem2_B_0 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Reaper3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spectre3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird1_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird1_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird2_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird2_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird3_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bird3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spinner_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spinner_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Miro_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Miro_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ifrit_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Ifrit_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Gola_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Gola_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Nole_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Nole_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_StoneWarrior_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_StoneWarrior_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_A ; Bubble4 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_A ; Bubble5 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_A ; Bubble6 -; --------------------------------------------------------------------------- - bra.w EnemyAI_Bubble3_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spinner_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_Spinner_B -; --------------------------------------------------------------------------- - bra.w EnemyAI_StoneWarrior_A -; --------------------------------------------------------------------------- - bra.w EnemyAI_StoneWarrior_B - -; =============== S U B R O U T I N E ======================================= - - -sub_1A86D6: ; CODE XREF: sub_1A83E6+414p - ; DATA XREF: sub_1A440Ct - move.w #$0004,d1 - bsr.w sub_1A83F0 - bra.w LoadSpecialAI -; End of function sub_1A86D6 - -; --------------------------------------------------------------------------- - -EnemyAI_SmallFireball_B: ; CODE XREF: ROM:001A85FAj - nop - -EnemyAI_SmallFireball_A: ; CODE XREF: ROM:001A85F6j - bset #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_GhostGen_B: ; CODE XREF: ROM:001A860Aj - ; ROM:001A8612j ... - bra.s loc_1A86FC -; --------------------------------------------------------------------------- - -EnemyAI_GhostGen_A: ; CODE XREF: ROM:001A8606j - ; ROM:001A860Ej ... - clr.b $00000009(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A86FC: ; CODE XREF: ROM:EnemyAI_GhostGen_Bj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A83E6 - -loc_1A870E: ; CODE XREF: sub_1A83E6+4j - cmpi.b #$18,$0000004B(a5) - beq.s loc_1A8718 - -locret_1A8716: ; CODE XREF: sub_1A83E6+33Aj - ; sub_1A83E6+34Ej - rts -; --------------------------------------------------------------------------- - -loc_1A8718: ; CODE XREF: sub_1A83E6+32Ej - lea (Sprite1_X).l,a0 - -loc_1A871E: ; CODE XREF: sub_1A83E6+348j - move.w (a0),d0 - bmi.s locret_1A8716 - cmpi.b #$11,$0000000B(a0) - beq.s loc_1A8730 - lea $00000080(a0),a0 - bra.s loc_1A871E -; --------------------------------------------------------------------------- - -loc_1A8730: ; CODE XREF: sub_1A83E6+342j - cmpi.b #$7F,d0 - beq.s locret_1A8716 - move.w $00000040(a5),(a5) - move.w $00000042(a5),$00000002(a5) - move.w $00000044(a5),$00000004(a5) - andi.b #$1F,$00000006(a5) - move.b $00000046(a5),d0 - or.b d0,$00000006(a5) - move.w $0000004A(a5),$0000000A(a5) - move.b $0000004C(a5),$0000000C(a5) - move.w $00000052(a5),$00000012(a5) - move.w $0000006A(a5),$0000002A(a5) - move.l $00000072(a5),$00000032(a5) - move.b $00000076(a5),$00000036(a5) - move.w $0000007A(a5),$0000003A(a5) - move.w $0000007E(a5),$0000003E(a5) - bclr #$00,$00000008(a5) - clr.b $00000037(a5) - clr.b $00000038(a5) - movea.l a5,a1 - jsr (j_LookupSpriteUnknownVal6F).l - bsr.w sub_1A8AE6 - jsr (sub_3BC).l - bcc.s loc_1A87D2 -; END OF FUNCTION CHUNK FOR sub_1A83E6 - -; =============== S U B R O U T I N E ======================================= - - -MoveSpriteOffscreen: ; CODE XREF: ROM:loc_1A78B4p - ; ROM:loc_1A7AB8p ... - move.b #$7F,(a5) - move.b #$7F,$00000001(a5) - move.b #$7F,$00000014(a5) - move.b #$7F,$00000016(a5) - move.b #$7F,$00000018(a5) - move.b #$7F,$0000001A(a5) - rts -; End of function MoveSpriteOffscreen - - -; =============== S U B R O U T I N E ======================================= - - -HideSprite: ; DATA XREF: j_HideSpritet - ori.b #$01,$00000008(a5) - bra.s MoveSpriteOffscreen -; End of function HideSprite - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A83E6 - -loc_1A87D2: ; CODE XREF: sub_1A83E6+3BEj - clr.w $0000002C(a5) - move.w #$FFFF,$0000002E(a5) - clr.w $00000026(a5) - ori.b #$80,$0000000A(a5) - cmpi.b #$18,$0000000B(a5) - bne.s loc_1A8800 - move.w #$0008,$00000024(a5) - bset #$07,$00000048(a5) - bsr.w sub_1A86D6 - rts -; --------------------------------------------------------------------------- - -loc_1A8800: ; CODE XREF: sub_1A83E6+406j - bset #$07,$00000048(a5) - clr.w $00000024(a5) - rts -; END OF FUNCTION CHUNK FOR sub_1A83E6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1A880C: ; CODE XREF: ROM:001A4E9Cp - ; ROM:001A50C8p ... - bsr.s sub_1A8824 - bcc.s locret_1A8822 - move.b d0,(byte_FF1143).l - move.w AttackStrength(a5),(Player_AttackStrength).l - ori #$01,ccr - -locret_1A8822: ; CODE XREF: sub_1A880C+2j - rts -; End of function sub_1A880C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8824: ; CODE XREF: sub_1A880Cp - move.w d3,d4 - move.w $00000012(a5),d5 - move.w $00000054(a5),d6 - lea (Player_X).l,a1 - move.b $00000004(a5),d7 - andi.b #$C0,d7 - beq.s loc_1A8890 - cmpi.b #$80,d7 - beq.w loc_1A88D8 - bcs.w loc_1A891E - neg.w d1 - add.w $00000014(a5),d1 - add.w $00000014(a5),d2 - neg.w d3 - add.w $00000016(a5),d3 - add.w $00000016(a5),d4 - cmp.w $0000001A(a1),d1 - bhi.s loc_1A888C - cmp.w $00000018(a1),d2 - bcs.s loc_1A888C - cmp.w $0000001E(a1),d3 - bhi.s loc_1A888C - cmp.w $0000001C(a1),d4 - bcs.s loc_1A888C - cmp.w $00000054(a1),d5 - bhi.s loc_1A888C - cmp.w $00000012(a1),d6 - bcs.s loc_1A888C - move.b #$43,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A888C: ; CODE XREF: sub_1A8824+3Ej - ; sub_1A8824+44j ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A8890: ; CODE XREF: sub_1A8824+18j - neg.w d1 - add.w $00000016(a5),d1 - add.w $00000016(a5),d2 - add.w $00000014(a5),d3 - neg.w d4 - add.w $00000014(a5),d4 - cmp.w $0000001E(a1),d1 - bhi.s loc_1A88D4 - cmp.w $0000001C(a1),d2 - bcs.s loc_1A88D4 - cmp.w $00000018(a1),d3 - bcs.w loc_1A88D4 - cmp.w $0000001A(a1),d4 - bhi.s loc_1A88D4 - cmp.w $00000054(a1),d5 - bhi.s loc_1A88D4 - cmp.w $00000012(a1),d6 - bcs.s loc_1A88D4 - move.b #$40,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A88D4: ; CODE XREF: sub_1A8824+84j - ; sub_1A8824+8Aj ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A88D8: ; CODE XREF: sub_1A8824+1Ej - add.w $00000016(a5),d1 - neg.w d2 - add.w $00000016(a5),d2 - neg.w d3 - add.w $00000014(a5),d3 - add.w $00000014(a5),d4 - cmp.w $0000001C(a1),d1 - bcs.s loc_1A891A - cmp.w $0000001E(a1),d2 - bhi.s loc_1A891A - cmp.w $0000001A(a1),d3 - bhi.s loc_1A891A - cmp.w $00000018(a1),d4 - bcs.s loc_1A891A - cmp.w $00000054(a1),d5 - bhi.s loc_1A891A - cmp.w $00000012(a1),d6 - bcs.s loc_1A891A - move.b #$42,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A891A: ; CODE XREF: sub_1A8824+CCj - ; sub_1A8824+D2j ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A891E: ; CODE XREF: sub_1A8824+22j - add.w $00000014(a5),d1 - neg.w d2 - add.w $00000014(a5),d2 - add.w $00000016(a5),d3 - neg.w d4 - add.w $00000016(a5),d4 - cmp.w $00000018(a1),d1 - bcs.s loc_1A8960 - cmp.w $0000001A(a1),d2 - bhi.s loc_1A8960 - cmp.w $0000001C(a1),d3 - bcs.s loc_1A8960 - cmp.w $0000001E(a1),d4 - bhi.s loc_1A8960 - cmp.w $00000054(a1),d5 - bhi.s loc_1A8960 - cmp.w $00000012(a1),d6 - bcs.s loc_1A8960 - move.b #$41,d0 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8960: ; CODE XREF: sub_1A8824+112j - ; sub_1A8824+118j ... - tst.b d0 - rts -; End of function sub_1A8824 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8964: ; CODE XREF: ROM:001A4CCEp - ; sub_1A4D0E+Cp ... - move.b $00000004(a5),d0 - andi.b #$C0,d0 - beq.s loc_1A89C8 - cmpi.b #$80,d0 - bcs.w loc_1A8A16 - beq.w loc_1A8A5C - move.w (word_FF1800).l,d1 - sub.w d5,d1 - cmp.w (Player_CentreX).l,d1 - bhi.w loc_1A8AA2 - move.w (word_FF1800).l,d1 - add.w d6,d1 - cmp.w (Player_CentreX).l,d1 - bcs.w loc_1A8AA2 - move.w (dword_FF1804).l,d2 - sub.w d7,d2 - cmp.w (Player_CentreY).l,d2 - bhi.w loc_1A8AA2 - move.w (dword_FF1804).l,d2 - add.w d7,d2 - cmp.w (Player_CentreY).l,d2 - bcs.w loc_1A8AA2 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A89C8: ; CODE XREF: sub_1A8964+8j - move.w (word_FF1800).l,d1 - sub.w d7,d1 - cmp.w (Player_CentreX).l,d1 - bhi.w loc_1A8AA2 - move.w (word_FF1800).l,d1 - add.w d7,d1 - cmp.w (Player_CentreX).l,d1 - bcs.w loc_1A8AA2 - move.w (dword_FF1804).l,d2 - sub.w d5,d2 - cmp.w (Player_CentreY).l,d2 - bhi.w loc_1A8AA2 - move.w (dword_FF1804).l,d2 - add.w d6,d2 - cmp.w (Player_CentreY).l,d2 - bcs.w loc_1A8AA2 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8A16: ; CODE XREF: sub_1A8964+Ej - move.w (word_FF1800).l,d1 - add.w d5,d1 - cmp.w (Player_CentreX).l,d1 - bcs.s loc_1A8AA2 - move.w (word_FF1800).l,d1 - sub.w d6,d1 - cmp.w (Player_CentreX).l,d1 - bhi.s loc_1A8AA2 - move.w (dword_FF1804).l,d2 - sub.w d7,d2 - cmp.w (Player_CentreY).l,d2 - bhi.s loc_1A8AA2 - move.w (dword_FF1804).l,d2 - add.w d7,d2 - cmp.w (Player_CentreY).l,d2 - bcs.s loc_1A8AA2 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8A5C: ; CODE XREF: sub_1A8964+12j - move.w (word_FF1800).l,d1 - sub.w d7,d1 - cmp.w (Player_CentreX).l,d1 - bhi.s loc_1A8AA2 - move.w (word_FF1800).l,d1 - add.w d7,d1 - cmp.w (Player_CentreX).l,d1 - bcs.s loc_1A8AA2 - move.w (dword_FF1804).l,d2 - add.w d5,d2 - cmp.w (Player_CentreY).l,d2 - bcs.s loc_1A8AA2 - move.w (dword_FF1804).l,d2 - sub.w d6,d2 - cmp.w (Player_CentreY).l,d2 - bhi.s loc_1A8AA2 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8AA2: ; CODE XREF: sub_1A8964+24j - ; sub_1A8964+36j ... - tst.b d0 - rts -; End of function sub_1A8964 - -; --------------------------------------------------------------------------- - -loc_1A8AA6: ; CODE XREF: ROM:loc_1A4D0Aj - ; ROM:loc_1A4F30j ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1ACD54 - -loc_1A8AB6: ; CODE XREF: ROM:loc_1A4CD6j - ; ROM:loc_1A4EFCj ... - move.w #$0006,BehaviourLUTIndex(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,ChestIndex(a5) - bclr #$01,Flags2(a5) - rts -; END OF FUNCTION CHUNK FOR sub_1ACD54 - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -j_j_RemoveHealth: ; CODE XREF: ROM:001A769Ap - ; ROM:001A7864p ... - jmp (j_RemoveHealth).l -; End of function j_j_RemoveHealth - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -j_j_AddStatusEffect: ; CODE XREF: ROM:001A5AA6p - ; ROM:loc_1A5EC2p ... - jmp (j_AddStatusEffect).l -; End of function j_j_AddStatusEffect - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -LoadSpecialAI: ; CODE XREF: ROM:loc_1A4CA8p - ; ROM:loc_1A4CAEp ... - jmp (sub_1039C).l -; End of function LoadSpecialAI - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -j_j_LoadSpriteBehaviour: ; CODE XREF: sub_1A4D0E+40p - ; sub_1A4D5C+40p ... - jmp (j_LoadSpriteBehaviour).l -; End of function j_j_LoadSpriteBehaviour - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -sub_1A8AE6: ; CODE XREF: sub_1A83E6+3B4p - ; DATA XREF: ROM:001A6412t ... - jmp (sub_1038E).l -; End of function sub_1A8AE6 - -; --------------------------------------------------------------------------- - -loc_1A8AEC: ; CODE XREF: ROM:001A76B4j - ; ROM:001A787Ej ... - jmp (loc_10394).l -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn1_B: ; CODE XREF: ROM:001A8552j - bra.s sub_1A8B40 -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn1_A: ; CODE XREF: ROM:001A854Ej - bclr #$01,$00000038(a5) - btst #$01,$0000000C(a5) - bne.s loc_1A8B12 - move.b $00000037(a5),d0 - beq.s loc_1A8B18 - cmpi.b #$10,d0 - beq.s loc_1A8B5E - bra.w loc_1A8CCA -; --------------------------------------------------------------------------- - -loc_1A8B12: ; CODE XREF: ROM:001A8B00j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8B18: ; CODE XREF: ROM:001A8B06j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s sub_1A8B40 - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8B40: ; CODE XREF: ROM:EnemyAI_Unicorn1_Bj - ; ROM:001A8B3Cj ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - bclr #$01,$00000038(a5) - rts -; End of function sub_1A8B40 - -; --------------------------------------------------------------------------- - -loc_1A8B5E: ; CODE XREF: ROM:001A8B0Cj - tst.b (byte_FF1142).l - bne.s loc_1A8B8A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A8B9A - bcs.s loc_1A8B84 - bsr.w sub_1A8C1E - bcs.s loc_1A8B84 - bsr.w sub_1A8C9E - -loc_1A8B84: ; CODE XREF: ROM:001A8B78j - ; ROM:001A8B7Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8B8A: ; CODE XREF: ROM:001A8B64j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8B9A: ; CODE XREF: ROM:001A8B76p - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8C1A - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A8C1A - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A8C16 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bls.w loc_1A8C00 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8C00: ; CODE XREF: sub_1A8B9A+4Cj - ; ROM:001A8D5Cj - move.b #$21,$00000037(a5) - move.w #$0018,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8C16: ; CODE XREF: sub_1A8B9A+3Cj - bsr.w sub_1A8B40 - -loc_1A8C1A: ; CODE XREF: sub_1A8B9A+10j - ; sub_1A8B9A+22j - tst.b d0 - rts -; End of function sub_1A8B9A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8C1E: ; CODE XREF: ROM:001A8B7Ap - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8C84 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A8C84 - move.b (Player_AnimAction).l,d0 - andi.b #$07,d0 - beq.w loc_1A8C88 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bhi.s loc_1A8C84 - bset #$01,$00000038(a5) - move.b #$22,$00000037(a5) - move.w #$0017,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8C84: ; CODE XREF: sub_1A8C1E+10j - ; sub_1A8C1E+2Aj ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A8C88: ; CODE XREF: sub_1A8C1E+36j - move.b #$23,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A8C1E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8C9E: ; CODE XREF: ROM:001A8B80p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8CC6 - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8CC6: ; CODE XREF: sub_1A8C9E+10j - tst.b d0 - rts -; End of function sub_1A8C9E - -; --------------------------------------------------------------------------- - -loc_1A8CCA: ; CODE XREF: ROM:001A8B0Ej - andi.b #$0F,d0 - beq.s loc_1A8CEC - cmpi.b #$01,d0 - beq.w loc_1A8D74 - cmpi.b #$02,d0 - beq.w loc_1A8DA6 - cmpi.b #$03,d0 - beq.w loc_1A8D7A - bra.w loc_1A8D7A -; --------------------------------------------------------------------------- - -loc_1A8CEC: ; CODE XREF: ROM:001A8CCEj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.w sub_1A8B40 - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.w sub_1A8B40 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.w sub_1A8B40 - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.b #$0F,d0 - bne.s loc_1A8D60 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcs.w loc_1A8C00 - -loc_1A8D60: ; CODE XREF: ROM:001A8D4Cj - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - lsl.w #$04,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A8D74: ; CODE XREF: ROM:001A8CD4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8D7A: ; CODE XREF: ROM:001A8CE4j - ; ROM:001A8CE8j - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0100,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s loc_1A8DA0 - bra.w sub_1A8B40 -; --------------------------------------------------------------------------- - -loc_1A8DA0: ; CODE XREF: ROM:001A8D9Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8DA6: ; CODE XREF: ROM:001A8CDCj - bset #$01,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn2_B: ; CODE XREF: ROM:001A855Aj - bra.s sub_1A8E00 -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn2_A: ; CODE XREF: ROM:001A8556j - bclr #$01,$00000038(a5) - btst #$01,$0000000C(a5) - bne.s loc_1A8DD2 - move.b $00000037(a5),d0 - beq.s loc_1A8DD8 - cmpi.b #$10,d0 - beq.s loc_1A8E1E - bra.w loc_1A8F8A -; --------------------------------------------------------------------------- - -loc_1A8DD2: ; CODE XREF: ROM:001A8DC0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8DD8: ; CODE XREF: ROM:001A8DC6j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s sub_1A8E00 - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8E00: ; CODE XREF: ROM:EnemyAI_Unicorn2_Bj - ; ROM:001A8DFCj ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - bclr #$01,$00000038(a5) - rts -; End of function sub_1A8E00 - -; --------------------------------------------------------------------------- - -loc_1A8E1E: ; CODE XREF: ROM:001A8DCCj - tst.b (byte_FF1142).l - bne.s loc_1A8E4A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A8E5A - bcs.s loc_1A8E44 - bsr.w sub_1A8EDE - bcs.s loc_1A8E44 - bsr.w sub_1A8F5E - -loc_1A8E44: ; CODE XREF: ROM:001A8E38j - ; ROM:001A8E3Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A8E4A: ; CODE XREF: ROM:001A8E24j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8E5A: ; CODE XREF: ROM:001A8E36p - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8EDA - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A8EDA - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A8ED6 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bls.w loc_1A8EC0 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8EC0: ; CODE XREF: sub_1A8E5A+4Cj - ; ROM:001A901Cj - move.b #$21,$00000037(a5) - move.w #$0018,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8ED6: ; CODE XREF: sub_1A8E5A+3Cj - bsr.w sub_1A8E00 - -loc_1A8EDA: ; CODE XREF: sub_1A8E5A+10j - ; sub_1A8E5A+22j - tst.b d0 - rts -; End of function sub_1A8E5A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8EDE: ; CODE XREF: ROM:001A8E3Ap - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8F44 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A8F44 - move.b (Player_AnimAction).l,d0 - andi.b #$07,d0 - beq.w loc_1A8F48 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bhi.s loc_1A8F44 - bset #$01,$00000038(a5) - move.b #$22,$00000037(a5) - move.w #$0017,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8F44: ; CODE XREF: sub_1A8EDE+10j - ; sub_1A8EDE+2Aj ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A8F48: ; CODE XREF: sub_1A8EDE+36j - move.b #$23,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A8EDE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A8F5E: ; CODE XREF: ROM:001A8E40p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A8F86 - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A8F86: ; CODE XREF: sub_1A8F5E+10j - tst.b d0 - rts -; End of function sub_1A8F5E - -; --------------------------------------------------------------------------- - -loc_1A8F8A: ; CODE XREF: ROM:001A8DCEj - andi.b #$0F,d0 - beq.s loc_1A8FAC - cmpi.b #$01,d0 - beq.w loc_1A9034 - cmpi.b #$02,d0 - beq.w loc_1A9066 - cmpi.b #$03,d0 - beq.w loc_1A903A - bra.w loc_1A903A -; --------------------------------------------------------------------------- - -loc_1A8FAC: ; CODE XREF: ROM:001A8F8Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.w sub_1A8E00 - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.w sub_1A8E00 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.w sub_1A8E00 - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.b #$0F,d0 - bne.s loc_1A9020 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcs.w loc_1A8EC0 - -loc_1A9020: ; CODE XREF: ROM:001A900Cj - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - lsl.w #$04,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9034: ; CODE XREF: ROM:001A8F94j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A903A: ; CODE XREF: ROM:001A8FA4j - ; ROM:001A8FA8j - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0100,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s loc_1A9060 - bra.w sub_1A8E00 -; --------------------------------------------------------------------------- - -loc_1A9060: ; CODE XREF: ROM:001A905Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9066: ; CODE XREF: ROM:001A8F9Cj - bset #$01,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn3_B: ; CODE XREF: ROM:001A8562j - bra.s sub_1A90C0 -; --------------------------------------------------------------------------- - -EnemyAI_Unicorn3_A: ; CODE XREF: ROM:001A855Ej - bclr #$01,$00000038(a5) - btst #$01,$0000000C(a5) - bne.s loc_1A9092 - move.b $00000037(a5),d0 - beq.s loc_1A9098 - cmpi.b #$10,d0 - beq.s loc_1A90DE - bra.w loc_1A924A -; --------------------------------------------------------------------------- - -loc_1A9092: ; CODE XREF: ROM:001A9080j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9098: ; CODE XREF: ROM:001A9086j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s sub_1A90C0 - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A90C0: ; CODE XREF: ROM:EnemyAI_Unicorn3_Bj - ; ROM:001A90BCj ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - bclr #$01,$00000038(a5) - rts -; End of function sub_1A90C0 - -; --------------------------------------------------------------------------- - -loc_1A90DE: ; CODE XREF: ROM:001A908Cj - tst.b (byte_FF1142).l - bne.s loc_1A910A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A911A - bcs.s loc_1A9104 - bsr.w sub_1A919E - bcs.s loc_1A9104 - bsr.w sub_1A921E - -loc_1A9104: ; CODE XREF: ROM:001A90F8j - ; ROM:001A90FEj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A910A: ; CODE XREF: ROM:001A90E4j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A911A: ; CODE XREF: ROM:001A90F6p - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.s loc_1A919A - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1A919A - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A9196 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bls.w loc_1A9180 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9180: ; CODE XREF: sub_1A911A+4Cj - ; ROM:001A92DCj - move.b #$21,$00000037(a5) - move.w #$0018,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9196: ; CODE XREF: sub_1A911A+3Cj - bsr.w sub_1A90C0 - -loc_1A919A: ; CODE XREF: sub_1A911A+10j - ; sub_1A911A+22j - tst.b d0 - rts -; End of function sub_1A911A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A919E: ; CODE XREF: ROM:001A90FAp - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9204 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A9204 - move.b (Player_AnimAction).l,d0 - andi.b #$07,d0 - beq.w loc_1A9208 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bhi.s loc_1A9204 - bset #$01,$00000038(a5) - move.b #$22,$00000037(a5) - move.w #$0017,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9204: ; CODE XREF: sub_1A919E+10j - ; sub_1A919E+2Aj ... - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1A9208: ; CODE XREF: sub_1A919E+36j - move.b #$23,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; End of function sub_1A919E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A921E: ; CODE XREF: ROM:001A9100p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9246 - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9246: ; CODE XREF: sub_1A921E+10j - tst.b d0 - rts -; End of function sub_1A921E - -; --------------------------------------------------------------------------- - -loc_1A924A: ; CODE XREF: ROM:001A908Ej - andi.b #$0F,d0 - beq.s loc_1A926C - cmpi.b #$01,d0 - beq.w loc_1A92F4 - cmpi.b #$02,d0 - beq.w loc_1A9326 - cmpi.b #$03,d0 - beq.w loc_1A92FA - bra.w loc_1A92FA -; --------------------------------------------------------------------------- - -loc_1A926C: ; CODE XREF: ROM:001A924Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.w sub_1A90C0 - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.w sub_1A90C0 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.w sub_1A90C0 - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.b #$0F,d0 - bne.s loc_1A92E0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bcs.w loc_1A9180 - -loc_1A92E0: ; CODE XREF: ROM:001A92CCj - move.b $0000000D(a5),d0 - andi.w #$0010,d0 - lsl.w #$04,d0 - addi.w #$0200,d0 - move.w d0,$0000002C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A92F4: ; CODE XREF: ROM:001A9254j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A92FA: ; CODE XREF: ROM:001A9264j - ; ROM:001A9268j - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0100,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s loc_1A9320 - bra.w sub_1A90C0 -; --------------------------------------------------------------------------- - -loc_1A9320: ; CODE XREF: ROM:001A931Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9326: ; CODE XREF: ROM:001A925Cj - bset #$01,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton1_B: ; CODE XREF: ROM:001A856Aj - bra.s loc_1A937A -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton1_A: ; CODE XREF: ROM:001A8566j - btst #$01,$0000000C(a5) - bne.s loc_1A934C - move.b $00000037(a5),d0 - beq.s loc_1A9352 - cmpi.b #$10,d0 - beq.s loc_1A9392 - bra.w loc_1A94E8 -; --------------------------------------------------------------------------- - -loc_1A934C: ; CODE XREF: ROM:001A933Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9352: ; CODE XREF: ROM:001A9340j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A937A - rts -; --------------------------------------------------------------------------- - -loc_1A937A: ; CODE XREF: ROM:EnemyAI_Skeleton1_Bj - ; ROM:001A9376j ... - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9392: ; CODE XREF: ROM:001A9346j - tst.b (byte_FF1142).l - bne.s loc_1A93C2 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A93D2 - bcs.s loc_1A93BC - bsr.s sub_1A940E - bcs.s loc_1A93BC - bsr.w sub_1A944E - bcs.s loc_1A93BC - bsr.w sub_1A948E - -loc_1A93BC: ; CODE XREF: ROM:001A93ACj - ; ROM:001A93B0j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A93C2: ; CODE XREF: ROM:001A9398j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A93D2: ; CODE XREF: ROM:001A93AAp - move.w #$0090,d5 - move.w #$FFA0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A940A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0024,d7 - bhi.s loc_1A940A - move.b #$20,$00000037(a5) - move.w #$0014,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A940A: ; CODE XREF: sub_1A93D2+10j - ; sub_1A93D2+20j - tst.b d0 - rts -; End of function sub_1A93D2 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A940E: ; CODE XREF: ROM:001A93AEp - move.w #$0040,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A944A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0024,d7 - bhi.s loc_1A944A - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A944A: ; CODE XREF: sub_1A940E+10j - ; sub_1A940E+20j - tst.b d0 - rts -; End of function sub_1A940E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A944E: ; CODE XREF: ROM:001A93B2p - move.w #$0048,d5 - move.w #$FFD8,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A948A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0024,d7 - bhi.s loc_1A948A - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A948A: ; CODE XREF: sub_1A944E+10j - ; sub_1A944E+20j - tst.b d0 - rts -; End of function sub_1A944E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A948E: ; CODE XREF: ROM:001A93B8p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A94E4 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bcc.s loc_1A94CA - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A94CA: ; CODE XREF: sub_1A948E+20j - move.b #$24,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A94E4: ; CODE XREF: sub_1A948E+10j - tst.b d0 - rts -; End of function sub_1A948E - -; --------------------------------------------------------------------------- - -loc_1A94E8: ; CODE XREF: ROM:001A9348j - andi.b #$0F,d0 - beq.s loc_1A9506 - cmpi.b #$01,d0 - beq.s loc_1A950C - cmpi.b #$02,d0 - beq.s loc_1A9546 - cmpi.b #$03,d0 - beq.w loc_1A950C - bra.w loc_1A950C -; --------------------------------------------------------------------------- - -loc_1A9506: ; CODE XREF: ROM:001A94ECj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A950C: ; CODE XREF: ROM:001A94F2j - ; ROM:001A94FEj ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9540 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A9540 - beq.w loc_1A937A - -loc_1A9540: ; CODE XREF: ROM:001A951Cj - ; ROM:001A953Aj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9546: ; CODE XREF: ROM:001A94F8j - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9540 - bra.w loc_1A937A -; --------------------------------------------------------------------------- - jsr (sub_103B2).l - bcs.w loc_1A95D4 - move.w (a5),d0 - move.b $00000004(a5),d1 - andi.b #$C0,d1 - eori.b #$80,d1 - beq.s loc_1A9594 - cmpi.b #$80,d1 - bcs.s loc_1A9598 - beq.s loc_1A959E - subi.w #$0200,d0 - bra.s loc_1A95A0 -; --------------------------------------------------------------------------- - -loc_1A9594: ; CODE XREF: ROM:001A9584j - subq.b #$02,d0 - bra.s loc_1A95A0 -; --------------------------------------------------------------------------- - -loc_1A9598: ; CODE XREF: ROM:001A958Aj - addi.w #$0200,d0 - bra.s loc_1A95A0 -; --------------------------------------------------------------------------- - -loc_1A959E: ; CODE XREF: ROM:001A958Cj - addq.b #$02,d0 - -loc_1A95A0: ; CODE XREF: ROM:001A9592j - ; ROM:001A9596j ... - move.w d0,(a1) - move.b d1,$00000004(a1) - move.b #$78,d2 - move.w $00000012(a5),d3 - addi.w #$0010,d3 - move.w d3,$00000012(a1) - move.w $00000002(a5),$00000002(a1) - move.w #$47C0,$00000006(a1) - move.w #$013C,$00000034(a1) - move.b #$04,$00000009(a1) - jsr (sub_103B8).l - -loc_1A95D4: ; CODE XREF: ROM:001A9572j - bra.w loc_1A937A -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton2_B: ; CODE XREF: ROM:001A8572j - bra.s loc_1A9626 -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton2_A: ; CODE XREF: ROM:001A856Ej - btst #$01,$0000000C(a5) - bne.s loc_1A95F2 - move.b $00000037(a5),d0 - beq.s loc_1A95FE - cmpi.b #$10,d0 - beq.s loc_1A9644 - bra.w loc_1A97B4 -; --------------------------------------------------------------------------- - -loc_1A95F2: ; CODE XREF: ROM:001A95E0j - bclr #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A95FE: ; CODE XREF: ROM:001A95E6j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A9626 - rts -; --------------------------------------------------------------------------- - -loc_1A9626: ; CODE XREF: ROM:EnemyAI_Skeleton2_Bj - ; ROM:001A9622j ... - bclr #$00,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9644: ; CODE XREF: ROM:001A95ECj - tst.b (byte_FF1142).l - bne.s loc_1A9674 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A9684 - bcs.s loc_1A966E - bsr.s sub_1A96C0 - bcs.s loc_1A966E - bsr.w sub_1A971A - bcs.s loc_1A966E - bsr.w sub_1A975A - -loc_1A966E: ; CODE XREF: ROM:001A965Ej - ; ROM:001A9662j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9674: ; CODE XREF: ROM:001A964Aj - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9684: ; CODE XREF: ROM:001A965Cp - move.w #$0070,d5 - move.w #$FFB0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A96BC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003E,d7 - bhi.s loc_1A96BC - move.b #$20,$00000037(a5) - move.w #$0019,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A96BC: ; CODE XREF: sub_1A9684+10j - ; sub_1A9684+20j - tst.b d0 - rts -; End of function sub_1A9684 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A96C0: ; CODE XREF: ROM:001A9660p - move.w #$0050,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9716 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - eori.b #$80,d0 - move.b (Player_RotationAndSize).l,d1 - andi.b #$C0,d1 - cmp.b d0,d1 - bne.s loc_1A9716 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bhi.s loc_1A9716 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9716: ; CODE XREF: sub_1A96C0+10j - ; sub_1A96C0+2Aj ... - tst.b d0 - rts -; End of function sub_1A96C0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A971A: ; CODE XREF: ROM:001A9664p - move.w #$0030,d5 - move.w #$FFE0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9756 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1A9756 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9756: ; CODE XREF: sub_1A971A+10j - ; sub_1A971A+20j - tst.b d0 - rts -; End of function sub_1A971A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A975A: ; CODE XREF: ROM:001A966Ap - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A97B0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bcc.s loc_1A9796 - move.b #$23,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9796: ; CODE XREF: sub_1A975A+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A97B0: ; CODE XREF: sub_1A975A+10j - tst.b d0 - rts -; End of function sub_1A975A - -; --------------------------------------------------------------------------- - -loc_1A97B4: ; CODE XREF: ROM:001A95EEj - andi.b #$0F,d0 - beq.s loc_1A97D4 - cmpi.b #$01,d0 - beq.s loc_1A9808 - cmpi.b #$02,d0 - beq.w loc_1A985E - cmpi.b #$03,d0 - beq.w loc_1A9824 - bra.w loc_1A9824 -; --------------------------------------------------------------------------- - -loc_1A97D4: ; CODE XREF: ROM:001A97B8j - btst #$05,$0000002D(a5) - beq.s loc_1A97E4 - move.w #$0100,$0000002C(a5) - bra.s loc_1A9802 -; --------------------------------------------------------------------------- - -loc_1A97E4: ; CODE XREF: ROM:001A97DAj - btst #$04,$0000002D(a5) - beq.s loc_1A9802 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - -loc_1A9802: ; CODE XREF: ROM:001A97E2j - ; ROM:001A97EAj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9808: ; CODE XREF: ROM:001A97BEj - bset #$00,$00000038(a5) - move.w #$0400,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$28,$0000000D(a5) - bcc.w loc_1A9626 - rts -; --------------------------------------------------------------------------- - -loc_1A9824: ; CODE XREF: ROM:001A97CCj - ; ROM:001A97D0j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9858 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A9858 - beq.w loc_1A9626 - -loc_1A9858: ; CODE XREF: ROM:001A9834j - ; ROM:001A9852j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A985E: ; CODE XREF: ROM:001A97C4j - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9858 - bra.w loc_1A9626 -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton3_B: ; CODE XREF: ROM:001A857Aj - bra.s loc_1A98D2 -; --------------------------------------------------------------------------- - -EnemyAI_Skeleton3_A: ; CODE XREF: ROM:001A8576j - btst #$01,$0000000C(a5) - bne.s loc_1A989E - move.b $00000037(a5),d0 - beq.s loc_1A98AA - cmpi.b #$10,d0 - beq.s loc_1A98F0 - bra.w loc_1A9A46 -; --------------------------------------------------------------------------- - -loc_1A989E: ; CODE XREF: ROM:001A988Cj - bclr #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A98AA: ; CODE XREF: ROM:001A9892j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1A98D2 - rts -; --------------------------------------------------------------------------- - -loc_1A98D2: ; CODE XREF: ROM:EnemyAI_Skeleton3_Bj - ; ROM:001A98CEj ... - bclr #$00,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A98F0: ; CODE XREF: ROM:001A9898j - tst.b (byte_FF1142).l - bne.s loc_1A9920 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A9930 - bcs.s loc_1A991A - bsr.s sub_1A996C - bcs.s loc_1A991A - bsr.w sub_1A99AC - bcs.s loc_1A991A - bsr.w sub_1A99EC - -loc_1A991A: ; CODE XREF: ROM:001A990Aj - ; ROM:001A990Ej ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9920: ; CODE XREF: ROM:001A98F6j - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9930: ; CODE XREF: ROM:001A9908p - move.w #$0070,d5 - move.w #$FFB0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9968 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0056,d7 - bhi.s loc_1A9968 - move.b #$20,$00000037(a5) - move.w #$001A,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9968: ; CODE XREF: sub_1A9930+10j - ; sub_1A9930+20j - tst.b d0 - rts -; End of function sub_1A9930 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A996C: ; CODE XREF: ROM:001A990Cp - move.w #$0050,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1A99A8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$007D,d7 - bhi.s loc_1A99A8 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A99A8: ; CODE XREF: sub_1A996C+10j - ; sub_1A996C+20j - tst.b d0 - rts -; End of function sub_1A996C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A99AC: ; CODE XREF: ROM:001A9910p - move.w #$0030,d5 - move.w #$FFE0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A99E8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$002B,d7 - bhi.s loc_1A99E8 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A99E8: ; CODE XREF: sub_1A99AC+10j - ; sub_1A99AC+20j - tst.b d0 - rts -; End of function sub_1A99AC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A99EC: ; CODE XREF: ROM:001A9916p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9A42 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1A9A28 - move.b #$23,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9A28: ; CODE XREF: sub_1A99EC+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9A42: ; CODE XREF: sub_1A99EC+10j - tst.b d0 - rts -; End of function sub_1A99EC - -; --------------------------------------------------------------------------- - -loc_1A9A46: ; CODE XREF: ROM:001A989Aj - andi.b #$0F,d0 - beq.s loc_1A9A66 - cmpi.b #$01,d0 - beq.s loc_1A9A8A - cmpi.b #$02,d0 - beq.w loc_1A9AE0 - cmpi.b #$03,d0 - beq.w loc_1A9AA6 - bra.w loc_1A9AA6 -; --------------------------------------------------------------------------- - -loc_1A9A66: ; CODE XREF: ROM:001A9A4Aj - cmpi.b #$18,$0000002A(a5) - bcc.s loc_1A9A84 - move.w #$0300,$0000002C(a5) - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - -loc_1A9A84: ; CODE XREF: ROM:001A9A6Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9A8A: ; CODE XREF: ROM:001A9A50j - bset #$00,$00000038(a5) - move.w #$0400,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$28,$0000000D(a5) - bcc.w loc_1A98D2 - rts -; --------------------------------------------------------------------------- - -loc_1A9AA6: ; CODE XREF: ROM:001A9A5Ej - ; ROM:001A9A62j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9ADA - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1A9ADA - beq.w loc_1A98D2 - -loc_1A9ADA: ; CODE XREF: ROM:001A9AB6j - ; ROM:001A9AD4j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9AE0: ; CODE XREF: ROM:001A9A56j - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1A9ADA - bra.w loc_1A98D2 -; --------------------------------------------------------------------------- - -EnemyAI_Mimic1_B: ; CODE XREF: ROM:001A8582j - bra.s loc_1A9B4E -; --------------------------------------------------------------------------- - -EnemyAI_Mimic1_A: ; CODE XREF: ROM:001A857Ej - btst #$01,$0000000C(a5) - bne.s loc_1A9B20 - move.b $00000037(a5),d0 - beq.s loc_1A9B26 - cmpi.b #$10,d0 - beq.s loc_1A9B6C - bra.w loc_1A9CD4 -; --------------------------------------------------------------------------- - -loc_1A9B20: ; CODE XREF: ROM:001A9B0Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9B26: ; CODE XREF: ROM:001A9B14j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A9B4E - rts -; --------------------------------------------------------------------------- - -loc_1A9B4E: ; CODE XREF: ROM:EnemyAI_Mimic1_Bj - ; ROM:001A9B4Aj ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9B6C: ; CODE XREF: ROM:001A9B1Aj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A9B9E - bcs.s loc_1A9B90 - bsr.w sub_1A9BF6 - bcs.s loc_1A9B90 - bsr.w sub_1A9C3E - bcs.s loc_1A9B90 - bsr.w sub_1A9C88 - -loc_1A9B90: ; CODE XREF: ROM:001A9B7Ej - ; ROM:001A9B84j ... - btst #$06,$00000038(a5) - bne.s locret_1A9B9C - bsr.w LoadSpecialAI - -locret_1A9B9C: ; CODE XREF: ROM:001A9B96j - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9B9E: ; CODE XREF: ROM:001A9B7Cp - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A9BF2 - btst #$06,$00000038(a5) - bne.s loc_1A9BF2 - move.w #$0080,d5 - move.w #$0080,d6 - move.w #$0080,d7 - bsr.w sub_1A8964 - bcs.s loc_1A9BF2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0002,d7 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9BF2: ; CODE XREF: sub_1A9B9E+8j - ; sub_1A9B9E+12j ... - tst.b d0 - rts -; End of function sub_1A9B9E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9BF6: ; CODE XREF: ROM:001A9B80p - btst #$06,$00000038(a5) - bne.s loc_1A9C3A - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9C3A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0190,d7 - bhi.s loc_1A9C3A - move.b #$21,$00000037(a5) - move.w #$001B,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9C3A: ; CODE XREF: sub_1A9BF6+6j - ; sub_1A9BF6+18j ... - tst.b d0 - rts -; End of function sub_1A9BF6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9C3E: ; CODE XREF: ROM:001A9B86p - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A9C84 - btst #$06,$00000038(a5) - beq.s loc_1A9C84 - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9C84 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - bclr #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9C84: ; CODE XREF: sub_1A9C3E+8j - ; sub_1A9C3E+12j ... - tst.b d0 - rts -; End of function sub_1A9C3E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9C88: ; CODE XREF: ROM:001A9B8Cp - btst #$06,$00000038(a5) - bne.s loc_1A9CD0 - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1A9CD0 - move.b $00000055(a5),d0 - subi.b #$10,d0 - sub.b (Player_HitBoxZEnd+1).l,d0 - cmpi.b #$20,d0 - bcc.s loc_1A9CD0 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9CD0: ; CODE XREF: sub_1A9C88+6j - ; sub_1A9C88+18j ... - tst.b d0 - rts -; End of function sub_1A9C88 - -; --------------------------------------------------------------------------- - -loc_1A9CD4: ; CODE XREF: ROM:001A9B1Cj - andi.b #$0F,d0 - beq.s loc_1A9CF6 - cmpi.b #$01,d0 - beq.w locret_1A9DA0 - cmpi.b #$02,d0 - beq.w loc_1A9DA2 - cmpi.b #$03,d0 - beq.w loc_1A9E4A - bra.w loc_1A9E4A -; --------------------------------------------------------------------------- - -loc_1A9CF6: ; CODE XREF: ROM:001A9CD8j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A9D10 - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D10: ; CODE XREF: ROM:001A9D00j - cmpi.b #$08,$0000000D(a5) - bne.s loc_1A9D26 - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D26: ; CODE XREF: ROM:001A9D16j - cmpi.b #$10,$0000000D(a5) - bne.s loc_1A9D3C - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D3C: ; CODE XREF: ROM:001A9D2Cj - cmpi.b #$18,$0000000D(a5) - bne.s loc_1A9D52 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D52: ; CODE XREF: ROM:001A9D42j - cmpi.b #$20,$0000000D(a5) - bne.w loc_1A9D6A - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D6A: ; CODE XREF: ROM:001A9D58j - cmpi.b #$28,$0000000D(a5) - bne.w loc_1A9D82 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9D82: ; CODE XREF: ROM:001A9D70j - cmpi.b #$30,$0000000D(a5) - bne.w locret_1A9D9E - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - move.b #$10,$00000037(a5) - -locret_1A9D9E: ; CODE XREF: ROM:001A9D88j - rts -; --------------------------------------------------------------------------- - -locret_1A9DA0: ; CODE XREF: ROM:001A9CDEj - rts -; --------------------------------------------------------------------------- - -loc_1A9DA2: ; CODE XREF: ROM:001A9CE6j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1A9DBC - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9DBC: ; CODE XREF: ROM:001A9DACj - cmpi.b #$08,$0000000D(a5) - bne.s loc_1A9DD2 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9DD2: ; CODE XREF: ROM:001A9DC2j - cmpi.b #$10,$0000000D(a5) - bne.s loc_1A9DE8 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9DE8: ; CODE XREF: ROM:001A9DD8j - cmpi.b #$18,$0000000D(a5) - bne.s loc_1A9DFE - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9DFE: ; CODE XREF: ROM:001A9DEEj - cmpi.b #$20,$0000000D(a5) - bne.w loc_1A9E16 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9E16: ; CODE XREF: ROM:001A9E04j - cmpi.b #$28,$0000000D(a5) - bne.w loc_1A9E2E - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9E2E: ; CODE XREF: ROM:001A9E1Cj - cmpi.b #$30,$0000000D(a5) - bne.w locret_1A9E48 - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - bra.w loc_1A9B4E -; --------------------------------------------------------------------------- - -locret_1A9E48: ; CODE XREF: ROM:001A9E34j - rts -; --------------------------------------------------------------------------- - -loc_1A9E4A: ; CODE XREF: ROM:001A9CEEj - ; ROM:001A9CF2j - move.w #$0100,$0000002C(a5) - move.w $00000012(a5),d0 - move.w $00000054(a5),d1 - movem.w d0-d1,-(sp) - move.w (Player_HitBoxZEnd).l,d0 - addi.w #$0011,d0 - move.w d0,$00000054(a5) - clr.w d1 - move.b $00000005(a5),d1 - sub.w d1,d0 - addq.w #$01,d0 - move.w d0,$00000012(a5) - jsr (sub_3BC).l - bcc.s loc_1A9E90 - movem.w (sp)+,d0-d1 - move.w d0,$00000012(a5) - move.w d1,$00000054(a5) - bra.w loc_1A9B4E -; --------------------------------------------------------------------------- - -loc_1A9E90: ; CODE XREF: ROM:001A9E7Ej - movem.w (sp)+,d0-d1 - tst.b (byte_FF1145).l - bne.w loc_1A9B4E - tst.b (byte_FF1142).l - bne.s loc_1A9EAE - move.b #$01,(byte_FF1142).l - -loc_1A9EAE: ; CODE XREF: ROM:001A9EA4j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.w loc_1A9B4E - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1A9EF6 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0100,d0 - bsr.w j_j_RemoveHealth - tst.w $0000003E(a5) - beq.s loc_1A9F04 - -loc_1A9EF6: ; CODE XREF: ROM:001A9EDCj - cmpi.b #$1E,d0 - bcs.w locret_1A9F02 - clr.b $0000000D(a5) - -locret_1A9F02: ; CODE XREF: ROM:001A9EFAj - rts -; --------------------------------------------------------------------------- - -loc_1A9F04: ; CODE XREF: ROM:001A9EF4j - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -EnemyAI_Mimic2_B: ; CODE XREF: ROM:001A858Aj - bra.s loc_1A9F56 -; --------------------------------------------------------------------------- - -EnemyAI_Mimic2_A: ; CODE XREF: ROM:001A8586j - btst #$01,$0000000C(a5) - bne.s loc_1A9F28 - move.b $00000037(a5),d0 - beq.s loc_1A9F2E - cmpi.b #$10,d0 - beq.s loc_1A9F74 - bra.w loc_1AA104 -; --------------------------------------------------------------------------- - -loc_1A9F28: ; CODE XREF: ROM:001A9F16j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1A9F2E: ; CODE XREF: ROM:001A9F1Cj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1A9F56 - rts -; --------------------------------------------------------------------------- - -loc_1A9F56: ; CODE XREF: ROM:EnemyAI_Mimic2_Bj - ; ROM:001A9F52j ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1A9F74: ; CODE XREF: ROM:001A9F22j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1A9FA6 - bcs.s loc_1A9F98 - bsr.w sub_1AA000 - bcs.s loc_1A9F98 - bsr.w sub_1AA048 - bcs.s loc_1A9F98 - bsr.w sub_1AA092 - -loc_1A9F98: ; CODE XREF: ROM:001A9F86j - ; ROM:001A9F8Cj ... - btst #$06,$00000038(a5) - bne.s locret_1A9FA4 - bsr.w LoadSpecialAI - -locret_1A9FA4: ; CODE XREF: ROM:001A9F9Ej - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1A9FA6: ; CODE XREF: ROM:001A9F84p - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1A9FFC - btst #$06,$00000038(a5) - bne.s loc_1A9FFC - move.w #$0080,d5 - move.w #$0080,d6 - move.w #$0080,d7 - bsr.w sub_1A8964 - bcs.s loc_1A9FFC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0002,d7 - bhi.s loc_1A9FFC - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1A9FFC: ; CODE XREF: sub_1A9FA6+8j - ; sub_1A9FA6+12j ... - tst.b d0 - rts -; End of function sub_1A9FA6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA000: ; CODE XREF: ROM:001A9F88p - btst #$06,$00000038(a5) - bne.s loc_1AA044 - move.w #$0050,d5 - move.w #$0000,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA044 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bhi.s loc_1AA044 - move.b #$21,$00000037(a5) - move.w #$001C,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA044: ; CODE XREF: sub_1AA000+6j - ; sub_1AA000+18j ... - tst.b d0 - rts -; End of function sub_1AA000 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA048: ; CODE XREF: ROM:001A9F8Ep - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1AA08E - btst #$06,$00000038(a5) - beq.s loc_1AA08E - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA08E - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - bclr #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA08E: ; CODE XREF: sub_1AA048+8j - ; sub_1AA048+12j ... - tst.b d0 - rts -; End of function sub_1AA048 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA092: ; CODE XREF: ROM:001A9F94p - btst #$06,$00000038(a5) - bne.s loc_1AA100 - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA100 - move.b $00000055(a5),d0 - subi.b #$10,d0 - sub.b (Player_HitBoxZEnd+1).l,d0 - cmpi.b #$20,d0 - bcc.s loc_1AA100 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000A,d7 - bhi.s loc_1AA0EA - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA0EA: ; CODE XREF: sub_1AA092+3Cj - move.b #$24,$00000037(a5) - move.w #$001D,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA100: ; CODE XREF: sub_1AA092+6j - ; sub_1AA092+18j ... - tst.b d0 - rts -; End of function sub_1AA092 - -; --------------------------------------------------------------------------- - -loc_1AA104: ; CODE XREF: ROM:001A9F24j - andi.b #$0F,d0 - beq.s loc_1AA126 - cmpi.b #$01,d0 - beq.w loc_1AA1D0 - cmpi.b #$02,d0 - beq.w loc_1AA1D6 - cmpi.b #$03,d0 - beq.w loc_1AA27E - bra.w loc_1AA1D0 -; --------------------------------------------------------------------------- - -loc_1AA126: ; CODE XREF: ROM:001AA108j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AA140 - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA140: ; CODE XREF: ROM:001AA130j - cmpi.b #$07,$0000000D(a5) - bne.s loc_1AA156 - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA156: ; CODE XREF: ROM:001AA146j - cmpi.b #$0E,$0000000D(a5) - bne.s loc_1AA16C - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA16C: ; CODE XREF: ROM:001AA15Cj - cmpi.b #$15,$0000000D(a5) - bne.s loc_1AA182 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA182: ; CODE XREF: ROM:001AA172j - cmpi.b #$1C,$0000000D(a5) - bne.w loc_1AA19A - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA19A: ; CODE XREF: ROM:001AA188j - cmpi.b #$23,$0000000D(a5) - bne.w loc_1AA1B2 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA1B2: ; CODE XREF: ROM:001AA1A0j - cmpi.b #$2A,$0000000D(a5) - bne.w locret_1AA1CE - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - move.b #$10,$00000037(a5) - -locret_1AA1CE: ; CODE XREF: ROM:001AA1B8j - rts -; --------------------------------------------------------------------------- - -loc_1AA1D0: ; CODE XREF: ROM:001AA10Ej - ; ROM:001AA122j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AA1D6: ; CODE XREF: ROM:001AA116j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AA1F0 - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA1F0: ; CODE XREF: ROM:001AA1E0j - cmpi.b #$07,$0000000D(a5) - bne.s loc_1AA206 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA206: ; CODE XREF: ROM:001AA1F6j - cmpi.b #$0E,$0000000D(a5) - bne.s loc_1AA21C - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA21C: ; CODE XREF: ROM:001AA20Cj - cmpi.b #$15,$0000000D(a5) - bne.s loc_1AA232 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA232: ; CODE XREF: ROM:001AA222j - cmpi.b #$1C,$0000000D(a5) - bne.w loc_1AA24A - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA24A: ; CODE XREF: ROM:001AA238j - cmpi.b #$23,$0000000D(a5) - bne.w loc_1AA262 - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA262: ; CODE XREF: ROM:001AA250j - cmpi.b #$2A,$0000000D(a5) - bne.w locret_1AA27C - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - bra.w loc_1A9F56 -; --------------------------------------------------------------------------- - -locret_1AA27C: ; CODE XREF: ROM:001AA268j - rts -; --------------------------------------------------------------------------- - -loc_1AA27E: ; CODE XREF: ROM:001AA11Ej - move.w #$0100,$0000002C(a5) - move.w $00000012(a5),d0 - move.w $00000054(a5),d1 - movem.w d0-d1,-(sp) - move.w (Player_HitBoxZEnd).l,d0 - addi.w #$0011,d0 - move.w d0,$00000054(a5) - clr.w d1 - move.b $00000005(a5),d1 - sub.w d1,d0 - addq.w #$01,d0 - move.w d0,$00000012(a5) - jsr (sub_3BC).l - bcc.s loc_1AA2C4 - movem.w (sp)+,d0-d1 - move.w d0,$00000012(a5) - move.w d1,$00000054(a5) - bra.w loc_1A9F56 -; --------------------------------------------------------------------------- - -loc_1AA2C4: ; CODE XREF: ROM:001AA2B2j - movem.w (sp)+,d0-d1 - tst.b (byte_FF1145).l - bne.w loc_1A9F56 - tst.b (byte_FF1142).l - bne.s loc_1AA2E2 - move.b #$01,(byte_FF1142).l - -loc_1AA2E2: ; CODE XREF: ROM:001AA2D8j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.w loc_1A9F56 - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1AA32C - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0200,d0 - jsr (j_j_RemoveHealth).l - tst.w CurrentHealth(a5) - beq.s loc_1AA33A - -loc_1AA32C: ; CODE XREF: ROM:001AA310j - cmpi.b #$1E,d0 - bcs.w locret_1AA338 - clr.b $0000000D(a5) - -locret_1AA338: ; CODE XREF: ROM:001AA330j - rts -; --------------------------------------------------------------------------- - -loc_1AA33A: ; CODE XREF: ROM:001AA32Aj - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -EnemyAI_Mimic3_B: ; CODE XREF: ROM:001A8592j - bra.s loc_1AA38C -; --------------------------------------------------------------------------- - -EnemyAI_Mimic3_A: ; CODE XREF: ROM:001A858Ej - btst #$01,$0000000C(a5) - bne.s loc_1AA35E - move.b $00000037(a5),d0 - beq.s loc_1AA364 - cmpi.b #$10,d0 - beq.s loc_1AA3AA - bra.w loc_1AA53A -; --------------------------------------------------------------------------- - -loc_1AA35E: ; CODE XREF: ROM:001AA34Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AA364: ; CODE XREF: ROM:001AA352j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1AA38C - rts -; --------------------------------------------------------------------------- - -loc_1AA38C: ; CODE XREF: ROM:EnemyAI_Mimic3_Bj - ; ROM:001AA388j ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA3AA: ; CODE XREF: ROM:001AA358j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AA3DC - bcs.s loc_1AA3CE - bsr.w sub_1AA436 - bcs.s loc_1AA3CE - bsr.w sub_1AA47E - bcs.s loc_1AA3CE - bsr.w sub_1AA4C8 - -loc_1AA3CE: ; CODE XREF: ROM:001AA3BCj - ; ROM:001AA3C2j ... - btst #$06,$00000038(a5) - bne.s locret_1AA3DA - bsr.w LoadSpecialAI - -locret_1AA3DA: ; CODE XREF: ROM:001AA3D4j - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA3DC: ; CODE XREF: ROM:001AA3BAp - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1AA432 - btst #$06,$00000038(a5) - bne.s loc_1AA432 - move.w #$0080,d5 - move.w #$0080,d6 - move.w #$0080,d7 - bsr.w sub_1A8964 - bcs.s loc_1AA432 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0014,d7 - bhi.s loc_1AA432 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA432: ; CODE XREF: sub_1AA3DC+8j - ; sub_1AA3DC+12j ... - tst.b d0 - rts -; End of function sub_1AA3DC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA436: ; CODE XREF: ROM:001AA3BEp - btst #$06,$00000038(a5) - bne.s loc_1AA47A - move.w #$0050,d5 - move.w #$0000,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA47A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bhi.s loc_1AA47A - move.b #$21,$00000037(a5) - move.w #$001D,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA47A: ; CODE XREF: sub_1AA436+6j - ; sub_1AA436+18j ... - tst.b d0 - rts -; End of function sub_1AA436 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA47E: ; CODE XREF: ROM:001AA3C4p - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1AA4C4 - btst #$06,$00000038(a5) - beq.s loc_1AA4C4 - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA4C4 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - bclr #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA4C4: ; CODE XREF: sub_1AA47E+8j - ; sub_1AA47E+12j ... - tst.b d0 - rts -; End of function sub_1AA47E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA4C8: ; CODE XREF: ROM:001AA3CAp - btst #$06,$00000038(a5) - bne.s loc_1AA536 - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA536 - move.b $00000055(a5),d0 - subi.b #$10,d0 - sub.b (Player_HitBoxZEnd+1).l,d0 - cmpi.b #$20,d0 - bcc.s loc_1AA536 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0005,d7 - bhi.s loc_1AA520 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA520: ; CODE XREF: sub_1AA4C8+3Cj - move.b #$24,$00000037(a5) - move.w #$001E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA536: ; CODE XREF: sub_1AA4C8+6j - ; sub_1AA4C8+18j ... - tst.b d0 - rts -; End of function sub_1AA4C8 - -; --------------------------------------------------------------------------- - -loc_1AA53A: ; CODE XREF: ROM:001AA35Aj - andi.b #$0F,d0 - beq.s loc_1AA55C - cmpi.b #$01,d0 - beq.w loc_1AA606 - cmpi.b #$02,d0 - beq.w loc_1AA60C - cmpi.b #$03,d0 - beq.w loc_1AA6B4 - bra.w loc_1AA606 -; --------------------------------------------------------------------------- - -loc_1AA55C: ; CODE XREF: ROM:001AA53Ej - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AA576 - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA576: ; CODE XREF: ROM:001AA566j - cmpi.b #$05,$0000000D(a5) - bne.s loc_1AA58C - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA58C: ; CODE XREF: ROM:001AA57Cj - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1AA5A2 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA5A2: ; CODE XREF: ROM:001AA592j - cmpi.b #$0F,$0000000D(a5) - bne.s loc_1AA5B8 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA5B8: ; CODE XREF: ROM:001AA5A8j - cmpi.b #$14,$0000000D(a5) - bne.w loc_1AA5D0 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA5D0: ; CODE XREF: ROM:001AA5BEj - cmpi.b #$19,$0000000D(a5) - bne.w loc_1AA5E8 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA5E8: ; CODE XREF: ROM:001AA5D6j - cmpi.b #$1E,$0000000D(a5) - bne.w locret_1AA604 - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - move.b #$10,$00000037(a5) - -locret_1AA604: ; CODE XREF: ROM:001AA5EEj - rts -; --------------------------------------------------------------------------- - -loc_1AA606: ; CODE XREF: ROM:001AA544j - ; ROM:001AA558j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AA60C: ; CODE XREF: ROM:001AA54Cj - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AA626 - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA626: ; CODE XREF: ROM:001AA616j - cmpi.b #$05,$0000000D(a5) - bne.s loc_1AA63C - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA63C: ; CODE XREF: ROM:001AA62Cj - cmpi.b #$0A,$0000000D(a5) - bne.s loc_1AA652 - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA652: ; CODE XREF: ROM:001AA642j - cmpi.b #$0F,$0000000D(a5) - bne.s loc_1AA668 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA668: ; CODE XREF: ROM:001AA658j - cmpi.b #$14,$0000000D(a5) - bne.w loc_1AA680 - move.b #$FF,$0000002D(a5) - move.w #$0140,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA680: ; CODE XREF: ROM:001AA66Ej - cmpi.b #$19,$0000000D(a5) - bne.w loc_1AA698 - move.b #$FF,$0000002D(a5) - move.w #$0180,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA698: ; CODE XREF: ROM:001AA686j - cmpi.b #$1E,$0000000D(a5) - bne.w locret_1AA6B2 - move.b #$FF,$0000002D(a5) - move.w #$01C0,$0000002E(a5) - bra.w loc_1AA38C -; --------------------------------------------------------------------------- - -locret_1AA6B2: ; CODE XREF: ROM:001AA69Ej - rts -; --------------------------------------------------------------------------- - -loc_1AA6B4: ; CODE XREF: ROM:001AA554j - move.w #$0100,$0000002C(a5) - move.w $00000012(a5),d0 - move.w $00000054(a5),d1 - movem.w d0-d1,-(sp) - move.b (Player_HitBoxZEnd).l,d0 - addi.w #$0011,d0 - move.w d0,$00000054(a5) - clr.w d1 - move.b $00000005(a5),d1 - sub.w d1,d0 - addq.w #$01,d0 - move.w d0,$00000012(a5) - jsr (sub_3BC).l - bcc.s loc_1AA6FA - movem.w (sp)+,d0-d1 - move.w d0,$00000012(a5) - move.w d1,$00000054(a5) - bra.w loc_1AA38C -; --------------------------------------------------------------------------- - -loc_1AA6FA: ; CODE XREF: ROM:001AA6E8j - movem.w (sp)+,d0-d1 - tst.b (byte_FF1145).l - bne.w loc_1AA38C - tst.b (byte_FF1142).l - bne.s loc_1AA718 - move.b #$01,(byte_FF1142).l - -loc_1AA718: ; CODE XREF: ROM:001AA70Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0010,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.w loc_1AA38C - move.b $0000000D(a5),d0 - addq.b #$01,$0000000D(a5) - tst.b d0 - bne.s loc_1AA762 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Throw -; --------------------------------------------------------------------------- - lea (Player_X).l,a5 - move.w #$0300,d0 - jsr (j_j_RemoveHealth).l - tst.w $0000003E(a5) - beq.s loc_1AA770 - -loc_1AA762: ; CODE XREF: ROM:001AA746j - cmpi.b #$0A,d0 - bcs.w locret_1AA76E - clr.b $0000000D(a5) - -locret_1AA76E: ; CODE XREF: ROM:001AA766j - rts -; --------------------------------------------------------------------------- - -loc_1AA770: ; CODE XREF: ROM:001AA760j - bclr #$06,$0000000C(a5) - bra.w loc_1A8AEC -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom1_B: ; CODE XREF: ROM:001A859Aj - bra.s loc_1AA7C2 -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom1_A: ; CODE XREF: ROM:001A8596j - btst #$01,$0000000C(a5) - bne.s loc_1AA794 - move.b $00000037(a5),d0 - beq.s loc_1AA79A - cmpi.b #$10,d0 - beq.s loc_1AA7E0 - bra.w loc_1AA9B6 -; --------------------------------------------------------------------------- - -loc_1AA794: ; CODE XREF: ROM:001AA782j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AA79A: ; CODE XREF: ROM:001AA788j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1AA7C2 - rts -; --------------------------------------------------------------------------- - -loc_1AA7C2: ; CODE XREF: ROM:EnemyAI_Mushroom1_Bj - ; ROM:001AA7BEj ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA7E0: ; CODE XREF: ROM:001AA78Ej - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AA812 - bcs.s loc_1AA804 - bsr.w sub_1AA8C4 - bcs.s loc_1AA804 - bsr.w sub_1AA90C - bcs.s loc_1AA804 - bsr.w sub_1AA954 - -loc_1AA804: ; CODE XREF: ROM:001AA7F2j - ; ROM:001AA7F8j ... - btst #$06,$00000038(a5) - bne.s locret_1AA810 - bsr.w LoadSpecialAI - -locret_1AA810: ; CODE XREF: ROM:001AA80Aj - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA812: ; CODE XREF: ROM:001AA7F0p - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1AA8C0 - btst #$06,$00000038(a5) - bne.s loc_1AA882 - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcc.w loc_1AA8C0 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1AA8C0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AA8C0 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - move.w $00000012(a5),$00000054(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA882: ; CODE XREF: sub_1AA812+12j - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA8C0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AA8C0 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$1F,$0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA8C0: ; CODE XREF: sub_1AA812+8j - ; sub_1AA812+24j ... - tst.b d0 - rts -; End of function sub_1AA812 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA8C4: ; CODE XREF: ROM:001AA7F4p - btst #$06,$00000038(a5) - bne.s loc_1AA908 - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA908 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AA908 - move.b #$21,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA908: ; CODE XREF: sub_1AA8C4+6j - ; sub_1AA8C4+18j ... - tst.b d0 - rts -; End of function sub_1AA8C4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA90C: ; CODE XREF: ROM:001AA7FAp - btst #$06,$00000038(a5) - bne.s loc_1AA950 - move.w #$0020,d5 - move.w #$FFE8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA950 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bhi.s loc_1AA950 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA950: ; CODE XREF: sub_1AA90C+6j - ; sub_1AA90C+18j ... - tst.b d0 - rts -; End of function sub_1AA90C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AA954: ; CODE XREF: ROM:001AA800p - btst #$06,$00000038(a5) - bne.s loc_1AA9B2 - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AA9B2 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1AA998 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA998: ; CODE XREF: sub_1AA954+28j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AA9B2: ; CODE XREF: sub_1AA954+6j - ; sub_1AA954+18j - tst.b d0 - rts -; End of function sub_1AA954 - -; --------------------------------------------------------------------------- - -loc_1AA9B6: ; CODE XREF: ROM:001AA790j - andi.b #$0F,d0 - beq.s loc_1AA9D8 - cmpi.b #$01,d0 - beq.w loc_1AAAA2 - cmpi.b #$02,d0 - beq.w loc_1AAAA8 - cmpi.b #$03,d0 - beq.w loc_1AAAE4 - bra.w loc_1AAAA2 -; --------------------------------------------------------------------------- - -loc_1AA9D8: ; CODE XREF: ROM:001AA9BAj - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AA9F2 - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AA9F2: ; CODE XREF: ROM:001AA9E2j - cmpi.b #$08,$0000000D(a5) - bne.s loc_1AAA08 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA08: ; CODE XREF: ROM:001AA9F8j - cmpi.b #$10,$0000000D(a5) - bne.s loc_1AAA1E - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA1E: ; CODE XREF: ROM:001AAA0Ej - cmpi.b #$18,$0000000D(a5) - bne.s loc_1AAA3A - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - move.b #$10,$00000037(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA3A: ; CODE XREF: ROM:001AAA24j - cmpi.b #$20,$0000000D(a5) - bne.w loc_1AAA72 - clr.w d0 - move.b #$20,d0 - subq.b #$01,d0 - add.w d0,$00000054(a5) - jsr (sub_3BC).l - bcc.s loc_1AAA64 - move.w $00000012(a5),$00000054(a5) - subq.b #$01,$0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA64: ; CODE XREF: ROM:001AAA56j - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA72: ; CODE XREF: ROM:001AAA40j - cmpi.b #$28,$0000000D(a5) - bne.s loc_1AAA88 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAA88: ; CODE XREF: ROM:001AAA78j - cmpi.b #$30,$0000000D(a5) - bne.s locret_1AAAA0 - move.w #$0040,$0000002E(a5) - bclr #$06,$00000038(a5) - bra.w loc_1AA7C2 -; --------------------------------------------------------------------------- - -locret_1AAAA0: ; CODE XREF: ROM:001AAA8Ej - rts -; --------------------------------------------------------------------------- - -loc_1AAAA2: ; CODE XREF: ROM:001AA9C0j - ; ROM:001AA9D4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AAAA8: ; CODE XREF: ROM:001AA9C8j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AAAC4 - move.w #$0049,d1 - move.w #$0049,d2 - move.w #$0049,d3 - bsr.w sub_1A880C - -loc_1AAAC4: ; CODE XREF: ROM:001AAAB2j - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1AAAE2 - bra.w loc_1AA7C2 -; --------------------------------------------------------------------------- - -locret_1AAAE2: ; CODE XREF: ROM:001AAADCj - rts -; --------------------------------------------------------------------------- - -loc_1AAAE4: ; CODE XREF: ROM:001AA9D0j - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0100,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1AAB16 - bra.w loc_1AA7C2 -; --------------------------------------------------------------------------- - -locret_1AAB16: ; CODE XREF: ROM:001AAB10j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom2_B: ; CODE XREF: ROM:001A85A2j - bra.s loc_1AAB60 -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom2_A: ; CODE XREF: ROM:001A859Ej - btst #$01,$0000000C(a5) - bne.s loc_1AAB32 - move.b $00000037(a5),d0 - beq.s loc_1AAB38 - cmpi.b #$10,d0 - beq.s loc_1AAB7E - bra.w loc_1AAD42 -; --------------------------------------------------------------------------- - -loc_1AAB32: ; CODE XREF: ROM:001AAB20j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AAB38: ; CODE XREF: ROM:001AAB26j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1AAB60 - rts -; --------------------------------------------------------------------------- - -loc_1AAB60: ; CODE XREF: ROM:EnemyAI_Mushroom2_Bj - ; ROM:001AAB5Cj ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAB7E: ; CODE XREF: ROM:001AAB2Cj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AABB0 - bcs.s loc_1AABA2 - bsr.w sub_1AAC50 - bcs.s loc_1AABA2 - bsr.w sub_1AAC98 - bcs.s loc_1AABA2 - bsr.w sub_1AACE0 - -loc_1AABA2: ; CODE XREF: ROM:001AAB90j - ; ROM:001AAB96j ... - btst #$06,$00000038(a5) - bne.s locret_1AABAE - bsr.w LoadSpecialAI - -locret_1AABAE: ; CODE XREF: ROM:001AABA8j - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AABB0: ; CODE XREF: ROM:001AAB8Ep - move.b $0000002D(a5),d0 - andi.b #$30,d0 - bne.w loc_1AAC4C - btst #$06,$00000038(a5) - bne.s loc_1AAC0E - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.w loc_1AAC4C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1AAC4C - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - move.w $00000012(a5),$00000054(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAC0E: ; CODE XREF: sub_1AABB0+12j - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AAC4C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1AAC4C - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$1F,$0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAC4C: ; CODE XREF: sub_1AABB0+8j - ; sub_1AABB0+24j ... - tst.b d0 - rts -; End of function sub_1AABB0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AAC50: ; CODE XREF: ROM:001AAB92p - btst #$06,$00000038(a5) - bne.s loc_1AAC94 - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AAC94 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1AAC94 - move.b #$21,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAC94: ; CODE XREF: sub_1AAC50+6j - ; sub_1AAC50+18j ... - tst.b d0 - rts -; End of function sub_1AAC50 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AAC98: ; CODE XREF: ROM:001AAB98p - btst #$06,$00000038(a5) - bne.s loc_1AACDC - move.w #$0020,d5 - move.w #$FFE8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AACDC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003E,d7 - bhi.s loc_1AACDC - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AACDC: ; CODE XREF: sub_1AAC98+6j - ; sub_1AAC98+18j ... - tst.b d0 - rts -; End of function sub_1AAC98 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AACE0: ; CODE XREF: ROM:001AAB9Ep - btst #$06,$00000038(a5) - bne.s loc_1AAD3E - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AAD3E - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$003C,d7 - bcc.s loc_1AAD24 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAD24: ; CODE XREF: sub_1AACE0+28j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAD3E: ; CODE XREF: sub_1AACE0+6j - ; sub_1AACE0+18j - tst.b d0 - rts -; End of function sub_1AACE0 - -; --------------------------------------------------------------------------- - -loc_1AAD42: ; CODE XREF: ROM:001AAB2Ej - andi.b #$0F,d0 - beq.s loc_1AAD64 - cmpi.b #$01,d0 - beq.w loc_1AAE2C - cmpi.b #$02,d0 - beq.w loc_1AAE32 - cmpi.b #$03,d0 - beq.w loc_1AAE84 - bra.w loc_1AAE2C -; --------------------------------------------------------------------------- - -loc_1AAD64: ; CODE XREF: ROM:001AAD46j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AAD7E - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAD7E: ; CODE XREF: ROM:001AAD6Ej - cmpi.b #$08,$0000000D(a5) - bne.s loc_1AAD94 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAD94: ; CODE XREF: ROM:001AAD84j - cmpi.b #$10,$0000000D(a5) - bne.s loc_1AADAA - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AADAA: ; CODE XREF: ROM:001AAD9Aj - cmpi.b #$18,$0000000D(a5) - bne.s loc_1AADC0 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AADC0: ; CODE XREF: ROM:001AADB0j - cmpi.b #$20,$0000000D(a5) - bne.s loc_1AADF6 - clr.w d0 - move.b #$20,d0 - subq.b #$01,d0 - add.w d0,$00000054(a5) - jsr (sub_3BC).l - bcc.s loc_1AADE8 - move.w $00000012(a5),$00000054(a5) - subq.b #$01,$0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AADE8: ; CODE XREF: ROM:001AADDAj - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AADF6: ; CODE XREF: ROM:001AADC6j - cmpi.b #$28,$0000000D(a5) - bne.s loc_1AAE0C - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAE0C: ; CODE XREF: ROM:001AADFCj - cmpi.b #$30,$0000000D(a5) - bne.s locret_1AAE2A - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - bclr #$06,$00000038(a5) - bra.w loc_1AAB60 -; --------------------------------------------------------------------------- - -locret_1AAE2A: ; CODE XREF: ROM:001AAE12j - rts -; --------------------------------------------------------------------------- - -loc_1AAE2C: ; CODE XREF: ROM:001AAD4Cj - ; ROM:001AAD60j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AAE32: ; CODE XREF: ROM:001AAD54j - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.w locret_1AAE82 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - move.b #STATUS_POISON,d0 - cmpi.b #$28,d7 - bcs.s loc_1AAE7A - move.w #$0049,d1 - move.w #$0049,d2 - move.w #$0049,d3 - bsr.w sub_1A880C - bra.w loc_1AAB60 -; --------------------------------------------------------------------------- - -loc_1AAE7A: ; CODE XREF: ROM:001AAE64j - bsr.w j_j_AddStatusEffect - bra.w loc_1AAB60 -; --------------------------------------------------------------------------- - -locret_1AAE82: ; CODE XREF: ROM:001AAE4Ej - rts -; --------------------------------------------------------------------------- - -loc_1AAE84: ; CODE XREF: ROM:001AAD5Cj - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0100,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1AAEB6 - bra.w loc_1AAB60 -; --------------------------------------------------------------------------- - -locret_1AAEB6: ; CODE XREF: ROM:001AAEB0j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom3_B: ; CODE XREF: ROM:001A85AAj - bra.s loc_1AAF00 -; --------------------------------------------------------------------------- - -EnemyAI_Mushroom3_A: ; CODE XREF: ROM:001A85A6j - btst #$01,$0000000C(a5) - bne.s loc_1AAED2 - move.b $00000037(a5),d0 - beq.s loc_1AAED8 - cmpi.b #$10,d0 - beq.s loc_1AAF1E - bra.w loc_1AB0E2 -; --------------------------------------------------------------------------- - -loc_1AAED2: ; CODE XREF: ROM:001AAEC0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AAED8: ; CODE XREF: ROM:001AAEC6j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0050,d5 - move.w #$0010,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcs.s loc_1AAF00 - rts -; --------------------------------------------------------------------------- - -loc_1AAF00: ; CODE XREF: ROM:EnemyAI_Mushroom3_Bj - ; ROM:001AAEFCj ... - bclr #$06,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AAF1E: ; CODE XREF: ROM:001AAECCj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AAF50 - bcs.s loc_1AAF42 - bsr.w sub_1AAFF0 - bcs.s loc_1AAF42 - bsr.w sub_1AB038 - bcs.s loc_1AAF42 - bsr.w sub_1AB080 - -loc_1AAF42: ; CODE XREF: ROM:001AAF30j - ; ROM:001AAF36j ... - btst #$06,$00000038(a5) - bne.s locret_1AAF4E - bsr.w LoadSpecialAI - -locret_1AAF4E: ; CODE XREF: ROM:001AAF48j - rts ; =============== S U B R O U T I N E ======================================= -sub_1AAF50: ; CODE XREF: ROM:001AAF2Ep - move.b $0000002F(a5),d0 - andi.b #$30,d0 - bne.w loc_1AAFEC - btst #$06,$00000038(a5) - bne.s loc_1AAFAE - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.w loc_1AAFEC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1AAFEC - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - bset #$06,$00000038(a5) - move.w $00000012(a5),$00000054(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAFAE: ; CODE XREF: sub_1AAF50+12j - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AAFEC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0025,d7 - bhi.s loc_1AAFEC - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$1F,$0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AAFEC: ; CODE XREF: sub_1AAF50+8j - ; sub_1AAF50+24j ... - tst.b d0 - rts -; End of function sub_1AAF50 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AAFF0: ; CODE XREF: ROM:001AAF32p - btst #$06,$00000038(a5) - bne.s loc_1AB034 - move.w #$0038,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB034 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1AB034 - move.b #$21,$00000037(a5) - move.w #$0013,$00000034(a5) - clr.b $0000000D(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AB034: ; CODE XREF: sub_1AAFF0+6j - ; sub_1AAFF0+18j ... - tst.b d0 - rts -; End of function sub_1AAFF0 - - -; =============== S U B R O U T I N E ======================================= - +sub_1A83E6: ; DATA XREF: sub_1A4404t -sub_1AB038: ; CODE XREF: ROM:001AAF38p - btst #$06,$00000038(a5) - bne.s loc_1AB07C - move.w #$0020,d5 - move.w #$FFE8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB07C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0057,d7 - bhi.s loc_1AB07C - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- +; FUNCTION CHUNK AT 001A870E SIZE 00000098 BYTES +; FUNCTION CHUNK AT 001A87D2 SIZE 0000003A BYTES -loc_1AB07C: ; CODE XREF: sub_1AB038+6j - ; sub_1AB038+18j ... - tst.b d0 - rts -; End of function sub_1AB038 + cmpi.b #$7F,X(a5) + beq.w loc_1A870E + clr.w d1 +; End of function sub_1A83E6 ; =============== S U B R O U T I N E ======================================= -sub_1AB080: ; CODE XREF: ROM:001AAF3Ep - btst #$06,$00000038(a5) - bne.s loc_1AB0DE - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB0DE - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0046,d7 - bcc.s loc_1AB0C4 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AB0C4: ; CODE XREF: sub_1AB080+28j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AB0DE: ; CODE XREF: sub_1AB080+6j - ; sub_1AB080+18j - tst.b d0 - rts -; End of function sub_1AB080 - -; --------------------------------------------------------------------------- - -loc_1AB0E2: ; CODE XREF: ROM:001AAECEj - andi.b #$0F,d0 - beq.s loc_1AB104 - cmpi.b #$01,d0 - beq.w loc_1AB1CC - cmpi.b #$02,d0 - beq.w loc_1AB1D2 - cmpi.b #$03,d0 - beq.w loc_1AB22E - bra.w loc_1AB1CC -; --------------------------------------------------------------------------- - -loc_1AB104: ; CODE XREF: ROM:001AB0E6j - addq.b #$01,$0000000D(a5) - cmpi.b #$01,$0000000D(a5) - bne.s loc_1AB11E - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB11E: ; CODE XREF: ROM:001AB10Ej - cmpi.b #$08,$0000000D(a5) - bne.s loc_1AB134 - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB134: ; CODE XREF: ROM:001AB124j - cmpi.b #$10,$0000000D(a5) - bne.s loc_1AB14A - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB14A: ; CODE XREF: ROM:001AB13Aj - cmpi.b #$18,$0000000D(a5) - bne.s loc_1AB160 - move.b #$FF,$0000002D(a5) - move.w #$0100,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB160: ; CODE XREF: ROM:001AB150j - cmpi.b #$20,$0000000D(a5) - bne.s loc_1AB196 - clr.w d0 - move.b #$20,d0 - subq.b #$01,d0 - add.w d0,$00000054(a5) - jsr (sub_3BC).l - bcc.s loc_1AB188 - move.w $00000012(a5),$00000054(a5) - subq.b #$01,$0000000D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB188: ; CODE XREF: ROM:001AB17Aj - move.b #$FF,$0000002D(a5) - move.w #$00C0,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB196: ; CODE XREF: ROM:001AB166j - cmpi.b #$28,$0000000D(a5) - bne.s loc_1AB1AC - move.b #$FF,$0000002D(a5) - move.w #$0080,$0000002E(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AB1AC: ; CODE XREF: ROM:001AB19Cj - cmpi.b #$30,$0000000D(a5) - bne.s locret_1AB1CA - move.b #$FF,$0000002D(a5) - move.w #$0040,$0000002E(a5) - bclr #$06,$00000038(a5) - bra.w loc_1AAF00 -; --------------------------------------------------------------------------- - -locret_1AB1CA: ; CODE XREF: ROM:001AB1B2j - rts -; --------------------------------------------------------------------------- - -loc_1AB1CC: ; CODE XREF: ROM:001AB0ECj - ; ROM:001AB100j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AB1D2: ; CODE XREF: ROM:001AB0F4j - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1AB22C - move.w #00100,d6 - jsr (j_GenerateRandomNumber).l - move.b #STATUS_POISON,d0 - cmpi.b #030,d7 - bcs.s loc_1AB224 - move.b #STATUS_PARALYSIS,d0 - cmpi.b #050,d7 - bcs.s loc_1AB224 - move.b #STATUS_CONFUSION,d0 - cmpi.b #065,d7 - bcs.s loc_1AB224 - move.b #STATUS_CURSE,d0 - cmpi.b #070,d7 - bcc.w loc_1AAF00 - -loc_1AB224: ; CODE XREF: ROM:001AB202j - ; ROM:001AB20Cj ... - bsr.w j_j_AddStatusEffect - bra.w loc_1AAF00 -; --------------------------------------------------------------------------- - -locret_1AB22C: ; CODE XREF: ROM:001AB1EEj - rts -; --------------------------------------------------------------------------- - -loc_1AB22E: ; CODE XREF: ROM:001AB0FCj - addq.b #$01,$0000000D(a5) - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0100,d0 - move.w d0,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s locret_1AB260 - bra.w loc_1AAF00 -; --------------------------------------------------------------------------- - -locret_1AB260: ; CODE XREF: ROM:001AB25Aj - rts -; --------------------------------------------------------------------------- - -EnemyAI_Giant1_B: ; CODE XREF: ROM:001A85B2j - bra.s loc_1AB2AA -; --------------------------------------------------------------------------- - -EnemyAI_Giant1_A: ; CODE XREF: ROM:001A85AEj - btst #$01,$0000000C(a5) - bne.s loc_1AB27C - move.b $00000037(a5),d0 - beq.s loc_1AB282 - cmpi.b #$10,d0 - beq.s loc_1AB2AE - bra.w loc_1AB3F0 -; --------------------------------------------------------------------------- - -loc_1AB27C: ; CODE XREF: ROM:001AB26Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AB282: ; CODE XREF: ROM:001AB270j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1AB2AA - rts -; --------------------------------------------------------------------------- - -loc_1AB2AA: ; CODE XREF: ROM:EnemyAI_Giant1_Bj - ; ROM:001AB2A6j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AB2AE: ; CODE XREF: ROM:001AB276j - tst.b (byte_FF1142).l - bne.s loc_1AB2DE - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AB2E2 - bcs.s loc_1AB2D8 - bsr.s sub_1AB31E - bcs.s loc_1AB2D8 - bsr.w sub_1AB35A - bcs.s loc_1AB2D8 - bsr.w sub_1AB396 +sub_1A83F0: ; CODE XREF: sub_1A86D6+4p + move.w Dialogue(a5),d0 + andi.w #$03FF,d0 + lea EnemyTable(pc),a0 -loc_1AB2D8: ; CODE XREF: ROM:001AB2C8j - ; ROM:001AB2CCj ... - bsr.w LoadSpecialAI +loc_1A83FC: ; CODE XREF: sub_1A83F0+16j + cmp.w (a0),d0 + beq.s loc_1A840E + addq.w #$08,d1 + cmpi.w #$FFFF,(a0)+ + bne.s loc_1A83FC + bsr.w j_j_OnTick rts ; --------------------------------------------------------------------------- -loc_1AB2DE: ; CODE XREF: ROM:001AB2B4j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - +loc_1A840E: ; CODE XREF: sub_1A83F0+Ej + lea loc_1A84A6(pc),a0 + nop + jmp (a0,d1.w) +; End of function sub_1A83F0 -sub_1AB2E2: ; CODE XREF: ROM:001AB2C6p - move.w #$0050,d5 - move.w #$FFB8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB31A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AB31A - move.b #$20,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts ; --------------------------------------------------------------------------- - -loc_1AB31A: ; CODE XREF: sub_1AB2E2+10j - ; sub_1AB2E2+20j - tst.b d0 - rts -; End of function sub_1AB2E2 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB31E: ; CODE XREF: ROM:001AB2CAp - move.w #$0058,d5 - move.w #$FFC0,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB356 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1AB356 - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts +EnemyTable: dc.w SPR_ORC1 ; DATA XREF: sub_1A83F0+8t + ; ROM:EnemyTable+2o ... + dc.w SPR_ORC2 + dc.w SPR_ORC3 + dc.w SPR_WORM1 + dc.w SPR_WORM2 + dc.w SPR_WORM3 + dc.w SPR_NINJA1 + dc.w SPR_NINJA2 + dc.w SPR_NINJA3 + dc.w SPR_LIZARD1 + dc.w SPR_LIZARD2 + dc.w SPR_LIZARD3 + dc.w SPR_KNIGHT1 + dc.w SPR_KNIGHT2 + dc.w SPR_KNIGHT3 + dc.w SPR_GHOST1 + dc.w SPR_GHOST2 + dc.w SPR_GHOST3 + dc.w SPR_MUMMY1 + dc.w SPR_MUMMY2 + dc.w SPR_MUMMY3 + dc.w SPR_UNICORN1 + dc.w SPR_UNICORN2 + dc.w SPR_UNICORN3 + dc.w SPR_SKELETON1 + dc.w SPR_SKELETON2 + dc.w SPR_SKELETON3 + dc.w SPR_MIMIC1 + dc.w SPR_MIMIC2 + dc.w SPR_MIMIC3 + dc.w SPR_MUSHROOM1 + dc.w SPR_MUSHROOM2 + dc.w SPR_MUSHROOM3 + dc.w SPR_GIANT1 + dc.w SPR_GIANT2 + dc.w SPR_GIANT3 + dc.w SPR_BUBBLE1 + dc.w SPR_BUBBLE2 + dc.w SPR_BUBBLE3 + dc.w SPR_NIGEL + dc.w SPR_MIR + dc.w SPR_REAPER1 + dc.w SPR_SMLFIREBALL + dc.w SPR_DUKE + dc.w SPR_GHOSTGEN1 + dc.w SPR_GHOSTGEN2 + dc.w SPR_GHOSTGEN3 + dc.w SPR_ZAK + dc.w SPR_GOLEM1 + dc.w SPR_GOLEM2 + dc.w SPR_GOLEM3 + dc.w SPR_REAPER2 + dc.w SPR_UNUSEDREAPER3 + dc.w SPR_SPECTRE1 + dc.w SPR_SPECTRE2 + dc.w SPR_SPECTRE3 + dc.w SPR_UNUSEDBIRD1 + dc.w SPR_UNUSEDBIRD2 + dc.w SPR_UNUSEDBIRD3 + dc.w SPR_SPINNER1 + dc.w SPR_MIRO + dc.w SPR_IFRIT + dc.w SPR_GOLA + dc.w SPR_NOLE + dc.w SPR_STONEWARRIOR1 + dc.w SPR_BUBBLE4 + dc.w SPR_BUBBLE5 + dc.w SPR_BUBBLE6 + dc.w SPR_SPINNER2 + dc.w SPR_STONEWARRIOR2 + dc.w $FFFF ; --------------------------------------------------------------------------- -loc_1AB356: ; CODE XREF: sub_1AB31E+10j - ; sub_1AB31E+20j - tst.b d0 - rts -; End of function sub_1AB31E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB35A: ; CODE XREF: ROM:001AB2CEp - move.w #$0038,d5 - move.w #$FFE0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB392 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0004,d7 - bhi.s loc_1AB392 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts +loc_1A84A6: ; DATA XREF: sub_1A83F0:loc_1A840Et + bra.w EnemyAI_Orc1_A ; --------------------------------------------------------------------------- - -loc_1AB392: ; CODE XREF: sub_1AB35A+10j - ; sub_1AB35A+20j - tst.b d0 - rts -; End of function sub_1AB35A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB396: ; CODE XREF: ROM:001AB2D4p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB3EC - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0046,d7 - bcc.s loc_1AB3D2 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Orc1_B ; --------------------------------------------------------------------------- - -loc_1AB3D2: ; CODE XREF: sub_1AB396+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Orc2_A ; --------------------------------------------------------------------------- - -loc_1AB3EC: ; CODE XREF: sub_1AB396+10j - tst.b d0 - rts -; End of function sub_1AB396 - + bra.w EnemyAI_Orc2_B ; --------------------------------------------------------------------------- - -loc_1AB3F0: ; CODE XREF: ROM:001AB278j - andi.b #$0F,d0 - beq.s loc_1AB40C - cmpi.b #$01,d0 - beq.s loc_1AB418 - cmpi.b #$02,d0 - beq.s loc_1AB42A - cmpi.b #$03,d0 - beq.s loc_1AB42A - bra.w loc_1AB464 + bra.w EnemyAI_Orc3_A ; --------------------------------------------------------------------------- - -loc_1AB40C: ; CODE XREF: ROM:001AB3F4j - move.w #$0100,$0000002C(a5) - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Orc3_B ; --------------------------------------------------------------------------- - -loc_1AB418: ; CODE XREF: ROM:001AB3FAj - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1AB2AA - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Worm1_A ; --------------------------------------------------------------------------- - -loc_1AB42A: ; CODE XREF: ROM:001AB400j - ; ROM:001AB406j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1AB45E - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1AB45E - bra.w loc_1AB2AA + bra.w EnemyAI_Worm1_B ; --------------------------------------------------------------------------- - -loc_1AB45E: ; CODE XREF: ROM:001AB43Aj - ; ROM:001AB458j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Worm2_A ; --------------------------------------------------------------------------- - -loc_1AB464: ; CODE XREF: ROM:001AB408j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AB498 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$2D,$0000000D(a5) - bcs.s locret_1AB498 - bra.w loc_1AB2AA + bra.w EnemyAI_Worm2_B ; --------------------------------------------------------------------------- - -locret_1AB498: ; CODE XREF: ROM:001AB474j - ; ROM:001AB492j - rts + bra.w EnemyAI_Worm3_A ; --------------------------------------------------------------------------- - -EnemyAI_Giant2_B: ; CODE XREF: ROM:001A85BAj - bra.s loc_1AB4E2 + bra.w EnemyAI_Worm3_B ; --------------------------------------------------------------------------- - -EnemyAI_Giant2_A: ; CODE XREF: ROM:001A85B6j - btst #$01,$0000000C(a5) - bne.s loc_1AB4B4 - move.b $00000037(a5),d0 - beq.s loc_1AB4BA - cmpi.b #$10,d0 - beq.s loc_1AB4E6 - bra.w loc_1AB628 + bra.w EnemyAI_Ninja1_A ; --------------------------------------------------------------------------- - -loc_1AB4B4: ; CODE XREF: ROM:001AB4A2j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Ninja1_B ; --------------------------------------------------------------------------- - -loc_1AB4BA: ; CODE XREF: ROM:001AB4A8j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1AB4E2 - rts + bra.w EnemyAI_Ninja2_A ; --------------------------------------------------------------------------- - -loc_1AB4E2: ; CODE XREF: ROM:EnemyAI_Giant2_Bj - ; ROM:001AB4DEj ... - bra.w loc_1A8AB6 + bra.w EnemyAI_Ninja2_B ; --------------------------------------------------------------------------- - -loc_1AB4E6: ; CODE XREF: ROM:001AB4AEj - tst.b (byte_FF1142).l - bne.s loc_1AB516 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AB51A - bcs.s loc_1AB510 - bsr.s sub_1AB556 - bcs.s loc_1AB510 - bsr.w sub_1AB592 - bcs.s loc_1AB510 - bsr.w sub_1AB5CE - -loc_1AB510: ; CODE XREF: ROM:001AB500j - ; ROM:001AB504j ... - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Ninja3_A ; --------------------------------------------------------------------------- - -loc_1AB516: ; CODE XREF: ROM:001AB4ECj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB51A: ; CODE XREF: ROM:001AB4FEp - move.w #$0060,d5 - move.w #$FFB8,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB552 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1AB552 - move.b #$20,$00000037(a5) - move.w #$0014,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Ninja3_B ; --------------------------------------------------------------------------- - -loc_1AB552: ; CODE XREF: sub_1AB51A+10j - ; sub_1AB51A+20j - tst.b d0 - rts -; End of function sub_1AB51A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB556: ; CODE XREF: ROM:001AB502p - move.w #$0058,d5 - move.w #$FFC0,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB58E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1AB58E - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Lizard1_A ; --------------------------------------------------------------------------- - -loc_1AB58E: ; CODE XREF: sub_1AB556+10j - ; sub_1AB556+20j - tst.b d0 - rts -; End of function sub_1AB556 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB592: ; CODE XREF: ROM:001AB506p - move.w #$0038,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB5CA - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0003,d7 - bhi.s loc_1AB5CA - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Lizard1_B ; --------------------------------------------------------------------------- - -loc_1AB5CA: ; CODE XREF: sub_1AB592+10j - ; sub_1AB592+20j - tst.b d0 - rts -; End of function sub_1AB592 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB5CE: ; CODE XREF: ROM:001AB50Cp - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB624 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0028,d7 - bcc.s loc_1AB60A - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Lizard2_A ; --------------------------------------------------------------------------- - -loc_1AB60A: ; CODE XREF: sub_1AB5CE+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Lizard2_B ; --------------------------------------------------------------------------- - -loc_1AB624: ; CODE XREF: sub_1AB5CE+10j - tst.b d0 - rts -; End of function sub_1AB5CE - + bra.w EnemyAI_Lizard3_A ; --------------------------------------------------------------------------- - -loc_1AB628: ; CODE XREF: ROM:001AB4B0j - andi.b #$0F,d0 - beq.s loc_1AB644 - cmpi.b #$01,d0 - beq.s loc_1AB64A - cmpi.b #$02,d0 - beq.s loc_1AB65C - cmpi.b #$03,d0 - beq.s loc_1AB696 - bra.w loc_1AB6CC + bra.w EnemyAI_Lizard3_B ; --------------------------------------------------------------------------- - -loc_1AB644: ; CODE XREF: ROM:001AB62Cj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Knight1_A ; --------------------------------------------------------------------------- - -loc_1AB64A: ; CODE XREF: ROM:001AB632j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1AB4E2 - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Knight1_B ; --------------------------------------------------------------------------- - -loc_1AB65C: ; CODE XREF: ROM:001AB638j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1AB690 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1AB690 - bra.w loc_1AB4E2 + bra.w EnemyAI_Knight2_A ; --------------------------------------------------------------------------- - -loc_1AB690: ; CODE XREF: ROM:001AB66Cj - ; ROM:001AB68Aj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Knight2_B ; --------------------------------------------------------------------------- - -loc_1AB696: ; CODE XREF: ROM:001AB63Ej - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AB6CA - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$2D,$0000000D(a5) - bcs.s locret_1AB6CA - bra.w loc_1AB4E2 + bra.w EnemyAI_Knight3_A ; --------------------------------------------------------------------------- - -locret_1AB6CA: ; CODE XREF: ROM:001AB6A6j - ; ROM:001AB6C4j - rts + bra.w EnemyAI_Knight3_B ; --------------------------------------------------------------------------- - -loc_1AB6CC: ; CODE XREF: ROM:001AB640j - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0008,d0 - lsl.w #$05,d0 - addi.w #$0100,d0 - move.w d0,$0000002C(a5) - cmpi.w #$0100,d0 - beq.s loc_1AB6F8 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - -loc_1AB6F8: ; CODE XREF: ROM:001AB6E6j - cmpi.b #$60,$0000000D(a5) - bcc.w loc_1AB4E2 - rts + bra.w EnemyAI_Ghost1_A ; --------------------------------------------------------------------------- - -EnemyAI_Giant3_B: ; CODE XREF: ROM:001A85C2j - bra.s loc_1AB74C + bra.w EnemyAI_Ghost1_B ; --------------------------------------------------------------------------- - -EnemyAI_Giant3_A: ; CODE XREF: ROM:001A85BEj - btst #$01,$0000000C(a5) - bne.s loc_1AB71E - move.b $00000037(a5),d0 - beq.s loc_1AB724 - cmpi.b #$10,d0 - beq.s loc_1AB750 - bra.w loc_1AB892 + bra.w EnemyAI_Ghost2_A ; --------------------------------------------------------------------------- - -loc_1AB71E: ; CODE XREF: ROM:001AB70Cj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Ghost2_B ; --------------------------------------------------------------------------- - -loc_1AB724: ; CODE XREF: ROM:001AB712j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1AB74C - rts + bra.w EnemyAI_Ghost3_A ; --------------------------------------------------------------------------- - -loc_1AB74C: ; CODE XREF: ROM:EnemyAI_Giant3_Bj - ; ROM:001AB748j ... - bra.w loc_1A8AB6 + bra.w EnemyAI_Ghost3_B ; --------------------------------------------------------------------------- - -loc_1AB750: ; CODE XREF: ROM:001AB718j - tst.b (byte_FF1142).l - bne.s loc_1AB780 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AB784 - bcs.s loc_1AB77A - bsr.s sub_1AB7C0 - bcs.s loc_1AB77A - bsr.w sub_1AB7FC - bcs.s loc_1AB77A - bsr.w sub_1AB838 - -loc_1AB77A: ; CODE XREF: ROM:001AB76Aj - ; ROM:001AB76Ej ... - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Mummy1_A ; --------------------------------------------------------------------------- - -loc_1AB780: ; CODE XREF: ROM:001AB756j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB784: ; CODE XREF: ROM:001AB768p - move.w #$0058,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB7BC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1AB7BC - move.b #$20,$00000037(a5) - move.w #$001F,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Mummy1_B ; --------------------------------------------------------------------------- - -loc_1AB7BC: ; CODE XREF: sub_1AB784+10j - ; sub_1AB784+20j - tst.b d0 - rts -; End of function sub_1AB784 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB7C0: ; CODE XREF: ROM:001AB76Cp - move.w #$0048,d5 - move.w #$FFC8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB7F8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1AB7F8 - move.b #$21,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Mummy2_A ; --------------------------------------------------------------------------- - -loc_1AB7F8: ; CODE XREF: sub_1AB7C0+10j - ; sub_1AB7C0+20j - tst.b d0 - rts -; End of function sub_1AB7C0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB7FC: ; CODE XREF: ROM:001AB770p - move.w #$0038,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB834 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0005,d7 - bhi.s loc_1AB834 - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Mummy2_B ; --------------------------------------------------------------------------- - -loc_1AB834: ; CODE XREF: sub_1AB7FC+10j - ; sub_1AB7FC+20j - tst.b d0 - rts -; End of function sub_1AB7FC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AB838: ; CODE XREF: ROM:001AB776p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AB88E - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1AB874 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Mummy3_A ; --------------------------------------------------------------------------- - -loc_1AB874: ; CODE XREF: sub_1AB838+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Mummy3_B ; --------------------------------------------------------------------------- - -loc_1AB88E: ; CODE XREF: sub_1AB838+10j - tst.b d0 - rts -; End of function sub_1AB838 - + bra.w EnemyAI_Unicorn1_A ; --------------------------------------------------------------------------- - -loc_1AB892: ; CODE XREF: ROM:001AB71Aj - andi.b #$0F,d0 - beq.s loc_1AB8B0 - cmpi.b #$01,d0 - beq.s loc_1AB8B6 - cmpi.b #$02,d0 - beq.s loc_1AB8F6 - cmpi.b #$03,d0 - beq.w loc_1AB930 - bra.w loc_1AB966 + bra.w EnemyAI_Unicorn1_B ; --------------------------------------------------------------------------- - -loc_1AB8B0: ; CODE XREF: ROM:001AB896j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Unicorn2_A ; --------------------------------------------------------------------------- - -loc_1AB8B6: ; CODE XREF: ROM:001AB89Cj - move.b $0000002D(a5),d1 - move.b d1,d2 - move.w #$0100,$0000002C(a5) - andi.b #$20,d1 - bne.s loc_1AB8F0 - movem.w d2,-(sp) - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - movem.w (sp)+,d2 - move.w #$0200,$0000002C(a5) - andi.b #$10,d2 - bne.s loc_1AB8F0 - bra.w loc_1AB74C + bra.w EnemyAI_Unicorn2_B ; --------------------------------------------------------------------------- - -loc_1AB8F0: ; CODE XREF: ROM:001AB8C6j - ; ROM:001AB8EAj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Unicorn3_A ; --------------------------------------------------------------------------- - -loc_1AB8F6: ; CODE XREF: ROM:001AB8A2j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1AB92A - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1AB92A - bra.w loc_1AB74C + bra.w EnemyAI_Unicorn3_B ; --------------------------------------------------------------------------- - -loc_1AB92A: ; CODE XREF: ROM:001AB906j - ; ROM:001AB924j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Skeleton1_A ; --------------------------------------------------------------------------- - -loc_1AB930: ; CODE XREF: ROM:001AB8A8j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AB964 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$2D,$0000000D(a5) - bcs.s locret_1AB964 - bra.w loc_1AB74C + bra.w EnemyAI_Skeleton1_B ; --------------------------------------------------------------------------- - -locret_1AB964: ; CODE XREF: ROM:001AB940j - ; ROM:001AB95Ej - rts + bra.w EnemyAI_Skeleton2_A ; --------------------------------------------------------------------------- - -loc_1AB966: ; CODE XREF: ROM:001AB8ACj - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0008,d0 - lsl.w #$05,d0 - addi.w #$0100,d0 - move.w d0,$0000002C(a5) - cmpi.w #$0100,d0 - beq.s loc_1AB992 - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - -loc_1AB992: ; CODE XREF: ROM:001AB980j - cmpi.b #$60,$0000000D(a5) - bcc.w loc_1AB74C - rts + bra.w EnemyAI_Skeleton2_B ; --------------------------------------------------------------------------- - -EnemyAI_Bubble1_B: ; CODE XREF: ROM:001A85CAj - bra.s loc_1AB9F4 + bra.w EnemyAI_Skeleton3_A ; --------------------------------------------------------------------------- - -EnemyAI_Bubble1_A: ; CODE XREF: ROM:001A85C6j - btst #$01,$0000000C(a5) - bne.s loc_1AB9B4 - move.b $00000037(a5),d0 - beq.s loc_1AB9BA - cmpi.b #$10,d0 - beq.s loc_1ABA0C - -loc_1AB9B4: ; CODE XREF: ROM:001AB9A6j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Skeleton3_B ; --------------------------------------------------------------------------- - -loc_1AB9BA: ; CODE XREF: ROM:001AB9ACj - tst.w $0000002A(a5) - bne.s loc_1AB9E2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$01,d7 - bcs.s loc_1AB9D8 - cmpi.b #$02,d7 - bcs.s loc_1AB9E8 - rts + bra.w EnemyAI_Mimic1_A ; --------------------------------------------------------------------------- - -loc_1AB9D8: ; CODE XREF: ROM:001AB9CEj - move.w #$0020,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - -loc_1AB9E2: ; CODE XREF: ROM:001AB9BEj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Mimic1_B ; --------------------------------------------------------------------------- - -loc_1AB9E8: ; CODE XREF: ROM:001AB9D4j - move.b #$10,$00000037(a5) - clr.b $0000000D(a5) - rts + bra.w EnemyAI_Mimic2_A ; --------------------------------------------------------------------------- - -loc_1AB9F4: ; CODE XREF: ROM:EnemyAI_Bubble1_Bj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$00,$00000037(a5) - bclr #$01,$0000000C(a5) - rts + bra.w EnemyAI_Mimic2_B ; --------------------------------------------------------------------------- - -loc_1ABA0C: ; CODE XREF: ROM:001AB9B2j - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$40,$0000000D(a5) - bcs.s locret_1ABA38 - clr.w $0000002C(a5) - move.w #$FFFF,$0000002E(a5) - clr.b $00000037(a5) - -locret_1ABA38: ; CODE XREF: ROM:001ABA28j - rts + bra.w EnemyAI_Mimic3_A ; --------------------------------------------------------------------------- - -EnemyAI_Bubble2_B: ; CODE XREF: ROM:001A85D2j - bra.s loc_1ABA58 + bra.w EnemyAI_Mimic3_B ; --------------------------------------------------------------------------- - -EnemyAI_Bubble2_A: ; CODE XREF: ROM:001A85CEj - btst #$01,$0000000C(a5) - bne.s loc_1ABA52 - move.b $00000037(a5),d0 - beq.s loc_1ABA70 - cmpi.b #$10,d0 - beq.w loc_1ABAE8 - -loc_1ABA52: ; CODE XREF: ROM:001ABA42j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Mushroom1_A ; --------------------------------------------------------------------------- - -loc_1ABA58: ; CODE XREF: ROM:EnemyAI_Bubble2_Bj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$00,$00000037(a5) - bclr #$01,$0000000C(a5) - rts + bra.w EnemyAI_Mushroom1_B ; --------------------------------------------------------------------------- - -loc_1ABA70: ; CODE XREF: ROM:001ABA48j - tst.w $0000002A(a5) - bne.s loc_1ABAAE - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$01,d7 - bcs.s loc_1ABA8E - cmpi.b #$02,d7 - bcs.s loc_1ABAC4 - rts + bra.w EnemyAI_Mushroom2_A ; --------------------------------------------------------------------------- - -loc_1ABA8E: ; CODE XREF: ROM:001ABA84j - move.b #$22,d0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$50,d7 - bcs.s loc_1ABAA6 - move.b #$21,d0 - -loc_1ABAA6: ; CODE XREF: ROM:001ABAA0j - move.w d0,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - -loc_1ABAAE: ; CODE XREF: ROM:001ABA74j - btst #$05,$0000002D(a5) - bne.s loc_1ABAD0 - btst #$04,$0000002D(a5) - bne.s loc_1ABADC - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Mushroom2_B +; --------------------------------------------------------------------------- + bra.w EnemyAI_Mushroom3_A +; --------------------------------------------------------------------------- + bra.w EnemyAI_Mushroom3_B +; --------------------------------------------------------------------------- + bra.w EnemyAI_Giant1_A +; --------------------------------------------------------------------------- + bra.w EnemyAI_Giant1_B +; --------------------------------------------------------------------------- + bra.w EnemyAI_Giant2_A +; --------------------------------------------------------------------------- + bra.w EnemyAI_Giant2_B +; --------------------------------------------------------------------------- + bra.w EnemyAI_Giant3_A ; --------------------------------------------------------------------------- - -loc_1ABAC4: ; CODE XREF: ROM:001ABA8Aj - move.b #$10,$00000037(a5) - clr.b $0000000D(a5) - rts + bra.w EnemyAI_Giant3_B ; --------------------------------------------------------------------------- - -loc_1ABAD0: ; CODE XREF: ROM:001ABAB4j - bsr.w LoadSpecialAI - move.w #$0100,$0000002C(a5) - rts + bra.w EnemyAI_Bubble1_A ; --------------------------------------------------------------------------- - -loc_1ABADC: ; CODE XREF: ROM:001ABABCj - bsr.w LoadSpecialAI - move.w #$0200,$0000002C(a5) - rts + bra.w EnemyAI_Bubble1_B ; --------------------------------------------------------------------------- - -loc_1ABAE8: ; CODE XREF: ROM:001ABA4Ej - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$40,$0000000D(a5) - bcs.s locret_1ABB14 - clr.w $0000002C(a5) - move.w #$FFFF,$0000002E(a5) - clr.b $00000037(a5) - -locret_1ABB14: ; CODE XREF: ROM:001ABB04j - rts + bra.w EnemyAI_Bubble2_A ; --------------------------------------------------------------------------- - -EnemyAI_Bubble3_B: ; CODE XREF: ROM:001A85DAj - ; ROM:001A86B2j ... - bra.s loc_1ABB34 + bra.w EnemyAI_Bubble2_B ; --------------------------------------------------------------------------- - -EnemyAI_Bubble3_A: ; CODE XREF: ROM:001A85D6j - ; ROM:001A86AEj ... - btst #$01,$0000000C(a5) - bne.s loc_1ABB2E - move.b $00000037(a5),d0 - beq.s loc_1ABB4C - cmpi.b #$10,d0 - beq.w loc_1ABBE6 - -loc_1ABB2E: ; CODE XREF: ROM:001ABB1Ej - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Bubble3_A ; --------------------------------------------------------------------------- - -loc_1ABB34: ; CODE XREF: ROM:EnemyAI_Bubble3_Bj - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$00,$00000037(a5) - bclr #$01,$0000000C(a5) - rts + bra.w EnemyAI_Bubble3_B ; --------------------------------------------------------------------------- - -loc_1ABB4C: ; CODE XREF: ROM:001ABB24j - tst.w $0000002A(a5) - bne.s loc_1ABBAC - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0040,d5 - move.w #$0040,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1ABB8C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$01,d7 - bcs.s loc_1ABB8C - cmpi.b #$02,d7 - bcs.s loc_1ABBC2 - rts + bra.w EnemyAI_Miro_A ; --------------------------------------------------------------------------- - -loc_1ABB8C: ; CODE XREF: ROM:001ABB72j - ; ROM:001ABB82j - move.b #$22,d0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.b #$50,d7 - bcs.s loc_1ABBA4 - move.b #$21,d0 - -loc_1ABBA4: ; CODE XREF: ROM:001ABB9Ej - move.w d0,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - -loc_1ABBAC: ; CODE XREF: ROM:001ABB50j - btst #$05,$0000002D(a5) - bne.s loc_1ABBCE - btst #$04,$0000002D(a5) - bne.s loc_1ABBDA - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Miro_B ; --------------------------------------------------------------------------- - -loc_1ABBC2: ; CODE XREF: ROM:001ABB88j - move.b #$10,$00000037(a5) - clr.b $0000000D(a5) - rts + bra.w EnemyAI_Mir_A ; --------------------------------------------------------------------------- - -loc_1ABBCE: ; CODE XREF: ROM:001ABBB2j - bsr.w LoadSpecialAI - move.w #$0100,$0000002C(a5) - rts + bra.w EnemyAI_Mir_B ; --------------------------------------------------------------------------- - -loc_1ABBDA: ; CODE XREF: ROM:001ABBBAj - bsr.w LoadSpecialAI - move.w #$0200,$0000002C(a5) - rts + bra.w EnemyAI_Reaper1_A ; --------------------------------------------------------------------------- - -loc_1ABBE6: ; CODE XREF: ROM:001ABB2Aj - addq.b #$01,$0000000D(a5) - move.b $0000000D(a5),d0 - andi.w #$0004,d0 - lsl.w #$06,d0 - addi.w #$0300,d0 - move.w d0,$0000002C(a5) - cmpi.b #$40,$0000000D(a5) - bcs.s locret_1ABC12 - clr.w $0000002C(a5) - move.w #$FFFF,$0000002E(a5) - clr.b $00000037(a5) - -locret_1ABC12: ; CODE XREF: ROM:001ABC02j - rts + bra.w EnemyAI_Reaper1_B ; --------------------------------------------------------------------------- - -EnemyAI_Miro_B: ; CODE XREF: ROM:001A85E2j - ; ROM:001A868Aj - bra.s loc_1ABC34 + bra.w EnemyAI_SmallFireball_A ; --------------------------------------------------------------------------- - -EnemyAI_Miro_A: ; CODE XREF: ROM:001A85DEj - ; ROM:001A8686j - btst #$01,$0000000C(a5) - bne.s loc_1ABC2E - move.b $00000037(a5),d0 - beq.s loc_1ABC34 - cmpi.b #$10,d0 - beq.s loc_1ABC4C - bra.w loc_1ABE36 + bra.w EnemyAI_SmallFireball_B ; --------------------------------------------------------------------------- - -loc_1ABC2E: ; CODE XREF: ROM:001ABC1Cj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Duke_A ; --------------------------------------------------------------------------- - -loc_1ABC34: ; CODE XREF: ROM:EnemyAI_Miro_Bj - ; ROM:001ABC22j ... - move.w #$0180,BehaviourLUTIndex(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,ChestIndex(a5) - bclr #$01,Flags2(a5) - rts + bra.w EnemyAI_Duke_B ; --------------------------------------------------------------------------- - -loc_1ABC4C: ; CODE XREF: ROM:001ABC28j - tst.b (byte_FF1142).l - bne.s loc_1ABC8A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ABC8E - bcs.s loc_1ABC84 - bsr.s sub_1ABCCE - bcs.s loc_1ABC84 - bsr.w sub_1ABD0E - bcs.s loc_1ABC84 - bsr.w sub_1ABD4E - bcs.s loc_1ABC84 - bsr.w sub_1ABD9A - bcs.w loc_1ABC84 - bsr.w sub_1ABDDA - -loc_1ABC84: ; CODE XREF: ROM:001ABC66j - ; ROM:001ABC6Aj ... - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_GhostGen_A ; --------------------------------------------------------------------------- - -loc_1ABC8A: ; CODE XREF: ROM:001ABC52j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABC8E: ; CODE XREF: ROM:001ABC64p - move.w #$0070,d5 - move.w #$FFB0,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABCCA - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0009,d7 - bhi.s loc_1ABCCA - move.b #$20,$00000037(a5) - move.w #$0019,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_GhostGen_B ; --------------------------------------------------------------------------- - -loc_1ABCCA: ; CODE XREF: sub_1ABC8E+10j - ; sub_1ABC8E+20j - tst.b d0 - rts -; End of function sub_1ABC8E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABCCE: ; CODE XREF: ROM:001ABC68p - move.w #$0040,d5 - move.w #$FFD8,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABD0A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1ABD0A - move.b #$21,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_GhostGen_A ; --------------------------------------------------------------------------- - -loc_1ABD0A: ; CODE XREF: sub_1ABCCE+10j - ; sub_1ABCCE+20j - tst.b d0 - rts -; End of function sub_1ABCCE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABD0E: ; CODE XREF: ROM:001ABC6Cp - move.w #$0050,d5 - move.w #$FFC0,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABD4A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ABD4A - move.b #$22,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_GhostGen_B ; --------------------------------------------------------------------------- - -loc_1ABD4A: ; CODE XREF: sub_1ABD0E+10j - ; sub_1ABD0E+20j - tst.b d0 - rts -; End of function sub_1ABD0E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABD4E: ; CODE XREF: ROM:001ABC72p - move.w #$0040,d5 - move.w #$FFF0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABD96 - move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) - ; Bit1 - Walk SW (+Y) - ; Bit2 - Walk NW (-X) - ; Bit3 - Walk SE (+X) - ; Bit4 - Fall - ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing - ; Bit12 - Ladder Climb - andi.b #$07,d0 - beq.s loc_1ABD96 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$005A,d7 - bhi.s loc_1ABD96 - move.b #$23,$00000037(a5) - move.w #$017F,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_GhostGen_A ; --------------------------------------------------------------------------- - -loc_1ABD96: ; CODE XREF: sub_1ABD4E+10j - ; sub_1ABD4E+1Cj ... - tst.b d0 - rts -; End of function sub_1ABD4E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABD9A: ; CODE XREF: ROM:001ABC78p - move.w #$0038,d5 - move.w #$0000,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABDD6 - move.w #01000,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0007,d7 - bhi.s loc_1ABDD6 - move.b #$24,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_GhostGen_B ; --------------------------------------------------------------------------- - -loc_1ABDD6: ; CODE XREF: sub_1ABD9A+10j - ; sub_1ABD9A+20j - tst.b d0 - rts -; End of function sub_1ABD9A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABDDA: ; CODE XREF: ROM:001ABC80p - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcc.s loc_1ABE32 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0046,d7 - bcc.s loc_1ABE18 - bra.s loc_1ABE18 -; --------------------------------------------------------------------------- - move.b #$25,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Zak_A_0 ; --------------------------------------------------------------------------- - -loc_1ABE18: ; CODE XREF: sub_1ABDDA+20j - ; sub_1ABDDA+22j - move.b #$26,$00000037(a5) - move.w #$0181,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Zak_B_0 ; --------------------------------------------------------------------------- - -loc_1ABE32: ; CODE XREF: sub_1ABDDA+10j - tst.b d0 - rts -; End of function sub_1ABDDA - + bra.w EnemyAI_Golem1_A ; --------------------------------------------------------------------------- - -loc_1ABE36: ; CODE XREF: ROM:001ABC2Aj - andi.b #$0F,d0 - beq.w loc_1ABEC0 - cmpi.b #$01,d0 - beq.s loc_1ABEC0 - cmpi.b #$02,d0 - beq.w loc_1ABED4 - cmpi.b #$03,d0 - beq.w loc_1ABED4 - cmpi.b #$04,d0 - beq.s sub_1ABE66 - cmpi.b #$05,d0 - beq.s loc_1ABEDA - bra.w loc_1ABEE6 + bra.w EnemyAI_Golem1_B ; --------------------------------------------------------------------------- - nop - -; =============== S U B R O U T I N E ======================================= - - -sub_1ABE66: ; CODE XREF: ROM:001ABE58j - ; ROM:001ABEC4j ... - move.w #$0100,Action(a5) - addq.b #$01,Unk4D(a5) - cmpi.b #$04,Unk4D(a5) - bcs.s loc_1ABEBA - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$000D,d3 - bsr.w sub_1A880C - move.w #$0200,Action(a5) - cmpi.b #$08,Unk4D(a5) - bcs.s loc_1ABEBA - move.w #$0300,Action(a5) - cmpi.b #$0C,Unk4D(a5) - bcs.s loc_1ABEBA - move.w #$0400,Action(a5) - cmpi.b #$10,Unk4D(a5) - bcs.s loc_1ABEBA - clr.w Action(a5) - clr.b Unk4D(a5) - -loc_1ABEBA: ; CODE XREF: sub_1ABE66+10j - ; sub_1ABE66+2Ej ... - bsr.w LoadSpecialAI - rts -; End of function sub_1ABE66 - + bra.w EnemyAI_Golem2_A ; --------------------------------------------------------------------------- - -loc_1ABEC0: ; CODE XREF: ROM:001ABE3Aj - ; ROM:001ABE42j - tst.b $0000004D(a5) - bne.s sub_1ABE66 - btst #$04,$0000002D(a5) - bne.s sub_1ABE66 - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Golem2_B ; --------------------------------------------------------------------------- - -loc_1ABED4: ; CODE XREF: ROM:001ABE48j - ; ROM:001ABE50j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Golem2_A ; Golem3 ; --------------------------------------------------------------------------- - -loc_1ABEDA: ; CODE XREF: ROM:001ABE5Ej - bsr.s sub_1ABE66 - tst.w $0000002C(a5) - beq.w loc_1ABC34 - rts + bra.w EnemyAI_Golem2_B ; --------------------------------------------------------------------------- - -loc_1ABEE6: ; CODE XREF: ROM:001ABE60j - tst.b $0000002B(a5) - bne.w loc_1ABF26 - tst.b $0000004D(a5) - bne.w sub_1ABE66 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0018,d7 - bsr.w sub_1A8964 - bcc.w loc_1ABC34 - tst.b (byte_FF1142).l - beq.w sub_1ABE66 - rts + bra.w EnemyAI_Reaper2_A ; --------------------------------------------------------------------------- - -loc_1ABF26: ; CODE XREF: ROM:001ABEEAj - clr.w $0000002C(a5) - clr.b $0000004D(a5) - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Reaper2_B ; --------------------------------------------------------------------------- - -EnemyAI_Mir_B: ; CODE XREF: ROM:001A85EAj - bra.s loc_1ABF5A + bra.w EnemyAI_Reaper3_A ; --------------------------------------------------------------------------- - -EnemyAI_Mir_A: ; CODE XREF: ROM:001A85E6j - bset #$00,$0000000C(a5) - bclr #$01,$00000038(a5) - btst #$01,$0000000C(a5) - bne.w loc_1ABFF2 - move.b $00000037(a5),d0 - cmpi.b #$10,d0 - bne.w loc_1AC04E - bra.s loc_1ABF72 + bra.w EnemyAI_Reaper3_B ; --------------------------------------------------------------------------- - -loc_1ABF5A: ; CODE XREF: ROM:EnemyAI_Mir_Bj - ; ROM:001AC104j ... - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts + bra.w EnemyAI_Spectre1_A ; --------------------------------------------------------------------------- - -loc_1ABF72: ; CODE XREF: ROM:001ABF58j - bsr.w sub_1AC010 - move.b d2,d1 - movea.l a5,a1 - bclr #$00,$0000000C(a5) - jsr (j_SetSpriteRotationAnimFlags).l - bset #$07,$00000048(a5) - clr.b $0000000A(a5) - move.w (Player_CentreX).l,d0 - subi.w #$0070,d0 - move.w $00000014(a5),d1 - sub.w d0,d1 - cmpi.w #$00E0,d1 - bcc.s loc_1ABFF8 - move.w (Player_CentreY).l,d0 - subi.w #$0070,d0 - move.w $00000016(a5),d2 - sub.w d0,d2 - cmpi.w #$00E0,d2 - bcc.s loc_1ABFF8 - move.w (Player_CentreX).l,d0 - subi.w #$0060,d0 - move.w $00000014(a5),d1 - sub.w d0,d1 - cmpi.w #$00C0,d1 - bcc.s loc_1AC004 - move.w (Player_CentreY).l,d0 - subi.w #$0060,d0 - move.w $00000016(a5),d2 - sub.w d0,d2 - cmpi.w #$00C0,d2 - bcc.s loc_1AC004 - move.w #$0266,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - -loc_1ABFF2: ; CODE XREF: ROM:001ABF48j - ; ROM:001AC002j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Spectre1_B ; --------------------------------------------------------------------------- - -loc_1ABFF8: ; CODE XREF: ROM:001ABFA4j - ; ROM:001ABFBAj - move.w #$0267,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bra.s loc_1ABFF2 + bra.w EnemyAI_Spectre2_A ; --------------------------------------------------------------------------- - -loc_1AC004: ; CODE XREF: ROM:001ABFD0j - ; ROM:001ABFE6j - clr.b $0000004D(a5) - move.b #$20,$00000037(a5) - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC010: ; CODE XREF: ROM:loc_1ABF72p - ; ROM:001AC054p ... - move.w $00000014(a5),d0 - sub.w (Player_CentreX).l,d0 - move.w $00000016(a5),d1 - sub.w (Player_CentreY).l,d1 - movem.w d0-d1,-(sp) - add.w d0,d1 - bpl.s loc_1AC03E - movem.w (sp)+,d0-d1 - move.b #$80,d2 - sub.w d1,d0 - bpl.s locret_1AC04C - move.b #$40,d2 - bra.s locret_1AC04C + bra.w EnemyAI_Spectre2_B ; --------------------------------------------------------------------------- - -loc_1AC03E: ; CODE XREF: sub_1AC010+1Aj - movem.w (sp)+,d0-d1 - move.b #$C0,d2 - sub.w d1,d0 - bpl.s locret_1AC04C - clr.b d2 - -locret_1AC04C: ; CODE XREF: sub_1AC010+26j - ; sub_1AC010+2Cj ... - rts -; End of function sub_1AC010 - + bra.w EnemyAI_Spectre3_A ; --------------------------------------------------------------------------- - -loc_1AC04E: ; CODE XREF: ROM:001ABF54j - bset #$07,$00000048(a5) - bsr.w sub_1AC010 - move.b d2,d1 - movea.l a5,a1 - bclr #$00,$0000000C(a5) - jsr (j_SetSpriteRotationAnimFlags).l - bset #$00,$0000000C(a5) - andi.w #$0004,$00000024(a5) - addi.w #$0008,$00000024(a5) - move.b #$01,$0000000A(a5) - andi.b #$BF,$0000000C(a5) - addq.b #$01,$0000004D(a5) - move.w #$0000,$00000026(a5) - move.w #$0100,$0000002C(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AC0AE - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l + bra.w EnemyAI_Spectre3_B ; --------------------------------------------------------------------------- - -loc_1AC0AE: ; CODE XREF: ROM:001AC09Cj - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AC0C0 - move.b #$01,d0 - bra.w LoadProjectilePalette + bra.w EnemyAI_Harpy1_A ; --------------------------------------------------------------------------- - -loc_1AC0C0: ; CODE XREF: ROM:001AC0B4j - cmpi.b #$0F,$0000004D(a5) - bhi.w loc_1AC108 - bcs.w locret_1AC11E - bsr.w sub_1AC010 - move.b $00000004(a5),d0 - movem.w d0,-(sp) - andi.b #$3F,$00000004(a5) - or.b d2,$00000004(a5) - move.b #$01,d0 - move.w #$0300,d1 - bsr.w sub_1AC474 - bcs.s loc_1AC0FC - movem.w (sp)+,d0 - move.b d0,$00000004(a5) - rts + bra.w EnemyAI_Harpy1_B ; --------------------------------------------------------------------------- - -loc_1AC0FC: ; CODE XREF: ROM:001AC0F0j - movem.w (sp)+,d0 - move.b d0,$00000004(a5) - bra.w loc_1ABF5A + bra.w EnemyAI_Harpy2_A ; --------------------------------------------------------------------------- - -loc_1AC108: ; CODE XREF: ROM:001AC0C6j - move.w #$0004,$00000026(a5) - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000004D(a5) - beq.w loc_1ABF5A - -locret_1AC11E: ; CODE XREF: ROM:001AC0CAj - rts + bra.w EnemyAI_Harpy2_B ; --------------------------------------------------------------------------- - -EnemyAI_Reaper1_B: ; CODE XREF: ROM:001A85F2j - bra.s loc_1AC168 + bra.w EnemyAI_Harpy3_A ; --------------------------------------------------------------------------- - -EnemyAI_Reaper1_A: ; CODE XREF: ROM:001A85EEj - btst #$01,$0000000C(a5) - bne.s loc_1AC13A - move.b $00000037(a5),d0 - beq.s loc_1AC140 - cmpi.b #$10,d0 - beq.s loc_1AC16C - bra.w loc_1AC258 + bra.w EnemyAI_Harpy3_B ; --------------------------------------------------------------------------- - -loc_1AC13A: ; CODE XREF: ROM:001AC128j - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Spinner_A ; --------------------------------------------------------------------------- - -loc_1AC140: ; CODE XREF: ROM:001AC12Ej - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0100,d5 - move.w #$0100,d6 - move.w #$0100,d7 - bsr.w sub_1A8964 - bcs.s loc_1AC168 - rts + bra.w EnemyAI_Spinner_B ; --------------------------------------------------------------------------- - -loc_1AC168: ; CODE XREF: ROM:EnemyAI_Reaper1_Bj - ; ROM:001AC164j ... - bra.w loc_1A8AB6 + bra.w EnemyAI_Miro_A ; --------------------------------------------------------------------------- - -loc_1AC16C: ; CODE XREF: ROM:001AC134j - tst.b (byte_FF1142).l - bne.s loc_1AC1CC - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - addq.b #$01,$0000004D(a5) - cmpi.b #$3C,$0000004D(a5) - bcs.s loc_1AC1B8 - clr.b $0000004D(a5) - bsr.s sub_1AC1D0 - bcs.s loc_1AC1B2 - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - bsr.s sub_1AC200 - bcs.s loc_1AC1B2 - bsr.w sub_1AC22A - -loc_1AC1B2: ; CODE XREF: ROM:001AC196j - ; ROM:001AC1ACj - bsr.w LoadSpecialAI - rts + bra.w EnemyAI_Miro_B ; --------------------------------------------------------------------------- - -loc_1AC1B8: ; CODE XREF: ROM:001AC18Ej - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - rts + bra.w EnemyAI_Ifrit_A ; --------------------------------------------------------------------------- - -loc_1AC1CC: ; CODE XREF: ROM:001AC172j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC1D0: ; CODE XREF: ROM:001AC194p - move.w #$0060,d5 - move.w #$FFB8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AC1FC - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Ifrit_B ; --------------------------------------------------------------------------- - -loc_1AC1FC: ; CODE XREF: sub_1AC1D0+10j - tst.b d0 - rts -; End of function sub_1AC1D0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC200: ; CODE XREF: ROM:001AC1AAp - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$00C8,d7 - bhi.s loc_1AC226 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts + bra.w EnemyAI_Gola_A ; --------------------------------------------------------------------------- - -loc_1AC226: ; CODE XREF: sub_1AC200+Ej - tst.b d0 - rts -; End of function sub_1AC200 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC22A: ; CODE XREF: ROM:001AC1AEp - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$00C8,d7 - bhi.s loc_1AC254 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts + bra.w EnemyAI_Gola_B ; --------------------------------------------------------------------------- - -loc_1AC254: ; CODE XREF: sub_1AC22A+Ej - tst.b d0 - rts -; End of function sub_1AC22A - + bra.w EnemyAI_Nole_A ; --------------------------------------------------------------------------- - -loc_1AC258: ; CODE XREF: ROM:001AC136j - clr.b $0000000D(a5) - andi.b #$0F,d0 - beq.w loc_1AC368 - cmpi.b #$01,d0 - beq.s loc_1AC27E - cmpi.b #$02,d0 - beq.w loc_1AC292 - cmpi.b #$03,d0 - beq.w loc_1AC292 - bra.w loc_1AC292 + bra.w EnemyAI_Nole_B ; --------------------------------------------------------------------------- - -loc_1AC27E: ; CODE XREF: ROM:001AC268j - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - eori.b #$80,d0 - clr.b d1 - bra.s loc_1AC2A2 + bra.w EnemyAI_StoneWarrior_A ; --------------------------------------------------------------------------- - -loc_1AC292: ; CODE XREF: ROM:001AC26Ej - ; ROM:001AC276j ... - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - move.b #$80,d1 - -loc_1AC2A2: ; CODE XREF: ROM:001AC290j - movem.w d1,-(sp) - move.w (Player_CentreX).l,d1 - move.w (Player_CentreY).l,d2 - andi.b #$C0,d0 - beq.s loc_1AC2C6 - cmpi.b #$80,d0 - beq.s loc_1AC2CC - bhi.s loc_1AC2D2 - addi.w #$0068,d1 - bra.s loc_1AC2D6 + bra.w EnemyAI_StoneWarrior_B ; --------------------------------------------------------------------------- - -loc_1AC2C6: ; CODE XREF: ROM:001AC2B6j - subi.w #$0068,d2 - bra.s loc_1AC2D6 + bra.w EnemyAI_Bubble3_A ; Bubble4 ; --------------------------------------------------------------------------- - -loc_1AC2CC: ; CODE XREF: ROM:001AC2BCj - addi.w #$0068,d2 - bra.s loc_1AC2D6 + bra.w EnemyAI_Bubble3_B ; --------------------------------------------------------------------------- - -loc_1AC2D2: ; CODE XREF: ROM:001AC2BEj - subi.w #$0068,d1 - -loc_1AC2D6: ; CODE XREF: ROM:001AC2C4j - ; ROM:001AC2CAj ... - move.w d1,d0 - lsr.w #$04,d1 - move.b d1,(a5) - andi.b #$0F,d0 - move.b d0,$00000002(a5) - move.w d2,d0 - lsr.w #$04,d2 - move.b d2,$00000001(a5) - andi.b #$0F,d0 - move.b d0,$00000003(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - jsr (sub_3BC).l - bcc.s loc_1AC338 - movem.w (sp)+,d1 - movem.l (sp)+,d0 - move.l d0,(a5) - movea.l a5,a1 - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - jsr (sub_1A8AE6).l - bra.w loc_1AC168 + bra.w EnemyAI_Bubble3_A ; Bubble5 ; --------------------------------------------------------------------------- - -loc_1AC338: ; CODE XREF: ROM:001AC314j - movem.w (sp)+,d1 - bset #$05,$0000002D(a5) - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - eor.b d1,d0 - andi.b #$3F,$00000004(a5) - or.b d0,$00000004(a5) - movem.l (sp)+,d0 - move.b #$20,$00000037(a5) - clr.b $0000004D(a5) - rts + bra.w EnemyAI_Bubble3_B ; --------------------------------------------------------------------------- - -loc_1AC368: ; CODE XREF: ROM:001AC260j - andi.b #$BF,$0000000C(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AC3A2 - move.w #$0100,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l + bra.w EnemyAI_Bubble3_A ; Bubble6 ; --------------------------------------------------------------------------- - -loc_1AC3A2: ; CODE XREF: ROM:001AC38Aj - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AC3B4 - move.b #$01,d0 - bra.w LoadProjectilePalette + bra.w EnemyAI_Bubble3_B ; --------------------------------------------------------------------------- - -loc_1AC3B4: ; CODE XREF: ROM:001AC3A8j - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1AC3DA - bcs.w locret_1AC3EA - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0300,d1 - bsr.w sub_1AC474 - bcs.w loc_1AC3EC - rts + bra.w EnemyAI_Spinner_A ; --------------------------------------------------------------------------- - -loc_1AC3DA: ; CODE XREF: ROM:001AC3BAj - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1AC3EC - -locret_1AC3EA: ; CODE XREF: ROM:001AC3BEj - rts + bra.w EnemyAI_Spinner_B ; --------------------------------------------------------------------------- - -loc_1AC3EC: ; CODE XREF: ROM:001AC3D4j - ; ROM:001AC3E6j - clr.b $0000004D(a5) - bra.w loc_1AC168 + bra.w EnemyAI_StoneWarrior_A +; --------------------------------------------------------------------------- + bra.w EnemyAI_StoneWarrior_B ; =============== S U B R O U T I N E ======================================= -LoadProjectilePalette: ; CODE XREF: ROM:001AC0BCj - ; ROM:001AC3B0j ... - subq.b #$01,d0 - ext.w d0 - lsl.b #$02,d0 - move.l #$C0700000,(VDP_CTRL_REG).l ; Palette address 0x70 : Pal 3, index 8 - move.w ProjectilePalette1(pc,d0.w),d1 - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+$10).l - move.w d1,(g_Pal3Active+$10).l - move.w ProjectilePalette1+2(pc,d0.w),d1 - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+$12).l - move.w d1,(g_Pal3Active+$12).l - move.l #$C03A0000,(VDP_CTRL_REG).l - move.w ProjectilePalette1(pc,d0.w),d1 - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal1Base+$1A).l - move.w d1,(g_Pal1Active+$1A).l - move.w ProjectilePalette1+2(pc,d0.w),d1 - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal1Base+$1C).l - move.w d1,(g_Pal1Active+$1C).l - rts -; End of function LoadProjectilePalette +sub_1A86D6: ; CODE XREF: sub_1A83E6+414p + ; DATA XREF: sub_1A440Ct + move.w #$0004,d1 + bsr.w sub_1A83F0 + bra.w j_j_OnTick +; End of function sub_1A86D6 -; --------------------------------------------------------------------------- diff --git a/code/gamelogic/ai/enemyai2.asm b/code/gamelogic/ai/enemyai2.asm index d885bd1..e62d782 100644 --- a/code/gamelogic/ai/enemyai2.asm +++ b/code/gamelogic/ai/enemyai2.asm @@ -2,5224 +2,369 @@ ; =============== S U B R O U T I N E ======================================= -sub_1AC474: ; CODE XREF: ROM:001AC0ECp - ; ROM:001AC3D0p ... - movem.w d0-d1,-(sp) - jsr (sub_103B2).l - bcs.w loc_1AC4FC - move.w (a5),d0 - move.b $00000004(a5),d1 - andi.b #$C0,d1 - beq.s loc_1AC49C - cmpi.b #$80,d1 - bcs.s loc_1AC4A0 - beq.s loc_1AC4A6 - subi.w #$0100,d0 - bra.s loc_1AC4A8 -; --------------------------------------------------------------------------- - -loc_1AC49C: ; CODE XREF: sub_1AC474+18j - subq.b #$01,d0 - bra.s loc_1AC4A8 -; --------------------------------------------------------------------------- - -loc_1AC4A0: ; CODE XREF: sub_1AC474+1Ej - addi.w #$0100,d0 - bra.s loc_1AC4A8 -; --------------------------------------------------------------------------- - -loc_1AC4A6: ; CODE XREF: sub_1AC474+20j - addq.b #$01,d0 - -loc_1AC4A8: ; CODE XREF: sub_1AC474+26j - ; sub_1AC474+2Aj ... - move.w d0,(a1) - move.b d1,$00000004(a1) - movem.w (sp)+,d0-d1 - ext.w d0 - move.b locret_1AC504+1(pc,d0.w),d2 - move.w d1,$0000003C(a1) - move.w $00000012(a5),d3 - addi.w #$0010,d3 - move.w d3,$00000012(a1) - move.w $00000002(a5),$00000002(a1) - move.w #$64C0,$00000006(a1) - move.w #$021C,$00000034(a1) - move.b #$04,$00000009(a1) - jsr (sub_103B8).l - bset #$00,$00000038(a1) - bset #$07,$0000000C(a1) - bset #$07,$0000004C(a1) - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AC4FC: ; CODE XREF: sub_1AC474+Aj - movem.w (sp)+,d0-d1 - ori #$01,ccr - -locret_1AC504: ; DATA XREF: sub_1AC474+40r - rts -; End of function sub_1AC474 - -; --------------------------------------------------------------------------- - dc.b SPR_SMLFIREBALL - dc.b SPR_NOLEAXEPROJECTILE - dc.b SPR_ZAKBOOMERANG - dc.b $FF -; --------------------------------------------------------------------------- - -EnemyAI_Reaper2_B: ; CODE XREF: ROM:001A8642j - bra.s loc_1AC552 -; --------------------------------------------------------------------------- - -EnemyAI_Reaper2_A: ; CODE XREF: ROM:001A863Ej - btst #$01,$0000000C(a5) - bne.s loc_1AC524 - move.b $00000037(a5),d0 - beq.s loc_1AC52A - cmpi.b #$10,d0 - beq.s loc_1AC556 - bra.w loc_1AC642 -; --------------------------------------------------------------------------- - -loc_1AC524: ; CODE XREF: ROM:001AC512j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AC52A: ; CODE XREF: ROM:001AC518j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0100,d5 - move.w #$0100,d6 - move.w #$0100,d7 - bsr.w sub_1A8964 - bcs.s loc_1AC552 - rts -; --------------------------------------------------------------------------- - -loc_1AC552: ; CODE XREF: ROM:EnemyAI_Reaper2_Bj - ; ROM:001AC54Ej ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AC556: ; CODE XREF: ROM:001AC51Ej - tst.b (byte_FF1142).l - bne.s loc_1AC5B6 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - addq.b #$01,$0000004D(a5) - cmpi.b #$2D,$0000004D(a5) - bcs.s loc_1AC5A2 - clr.b $0000004D(a5) - bsr.s sub_1AC5BA - bcs.s loc_1AC59C - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - bsr.s sub_1AC5EA - bcs.s loc_1AC59C - bsr.w sub_1AC614 - -loc_1AC59C: ; CODE XREF: ROM:001AC580j - ; ROM:001AC596j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AC5A2: ; CODE XREF: ROM:001AC578j - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AC5B6: ; CODE XREF: ROM:001AC55Cj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC5BA: ; CODE XREF: ROM:001AC57Ep - move.w #$0060,d5 - move.w #$FFB8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AC5E6 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC5E6: ; CODE XREF: sub_1AC5BA+10j - tst.b d0 - rts -; End of function sub_1AC5BA - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC5EA: ; CODE XREF: ROM:001AC594p - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$012C,d7 - bhi.s loc_1AC610 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC610: ; CODE XREF: sub_1AC5EA+Ej - tst.b d0 - rts -; End of function sub_1AC5EA - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC614: ; CODE XREF: ROM:001AC598p - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$012C,d7 - bhi.s loc_1AC63E - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC63E: ; CODE XREF: sub_1AC614+Ej - tst.b d0 - rts -; End of function sub_1AC614 - -; --------------------------------------------------------------------------- - -loc_1AC642: ; CODE XREF: ROM:001AC520j - clr.b $0000000D(a5) - andi.b #$0F,d0 - beq.w loc_1AC752 - cmpi.b #$01,d0 - beq.s loc_1AC668 - cmpi.b #$02,d0 - beq.w loc_1AC67C - cmpi.b #$03,d0 - beq.w loc_1AC67C - bra.w loc_1AC67C -; --------------------------------------------------------------------------- - -loc_1AC668: ; CODE XREF: ROM:001AC652j - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - eori.b #$80,d0 - clr.b d1 - bra.s loc_1AC68C -; --------------------------------------------------------------------------- - -loc_1AC67C: ; CODE XREF: ROM:001AC658j - ; ROM:001AC660j ... - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - move.b #$80,d1 - -loc_1AC68C: ; CODE XREF: ROM:001AC67Aj - movem.w d1,-(sp) - move.w (Player_CentreX).l,d1 - move.w (Player_CentreY).l,d2 - andi.b #$C0,d0 - beq.s loc_1AC6B0 - cmpi.b #$80,d0 - beq.s loc_1AC6B6 - bhi.s loc_1AC6BC - addi.w #$0068,d1 - bra.s loc_1AC6C0 -; --------------------------------------------------------------------------- - -loc_1AC6B0: ; CODE XREF: ROM:001AC6A0j - subi.w #$0068,d2 - bra.s loc_1AC6C0 -; --------------------------------------------------------------------------- - -loc_1AC6B6: ; CODE XREF: ROM:001AC6A6j - addi.w #$0068,d2 - bra.s loc_1AC6C0 -; --------------------------------------------------------------------------- - -loc_1AC6BC: ; CODE XREF: ROM:001AC6A8j - subi.w #$0068,d1 - -loc_1AC6C0: ; CODE XREF: ROM:001AC6AEj - ; ROM:001AC6B4j ... - move.w d1,d0 - lsr.w #$04,d1 - move.b d1,(a5) - andi.b #$0F,d0 - move.b d0,$00000002(a5) - move.w d2,d0 - lsr.w #$04,d2 - move.b d2,$00000001(a5) - andi.b #$0F,d0 - move.b d0,$00000003(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - jsr (sub_3BC).l - bcc.s loc_1AC722 - movem.w (sp)+,d1 - movem.l (sp)+,d0 - move.l d0,(a5) - movea.l a5,a1 - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - jsr (sub_1A8AE6).l - bra.w loc_1AC552 -; --------------------------------------------------------------------------- - -loc_1AC722: ; CODE XREF: ROM:001AC6FEj - movem.w (sp)+,d1 - bset #$05,$0000002D(a5) - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - eor.b d1,d0 - andi.b #$3F,$00000004(a5) - or.b d0,$00000004(a5) - movem.l (sp)+,d0 - move.b #$20,$00000037(a5) - clr.b $0000004D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AC752: ; CODE XREF: ROM:001AC64Aj - andi.b #$BF,$0000000C(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AC78C - move.w #$0100,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1AC78C: ; CODE XREF: ROM:001AC774j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AC79E - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1AC79E: ; CODE XREF: ROM:001AC792j - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1AC7C4 - bcs.w locret_1AC7D4 - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0500,d1 - bsr.w sub_1AC474 - bcs.w loc_1AC7D6 - rts -; --------------------------------------------------------------------------- - -loc_1AC7C4: ; CODE XREF: ROM:001AC7A4j - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1AC7D6 - -locret_1AC7D4: ; CODE XREF: ROM:001AC7A8j - rts -; --------------------------------------------------------------------------- - -loc_1AC7D6: ; CODE XREF: ROM:001AC7BEj - ; ROM:001AC7D0j - clr.b $0000004D(a5) - bra.w loc_1AC552 -; --------------------------------------------------------------------------- - -EnemyAI_Reaper3_B: ; CODE XREF: ROM:001A864Aj - bra.s loc_1AC826 -; --------------------------------------------------------------------------- - -EnemyAI_Reaper3_A: ; CODE XREF: ROM:001A8646j - btst #$01,$0000000C(a5) - bne.s loc_1AC7F8 - move.b $00000037(a5),d0 - beq.s loc_1AC7FE - cmpi.b #$10,d0 - beq.s loc_1AC82A - bra.w loc_1AC916 -; --------------------------------------------------------------------------- - -loc_1AC7F8: ; CODE XREF: ROM:001AC7E6j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AC7FE: ; CODE XREF: ROM:001AC7ECj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0100,d5 - move.w #$0100,d6 - move.w #$0100,d7 - bsr.w sub_1A8964 - bcs.s loc_1AC826 - rts -; --------------------------------------------------------------------------- - -loc_1AC826: ; CODE XREF: ROM:EnemyAI_Reaper3_Bj - ; ROM:001AC822j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AC82A: ; CODE XREF: ROM:001AC7F2j - tst.b (byte_FF1142).l - bne.s loc_1AC88A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s loc_1AC876 - clr.b $0000004D(a5) - bsr.s sub_1AC88E - bcs.s loc_1AC870 - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - bsr.s sub_1AC8BE - bcs.s loc_1AC870 - bsr.w sub_1AC8E8 - -loc_1AC870: ; CODE XREF: ROM:001AC854j - ; ROM:001AC86Aj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AC876: ; CODE XREF: ROM:001AC84Cj - ori.b #$40,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AC88A: ; CODE XREF: ROM:001AC830j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC88E: ; CODE XREF: ROM:001AC852p - move.w #$0060,d5 - move.w #$FFB8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AC8BA - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC8BA: ; CODE XREF: sub_1AC88E+10j - tst.b d0 - rts -; End of function sub_1AC88E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC8BE: ; CODE XREF: ROM:001AC868p - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0190,d7 - bhi.s loc_1AC8E4 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC8E4: ; CODE XREF: sub_1AC8BE+Ej - tst.b d0 - rts -; End of function sub_1AC8BE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AC8E8: ; CODE XREF: ROM:001AC86Cp - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0190,d7 - bhi.s loc_1AC912 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AC912: ; CODE XREF: sub_1AC8E8+Ej - tst.b d0 - rts -; End of function sub_1AC8E8 - -; --------------------------------------------------------------------------- - -loc_1AC916: ; CODE XREF: ROM:001AC7F4j - clr.b $0000000D(a5) - andi.b #$0F,d0 - beq.w loc_1ACA26 - cmpi.b #$01,d0 - beq.s loc_1AC93C - cmpi.b #$02,d0 - beq.w loc_1AC950 - cmpi.b #$03,d0 - beq.w loc_1AC950 - bra.w loc_1AC950 -; --------------------------------------------------------------------------- - -loc_1AC93C: ; CODE XREF: ROM:001AC926j - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - eori.b #$80,d0 - clr.b d1 - bra.s loc_1AC960 -; --------------------------------------------------------------------------- - -loc_1AC950: ; CODE XREF: ROM:001AC92Cj - ; ROM:001AC934j ... - move.l (a5),d0 - movem.l d0,-(sp) - move.b (Player_RotationAndSize).l,d0 - move.b #$80,d1 - -loc_1AC960: ; CODE XREF: ROM:001AC94Ej - movem.w d1,-(sp) - move.w (Player_CentreX).l,d1 - move.w (Player_CentreY).l,d2 - andi.b #$C0,d0 - beq.s loc_1AC984 - cmpi.b #$80,d0 - beq.s loc_1AC98A - bhi.s loc_1AC990 - addi.w #$0068,d1 - bra.s loc_1AC994 -; --------------------------------------------------------------------------- - -loc_1AC984: ; CODE XREF: ROM:001AC974j - subi.w #$0068,d2 - bra.s loc_1AC994 -; --------------------------------------------------------------------------- - -loc_1AC98A: ; CODE XREF: ROM:001AC97Aj - addi.w #$0068,d2 - bra.s loc_1AC994 -; --------------------------------------------------------------------------- - -loc_1AC990: ; CODE XREF: ROM:001AC97Cj - subi.w #$0068,d1 - -loc_1AC994: ; CODE XREF: ROM:001AC982j - ; ROM:001AC988j ... - move.w d1,d0 - lsr.w #$04,d1 - move.b d1,(a5) - andi.b #$0F,d0 - move.b d0,$00000002(a5) - move.w d2,d0 - lsr.w #$04,d2 - move.b d2,$00000001(a5) - andi.b #$0F,d0 - move.b d0,$00000003(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - jsr (sub_3BC).l - bcc.s loc_1AC9F6 - movem.w (sp)+,d1 - movem.l (sp)+,d0 - move.l d0,(a5) - movea.l a5,a1 - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - jsr (sub_1A8AE6).l - bra.w loc_1AC826 -; --------------------------------------------------------------------------- - -loc_1AC9F6: ; CODE XREF: ROM:001AC9D2j - movem.w (sp)+,d1 - bset #$05,$0000002D(a5) - move.b (Player_RotationAndSize).l,d0 - andi.b #$C0,d0 - eor.b d1,d0 - andi.b #$3F,$00000004(a5) - or.b d0,$00000004(a5) - movem.l (sp)+,d0 - move.b #$20,$00000037(a5) - clr.b $0000004D(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ACA26: ; CODE XREF: ROM:001AC91Ej - andi.b #$BF,$0000000C(a5) - clr.w d0 - move.b $00000039(a5),d0 - move.w d0,$00000012(a5) - addi.w #$001F,d0 - move.w d0,$00000054(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1ACA60 - move.w #$0100,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1ACA60: ; CODE XREF: ROM:001ACA48j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1ACA72 - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1ACA72: ; CODE XREF: ROM:001ACA66j - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1ACA98 - bcs.w locret_1ACAA8 - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0800,d1 - bsr.w sub_1AC474 - bcs.w loc_1ACAAA - rts -; --------------------------------------------------------------------------- - -loc_1ACA98: ; CODE XREF: ROM:001ACA78j - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1ACAAA - -locret_1ACAA8: ; CODE XREF: ROM:001ACA7Cj - rts -; --------------------------------------------------------------------------- - -loc_1ACAAA: ; CODE XREF: ROM:001ACA92j - ; ROM:001ACAA4j - clr.b $0000004D(a5) - bra.w loc_1AC826 -; --------------------------------------------------------------------------- - -EnemyAI_Duke_B: ; CODE XREF: ROM:001A8602j - bra.s loc_1ACB06 -; --------------------------------------------------------------------------- - -EnemyAI_Duke_A: ; CODE XREF: ROM:001A85FEj - bset #$06,$00000038(a5) - btst #$01,$0000000C(a5) - bne.s loc_1ACAD2 - move.b $00000037(a5),d0 - beq.s loc_1ACADE - cmpi.b #$10,d0 - beq.s loc_1ACB24 - bra.w loc_1ACC7A -; --------------------------------------------------------------------------- - -loc_1ACAD2: ; CODE XREF: ROM:001ACAC0j - bclr #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACADE: ; CODE XREF: ROM:001ACAC6j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0030,d6 - move.w #$0040,d7 - bsr.w sub_1A8964 - bcs.s loc_1ACB06 - rts -; --------------------------------------------------------------------------- - -loc_1ACB06: ; CODE XREF: ROM:EnemyAI_Duke_Bj - ; ROM:001ACB02j ... - bclr #$00,$00000038(a5) - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ACB24: ; CODE XREF: ROM:001ACACCj - tst.b (byte_FF1142).l - bne.s loc_1ACB54 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ACB64 - bcs.s loc_1ACB4E - bsr.s sub_1ACBA0 - bcs.s loc_1ACB4E - bsr.w sub_1ACBE0 - bcs.s loc_1ACB4E - bsr.w sub_1ACC20 - -loc_1ACB4E: ; CODE XREF: ROM:001ACB3Ej - ; ROM:001ACB42j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACB54: ; CODE XREF: ROM:001ACB2Aj - move.w #$0006,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACB64: ; CODE XREF: ROM:001ACB3Cp - move.w #$0070,d5 - move.w #$FFB0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACB9C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0056,d7 - bhi.s loc_1ACB9C - move.b #$20,$00000037(a5) - move.w #$001A,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACB9C: ; CODE XREF: sub_1ACB64+10j - ; sub_1ACB64+20j - tst.b d0 - rts -; End of function sub_1ACB64 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACBA0: ; CODE XREF: ROM:001ACB40p - move.w #$0050,d5 - move.w #$0000,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACBDC - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$007D,d7 - bhi.s loc_1ACBDC - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACBDC: ; CODE XREF: sub_1ACBA0+10j - ; sub_1ACBA0+20j - tst.b d0 - rts -; End of function sub_1ACBA0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACBE0: ; CODE XREF: ROM:001ACB44p - move.w #$0030,d5 - move.w #$FFE0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACC1C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$002B,d7 - bhi.s loc_1ACC1C - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACC1C: ; CODE XREF: sub_1ACBE0+10j - ; sub_1ACBE0+20j - tst.b d0 - rts -; End of function sub_1ACBE0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACC20: ; CODE XREF: ROM:001ACB4Ap - move.w #$0028,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACC76 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1ACC5C - move.b #$23,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACC5C: ; CODE XREF: sub_1ACC20+20j - move.b #$24,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACC76: ; CODE XREF: sub_1ACC20+10j - tst.b d0 - rts -; End of function sub_1ACC20 - -; --------------------------------------------------------------------------- - -loc_1ACC7A: ; CODE XREF: ROM:001ACACEj - andi.b #$0F,d0 - beq.s loc_1ACC9A - cmpi.b #$01,d0 - beq.s loc_1ACCBE - cmpi.b #$02,d0 - beq.w loc_1ACCE0 - cmpi.b #$03,d0 - beq.w loc_1ACC9A - bra.w *+4 -; --------------------------------------------------------------------------- - -loc_1ACC9A: ; CODE XREF: ROM:001ACC7Ej - ; ROM:001ACC92j ... - cmpi.b #$18,$0000002A(a5) - bcc.s loc_1ACCB8 - move.w #$0100,$0000002C(a5) - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - -loc_1ACCB8: ; CODE XREF: ROM:001ACCA0j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACCBE: ; CODE XREF: ROM:001ACC84j - bset #$00,$00000038(a5) - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$28,$0000000D(a5) - bcc.w loc_1ACB06 - rts -; --------------------------------------------------------------------------- - -loc_1ACCDA: ; CODE XREF: ROM:001ACD00j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACCE0: ; CODE XREF: ROM:001ACC8Aj - move.w #$0029,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1ACCDA - bra.w loc_1ACB06 -; --------------------------------------------------------------------------- - -EnemyAI_Zak_B_0: ; CODE XREF: ROM:001A8622j - bra.s loc_1ACD4E -; --------------------------------------------------------------------------- - -EnemyAI_Zak_A_0: ; CODE XREF: ROM:001A861Ej - btst #$01,$0000000C(a5) - bne.s loc_1ACD20 - move.b $00000037(a5),d0 - beq.s loc_1ACD26 - cmpi.b #$10,d0 - beq.s loc_1ACD5E - bra.w loc_1ACEFC -; --------------------------------------------------------------------------- - -loc_1ACD20: ; CODE XREF: ROM:001ACD0Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACD26: ; CODE XREF: ROM:001ACD14j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0040,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s sub_1ACD54 - rts -; --------------------------------------------------------------------------- - -loc_1ACD4E: ; CODE XREF: ROM:EnemyAI_Zak_B_0j - bsr.s sub_1ACD54 - bra.w loc_1ACE0C - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACD54: ; CODE XREF: ROM:001ACD4Aj - ; ROM:loc_1ACD4Ep ... - -; FUNCTION CHUNK AT 001A8AB6 SIZE 00000018 BYTES - - bset #$08,$00000020(a5) - bra.w loc_1A8AB6 -; End of function sub_1ACD54 - -; --------------------------------------------------------------------------- - -loc_1ACD5E: ; CODE XREF: ROM:001ACD1Aj - tst.b (byte_FF1142).l - bne.s loc_1ACD94 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ACD98 - bcs.s loc_1ACD8E - bsr.s sub_1ACDD8 - bcs.s loc_1ACD8E - bsr.w sub_1ACE2A - bcs.s loc_1ACD8E - bsr.w sub_1ACE66 - bcs.s loc_1ACD8E - bsr.w sub_1ACEA2 - -loc_1ACD8E: ; CODE XREF: ROM:001ACD78j - ; ROM:001ACD7Cj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACD94: ; CODE XREF: ROM:001ACD64j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACD98: ; CODE XREF: ROM:001ACD76p - move.w #$0080,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACDD4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0010,d7 - bhi.s loc_1ACDD4 - move.b #$25,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACDD4: ; CODE XREF: sub_1ACD98+10j - ; sub_1ACD98+20j - tst.b d0 - rts -; End of function sub_1ACD98 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACDD8: ; CODE XREF: ROM:001ACD7Ap - move.w #$0070,d5 - move.w #$0070,d6 - move.w #$0070,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACE26 - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1ACE26 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0010,d7 - bhi.s loc_1ACE26 - -loc_1ACE0C: ; CODE XREF: ROM:001ACD50j - move.b #$20,$00000037(a5) - move.w #$0004,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACE26: ; CODE XREF: sub_1ACDD8+10j - ; sub_1ACDD8+22j ... - tst.b d0 - rts -; End of function sub_1ACDD8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACE2A: ; CODE XREF: ROM:001ACD7Ep - move.w #$0060,d5 - move.w #$FFD0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACE62 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ACE62 - move.b #$21,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACE62: ; CODE XREF: sub_1ACE2A+10j - ; sub_1ACE2A+20j - tst.b d0 - rts -; End of function sub_1ACE2A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACE66: ; CODE XREF: ROM:001ACD84p - move.w #$0040,d5 - move.w #$0020,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACE9E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ACE9E - move.b #$22,$00000037(a5) - move.w #$0011,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACE9E: ; CODE XREF: sub_1ACE66+10j - ; sub_1ACE66+20j - tst.b d0 - rts -; End of function sub_1ACE66 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ACEA2: ; CODE XREF: ROM:001ACD8Ap - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1ACEF8 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1ACEDE - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACEDE: ; CODE XREF: sub_1ACEA2+20j - move.b #$24,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ACEF8: ; CODE XREF: sub_1ACEA2+10j - tst.b d0 - rts -; End of function sub_1ACEA2 - -; --------------------------------------------------------------------------- - -loc_1ACEFC: ; CODE XREF: ROM:001ACD1Cj - andi.b #$0F,d0 - beq.s loc_1ACF26 - cmpi.b #$01,d0 - beq.w loc_1AD014 - cmpi.b #$02,d0 - beq.w loc_1AD014 - cmpi.b #$03,d0 - beq.w loc_1ACFDE - cmpi.b #$04,d0 - beq.w loc_1AD014 - bra.w loc_1AD04E -; --------------------------------------------------------------------------- - -loc_1ACF26: ; CODE XREF: ROM:001ACF00j - addq.b #$01,$0000004D(a5) - cmpi.b #$1F,$0000004D(a5) - bhi.s loc_1ACF6A - bset #$07,$00000020(a5) - addi.w #$0004,$00000012(a5) - addi.w #$0004,$00000054(a5) - move.b $0000004D(a5),d0 - andi.w #$000E,d0 - lsl.w #$07,d0 - move.w d0,$0000002C(a5) - bsr.w sub_1AC010 - andi.b #$3F,$00000004(a5) - or.b d2,$00000004(a5) - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Slash1 -; --------------------------------------------------------------------------- - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ACF6A: ; CODE XREF: ROM:001ACF30j - bclr #$07,$00000020(a5) - cmpi.b #$20,$0000004D(a5) - bne.s loc_1ACF98 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Fall -; --------------------------------------------------------------------------- - move.w #$0002,d6 - jsr (j_GenerateRandomNumber).l - move.w #$0040,d0 - tst.b d7 - beq.s loc_1ACF92 - move.w #$0058,d0 - -loc_1ACF92: ; CODE XREF: ROM:001ACF8Cj - move.w d0,$00000062(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ACF98: ; CODE XREF: ROM:001ACF76j - subq.b #$01,$0000004D(a5) - bclr #$07,$00000020(a5) - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1ACFD6 - move.w (Player_Z).l,d0 - add.w $00000062(a5),d0 - cmp.w $00000012(a5),d0 - bcc.s loc_1ACFCE - move.l (Player_X).l,(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - rts -; --------------------------------------------------------------------------- - -loc_1ACFCE: ; CODE XREF: ROM:001ACFBCj - move.w #$0300,$0000002C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ACFD6: ; CODE XREF: ROM:001ACFAAj - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_LadderClimb -; --------------------------------------------------------------------------- - bra.w sub_1ACD54 -; --------------------------------------------------------------------------- - -loc_1ACFDE: ; CODE XREF: ROM:001ACF16j - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AD012 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AD012 - beq.w sub_1ACD54 - -locret_1AD012: ; CODE XREF: ROM:001ACFEEj - ; ROM:001AD00Cj - rts -; --------------------------------------------------------------------------- - -loc_1AD014: ; CODE XREF: ROM:001ACF06j - ; ROM:001ACF0Ej ... - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s loc_1AD048 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s loc_1AD048 - beq.w sub_1ACD54 - -loc_1AD048: ; CODE XREF: ROM:001AD024j - ; ROM:001AD042j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD04E: ; CODE XREF: ROM:001ACF22j - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$0F,$0000004D(a5) - bcs.s locret_1AD09C - bhi.s loc_1AD09E - move.w #$0300,$0000002C(a5) - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Slash2 -; --------------------------------------------------------------------------- - move.b #$03,d0 - move.w #$1400,d1 - bsr.w sub_1AC474 - bcs.w locret_1AD09C - move.w #$44C0,$00000006(a1) - move.b #$04,$00000009(a1) - move.w #$036A,$00000034(a1) - movem.l a5,-(sp) - movea.l a1,a5 - bsr.w j_j_LoadSpriteBehaviour - movem.l (sp)+,a5 - -locret_1AD09C: ; CODE XREF: ROM:001AD05Ej - ; ROM:001AD078j - rts -; --------------------------------------------------------------------------- - -loc_1AD09E: ; CODE XREF: ROM:001AD060j - move.w #$0300,$0000002C(a5) - cmpi.b #$3C,$0000004D(a5) - beq.w sub_1ACD54 - rts -; --------------------------------------------------------------------------- - -EnemyAI_Golem1_B_0: ; CODE XREF: ROM:001A862Aj - bra.s loc_1AD0F8 -; --------------------------------------------------------------------------- - -EnemyAI_Golem1_A_0: ; CODE XREF: ROM:001A8626j - btst #$01,$0000000C(a5) - bne.s loc_1AD0CA - move.b $00000037(a5),d0 - beq.s loc_1AD0D0 - cmpi.b #$10,d0 - beq.s loc_1AD0FC - bra.w loc_1AD194 -; --------------------------------------------------------------------------- - -loc_1AD0CA: ; CODE XREF: ROM:001AD0B8j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD0D0: ; CODE XREF: ROM:001AD0BEj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0040,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AD0F8 - rts -; --------------------------------------------------------------------------- - -loc_1AD0F8: ; CODE XREF: ROM:EnemyAI_Golem1_B_0j - ; ROM:001AD0F4j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AD0FC: ; CODE XREF: ROM:001AD0C4j - tst.b (byte_FF1142).l - bne.s loc_1AD120 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AD124 - bcs.s loc_1AD11A - bsr.s sub_1AD164 - -loc_1AD11A: ; CODE XREF: ROM:001AD116j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD120: ; CODE XREF: ROM:001AD102j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD124: ; CODE XREF: ROM:001AD114p - move.w #$0050,d5 - move.w #$FFD8,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD160 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bcc.s loc_1AD160 - move.b #$22,$00000037(a5) - move.w #$0013,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD160: ; CODE XREF: sub_1AD124+10j - ; sub_1AD124+20j - tst.b d0 - rts -; End of function sub_1AD124 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD164: ; CODE XREF: ROM:001AD118p - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD190 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD190: ; CODE XREF: sub_1AD164+10j - tst.b d0 - rts -; End of function sub_1AD164 - -; --------------------------------------------------------------------------- - -loc_1AD194: ; CODE XREF: ROM:001AD0C6j - andi.b #$0F,d0 - cmpi.b #$03,d0 - bcs.s loc_1AD1D4 - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AD1D2 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AD1D2 - beq.w loc_1AD0F8 - -locret_1AD1D2: ; CODE XREF: ROM:001AD1AEj - ; ROM:001AD1CCj - rts -; --------------------------------------------------------------------------- - -loc_1AD1D4: ; CODE XREF: ROM:001AD19Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Golem2_B_0: ; CODE XREF: ROM:001A8632j - ; ROM:001A863Aj - bra.s loc_1AD222 -; --------------------------------------------------------------------------- - -EnemyAI_Golem2_A_0: ; CODE XREF: ROM:001A862Ej - ; ROM:001A8636j - btst #$01,$0000000C(a5) - bne.s loc_1AD1F4 - move.b $00000037(a5),d0 - beq.s loc_1AD1FA - cmpi.b #$10,d0 - beq.s loc_1AD226 - bra.w loc_1AD2BE -; --------------------------------------------------------------------------- - -loc_1AD1F4: ; CODE XREF: ROM:001AD1E2j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD1FA: ; CODE XREF: ROM:001AD1E8j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0040,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AD222 - rts -; --------------------------------------------------------------------------- - -loc_1AD222: ; CODE XREF: ROM:EnemyAI_Golem2_B_0j - ; ROM:001AD21Ej ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AD226: ; CODE XREF: ROM:001AD1EEj - tst.b (byte_FF1142).l - bne.s loc_1AD24A - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AD24E - bcs.s loc_1AD244 - bsr.s sub_1AD28E - -loc_1AD244: ; CODE XREF: ROM:001AD240j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD24A: ; CODE XREF: ROM:001AD22Cj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD24E: ; CODE XREF: ROM:001AD23Ep - move.w #$0060,d5 - move.w #$FFC0,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD28A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1AD28A - move.b #$22,$00000037(a5) - move.w #$001A,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD28A: ; CODE XREF: sub_1AD24E+10j - ; sub_1AD24E+20j - tst.b d0 - rts -; End of function sub_1AD24E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD28E: ; CODE XREF: ROM:001AD242p - move.w #$0020,d5 - move.w #$0020,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD2BA - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD2BA: ; CODE XREF: sub_1AD28E+10j - tst.b d0 - rts -; End of function sub_1AD28E - -; --------------------------------------------------------------------------- - -loc_1AD2BE: ; CODE XREF: ROM:001AD1F0j - andi.b #$0F,d0 - cmpi.b #$03,d0 - bcs.s loc_1AD2FE - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AD2FC - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AD2FC - beq.w loc_1AD222 - -locret_1AD2FC: ; CODE XREF: ROM:001AD2D8j - ; ROM:001AD2F6j - rts -; --------------------------------------------------------------------------- - -loc_1AD2FE: ; CODE XREF: ROM:001AD2C6j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Spectre1_B: ; CODE XREF: ROM:001A8652j - bra.s loc_1AD352 -; --------------------------------------------------------------------------- - -EnemyAI_Spectre1_A: ; CODE XREF: ROM:001A864Ej - bset #$07,$00000020(a5) - btst #$01,$0000000C(a5) - bne.s loc_1AD324 - move.b $00000037(a5),d0 - beq.s loc_1AD32A - cmpi.b #$10,d0 - beq.s loc_1AD356 - bra.w loc_1AD4C6 -; --------------------------------------------------------------------------- - -loc_1AD324: ; CODE XREF: ROM:001AD312j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD32A: ; CODE XREF: ROM:001AD318j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AD352 - rts -; --------------------------------------------------------------------------- - -loc_1AD352: ; CODE XREF: ROM:EnemyAI_Spectre1_Bj - ; ROM:001AD34Ej ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AD356: ; CODE XREF: ROM:001AD31Ej - tst.b (byte_FF1142).l - bne.s loc_1AD3A2 - btst #$06,$0000000C(a5) - beq.s loc_1AD37A - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s loc_1AD39C - subq.b #$01,$0000004D(a5) - bsr.w sub_1AD4A4 - -loc_1AD37A: ; CODE XREF: ROM:001AD364j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AD3A6 - bcs.s loc_1AD39C - bsr.s sub_1AD3E8 - bcs.s loc_1AD39C - bsr.w sub_1AD41A - bcs.s loc_1AD39C - bsr.w sub_1AD460 - -loc_1AD39C: ; CODE XREF: ROM:001AD370j - ; ROM:001AD38Cj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD3A2: ; CODE XREF: ROM:001AD35Cj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD3A6: ; CODE XREF: ROM:001AD38Ap - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD3E4 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0008,d7 - bhi.s loc_1AD3E4 - bset #$06,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD3E4: ; CODE XREF: sub_1AD3A6+10j - ; sub_1AD3A6+20j - tst.b d0 - rts -; End of function sub_1AD3A6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD3E8: ; CODE XREF: ROM:001AD38Ep - move.w #$0060,d5 - move.w #$0000,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD416 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0006,d7 - bhi.s loc_1AD416 - bsr.w sub_1AD4A4 - bcc.s loc_1AD416 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD416: ; CODE XREF: sub_1AD3E8+10j - ; sub_1AD3E8+20j ... - tst.b d0 - rts -; End of function sub_1AD3E8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD41A: ; CODE XREF: ROM:001AD392p - move.w #$0060,d5 - move.w #$0048,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD45C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1AD45C - bsr.w sub_1AD4A4 - bcc.s loc_1AD45C - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD45C: ; CODE XREF: sub_1AD41A+10j - ; sub_1AD41A+20j ... - tst.b d0 - rts -; End of function sub_1AD41A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD460: ; CODE XREF: ROM:001AD398p - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD4A0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcc.s loc_1AD4A0 - bsr.s sub_1AD4A4 - bcc.s loc_1AD4A0 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD4A0: ; CODE XREF: sub_1AD460+10j - ; sub_1AD460+20j ... - tst.b d0 - rts -; End of function sub_1AD460 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD4A4: ; CODE XREF: ROM:001AD376p - ; sub_1AD3E8+22p ... - btst #$06,$0000000C(a5) - beq.s loc_1AD4BA - move.w #$000F,d1 - bsr.w sub_1AE944 - bcs.s loc_1AD4BA - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AD4BA: ; CODE XREF: sub_1AD4A4+6j - ; sub_1AD4A4+10j - bclr #$06,$0000000C(a5) - ori #$01,ccr - rts -; End of function sub_1AD4A4 - -; --------------------------------------------------------------------------- - -loc_1AD4C6: ; CODE XREF: ROM:001AD320j - andi.b #$0F,d0 - beq.s loc_1AD4E0 - cmpi.b #$01,d0 - beq.s loc_1AD4E0 - cmpi.b #$02,d0 - beq.s loc_1AD4E0 - cmpi.b #$03,d0 - beq.s loc_1AD554 - bra.s loc_1AD554 -; --------------------------------------------------------------------------- - -loc_1AD4E0: ; CODE XREF: ROM:001AD4CAj - ; ROM:001AD4D0j ... - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AD502 - move.w #$0300,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1AD502: ; CODE XREF: ROM:001AD4EAj - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AD514 - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1AD514: ; CODE XREF: ROM:001AD508j - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1AD53A - bcs.w locret_1AD54A - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0300,d1 - bsr.w sub_1AC474 - bcs.w loc_1AD54C - rts -; --------------------------------------------------------------------------- - -loc_1AD53A: ; CODE XREF: ROM:001AD51Aj - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1AD54C - -locret_1AD54A: ; CODE XREF: ROM:001AD51Ej - rts -; --------------------------------------------------------------------------- - -loc_1AD54C: ; CODE XREF: ROM:001AD534j - ; ROM:001AD546j - clr.b $0000004D(a5) - bra.w loc_1AD352 -; --------------------------------------------------------------------------- - -loc_1AD554: ; CODE XREF: ROM:001AD4DCj - ; ROM:001AD4DEj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AD588 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AD588 - beq.w loc_1AD352 - -locret_1AD588: ; CODE XREF: ROM:001AD564j - ; ROM:001AD582j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Spectre2_B: ; CODE XREF: ROM:001A865Aj - bra.s loc_1AD5D8 -; --------------------------------------------------------------------------- - -EnemyAI_Spectre2_A: ; CODE XREF: ROM:001A8656j - bset #$07,$00000020(a5) - btst #$01,$0000000C(a5) - bne.s loc_1AD5AA - move.b $00000037(a5),d0 - beq.s loc_1AD5B0 - cmpi.b #$10,d0 - beq.s loc_1AD5DC - bra.w loc_1AD74C -; --------------------------------------------------------------------------- - -loc_1AD5AA: ; CODE XREF: ROM:001AD598j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD5B0: ; CODE XREF: ROM:001AD59Ej - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AD5D8 - rts -; --------------------------------------------------------------------------- - -loc_1AD5D8: ; CODE XREF: ROM:EnemyAI_Spectre2_Bj - ; ROM:001AD5D4j ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AD5DC: ; CODE XREF: ROM:001AD5A4j - tst.b (byte_FF1142).l - bne.s loc_1AD628 - btst #$06,$0000000C(a5) - beq.s loc_1AD600 - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s loc_1AD622 - subq.b #$01,$0000004D(a5) - bsr.w sub_1AD72A - -loc_1AD600: ; CODE XREF: ROM:001AD5EAj - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AD62C - bcs.s loc_1AD622 - bsr.s sub_1AD66E - bcs.s loc_1AD622 - bsr.w sub_1AD6A0 - bcs.s loc_1AD622 - bsr.w sub_1AD6E6 - -loc_1AD622: ; CODE XREF: ROM:001AD5F6j - ; ROM:001AD612j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD628: ; CODE XREF: ROM:001AD5E2j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD62C: ; CODE XREF: ROM:001AD610p - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD66A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1AD66A - bset #$06,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD66A: ; CODE XREF: sub_1AD62C+10j - ; sub_1AD62C+20j - tst.b d0 - rts -; End of function sub_1AD62C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD66E: ; CODE XREF: ROM:001AD614p - move.w #$0060,d5 - move.w #$0000,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD69C - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0006,d7 - bhi.s loc_1AD69C - bsr.w sub_1AD72A - bcc.s loc_1AD69C - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD69C: ; CODE XREF: sub_1AD66E+10j - ; sub_1AD66E+20j ... - tst.b d0 - rts -; End of function sub_1AD66E - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD6A0: ; CODE XREF: ROM:001AD618p - move.w #$0060,d5 - move.w #$0048,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD6E2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0010,d7 - bhi.s loc_1AD6E2 - bsr.w sub_1AD72A - bcc.s loc_1AD6E2 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD6E2: ; CODE XREF: sub_1AD6A0+10j - ; sub_1AD6A0+20j ... - tst.b d0 - rts -; End of function sub_1AD6A0 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD6E6: ; CODE XREF: ROM:001AD61Ep - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD726 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcc.s loc_1AD726 - bsr.s sub_1AD72A - bcc.s loc_1AD726 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD726: ; CODE XREF: sub_1AD6E6+10j - ; sub_1AD6E6+20j ... - tst.b d0 - rts -; End of function sub_1AD6E6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD72A: ; CODE XREF: ROM:001AD5FCp - ; sub_1AD66E+22p ... - btst #$06,$0000000C(a5) - beq.s loc_1AD740 - move.w #$000F,d1 - bsr.w sub_1AE944 - bcs.s loc_1AD740 - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AD740: ; CODE XREF: sub_1AD72A+6j - ; sub_1AD72A+10j - bclr #$06,$0000000C(a5) - ori #$01,ccr - rts -; End of function sub_1AD72A - -; --------------------------------------------------------------------------- - -loc_1AD74C: ; CODE XREF: ROM:001AD5A6j - andi.b #$0F,d0 - beq.s loc_1AD766 - cmpi.b #$01,d0 - beq.s loc_1AD766 - cmpi.b #$02,d0 - beq.s loc_1AD766 - cmpi.b #$03,d0 - beq.s loc_1AD7DA - bra.s loc_1AD7DA -; --------------------------------------------------------------------------- - -loc_1AD766: ; CODE XREF: ROM:001AD750j - ; ROM:001AD756j ... - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AD788 - move.w #$0300,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1AD788: ; CODE XREF: ROM:001AD770j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AD79A - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1AD79A: ; CODE XREF: ROM:001AD78Ej - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1AD7C0 - bcs.w locret_1AD7D0 - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0500,d1 - bsr.w sub_1AC474 - bcs.w loc_1AD7D2 - rts -; --------------------------------------------------------------------------- - -loc_1AD7C0: ; CODE XREF: ROM:001AD7A0j - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1AD7D2 - -locret_1AD7D0: ; CODE XREF: ROM:001AD7A4j - rts -; --------------------------------------------------------------------------- - -loc_1AD7D2: ; CODE XREF: ROM:001AD7BAj - ; ROM:001AD7CCj - clr.b $0000004D(a5) - bra.w loc_1AD5D8 -; --------------------------------------------------------------------------- - -loc_1AD7DA: ; CODE XREF: ROM:001AD762j - ; ROM:001AD764j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AD80E - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AD80E - beq.w loc_1AD5D8 - -locret_1AD80E: ; CODE XREF: ROM:001AD7EAj - ; ROM:001AD808j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Spectre3_B: ; CODE XREF: ROM:001A8662j - bra.s loc_1AD85E -; --------------------------------------------------------------------------- - -EnemyAI_Spectre3_A: ; CODE XREF: ROM:001A865Ej - bset #$07,$00000020(a5) - btst #$01,$0000000C(a5) - bne.s loc_1AD830 - move.b $00000037(a5),d0 - beq.s loc_1AD836 - cmpi.b #$10,d0 - beq.s loc_1AD862 - bra.w loc_1AD9D2 -; --------------------------------------------------------------------------- - -loc_1AD830: ; CODE XREF: ROM:001AD81Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD836: ; CODE XREF: ROM:001AD824j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AD85E - rts -; --------------------------------------------------------------------------- - -loc_1AD85E: ; CODE XREF: ROM:EnemyAI_Spectre3_Bj - ; ROM:001AD85Aj ... - bra.w loc_1A8AB6 -; --------------------------------------------------------------------------- - -loc_1AD862: ; CODE XREF: ROM:001AD82Aj - tst.b (byte_FF1142).l - bne.s loc_1AD8AE - btst #$06,$0000000C(a5) - beq.s loc_1AD886 - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s loc_1AD8A8 - subq.b #$01,$0000004D(a5) - bsr.w sub_1AD9B0 - -loc_1AD886: ; CODE XREF: ROM:001AD870j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AD8B2 - bcs.s loc_1AD8A8 - bsr.s sub_1AD8F4 - bcs.s loc_1AD8A8 - bsr.w sub_1AD926 - bcs.s loc_1AD8A8 - bsr.w sub_1AD96C - -loc_1AD8A8: ; CODE XREF: ROM:001AD87Cj - ; ROM:001AD898j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AD8AE: ; CODE XREF: ROM:001AD868j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD8B2: ; CODE XREF: ROM:001AD896p - move.w #$0070,d5 - move.w #$0030,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD8F0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0020,d7 - bhi.s loc_1AD8F0 - bset #$06,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD8F0: ; CODE XREF: sub_1AD8B2+10j - ; sub_1AD8B2+20j - tst.b d0 - rts -; End of function sub_1AD8B2 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD8F4: ; CODE XREF: ROM:001AD89Ap - move.w #$0060,d5 - move.w #$0000,d6 - move.w #$0020,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD922 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0006,d7 - bhi.s loc_1AD922 - bsr.w sub_1AD9B0 - bcc.s loc_1AD922 - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD922: ; CODE XREF: sub_1AD8F4+10j - ; sub_1AD8F4+20j ... - tst.b d0 - rts -; End of function sub_1AD8F4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD926: ; CODE XREF: ROM:001AD89Ep - move.w #$0060,d5 - move.w #$0048,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD968 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AD968 - bsr.w sub_1AD9B0 - bcc.s loc_1AD968 - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD968: ; CODE XREF: sub_1AD926+10j - ; sub_1AD926+20j ... - tst.b d0 - rts -; End of function sub_1AD926 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD96C: ; CODE XREF: ROM:001AD8A4p - move.w #$0018,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AD9AC - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0050,d7 - bcc.s loc_1AD9AC - bsr.s sub_1AD9B0 - bcc.s loc_1AD9AC - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AD9AC: ; CODE XREF: sub_1AD96C+10j - ; sub_1AD96C+20j ... - tst.b d0 - rts -; End of function sub_1AD96C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AD9B0: ; CODE XREF: ROM:001AD882p - ; sub_1AD8F4+22p ... - btst #$06,$0000000C(a5) - beq.s loc_1AD9C6 - move.w #$000F,d1 - bsr.w sub_1AE944 - bcs.s loc_1AD9C6 - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AD9C6: ; CODE XREF: sub_1AD9B0+6j - ; sub_1AD9B0+10j - bclr #$06,$0000000C(a5) - ori #$01,ccr - rts -; End of function sub_1AD9B0 - -; --------------------------------------------------------------------------- - -loc_1AD9D2: ; CODE XREF: ROM:001AD82Cj - andi.b #$0F,d0 - beq.s loc_1AD9EC - cmpi.b #$01,d0 - beq.s loc_1AD9EC - cmpi.b #$02,d0 - beq.s loc_1AD9EC - cmpi.b #$03,d0 - beq.s loc_1ADA60 - bra.s loc_1ADA60 -; --------------------------------------------------------------------------- - -loc_1AD9EC: ; CODE XREF: ROM:001AD9D6j - ; ROM:001AD9DCj ... - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1ADA0E - move.w #$0300,$0000002C(a5) - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1ADA0E: ; CODE XREF: ROM:001AD9F6j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1ADA20 - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1ADA20: ; CODE XREF: ROM:001ADA14j - cmpi.b #$2D,$0000004D(a5) - bhi.w loc_1ADA46 - bcs.w locret_1ADA56 - move.w #$0200,$0000002C(a5) - move.b #$01,d0 - move.w #$0700,d1 - bsr.w sub_1AC474 - bcs.w loc_1ADA58 - rts -; --------------------------------------------------------------------------- - -loc_1ADA46: ; CODE XREF: ROM:001ADA26j - move.w #$0200,$0000002C(a5) - cmpi.b #$46,$0000004D(a5) - beq.w loc_1ADA58 - -locret_1ADA56: ; CODE XREF: ROM:001ADA2Aj - rts -; --------------------------------------------------------------------------- - -loc_1ADA58: ; CODE XREF: ROM:001ADA40j - ; ROM:001ADA52j - clr.b $0000004D(a5) - bra.w loc_1AD85E -; --------------------------------------------------------------------------- - -loc_1ADA60: ; CODE XREF: ROM:001AD9E8j - ; ROM:001AD9EAj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1ADA94 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1ADA94 - beq.w loc_1AD85E - -locret_1ADA94: ; CODE XREF: ROM:001ADA70j - ; ROM:001ADA8Ej - rts -; --------------------------------------------------------------------------- - -EnemyAI_Bird1_B: ; CODE XREF: ROM:001A866Aj - bra.s loc_1ADADC -; --------------------------------------------------------------------------- - -EnemyAI_Bird1_A: ; CODE XREF: ROM:001A8666j - btst #$01,$0000000C(a5) - bne.s loc_1ADAB0 - move.b $00000037(a5),d0 - beq.s loc_1ADAB6 - cmpi.b #$10,d0 - beq.s loc_1ADAF4 - bra.w loc_1ADC6C -; --------------------------------------------------------------------------- - -loc_1ADAB0: ; CODE XREF: ROM:001ADA9Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADAB6: ; CODE XREF: ROM:001ADAA4j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - rts -; --------------------------------------------------------------------------- - -loc_1ADADC: ; CODE XREF: ROM:EnemyAI_Bird1_Bj - ; ROM:001ADC8Ej ... - move.w #$0004,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ADAF4: ; CODE XREF: ROM:001ADAAAj - tst.b (byte_FF1142).l - bne.s loc_1ADB24 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ADB28 - bcs.s loc_1ADB1E - bsr.s sub_1ADB76 - bcs.s loc_1ADB1E - bsr.w sub_1ADBC4 - bcs.s loc_1ADB1E - bsr.w sub_1ADC12 - -loc_1ADB1E: ; CODE XREF: ROM:001ADB0Ej - ; ROM:001ADB12j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADB24: ; CODE XREF: ROM:001ADAFAj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADB28: ; CODE XREF: ROM:001ADB0Cp - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADB72 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADB72 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ADB72 - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADB72: ; CODE XREF: sub_1ADB28+10j - ; sub_1ADB28+22j ... - tst.b d0 - rts -; End of function sub_1ADB28 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADB76: ; CODE XREF: ROM:001ADB10p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADBC0 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADBC0 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1ADBC0 - move.b #$21,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADBC0: ; CODE XREF: sub_1ADB76+10j - ; sub_1ADB76+22j ... - tst.b d0 - rts -; End of function sub_1ADB76 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADBC4: ; CODE XREF: ROM:001ADB14p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADC0E - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADC0E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ADC0E - move.b #$22,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADC0E: ; CODE XREF: sub_1ADBC4+10j - ; sub_1ADBC4+22j ... - tst.b d0 - rts -; End of function sub_1ADBC4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADC12: ; CODE XREF: ROM:001ADB1Ap - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADC68 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1ADC4E - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADC4E: ; CODE XREF: sub_1ADC12+20j - move.b #$24,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADC68: ; CODE XREF: sub_1ADC12+10j - tst.b d0 - rts -; End of function sub_1ADC12 - -; --------------------------------------------------------------------------- - -loc_1ADC6C: ; CODE XREF: ROM:001ADAACj - andi.b #$0F,d0 - beq.s loc_1ADC86 - cmpi.b #$01,d0 - beq.s loc_1ADC92 - cmpi.b #$02,d0 - beq.s loc_1ADC92 - cmpi.b #$03,d0 - beq.s loc_1ADC98 - bra.s loc_1ADC98 -; --------------------------------------------------------------------------- - -loc_1ADC86: ; CODE XREF: ROM:001ADC70j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1ADADC - -loc_1ADC92: ; CODE XREF: ROM:001ADC76j - ; ROM:001ADC7Cj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADC98: ; CODE XREF: ROM:001ADC82j - ; ROM:001ADC84j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1ADCCC - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1ADCCC - beq.w loc_1ADADC - -locret_1ADCCC: ; CODE XREF: ROM:001ADCA8j - ; ROM:001ADCC6j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Bird2_B: ; CODE XREF: ROM:001A8672j - bra.s loc_1ADD14 -; --------------------------------------------------------------------------- - -EnemyAI_Bird2_A: ; CODE XREF: ROM:001A866Ej - btst #$01,$0000000C(a5) - bne.s loc_1ADCE8 - move.b $00000037(a5),d0 - beq.s loc_1ADCEE - cmpi.b #$10,d0 - beq.s loc_1ADD2C - bra.w loc_1ADEA4 -; --------------------------------------------------------------------------- - -loc_1ADCE8: ; CODE XREF: ROM:001ADCD6j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADCEE: ; CODE XREF: ROM:001ADCDCj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - rts -; --------------------------------------------------------------------------- - -loc_1ADD14: ; CODE XREF: ROM:EnemyAI_Bird2_Bj - ; ROM:001ADEC6j ... - move.w #$0004,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ADD2C: ; CODE XREF: ROM:001ADCE2j - tst.b (byte_FF1142).l - bne.s loc_1ADD5C - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ADD60 - bcs.s loc_1ADD56 - bsr.s sub_1ADDAE - bcs.s loc_1ADD56 - bsr.w sub_1ADDFC - bcs.s loc_1ADD56 - bsr.w sub_1ADE4A - -loc_1ADD56: ; CODE XREF: ROM:001ADD46j - ; ROM:001ADD4Aj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADD5C: ; CODE XREF: ROM:001ADD32j - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADD60: ; CODE XREF: ROM:001ADD44p - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADDAA - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADDAA - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ADDAA - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADDAA: ; CODE XREF: sub_1ADD60+10j - ; sub_1ADD60+22j ... - tst.b d0 - rts -; End of function sub_1ADD60 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADDAE: ; CODE XREF: ROM:001ADD48p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADDF8 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADDF8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1ADDF8 - move.b #$21,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADDF8: ; CODE XREF: sub_1ADDAE+10j - ; sub_1ADDAE+22j ... - tst.b d0 - rts -; End of function sub_1ADDAE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADDFC: ; CODE XREF: ROM:001ADD4Cp - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADE46 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADE46 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ADE46 - move.b #$22,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADE46: ; CODE XREF: sub_1ADDFC+10j - ; sub_1ADDFC+22j ... - tst.b d0 - rts -; End of function sub_1ADDFC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADE4A: ; CODE XREF: ROM:001ADD52p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADEA0 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1ADE86 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADE86: ; CODE XREF: sub_1ADE4A+20j - move.b #$24,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADEA0: ; CODE XREF: sub_1ADE4A+10j - tst.b d0 - rts -; End of function sub_1ADE4A - -; --------------------------------------------------------------------------- - -loc_1ADEA4: ; CODE XREF: ROM:001ADCE4j - andi.b #$0F,d0 - beq.s loc_1ADEBE - cmpi.b #$01,d0 - beq.s loc_1ADECA - cmpi.b #$02,d0 - beq.s loc_1ADECA - cmpi.b #$03,d0 - beq.s loc_1ADED0 - bra.s loc_1ADED0 -; --------------------------------------------------------------------------- - -loc_1ADEBE: ; CODE XREF: ROM:001ADEA8j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1ADD14 - -loc_1ADECA: ; CODE XREF: ROM:001ADEAEj - ; ROM:001ADEB4j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADED0: ; CODE XREF: ROM:001ADEBAj - ; ROM:001ADEBCj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1ADF04 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1ADF04 - beq.w loc_1ADD14 - -locret_1ADF04: ; CODE XREF: ROM:001ADEE0j - ; ROM:001ADEFEj - rts -; --------------------------------------------------------------------------- - -EnemyAI_Bird3_B: ; CODE XREF: ROM:001A867Aj - bra.s loc_1ADF4C -; --------------------------------------------------------------------------- - -EnemyAI_Bird3_A: ; CODE XREF: ROM:001A8676j - btst #$01,$0000000C(a5) - bne.s loc_1ADF20 - move.b $00000037(a5),d0 - beq.s loc_1ADF26 - cmpi.b #$10,d0 - beq.s loc_1ADF64 - bra.w loc_1AE0DC -; --------------------------------------------------------------------------- - -loc_1ADF20: ; CODE XREF: ROM:001ADF0Ej - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADF26: ; CODE XREF: ROM:001ADF14j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - rts -; --------------------------------------------------------------------------- - -loc_1ADF4C: ; CODE XREF: ROM:EnemyAI_Bird3_Bj - ; ROM:001AE0FEj ... - move.w #$0004,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1ADF64: ; CODE XREF: ROM:001ADF1Aj - tst.b (byte_FF1142).l - bne.s loc_1ADF94 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1ADF98 - bcs.s loc_1ADF8E - bsr.s sub_1ADFE6 - bcs.s loc_1ADF8E - bsr.w sub_1AE034 - bcs.s loc_1ADF8E - bsr.w sub_1AE082 - -loc_1ADF8E: ; CODE XREF: ROM:001ADF7Ej - ; ROM:001ADF82j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1ADF94: ; CODE XREF: ROM:001ADF6Aj - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADF98: ; CODE XREF: ROM:001ADF7Cp - move.w #$0050,d5 - move.w #$0050,d6 - move.w #$0050,d7 - bsr.w sub_1A8964 - bcc.s loc_1ADFE2 - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0038,d7 - bsr.w sub_1A8964 - bcs.s loc_1ADFE2 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1ADFE2 - move.b #$20,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1ADFE2: ; CODE XREF: sub_1ADF98+10j - ; sub_1ADF98+22j ... - tst.b d0 - rts -; End of function sub_1ADF98 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1ADFE6: ; CODE XREF: ROM:001ADF80p - move.w #$0038,d5 - move.w #$0038,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE030 - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1AE030 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0012,d7 - bhi.s loc_1AE030 - move.b #$21,$00000037(a5) - move.w #$0007,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE030: ; CODE XREF: sub_1ADFE6+10j - ; sub_1ADFE6+22j ... - tst.b d0 - rts -; End of function sub_1ADFE6 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE034: ; CODE XREF: ROM:001ADF84p - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE07E - move.w #$0028,d5 - move.w #$0028,d6 - move.w #$0028,d7 - bsr.w sub_1A8964 - bcs.s loc_1AE07E - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000C,d7 - bhi.s loc_1AE07E - move.b #$22,$00000037(a5) - move.w #$0008,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE07E: ; CODE XREF: sub_1AE034+10j - ; sub_1AE034+22j ... - tst.b d0 - rts -; End of function sub_1AE034 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE082: ; CODE XREF: ROM:001ADF8Ap - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE0D8 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1AE0BE - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE0BE: ; CODE XREF: sub_1AE082+20j - move.b #$24,$00000037(a5) - move.w #$0009,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE0D8: ; CODE XREF: sub_1AE082+10j - tst.b d0 - rts -; End of function sub_1AE082 - -; --------------------------------------------------------------------------- - -loc_1AE0DC: ; CODE XREF: ROM:001ADF1Cj - andi.b #$0F,d0 - beq.s loc_1AE0F6 - cmpi.b #$01,d0 - beq.s loc_1AE102 - cmpi.b #$02,d0 - beq.s loc_1AE102 - cmpi.b #$03,d0 - beq.s loc_1AE108 - bra.s loc_1AE108 -; --------------------------------------------------------------------------- - -loc_1AE0F6: ; CODE XREF: ROM:001AE0E0j - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1ADF4C - -loc_1AE102: ; CODE XREF: ROM:001AE0E6j - ; ROM:001AE0ECj - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AE108: ; CODE XREF: ROM:001AE0F2j - ; ROM:001AE0F4j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$0F,$0000000D(a5) - bcs.s locret_1AE13C - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0200,$0000002C(a5) - cmpi.b #$1E,$0000000D(a5) - bcs.s locret_1AE13C - beq.w loc_1ADF4C - -locret_1AE13C: ; CODE XREF: ROM:001AE118j - ; ROM:001AE136j - rts -; --------------------------------------------------------------------------- - -EnemyAI_Spinner_B: ; CODE XREF: ROM:001A8682j - ; ROM:001A86CAj - bra.s loc_1AE15C -; --------------------------------------------------------------------------- - -EnemyAI_Spinner_A: ; CODE XREF: ROM:001A867Ej - ; ROM:001A86C6j - btst #$01,$0000000C(a5) - bne.s loc_1AE156 - move.b $00000037(a5),d0 - cmpi.b #$10,d0 - beq.s loc_1AE180 - bra.w loc_1AE2DC -; --------------------------------------------------------------------------- - -loc_1AE156: ; CODE XREF: ROM:001AE146j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AE15C: ; CODE XREF: ROM:EnemyAI_Spinner_Bj - ; ROM:001AE394j - bclr #$06,$00000038(a5) - bclr #$00,$00000038(a5) - move.w #$0180,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AE180: ; CODE XREF: ROM:001AE150j - bclr #$00,$00000038(a5) - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AE1B4 - bcs.s loc_1AE1AE - bsr.s sub_1AE1F4 - bcs.s loc_1AE1AE - bsr.w sub_1AE234 - bcs.s loc_1AE1AE - bsr.w sub_1AE274 - bcs.s loc_1AE1AE - bsr.w sub_1AE2A0 - -loc_1AE1AE: ; CODE XREF: ROM:001AE198j - ; ROM:001AE19Cj ... - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE1B4: ; CODE XREF: ROM:001AE196p - move.w #$00A0,d5 - move.w #$FFC0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE1F0 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - cmpi.b #$40,d0 - cmpi.b #$80,d0 - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE1F0: ; CODE XREF: sub_1AE1B4+10j - tst.b d0 - rts -; End of function sub_1AE1B4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE1F4: ; CODE XREF: ROM:001AE19Ap - move.w #$0050,d5 - move.w #$FFE0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE230 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AE230 - move.b #$21,$00000037(a5) - move.w #$001A,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE230: ; CODE XREF: sub_1AE1F4+10j - ; sub_1AE1F4+20j - tst.b d0 - rts -; End of function sub_1AE1F4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE234: ; CODE XREF: ROM:001AE19Ep - move.w #$0030,d5 - move.w #$FFE0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE270 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0010,d7 - bhi.s loc_1AE270 - move.b #$22,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE270: ; CODE XREF: sub_1AE234+10j - ; sub_1AE234+20j - tst.b d0 - rts -; End of function sub_1AE234 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE274: ; CODE XREF: ROM:001AE1A4p - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE2D8 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; End of function sub_1AE274 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE2A0: ; CODE XREF: ROM:001AE1AAp - move.w #$0040,d5 - move.w #$FFF0,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AE2D8 - move.b (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) - ; Bit1 - Walk SW (+Y) - ; Bit2 - Walk NW (-X) - ; Bit3 - Walk SE (+X) - ; Bit4 - Fall - ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing - ; Bit12 - Ladder Climb - andi.b #$07,d0 - beq.s loc_1AE2D8 - move.b #$24,$00000037(a5) - move.w #$017F,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE2D8: ; CODE XREF: sub_1AE274+10j - ; sub_1AE2A0+10j ... - tst.b d0 - rts -; End of function sub_1AE2A0 - -; --------------------------------------------------------------------------- - -loc_1AE2DC: ; CODE XREF: ROM:001AE152j - andi.b #$0F,d0 - beq.s loc_1AE2F8 - cmpi.b #$01,d0 - beq.s loc_1AE33C - cmpi.b #$02,d0 - beq.s loc_1AE33C - cmpi.b #$03,d0 - beq.s loc_1AE33C - bra.w loc_1AE398 -; --------------------------------------------------------------------------- - -loc_1AE2F8: ; CODE XREF: ROM:001AE2E0j - cmpi.b #$14,$0000004D(a5) - bhi.s loc_1AE336 - move.w #$0500,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$0A,$0000004D(a5) - bcs.s loc_1AE336 - move.w #$0600,$0000002C(a5) - cmpi.b #$14,$0000004D(a5) - bcs.s loc_1AE336 - bset #$06,$00000038(a5) - bset #$00,$00000038(a5) - move.w #$0320,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - -loc_1AE336: ; CODE XREF: ROM:001AE2FEj - ; ROM:001AE310j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AE33C: ; CODE XREF: ROM:001AE2E6j - ; ROM:001AE2ECj ... - bset #$00,$00000038(a5) - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$05,$0000004D(a5) - bcs.s loc_1AE398 - bne.s loc_1AE35A - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_SwordSwing -; --------------------------------------------------------------------------- - -loc_1AE35A: ; CODE XREF: ROM:001AE354j - move.w #$0200,$0000002C(a5) - cmpi.b #$0A,$0000004D(a5) - bcs.s loc_1AE398 - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - cmpi.b #$0F,$0000004D(a5) - bcs.s loc_1AE398 - move.w #$0400,$0000002C(a5) - cmpi.b #$14,$0000004D(a5) - bcs.s loc_1AE398 - beq.w loc_1AE15C - -loc_1AE398: ; CODE XREF: ROM:001AE2F4j - ; ROM:001AE352j ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_Ifrit_B: ; CODE XREF: ROM:001A8692j - bra.s loc_1AE3C2 -; --------------------------------------------------------------------------- - -EnemyAI_Ifrit_A: ; CODE XREF: ROM:001A868Ej - btst #$01,$0000000C(a5) - bne.s loc_1AE3B8 - move.b $00000037(a5),d0 - beq.s loc_1AE3C2 - cmpi.b #$10,d0 - beq.s loc_1AE3EC - bra.w loc_1AE562 -; --------------------------------------------------------------------------- - -loc_1AE3B8: ; CODE XREF: ROM:001AE3A6j - clr.b $00000009(a5) - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AE3C2: ; CODE XREF: ROM:EnemyAI_Ifrit_Bj - ; ROM:001AE3ACj - bsr.s sub_1AE3C8 - bra.w loc_1AE4D4 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE3C8: ; CODE XREF: ROM:loc_1AE3C2p - ; ROM:001AE602j ... - bclr #$06,$00000038(a5) - bclr #$00,$00000038(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - rts -; End of function sub_1AE3C8 - -; --------------------------------------------------------------------------- - -loc_1AE3EC: ; CODE XREF: ROM:001AE3B2j - bclr #$00,$00000038(a5) - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.s sub_1AE41C - bcs.s loc_1AE416 - bsr.w sub_1AE4C4 - bcs.s loc_1AE416 - bsr.w sub_1AE4F8 - bcs.s loc_1AE416 - bsr.w sub_1AE524 - -loc_1AE416: ; CODE XREF: ROM:001AE404j - ; ROM:001AE40Aj ... - bsr.w LoadSpecialAI - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE41C: ; CODE XREF: ROM:001AE402p - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000A,d7 - bhi.w loc_1AE4C0 - move.b $00000004(a5),d0 - andi.b #$C0,d0 - cmpi.w #$1B1D,(a5) - beq.s loc_1AE45C - cmpi.w #$221D,(a5) - beq.s loc_1AE472 - cmpi.w #$1B24,(a5) - beq.s loc_1AE488 - move.w #$034A,d1 - tst.b d0 - beq.s loc_1AE49C - move.w #$034D,d1 - cmpi.b #$C0,d0 - beq.s loc_1AE49C - bra.s loc_1AE4C0 -; --------------------------------------------------------------------------- - -loc_1AE45C: ; CODE XREF: sub_1AE41C+1Ej - move.w #$034B,d1 - cmpi.b #$40,d0 - beq.s loc_1AE49C - move.w #$034C,d1 - cmpi.b #$80,d0 - beq.s loc_1AE49C - bra.s loc_1AE4C0 -; --------------------------------------------------------------------------- - -loc_1AE472: ; CODE XREF: sub_1AE41C+24j - move.w #$034C,d1 - cmpi.b #$80,d0 - beq.s loc_1AE49C - move.w #$034D,d1 - cmpi.b #$C0,d0 - beq.s loc_1AE49C - bra.s loc_1AE4C0 -; --------------------------------------------------------------------------- - -loc_1AE488: ; CODE XREF: sub_1AE41C+2Aj - move.w #$034B,d1 - cmpi.b #$40,d0 - beq.s loc_1AE49C - move.w #$034A,d1 - tst.b d0 - beq.s loc_1AE49C - bra.s loc_1AE4C0 -; --------------------------------------------------------------------------- - -loc_1AE49C: ; CODE XREF: sub_1AE41C+32j - ; sub_1AE41C+3Cj ... - move.b #$21,$00000037(a5) - move.w d1,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - bset #$00,$00000038(a5) - bset #$06,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE4C0: ; CODE XREF: sub_1AE41C+Ej - ; sub_1AE41C+3Ej ... - tst.b d0 - rts -; End of function sub_1AE41C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE4C4: ; CODE XREF: ROM:001AE406p - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0014,d7 - bhi.s loc_1AE4F4 - -loc_1AE4D4: ; CODE XREF: ROM:001AE3C4j - move.b #$22,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - bset #$00,$00000038(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AE4F4: ; CODE XREF: sub_1AE4C4+Ej - tst.b d0 - rts -; End of function sub_1AE4C4 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE4F8: ; CODE XREF: ROM:001AE40Cp - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$004B,d7 - bcc.s sub_1AE524 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - bsr.s sub_1AE550 - ori #$01,ccr - rts -; End of function sub_1AE4F8 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE524: ; CODE XREF: ROM:001AE412p - ; sub_1AE4F8+Ej - move.w #$0040,d5 - move.w #$FFF0,d6 - move.w #$0010,d7 - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - bsr.s sub_1AE550 - ori #$01,ccr - rts -; End of function sub_1AE524 - -; --------------------------------------------------------------------------- - tst.b d0 - rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE550: ; CODE XREF: sub_1AE4F8+24p - ; sub_1AE524+20p ... - bsr.w sub_1AC010 - move.b d2,d1 - andi.b #$3F,$00000004(a5) - or.b d2,$00000004(a5) - rts -; End of function sub_1AE550 - -; --------------------------------------------------------------------------- - -loc_1AE562: ; CODE XREF: ROM:001AE3B4j - andi.b #$0F,d0 - beq.s locret_1AE582 - cmpi.b #$01,d0 - beq.s loc_1AE584 - cmpi.b #$02,d0 - beq.w loc_1AE612 - cmpi.b #$03,d0 - beq.w loc_1AE6A4 - bra.w loc_1AE714 -; --------------------------------------------------------------------------- - -locret_1AE582: ; CODE XREF: ROM:001AE566j - rts -; --------------------------------------------------------------------------- - -loc_1AE584: ; CODE XREF: ROM:001AE56Cj - bset #$00,$00000038(a5) - bset #$06,$00000038(a5) - move.w #$0300,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$05,$0000004D(a5) - bcs.w loc_1AE606 - cmpi.b #$0F,$0000004D(a5) - bne.s loc_1AE5BC - move.w #$0500,$0000002C(a5) - addi.w #$0010,$00000012(a5) - bra.w loc_1AE606 -; --------------------------------------------------------------------------- - -loc_1AE5BC: ; CODE XREF: ROM:001AE5AAj - move.w #$0400,$0000002C(a5) - cmpi.b #$10,$0000004D(a5) - bcs.w loc_1AE606 - clr.w $0000002C(a5) - cmpi.b #$1D,$0000004D(a5) - bcs.w loc_1AE606 - bne.s loc_1AE5E2 - subi.w #$0010,$00000012(a5) - -loc_1AE5E2: ; CODE XREF: ROM:001AE5DAj - move.w #$0400,$0000002C(a5) - cmpi.b #$22,$0000004D(a5) - bcs.w loc_1AE606 - move.w #$0300,$0000002C(a5) - cmpi.b #$27,$0000004D(a5) - bcs.w loc_1AE606 - bra.w sub_1AE3C8 -; --------------------------------------------------------------------------- - -loc_1AE606: ; CODE XREF: ROM:001AE5A0j - ; ROM:001AE5B8j ... - bsr.w LoadSpecialAI - bclr #$07,$0000000A(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AE612: ; CODE XREF: ROM:001AE572j - bset #$00,$00000038(a5) - move.w #$0600,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$05,$0000004D(a5) - bcs.w locret_1AE6A2 - move.w #$0700,$0000002C(a5) - cmpi.b #$0F,$0000004D(a5) - bcs.s locret_1AE6A2 - bhi.s loc_1AE67A - bset #$06,$0000000C(a5) - move.w #$0004,d6 - jsr (j_GenerateRandomNumber).l - add.b d7,d7 - move.w IfritCoordinates(pc,d7.w),d6 - cmp.w X(a5),d6 - bne.s loc_1AE660 - addq.b #$02,d7 - andi.b #$06,d7 - move.w IfritCoordinates(pc,d7.w),d6 - -loc_1AE660: ; CODE XREF: ROM:001AE654j - move.w d6,(a5) - move.w #$0808,$00000002(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - rts -; --------------------------------------------------------------------------- -IfritCoordinates:dc.w $1B1D ; DATA XREF: ROM:001AE64Er - ; ROM:001AE65Cr - dc.w $221D - dc.w $1B24 - dc.w $2224 -; --------------------------------------------------------------------------- - -loc_1AE67A: ; CODE XREF: ROM:001AE63Aj - cmpi.b #$14,$0000004D(a5) - bcs.s locret_1AE6A2 - bhi.s loc_1AE690 - bsr.w sub_1AE550 - bclr #$06,$0000000C(a5) - rts -; --------------------------------------------------------------------------- - -loc_1AE690: ; CODE XREF: ROM:001AE682j - move.w #$0600,$0000002C(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s locret_1AE6A2 - beq.w sub_1AE3C8 - -locret_1AE6A2: ; CODE XREF: ROM:001AE628j - ; ROM:001AE638j ... - rts -; --------------------------------------------------------------------------- - -loc_1AE6A4: ; CODE XREF: ROM:001AE57Aj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AE6C6 - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1AE6C6: ; CODE XREF: ROM:001AE6B4j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AE6D8 - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1AE6D8: ; CODE XREF: ROM:001AE6CCj - cmpi.b #$0A,$0000004D(a5) - bhi.w loc_1AE6FA - bcs.w locret_1AE70A - move.w #$0200,$0000002C(a5) - move.w #$0345,d6 - bsr.w sub_1AE792 - bcs.w loc_1AE70C - rts -; --------------------------------------------------------------------------- - -loc_1AE6FA: ; CODE XREF: ROM:001AE6DEj - move.w #$0200,$0000002C(a5) - cmpi.b #$14,$0000004D(a5) - beq.w loc_1AE70C - -locret_1AE70A: ; CODE XREF: ROM:001AE6E2j - rts -; --------------------------------------------------------------------------- - -loc_1AE70C: ; CODE XREF: ROM:001AE6F4j - ; ROM:001AE706j - clr.b $0000004D(a5) - bra.w sub_1AE3C8 -; --------------------------------------------------------------------------- - -loc_1AE714: ; CODE XREF: ROM:001AE57Ej - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AE736 - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- - -loc_1AE736: ; CODE XREF: ROM:001AE724j - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AE748 - move.b #$01,d0 - bra.w LoadProjectilePalette -; --------------------------------------------------------------------------- - -loc_1AE748: ; CODE XREF: ROM:001AE73Cj - cmpi.b #$10,$0000004D(a5) - bhi.w loc_1AE778 - bcs.w locret_1AE788 - move.w #$0200,$0000002C(a5) - move.w #$0345,d6 - bsr.s sub_1AE792 - bcs.w loc_1AE78A - move.w #$0346,d6 - bsr.s sub_1AE792 - bcs.w loc_1AE78A - move.w #$0347,d6 - bsr.s sub_1AE792 - rts -; --------------------------------------------------------------------------- - -loc_1AE778: ; CODE XREF: ROM:001AE74Ej - move.w #$0200,$0000002C(a5) - cmpi.b #$20,$0000004D(a5) - beq.w loc_1AE78A - -locret_1AE788: ; CODE XREF: ROM:001AE752j - rts -; --------------------------------------------------------------------------- - -loc_1AE78A: ; CODE XREF: ROM:001AE762j - ; ROM:001AE76Cj ... - clr.b $0000004D(a5) - bra.w sub_1AE3C8 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE792: ; CODE XREF: ROM:001AE6F0p - ; ROM:001AE760p ... - move.b $00000004(a5),d2 - movem.w d6,-(sp) - movem.w d2,-(sp) - jsr (sub_103B2).l - movem.w (sp)+,d1 - movem.w (sp)+,d6 - bcs.w loc_1AE876 - move.w (a5),d0 - andi.b #$C0,d1 - beq.s loc_1AE7DA - cmpi.b #$80,d1 - bcs.s loc_1AE7F2 - beq.s loc_1AE80C - subi.w #$0100,d0 - cmpi.w #$0345,d6 - beq.s loc_1AE822 - subi.w #$0001,d0 - cmpi.w #$0346,d6 - beq.s loc_1AE822 - addi.w #$0002,d0 - bra.s loc_1AE822 -; --------------------------------------------------------------------------- - -loc_1AE7DA: ; CODE XREF: sub_1AE792+24j - subq.b #$01,d0 - cmpi.w #$0345,d6 - beq.s loc_1AE822 - addi.w #$0100,d0 - cmpi.w #$0346,d6 - beq.s loc_1AE822 - subi.w #$0200,d0 - bra.s loc_1AE822 -; --------------------------------------------------------------------------- - -loc_1AE7F2: ; CODE XREF: sub_1AE792+2Aj - addi.w #$0100,d0 - cmpi.w #$0345,d6 - beq.s loc_1AE822 - addi.w #$0001,d0 - cmpi.w #$0346,d6 - beq.s loc_1AE822 - subi.w #$0002,d0 - bra.s loc_1AE822 -; --------------------------------------------------------------------------- - -loc_1AE80C: ; CODE XREF: sub_1AE792+2Cj - addq.b #$01,d0 - cmpi.w #$0345,d6 - beq.s loc_1AE822 - subi.w #$0100,d0 - cmpi.w #$0346,d6 - beq.s loc_1AE822 - addi.w #$0200,d0 - -loc_1AE822: ; CODE XREF: sub_1AE792+36j - ; sub_1AE792+40j ... - move.w d0,(a1) - move.b d1,$00000004(a1) - move.b #$A1,d2 - move.w #$0F00,$0000003C(a1) - move.w $00000012(a5),d3 - addi.w #$0020,d3 - move.w d3,$00000012(a1) - move.w $00000002(a5),$00000002(a1) - move.w #$24B4,$00000006(a1) - move.w d6,$00000034(a1) - move.b #$04,$00000009(a1) - move.b #$80,$00000020(a1) - jsr (sub_103B8).l - bset #$00,$00000038(a1) - bset #$07,$0000000C(a1) - bset #$07,$0000004C(a1) - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AE876: ; CODE XREF: sub_1AE792+1Aj - ori #$01,ccr - rts -; End of function sub_1AE792 - -; --------------------------------------------------------------------------- - -EnemyAI_Nole_B: ; CODE XREF: ROM:001A86A2j - bra.s loc_1AE8C4 -; --------------------------------------------------------------------------- - -EnemyAI_Nole_A: ; CODE XREF: ROM:001A869Ej - btst #$01,$0000000C(a5) - bne.s loc_1AE896 - move.b $00000037(a5),d0 - beq.s loc_1AE89C - cmpi.b #$10,d0 - beq.s loc_1AE8CE - bra.w loc_1AEAE4 -; --------------------------------------------------------------------------- - -loc_1AE896: ; CODE XREF: ROM:001AE884j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AE89C: ; CODE XREF: ROM:001AE88Aj - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s sub_1AE8CA - rts -; --------------------------------------------------------------------------- - -loc_1AE8C4: ; CODE XREF: ROM:EnemyAI_Nole_Bj - bsr.s sub_1AE8CA - bra.w loc_1AE9FE - -; =============== S U B R O U T I N E ======================================= - -; Attributes: thunk - -sub_1AE8CA: ; CODE XREF: ROM:001AE8C0j - ; ROM:loc_1AE8C4p ... - bra.w loc_1A8AB6 -; End of function sub_1AE8CA - -; --------------------------------------------------------------------------- - -loc_1AE8CE: ; CODE XREF: ROM:001AE890j - btst #$06,$0000000C(a5) - beq.s loc_1AE8E6 - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.s loc_1AE912 - subq.b #$01,$0000004D(a5) - -loc_1AE8E6: ; CODE XREF: ROM:001AE8D4j - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.w sub_1AE91C - bcs.s loc_1AE912 - bsr.w sub_1AE9EE - bcs.s loc_1AE912 - bsr.w sub_1AEA1C - bcs.s loc_1AE912 - bsr.w sub_1AEA64 - bcs.s loc_1AE912 - bsr.w sub_1AEAAC - -loc_1AE912: ; CODE XREF: ROM:001AE8E0j - ; ROM:001AE8FAj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - bra.w loc_1A8AA6 - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE91C: ; CODE XREF: ROM:001AE8F6p - -; FUNCTION CHUNK AT 001AE9D4 SIZE 0000001A BYTES - - btst #$06,$0000000C(a5) - beq.w loc_1AE9CA - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bhi.w loc_1AE9CA - move.w #$001F,d1 - bsr.s sub_1AE944 - bcs.w loc_1AE9D4 - rts -; End of function sub_1AE91C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE944: ; CODE XREF: sub_1AD4A4+Cp - ; sub_1AD72A+Cp ... - movem.w d1,-(sp) - move.w #$0007,d6 - jsr (j_GenerateRandomNumber).l - addi.b #$03,d7 - move.w d7,d5 - move.w #$0002,d6 - jsr (j_GenerateRandomNumber).l - tst.b d7 - beq.s loc_1AE968 - neg.b d5 - -loc_1AE968: ; CODE XREF: sub_1AE944+20j - move.w #$0002,d6 - jsr (j_GenerateRandomNumber).l - tst.b d7 - beq.s loc_1AE988 - add.b (Player_X).l,d5 - move.b d5,(a5) - move.b (Player_Y).l,$00000001(a5) - bra.s loc_1AE998 -; --------------------------------------------------------------------------- - -loc_1AE988: ; CODE XREF: sub_1AE944+30j - add.b (Player_Y).l,d5 - move.b d5,$00000001(a5) - move.b (Player_X).l,(a5) - -loc_1AE998: ; CODE XREF: sub_1AE944+42j - movea.l a5,a1 - jsr (sub_1A8AE6).l - move.w (Player_Z).l,d0 - move.w d0,$00000012(a5) - movem.w (sp)+,d1 - add.w d1,d0 - move.w d0,$00000054(a5) - movea.l a5,a1 - jsr (sub_3BC).l - bcc.s loc_1AE9CE - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - -loc_1AE9CA: ; CODE XREF: sub_1AE91C+6j - ; sub_1AE91C+18j - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AE9CE: ; CODE XREF: sub_1AE944+78j - ori #$01,ccr - rts -; End of function sub_1AE944 - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1AE91C - -loc_1AE9D4: ; CODE XREF: sub_1AE91C+22j - move.b #$25,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; END OF FUNCTION CHUNK FOR sub_1AE91C - -; =============== S U B R O U T I N E ======================================= - - -sub_1AE9EE: ; CODE XREF: ROM:001AE8FCp - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0001,d7 - bhi.s loc_1AEA18 - -loc_1AE9FE: ; CODE XREF: ROM:001AE8C6j - move.b #$20,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AEA18: ; CODE XREF: sub_1AE9EE+Ej - tst.b d0 - rts -; End of function sub_1AE9EE - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AEA1C: ; CODE XREF: ROM:001AE902p - btst #$06,$0000000C(a5) - bne.s loc_1AEA60 - move.w #$00A0,d5 - move.w #$FFD8,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AEA60 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$012C,d7 - bhi.s loc_1AEA60 - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AEA60: ; CODE XREF: sub_1AEA1C+6j - ; sub_1AEA1C+18j ... - tst.b d0 - rts -; End of function sub_1AEA1C - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AEA64: ; CODE XREF: ROM:001AE908p - btst #$06,$0000000C(a5) - bne.s loc_1AEAA8 - move.w #$0048,d5 - move.w #$0030,d6 - move.w #$0010,d7 - bsr.w sub_1A8964 - bcc.s loc_1AEAA8 - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0019,d7 - bhi.s loc_1AEAA8 - move.b #$22,$00000037(a5) - move.w #$0012,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AEAA8: ; CODE XREF: sub_1AEA64+6j - ; sub_1AEA64+18j ... - tst.b d0 +MoveSpriteOffscreen: ; CODE XREF: ROM:loc_1A78B4p + ; ROM:loc_1A7AB8p ... + move.b #$7F,X(a5) + move.b #$7F,Y(a5) + move.b #$7F,CentreX(a5) + move.b #$7F,CentreY(a5) + move.b #$7F,HitBoxXStart(a5) + move.b #$7F,HitBoxXEnd(a5) rts -; End of function sub_1AEA64 +; End of function MoveSpriteOffscreen ; =============== S U B R O U T I N E ======================================= -sub_1AEAAC: ; CODE XREF: ROM:001AE90Ep - btst #$06,$0000000C(a5) - bne.s loc_1AEAE0 - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AEAE0 - move.b #$23,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000000D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AEAE0: ; CODE XREF: sub_1AEAAC+6j - ; sub_1AEAAC+18j - tst.b d0 - rts -; End of function sub_1AEAAC - -; --------------------------------------------------------------------------- - -loc_1AEAE4: ; CODE XREF: ROM:001AE892j - andi.b #$0F,d0 - beq.s loc_1AEB0C - cmpi.b #$01,d0 - beq.w loc_1AEB8C - cmpi.b #$02,d0 - beq.w loc_1AEBFC - cmpi.b #$03,d0 - beq.w loc_1AEBFC - cmpi.b #$04,d0 - beq.w loc_1AEBFC - bra.s loc_1AEB54 -; --------------------------------------------------------------------------- - -loc_1AEB0C: ; CODE XREF: ROM:001AEAE8j - bset #$00,$00000038(a5) - move.w #$0500,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$04,$0000004D(a5) - bcs.s locret_1AEB52 - move.w #$0600,$0000002C(a5) - cmpi.b #$08,$0000004D(a5) - bcs.s locret_1AEB52 - bset #$06,$0000000C(a5) - move.w #$0100,$00000012(a5) - move.w #$0120,$00000054(a5) - bset #$07,$00000020(a5) - clr.b $0000004D(a5) - bra.w sub_1AE8CA -; --------------------------------------------------------------------------- - -locret_1AEB52: ; CODE XREF: ROM:001AEB22j - ; ROM:001AEB30j - rts -; --------------------------------------------------------------------------- - -loc_1AEB54: ; CODE XREF: ROM:001AEB0Aj - bclr #$06,$0000000C(a5) - move.w #$0600,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$04,$0000004D(a5) - bcs.s locret_1AEB8A - move.w #$0500,$0000002C(a5) - cmpi.b #$08,$0000004D(a5) - bcs.s locret_1AEB8A - bclr #$00,$00000038(a5) - bclr #$07,$00000020(a5) - bra.w sub_1AE8CA -; --------------------------------------------------------------------------- - -locret_1AEB8A: ; CODE XREF: ROM:001AEB6Aj - ; ROM:001AEB78j - rts -; --------------------------------------------------------------------------- - -loc_1AEB8C: ; CODE XREF: ROM:001AEAEEj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$08,$0000004D(a5) - bcs.s locret_1AEBF2 - move.w #$0200,$0000002C(a5) - cmpi.b #$10,$0000004D(a5) - bcs.s locret_1AEBF2 - move.w #$0300,$0000002C(a5) - cmpi.b #$18,$0000004D(a5) - bhi.w loc_1AEBE2 - bcs.w locret_1AEBF2 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_GhostAbsorbHP -; --------------------------------------------------------------------------- - move.b #$02,d0 - move.w #$1E00,d1 - bsr.w sub_1AC474 - bcs.w loc_1AEBF4 - move.w #$24C0,$00000006(a1) - move.b #$08,$00000009(a1) - rts -; --------------------------------------------------------------------------- - -loc_1AEBE2: ; CODE XREF: ROM:001AEBB8j - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000004D(a5) - beq.w loc_1AEBF4 - -locret_1AEBF2: ; CODE XREF: ROM:001AEB9Cj - ; ROM:001AEBAAj ... - rts -; --------------------------------------------------------------------------- - -loc_1AEBF4: ; CODE XREF: ROM:001AEBD0j - ; ROM:001AEBEEj - clr.b $0000004D(a5) - bra.w sub_1AE8CA -; --------------------------------------------------------------------------- - -loc_1AEBFC: ; CODE XREF: ROM:001AEAF6j - ; ROM:001AEAFEj ... - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000000D(a5) - cmpi.b #$08,$0000000D(a5) - bcs.s loc_1AEC52 - move.w #$0200,$0000002C(a5) - cmpi.b #$10,$0000000D(a5) - bcs.s loc_1AEC52 - bhi.s loc_1AEC22 - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_SwordSwing -; --------------------------------------------------------------------------- - -loc_1AEC22: ; CODE XREF: ROM:001AEC1Cj - move.w #$0021,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - cmpi.b #$18,$0000000D(a5) - bcs.s loc_1AEC52 - move.w #$0400,$0000002C(a5) - cmpi.b #$20,$0000000D(a5) - bcs.s loc_1AEC52 - beq.w sub_1AE8CA - -loc_1AEC52: ; CODE XREF: ROM:001AEC0Cj - ; ROM:001AEC1Aj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -EnemyAI_StoneWarrior_B: ; CODE XREF: ROM:001A86AAj - ; ROM:001A86D2j - bra.s loc_1AECA0 -; --------------------------------------------------------------------------- +HideSprite: ; DATA XREF: j_HideSpritet + ori.b #$01,Flags1(a5) + bra.s MoveSpriteOffscreen +; End of function HideSprite -EnemyAI_StoneWarrior_A: ; CODE XREF: ROM:001A86A6j - ; ROM:001A86CEj - btst #$01,$0000000C(a5) - bne.s loc_1AEC72 - move.b $00000037(a5),d0 - beq.s loc_1AEC78 - cmpi.b #$10,d0 - beq.s loc_1AECB0 - bra.w loc_1AED88 ; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1A83E6 -loc_1AEC72: ; CODE XREF: ROM:001AEC60j - bsr.w LoadSpecialAI +loc_1A87D2: ; CODE XREF: sub_1A83E6+3BEj + clr.w QueuedAction(a5) + move.w #$FFFF,PrevAction(a5) + clr.w AnimationFrame(a5) + ori.b #$80,Unk0A(a5) + cmpi.b #$18,SpriteGraphic(a5) + bne.s loc_1A8800 + move.w #$0008,AnimationIndex(a5) + bset #$07,Unk48(a5) + bsr.w sub_1A86D6 rts ; --------------------------------------------------------------------------- -loc_1AEC78: ; CODE XREF: ROM:001AEC66j - bsr.w LoadSpecialAI - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - move.w #$0060,d5 - move.w #$0020,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s sub_1AECAC +loc_1A8800: ; CODE XREF: sub_1A83E6+406j + bset #$07,Unk48(a5) + clr.w AnimationIndex(a5) rts -; --------------------------------------------------------------------------- - -loc_1AECA0: ; CODE XREF: ROM:EnemyAI_StoneWarrior_Bj - bsr.s sub_1AECAC - eori.b #$80,$00000004(a5) - bra.w loc_1AED50 +; END OF FUNCTION CHUNK FOR sub_1A83E6 ; =============== S U B R O U T I N E ======================================= -; Attributes: thunk - -sub_1AECAC: ; CODE XREF: ROM:001AEC9Cj - ; ROM:loc_1AECA0p ... - bra.w loc_1A8AB6 -; End of function sub_1AECAC -; --------------------------------------------------------------------------- - -loc_1AECB0: ; CODE XREF: ROM:001AEC6Cj - tst.b (byte_FF1142).l - bne.s loc_1AECD8 - move.w $00000014(a5),(word_FF1800).l - move.w $00000016(a5),(dword_FF1804).l - bsr.w sub_1AECDC - bcs.s loc_1AECD2 - bsr.w sub_1AED2E +sub_1A880C: ; CODE XREF: ROM:001A4E9Cp + ; ROM:001A50C8p ... + bsr.s sub_1A8824 + bcc.s locret_1A8822 + move.b d0,(byte_FF1143).l + move.w AttackStrength(a5),(Player_AttackStrength).l + ori #$01,ccr -loc_1AECD2: ; CODE XREF: ROM:001AECCCj - bsr.w LoadSpecialAI +locret_1A8822: ; CODE XREF: sub_1A880C+2j rts -; --------------------------------------------------------------------------- +; End of function sub_1A880C -loc_1AECD8: ; CODE XREF: ROM:001AECB6j - bra.w loc_1A8AA6 ; =============== S U B R O U T I N E ======================================= -sub_1AECDC: ; CODE XREF: ROM:001AECC8p - move.w #$0080,d5 - move.w #$0080,d6 - move.w #$0080,d7 - bsr.w sub_1A8964 - bcc.s loc_1AED2A - move.w #$0030,d5 - move.w #$0030,d6 - move.w #$0030,d7 - bsr.w sub_1A8964 - bcs.s loc_1AED2A - move.w #$03E8,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0006,d7 - bhi.s loc_1AED2A - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) +sub_1A8824: ; CODE XREF: sub_1A880Cp + move.w d3,d4 + move.w Z(a5),d5 + move.w HitBoxZEnd(a5),d6 + lea (Player_X).l,a1 + move.b RotationAndSize(a5),d7 + andi.b #$C0,d7 + beq.s loc_1A8890 + cmpi.b #$80,d7 + beq.w loc_1A88D8 + bcs.w loc_1A891E + neg.w d1 + add.w CentreX(a5),d1 + add.w CentreX(a5),d2 + neg.w d3 + add.w CentreY(a5),d3 + add.w CentreY(a5),d4 + cmp.w HitBoxXEnd(a1),d1 + bhi.s loc_1A888C + cmp.w HitBoxXStart(a1),d2 + bcs.s loc_1A888C + cmp.w HitBoxYEnd(a1),d3 + bhi.s loc_1A888C + cmp.w HitBoxYStart(a1),d4 + bcs.s loc_1A888C + cmp.w HitBoxZEnd(a1),d5 + bhi.s loc_1A888C + cmp.w Z(a1),d6 + bcs.s loc_1A888C + move.b #$43,d0 ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AED2A: ; CODE XREF: sub_1AECDC+10j - ; sub_1AECDC+22j ... +loc_1A888C: ; CODE XREF: sub_1A8824+3Ej + ; sub_1A8824+44j ... tst.b d0 rts -; End of function sub_1AECDC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AED2E: ; CODE XREF: ROM:001AECCEp - move.w #$0020,d5 - move.w #$0000,d6 - move.w #$0008,d7 - bsr.w sub_1A8964 - bcc.s loc_1AED84 - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.s loc_1AED6A - -loc_1AED50: ; CODE XREF: ROM:001AECA8j - move.b #$23,$00000037(a5) - move.w #$000E,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts ; --------------------------------------------------------------------------- -loc_1AED6A: ; CODE XREF: sub_1AED2E+20j - move.b #$24,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) +loc_1A8890: ; CODE XREF: sub_1A8824+18j + neg.w d1 + add.w CentreY(a5),d1 + add.w CentreY(a5),d2 + add.w CentreX(a5),d3 + neg.w d4 + add.w CentreX(a5),d4 + cmp.w HitBoxYEnd(a1),d1 + bhi.s loc_1A88D4 + cmp.w HitBoxYStart(a1),d2 + bcs.s loc_1A88D4 + cmp.w HitBoxXStart(a1),d3 + bcs.w loc_1A88D4 + cmp.w HitBoxXEnd(a1),d4 + bhi.s loc_1A88D4 + cmp.w HitBoxZEnd(a1),d5 + bhi.s loc_1A88D4 + cmp.w Z(a1),d6 + bcs.s loc_1A88D4 + move.b #$40,d0 ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AED84: ; CODE XREF: sub_1AED2E+10j +loc_1A88D4: ; CODE XREF: sub_1A8824+84j + ; sub_1A8824+8Aj ... tst.b d0 rts -; End of function sub_1AED2E - -; --------------------------------------------------------------------------- - -loc_1AED88: ; CODE XREF: ROM:001AEC6Ej - andi.b #$0F,d0 - beq.s loc_1AEDA2 - cmpi.b #$01,d0 - beq.s loc_1AEDAE - cmpi.b #$02,d0 - beq.s loc_1AEDAE - cmpi.b #$03,d0 - beq.s loc_1AEDB4 - bra.s loc_1AEDF0 -; --------------------------------------------------------------------------- - -loc_1AEDA2: ; CODE XREF: ROM:001AED8Cj - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w sub_1AECAC - -loc_1AEDAE: ; CODE XREF: ROM:001AED92j - ; ROM:001AED98j - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AEDB4: ; CODE XREF: ROM:001AED9Ej - bclr #$00,$00000038(a5) - move.b $0000002D(a5),d0 - andi.b #$30,d0 - beq.w loc_1AEDD2 - bset #$00,$00000038(a5) - bsr.w LoadSpecialAI - rts ; --------------------------------------------------------------------------- -loc_1AEDD2: ; CODE XREF: ROM:001AEDC2j - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AEDEA - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_DoorLock -; --------------------------------------------------------------------------- - move.w #$0400,$0000002C(a5) +loc_1A88D8: ; CODE XREF: sub_1A8824+1Ej + add.w CentreY(a5),d1 + neg.w d2 + add.w CentreY(a5),d2 + neg.w d3 + add.w CentreX(a5),d3 + add.w CentreX(a5),d4 + cmp.w HitBoxYStart(a1),d1 + bcs.s loc_1A891A + cmp.w HitBoxYEnd(a1),d2 + bhi.s loc_1A891A + cmp.w HitBoxXEnd(a1),d3 + bhi.s loc_1A891A + cmp.w HitBoxXStart(a1),d4 + bcs.s loc_1A891A + cmp.w HitBoxZEnd(a1),d5 + bhi.s loc_1A891A + cmp.w Z(a1),d6 + bcs.s loc_1A891A + move.b #$42,d0 + ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AEDEA: ; CODE XREF: ROM:001AEDDCj - bsr.s sub_1AEE66 - bra.w sub_1AECAC -; --------------------------------------------------------------------------- - -loc_1AEDF0: ; CODE XREF: ROM:001AEDA0j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$0F,$0000004D(a5) - bcs.w locret_1AEED6 - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$1E,$0000004D(a5) - bcs.w locret_1AEED6 - bne.s loc_1AEE1E - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_DoorLock -; --------------------------------------------------------------------------- - -loc_1AEE1E: ; CODE XREF: ROM:001AEE18j - move.w #$0019,d1 - move.w #$0009,d2 - move.w #$0009,d3 - bsr.w sub_1A880C - move.w #$0300,$0000002C(a5) - cmpi.b #$20,$0000004D(a5) - bne.w loc_1AEEC4 - bsr.w sub_1AEE66 - move.b (Player_Z+1).l,d0 - cmp.b (Player_FloorHeight).l,d0 - bne.s loc_1AEE62 - tst.b (byte_FF1142).l - bne.s loc_1AEE62 - move.b #$08,d0 - jsr (j_PlaybackInput).l - -loc_1AEE62: ; CODE XREF: ROM:001AEE4Ej - ; ROM:001AEE56j +loc_1A891A: ; CODE XREF: sub_1A8824+CCj + ; sub_1A8824+D2j ... tst.b d0 rts - -; =============== S U B R O U T I N E ======================================= - - -sub_1AEE66: ; CODE XREF: ROM:loc_1AEDEAp - ; ROM:001AEE3Ep ... - moveq #$00000007,d7 - move.w #$0009,d0 - -loc_1AEE6C: ; CODE XREF: sub_1AEE66+58j - movem.w d7,-(sp) - move.w #$0007,d6 - -loc_1AEE74: ; CODE XREF: sub_1AEE66+4Ej - movem.w d0/d6,-(sp) - movem.w d0,-(sp) - add.w d0,(g_VSRAMData).l - add.w d0,(g_VSRAMData+2).l - jsr (j_QueueVSRAMUpdate).l - jsr (j_FlushDMACopyQueue).l - movem.w (sp)+,d0 - sub.w d0,(g_VSRAMData).l - sub.w d0,(g_VSRAMData+2).l - jsr (j_QueueVSRAMUpdate).l - jsr (j_FlushDMACopyQueue).l - movem.w (sp)+,d0/d6 - dbf d6,loc_1AEE74 - subq.w #$01,d0 - movem.w (sp)+,d7 - dbf d7,loc_1AEE6C - rts -; End of function sub_1AEE66 - ; --------------------------------------------------------------------------- -loc_1AEEC4: ; CODE XREF: ROM:001AEE3Aj - cmpi.b #$2D,$0000004D(a5) - bcs.s locret_1AEED6 - bra.w sub_1AECAC -; --------------------------------------------------------------------------- +loc_1A891E: ; CODE XREF: sub_1A8824+22j + add.w CentreX(a5),d1 + neg.w d2 + add.w CentreX(a5),d2 + add.w CentreY(a5),d3 + neg.w d4 + add.w CentreY(a5),d4 + cmp.w HitBoxXStart(a1),d1 + bcs.s loc_1A8960 + cmp.w HitBoxXEnd(a1),d2 + bhi.s loc_1A8960 + cmp.w HitBoxYStart(a1),d3 + bcs.s loc_1A8960 + cmp.w HitBoxYEnd(a1),d4 + bhi.s loc_1A8960 + cmp.w HitBoxZEnd(a1),d5 + bhi.s loc_1A8960 + cmp.w Z(a1),d6 + bcs.s loc_1A8960 + move.b #$41,d0 ori #$01,ccr rts ; --------------------------------------------------------------------------- -locret_1AEED6: ; CODE XREF: ROM:001AEE00j - ; ROM:001AEE14j ... - rts -; --------------------------------------------------------------------------- - -EnemyAI_Gola_B: ; CODE XREF: ROM:001A869Aj - bra.s loc_1AEEFE -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -EnemyAI_Gola_A: ; CODE XREF: ROM:001A8696j - ; DATA XREF: sub_1A4414+8t - move.b #$02,Speed(a5) - btst #$01,Flags2(a5) - bne.s loc_1AEEF8 - move.b ChestIndex(a5),d0 - beq.s loc_1AEF4C - cmpi.b #$10,d0 - beq.s loc_1AEF4C - bra.w loc_1AF1FC -; --------------------------------------------------------------------------- - -loc_1AEEF8: ; CODE XREF: sub_1A4414+AAD2j - bsr.w LoadSpecialAI - rts -; END OF FUNCTION CHUNK FOR sub_1A4414 -; --------------------------------------------------------------------------- - -loc_1AEEFE: ; CODE XREF: ROM:EnemyAI_Gola_Bj - bsr.s sub_1AEF04 - bra.w loc_1AF1BA - -; =============== S U B R O U T I N E ======================================= - - -sub_1AEF04: ; CODE XREF: ROM:loc_1AEEFEp - ; sub_1A4414+ACCAj ... - bclr #$06,$00000038(a5) - bclr #$00,$00000038(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - move.b #$10,$00000037(a5) - bclr #$01,$0000000C(a5) - move.l #$C0000000,(VDP_CTRL_REG).l - move.w #$0000,(VDP_DATA_REG).l - move.l #$C01E0000,(VDP_CTRL_REG).l - move.w #$0000,(VDP_DATA_REG).l +loc_1A8960: ; CODE XREF: sub_1A8824+112j + ; sub_1A8824+118j ... + tst.b d0 rts -; End of function sub_1AEF04 - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -loc_1AEF4C: ; CODE XREF: sub_1A4414+AAD8j - ; sub_1A4414+AADEj - bsr.w sub_1AEF72 - bcs.s loc_1AEF6C - bsr.w sub_1AF01A - bcs.s loc_1AEF6C - bsr.s sub_1AEFAC - bcs.s loc_1AEF6C - bsr.w sub_1AF052 - bcs.s loc_1AEF6C - bsr.w sub_1AF084 - bcs.s locret_1AEF70 - bsr.w sub_1AF18A +; End of function sub_1A8824 -loc_1AEF6C: ; CODE XREF: sub_1A4414+AB3Cj - ; sub_1A4414+AB42j ... - bsr.w LoadSpecialAI - -locret_1AEF70: ; CODE XREF: sub_1A4414+AB52j - rts -; END OF FUNCTION CHUNK FOR sub_1A4414 ; =============== S U B R O U T I N E ======================================= -sub_1AEF72: ; CODE XREF: sub_1A4414:loc_1AEF4Cp - cmpi.w #$0064,$00000012(a5) - bcc.w loc_1AF0BA - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 - bcc.w loc_1AF0BA - move.b #$27,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Slash1 -; --------------------------------------------------------------------------- +sub_1A8964: ; CODE XREF: ROM:001A4CCEp + ; sub_1A4D0E+Cp ... + move.b RotationAndSize(a5),d0 + andi.b #$C0,d0 + beq.s loc_1A89C8 + cmpi.b #$80,d0 + bcs.w loc_1A8A16 + beq.w loc_1A8A5C + move.w (word_FF1800).l,d1 + sub.w d5,d1 + cmp.w (Player_CentreX).l,d1 + bhi.w loc_1A8AA2 + move.w (word_FF1800).l,d1 + add.w d6,d1 + cmp.w (Player_CentreX).l,d1 + bcs.w loc_1A8AA2 + move.w (dword_FF1804).l,d2 + sub.w d7,d2 + cmp.w (Player_CentreY).l,d2 + bhi.w loc_1A8AA2 + move.w (dword_FF1804).l,d2 + add.w d7,d2 + cmp.w (Player_CentreY).l,d2 + bcs.w loc_1A8AA2 ori #$01,ccr rts -; End of function sub_1AEF72 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AEFAC: ; CODE XREF: sub_1A4414+AB44p - -; FUNCTION CHUNK AT 001AF0BE SIZE 0000001A BYTES - - cmpi.w #$00F0,$00000012(a5) - bcs.s loc_1AF016 - move.w #$0002,d6 - jsr (j_GenerateRandomNumber).l - tst.b d7 - beq.s loc_1AEFE2 - move.b (Player_X).l,(a5) - move.b #$16,$00000001(a5) - andi.b #$3F,$00000004(a5) - ori.b #$80,$00000004(a5) - bclr #$03,$00000006(a5) - bra.s loc_1AF000 ; --------------------------------------------------------------------------- -loc_1AEFE2: ; CODE XREF: sub_1AEFAC+14j - move.b #$19,(a5) - move.b (Player_Y).l,$00000001(a5) - andi.b #$3F,$00000004(a5) - ori.b #$40,$00000004(a5) - bset #$03,$00000006(a5) - -loc_1AF000: ; CODE XREF: sub_1AEFAC+34j - bset #$07,$00000048(a5) - clr.w $00000002(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - bra.w loc_1AF0BE -; --------------------------------------------------------------------------- - -loc_1AF016: ; CODE XREF: sub_1AEFAC+6j - tst.b d0 - rts -; End of function sub_1AEFAC - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AF01A: ; CODE XREF: sub_1A4414+AB3Ep - cmpi.w #$0094,$00000012(a5) - bcs.s loc_1AF04E - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$001E,d7 - bhi.w loc_1AF04E - move.b #$21,$00000037(a5) - move.w #$0000,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) +loc_1A89C8: ; CODE XREF: sub_1A8964+8j + move.w (word_FF1800).l,d1 + sub.w d7,d1 + cmp.w (Player_CentreX).l,d1 + bhi.w loc_1A8AA2 + move.w (word_FF1800).l,d1 + add.w d7,d1 + cmp.w (Player_CentreX).l,d1 + bcs.w loc_1A8AA2 + move.w (dword_FF1804).l,d2 + sub.w d5,d2 + cmp.w (Player_CentreY).l,d2 + bhi.w loc_1A8AA2 + move.w (dword_FF1804).l,d2 + add.w d6,d2 + cmp.w (Player_CentreY).l,d2 + bcs.w loc_1A8AA2 ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AF04E: ; CODE XREF: sub_1AF01A+6j - ; sub_1AF01A+16j - tst.b d0 - rts -; End of function sub_1AF01A - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AF052: ; CODE XREF: sub_1A4414+AB48p - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$000A,d7 - bhi.s loc_1AF080 - move.w #$0383,$00000034(a5) - -loc_1AF068: ; CODE XREF: sub_1A4414+AF5Aj - move.b #$22,$00000037(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Fireball1 -; --------------------------------------------------------------------------- +loc_1A8A16: ; CODE XREF: sub_1A8964+Ej + move.w (word_FF1800).l,d1 + add.w d5,d1 + cmp.w (Player_CentreX).l,d1 + bcs.s loc_1A8AA2 + move.w (word_FF1800).l,d1 + sub.w d6,d1 + cmp.w (Player_CentreX).l,d1 + bhi.s loc_1A8AA2 + move.w (dword_FF1804).l,d2 + sub.w d7,d2 + cmp.w (Player_CentreY).l,d2 + bhi.s loc_1A8AA2 + move.w (dword_FF1804).l,d2 + add.w d7,d2 + cmp.w (Player_CentreY).l,d2 + bcs.s loc_1A8AA2 ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AF080: ; CODE XREF: sub_1AF052+Ej - tst.b d0 - rts -; End of function sub_1AF052 - - -; =============== S U B R O U T I N E ======================================= - - -sub_1AF084: ; CODE XREF: sub_1A4414+AB4Ep - cmpi.w #$0064,$00000012(a5) - bcc.s loc_1AF0BA - move.w #$0064,d6 - jsr (j_GenerateRandomNumber).l - cmpi.w #$0055,d7 - bcc.s loc_1AF0BA - move.b #$23,$00000037(a5) - move.w #$0363,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Slash1 -; --------------------------------------------------------------------------- +loc_1A8A5C: ; CODE XREF: sub_1A8964+12j + move.w (word_FF1800).l,d1 + sub.w d7,d1 + cmp.w (Player_CentreX).l,d1 + bhi.s loc_1A8AA2 + move.w (word_FF1800).l,d1 + add.w d7,d1 + cmp.w (Player_CentreX).l,d1 + bcs.s loc_1A8AA2 + move.w (dword_FF1804).l,d2 + add.w d5,d2 + cmp.w (Player_CentreY).l,d2 + bcs.s loc_1A8AA2 + move.w (dword_FF1804).l,d2 + sub.w d6,d2 + cmp.w (Player_CentreY).l,d2 + bhi.s loc_1A8AA2 ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_1AF0BA: ; CODE XREF: sub_1AEF72+6j - ; sub_1AEF72+18j ... +loc_1A8AA2: ; CODE XREF: sub_1A8964+24j + ; sub_1A8964+36j ... tst.b d0 rts -; End of function sub_1AF084 +; End of function sub_1A8964 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1AEFAC -loc_1AF0BE: ; CODE XREF: sub_1AEFAC+66j - move.b #$24,$00000037(a5) - move.w #$0361,$00000034(a5) +loc_1A8AA6: ; CODE XREF: ROM:loc_1A4D0Aj + ; ROM:loc_1A4F30j ... + move.w #$0006,BehaviourLUTIndex(a5) bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr + bsr.w j_j_OnTick rts -; END OF FUNCTION CHUNK FOR sub_1AEFAC -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -loc_1AF0D8: ; CODE XREF: sub_1A4414+AE84j - tst.w (g_ControllerPlayback).l - beq.w sub_1AEF04 - move.l (a5),d0 - movem.l d0,-(sp) - move.w (Player_CentreX).l,d0 - move.w (Player_CentreY).l,d1 - move.w #$0002,d6 - jsr (j_GenerateRandomNumber).l - tst.b d7 - beq.s loc_1AF10C - subi.w #$0038,d0 - move.b #$40,d2 - bra.s loc_1AF114 ; --------------------------------------------------------------------------- +; START OF FUNCTION CHUNK FOR sub_1ACD54 -loc_1AF10C: ; CODE XREF: sub_1A4414+ACECj - subi.w #$0038,d1 - move.b #$80,d2 - -loc_1AF114: ; CODE XREF: sub_1A4414+ACF6j - move.w d0,d3 - andi.b #$F0,d0 - lsr.w #$04,d0 - move.b d0,(a5) - andi.b #$0F,d3 - move.b d3,$00000002(a5) - move.w d1,d3 - andi.b #$F0,d1 - lsr.w #$04,d1 - move.b d1,$00000001(a5) - andi.b #$0F,d3 - move.b d3,$00000003(a5) - andi.b #$3F,$00000004(a5) - or.b d2,$00000004(a5) - bset #$07,$00000048(a5) - bset #$07,$0000000A(a5) - movea.l a5,a1 - jsr (sub_1A8AE6).l - movem.l (sp)+,d0 - bcs.s loc_1AF184 - move.b #$26,$00000037(a5) - move.w #$0361,$00000034(a5) +loc_1A8AB6: ; CODE XREF: ROM:EnemyAI_Orc1j + ; ROM:EnemyAI_Orc2j ... + move.w #$0006,BehaviourLUTIndex(a5) bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - subi.w #$0020,$00000012(a5) - subi.w #$0020,$00000054(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AF184: ; CODE XREF: sub_1A4414+AD48j - move.l d0,(a5) - tst.b d0 + move.b #$10,ChestIndex(a5) + bclr #$01,Flags2(a5) rts -; END OF FUNCTION CHUNK FOR sub_1A4414 +; END OF FUNCTION CHUNK FOR sub_1ACD54 ; =============== S U B R O U T I N E ======================================= +; Attributes: thunk -sub_1AF18A: ; CODE XREF: sub_1A4414+AB54p - cmpi.w #$0064,$00000012(a5) - bcc.s loc_1AF1E6 - move.w #$0019,d6 - jsr (j_GenerateRandomNumber).l - move.b (Player_X).l,d6 - subi.b #$18,d6 - add.b (Player_Y).l,d6 - subi.b #$15,d6 - move.b #$18,d5 - sub.b d6,d5 - cmp.b d5,d7 - bcc.s loc_1AF1E6 - -loc_1AF1BA: ; CODE XREF: ROM:001AEF00j - move.l #$C0000000,(VDP_CTRL_REG).l - move.w #$0000,(VDP_DATA_REG).l - move.b #$25,$00000037(a5) - move.w #$0362,$00000034(a5) - bsr.w j_j_LoadSpriteBehaviour - clr.b $0000004D(a5) - ori #$01,ccr - rts -; --------------------------------------------------------------------------- - -loc_1AF1E6: ; CODE XREF: sub_1AF18A+6j - ; sub_1AF18A+2Ej - tst.b d0 - rts -; End of function sub_1AF18A - -; --------------------------------------------------------------------------- - bsr.w sub_1AC010 - move.b d2,d1 - andi.b #$3F,$00000004(a5) - or.b d2,$00000004(a5) - rts -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -loc_1AF1FC: ; CODE XREF: sub_1A4414+AAE0j - andi.b #$0F,d0 - beq.s locret_1AF234 - cmpi.b #$01,d0 - beq.s loc_1AF236 - cmpi.b #$02,d0 - beq.w loc_1AF29E - cmpi.b #$03,d0 - beq.w loc_1AF372 - cmpi.b #$04,d0 - beq.w loc_1AF34E - cmpi.b #$05,d0 - beq.w loc_1AF34E - cmpi.b #$06,d0 - beq.w loc_1AF35C - bra.w loc_1AF4FE -; --------------------------------------------------------------------------- - -locret_1AF234: ; CODE XREF: sub_1A4414+ADECj - rts -; --------------------------------------------------------------------------- - -loc_1AF236: ; CODE XREF: sub_1A4414+ADF2j - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - beq.w loc_1AF27A - cmpi.b #$10,$0000004D(a5) - bne.w loc_1AF292 - move.b (Player_Z+1).l,d0 - cmp.b (Player_FloorHeight).l,d0 - bne.s loc_1AF26E - tst.b (byte_FF1142).l - bne.s loc_1AF26E - move.b #$08,d0 - jsr (j_PlaybackInput).l - -loc_1AF26E: ; CODE XREF: sub_1A4414+AE46j - ; sub_1A4414+AE4Ej - move.b #$10,d0 - bsr.s sub_1AF27E - bsr.w sub_1AEE66 - rts -; --------------------------------------------------------------------------- +j_j_RemoveHealth: ; CODE XREF: ROM:001A769Ap + ; ROM:001A7864p ... + jmp (j_RemoveHealth).l +; End of function j_j_RemoveHealth -loc_1AF27A: ; CODE XREF: sub_1A4414+AE2Cj - move.b #$08,d0 -; END OF FUNCTION CHUNK FOR sub_1A4414 ; =============== S U B R O U T I N E ======================================= +; Attributes: thunk -sub_1AF27E: ; CODE XREF: sub_1A4414+AE5Ep - trap #$00 ; Trap00Handler -; --------------------------------------------------------------------------- - dc.w SND_Thud -; --------------------------------------------------------------------------- - movem.l a5,-(sp) - jsr (sub_40A).l - movem.l (sp)+,a5 - rts -; End of function sub_1AF27E - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -loc_1AF292: ; CODE XREF: sub_1A4414+AE36j - cmpi.b #$11,$0000004D(a5) - beq.w loc_1AF0D8 - rts -; --------------------------------------------------------------------------- - -loc_1AF29E: ; CODE XREF: sub_1A4414+ADF8j - move.w #$0200,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AF2F4 - lea ($00009880).l,a2 - move.b #$01,d0 - jsr (j_LoadMagicSwordEffect).l - move.b #$01,d0 - bsr.w LoadProjectilePalette - bsr.w LoadPal3Low - move.l #$C0000000,(VDP_CTRL_REG).l - move.w #$000E,(VDP_DATA_REG).l - move.l #$C01E0000,(VDP_CTRL_REG).l - move.w #$000E,(VDP_DATA_REG).l - bra.w loc_1AF348 -; --------------------------------------------------------------------------- - -loc_1AF2F4: ; CODE XREF: sub_1A4414+AE9Aj - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AF332 - move.b #$01,d0 - bsr.w LoadProjectilePalette - bsr.w LoadPal3Low - move.l #$C0000000,(VDP_CTRL_REG).l - move.w #$0000,(VDP_DATA_REG).l - move.l #$C01E0000,(VDP_CTRL_REG).l - move.w #$0000,(VDP_DATA_REG).l - bra.w loc_1AF348 -; --------------------------------------------------------------------------- - -loc_1AF332: ; CODE XREF: sub_1A4414+AEE6j - cmpi.b #$03,$0000004D(a5) - bne.w loc_1AF348 - move.w #$0368,d6 - bsr.w sub_1AF448 - clr.b $0000004D(a5) - -loc_1AF348: ; CODE XREF: sub_1A4414+AEDCj - ; sub_1A4414+AF1Aj ... - bsr.w LoadSpecialAI - rts -; --------------------------------------------------------------------------- - -loc_1AF34E: ; CODE XREF: sub_1A4414+AE08j - ; sub_1A4414+AE10j - bsr.w LoadSpecialAI - tst.b $0000002B(a5) - beq.w sub_1AEF04 - rts -; --------------------------------------------------------------------------- - -loc_1AF35C: ; CODE XREF: sub_1A4414+AE18j - bsr.w LoadSpecialAI - tst.b $0000002B(a5) - beq.s loc_1AF368 - rts -; --------------------------------------------------------------------------- - -loc_1AF368: ; CODE XREF: sub_1A4414+AF50j - move.w #$0384,$00000034(a5) - bra.w loc_1AF068 -; --------------------------------------------------------------------------- - -loc_1AF372: ; CODE XREF: sub_1A4414+AE00j - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AF398 - lea ($00009880).l,a2 - move.b #$01,d0 - jsr (j_LoadMagicSwordEffect).l - bra.w loc_1AF3E4 -; --------------------------------------------------------------------------- - -loc_1AF398: ; CODE XREF: sub_1A4414+AF6Ej - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AF3B2 - move.b #$01,d0 - bsr.w LoadProjectilePalette - bsr.w LoadPal3Low - bra.w loc_1AF3E4 -; --------------------------------------------------------------------------- - -loc_1AF3B2: ; CODE XREF: sub_1A4414+AF8Aj - cmpi.b #$0A,$0000004D(a5) - bhi.w loc_1AF3D4 - bcs.w loc_1AF3E4 - move.w #$0200,$0000002C(a5) - move.w #$0345,d6 - bsr.w sub_1AF448 - bcs.w loc_1AF43A - bra.s loc_1AF3E4 -; --------------------------------------------------------------------------- - -loc_1AF3D4: ; CODE XREF: sub_1A4414+AFA4j - move.w #$0200,$0000002C(a5) - cmpi.b #$14,$0000004D(a5) - beq.w loc_1AF43A - -loc_1AF3E4: ; CODE XREF: sub_1A4414+AF80j - ; sub_1A4414+AF9Aj ... - move.b $00000004(a5),d0 - movem.w d0,-(sp) - andi.b #$C0,d0 - cmpi.b #$80,d0 - beq.s loc_1AF40E - move.b #$00,d1 - move.b $00000001(a5),d0 - cmp.b (Player_Y).l,d0 - beq.s loc_1AF430 - bhi.s loc_1AF422 - move.b #$80,d1 - bra.s loc_1AF422 -; --------------------------------------------------------------------------- - -loc_1AF40E: ; CODE XREF: sub_1A4414+AFE0j - move.b #$C0,d1 - move.b (a5),d0 - cmp.b (Player_X).l,d0 - beq.s loc_1AF430 - bhi.s loc_1AF422 - move.b #$40,d1 - -loc_1AF422: ; CODE XREF: sub_1A4414+AFF2j - ; sub_1A4414+AFF8j ... - andi.b #$3F,$00000004(a5) - or.b d1,$00000004(a5) - bsr.w LoadSpecialAI - -loc_1AF430: ; CODE XREF: sub_1A4414+AFF0j - ; sub_1A4414+B006j - movem.w (sp)+,d0 - move.b d0,$00000004(a5) - rts -; --------------------------------------------------------------------------- +j_j_AddStatusEffect: ; CODE XREF: ROM:001A5AA6p + ; ROM:loc_1A5EC2p ... + jmp (j_AddStatusEffect).l +; End of function j_j_AddStatusEffect -loc_1AF43A: ; CODE XREF: sub_1A4414+AFBAj - ; sub_1A4414+AFCCj - bclr #$00,$0000000C(a5) - clr.b $0000004D(a5) - bra.w sub_1AEF04 -; END OF FUNCTION CHUNK FOR sub_1A4414 ; =============== S U B R O U T I N E ======================================= +; Attributes: thunk -sub_1AF448: ; CODE XREF: sub_1A4414+AF2Cp - ; sub_1A4414+AFB6p ... - move.b $00000004(a5),d2 - movem.w d6,-(sp) - movem.w d2,-(sp) - jsr (sub_103B2).l - movem.w (sp)+,d1 - movem.w (sp)+,d6 - bcs.w loc_1AF4F8 - move.w $00000014(a5),d2 - move.w $00000016(a5),d3 - andi.b #$C0,d1 - beq.s loc_1AF482 - cmpi.b #$80,d1 - bcs.s loc_1AF488 - beq.s loc_1AF48E - subi.w #$001A,d2 - bra.s loc_1AF492 -; --------------------------------------------------------------------------- - -loc_1AF482: ; CODE XREF: sub_1AF448+2Aj - subi.w #$001A,d3 - bra.s loc_1AF492 -; --------------------------------------------------------------------------- - -loc_1AF488: ; CODE XREF: sub_1AF448+30j - addi.w #$001A,d2 - bra.s loc_1AF492 -; --------------------------------------------------------------------------- - -loc_1AF48E: ; CODE XREF: sub_1AF448+32j - addi.w #$001A,d3 - -loc_1AF492: ; CODE XREF: sub_1AF448+38j - ; sub_1AF448+3Ej ... - move.w d2,d0 - andi.b #$0F,d0 - move.b d0,$00000002(a1) - lsr.w #$04,d2 - move.b d2,(a1) - move.w d3,d0 - andi.b #$0F,d0 - move.b d0,$00000003(a1) - lsr.w #$04,d3 - move.b d3,$00000001(a1) - move.b d1,$00000004(a1) - move.b #$AC,d2 - move.w #$1400,$0000003C(a1) - move.w $00000012(a5),d3 - move.w d3,$00000012(a1) - move.w #$64B4,$00000006(a1) - move.w d6,$00000034(a1) - move.b #$04,$00000009(a1) - move.b #$80,$00000020(a1) - jsr (sub_103B8).l - bset #$00,$00000038(a1) - bset #$07,$0000000C(a1) - bset #$07,$0000004C(a1) - tst.b d0 - rts -; --------------------------------------------------------------------------- - -loc_1AF4F8: ; CODE XREF: sub_1AF448+1Aj - ori #$01,ccr - rts -; End of function sub_1AF448 - -; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_1A4414 - -loc_1AF4FE: ; CODE XREF: sub_1A4414+AE1Cj - move.w #$0100,$0000002C(a5) - addq.b #$01,$0000004D(a5) - cmpi.b #$01,$0000004D(a5) - bne.s loc_1AF520 - lea ($00009880).l,a2 - move.b #$01,d0 - jmp (j_LoadMagicSwordEffect).l -; --------------------------------------------------------------------------- +j_j_OnTick: ; CODE XREF: ROM:loc_1A4CA8p + ; ROM:loc_1A4CAEp ... + jmp (j_OnTick).l +; End of function j_j_OnTick -loc_1AF520: ; CODE XREF: sub_1A4414+B0FAj - cmpi.b #$02,$0000004D(a5) - bne.w loc_1AF536 - move.b #$01,d0 - bsr.w LoadProjectilePalette - bra.w LoadPal3Low -; --------------------------------------------------------------------------- -loc_1AF536: ; CODE XREF: sub_1A4414+B112j - cmpi.b #$10,$0000004D(a5) - bhi.w loc_1AF56C - bcs.w locret_1AF57C - move.w #$0200,$0000002C(a5) - move.w #$0345,d6 - bsr.w sub_1AF448 - bcs.w loc_1AF57E - move.w #$0346,d6 - bsr.w sub_1AF448 - bcs.w loc_1AF57E - move.w #$0347,d6 - bsr.w sub_1AF448 - rts -; --------------------------------------------------------------------------- +; =============== S U B R O U T I N E ======================================= -loc_1AF56C: ; CODE XREF: sub_1A4414+B128j - move.w #$0200,$0000002C(a5) - cmpi.b #$20,$0000004D(a5) - beq.w loc_1AF57E +; Attributes: thunk -locret_1AF57C: ; CODE XREF: sub_1A4414+B12Cj - rts -; --------------------------------------------------------------------------- +j_j_LoadSpriteBehaviour: ; CODE XREF: sub_1A4D0E+40p + ; sub_1A4D5C+40p ... + jmp (j_LoadSpriteBehaviour).l +; End of function j_j_LoadSpriteBehaviour -loc_1AF57E: ; CODE XREF: sub_1A4414+B13Ej - ; sub_1A4414+B14Aj ... - clr.b $0000004D(a5) - bra.w sub_1AEF04 -; END OF FUNCTION CHUNK FOR sub_1A4414 ; =============== S U B R O U T I N E ======================================= +; Attributes: thunk -LoadPal3Low: ; CODE XREF: sub_1A4414+AEB4p - ; sub_1A4414+AEF2p ... - move.l #$C0640000,(VDP_CTRL_REG).l ; CRAM 0x64 (Palette 3, Entry 4) - move.w (ProjectilePalette2,pc),d1 - nop - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+4).l - move.w d1,(g_Pal3Active+4).l - move.w ((ProjectilePalette2+2),pc),d1 - nop - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+6).l - move.w d1,(g_Pal3Active+6).l - move.w ((ProjectilePalette2+4),pc),d1 - nop - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+8).l - move.w d1,(g_Pal3Active+8).l - move.w ((ProjectilePalette2+6),pc),d1 - nop - move.w d1,(VDP_DATA_REG).l - move.w d1,(g_Pal3Base+$A).l - move.w d1,(g_Pal3Active+$A).l - rts -; End of function LoadPal3Low +sub_1A8AE6: ; CODE XREF: sub_1A83E6+3B4p + ; DATA XREF: ROM:001A6412t ... + jmp (sub_1038E).l +; End of function sub_1A8AE6 ; --------------------------------------------------------------------------- + +loc_1A8AEC: ; CODE XREF: ROM:001A76B4j + ; ROM:001A787Ej ... + jmp (j_PlayerDeath).l diff --git a/code/gamelogic/ai/enemyai3.asm b/code/gamelogic/ai/enemyai3.asm new file mode 100644 index 0000000..2dd705d --- /dev/null +++ b/code/gamelogic/ai/enemyai3.asm @@ -0,0 +1,31 @@ + +; =============== S U B R O U T I N E ======================================= + + +LoadProjectilePalette: ; CODE XREF: ROM:001AC0BCj + ; ROM:001AC3B0j ... + subq.b #$01,d0 + ext.w d0 + lsl.b #$02,d0 + move.l #$C0700000,(VDP_CTRL_REG).l ; Palette address 0x70 : Pal 3, index 8 + move.w ProjectilePalette1(pc,d0.w),d1 + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+$10).l + move.w d1,(g_Pal3Active+$10).l + move.w ProjectilePalette1+2(pc,d0.w),d1 + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+$12).l + move.w d1,(g_Pal3Active+$12).l + move.l #$C03A0000,(VDP_CTRL_REG).l + move.w ProjectilePalette1(pc,d0.w),d1 + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal1Base+$1A).l + move.w d1,(g_Pal1Active+$1A).l + move.w ProjectilePalette1+2(pc,d0.w),d1 + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal1Base+$1C).l + move.w d1,(g_Pal1Active+$1C).l + rts +; End of function LoadProjectilePalette + +; --------------------------------------------------------------------------- diff --git a/code/gamelogic/ai/enemyai4.asm b/code/gamelogic/ai/enemyai4.asm new file mode 100644 index 0000000..9cc8a88 --- /dev/null +++ b/code/gamelogic/ai/enemyai4.asm @@ -0,0 +1,69 @@ + +; =============== S U B R O U T I N E ======================================= + + +sub_1AC474: ; CODE XREF: ROM:001AC0ECp + ; ROM:001AC3D0p ... + movem.w d0-d1,-(sp) + jsr (sub_103B2).l + bcs.w loc_1AC4FC + move.w X(a5),d0 + move.b RotationAndSize(a5),d1 + andi.b #$C0,d1 + beq.s loc_1AC49C + cmpi.b #$80,d1 + bcs.s loc_1AC4A0 + beq.s loc_1AC4A6 + subi.w #$0100,d0 + bra.s loc_1AC4A8 +; --------------------------------------------------------------------------- + +loc_1AC49C: ; CODE XREF: sub_1AC474+18j + subq.b #$01,d0 + bra.s loc_1AC4A8 +; --------------------------------------------------------------------------- + +loc_1AC4A0: ; CODE XREF: sub_1AC474+1Ej + addi.w #$0100,d0 + bra.s loc_1AC4A8 +; --------------------------------------------------------------------------- + +loc_1AC4A6: ; CODE XREF: sub_1AC474+20j + addq.b #$01,d0 + +loc_1AC4A8: ; CODE XREF: sub_1AC474+26j + ; sub_1AC474+2Aj ... + move.w d0,(a1) + move.b d1,RotationAndSize(a1) + movem.w (sp)+,d0-d1 + ext.w d0 + move.b locret_1AC504+1(pc,d0.w),d2 + move.w d1,AttackStrength(a1) + move.w Z(a5),d3 + addi.w #$0010,d3 + move.w d3,Z(a1) + move.w SubX(a5),SubX(a1) + move.w #$64C0,TileSource(a1) + move.w #$021C,BehaviourLUTIndex(a1) + move.b #$04,Speed(a1) + jsr (sub_103B8).l + bset #$00,Flags4(a1) ; Bit 0 = Invincible / Solid + bset #$07,Flags2(a1) + bset #$07,InitFlags2(a1) + tst.b d0 + rts +; --------------------------------------------------------------------------- + +loc_1AC4FC: ; CODE XREF: sub_1AC474+Aj + movem.w (sp)+,d0-d1 + ori #$01,ccr + +locret_1AC504: ; DATA XREF: sub_1AC474+40r + rts +; End of function sub_1AC474 + +; --------------------------------------------------------------------------- + dc.b SPR_SMLFIREBALL + dc.b SPR_NOLEAXEPROJECTILE + dc.b SPR_ZAKBOOMERANG + dc.b $FF diff --git a/code/gamelogic/ai/enemyai5.asm b/code/gamelogic/ai/enemyai5.asm new file mode 100644 index 0000000..78ea1c6 --- /dev/null +++ b/code/gamelogic/ai/enemyai5.asm @@ -0,0 +1,31 @@ + +; =============== S U B R O U T I N E ======================================= + + +LoadPal3Low: ; CODE XREF: sub_1A4414+AEB4p + ; sub_1A4414+AEF2p ... + move.l #$C0640000,(VDP_CTRL_REG).l ; CRAM 0x64 (Palette 3, Entry 4) + move.w (ProjectilePalette2,pc),d1 + nop + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+4).l + move.w d1,(g_Pal3Active+4).l + move.w ((ProjectilePalette2+2),pc),d1 + nop + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+6).l + move.w d1,(g_Pal3Active+6).l + move.w ((ProjectilePalette2+4),pc),d1 + nop + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+8).l + move.w d1,(g_Pal3Active+8).l + move.w ((ProjectilePalette2+6),pc),d1 + nop + move.w d1,(VDP_DATA_REG).l + move.w d1,(g_Pal3Base+$A).l + move.w d1,(g_Pal3Active+$A).l + rts +; End of function LoadPal3Low + +; --------------------------------------------------------------------------- diff --git a/code/gamelogic/combat.asm b/code/gamelogic/combat.asm index 372ea2c..0200024 100644 --- a/code/gamelogic/combat.asm +++ b/code/gamelogic/combat.asm @@ -18,21 +18,21 @@ loc_15C1C: ; DATA XREF: sub_10348t and.w d0,$000006AC(a0) and.w d0,$0000072C(a0) and.w d0,$000007AC(a0) - lea $00000080(a0),a5 + lea SPRITE_SIZE(a0),a5 moveq #$0000000E,d7 bclr #$00,(byte_FF1157).l bne.w loc_15CB4 - move.w $0000002C(a0),d0 + move.w QueuedAction(a0),d0 andi.w #$0700,d0 cmpi.w #$0200,d0 bcs.w locret_16378 - lea byte_15D0C(pc),a1 + lea word_15D0C(pc),a1 cmpi.w #$0200,d0 beq.s loc_15CC0 - lea byte_15D1C(pc),a1 + lea word_15D1C(pc),a1 cmpi.w #$0300,d0 bne.s loc_15CC0 - lea byte_15D14(pc),a1 + lea word_15D14(pc),a1 cmpi.b #$02,(g_SwordCharge).l bne.s loc_15CC0 cmpi.b #$0B,(byte_FF113F).l @@ -47,7 +47,7 @@ loc_15CB4: ; CODE XREF: ROM:00015C70j loc_15CC0: ; CODE XREF: ROM:00015C8Cj ; ROM:00015C96j ... - lea byte_15D14(pc),a1 + lea word_15D14(pc),a1 cmpi.b #$04,(g_SwordCharge).l bne.s loc_15CDC cmpi.b #$0B,(byte_FF113F).l @@ -57,14 +57,14 @@ loc_15CC0: ; CODE XREF: ROM:00015C8Cj loc_15CDC: ; CODE XREF: ROM:00015CCCj ; ROM:00015CD6j - move.w $00000016(a0),d1 + move.w CentreY(a0),d1 move.w d1,d2 - move.w $00000014(a0),d3 + move.w CentreX(a0),d3 move.w d3,d4 - move.w $00000012(a0),d6 - lea $00000080(a0),a5 + move.w Z(a0),d6 + lea SPRITE_SIZE(a0),a5 moveq #$0000000E,d7 - move.b $00000004(a0),d5 + move.b RotationAndSize(a0),d5 andi.b #$C0,d5 beq.w loc_15DE6 cmpi.b #$80,d5 @@ -72,10 +72,10 @@ loc_15CDC: ; CODE XREF: ROM:00015CCCj bcs.w loc_15F6A bra.s loc_15D24 ; --------------------------------------------------------------------------- -byte_15D0C: dc.b $00,$18,$00,$10,$00,$00,$00,$00 ; DATA XREF: ROM:00015C84t -byte_15D14: dc.b $00,$20,$00,$10,$00,$10,$FF,$F8 ; DATA XREF: ROM:00015C98t +word_15D0C: dc.w $0018,$0010,$0000,$0000 ; DATA XREF: ROM:00015C84t +word_15D14: dc.w $0020,$0010,$0010,$FFF8 ; DATA XREF: ROM:00015C98t ; ROM:loc_15CC0t -byte_15D1C: dc.b $00,$18,$00,$00,$00,$10,$00,$00 ; DATA XREF: ROM:00015C8Et +word_15D1C: dc.w $0018,$0000,$0010,$0000 ; DATA XREF: ROM:00015C8Et ; --------------------------------------------------------------------------- loc_15D24: ; CODE XREF: ROM:00015D0Aj @@ -89,23 +89,23 @@ loc_15D32: ; CODE XREF: ROM:00015DE0j bmi.w locret_15DE4 cmpi.b #$7F,d5 beq.w loc_15DDC - move.b $0000000C(a5),d0 + move.b Flags2(a5),d0 andi.b #$82,d0 cmpi.b #$80,d0 bne.w loc_15DDC - cmp.w $0000001C(a5),d2 + cmp.w HitBoxYStart(a5),d2 bcs.w loc_15DDC - cmp.w $0000001E(a5),d1 + cmp.w HitBoxYEnd(a5),d1 bhi.s loc_15DDC - cmp.w $00000018(a5),d3 + cmp.w HitBoxXStart(a5),d3 bcs.s loc_15DDC - cmp.w $0000001A(a5),d4 + cmp.w HitBoxXEnd(a5),d4 bhi.s loc_15DDC - cmp.w $00000054(a5),d6 + cmp.w HitBoxZEnd(a5),d6 bcc.s loc_15DDC addi.w #$001F,d6 - cmp.w $00000012(a5),d6 - bcc.s loc_15D80 + cmp.w Z(a5),d6 + bcc.s loc_15D80 ; Invincible / Solid loc_15D7A: ; CODE XREF: ROM:00015D94j subi.w #$001F,d6 @@ -113,9 +113,9 @@ loc_15D7A: ; CODE XREF: ROM:00015D94j ; --------------------------------------------------------------------------- loc_15D80: ; CODE XREF: ROM:00015D78j - btst #$00,$00000038(a5) + btst #$00,Flags4(a5) ; Invincible / Solid beq.s loc_15D96 - bset #$03,(g_Vars+8).l + bset #$03,(g_AdditionalFlags+8).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_SwordHit @@ -124,9 +124,9 @@ loc_15D80: ; CODE XREF: ROM:00015D78j ; --------------------------------------------------------------------------- loc_15D96: ; CODE XREF: ROM:00015D86j - move.w $0000007C(a5),d0 - bsr.w sub_1657E - sub.w d0,$0000003E(a5) + move.w Defence(a5),d0 + bsr.w CalculatePlayerDamageOutput + sub.w d0,CurrentHealth(a5) bhi.s loc_15DAA bsr.w sub_16134 bra.s loc_15DDC @@ -156,7 +156,7 @@ loc_15DD2: ; CODE XREF: ROM:00015DC2j loc_15DDC: ; CODE XREF: ROM:00015D3Cj ; ROM:00015D4Cj ... - lea $00000080(a5),a5 + lea SPRITE_SIZE(a5),a5 dbf d7,loc_15D32 locret_15DE4: ; CODE XREF: ROM:00015D34j @@ -200,7 +200,7 @@ loc_15E3C: ; CODE XREF: ROM:00015E56j loc_15E42: ; CODE XREF: ROM:00015E3Aj btst #$00,$00000038(a5) beq.s loc_15E58 - bset #$03,(g_Vars+8).l + bset #$03,(g_AdditionalFlags+8).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_SwordHit @@ -210,7 +210,7 @@ loc_15E42: ; CODE XREF: ROM:00015E3Aj loc_15E58: ; CODE XREF: ROM:00015E48j move.w $0000007C(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,$0000003E(a5) bhi.s loc_15E6C bsr.w sub_16134 @@ -285,7 +285,7 @@ loc_15EFE: ; CODE XREF: ROM:00015F18j loc_15F04: ; CODE XREF: ROM:00015EFCj btst #$00,$00000038(a5) beq.s loc_15F1A - bset #$03,(g_Vars+8).l + bset #$03,(g_AdditionalFlags+8).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_SwordHit @@ -295,7 +295,7 @@ loc_15F04: ; CODE XREF: ROM:00015EFCj loc_15F1A: ; CODE XREF: ROM:00015F0Aj move.w $0000007C(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,$0000003E(a5) bhi.s loc_15F2E bsr.w sub_16134 @@ -370,7 +370,7 @@ loc_15FC0: ; CODE XREF: ROM:00015FDAj loc_15FC6: ; CODE XREF: ROM:00015FBEj btst #$00,$00000038(a5) beq.s loc_15FDC - bset #$03,(g_Vars+8).l + bset #$03,(g_AdditionalFlags+8).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_SwordHit @@ -380,7 +380,7 @@ loc_15FC6: ; CODE XREF: ROM:00015FBEj loc_15FDC: ; CODE XREF: ROM:00015FCCj move.w $0000007C(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,$0000003E(a5) bhi.s loc_15FF0 bsr.w sub_16134 @@ -422,29 +422,29 @@ locret_16028: ; CODE XREF: ROM:00015F7Aj sub_1602A: ; CODE XREF: ROM:loc_15DAAp ; ROM:loc_15E6Cp ... - bset #$05,$0000002C(a5) - clr.b $00000037(a5) - bset #$01,$0000000C(a5) - andi.b #$F8,$00000048(a5) + bset #$05,QueuedAction(a5) + clr.b ChestIndex(a5) + bset #$01,Flags2(a5) + andi.b #$F8,Unk48(a5) move.b (g_SwordCharge).l,d0 beq.s locret_16074 cmpi.b #$01,d0 bne.s loc_16056 - bset #$00,$00000048(a5) + bset #$00,Unk48(a5) bra.s locret_16074 ; --------------------------------------------------------------------------- loc_16056: ; CODE XREF: sub_1602A+22j cmpi.b #$03,d0 bne.s loc_16064 - bset #$02,$00000048(a5) + bset #$02,Unk48(a5) bra.s locret_16074 ; --------------------------------------------------------------------------- loc_16064: ; CODE XREF: sub_1602A+30j cmpi.b #$02,d0 bne.s loc_16072 - bset #$01,$00000048(a5) + bset #$01,Unk48(a5) bra.s locret_16074 ; --------------------------------------------------------------------------- @@ -473,7 +473,7 @@ loc_1607E: ; CODE XREF: sub_16076+32j andi.b #$82,d0 cmpi.b #$80,d0 bne.s loc_160A4 - cmpi.w #$0001,InitFlags4(a5) + cmpi.w #$0001,InitFlags4_DropProbability(a5) bne.s loc_160B0 tst.b GoldOrChestContents(a5) bne.s loc_160B0 @@ -520,7 +520,7 @@ loc_160E0: ; CODE XREF: ROM:000160D8j btst #$00,$00000038(a5) bne.s loc_16112 move.w $0000007C(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,$0000003E(a5) bhi.s loc_16102 bsr.w sub_16134 @@ -560,18 +560,18 @@ locret_16132: ; CODE XREF: ROM:0001612Aj sub_16134: ; CODE XREF: ROM:00015DA4p ; ROM:00015E66p ... - andi.b #$7F,$0000000C(a5) - clr.w $0000002A(a5) - bset #$02,$00000038(a5) - clr.b $0000004D(a5) - cmpi.b #$25,$0000003B(a5) + andi.b #$7F,Flags2(a5) + clr.w BehavParam(a5) + bset #$02,Flags4(a5) ; Bit 0 = Invincible / Solid + clr.b Unk4D(a5) + cmpi.b #SPR_MUMMY3,SpriteType(a5) bne.s locret_1616C - move.w #$0064,d6 + move.w #00100,d6 jsr (j_GenerateRandomNumber).l - cmpi.w #$0032,d7 + cmpi.w #00050,d7 bcs.s locret_1616C - move.b #$01,$0000004D(a5) - andi.b #$7F,$0000004C(a5) + move.b #$01,Unk4D(a5) + andi.b #$7F,InitFlags2(a5) locret_1616C: ; CODE XREF: sub_16134+1Aj ; sub_16134+2Aj @@ -639,13 +639,13 @@ loc_161EA: ; CODE XREF: sub_161E8+32j bmi.w locret_1621E cmpi.b #$7F,d5 beq.s loc_16216 - move.b $0000000C(a5),d0 + move.b Flags2(a5),d0 andi.b #$82,d0 cmpi.b #$80,d0 bne.s loc_16216 - cmpi.w #$0001,$00000078(a5) + cmpi.w #$0001,InitFlags4_DropProbability(a5) bne.s loc_16212 - tst.b $00000036(a5) + tst.b GoldOrChestContents(a5) beq.s loc_16216 loc_16212: ; CODE XREF: sub_161E8+22j @@ -653,7 +653,7 @@ loc_16212: ; CODE XREF: sub_161E8+22j loc_16216: ; CODE XREF: sub_161E8+Cj ; sub_161E8+1Aj ... - lea $00000080(a5),a5 + lea SPRITE_SIZE(a5),a5 dbf d7,loc_161EA locret_1621E: ; CODE XREF: sub_161E8+4j @@ -674,15 +674,15 @@ sub_16220: ; DATA XREF: sub_10358t loc_16228: ; CODE XREF: sub_16220+22j tst.w (a5) bmi.s locret_16246 - bclr #$02,$00000038(a5) + bclr #$02,Flags4(a5) ; Bit 0 = Invincible / Solid beq.s loc_1623E - tst.b $0000004D(a5) + tst.b Unk4D(a5) bne.w loc_1638E bsr.s loc_16248 loc_1623E: ; CODE XREF: sub_16220+12j ; sub_16220+1F2j ... - lea $00000080(a5),a5 + lea SPRITE_SIZE(a5),a5 dbf d7,loc_16228 locret_16246: ; CODE XREF: sub_16220+Aj @@ -694,10 +694,10 @@ locret_16246: ; CODE XREF: sub_16220+Aj loc_16248: ; CODE XREF: sub_16220+1Cp tst.b (g_Flags+5).l bmi.w loc_1637A - move.w $00000078(a5),d6 + move.w InitFlags4_DropProbability(a5),d6 cmpi.w #$0001,d6 bne.s loc_16284 - tst.b $00000036(a5) + tst.b GoldOrChestContents(a5) bne.s loc_16284 btst #$00,(g_Flags+3).l beq.s loc_16276 @@ -758,7 +758,7 @@ loc_162D8: ; CODE XREF: ROM:0001628Aj move.b #SpriteB_Moneybag,SpriteGraphic(a5) loc_162EC: ; CODE XREF: ROM:000162D6j - move.w #$002D,Unk2A(a5) + move.w #$002D,BehavParam(a5) cmpi.b #$10,Height(a5) bcc.s loc_16308 @@ -781,7 +781,7 @@ loc_1631A: ; CODE XREF: ROM:00016306j move.b #$10,Height(a5) clr.l BehaviourLUTPtr(a5) clr.w CurrentHealth(a5) - clr.b Flags4(a5) + clr.b Flags4(a5) ; Bit 0 = Invincible / Solid clr.w FallRate(a5) andi.b #$7F,Flags2(a5) andi.b #$3F,RotationAndSize(a5) @@ -794,7 +794,7 @@ loc_1631A: ; CODE XREF: ROM:00016306j bset #$00,Flags2(a5) bclr #$06,Flags2(a5) movea.l a5,a1 - bsr.w LookupSpriteUnknownVal6F + bsr.w LookupSpriteAnimFlags bsr.w sub_19AC8 locret_16378: ; CODE XREF: ROM:00015C80j @@ -813,23 +813,23 @@ loc_1637A: ; CODE XREF: ROM:0001624Ej ; START OF FUNCTION CHUNK FOR sub_16220 loc_1638E: ; CODE XREF: sub_16220+18j - move.w #$0300,Action(a5) + move.w #$0300,QueuedAction(a5) addq.b #$01,Unk4D(a5) cmpi.b #$08,Unk4D(a5) bcs.w loc_16416 - move.w #$0400,Action(a5) + move.w #$0400,QueuedAction(a5) cmpi.b #$10,Unk4D(a5) bcs.w loc_16416 - move.w #$0500,Action(a5) + move.w #$0500,QueuedAction(a5) cmpi.b #$20,Unk4D(a5) bcs.w loc_16416 - move.w #$0400,Action(a5) + move.w #$0400,QueuedAction(a5) cmpi.b #$28,Unk4D(a5) bcs.w loc_16416 - move.w #$0300,Action(a5) + move.w #$0300,QueuedAction(a5) cmpi.b #$30,Unk4D(a5) bcs.w loc_16416 - move.w #$0200,Action(a5) + move.w #$0200,QueuedAction(a5) cmpi.b #$38,Unk4D(a5) bcs.w loc_16416 ori.b #$80,Flags2(a5) @@ -843,7 +843,7 @@ loc_1638E: ; CODE XREF: sub_16220+18j loc_16416: ; CODE XREF: sub_16220+17Ej ; sub_16220+18Ej ... - bset #$02,$00000038(a5) + bset #$02,Flags4(a5) ; Bit 0 = Invincible / Solid bra.w loc_1623E ; END OF FUNCTION CHUNK FOR sub_16220 @@ -862,17 +862,17 @@ sub_16420: ; DATA XREF: sub_1034Ct beq.w locret_164E4 movem.w d1,-(sp) lea (Player_X).l,a5 - bsr.w sub_165D0 + bsr.w CalculateEnemyDamageOutput bsr.w RemoveHealth movem.w (sp)+,d1 - tst.w $0000003E(a5) - beq.w loc_164EA + tst.w CurrentHealth(a5) + beq.w PlayerDeath btst #STATUS_PARALYSIS,(g_PlayerStatus).l beq.s loc_1648A - move.b (byte_FF114A).l,d0 - addq.b #$02,(byte_FF114A).l + move.b (g_ParalysisCheckCount).l,d0 + addq.b #$02,(g_ParalysisCheckCount).l ext.w d0 - move.w word_164AA(pc,d0.w),d6 + move.w ParalysisClearChance(pc,d0.w),d6 jsr (j_GenerateRandomNumber).l tst.w d7 bne.s loc_1648A @@ -891,7 +891,8 @@ loc_1648A: ; CODE XREF: sub_16420+44j or.b d0,(Player_RotationAndSize).l bra.s loc_164B8 ; --------------------------------------------------------------------------- -word_164AA: dc.w $0003 ; DATA XREF: sub_16420+54r +ParalysisClearChance: ; DATA XREF: sub_16420+54r + dc.w $0003 dc.w $0002 dc.w $0001 ; --------------------------------------------------------------------------- @@ -911,9 +912,10 @@ loc_164B8: ; CODE XREF: sub_16420+88j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_NigelHit1 @@ -931,7 +933,7 @@ DamageRecoilCmd:dc.b $07, $05, $06, $04 ; DATA XREF: sub_16420+9Ar ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_16602 -loc_164EA: ; CODE XREF: sub_16420+38j +PlayerDeath: ; CODE XREF: sub_16420+38j ; sub_16602+58j ; DATA XREF: ... clr.b (byte_FF1142).l @@ -987,7 +989,7 @@ locret_1657C: ; CODE XREF: sub_16420+11Aj ; =============== S U B R O U T I N E ======================================= -sub_1657E: ; CODE XREF: ROM:00015D9Ap +CalculatePlayerDamageOutput: ; CODE XREF: ROM:00015D9Ap ; ROM:00015E5Cp ... movem.w d1/d6-d7,-(sp) move.w d0,d1 @@ -998,10 +1000,10 @@ sub_1657E: ; CODE XREF: ROM:00015D9Ap cmpi.w #$0100,d0 bcc.s loc_1659A -loc_16596: ; CODE XREF: sub_1657E+10j +loc_16596: ; CODE XREF: CalculatePlayerDamageOutput+10j move.w #$0100,d0 -loc_1659A: ; CODE XREF: sub_1657E+16j +loc_1659A: ; CODE XREF: CalculatePlayerDamageOutput+16j move.w d0,d1 lsr.w #$08,d0 move.w #$0060,d6 @@ -1012,24 +1014,22 @@ loc_1659A: ; CODE XREF: sub_1657E+16j beq.s loc_165C2 ext.w d1 add.b d1,d1 - move.w locret_165C6(pc,d1.w),d1 + move.w (MagicSwordBoost-2)(pc,d1.w),d1 mulu.w d1,d0 divu.w #$0100,d0 -loc_165C2: ; CODE XREF: sub_1657E+34j +loc_165C2: ; CODE XREF: CalculatePlayerDamageOutput+34j movem.w (sp)+,d1/d6-d7 - -locret_165C6: ; DATA XREF: sub_1657E+3Ar rts -; End of function sub_1657E +; End of function CalculatePlayerDamageOutput ; --------------------------------------------------------------------------- -MagicSwordBoost:dc.w $01C0, $0180, $0200, $0140 +MagicSwordBoost:dc.w $01C0, $0180, $0200, $0140 ; DATA XREF: CalculatePlayerDamageOutput+3At ; =============== S U B R O U T I N E ======================================= -sub_165D0: ; CODE XREF: sub_16420+28p +CalculateEnemyDamageOutput: ; CODE XREF: sub_16420+28p movem.w d1/d6-d7,-(sp) moveq #$00000000,d0 move.w (Player_AttackStrength).l,d0 @@ -1044,10 +1044,10 @@ sub_165D0: ; CODE XREF: sub_16420+28p mulu.w d7,d0 add.w d1,d0 -loc_165FC: ; CODE XREF: sub_165D0+Cj +loc_165FC: ; CODE XREF: CalculateEnemyDamageOutput+Cj movem.w (sp)+,d1/d6-d7 rts -; End of function sub_165D0 +; End of function CalculateEnemyDamageOutput ; =============== S U B R O U T I N E ======================================= @@ -1069,9 +1069,10 @@ sub_16602: ; DATA XREF: sub_10380t ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$0F,d0 beq.s loc_1667C cmpi.b #$01,(g_PlayerSpeed+1).l @@ -1084,7 +1085,7 @@ sub_16602: ; DATA XREF: sub_10380t lea (Player_X).l,a5 bsr.w RemoveHealth tst.w (Player_CurrentHealth).l - beq.w loc_164EA + beq.w PlayerDeath lea (g_Pal0Active).l,a0 moveq #$0000000F,d7 @@ -1117,9 +1118,10 @@ loc_16696: ; CODE XREF: sub_16602+82j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$0F,d0 beq.s locret_166DE cmpi.b #$01,(g_PlayerSpeed+1).l diff --git a/code/gamelogic/gamefuncs.asm b/code/gamelogic/gamefuncs.asm index 0a9926b..6e0a81e 100644 --- a/code/gamelogic/gamefuncs.asm +++ b/code/gamelogic/gamefuncs.asm @@ -42,7 +42,7 @@ loc_177A4: ; CODE XREF: AddStatusEffect+2Ej loc_177B4: ; CODE XREF: AddStatusEffect+34j move.w #$04B0,(word_FF12E2).l - clr.b (byte_FF114A).l + clr.b (g_ParalysisCheckCount).l rts ; End of function AddStatusEffect @@ -85,7 +85,7 @@ AddGold: ; CODE XREF: ROM:00012F0Cp move.w #$FFFF,(g_Gold).l loc_177EC: ; CODE XREF: AddGold+6j - bsr.w UpdateGoldHUD + bsr.w RefreshGoldHUD rts ; End of function AddGold @@ -98,7 +98,7 @@ RemoveGold: ; CODE XREF: ROM:00012F56p cmp.w (g_Gold).l,d0 bhi.s loc_17808 sub.w d0,(g_Gold).l - bsr.w UpdateGoldHUD + bsr.w RefreshGoldHUD tst.b d0 rts ; --------------------------------------------------------------------------- @@ -202,7 +202,7 @@ loc_1788C: ; CODE XREF: IncrementSwordCharge+12j move.w #$3200,(g_SwordCharge_0).l loc_178AE: ; CODE XREF: IncrementSwordCharge+4Cj - bsr.w sub_16CC6 + bsr.w RefreshSwordChargeHUD locret_178B2: ; CODE XREF: IncrementSwordCharge+3Cj rts @@ -216,7 +216,7 @@ DecreaseSwordCharge: ; DATA XREF: j_DecreaseSwordCharget sub.w d0,(g_SwordCharge_0).l bpl.s locret_178C6 clr.w (g_SwordCharge_0).l - bsr.w sub_16CC6 + bsr.w RefreshSwordChargeHUD locret_178C6: ; CODE XREF: DecreaseSwordCharge+6j rts @@ -234,16 +234,16 @@ loc_178D0: ; CODE XREF: sub_178C8+28j move.b (a5),d0 bmi.s locret_178F4 movem.l d7/a5,-(sp) - tst.b $0000004C(a5) + tst.b InitFlags2(a5) bmi.s loc_178F6 cmpi.b #$7F,d0 beq.s loc_178E8 - bsr.w sub_178FE + bsr.w OnTick loc_178E8: ; CODE XREF: sub_178C8+1Aj ; sub_178C8+34j movem.l (sp)+,d7/a5 - lea $00000080(a5),a5 + lea SPRITE_SIZE(a5),a5 dbf d7,loc_178D0 locret_178F4: ; CODE XREF: sub_178C8+Aj diff --git a/code/gamelogic/gamelogic1.asm b/code/gamelogic/gamelogic1.asm index 3528f09..690ccfd 100644 --- a/code/gamelogic/gamelogic1.asm +++ b/code/gamelogic/gamelogic1.asm @@ -5,21 +5,21 @@ ResetGame: ; CODE XREF: ROM:000004D6j lea (ResetSP).w,sp jsr (j_DisplaySegaLogo).l jsr (j_DisplayTitle).l - bcc.w loc_4B8 + bcc.w ResetAll loc_16CA: ; CODE XREF: ROM:000004F8j - bsr.w sub_26E8 - bsr.w loc_8D84 + bsr.w LoadGame + bsr.w StartGame loc_16D2: ; CODE XREF: ROM:000016D6j - bsr.w sub_16DC + bsr.w GameLoop bcc.s loc_16D2 - bra.w loc_4DC + bra.w GameOver ; =============== S U B R O U T I N E ======================================= -sub_16DC: ; CODE XREF: ROM:loc_16D2p +GameLoop: ; CODE XREF: ROM:loc_16D2p bsr.w ProcessFloorType andi.w #$1000,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) @@ -27,15 +27,16 @@ sub_16DC: ; CODE XREF: ROM:loc_16D2p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bsr.w ProcessControlScript bsr.w CheckForMenuOpen bsr.w CheckForDebugButtons bsr.w CheckForDebugSaveGame bsr.w CheckForLadderClimb - bsr.w sub_66AC + bsr.w ProcessActionButton bsr.w HandleDirectionalInput jsr (sub_10348).l jsr (sub_10358).l @@ -48,9 +49,9 @@ sub_16DC: ; CODE XREF: ROM:loc_16D2p jsr (sub_103D8).l jsr (sub_1034C).l bsr.w sub_7274 - jsr (sub_10310).l + jsr (j_UpdateFrames).l jsr (sub_10350).l - jsr (sub_401C).l + jsr (LoadSprites).l jsr (sub_9DA2).l jsr (sub_10380).l jsr CheckAndDoLavaPaletteFx(pc) @@ -65,13 +66,13 @@ sub_16DC: ; CODE XREF: ROM:loc_16D2p jsr (sub_10384).l tst.b d0 rts -; End of function sub_16DC +; End of function GameLoop ; =============== S U B R O U T I N E ======================================= -ProcessControlScript: ; CODE XREF: sub_16DC+Cp +ProcessControlScript: ; CODE XREF: GameLoop+Cp move.w (g_ControllerPlayback).l,d0 beq.s loc_17C6 move.b (g_ControllerPlayback).l,(g_Controller1State).l @@ -117,7 +118,7 @@ loc_17E6: ; CODE XREF: ProcessControlScript+44j ; =============== S U B R O U T I N E ======================================= -sub_17EE: ; CODE XREF: sub_16DC+4Ap +sub_17EE: ; CODE XREF: GameLoop+4Ap ; FUNCTION CHUNK AT 0000192A SIZE 0000000C BYTES @@ -136,9 +137,10 @@ sub_17EE: ; CODE XREF: sub_16DC+4Ap ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.b Action1(a0),d1 move.b #$09,d0 lsr.b #$01,d1 @@ -159,9 +161,10 @@ sub_17EE: ; CODE XREF: sub_16DC+4Ap ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage locret_1856: ; CODE XREF: sub_17EE+6j ; sub_17EE+1Ej @@ -172,7 +175,7 @@ locret_1856: ; CODE XREF: sub_17EE+6j ; =============== S U B R O U T I N E ======================================= -sub_1858: ; CODE XREF: sub_16DC+46p +sub_1858: ; CODE XREF: GameLoop+46p ; FUNCTION CHUNK AT 00002242 SIZE 000001AE BYTES ; FUNCTION CHUNK AT 000023F2 SIZE 00000018 BYTES @@ -217,7 +220,7 @@ locret_18C2: ; CODE XREF: sub_1858+6j ; =============== S U B R O U T I N E ======================================= -HandleDirectionalInput: ; CODE XREF: sub_16DC+24p +HandleDirectionalInput: ; CODE XREF: GameLoop+24p bclr #$06,(g_PlayerStatus).l clr.w d0 bsr.w CheckForCollision @@ -291,9 +294,9 @@ HandleDirectionalControl: ; --------------------------------------------------------------------------- bra.w HandleRightButton ; RIGHT selected ; --------------------------------------------------------------------------- - bra.w HandleRightUp ; RIGHT + UP selected + bra.w HandleUpRight ; RIGHT + UP selected ; --------------------------------------------------------------------------- - bra.w HandleRightDown ; RIGHT + DOWN selected + bra.w HandleDownRight ; RIGHT + DOWN selected ; --------------------------------------------------------------------------- bra.w locret_19B6 ; RIGHT + UP + DOWN selected ; --------------------------------------------------------------------------- @@ -315,9 +318,9 @@ HandleDirectionalControl: ; --------------------------------------------------------------------------- bra.w HandleRightButton ; LEFT selected, confusion ; --------------------------------------------------------------------------- - bra.w HandleRightDown ; LEFT + UP selected, confusion + bra.w HandleDownRight ; LEFT + UP selected, confusion ; --------------------------------------------------------------------------- - bra.w HandleRightUp ; LEFT + DOWN selected, confusion + bra.w HandleUpRight ; LEFT + DOWN selected, confusion ; --------------------------------------------------------------------------- bra.w locret_19B6 ; LEFT + UP + DOWN selected, confusion ; --------------------------------------------------------------------------- @@ -348,14 +351,14 @@ HandleUpButton: ; CODE XREF: HandleDirectionalControl+4j tst.b (g_PlayerStatus).l bmi.s loc_19CE btst #$06,RotationAndSize(a5) - beq.w HandleRightUp ; Travel in the NE (-Y) direction + beq.w HandleUpRight ; Travel in the NE (-Y) direction bra.w HandleUpLeft ; Travel in the NW (-X) direction ; --------------------------------------------------------------------------- loc_19CE: ; CODE XREF: HandleDirectionalControl+88j btst #$06,RotationAndSize(a5) beq.w HandleUpLeft ; Travel in the NW (-X) direction - bra.w HandleRightUp ; Travel in the NE (-Y) direction + bra.w HandleUpRight ; Travel in the NE (-Y) direction ; --------------------------------------------------------------------------- HandleRightButton: ; CODE XREF: HandleDirectionalControl+20j @@ -363,14 +366,14 @@ HandleRightButton: ; CODE XREF: HandleDirectionalControl+20j tst.b (g_PlayerStatus).l bmi.s loc_19F2 btst #$06,RotationAndSize(a5) - beq.w HandleRightUp ; Travel in the NE (-Y) direction - bra.w HandleRightDown ; Travel in the SE (+X) direction + beq.w HandleUpRight ; Travel in the NE (-Y) direction + bra.w HandleDownRight ; Travel in the SE (+X) direction ; --------------------------------------------------------------------------- loc_19F2: ; CODE XREF: HandleDirectionalControl+ACj btst #$06,RotationAndSize(a5) - beq.w HandleRightDown ; Travel in the SE (+X) direction - bra.w HandleRightUp ; Travel in the NE (-Y) direction + beq.w HandleDownRight ; Travel in the SE (+X) direction + bra.w HandleUpRight ; Travel in the NE (-Y) direction ; --------------------------------------------------------------------------- HandleDownButton: ; CODE XREF: HandleDirectionalControl+8j @@ -379,12 +382,12 @@ HandleDownButton: ; CODE XREF: HandleDirectionalControl+8j bmi.s loc_1A16 btst #$06,RotationAndSize(a5) beq.w HandleDownLeft ; Travel in the SW (+Y) direction - bra.w HandleRightDown ; Travel in the SE (+X) direction + bra.w HandleDownRight ; Travel in the SE (+X) direction ; --------------------------------------------------------------------------- loc_1A16: ; CODE XREF: HandleDirectionalControl+D0j btst #$06,RotationAndSize(a5) - beq.w HandleRightDown ; Travel in the SE (+X) direction + beq.w HandleDownRight ; Travel in the SE (+X) direction bra.w HandleDownLeft ; Travel in the SW (+Y) direction ; --------------------------------------------------------------------------- @@ -403,7 +406,7 @@ loc_1A3A: ; CODE XREF: HandleDirectionalControl+F4j bra.w HandleDownLeft ; Travel in the SW (+Y) direction ; --------------------------------------------------------------------------- -HandleRightUp: ; CODE XREF: HandleDirectionalControl+24j +HandleUpRight: ; CODE XREF: HandleDirectionalControl+24j ; HandleDirectionalControl+58j ... tst.w (g_ControllerPlayback).l ; Travel in the NE (-Y) direction bne.s loc_1A58 @@ -427,9 +430,10 @@ loc_1A58: ; CODE XREF: HandleDirectionalControl+118j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage beq.s loc_1A98 btst #$04,GroundHeight(a0) bne.w loc_1B36 @@ -460,9 +464,10 @@ loc_1AC4: ; CODE XREF: HandleDirectionalControl+18Aj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s loc_1AE6 clr.w AnimationFrame(a5) move.b #$FF,Unk0D(a5) @@ -493,9 +498,10 @@ loc_1B0A: ; CODE XREF: HandleDirectionalControl+174j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.w #$0001,(g_PlayerSpeed).l andi.b #$3F,d5 cmpi.b #$0E,d5 @@ -503,7 +509,7 @@ loc_1B0A: ; CODE XREF: HandleDirectionalControl+174j cmp.b d0,d3 bcc.w HandleUpLeft ; Travel in the NW (-X) direction cmp.b d1,d3 - bcc.w HandleRightDown ; Travel in the SE (+X) direction + bcc.w HandleDownRight ; Travel in the SE (+X) direction bra.w loc_1C38 ; --------------------------------------------------------------------------- @@ -515,9 +521,10 @@ loc_1B36: ; CODE XREF: HandleDirectionalControl+142j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage clr.w d0 tst.b (byte_FF1142).l beq.s loc_1B4E @@ -617,9 +624,10 @@ loc_1C38: ; CODE XREF: HandleDirectionalControl+1ECj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s locret_1C5A andi.b #$3F,(Player_RotationAndSize).l bset #$00,(Player_Action+1).l ; Bit0 - Walk NE (-Y) @@ -628,16 +636,17 @@ loc_1C38: ; CODE XREF: HandleDirectionalControl+1ECj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bset #$00,(Player_Unk6D).l locret_1C5A: ; CODE XREF: HandleDirectionalControl+30Aj rts ; --------------------------------------------------------------------------- -HandleRightDown: ; CODE XREF: HandleDirectionalControl+28j +HandleDownRight: ; CODE XREF: HandleDirectionalControl+28j ; HandleDirectionalControl+54j ... tst.w (g_ControllerPlayback).l ; Travel in the SE (+X) direction bne.s loc_1C6C @@ -650,9 +659,10 @@ loc_1C6C: ; CODE XREF: HandleDirectionalControl+32Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.w HitBoxXEnd(a5),d1 move.w (g_PlayerSpeed).l,d0 add.w d0,HitBoxXStart(a5) @@ -670,9 +680,10 @@ loc_1C6C: ; CODE XREF: HandleDirectionalControl+32Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage beq.s loc_1CB0 btst #$04,GroundHeight(a0) bne.w loc_1CD6 @@ -684,7 +695,7 @@ loc_1CB0: ; CODE XREF: HandleDirectionalControl+36Ej cmpi.b #$0E,d5 beq.w loc_1DC6 cmp.b d0,d3 - bcc.w HandleRightUp ; Travel in the NE (-Y) direction + bcc.w HandleUpRight ; Travel in the NE (-Y) direction cmp.b d1,d3 bcc.w HandleDownLeft ; Travel in the SW (+Y) direction bra.w loc_1DC6 @@ -789,9 +800,10 @@ loc_1DC6: ; CODE XREF: HandleDirectionalControl+38Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s locret_1DF0 andi.b #$3F,(Player_RotationAndSize).l ori.b #$40,(Player_RotationAndSize).l @@ -801,9 +813,10 @@ loc_1DC6: ; CODE XREF: HandleDirectionalControl+38Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bset #$03,(Player_Unk6D).l locret_1DF0: ; CODE XREF: HandleDirectionalControl+498j @@ -823,9 +836,10 @@ loc_1E02: ; CODE XREF: HandleDirectionalControl+4C2j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.w HitBoxYEnd(a5),d1 move.w (g_PlayerSpeed).l,d0 add.w d0,HitBoxYStart(a5) @@ -845,7 +859,7 @@ loc_1E02: ; CODE XREF: HandleDirectionalControl+4C2j cmp.b d0,d3 bcc.w HandleUpLeft ; Travel in the NW (-X) direction cmp.b d1,d3 - bcc.w HandleRightDown ; Travel in the SE (+X) direction + bcc.w HandleDownRight ; Travel in the SE (+X) direction bra.w loc_1F50 ; --------------------------------------------------------------------------- @@ -949,9 +963,10 @@ loc_1F50: ; CODE XREF: HandleDirectionalControl+50Ej ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s locret_1F7A andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l @@ -961,9 +976,10 @@ loc_1F50: ; CODE XREF: HandleDirectionalControl+50Ej ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bset #$01,(Player_Unk6D).l locret_1F7A: ; CODE XREF: HandleDirectionalControl+622j @@ -1013,9 +1029,10 @@ loc_1FE4: ; CODE XREF: HandleDirectionalControl+6AAj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s loc_2006 clr.w AnimationFrame(a5) move.b #$FF,Unk0D(a5) @@ -1048,15 +1065,16 @@ loc_202A: ; CODE XREF: HandleDirectionalControl+694j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.w #$0001,(g_PlayerSpeed).l andi.b #$3F,d5 cmpi.b #$0E,d5 beq.w loc_2154 cmp.b d0,d3 - bcc.w HandleRightUp ; Travel in the NE (-Y) direction + bcc.w HandleUpRight ; Travel in the NE (-Y) direction cmp.b d1,d3 bcc.w HandleDownLeft ; Travel in the SW (+Y) direction bra.w loc_2154 @@ -1070,9 +1088,10 @@ loc_2056: ; CODE XREF: HandleDirectionalControl+676j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage clr.w d0 tst.b (byte_FF1142).l beq.s loc_206E @@ -1171,9 +1190,10 @@ loc_2154: ; CODE XREF: HandleDirectionalControl+70Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s locret_2176 ori.b #$C0,(Player_RotationAndSize).l bset #$02,(Player_Action+1).l ; Bit0 - Walk NE (-Y) @@ -1182,9 +1202,10 @@ loc_2154: ; CODE XREF: HandleDirectionalControl+70Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bset #$02,(Player_Unk6D).l locret_2176: ; CODE XREF: HandleDirectionalControl+826j @@ -1194,7 +1215,7 @@ locret_2176: ; CODE XREF: HandleDirectionalControl+826j ; =============== S U B R O U T I N E ======================================= -CheckForLadderClimb: ; CODE XREF: sub_16DC+1Cp +CheckForLadderClimb: ; CODE XREF: GameLoop+1Cp move.b (g_Controller1State).l,d1 and.b d1,(g_LadderClimbJumpState).l btst #$04,(Player_Action).l ; Bit0 - Walk NE (-Y) @@ -1203,9 +1224,10 @@ CheckForLadderClimb: ; CODE XREF: sub_16DC+1Cp ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.s locret_21AC bsr.s sub_21AE tst.b d7 @@ -1255,9 +1277,10 @@ sub_21B6: ; CODE XREF: CheckForLadderClimb:loc_21A4p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage locret_21DC: ; CODE XREF: sub_21B6+1Cj rts @@ -1267,7 +1290,7 @@ locret_21DC: ; CODE XREF: sub_21B6+1Cj ; =============== S U B R O U T I N E ======================================= -sub_21DE: ; CODE XREF: sub_16DC+38p +sub_21DE: ; CODE XREF: GameLoop+38p lea (Sprite1_X).l,a0 moveq #$0000000E,d7 @@ -1276,13 +1299,13 @@ loc_21E6: ; CODE XREF: sub_21DE+4Ej bne.s loc_21FC tst.b Unk4D(a0) beq.s loc_21FC - andi.w #$6700,Action(a0) + andi.w #$6700,QueuedAction(a0) bra.s loc_2202 ; --------------------------------------------------------------------------- loc_21FC: ; CODE XREF: sub_21DE+Ej ; sub_21DE+14j - andi.w #$6000,Action(a0) + andi.w #$6000,QueuedAction(a0) loc_2202: ; CODE XREF: sub_21DE+1Cj move.b (a0),d0 @@ -1579,7 +1602,7 @@ sub_247E: ; CODE XREF: HandleDirectionalControl+616p sub_249A: ; CODE XREF: sub_404j - ; sub_16DC+8Ep + ; GameLoop+8Ep tst.b (g_PlayerMoving).l beq.s locret_24F2 clr.b (g_PlayerMoving).l @@ -1605,7 +1628,7 @@ locret_24F2: ; CODE XREF: sub_249A+6j ; =============== S U B R O U T I N E ======================================= -sub_24F4: ; CODE XREF: sub_16DC+34p +sub_24F4: ; CODE XREF: GameLoop+34p lea (Player_X).l,a5 moveq #$0000000F,d7 @@ -1636,7 +1659,7 @@ loc_2520: ; CODE XREF: sub_24F4+1Ej bmi.s locret_253E cmpi.b #$7F,d0 beq.s loc_250A - tst.w Unk2A(a5) + tst.w BehavParam(a5) bne.s loc_24FC btst #$05,Flags2(a5) beq.s loc_250A @@ -1651,7 +1674,7 @@ locret_253E: ; CODE XREF: sub_24F4+32j ; =============== S U B R O U T I N E ======================================= -sub_2540: ; CODE XREF: sub_16DC+42p +sub_2540: ; CODE XREF: GameLoop+42p lea (Player_X).l,a5 moveq #$0000000F,d7 diff --git a/code/gamelogic/gamelogic2.asm b/code/gamelogic/gamelogic2.asm index 49d02a1..72eb06b 100644 --- a/code/gamelogic/gamelogic2.asm +++ b/code/gamelogic/gamelogic2.asm @@ -31,7 +31,7 @@ sub_2DCE: ; CODE XREF: LoadRoom_0+40p ; --------------------------------------------------------------------------- -CheckForDebugButtons: ; CODE XREF: sub_16DC+14p +CheckForDebugButtons: ; CODE XREF: GameLoop+14p tst.w (DebugModeEnable).w bmi.w locret_2F24 tst.b (g_Flags+8).l @@ -124,7 +124,7 @@ locret_2F0A: ; CODE XREF: sub_2F00j ; =============== S U B R O U T I N E ======================================= -CheckForDebugSaveGame: ; CODE XREF: sub_16DC+18p +CheckForDebugSaveGame: ; CODE XREF: GameLoop+18p ; FUNCTION CHUNK AT 00002EB8 SIZE 00000048 BYTES @@ -143,7 +143,7 @@ locret_2F24: ; CODE XREF: ROM:00002E32j ; =============== S U B R O U T I N E ======================================= -LoadGameSelectScreen: ; CODE XREF: sub_26E8+8p +LoadGameSelectScreen: ; CODE XREF: LoadGame+8p bsr.s CheckRAM move.b (g_SaveSlot).l,d0 jsr (InitGameSelectScreen).l @@ -201,7 +201,7 @@ CollisionDetect: ; CODE XREF: j_CollisionDetectj loc_2F98: ; CODE XREF: CollisionDetect+6Ej cmp.w d7,d0 beq.s loc_2FD8 - tst.w (a0) + tst.w X(a0) bmi.s loc_2FE6 ; End of sprites cmp.w HitBoxXEnd(a0),d1 bhi.s loc_2FD8 @@ -332,7 +332,7 @@ loc_308A: ; CODE XREF: sub_3058+70j ; --------------------------------------------------------------------------- loc_30BC: ; CODE XREF: sub_3058+30j - cmpi.w #$0001,InitFlags4(a0) + cmpi.w #$0001,InitFlags4_DropProbability(a0) bne.s loc_30CA tst.b GoldOrChestContents(a0) beq.s loc_308A @@ -561,7 +561,7 @@ sub_324C: ; CODE XREF: sub_21AEp sub_3252: ; CODE XREF: sub_2232p - move.w Player_Z-Player_X(a0),d6 + move.w Z(a0),d6 bsr.s TestForFalling sub.w Z(a0),d6 beq.s locret_3264 @@ -808,7 +808,7 @@ loc_3444: ; CODE XREF: sub_33EA+22j sub_3456: ; CODE XREF: sub_3BCj - ; sub_66AC+18Cp ... + ; ProcessActionButton+18Cp ... movem.l a5,-(sp) move.l a5,d0 subi.l #Player_X,d0 diff --git a/code/gamelogic/gamelogic3.asm b/code/gamelogic/gamelogic3.asm index 902dd77..9209d48 100644 --- a/code/gamelogic/gamelogic3.asm +++ b/code/gamelogic/gamelogic3.asm @@ -61,21 +61,21 @@ JumpAcceleration:dc.b $04, $04, $03, $03, $03, $02, $02, $02 ; =============== S U B R O U T I N E ======================================= -sub_401C: ; CODE XREF: sub_3F8j - ; sub_16DC+6Ap ... +LoadSprites: ; CODE XREF: j_LoadSpritesj + ; GameLoop+6Ap ... move.l (loc_403C,pc),(JumpInstr2).l move.w ((loc_403C+4),pc),(JumpInstr2+4).l - bsr.s sub_40A4 + bsr.s ResetVdpSprites bsr.w sub_40F2 bsr.w sub_4980 - bsr.w sub_41F6 + bsr.w LoadSpriteFrames rts -; End of function sub_401C +; End of function LoadSprites ; --------------------------------------------------------------------------- -loc_403C: ; DATA XREF: sub_401Ct - ; sub_401C+8t +loc_403C: ; DATA XREF: LoadSpritest + ; LoadSprites+8t jmp (loc_433E).l ; =============== S U B R O U T I N E ======================================= @@ -87,7 +87,7 @@ sub_4042: ; CODE XREF: LoadRoom_0+54p move.w ((j_QueueDMAOp_0+4),pc),(JmpInstr1+4).l move.l (loc_409E,pc),(JumpInstr2).l move.w ((loc_409E+4),pc),(JumpInstr2+4).l - bsr.s sub_40A4 + bsr.s ResetVdpSprites lea (Player_X).l,a0 lea (unk_FF11DE).l,a1 clr.w d0 @@ -115,14 +115,14 @@ loc_409E: ; DATA XREF: sub_4042+10t ; =============== S U B R O U T I N E ======================================= -sub_40A4: ; CODE XREF: sub_401C+10p +ResetVdpSprites: ; CODE XREF: LoadSprites+10p ; sub_4042+20p lea (g_VDPSpr16_Y).l,a2 moveq #$00000007,d7 moveq #$00000000,d0 move.l #$000000FF,d1 -loc_40B4: ; CODE XREF: sub_40A4+30j +loc_40B4: ; CODE XREF: ResetVdpSprites+30j and.l d1,(a2)+ move.l d0,(a2)+ and.l d1,(a2)+ @@ -151,13 +151,13 @@ loc_40B4: ; CODE XREF: sub_40A4+30j move.l d0,(a2)+ move.l d0,(a2)+ rts -; End of function sub_40A4 +; End of function ResetVdpSprites ; =============== S U B R O U T I N E ======================================= -sub_40F2: ; CODE XREF: sub_401C+12p +sub_40F2: ; CODE XREF: LoadSprites+12p lea (unk_FF11DE).l,a2 lea (Player_X).l,a6 clr.w d6 @@ -260,10 +260,10 @@ loc_41EE: ; CODE XREF: sub_4144+A4j ; =============== S U B R O U T I N E ======================================= -sub_41F6: ; CODE XREF: sub_401C+1Ap - bsr.s sub_4214 +LoadSpriteFrames: ; CODE XREF: LoadSprites+1Ap + bsr.s InitSpriteLoad -loc_41F8: ; CODE XREF: sub_41F6:loc_420Ej +loc_41F8: ; CODE XREF: LoadSpriteFrames:loc_420Ej move.w (a3)+,d0 bmi.s locret_4212 lea (Player_X).l,a1 @@ -272,40 +272,40 @@ loc_41F8: ; CODE XREF: sub_41F6:loc_420Ej bne.s loc_420E bsr.s LoadSpriteFrame -loc_420E: ; CODE XREF: sub_41F6+14j +loc_420E: ; CODE XREF: LoadSpriteFrames+14j dbf d7,loc_41F8 -locret_4212: ; CODE XREF: sub_41F6+4j +locret_4212: ; CODE XREF: LoadSpriteFrames+4j rts -; End of function sub_41F6 +; End of function LoadSpriteFrames ; =============== S U B R O U T I N E ======================================= -sub_4214: ; CODE XREF: sub_41F6p +InitSpriteLoad: ; CODE XREF: LoadSpriteFramesp ; sub_4266p lea (g_VDPSpr16_Y).l,a2 lea (unk_FF11DE).l,a3 lea (SpriteGfxPtrPtr).l,a4 - move.w #$03A8,d2 - moveq #$0000000F,d7 + move.w #$03A8,d2 ; VDP RAM Begin + moveq #$0000000F,d7 ; EntityCount clr.b d6 rts -; End of function sub_4214 +; End of function InitSpriteLoad ; =============== S U B R O U T I N E ======================================= -LoadSpriteFrame: ; CODE XREF: sub_41F6+16p +LoadSpriteFrame: ; CODE XREF: LoadSpriteFrames+16p ; sub_4266+Ep movea.l (a4),a0 moveq #$00000000,d0 move.b SpriteGraphic(a1),d0 lsl.w #$02,d0 - move.w TileSource(a4,d0.w),d1 - move.w RotationAndSize(a4,d0.w),d0 + move.w $00000006(a4,d0.w),d1 + move.w $00000004(a4,d0.w),d0 lsl.w #$02,d0 adda.l d0,a0 move.w AnimationIndex(a1),d0 @@ -323,7 +323,7 @@ LoadSpriteFrame: ; CODE XREF: sub_41F6+16p sub_4266: ; CODE XREF: sub_4042+46p - bsr.s sub_4214 + bsr.s InitSpriteLoad loc_4268: ; CODE XREF: sub_4266+10j move.w (a3)+,d0 @@ -379,7 +379,7 @@ loc_42BE: ; CODE XREF: ROM:000042A8j loc_42DC: ; CODE XREF: ROM:000042D4j bsr.w sub_4374 movem.w (sp)+,d2/d6 - cmpi.w #$03FF,d2 + cmpi.w #$03FF,d2 ; Flush every 87 tiles bcs.s loc_4318 bset #$03,d6 bne.s loc_42F6 @@ -474,7 +474,7 @@ sub_4374: ; CODE XREF: ROM:loc_42DCp loc_437A: ; CODE XREF: ROM:loc_436Ap movem.l a3-a6,-(sp) - bclr #$06,Action(a1) + bclr #$06,QueuedAction(a1) bne.s loc_43B2 btst #$06,Flags1(a1) bne.s loc_43B2 @@ -515,7 +515,7 @@ loc_43D8: ; CODE XREF: sub_4374+42j andi.b #$0F,d1 beq.s loc_4420 movem.l d0/a1-a3,-(sp) - jsr (sub_10354).l + jsr (j_LoadStatusGfx).l movem.l (sp)+,d0/a1-a3 move.w Unk10(a1),d1 subi.w #$0040,d1 @@ -755,8 +755,8 @@ sub_45DE: ; CODE XREF: ROM:000042C6p lsr.w #$01,d1 movea.l d1,a3 adda.l #unk_FF1400,a3 - move.w $00000006(a1),d0 - move.b $00000006(a1),d6 + move.w TileSource(a1),d0 + move.b TileSource(a1),d6 andi.b #$08,d6 bsr.s LoadObjectVDPSprites move.w #$FFFF,(a3) @@ -831,12 +831,12 @@ LoadSpriteGfx: ; CODE XREF: sub_F13A+40p move.w ((j_QueueDMAOp_0+4),pc),(JmpInstr1+4).l lea (SpriteGfxPtrPtr).l,a4 movea.l (a4),a0 - lsl.w #$02,d0 + lsl.w #$02,d0 ; Sprite move.w $00000004(a4,d0.w),d0 lsl.w #$02,d0 adda.l d0,a0 - movea.l (a0,d2.w),a0 - movea.l (a0,d3.w),a0 + movea.l (a0,d2.w),a0 ; Animation + movea.l (a0,d3.w),a0 ; Frame movem.w d1,-(sp) move.w d1,d0 movem.l d4-d5/a3,-(sp) @@ -974,7 +974,7 @@ Zeros: dcb.w $F0,$0000 ; DATA XREF: LoadSpriteTiles:loc_476Et ; =============== S U B R O U T I N E ======================================= -sub_4980: ; CODE XREF: sub_401C+16p +sub_4980: ; CODE XREF: LoadSprites+16p bra.w loc_49BA ; --------------------------------------------------------------------------- lea (Player_X).l,a0 @@ -1266,13 +1266,13 @@ loc_4B4C: ; CODE XREF: sub_4B14+8j ; =============== S U B R O U T I N E ======================================= -sub_4B52: ; CODE XREF: sub_40Aj +DoTileSwap: ; CODE XREF: j_DoTileSwapj ; sub_4FA8+38p ... move.b (byte_FF1128).l,(byte_FF115A).l clr.b (byte_FF1128).l movem.w d0,-(sp) - bsr.w sub_4EC6 - bsr.w sub_4DBC + bsr.w LoadTileSwap + bsr.w GetMapOffsets move.b (a0)+,d0 move.b (a0)+,d1 move.b (a0)+,d6 @@ -1284,18 +1284,18 @@ sub_4B52: ; CODE XREF: sub_40Aj movem.l a0,-(sp) bsr.s sub_4BA0 movem.l (sp)+,a0 - bsr.w sub_4EAE + bsr.w HMTileSwap movem.w (sp)+,d0 - bsr.w sub_4E94 + bsr.w MapTileSwap move.b (byte_FF115A).l,(byte_FF1128).l rts -; End of function sub_4B52 +; End of function DoTileSwap ; =============== S U B R O U T I N E ======================================= -sub_4BA0: ; CODE XREF: sub_4B52+30p +sub_4BA0: ; CODE XREF: DoTileSwap+30p cmpi.b #$01,$00000009(a0) beq.s loc_4BF2 bhi.w loc_4C40 @@ -1558,45 +1558,49 @@ loc_4DB2: ; CODE XREF: sub_4CF4+2Cj ; =============== S U B R O U T I N E ======================================= -sub_4DBC: ; CODE XREF: sub_4B52+18p - ; sub_4E94+2p ... +GetMapOffsets: ; CODE XREF: DoTileSwap+18p + ; MapTileSwap+2p ... move.b (a0)+,d0 move.b (a0)+,d1 ext.w d0 ext.w d1 - bsr.s sub_4DEC - lea (g_BackgroundBlocks).l,a1 - lea (g_ForegroundBlocks).l,a2 + bsr.s GetMapCoordOffset ; d0 = X + ; d1 = Y + lea (g_ForegroundBlocks).l,a1 + lea (g_BackgroundBlocks).l,a2 adda.w d1,a1 adda.w d1,a2 rts -; End of function sub_4DBC +; End of function GetMapOffsets ; =============== S U B R O U T I N E ======================================= -sub_4DD8: ; CODE XREF: sub_4EAEp - ; sub_4EAE+6p +GetHeightmapCoordOffset: ; CODE XREF: HMTileSwapp + ; HMTileSwap+6p move.b (a0)+,d0 move.b (a0)+,d1 ext.w d0 ext.w d1 - bsr.s sub_4DEC + bsr.s GetMapCoordOffset ; d0 = X + ; d1 = Y lea (g_HeightMap).l,a1 adda.w d1,a1 rts -; End of function sub_4DD8 +; End of function GetHeightmapCoordOffset ; =============== S U B R O U T I N E ======================================= +; d0 = X +; d1 = Y -sub_4DEC: ; CODE XREF: sub_4DBC+8p - ; sub_4DD8+8p +GetMapCoordOffset: ; CODE XREF: GetMapOffsets+8p + ; GetHeightmapCoordOffset+8p bsr.w MultiplyD1By148 add.w d0,d1 add.w d0,d1 rts -; End of function sub_4DEC +; End of function GetMapCoordOffset diff --git a/code/gamelogic/gamelogic4.asm b/code/gamelogic/gamelogic4.asm index d6d32d3..12fa23d 100644 --- a/code/gamelogic/gamelogic4.asm +++ b/code/gamelogic/gamelogic4.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -ProcessFloorType: ; CODE XREF: sub_16DCp +ProcessFloorType: ; CODE XREF: GameLoopp move.b (Player_GroundType).l,d0 andi.w #$003F,d0 lsl.b #$02,d0 @@ -213,7 +213,7 @@ sub_620A: ; CODE XREF: sub_620A-8p dc.w SND_Door ; --------------------------------------------------------------------------- -loc_620E: ; CODE XREF: sub_3ECj +WarpToRoom: ; CODE XREF: j_WarpToRoomj ; sub_620A+3Aj ... bsr.w FadeOutToDarkness @@ -230,7 +230,7 @@ TransitionToNewRoom: ; CODE XREF: j_TransitionToNewRoomj move.b #$FF,(g_SecBlockset).l move.b #$FF,(g_CurrentTileset).l move.b #$FF,(g_CurPalIdx).l - bra.s loc_620E + bra.s WarpToRoom ; --------------------------------------------------------------------------- HandleFloorStairs: ; CODE XREF: sub_604C+14j @@ -315,7 +315,7 @@ loc_62EA: ; CODE XREF: sub_620A+DCj bsr.w sub_A0C2 clr.b d0 bsr.w LoadRoom_0 - bsr.w sub_8EA0 + bsr.w InitVDP moveq #$00000008,d0 bsr.w DoVisualEffect ; 0,1 - Warp-pad transition ; 2,3 - Tree warp transition @@ -334,7 +334,7 @@ loc_6310: ; CODE XREF: sub_620A+E8j ; --------------------------------------------------------------------------- dc.w SND_WarpPad ; --------------------------------------------------------------------------- - bsr.w sub_E154 + bsr.w WarpPadFx bsr.w sub_A0C2 clr.b d0 bsr.w LoadRoom_0 @@ -353,7 +353,7 @@ loc_6330: ; CODE XREF: sub_620A+10Ej bsr.w sub_A0C2 clr.b d0 bsr.w LoadRoom_0 - bsr.w sub_8EA0 + bsr.w InitVDP moveq #$00000003,d0 bra.w DoVisualEffect ; 0,1 - Warp-pad transition ; 2,3 - Tree warp transition @@ -478,7 +478,7 @@ locret_6480: ; CODE XREF: sub_620A+244j ; --------------------------------------------------------------------------- HandleNoleStaircase: ; CODE XREF: sub_604C+A0j - lea ($00FF5400).l,a0 + lea (Player_X).l,a0 move.b Player_RotationAndSize-Player_X(a0),d0 andi.b #$C0,d0 beq.w loc_651A @@ -651,7 +651,7 @@ locret_66AA: ; CODE XREF: sub_620A+49Aj ; =============== S U B R O U T I N E ======================================= -sub_66AC: ; CODE XREF: sub_16DC+20p +ProcessActionButton: ; CODE XREF: GameLoop+20p ; FUNCTION CHUNK AT 0000674E SIZE 0000012A BYTES ; FUNCTION CHUNK AT 00006880 SIZE 0000006E BYTES @@ -665,9 +665,10 @@ sub_66AC: ; CODE XREF: sub_16DC+20p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.w UpdateSwordCharge move.b (g_Controller1State).l,d1 and.b d1,(g_SwordButtonMask).l @@ -684,13 +685,13 @@ sub_66AC: ; CODE XREF: sub_16DC+20p ; Bit 1: Can't attack ; Bit 2: Can't open menu bne.s loc_66FE - bsr.w sub_6CB0 + bsr.w CheckPickUpEntity bcs.s UpdateSwordCharge -loc_66FE: ; CODE XREF: sub_66AC+4Aj - bsr.w sub_7052 +loc_66FE: ; CODE XREF: ProcessActionButton+4Aj + bsr.w CheckOpenChest bcs.s UpdateSwordCharge - bsr.w sub_6E20 + bsr.w CheckTalk bcs.s UpdateSwordCharge btst #STATUS_CURSE,(g_PlayerStatus).l ; Curse bne.s UpdateSwordCharge @@ -698,7 +699,7 @@ loc_66FE: ; CODE XREF: sub_66AC+4Aj ; Bit 1: Can't attack ; Bit 2: Can't open menu bne.s UpdateSwordCharge - bsr.w sub_6ABA + bsr.w SwordSwing tst.w (g_GoldenStatueTimer).l bne.s locret_673C tst.b (g_EquippedSword).l @@ -706,113 +707,119 @@ loc_66FE: ; CODE XREF: sub_66AC+4Aj move.w #$6400,d0 jsr (j_DecreaseSwordCharge).l -locret_673C: ; CODE XREF: sub_66AC+7Cj +locret_673C: ; CODE XREF: ProcessActionButton+7Cj rts -; End of function sub_66AC +; End of function ProcessActionButton ; =============== S U B R O U T I N E ======================================= -UpdateSwordCharge: ; CODE XREF: sub_66AC+8j - ; sub_66AC+32j ... +UpdateSwordCharge: ; CODE XREF: ProcessActionButton+8j + ; ProcessActionButton+32j ... tst.b (g_EquippedSword).l beq.s locret_674C jsr (j_IncrementSwordCharge).l -locret_674C: ; CODE XREF: sub_66AC+84j +locret_674C: ; CODE XREF: ProcessActionButton+84j ; UpdateSwordCharge+6j rts ; End of function UpdateSwordCharge ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_66AC +; START OF FUNCTION CHUNK FOR ProcessActionButton -loc_674E: ; CODE XREF: sub_66AC+1Ej +loc_674E: ; CODE XREF: ProcessActionButton+1Ej movem.w d0,-(sp) bsr.s UpdateSwordCharge movem.w (sp)+,d0 lea (Player_X).l,a1 - move.w (word_FF120C).l,d1 + move.w (g_CarriedEntity).l,d1 cmpi.b #$7F,(a1,d1.w) beq.w loc_69EE addq.b #$01,d0 move.b d0,(byte_FF1133).l cmpi.b #$02,d0 bne.s loc_6782 - bset #$05,$00000008(a1,d1.w) + bset #$05,Flags1(a1,d1.w) -loc_6782: ; CODE XREF: sub_66AC+CEj +loc_6782: ; CODE XREF: ProcessActionButton+CEj andi.w #$FF3F,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0040,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$08,d0 bcs.w loc_69FA bne.s loc_67B0 move.w (Player_Z).l,d2 addi.w #$0018,d2 - move.w d2,$00000012(a1,d1.w) - ori.b #$80,$00000020(a1,d1.w) + move.w d2,Z(a1,d1.w) + ori.b #$80,FallRate(a1,d1.w) -loc_67B0: ; CODE XREF: sub_66AC+EEj +loc_67B0: ; CODE XREF: ProcessActionButton+EEj andi.w #$FF3F,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0080,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$10,d0 bcs.w loc_69FA bne.s loc_67D6 - bset #$06,$00000008(a1,d1.w) - bclr #$05,$00000008(a1,d1.w) + bset #$06,Flags1(a1,d1.w) + bclr #$05,Flags1(a1,d1.w) -loc_67D6: ; CODE XREF: sub_66AC+11Cj +loc_67D6: ; CODE XREF: ProcessActionButton+11Cj andi.w #$FF3F,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$00C0,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$18,d0 bcs.w loc_69FA bhi.w loc_6962 @@ -829,25 +836,26 @@ loc_67D6: ; CODE XREF: sub_66AC+11Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$30,d0 beq.s loc_6880 adda.w d1,a1 movea.l a1,a5 - addi.w #$0020,$00000012(a5) - addi.w #$0020,$00000054(a5) + addi.w #$0020,Z(a5) + addi.w #$0020,HitBoxZEnd(a5) movem.l d0,-(sp) bsr.w sub_3456 movem.l (sp)+,d0 bcc.s loc_6850 - subi.w #$0020,$00000012(a5) - subi.w #$0020,$00000054(a5) + subi.w #$0020,Z(a5) + subi.w #$0020,HitBoxZEnd(a5) rts ; --------------------------------------------------------------------------- -loc_6850: ; CODE XREF: sub_66AC+194j +loc_6850: ; CODE XREF: ProcessActionButton+194j andi.b #$20,d0 move.w #$0010,(word_FF12E0).l addq.b #$01,(byte_FF1133).l @@ -856,73 +864,73 @@ loc_6850: ; CODE XREF: sub_66AC+194j beq.s locret_6876 move.b #$17,(word_FF12E0).l -locret_6876: ; CODE XREF: sub_66AC+1C0j +locret_6876: ; CODE XREF: ProcessActionButton+1C0j rts -; END OF FUNCTION CHUNK FOR sub_66AC +; END OF FUNCTION CHUNK FOR ProcessActionButton ; --------------------------------------------------------------------------- OffsetTbl: dc.w -$0094 ; Up dc.w $0002 ; Left dc.w $0094 ; Down dc.w -$0002 ; Right ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_66AC +; START OF FUNCTION CHUNK FOR ProcessActionButton -loc_6880: ; CODE XREF: sub_66AC+176j +loc_6880: ; CODE XREF: ProcessActionButton+176j bsr.w sub_6A0C move.w (Player_HitBoxZEnd).l,d0 clr.w d2 - move.b $00000005(a1,d1.w),d2 + move.b Height(a1,d1.w),d2 sub.w d2,d0 move.w d0,(Player_HitBoxZEnd).l - bclr #$06,$00000008(a1,d1.w) - bclr #$07,$00000020(a1,d1.w) - bset #$06,$0000002C(a1,d1.w) + bclr #$06,Flags1(a1,d1.w) + bclr #$07,FallRate(a1,d1.w) + bset #$06,QueuedAction(a1,d1.w) move.b (Player_RotationAndSize).l,d0 andi.b #$C0,d0 lsr.b #$05,d0 andi.w #$0006,d0 move.w OffsetTbl(pc,d0.w),d0 - add.w d0,$00000028(a1,d1.w) + add.w d0,HeightmapOffset(a1,d1.w) move.l #RAM_Start,d0 - move.w $00000028(a1,d1.w),d0 + move.w HeightmapOffset(a1,d1.w),d0 movea.l d0,a0 - move.w (a0),$00000022(a1,d1.w) + move.w (a0),GroundHeight(a1,d1.w) move.b (a0),d0 lsl.b #$04,d0 - move.b d0,$00000039(a1,d1.w) - btst #$03,(g_Vars+7).l + move.b d0,FloorHeight(a1,d1.w) + btst #$03,(g_AdditionalFlags+7).l bne.s loc_68E8 trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_NigelDropObj1 ; --------------------------------------------------------------------------- -loc_68E8: ; CODE XREF: sub_66AC+236j +loc_68E8: ; CODE XREF: ProcessActionButton+236j addq.b #$01,(byte_FF1133).l -; END OF FUNCTION CHUNK FOR sub_66AC +; END OF FUNCTION CHUNK FOR ProcessActionButton andi.b #$60,(g_Controller1State).l clr.w (word_FF12E0).l move.w (Player_SpriteUnderneath).l,d0 bmi.s locret_6960 lea (Player_X).l,a0 adda.w d0,a0 - move.b $0000002D(a0),d0 + move.b Action1(a0),d0 andi.b #$0F,d0 beq.s locret_6960 - move.b $00000009(a0),d0 + move.b Speed(a0),d0 andi.w #$000F,d0 - move.b d0,$00000009(a1,d1.w) - move.b $00000004(a0),d0 + move.b d0,Speed(a1,d1.w) + move.b RotationAndSize(a0),d0 andi.b #$C0,d0 - andi.b #$3F,$00000004(a1,d1.w) - or.b d0,$00000004(a1,d1.w) + andi.b #$3F,RotationAndSize(a1,d1.w) + or.b d0,RotationAndSize(a1,d1.w) move.w #$0016,d2 - cmpi.b #$2E,$0000002B(a1,d1.w) + cmpi.b #$2E,BehavCmd(a1,d1.w) bne.s loc_6944 move.w #$0032,d2 loc_6944: ; CODE XREF: ROM:0000693Ej - move.w d2,$0000002A(a1,d1.w) + move.w d2,BehavParam(a1,d1.w) move.b (Player_RotationAndSize).l,d2 andi.b #$C0,d2 eori.b #$80,d2 @@ -934,109 +942,113 @@ locret_6960: ; CODE XREF: ROM:00006902j ; ROM:00006914j ... rts ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_66AC +; START OF FUNCTION CHUNK FOR ProcessActionButton -loc_6962: ; CODE XREF: sub_66AC+142j +loc_6962: ; CODE XREF: ProcessActionButton+142j andi.w #$FF3F,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0080,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$1E,d0 bcs.w loc_69FA bne.s loc_69D8 move.w (word_FF12E0).l,d0 beq.s loc_69FA - cmpi.b #$2E,$0000002B(a1,d1.w) + cmpi.b #$2E,BehavCmd(a1,d1.w) bne.s loc_6996 cmpi.b #$10,d0 bne.s loc_6996 move.b #$2F,d0 -loc_6996: ; CODE XREF: sub_66AC+2DEj - ; sub_66AC+2E4j - move.w d0,$0000002A(a1,d1.w) +loc_6996: ; CODE XREF: ProcessActionButton+2DEj + ; ProcessActionButton+2E4j + move.w d0,BehavParam(a1,d1.w) move.b (Player_RotationAndSize).l,d0 andi.b #$C0,d0 - andi.b #$3F,$00000004(a1,d1.w) - or.b d0,$00000004(a1,d1.w) + andi.b #$3F,RotationAndSize(a1,d1.w) + or.b d0,RotationAndSize(a1,d1.w) move.w (Player_HitBoxZEnd).l,d0 clr.w d2 - move.b $00000005(a1,d1.w),d2 + move.b Height(a1,d1.w),d2 sub.b d2,d0 move.w d0,(Player_HitBoxZEnd).l - bclr #$06,$00000008(a1,d1.w) - bclr #$07,$00000020(a1,d1.w) + bclr #$06,Flags1(a1,d1.w) + bclr #$07,FallRate(a1,d1.w) move.b #SND_Throw,d0 trap #$00 ; Trap00Handler -; END OF FUNCTION CHUNK FOR sub_66AC +; END OF FUNCTION CHUNK FOR ProcessActionButton ; --------------------------------------------------------------------------- dc.w SND_LoadFromD0 ; --------------------------------------------------------------------------- bra.s loc_69FA ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_66AC +; START OF FUNCTION CHUNK FOR ProcessActionButton -loc_69D8: ; CODE XREF: sub_66AC+2CEj +loc_69D8: ; CODE XREF: ProcessActionButton+2CEj andi.w #$FF3F,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0040,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$26,d0 bcs.s loc_69FA -loc_69EE: ; CODE XREF: sub_66AC+BEj +loc_69EE: ; CODE XREF: ProcessActionButton+BEj clr.b (byte_FF1133).l - clr.w (word_FF120C).l + clr.w (g_CarriedEntity).l -loc_69FA: ; CODE XREF: sub_66AC+EAj - ; sub_66AC+118j ... +loc_69FA: ; CODE XREF: ProcessActionButton+EAj + ; ProcessActionButton+118j ... tst.w (g_ControllerPlayback).l bne.s locret_6A0A andi.b #$60,(g_Controller1State).l -locret_6A0A: ; CODE XREF: sub_66AC+152j - ; sub_66AC+160j ... +locret_6A0A: ; CODE XREF: ProcessActionButton+152j + ; ProcessActionButton+160j ... rts -; END OF FUNCTION CHUNK FOR sub_66AC +; END OF FUNCTION CHUNK FOR ProcessActionButton ; =============== S U B R O U T I N E ======================================= -sub_6A0C: ; CODE XREF: sub_66AC:loc_6880p +sub_6A0C: ; CODE XREF: ProcessActionButton:loc_6880p move.w #$0010,d0 movem.l d1/a1,-(sp) adda.w d1,a1 movea.l a1,a5 - addq.w #$01,$00000012(a5) - addq.w #$01,$00000054(a5) + addq.w #$01,Z(a5) + addq.w #$01,HitBoxZEnd(a5) movem.l a5,-(sp) bsr.s sub_6A42 bsr.w sub_3456 @@ -1044,8 +1056,8 @@ sub_6A0C: ; CODE XREF: sub_66AC:loc_6880p movem.l (sp)+,d1/a1 bcc.s locret_6A40 movem.l (sp)+,d0 - subq.w #$01,$00000012(a5) - subq.w #$01,$00000054(a5) + subq.w #$01,Z(a5) + subq.w #$01,HitBoxZEnd(a5) locret_6A40: ; CODE XREF: sub_6A0C+26j rts @@ -1062,47 +1074,47 @@ sub_6A42: ; CODE XREF: sub_6A0C+18p cmpi.b #$80,d1 beq.s loc_6A80 bhi.s loc_6A64 - add.w d0,$00000014(a5) - add.w d0,$00000018(a5) - add.w d0,$0000001A(a5) + add.w d0,CentreX(a5) + add.w d0,HitBoxXStart(a5) + add.w d0,HitBoxXEnd(a5) bra.s loc_6AA4 ; --------------------------------------------------------------------------- loc_6A64: ; CODE XREF: sub_6A42+12j - sub.w d0,$00000014(a5) - sub.w d0,$00000018(a5) - sub.w d0,$0000001A(a5) + sub.w d0,CentreX(a5) + sub.w d0,HitBoxXStart(a5) + sub.w d0,HitBoxXEnd(a5) bra.s loc_6AA4 ; --------------------------------------------------------------------------- loc_6A72: ; CODE XREF: sub_6A42+Aj - sub.w d0,$00000016(a5) - sub.w d0,$0000001C(a5) - sub.w d0,$0000001E(a5) + sub.w d0,CentreY(a5) + sub.w d0,HitBoxYStart(a5) + sub.w d0,HitBoxYEnd(a5) bra.s loc_6A8C ; --------------------------------------------------------------------------- loc_6A80: ; CODE XREF: sub_6A42+10j - add.w d0,$00000016(a5) - add.w d0,$0000001C(a5) - add.w d0,$0000001E(a5) + add.w d0,CentreY(a5) + add.w d0,HitBoxYStart(a5) + add.w d0,HitBoxYEnd(a5) loc_6A8C: ; CODE XREF: sub_6A42+3Cj - move.w $00000016(a5),d1 + move.w CentreY(a5),d1 andi.b #$0F,d1 - move.b d1,$00000003(a5) - move.w $00000016(a5),d1 + move.b d1,SubY(a5) + move.w CentreY(a5),d1 lsr.w #$04,d1 - move.b d1,$00000001(a5) + move.b d1,Y(a5) rts ; --------------------------------------------------------------------------- loc_6AA4: ; CODE XREF: sub_6A42+20j ; sub_6A42+2Ej - move.w $00000014(a5),d1 + move.w CentreX(a5),d1 andi.b #$0F,d1 - move.b d1,$00000002(a5) - move.w $00000014(a5),d1 + move.b d1,SubX(a5) + move.w CentreX(a5),d1 lsr.w #$04,d1 move.b d1,(a5) rts @@ -1112,7 +1124,7 @@ loc_6AA4: ; CODE XREF: sub_6A42+20j ; =============== S U B R O U T I N E ======================================= -sub_6ABA: ; CODE XREF: sub_66AC+72p +SwordSwing: ; CODE XREF: ProcessActionButton+72p move.b #$01,(byte_FF113F).l andi.w #$F8FF,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) @@ -1120,23 +1132,25 @@ sub_6ABA: ; CODE XREF: sub_66AC+72p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0100,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage tst.w (g_ControllerPlayback).l bne.s loc_6AE2 andi.b #CTRLBF_AC,(g_Controller1State).l -loc_6AE2: ; CODE XREF: sub_6ABA+1Ej +loc_6AE2: ; CODE XREF: SwordSwing+1Ej move.b #CTRLBF_AC,(g_SwordButtonMask).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- @@ -1152,33 +1166,33 @@ loc_6AE2: ; CODE XREF: sub_6ABA+1Ej bra.s loc_6B28 ; --------------------------------------------------------------------------- -loc_6B0C: ; CODE XREF: sub_6ABA+4Aj +loc_6B0C: ; CODE XREF: SwordSwing+4Aj cmpi.b #ITM_GAIASWORD,d1 bne.s loc_6B18 move.b #ITM_GAIASWORD,d2 bra.s loc_6B28 ; --------------------------------------------------------------------------- -loc_6B18: ; CODE XREF: sub_6ABA+56j +loc_6B18: ; CODE XREF: SwordSwing+56j cmpi.b #ITM_THUNDERSWORD,d1 bne.s loc_6B24 move.b #ITM_THUNDERSWORD,d2 bra.s loc_6B28 ; --------------------------------------------------------------------------- -loc_6B24: ; CODE XREF: sub_6ABA+62j +loc_6B24: ; CODE XREF: SwordSwing+62j move.b #ITM_ICESWORD,d2 -loc_6B28: ; CODE XREF: sub_6ABA+3Ej - ; sub_6ABA+50j ... +loc_6B28: ; CODE XREF: SwordSwing+3Ej + ; SwordSwing+50j ... move.w d2,(g_MagicSwordEffect).l rts -; End of function sub_6ABA +; End of function SwordSwing ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_66AC +; START OF FUNCTION CHUNK FOR ProcessActionButton -loc_6B30: ; CODE XREF: sub_66AC+28j +loc_6B30: ; CODE XREF: ProcessActionButton+28j addq.b #$01,d0 move.b d0,(byte_FF113F).l andi.w #$F8FF,(Player_Action).l ; Bit0 - Walk NE (-Y) @@ -1187,18 +1201,20 @@ loc_6B30: ; CODE XREF: sub_66AC+28j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0100,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$05,d0 bcs.s loc_6BA2 bsr.s sub_6BC0 @@ -1209,18 +1225,20 @@ loc_6B30: ; CODE XREF: sub_66AC+28j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0200,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$0A,d0 bcs.s loc_6BA2 andi.w #$F8FF,(Player_Action).l ; Bit0 - Walk NE (-Y) @@ -1229,18 +1247,20 @@ loc_6B30: ; CODE XREF: sub_66AC+28j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0300,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$0F,d0 bcs.s loc_6BA2 andi.w #$F8FF,(Player_Action).l ; Bit0 - Walk NE (-Y) @@ -1249,93 +1269,97 @@ loc_6B30: ; CODE XREF: sub_66AC+28j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage ori.w #$0400,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage cmpi.b #$14,d0 bcs.s loc_6BA2 -loc_6B94: ; CODE XREF: sub_66AC+4A4j +loc_6B94: ; CODE XREF: ProcessActionButton+4A4j andi.w #$F8FF,(Player_Action).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage clr.b (byte_FF113F).l -loc_6BA2: ; CODE XREF: sub_66AC+4A0j - ; sub_66AC+4BAj ... +loc_6BA2: ; CODE XREF: ProcessActionButton+4A0j + ; ProcessActionButton+4BAj ... move.b (Player_Action+1).l,d0 ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$30,d0 bne.s locret_6BBE tst.w (g_ControllerPlayback).l bne.s locret_6BBE andi.b #$60,(g_Controller1State).l -locret_6BBE: ; CODE XREF: sub_66AC+500j - ; sub_66AC+508j +locret_6BBE: ; CODE XREF: ProcessActionButton+500j + ; ProcessActionButton+508j rts -; END OF FUNCTION CHUNK FOR sub_66AC +; END OF FUNCTION CHUNK FOR ProcessActionButton ; =============== S U B R O U T I N E ======================================= -sub_6BC0: ; CODE XREF: sub_66AC+4A2p +sub_6BC0: ; CODE XREF: ProcessActionButton+4A2p movem.w d0,-(sp) - lea ($00FF5400).l,a0 + lea (Player_X).l,a0 move.l Player_HitBoxXStart-Player_X(a0),d0 - move.l $0000001C(a0),d1 + move.l HitBoxYStart(a0),d1 movem.l d0-d1,-(sp) - move.b $00000004(a0),d0 + move.b RotationAndSize(a0),d0 andi.b #$C0,d0 beq.s loc_6BF4 cmpi.b #$80,d0 bls.s loc_6C02 - subi.w #$0010,$00000018(a0) - addi.w #$0010,$0000001E(a0) + subi.w #$0010,HitBoxXStart(a0) + addi.w #$0010,HitBoxYEnd(a0) bra.s loc_6C0E ; --------------------------------------------------------------------------- loc_6BF4: ; CODE XREF: sub_6BC0+1Ej - subi.w #$0010,$0000001C(a0) - addi.w #$0010,$0000001A(a0) + subi.w #$0010,HitBoxYStart(a0) + addi.w #$0010,HitBoxXEnd(a0) bra.s loc_6C0E ; --------------------------------------------------------------------------- loc_6C02: ; CODE XREF: sub_6BC0+24j - addi.w #$0010,$0000001A(a0) - addi.w #$0010,$0000001E(a0) + addi.w #$0010,HitBoxXEnd(a0) + addi.w #$0010,HitBoxYEnd(a0) loc_6C0E: ; CODE XREF: sub_6BC0+32j ; sub_6BC0+40j move.b #$FF,d7 bsr.w sub_3302 movem.l (sp)+,d0-d1 - move.l d0,$00000018(a0) - move.l d1,$0000001C(a0) + move.l d0,HitBoxXStart(a0) + move.l d1,HitBoxYStart(a0) movem.w (sp)+,d0 - move.w $00000012(a0),d7 + move.w Z(a0),d7 cmp.w d7,d4 bhi.s loc_6C32 tst.b d0 @@ -1355,10 +1379,10 @@ loc_6C32: ; CODE XREF: sub_6BC0+6Cj ; =============== S U B R O U T I N E ======================================= -sub_6C3C: ; CODE XREF: sub_6CB0:loc_6D14p - ; sub_6E20:loc_6E54p ... +sub_6C3C: ; CODE XREF: CheckPickUpEntity:loc_6D14p + ; CheckTalk:loc_6E54p ... lea (Player_X).l,a0 - move.b 0000000004(a0),d0 + move.b RotationAndSize(a0),d0 andi.w #$00C0,d0 ; Orientation lsr.b #$03,d0 move.w word_6C90(pc,d0.w),d1 @@ -1368,17 +1392,17 @@ sub_6C3C: ; CODE XREF: sub_6CB0:loc_6D14p move.w word_6C90+4(pc,d0.w),d1 move.w word_6C90+6(pc,d0.w),d0 movea.w (a0,d0.w),a2 - movea.w $00000002(a0,d0.w),a3 + movea.w SubX(a0,d0.w),a3 addq.w #$03,a2 subq.w #$03,a3 - move.w $00000012(a0),d4 - move.w $00000054(a0),d5 + move.w Z(a0),d4 + move.w HitBoxZEnd(a0),d5 move.l #RAM_Start,d6 - move.w $00000028(a0),d6 + move.w HeightmapOffset(a0),d6 movea.l d6,a6 moveq #$FFFFFFFF,d6 move.w #$000E,d7 - lea $00000080(a0),a0 + lea SPRITE_SIZE(a0),a0 rts ; End of function sub_6C3C @@ -1391,18 +1415,18 @@ word_6C90: dc.w $001C,$FFFF,$001E,$0018 ; 0 ; =============== S U B R O U T I N E ======================================= -sub_6CB0: ; CODE XREF: sub_66AC+4Cp +CheckPickUpEntity: ; CODE XREF: ProcessActionButton+4Cp lea (Player_X).l,a5 bsr.w sub_3456 bcc.s loc_6CC6 btst #$05,Flags2(a1) bne.w loc_6DCA -loc_6CC6: ; CODE XREF: sub_6CB0+Aj +loc_6CC6: ; CODE XREF: CheckPickUpEntity+Aj lea (Sprite1_X).l,a4 moveq #$0000000E,d7 -loc_6CCE: ; CODE XREF: sub_6CB0+60j +loc_6CCE: ; CODE XREF: CheckPickUpEntity+60j tst.w (a4) bmi.s loc_6D14 btst #$00,Flags1(a4) @@ -1411,9 +1435,9 @@ loc_6CCE: ; CODE XREF: sub_6CB0+60j bne.s loc_6D0C btst #$05,Flags2(a4) beq.s loc_6D0C - cmpi.b #$10,Unk2B(a4) + cmpi.b #$10,BehavCmd(a4) beq.s loc_6D0C - cmpi.b #$16,Unk2B(a4) + cmpi.b #$16,BehavCmd(a4) beq.s loc_6D0C clr.w d0 move.b Height(a4),d0 @@ -1422,30 +1446,30 @@ loc_6CCE: ; CODE XREF: sub_6CB0+60j bra.w loc_6DDC ; --------------------------------------------------------------------------- -loc_6D0C: ; CODE XREF: sub_6CB0+28j - ; sub_6CB0+2Ej ... +loc_6D0C: ; CODE XREF: CheckPickUpEntity+28j + ; CheckPickUpEntity+2Ej ... lea SPRITE_SIZE(a4),a4 dbf d7,loc_6CCE -loc_6D14: ; CODE XREF: sub_6CB0+20j +loc_6D14: ; CODE XREF: CheckPickUpEntity+20j bsr.w sub_6C3C add.w d2,d3 -loc_6D1A: ; CODE XREF: sub_6CB0+E4j +loc_6D1A: ; CODE XREF: CheckPickUpEntity+E4j tst.w (a0) bmi.s loc_6D98 btst #$05,Flags2(a0) beq.s loc_6D90 - cmpi.b #$10,Unk2B(a0) + cmpi.b #$10,BehavCmd(a0) beq.s loc_6D90 - cmpi.b #$16,Unk2B(a0) + cmpi.b #$16,BehavCmd(a0) beq.s loc_6D90 cmp.w (a0,d1.w),d2 beq.s loc_6D42 cmp.w (a0,d1.w),d3 bne.s loc_6D90 -loc_6D42: ; CODE XREF: sub_6CB0+8Aj +loc_6D42: ; CODE XREF: CheckPickUpEntity+8Aj btst #$04,Flags2(a0) beq.s loc_6D6C movem.w d0-d1,-(sp) @@ -1458,7 +1482,7 @@ loc_6D42: ; CODE XREF: sub_6CB0+8Aj movem.w (sp)+,d0-d1 bne.s loc_6D90 -loc_6D6C: ; CODE XREF: sub_6CB0+98j +loc_6D6C: ; CODE XREF: CheckPickUpEntity+98j cmpa.w SubX(a0,d0.w),a2 bhi.s loc_6D90 cmpa.w (a0,d0.w),a3 @@ -1472,12 +1496,12 @@ loc_6D6C: ; CODE XREF: sub_6CB0+98j move.w Z(a0),d6 movea.l a0,a4 -loc_6D90: ; CODE XREF: sub_6CB0+74j - ; sub_6CB0+7Cj ... +loc_6D90: ; CODE XREF: CheckPickUpEntity+74j + ; CheckPickUpEntity+7Cj ... lea SPRITE_SIZE(a0),a0 dbf d7,loc_6D1A -loc_6D98: ; CODE XREF: sub_6CB0+6Cj +loc_6D98: ; CODE XREF: CheckPickUpEntity+6Cj cmpi.b #$FF,d6 beq.s loc_6DC6 clr.w d0 @@ -1492,34 +1516,34 @@ loc_6D98: ; CODE XREF: sub_6CB0+6Cj btst #$05,Flags2(a1) bne.s loc_6DCA -loc_6DC6: ; CODE XREF: sub_6CB0+ECj +loc_6DC6: ; CODE XREF: CheckPickUpEntity+ECj tst.b d0 rts ; --------------------------------------------------------------------------- -loc_6DCA: ; CODE XREF: sub_6CB0+12j - ; sub_6CB0+114j +loc_6DCA: ; CODE XREF: CheckPickUpEntity+12j + ; CheckPickUpEntity+114j movea.l a1,a4 clr.w d0 move.b Height(a4),d0 lea (Player_X).l,a5 add.w d0,Player_HitBoxZEnd-Player_X(a5) -loc_6DDC: ; CODE XREF: sub_6CB0+58j - ; sub_6CB0+102j +loc_6DDC: ; CODE XREF: CheckPickUpEntity+58j + ; CheckPickUpEntity+102j move.b #$01,(byte_FF1133).l move.l BehaviourLUTPtr(a4),Unk5E(a4) - move.b Unk2A(a4),Unk67(a4) - move.b Unk2B(a4),Unk69(a4) + move.b BehavParam(a4),Unk67(a4) + move.b BehavCmd(a4),Unk69(a4) move.b Speed(a4),Unk49(a4) suba.l #Player_X,a4 - move.w a4,(word_FF120C).l + move.w a4,(g_CarriedEntity).l clr.b (g_Controller1State).l move.b #CTRLBF_AC,(g_SwordButtonMask).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_JumpLand -; End of function sub_6CB0 +; End of function CheckPickUpEntity ; --------------------------------------------------------------------------- ori #$01,ccr @@ -1528,16 +1552,17 @@ loc_6DDC: ; CODE XREF: sub_6CB0+58j ; =============== S U B R O U T I N E ======================================= -sub_6E20: ; CODE XREF: sub_66AC+58p +CheckTalk: ; CODE XREF: ProcessActionButton+58p move.w (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$30,d0 bne.w loc_6EEA move.b (Player_GroundType).l,d0 @@ -1547,24 +1572,24 @@ sub_6E20: ; CODE XREF: sub_66AC+58p cmpi.b #FLOOR_SIGN_NE4,d0 bls.w loc_6FB8 -loc_6E46: ; CODE XREF: sub_6E20+1Cj - ; sub_6E20+188j ... +loc_6E46: ; CODE XREF: CheckTalk+1Cj + ; CheckTalk+188j ... cmpi.b #FLOOR_SIGN_NW5,d0 bcs.s loc_6E54 cmpi.b #FLOOR_SIGN_NE8,d0 bls.w loc_6F70 -loc_6E54: ; CODE XREF: sub_6E20+2Aj - ; sub_6E20+160j ... +loc_6E54: ; CODE XREF: CheckTalk+2Aj + ; CheckTalk+160j ... bsr.w sub_6C3C -loc_6E58: ; CODE XREF: sub_6E20+8Cj - ; sub_6E20+C2j +loc_6E58: ; CODE XREF: CheckTalk+8Cj + ; CheckTalk+C2j tst.w (a0) bmi.s loc_6EB0 - btst #$04,$0000000C(a0) + btst #$04,Flags2(a0) beq.s loc_6EA8 - btst #$00,$00000008(a0) + btst #$00,Flags1(a0) bne.s loc_6EA8 movea.w d2,a5 cmpa.w (a0,d1.w),a5 @@ -1579,25 +1604,25 @@ loc_6E58: ; CODE XREF: sub_6E20+8Cj cmpa.w (a0,d1.w),a5 bne.s loc_6EA8 -loc_6E8C: ; CODE XREF: sub_6E20+52j - ; sub_6E20+5Aj ... +loc_6E8C: ; CODE XREF: CheckTalk+52j + ; CheckTalk+5Aj ... cmpa.w SubX(a0,d0.w),a2 bhi.s loc_6EA8 cmpa.w (a0,d0.w),a3 bcs.s loc_6EA8 - cmp.w $00000054(a0),d4 + cmp.w HitBoxZEnd(a0),d4 bcc.s loc_6EA8 - cmp.w $00000012(a0),d5 + cmp.w Z(a0),d5 bls.s loc_6EA8 movea.l a0,a4 clr.w d6 -loc_6EA8: ; CODE XREF: sub_6E20+42j - ; sub_6E20+4Aj ... - lea $00000080(a0),a0 +loc_6EA8: ; CODE XREF: CheckTalk+42j + ; CheckTalk+4Aj ... + lea SPRITE_SIZE(a0),a0 dbf d7,loc_6E58 -loc_6EB0: ; CODE XREF: sub_6E20+3Aj +loc_6EB0: ; CODE XREF: CheckTalk+3Aj tst.w d6 bpl.w loc_6EF6 movem.w d1/d3-d4,-(sp) @@ -1615,10 +1640,10 @@ loc_6EB0: ; CODE XREF: sub_6E20+3Aj bra.w loc_6E58 ; --------------------------------------------------------------------------- -loc_6EE6: ; CODE XREF: sub_6E20+AEj +loc_6EE6: ; CODE XREF: CheckTalk+AEj movem.w (sp)+,d1/d3-d4 -loc_6EEA: ; CODE XREF: sub_6E20+Aj +loc_6EEA: ; CODE XREF: CheckTalk+Aj tst.b d0 rts ; --------------------------------------------------------------------------- @@ -1628,40 +1653,40 @@ word_6EEE: dc.w $0002 dc.w -$0094 ; --------------------------------------------------------------------------- -loc_6EF6: ; CODE XREF: sub_6E20+92j +loc_6EF6: ; CODE XREF: CheckTalk+92j movea.l a4,a0 move.l a0,(dword_FF187C).l - move.b $00000004(a0),d0 + move.b RotationAndSize(a0),d0 movem.l d0/a0,-(sp) - move.b $0000003A(a0),d0 + move.b Dialogue(a0),d0 lsr.b #$02,d0 move.b d0,(g_currentSpeakerScriptID).l - btst #$00,$0000000C(a0) + btst #$00,Flags2(a0) bne.w loc_6FFA - andi.b #$3F,$00000004(a0) + andi.b #$3F,RotationAndSize(a0) move.b (Player_RotationAndSize).l,d0 andi.b #$C0,d0 eori.b #$80,d0 - or.b d0,$00000004(a0) + or.b d0,RotationAndSize(a0) bsr.w sub_701A - bsr.w sub_401C + bsr.w LoadSprites bsr.w FlushDMACopyQueue - jsr (sub_22EB8).l + jsr (j_PlayerTalk).l bsr.w sub_700A movem.l (sp)+,d0/a0 - move.b d0,$00000004(a0) + move.b d0,RotationAndSize(a0) bsr.w sub_701A - bsr.w sub_401C + bsr.w LoadSprites -loc_6F5A: ; CODE XREF: sub_6E20+1D6j - ; sub_6E20+1E6j +loc_6F5A: ; CODE XREF: CheckTalk+1D6j + ; CheckTalk+1E6j andi.b #$60,(g_Controller1State).l move.b #$60,(g_SwordButtonMask).l ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_6F70: ; CODE XREF: sub_6E20+30j +loc_6F70: ; CODE XREF: CheckTalk+30j cmpi.b #FLOOR_SIGN_NE5,d0 bcc.s loc_6F86 move.b (Player_RotationAndSize).l,d1 @@ -1670,7 +1695,7 @@ loc_6F70: ; CODE XREF: sub_6E20+30j bra.s loc_6FAC ; --------------------------------------------------------------------------- -loc_6F86: ; CODE XREF: sub_6E20+154j +loc_6F86: ; CODE XREF: CheckTalk+154j move.b (Player_RotationAndSize).l,d1 andi.b #$C0,d1 cmpi.b #$C0,d1 @@ -1682,15 +1707,15 @@ loc_6F86: ; CODE XREF: sub_6E20+154j cmpi.b #$C0,d1 bne.w loc_6E46 -loc_6FAC: ; CODE XREF: sub_6E20+164j - ; sub_6E20+178j +loc_6FAC: ; CODE XREF: CheckTalk+164j + ; CheckTalk+178j subi.b #FLOOR_SIGN_NE5,d0 andi.b #$03,d0 addq.b #$04,d0 bra.s loc_6FE6 ; --------------------------------------------------------------------------- -loc_6FB8: ; CODE XREF: sub_6E20+22j +loc_6FB8: ; CODE XREF: CheckTalk+22j cmpi.b #FLOOR_SIGN_NE1,d0 bcc.s loc_6FCE move.b (Player_RotationAndSize).l,d1 @@ -1699,36 +1724,36 @@ loc_6FB8: ; CODE XREF: sub_6E20+22j bra.s loc_6FE0 ; --------------------------------------------------------------------------- -loc_6FCE: ; CODE XREF: sub_6E20+19Cj +loc_6FCE: ; CODE XREF: CheckTalk+19Cj move.b (Player_RotationAndSize).l,d1 andi.b #$C0,d1 cmpi.b #$C0,d1 bne.w loc_6E46 -loc_6FE0: ; CODE XREF: sub_6E20+1ACj +loc_6FE0: ; CODE XREF: CheckTalk+1ACj subq.b #$01,d0 andi.b #$03,d0 -loc_6FE6: ; CODE XREF: sub_6E20+196j +loc_6FE6: ; CODE XREF: CheckTalk+196j move.b d0,(g_currentSpeakerScriptID).l - jsr (sub_22EB8).l + jsr (j_PlayerTalk).l bsr.w sub_700A bra.w loc_6F5A ; --------------------------------------------------------------------------- -loc_6FFA: ; CODE XREF: sub_6E20+F8j - jsr (sub_22EB8).l +loc_6FFA: ; CODE XREF: CheckTalk+F8j + jsr (j_PlayerTalk).l bsr.s sub_700A movem.l (sp)+,d0/a0 bra.w loc_6F5A -; End of function sub_6E20 +; End of function CheckTalk ; =============== S U B R O U T I N E ======================================= -sub_700A: ; CODE XREF: sub_6E20+126p - ; sub_6E20+1D2p ... +sub_700A: ; CODE XREF: CheckTalk+126p + ; CheckTalk+1D2p ... move.w (g_Character).l,d0 bmi.s locret_7018 jsr (j_ProcessDialogueScriptAction).l @@ -1741,9 +1766,9 @@ locret_7018: ; CODE XREF: sub_700A+6j ; =============== S U B R O U T I N E ======================================= -sub_701A: ; CODE XREF: sub_6E20+114p - ; sub_6E20+132p - move.b $00000004(a0),d0 +sub_701A: ; CODE XREF: CheckTalk+114p + ; CheckTalk+132p + move.b RotationAndSize(a0),d0 addi.b #$40,d0 andi.b #$80,d0 beq.s loc_702C @@ -1751,14 +1776,14 @@ sub_701A: ; CODE XREF: sub_6E20+114p loc_702C: ; CODE XREF: sub_701A+Cj ext.w d0 - move.w d0,$00000024(a0) - clr.w $00000026(a0) - andi.b #$F7,$00000006(a0) - move.b $00000004(a0),d0 + move.w d0,AnimationIndex(a0) + clr.w AnimationFrame(a0) + andi.b #$F7,TileSource(a0) + move.b RotationAndSize(a0),d0 andi.b #$40,d0 lsr.b #$03,d0 - or.b d0,$00000006(a0) - ori.b #$80,$0000000A(a0) + or.b d0,TileSource(a0) + ori.b #$80,Unk0A(a0) rts ; End of function sub_701A @@ -1766,45 +1791,45 @@ loc_702C: ; CODE XREF: sub_701A+Cj ; =============== S U B R O U T I N E ======================================= -sub_7052: ; CODE XREF: sub_66AC:loc_66FEp +CheckOpenChest: ; CODE XREF: ProcessActionButton:loc_66FEp bsr.w sub_6C3C add.w d2,d3 -loc_7058: ; CODE XREF: sub_7052+4Ej +loc_7058: ; CODE XREF: CheckOpenChest+4Ej tst.w (a0) bmi.s loc_70A4 - cmpi.b #SpriteB_Chest,$0000000B(a0) + cmpi.b #SpriteB_Chest,SpriteGraphic(a0) bne.s loc_709C - btst #$00,$00000008(a0) + btst #$00,Flags1(a0) bne.s loc_709C cmp.w (a0,d1.w),d2 beq.s loc_7078 cmp.w (a0,d1.w),d3 bne.s loc_709C -loc_7078: ; CODE XREF: sub_7052+1Ej - cmpa.w $00000002(a0,d0.w),a2 +loc_7078: ; CODE XREF: CheckOpenChest+1Ej + cmpa.w SubX(a0,d0.w),a2 bhi.s loc_709C cmpa.w (a0,d0.w),a3 bcs.s loc_709C - cmp.w $00000054(a0),d4 + cmp.w HitBoxZEnd(a0),d4 bcc.s loc_709C - cmp.w $00000012(a0),d5 + cmp.w Z(a0),d5 bls.s loc_709C - cmp.w $00000012(a0),d6 + cmp.w Z(a0),d6 bcs.s loc_709C - move.w $00000012(a0),d6 + move.w Z(a0),d6 movea.l a0,a4 -loc_709C: ; CODE XREF: sub_7052+10j - ; sub_7052+18j ... - lea $00000080(a0),a0 +loc_709C: ; CODE XREF: CheckOpenChest+10j + ; CheckOpenChest+18j ... + lea SPRITE_SIZE(a0),a0 dbf d7,loc_7058 -loc_70A4: ; CODE XREF: sub_7052+8j +loc_70A4: ; CODE XREF: CheckOpenChest+8j cmpi.b #$FF,d6 beq.w loc_71E2 - move.b $00000036(a4),d0 + move.b GoldOrChestContents(a4),d0 bmi.w loc_71E2 cmpi.b #$3F,d0 beq.w loc_71E6 @@ -1842,7 +1867,7 @@ GoldAmounts: dc.w 00200 ; --------------------------------------------------------------------------- -loc_711E: ; CODE XREF: sub_7052+8Ej +loc_711E: ; CODE XREF: CheckOpenChest+8Ej jsr (j_GetItemQtyAndMaxQty).l cmpi.b #$09,d1 beq.w loc_71BC @@ -1850,8 +1875,8 @@ loc_711E: ; CODE XREF: sub_7052+8Ej bne.s loc_7132 addq.b #$01,d1 -loc_7132: ; CODE XREF: sub_7052+88j - ; sub_7052+DCj +loc_7132: ; CODE XREF: CheckOpenChest+88j + ; CheckOpenChest+DCj movem.w d0-d1,-(sp) jsr (sub_9B00C).l trap #$00 ; Trap00Handler @@ -1873,74 +1898,74 @@ loc_7132: ; CODE XREF: sub_7052+88j bra.s loc_719C ; --------------------------------------------------------------------------- -loc_7176: ; CODE XREF: sub_7052+104j +loc_7176: ; CODE XREF: CheckOpenChest+104j move.w #$0100,d0 lea (Player_X).l,a5 jsr (j_AddToMaxHealth).l move.w #$0100,d0 jsr (j_AddHealth).l -loc_7190: ; CODE XREF: sub_7052+C2j +loc_7190: ; CODE XREF: CheckOpenChest+C2j jsr (j_MarkHUDForUpdate).l jsr (j_RefreshHUD).l -loc_719C: ; CODE XREF: sub_7052+10Ej - ; sub_7052+122j - move.w #$000C,$00000026(a4) - ori.b #$80,$0000000A(a4) - bsr.w sub_401C +loc_719C: ; CODE XREF: CheckOpenChest+10Ej + ; CheckOpenChest+122j + move.w #$000C,AnimationFrame(a4) + ori.b #$80,Unk0A(a4) + bsr.w LoadSprites bsr.w sub_9DA2 bsr.w FlushDMACopyQueue -loc_71B4: ; CODE XREF: sub_7052+1C4j +loc_71B4: ; CODE XREF: CheckOpenChest+1C4j jsr (j_SetUpTextDisplay).l bra.s loc_71CE ; --------------------------------------------------------------------------- -loc_71BC: ; CODE XREF: sub_7052+D6j +loc_71BC: ; CODE XREF: CheckOpenChest+D6j move.w #$0012,d0 jsr (j_PrintString).l jsr (j_SetUpTextDisplay).l bsr.s sub_7234 -loc_71CE: ; CODE XREF: sub_7052+168j +loc_71CE: ; CODE XREF: CheckOpenChest+168j clr.b (g_Controller1State).l move.b #$60,(g_SwordButtonMask).l ori #$01,ccr rts ; --------------------------------------------------------------------------- -loc_71E2: ; CODE XREF: sub_7052+56j - ; sub_7052+5Ej +loc_71E2: ; CODE XREF: CheckOpenChest+56j + ; CheckOpenChest+5Ej tst.b d0 rts ; --------------------------------------------------------------------------- -loc_71E6: ; CODE XREF: sub_7052+66j - move.w #$0010,$00000026(a4) +loc_71E6: ; CODE XREF: CheckOpenChest+66j + move.w #$0010,AnimationFrame(a4) bsr.s sub_7250 - move.w #$000C,$00000026(a4) + move.w #$000C,AnimationFrame(a4) bsr.s sub_7250 - move.b #$18,$00000005(a4) - addq.w #$08,$00000054(a4) + move.b #$18,Height(a4) + addq.w #$08,HitBoxZEnd(a4) jsr (sub_22EE8).l jsr (sub_9B00C).l move.w #$0014,d0 jsr (j_PrintString).l bra.s loc_71B4 -; End of function sub_7052 +; End of function CheckOpenChest ; =============== S U B R O U T I N E ======================================= -sub_7218: ; CODE XREF: sub_7052+76p - move.w #$0004,$00000026(a4) +sub_7218: ; CODE XREF: CheckOpenChest+76p + move.w #$0004,AnimationFrame(a4) bsr.s sub_7250 - move.w #$0008,$00000026(a4) + move.w #$0008,AnimationFrame(a4) bsr.s sub_7250 - move.b #$18,$00000005(a4) - addq.w #$08,$00000054(a4) + move.b #$18,Height(a4) + addq.w #$08,HitBoxZEnd(a4) rts ; End of function sub_7218 @@ -1948,13 +1973,13 @@ sub_7218: ; CODE XREF: sub_7052+76p ; =============== S U B R O U T I N E ======================================= -sub_7234: ; CODE XREF: sub_7052+17Ap - move.w #$0004,$00000026(a4) +sub_7234: ; CODE XREF: CheckOpenChest+17Ap + move.w #$0004,AnimationFrame(a4) bsr.s sub_7250 - move.w #$0000,$00000026(a4) + move.w #$0000,AnimationFrame(a4) bsr.s sub_7250 - move.b #$10,$00000005(a4) - subq.w #$08,$00000054(a4) + move.b #$10,Height(a4) + subq.w #$08,HitBoxZEnd(a4) rts ; End of function sub_7234 @@ -1962,11 +1987,11 @@ sub_7234: ; CODE XREF: sub_7052+17Ap ; =============== S U B R O U T I N E ======================================= -sub_7250: ; CODE XREF: sub_7052+19Ap - ; sub_7052+1A2p ... - ori.b #$80,$0000000A(a4) +sub_7250: ; CODE XREF: CheckOpenChest+19Ap + ; CheckOpenChest+1A2p ... + ori.b #$80,Unk0A(a4) movem.l a4,-(sp) - bsr.w sub_401C + bsr.w LoadSprites bsr.w sub_9DA2 bsr.w EnableDMAQueueProcessing move.w #$0004,d0 @@ -1979,7 +2004,7 @@ sub_7250: ; CODE XREF: sub_7052+19Ap ; =============== S U B R O U T I N E ======================================= -sub_7274: ; CODE XREF: sub_16DC+5Ap +sub_7274: ; CODE XREF: GameLoop+5Ap ; LoadRoom_0+4Cp ; FUNCTION CHUNK AT 000073AC SIZE 0000021E BYTES @@ -1987,12 +2012,12 @@ sub_7274: ; CODE XREF: sub_16DC+5Ap lea (Player_X).l,a0 cmpi.b #SpriteB_Nigel,Player_SpriteGraphic-Player_X(a0) - beq.s loc_728A - jsr (sub_10314).l + beq.s UpdatePlayerSpriteFrame + jsr (j_UpdateSpriteFrame).l rts ; --------------------------------------------------------------------------- -loc_728A: ; CODE XREF: sub_7274+Cj +UpdatePlayerSpriteFrame: ; CODE XREF: sub_7274+Cj move.w (Player_AnimAction).l,d2 move.w (Player_Action).l,d0 ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) @@ -2000,32 +2025,33 @@ loc_728A: ; CODE XREF: sub_7274+Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage move.w d0,(Player_AnimAction).l btst #$00,Flags2(a0) bne.s locret_72E2 tst.w d0 beq.s loc_72E4 move.w d0,d1 - andi.w #$2000,d1 - bne.w loc_75D2 + andi.w #$2000,d1 ; Take Damage + bne.w PlayerTakeDamage move.w d0,d1 - andi.w #$0700,d1 - bne.w loc_7510 + andi.w #$0700,d1 ; Attack + bne.w PlayerAttack move.w d0,d1 - andi.w #$0030,d1 - bne.w loc_747C + andi.w #$0030,d1 ; Jump/Fall + bne.w PlayerJump move.w d0,d1 - andi.w #$000F,d1 - bne.w loc_73AC + andi.w #$000F,d1 ; Move + bne.w PlayerMove move.w d0,d1 - andi.w #$00C0,d1 - bne.s loc_7332 + andi.w #$00C0,d1 ; PickUp/Carry/Throw + bne.s PlayerPickUp move.w d0,d1 - andi.w #$1000,d1 - bne.w loc_7586 + andi.w #$1000,d1 ; Climb + bne.w PlayerClimb locret_72E2: ; CODE XREF: sub_7274+2Ej rts @@ -2065,7 +2091,7 @@ loc_7324: ; CODE XREF: sub_7274+86j rts ; --------------------------------------------------------------------------- -loc_7332: ; CODE XREF: sub_7274+62j +PlayerPickUp: ; CODE XREF: sub_7274+62j bsr.s sub_739A clr.w AnimationFrame(a0) cmpi.w #$00C0,d1 @@ -2111,7 +2137,7 @@ loc_738C: ; CODE XREF: sub_7274+EAj sub_739A: ; CODE XREF: sub_7274:loc_72E4p - ; sub_7274:loc_7332p ... + ; sub_7274:PlayerPickUpp ... cmp.w d0,d2 beq.s locret_73AA bset #$07,Unk0A(a0) @@ -2124,7 +2150,7 @@ locret_73AA: ; CODE XREF: sub_739A+2j ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_7274 -loc_73AC: ; CODE XREF: sub_7274+58j +PlayerMove: ; CODE XREF: sub_7274+58j andi.b #$0F,d2 cmp.b d1,d2 beq.s loc_73B8 @@ -2157,7 +2183,7 @@ loc_73E8: ; CODE XREF: sub_7274+16Ej move.b AnimationFrame1(a0),d0 move.b d0,d1 andi.b #$E0,AnimationFrame1(a0) - btst #$01,Flags4(a0) + btst #$01,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_7410 subq.b #$04,d1 bra.s loc_7412 @@ -2174,7 +2200,7 @@ loc_7412: ; CODE XREF: sub_7274+19Aj loc_7426: ; CODE XREF: sub_7274+182j move.b RotationAndSize(a0),d0 - btst #$01,Flags4(a0) + btst #$01,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_7436 eori.b #$80,d0 @@ -2207,7 +2233,7 @@ loc_746E: ; CODE XREF: sub_7274+1CCj rts ; --------------------------------------------------------------------------- -loc_747C: ; CODE XREF: sub_7274+4Ej +PlayerJump: ; CODE XREF: sub_7274+4Ej bsr.w sub_739A move.b d0,d1 clr.w AnimationFrame(a0) @@ -2264,7 +2290,7 @@ loc_7502: ; CODE XREF: sub_7274+260j rts ; --------------------------------------------------------------------------- -loc_7510: ; CODE XREF: sub_7274+44j +PlayerAttack: ; CODE XREF: sub_7274+44j bsr.w sub_739A clr.w AnimationFrame(a0) cmpi.w #$0100,d1 @@ -2308,7 +2334,7 @@ loc_7578: ; CODE XREF: sub_7274+2D6j rts ; --------------------------------------------------------------------------- -loc_7586: ; CODE XREF: sub_7274+6Aj +PlayerClimb: ; CODE XREF: sub_7274+6Aj move.w #$0040,AnimationIndex(a0) btst #$06,RotationAndSize(a0) beq.s loc_759C @@ -2338,7 +2364,7 @@ FrameNumbers: dc.w $0000,$0004,$0000,$0008 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_7274 -loc_75D2: ; CODE XREF: sub_7274+3Aj +PlayerTakeDamage: ; CODE XREF: sub_7274+3Aj bsr.w sub_739A clr.w AnimationFrame(a0) move.b RotationAndSize(a0),d0 diff --git a/code/gamelogic/gamelogic5.asm b/code/gamelogic/gamelogic5.asm index cd3f59f..9f81f2a 100644 --- a/code/gamelogic/gamelogic5.asm +++ b/code/gamelogic/gamelogic5.asm @@ -1,7 +1,7 @@ ; --------------------------------------------------------------------------- -loc_8D84: ; CODE XREF: ROM:000016CEp - ; DATA XREF: sub_4A6t +StartGame: ; CODE XREF: ROM:000016CEp + ; DATA XREF: j_StartGamet jsr (DisableDisplayAndInts).l move.l #$C0760000,(VDP_CTRL_REG).l move.w #$0000,(VDP_DATA_REG).l @@ -15,11 +15,11 @@ loc_8D84: ; CODE XREF: ROM:000016CEp jsr (DisableVDPSpriteUpdate).l jsr (FlushDMACopyQueue).l bsr.w LoadHUDSprites - bsr.w sub_906C - bsr.w sub_90C4 + bsr.w InitScrollRegs + bsr.w InitBlocks cmpi.w #$008B,(g_RmNum1).l beq.s Intro - jsr (sub_10344).l + jsr (j_RefreshAllHUD).l jsr (j_RefreshHUD).l jmp (FadeFromBlack).l ; --------------------------------------------------------------------------- @@ -66,7 +66,7 @@ loc_8E10: ; CODE XREF: ROM:00008E3Aj sub_8E9C: ; CODE XREF: ROM:00002EB4j ; sub_620A+12p ... - bsr.s sub_8EA0 + bsr.s InitVDP bra.s FadeInFromDarkness ; End of function sub_8E9C @@ -74,14 +74,14 @@ sub_8E9C: ; CODE XREF: ROM:00002EB4j ; =============== S U B R O U T I N E ======================================= -sub_8EA0: ; CODE XREF: sub_620A+FAp +InitVDP: ; CODE XREF: sub_620A+FAp ; sub_620A+136p ... jsr (j_RefreshAndClearTextbox).l bsr.w LoadHUDSprites - bsr.w sub_906C - bsr.w sub_90C4 + bsr.w InitScrollRegs + bsr.w InitBlocks rts -; End of function sub_8EA0 +; End of function InitVDP ; =============== S U B R O U T I N E ======================================= @@ -111,7 +111,7 @@ loc_8ECE: ; CODE XREF: FadeInFromDarkness+3Aj FadeOutToDarkness: ; CODE XREF: ROM:00002E56p - ; sub_620A:loc_620Ep ... + ; sub_620A:WarpToRoomp ... jsr (InitFadeToBlackParams).l move.w #$0006,d6 diff --git a/code/gamelogic/gamelogic6.asm b/code/gamelogic/gamelogic6.asm index 62d1e46..4e37b66 100644 --- a/code/gamelogic/gamelogic6.asm +++ b/code/gamelogic/gamelogic6.asm @@ -21,8 +21,8 @@ HUDSprites: dc.w $0080, $0201, $86B4, $0001 ; DATA XREF: LoadHUDSpritest ; =============== S U B R O U T I N E ======================================= -sub_906C: ; CODE XREF: ROM:00008DD2p - ; sub_8EA0+Ap +InitScrollRegs: ; CODE XREF: ROM:00008DD2p + ; InitVDP+Ap move.w #$0001,(word_FF1180).l andi.w #$FEFE,(word_FF1126).l clr.w d6 @@ -31,7 +31,7 @@ sub_906C: ; CODE XREF: ROM:00008DD2p bpl.s loc_908E ext.w d6 -loc_908E: ; CODE XREF: sub_906C+1Ej +loc_908E: ; CODE XREF: InitScrollRegs+1Ej addi.w #$0090,d6 jsr (FillHScrollData).l jsr (FillHScrollDataOffset1).l @@ -43,21 +43,21 @@ loc_908E: ; CODE XREF: sub_906C+1Ej jsr (FillVSRAM).l jsr (FillVSRAMOffset1).l jmp (EnableDMAQueueProcessing).l -; End of function sub_906C +; End of function InitScrollRegs ; =============== S U B R O U T I N E ======================================= -sub_90C4: ; CODE XREF: ROM:00008DD6p - ; sub_8EA0+Ep +InitBlocks: ; CODE XREF: ROM:00008DD6p + ; InitVDP+Ep jsr (FlushDMACopyQueue).l addi.b #$0C,(g_PlayerXFlattened).l addi.b #$0C,(g_PlayerYFlattened).l move.w #$018C,(g_BlockTableIndex).l move.w #$000B,d7 -loc_90E6: ; CODE XREF: sub_90C4+88j +loc_90E6: ; CODE XREF: InitBlocks+88j movem.w d7,-(sp) subq.b #$01,(g_PlayerXFlattened).l move.w (g_BlockTableIndex).l,d0 @@ -68,7 +68,7 @@ loc_90E6: ; CODE XREF: sub_90C4+88j bne.s loc_9110 addi.w #$0020,(g_BlockTableIndex).l -loc_9110: ; CODE XREF: sub_90C4+42j +loc_9110: ; CODE XREF: InitBlocks+42j bsr.w LoadTopTiles subq.b #$01,(g_PlayerYFlattened).l subi.w #$0020,(g_BlockTableIndex).l @@ -78,13 +78,13 @@ loc_9110: ; CODE XREF: sub_90C4+42j bcs.s loc_913E subi.w #$0020,(g_BlockTableIndex).l -loc_913E: ; CODE XREF: sub_90C4+5Ej - ; sub_90C4+70j +loc_913E: ; CODE XREF: InitBlocks+5Ej + ; InitBlocks+70j bsr.w LoadTopTiles jsr (WaitUntilVBlank).l movem.w (sp)+,d7 dbf d7,loc_90E6 rts -; End of function sub_90C4 +; End of function InitBlocks ; --------------------------------------------------------------------------- diff --git a/code/gamelogic/shops/shops1.asm b/code/gamelogic/shops/shops1.asm index 4c59047..22afaa7 100644 --- a/code/gamelogic/shops/shops1.asm +++ b/code/gamelogic/shops/shops1.asm @@ -48,9 +48,10 @@ loc_9C16: ; CODE XREF: sub_9BFE+22j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$C0,d0 cmpi.b #$C0,d0 bne.s loc_9C3A diff --git a/code/graphics/hud.asm b/code/graphics/hud.asm index 43fc5a6..3dd1014 100644 --- a/code/graphics/hud.asm +++ b/code/graphics/hud.asm @@ -2,13 +2,13 @@ ; =============== S U B R O U T I N E ======================================= -sub_1690A: ; DATA XREF: sub_10344t +RefreshAllHUD: ; DATA XREF: j_RefreshAllHUDt bsr.w RefreshCurrentHealthHUD bsr.w RefreshMaxHealthHUD - bsr.w UpdateGoldHUD - bsr.w sub_16CC6 + bsr.w RefreshGoldHUD + bsr.w RefreshSwordChargeHUD bsr.w UpdateEkeEkeHUD -; End of function sub_1690A +; End of function RefreshAllHUD ; =============== S U B R O U T I N E ======================================= @@ -70,7 +70,7 @@ locret_16966: ; CODE XREF: sub_1694C+Cj ; =============== S U B R O U T I N E ======================================= -RefreshMaxHealthHUD: ; CODE XREF: sub_1690A+4p +RefreshMaxHealthHUD: ; CODE XREF: RefreshAllHUD+4p ; AddToMaxHealth+4p ; DATA XREF: ... movem.l d0-d3/d7-a1,-(sp) @@ -410,7 +410,7 @@ SmallHeartTiles:dc.b $30,$08,$08,$08,$08,$06,$06,$06,$06,$06 UpdateEkeEkeHUD: ; CODE XREF: sub_10ACE+194p - ; sub_1690A+10p ... + ; RefreshAllHUD+10p ... moveq #$00000000,d7 move.b #ITM_EKEEKE,d0 jsr (j_GetItemQtyAndMaxQty).l @@ -435,7 +435,7 @@ loc_16C68: ; CODE XREF: UpdateEkeEkeHUD+26j ; =============== S U B R O U T I N E ======================================= -UpdateGoldHUD: ; CODE XREF: sub_1690A+8p +RefreshGoldHUD: ; CODE XREF: RefreshAllHUD+8p ; AddGold:loc_177ECp ... movem.l d0-d2/d7-a1,-(sp) moveq #$00000000,d7 @@ -450,7 +450,7 @@ UpdateGoldHUD: ; CODE XREF: sub_1690A+8p move.b #$0A,$00000002(a0) move.b #$0A,$00000003(a0) -loc_16CA6: ; CODE XREF: UpdateGoldHUD+20j +loc_16CA6: ; CODE XREF: RefreshGoldHUD+20j bsr.s UpdateHUDDigits bsr.s UpdateHUDDigits bsr.s UpdateHUDDigits @@ -458,7 +458,7 @@ loc_16CA6: ; CODE XREF: UpdateGoldHUD+20j bsr.w MarkHUDForUpdate movem.l (sp)+,d0-d2/d7-a1 rts -; End of function UpdateGoldHUD +; End of function RefreshGoldHUD ; =============== S U B R O U T I N E ======================================= @@ -477,7 +477,7 @@ UpdateHUDDigits: ; CODE XREF: UpdateMaxHealthHUD:loc_169A8p ; =============== S U B R O U T I N E ======================================= -sub_16CC6: ; CODE XREF: sub_1690A+Cp +RefreshSwordChargeHUD: ; CODE XREF: RefreshAllHUD+Cp ; IncrementSwordCharge:loc_178AEp ... clr.w d0 move.b (g_SwordCharge_0).l,d0 @@ -485,7 +485,7 @@ sub_16CC6: ; CODE XREF: sub_1690A+Cp moveq #$00000006,d7 lea ((g_HUD_Row2+8)).l,a0 lea SwordChargeTiles(pc),a1 -; End of function sub_16CC6 +; End of function RefreshSwordChargeHUD ; =============== S U B R O U T I N E ======================================= @@ -503,7 +503,7 @@ sub_16CDE: ; CODE XREF: UpdateSmallHeartHUD+1Ep ; End of function sub_16CDE ; --------------------------------------------------------------------------- -SwordChargeTiles:dc.b $40,$40,$40,$40,$40,$40,$36 ; DATA XREF: sub_16CC6+14t +SwordChargeTiles:dc.b $40,$40,$40,$40,$40,$40,$36 ; DATA XREF: RefreshSwordChargeHUD+14t dc.b $41,$40,$40,$40,$40,$40,$36 dc.b $42,$40,$40,$40,$40,$40,$36 dc.b $43,$40,$40,$40,$40,$40,$36 diff --git a/code/graphics/staticimages/islandmaproutines.asm b/code/graphics/staticimages/islandmaproutines.asm index 1c8a21a..c46380d 100644 --- a/code/graphics/staticimages/islandmaproutines.asm +++ b/code/graphics/staticimages/islandmaproutines.asm @@ -28,7 +28,7 @@ var_80 = -$80 loc_3E682: ; CODE XREF: DisplayIslandMap+30j move.w (a0)+,(a1)+ dbf d7,loc_3E682 - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l jsr (j_EnableVDPSpriteUpdate).l lea MapDots(pc),a0 lea (g_Blockset).l,a1 @@ -75,11 +75,11 @@ loc_3E682: ; CODE XREF: DisplayIslandMap+30j lea IslandMapBgMap(pc),a0 lea (g_Buffer).l,a1 bsr.w DecompTilemap - lea ((g_BackgroundBlocks+$17E)).l,a1 + lea ((g_ForegroundBlocks+$17E)).l,a1 move.w #$2000,d4 move.w #$0300,d5 bsr.w sub_3ED64 - lea ((g_BackgroundBlocks+$17E)).l,a0 + lea ((g_ForegroundBlocks+$17E)).l,a0 lea ($0000E180).l,a1 move.w #$0640,d0 move.w #$0002,d1 @@ -110,7 +110,7 @@ loc_3E7F6: ; CODE XREF: DisplayIslandMap+1A4j dbf d7,loc_3E7F6 clr.w d0 move.b #$EF,d1 - jsr (j_AndVDPReg).l + jsr (j_MaskVDPReg).l move.w var_82(a6),d0 lea off_3E86C(pc),a0 lsl.w #$02,d0 @@ -165,7 +165,7 @@ off_3E86C: dc.l sub_3EC44 ; DATA XREF: DisplayIslandMap+1B8t sub_3E87C: ; DATA XREF: ROM:0003E874o jsr (j_FadeInFromDarkness).l jsr (j_WaitForNextButtonPress).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l rts ; End of function sub_3E87C @@ -177,7 +177,7 @@ sub_3E890: ; DATA XREF: ROM:0003E878o jsr (j_InitFadeFromBlackParams).l move.b #$01,-$0000008F(a6) move.w #$001C,-$00000092(a6) - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,-$00000085(a6) move.w #$00C8,-$0000008E(a6) clr.w -$00000096(a6) @@ -214,7 +214,7 @@ loc_3E8DA: ; CODE XREF: sub_3E890+44j sub_3E90A: ; DATA XREF: sub_3E890:loc_3E8C8t - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l lea (g_Controller1State).l,a0 lea -$00000085(a6),a1 tst.b (a0) @@ -701,7 +701,7 @@ loc_3EC4A: ; CODE XREF: sub_3EC44+28j beq.s loc_3EC4A loc_3EC6E: ; CODE XREF: sub_3EC44+20j - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l rts ; End of function sub_3EC44 diff --git a/code/graphics/staticimages/lithograph.asm b/code/graphics/staticimages/lithograph.asm index bb05352..650b023 100644 --- a/code/graphics/staticimages/lithograph.asm +++ b/code/graphics/staticimages/lithograph.asm @@ -3,7 +3,7 @@ DisplayLithograph: ; DATA XREF: j_DisplayLithographt - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l move.w #$0000,d0 move.b #$10,d1 jsr (j_OrVDPReg).l ; Enable HInt diff --git a/code/graphics/staticimages/segalogo1.asm b/code/graphics/staticimages/segalogo1.asm index eb1bcf1..aabb56e 100644 --- a/code/graphics/staticimages/segalogo1.asm +++ b/code/graphics/staticimages/segalogo1.asm @@ -13,7 +13,7 @@ DisplaySegaLogo: ; DATA XREF: j_DisplaySegaLogot loc_38634: ; CODE XREF: DisplaySegaLogo+36j jsr (j_WaitUntilVBlank).l - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d0 andi.b #CTRLBF_BUTTONS,d0 dbne d7,loc_38634 diff --git a/code/graphics/staticimages/titlescreen1.asm b/code/graphics/staticimages/titlescreen1.asm index 0b6399a..8561f0e 100644 --- a/code/graphics/staticimages/titlescreen1.asm +++ b/code/graphics/staticimages/titlescreen1.asm @@ -292,7 +292,7 @@ WaitForStartGame: ; CODE XREF: DisplayTitle+20Ap move.w #03599,d7 loc_3998C: ; CODE XREF: WaitForStartGame+1Aj - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l andi.b #CTRLBF_ANYBUTTON,(g_Controller1State).l beq.s loc_399AA jsr (j_WaitUntilVBlank).l @@ -302,7 +302,7 @@ loc_3998C: ; CODE XREF: WaitForStartGame+1Aj loc_399AA: ; CODE XREF: WaitForStartGame+12j ; WaitForStartGame+36j - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l tst.b (g_Controller1State).l bmi.s loc_399C6 jsr (j_WaitUntilVBlank).l @@ -340,7 +340,7 @@ loc_399D6: ; CODE XREF: ROM:000399D8j loc_399E4: ; CODE XREF: ROM:00039A52j clr.b -$0000001D(a6) - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d0 bne.s loc_39A54 move.w #$0136,d0 diff --git a/code/graphics/statusanim.asm b/code/graphics/statusanim.asm index 98e5d9c..33b4e68 100644 --- a/code/graphics/statusanim.asm +++ b/code/graphics/statusanim.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -LoadStatusGfx: ; DATA XREF: sub_10354t +LoadStatusGfx: ; DATA XREF: j_LoadStatusGfxt move.b (byte_FF1147).l,d0 addq.b #$01,(byte_FF1147).l andi.b #$07,d0 diff --git a/code/graphics/visualeffects1.asm b/code/graphics/visualeffects1.asm index f45bb87..3f60aac 100644 --- a/code/graphics/visualeffects1.asm +++ b/code/graphics/visualeffects1.asm @@ -12,7 +12,7 @@ DoVisualEffect: ; CODE XREF: sub_620A+ECp ; sub_620A+100p ... movem.l d0-a6,-(sp) - lea off_E128(pc),a0 + lea VisualFXTable(pc),a0 move.w d0,d1 lsl.l #$02,d1 movea.l (a0,d1.l),a0 @@ -22,36 +22,36 @@ DoVisualEffect: ; CODE XREF: sub_620A+ECp ; End of function DoVisualEffect ; --------------------------------------------------------------------------- -off_E128: dc.l sub_E154 ; DATA XREF: DoVisualEffect+4t - dc.l sub_E154 - dc.l sub_E30E - dc.l sub_E30E - dc.l sub_E4EC - dc.l loc_E4F0 - dc.l sub_E538 - dc.l sub_E56A - dc.l sub_E56A - dc.l sub_E56A - dc.l sub_E56A +VisualFXTable: dc.l WarpPadFx ; DATA XREF: DoVisualEffect+4t + dc.l WarpPadFx + dc.l TreeWarpFx + dc.l TreeWarpFx + dc.l BlackFlash + dc.l WhiteFlash + dc.l RedFlash + dc.l NoleWarp + dc.l NoleWarp + dc.l NoleWarp + dc.l NoleWarp ; =============== S U B R O U T I N E ======================================= -sub_E154: ; CODE XREF: sub_620A+114p +WarpPadFx: ; CODE XREF: sub_620A+114p ; DATA XREF: sub_44Ct ... lea (g_Buffer).l,a5 movea.l a5,a1 lea (g_Pal0Base).l,a0 moveq #$00000037,d7 -loc_E164: ; CODE XREF: sub_E154+12j +loc_E164: ; CODE XREF: WarpPadFx+12j move.w (a0)+,(a1)+ dbf d7,loc_E164 movea.l a5,a0 lea $00000070(a0),a1 move.w #$0187,d7 -loc_E174: ; CODE XREF: sub_E154+50j +loc_E174: ; CODE XREF: WarpPadFx+50j move.w (a0)+,d0 move.w d0,d1 move.w d0,d2 @@ -60,33 +60,33 @@ loc_E174: ; CODE XREF: sub_E154+50j bpl.s loc_E186 clr.w d0 -loc_E186: ; CODE XREF: sub_E154+2Ej +loc_E186: ; CODE XREF: WarpPadFx+2Ej andi.w #$00E0,d1 subi.w #$0020,d1 bpl.s loc_E192 clr.w d1 -loc_E192: ; CODE XREF: sub_E154+3Aj +loc_E192: ; CODE XREF: WarpPadFx+3Aj andi.w #$000E,d2 subi.w #$0002,d2 bpl.s loc_E19E clr.w d2 -loc_E19E: ; CODE XREF: sub_E154+46j +loc_E19E: ; CODE XREF: WarpPadFx+46j or.w d1,d0 or.w d2,d0 move.w d0,(a1)+ dbf d7,loc_E174 move.w #$0000,d7 -loc_E1AC: ; CODE XREF: sub_E154+7Aj +loc_E1AC: ; CODE XREF: WarpPadFx+7Aj move.w #$FFE8,d0 move.w #$0050,d5 -loc_E1B4: ; CODE XREF: sub_E154+76j +loc_E1B4: ; CODE XREF: WarpPadFx+76j move.w #$0000,d6 -loc_E1B8: ; CODE XREF: sub_E154+70j +loc_E1B8: ; CODE XREF: WarpPadFx+70j movem.w d0/d5-d7,-(sp) bsr.w sub_E1DE movem.w (sp)+,d0/d5-d7 @@ -97,13 +97,13 @@ loc_E1B8: ; CODE XREF: sub_E154+70j move.w #$8F02,d0 jsr (SetVDPReg).l rts -; End of function sub_E154 +; End of function WarpPadFx ; =============== S U B R O U T I N E ======================================= -sub_E1DE: ; CODE XREF: sub_E154+68p +sub_E1DE: ; CODE XREF: WarpPadFx+68p lea $00000380(a5),a0 moveq #$00000007,d7 move.w d0,d1 @@ -242,7 +242,7 @@ loc_E2F2: ; CODE XREF: sub_E24E+9Cj ; Attributes: bp-based frame -sub_E30E: ; DATA XREF: ROM:0000E130o +TreeWarpFx: ; DATA XREF: ROM:0000E130o ; ROM:0000E134o var_8E = -$8E @@ -275,10 +275,10 @@ var_82 = -$82 bra.s loc_E376 ; --------------------------------------------------------------------------- -loc_E372: ; CODE XREF: sub_E30E+5Cj +loc_E372: ; CODE XREF: TreeWarpFx+5Cj bsr.w sub_E3C0 -loc_E376: ; CODE XREF: sub_E30E+62j +loc_E376: ; CODE XREF: TreeWarpFx+62j moveq #$0000000B,d0 moveq #$0000000C,d1 jsr (MaskVDPReg).l @@ -287,13 +287,13 @@ loc_E376: ; CODE XREF: sub_E30E+62j bsr.w sub_E40C unlk a6 rts -; End of function sub_E30E +; End of function TreeWarpFx ; =============== S U B R O U T I N E ======================================= -sub_E398: ; CODE XREF: sub_E30E+5Ep +sub_E398: ; CODE XREF: TreeWarpFx+5Ep move.w #$00FF,d7 loc_E39C: ; CODE XREF: sub_E398+24j @@ -314,7 +314,7 @@ loc_E39C: ; CODE XREF: sub_E398+24j ; =============== S U B R O U T I N E ======================================= -sub_E3C0: ; CODE XREF: sub_E30E:loc_E372p +sub_E3C0: ; CODE XREF: TreeWarpFx:loc_E372p lea (g_Pal0Active).l,a0 moveq #$00000037,d7 @@ -340,7 +340,7 @@ loc_E3D8: ; CODE XREF: sub_E3C0+32j ; =============== S U B R O U T I N E ======================================= -sub_E3F8: ; CODE XREF: sub_E30E+30p +sub_E3F8: ; CODE XREF: TreeWarpFx+30p lea (g_Pal0Base).l,a0 lea -$00000080(a6),a1 moveq #$0000001F,d7 @@ -355,7 +355,7 @@ loc_E404: ; CODE XREF: sub_E3F8+Ej ; =============== S U B R O U T I N E ======================================= -sub_E40C: ; CODE XREF: sub_E30E+82p +sub_E40C: ; CODE XREF: TreeWarpFx+82p lea (g_Pal0Base).l,a1 lea -$00000080(a6),a0 moveq #$0000001F,d7 @@ -504,23 +504,23 @@ loc_E4D6: ; CODE XREF: sub_E4C0+12j ; =============== S U B R O U T I N E ======================================= -sub_E4EC: ; DATA XREF: ROM:0000E138o +BlackFlash: ; DATA XREF: ROM:0000E138o clr.l d2 bra.s loc_E4F2 ; --------------------------------------------------------------------------- -loc_E4F0: ; CODE XREF: sub_E832+16j +WhiteFlash: ; CODE XREF: sub_E832+16j ; DATA XREF: ROM:0000E13Co moveq #$FFFFFFFF,d2 -loc_E4F2: ; CODE XREF: sub_E4EC+2j +loc_E4F2: ; CODE XREF: BlackFlash+2j jsr (CopyBasePalleteToActivePalette).l lea (g_Pal0Active).l,a0 movea.l a0,a1 moveq #$00000039,d7 moveq #$0000000E,d6 -loc_E504: ; CODE XREF: sub_E4EC+40j +loc_E504: ; CODE XREF: BlackFlash+40j move.b (a0)+,d0 and.l d6,d0 move.b (a0),d1 @@ -535,7 +535,7 @@ loc_E504: ; CODE XREF: sub_E4EC+40j beq.s loc_E520 not.w d0 -loc_E520: ; CODE XREF: sub_E4EC+30j +loc_E520: ; CODE XREF: BlackFlash+30j and.w d6,d0 move.b d0,(a1)+ move.b d0,d1 @@ -545,18 +545,18 @@ loc_E520: ; CODE XREF: sub_E4EC+30j dbf d7,loc_E504 jsr (j_EnableDMAQueueProcessing).l rts -; End of function sub_E4EC +; End of function BlackFlash ; =============== S U B R O U T I N E ======================================= -sub_E538: ; DATA XREF: ROM:0000E140o +RedFlash: ; DATA XREF: ROM:0000E140o jsr (CopyBasePalleteToActivePalette).l lea (g_Pal0Active).l,a0 moveq #$00000039,d7 -loc_E546: ; CODE XREF: sub_E538+26j +loc_E546: ; CODE XREF: RedFlash+26j move.b (a0),d0 lsr.b #$03,d0 move.b d0,(a0)+ @@ -570,14 +570,14 @@ loc_E546: ; CODE XREF: sub_E538+26j dbf d7,loc_E546 jsr (j_EnableDMAQueueProcessing).l rts -; End of function sub_E538 +; End of function RedFlash ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame -sub_E56A: ; DATA XREF: ROM:0000E144o +NoleWarp: ; DATA XREF: ROM:0000E144o ; ROM:0000E148o ... var_134 = -$134 @@ -599,19 +599,19 @@ var_80 = -$80 bra.s loc_E596 ; --------------------------------------------------------------------------- -loc_E586: ; CODE XREF: sub_E56A+Cj +loc_E586: ; CODE XREF: NoleWarp+Cj move.w #$0130,var_122(a6) move.w #$00C8,var_124(a6) subq.w #$02,var_126(a6) -loc_E596: ; CODE XREF: sub_E56A+1Aj +loc_E596: ; CODE XREF: NoleWarp+1Aj lea (g_Pal0Base).l,a0 lea var_80(a6),a1 bsr.w sub_E780 lea var_120(a6),a0 moveq #$00000027,d7 -loc_E5AA: ; CODE XREF: sub_E56A+48j +loc_E5AA: ; CODE XREF: NoleWarp+48j clr.w (a0)+ move.b #$FF,(a0)+ clr.b (a0)+ @@ -637,7 +637,7 @@ loc_E5AA: ; CODE XREF: sub_E56A+48j bra.s loc_E66C ; --------------------------------------------------------------------------- -loc_E608: ; CODE XREF: sub_E56A+52j +loc_E608: ; CODE XREF: NoleWarp+52j move.w #$0168,var_128(a6) move.w (0000000300).w,var_134(a6) clr.w var_132(a6) @@ -654,27 +654,27 @@ loc_E608: ; CODE XREF: sub_E56A+52j move.w #$0EEE,d0 moveq #$0000003F,d7 -loc_E64C: ; CODE XREF: sub_E56A+E4j +loc_E64C: ; CODE XREF: NoleWarp+E4j move.w d0,(a0)+ dbf d7,loc_E64C jsr (QueueFullPaletteDMA).l jsr (FlushDMACopyQueue).l moveq #$0000003B,d7 -loc_E660: ; CODE XREF: sub_E56A+FEj +loc_E660: ; CODE XREF: NoleWarp+FEj move.l d7,-(sp) bsr.w sub_E8F8 move.l (sp)+,d7 dbf d7,loc_E660 -loc_E66C: ; CODE XREF: sub_E56A+9Cj +loc_E66C: ; CODE XREF: NoleWarp+9Cj lea (g_Buffer).l,a0 move.l #$0DDD0000,(a0)+ move.l #$DEEED000,(a0)+ move.l #$0DDD0000,(a0)+ moveq #$00000004,d7 -loc_E686: ; CODE XREF: sub_E56A+11Ej +loc_E686: ; CODE XREF: NoleWarp+11Ej clr.l (a0)+ dbf d7,loc_E686 lea (g_Buffer).l,a0 @@ -691,11 +691,11 @@ loc_E686: ; CODE XREF: sub_E56A+11Ej bra.s loc_E6B8 ; --------------------------------------------------------------------------- -loc_E6B4: ; CODE XREF: sub_E56A+142j +loc_E6B4: ; CODE XREF: NoleWarp+142j move.w #$0168,d7 -loc_E6B8: ; CODE XREF: sub_E56A+148j - ; sub_E56A+1ACj +loc_E6B8: ; CODE XREF: NoleWarp+148j + ; NoleWarp+1ACj movem.w d7,-(sp) jsr (UpdateControllerInputs).l bsr.w sub_E8F8 @@ -715,18 +715,18 @@ loc_E6B8: ; CODE XREF: sub_E56A+148j bcs.s loc_E702 addq.w #$01,d0 -loc_E702: ; CODE XREF: sub_E56A+194j +loc_E702: ; CODE XREF: NoleWarp+194j move.w d0,var_128(a6) bra.s loc_E712 ; --------------------------------------------------------------------------- -loc_E708: ; CODE XREF: sub_E56A+188j +loc_E708: ; CODE XREF: NoleWarp+188j subq.w #$01,var_128(a6) bpl.s loc_E712 clr.w var_128(a6) -loc_E712: ; CODE XREF: sub_E56A+19Cj - ; sub_E56A+1A2j +loc_E712: ; CODE XREF: NoleWarp+19Cj + ; NoleWarp+1A2j movem.w (sp)+,d7 dbf d7,loc_E6B8 lea var_80(a6),a0 @@ -740,7 +740,7 @@ loc_E712: ; CODE XREF: sub_E56A+19Cj bra.s loc_E768 ; --------------------------------------------------------------------------- -loc_E742: ; CODE XREF: sub_E56A+1C4j +loc_E742: ; CODE XREF: NoleWarp+1C4j moveq #$0000001E,d0 jsr (Sleep).l ; Sleeps for d0 frames jsr (InitFadeFromBlackParams).l @@ -751,21 +751,21 @@ loc_E742: ; CODE XREF: sub_E56A+1C4j bsr.w sub_E78A bsr.w sub_E78A -loc_E768: ; CODE XREF: sub_E56A+1D6j +loc_E768: ; CODE XREF: NoleWarp+1D6j lea var_80(a6),a0 lea (g_Pal0Base).l,a1 bsr.w sub_E780 clr.w (g_Pal0Active).l unlk a6 rts -; End of function sub_E56A +; End of function NoleWarp ; =============== S U B R O U T I N E ======================================= -sub_E780: ; CODE XREF: sub_E56A+36p - ; sub_E56A+98p ... +sub_E780: ; CODE XREF: NoleWarp+36p + ; NoleWarp+98p ... moveq #$0000003F,d7 ; End of function sub_E780 @@ -773,7 +773,7 @@ sub_E780: ; CODE XREF: sub_E56A+36p ; =============== S U B R O U T I N E ======================================= -sub_E782: ; CODE XREF: sub_E56A+D2p +sub_E782: ; CODE XREF: NoleWarp+D2p ; sub_E782+2j move.w (a0)+,(a1)+ dbf d7,sub_E782 @@ -784,11 +784,11 @@ sub_E782: ; CODE XREF: sub_E56A+D2p ; =============== S U B R O U T I N E ======================================= -sub_E78A: ; CODE XREF: sub_E56A+78p - ; sub_E56A+7Cp ... +sub_E78A: ; CODE XREF: NoleWarp+78p + ; NoleWarp+7Cp ... clr.w d7 bsr.w sub_E79A - moveq #$00000013,d0 + moveq #0000000019,d0 jsr (Sleep).l ; Sleeps for d0 frames rts ; End of function sub_E78A @@ -797,7 +797,7 @@ sub_E78A: ; CODE XREF: sub_E56A+78p ; =============== S U B R O U T I N E ======================================= -sub_E79A: ; CODE XREF: sub_E56A+1E8p +sub_E79A: ; CODE XREF: NoleWarp+1E8p ; sub_E78A+2p bsr.w sub_E7AA jsr (QueueFullPaletteDMA).l @@ -808,7 +808,7 @@ sub_E79A: ; CODE XREF: sub_E56A+1E8p ; =============== S U B R O U T I N E ======================================= -sub_E7AA: ; CODE XREF: sub_E56A+C0p +sub_E7AA: ; CODE XREF: NoleWarp+C0p ; sub_E79Ap ... move.l d7,-(sp) lea (g_Pal0Base).l,a0 diff --git a/code/graphics/visualeffects2.asm b/code/graphics/visualeffects2.asm index ed57920..178ee36 100644 --- a/code/graphics/visualeffects2.asm +++ b/code/graphics/visualeffects2.asm @@ -13,7 +13,7 @@ loc_E83E: ; CODE XREF: sub_E832+8j lsr.w #$02,d0 andi.b #$03,d0 cmpi.b #$01,d0 - bcs.w loc_E4F0 + bcs.w WhiteFlash jmp (CopyBasePalleteToActivePalette).l ; End of function sub_E832 @@ -21,7 +21,7 @@ loc_E83E: ; CODE XREF: sub_E832+8j ; =============== S U B R O U T I N E ======================================= -sub_E852: ; CODE XREF: sub_E56A+B4p +sub_E852: ; CODE XREF: NoleWarp+B4p move.w #$0C00,-$0000012A(a6) move.w #$FE00,-$0000012C(a6) move.w #$0E00,-$0000012E(a6) @@ -32,7 +32,7 @@ sub_E852: ; CODE XREF: sub_E56A+B4p ; =============== S U B R O U T I N E ======================================= -sub_E866: ; CODE XREF: sub_E56A+66p +sub_E866: ; CODE XREF: NoleWarp+66p move.w #$0200,-$0000012A(a6) move.w #$0200,-$0000012C(a6) move.w #$0E00,-$0000012E(a6) @@ -43,7 +43,7 @@ sub_E866: ; CODE XREF: sub_E56A+66p ; =============== S U B R O U T I N E ======================================= -sub_E87A: ; CODE XREF: sub_E56A+164p +sub_E87A: ; CODE XREF: NoleWarp+164p ; FUNCTION CHUNK AT 0000E7EA SIZE 00000024 BYTES @@ -79,7 +79,7 @@ loc_E898: ; CODE XREF: sub_E87A+18j ; =============== S U B R O U T I N E ======================================= -sub_E8A8: ; CODE XREF: sub_E56A+15Cp +sub_E8A8: ; CODE XREF: NoleWarp+15Cp move.w -$00000130(a6),d0 bne.s loc_E8B0 rts @@ -118,8 +118,8 @@ loc_E8DA: ; CODE XREF: sub_E8A8+3Cj ; =============== S U B R O U T I N E ======================================= -sub_E8F8: ; CODE XREF: sub_E56A+F8p - ; sub_E56A+158p +sub_E8F8: ; CODE XREF: NoleWarp+F8p + ; NoleWarp+158p lea (g_VDPSpr30_Y).l,a0 moveq #$00000027,d7 diff --git a/code/include/landstalker.inc b/code/include/landstalker.inc index 733c2cf..de4bbb8 100644 --- a/code/include/landstalker.inc +++ b/code/include/landstalker.inc @@ -617,6 +617,7 @@ CHR_Slash: equ $00000044 CHR_LessThan: equ $00000045 CHR_GreaterThan: equ $00000046 CHR_Colon: equ $00000047 +CHR_BEGIN_TALK: equ $00000047 CHR_Dash: equ $00000048 CHR_Apostrophe: equ $00000049 CHR_DoubleQuote: equ $0000004A @@ -630,8 +631,9 @@ CHR_NWArrow: equ $00000051 CHR_NEArrow: equ $00000052 CHR_SEArrow: equ $00000053 CHR_SWArrow: equ $00000054 -CHR_55: equ $00000055 ; String begin -CHR_56: equ $00000056 ; Down arrow prompt +CHR_STR_BEGIN: equ $00000055 ; String begin +CHR_MULT: equ $00000055 +CHR_ARROW_PROMPT: equ $00000056 ; Down arrow prompt CHR_57: equ $00000057 ; Newline CHR_58: equ $00000058 ; Yes/No prompt CHR_59: equ $00000059 ; Pause @@ -650,9 +652,9 @@ CHR_65: equ $00000065 CHR_66: equ $00000066 CHR_67: equ $00000067 CHR_68: equ $00000068 -CHR_69: equ $00000069 -CHR_6A: equ $0000006A -CHR_6B: equ $0000006B +CHR_HYPHENATION_POINT: equ $00000069 +CHR_BREAKING_SPACE: equ $0000006A +CHR_BREAK_POINT: equ $0000006B CHR_6C: equ $0000006C CHR_6D: equ $0000006D CHR_6E: equ $0000006E @@ -660,6 +662,12 @@ CHR_6F: equ $0000006F ; --------------------------------------------------------------------------- +; enum Constants +NUM_CHAR_NAMES: equ $0000003D +SCRIPT_STRINGS_BEGIN: equ $0000004D + +; --------------------------------------------------------------------------- + ; enum CTRL CTRL_UP: equ $00000000 CTRL_DOWN: equ $00000001 @@ -782,23 +790,24 @@ AnimationIndex1: equ $00000025 AnimationFrame: equ $00000026 AnimationFrame1: equ $00000027 HeightmapOffset: equ $00000028 -Unk2A: equ $0000002A -Unk2B: equ $0000002B -Action: equ $0000002C +BehavParam: equ $0000002A +BehavCmd: equ $0000002B +QueuedAction: equ $0000002C Action1: equ $0000002D -AnimAction: equ $0000002E +PrevAction: equ $0000002E AnimAction1: equ $0000002F SpriteUnderneath: equ $00000030 BehaviourLUTPtr: equ $00000032 BehaviourLUTIndex: equ $00000034 GoldOrChestContents: equ $00000036 ChestIndex: equ $00000037 -Flags4: equ $00000038 +Flags4: equ $00000038 ; Bit 0 = Invincible / Solid FloorHeight: equ $00000039 Dialogue: equ $0000003A SpriteType: equ $0000003B AttackStrength: equ $0000003C CurrentHealth: equ $0000003E +CurrentSubHealth: equ $0000003F InitX: equ $00000040 InitY: equ $00000041 InitSubX: equ $00000042 @@ -818,22 +827,20 @@ Unk50: equ $00000050 Unk51: equ $00000051 InitZ: equ $00000052 HitBoxZEnd: equ $00000054 +HitBoxSubZEnd: equ $00000055 Unk56: equ $00000056 Unk57: equ $00000057 TempHealth: equ $00000058 -Unk5A: equ $0000005A -Unk5B: equ $0000005B -Unk5C: equ $0000005C -Unk5D: equ $0000005D +TargetX: equ $0000005A +TargetY: equ $0000005B +TargetSubX: equ $0000005C +TargetSubY: equ $0000005D Unk5E: equ $0000005E Unk5F: equ $0000005F Unk60: equ $00000060 Unk61: equ $00000061 -Unk62: equ $00000062 -Unk63: equ $00000063 -Unk64: equ $00000064 -Unk65: equ $00000065 -Unk66: equ $00000066 +RepeatPtr: equ $00000062 +RepeatCount: equ $00000066 Unk67: equ $00000067 Unk68: equ $00000068 Unk69: equ $00000069 @@ -842,18 +849,19 @@ Unk6B: equ $0000006B Unk6C: equ $0000006C Unk6D: equ $0000006D Unk6E: equ $0000006E -Unk6F: equ $0000006F +AnimFlags: equ $0000006F Unk70: equ $00000070 TileCopySource: equ $00000071 InitBehaviourLUTPtr: equ $00000072 InitGoldOrChestCont: equ $00000076 ItemDrop: equ $00000077 -InitFlags4: equ $00000078 +InitFlags4_DropProbability: equ $00000078 ItemDropProbability: equ $00000079 InitDialogue: equ $0000007A InitSpriteType: equ $0000007B Defence: equ $0000007C MaxHealth: equ $0000007E SPRITE_SIZE: equ $00000080 +ALL_SPRITES_SIZE: equ $00000800 ; diff --git a/code/include/ram.inc b/code/include/ram.inc index dfc83e8..0e14c55 100644 --- a/code/include/ram.inc +++ b/code/include/ram.inc @@ -544,7 +544,7 @@ g_FrameCount: equ $00FF0FDE g_MinuteCount: equ $00FF0FE0 g_HourCount: equ $00FF0FE2 g_Flags: equ $00FF1000 -g_Vars: equ $00FF1020 +g_AdditionalFlags: equ $00FF1020 g_Inventory: equ $00FF1040 g_ChestOpenFlags: equ $00FF1080 g_RoomVisitedFlags: equ $00FF10C0 @@ -563,7 +563,7 @@ g_RoomMinHeight: equ $00FF1130 g_RoomMaxHeight: equ $00FF1131 g_UpdateHUDFlag: equ $00FF1132 byte_FF1133: equ $00FF1133 -unk_FF1134: equ $00FF1134 +byte_FF1134: equ $00FF1134 g_PlayerMoving: equ $00FF113C g_SwordButtonMask: equ $00FF113D g_LadderClimbJumpState: equ $00FF113E @@ -578,7 +578,7 @@ g_PlayerStatus: equ $00FF1146 byte_FF1147: equ $00FF1147 byte_FF1148: equ $00FF1148 byte_FF1149: equ $00FF1149 -byte_FF114A: equ $00FF114A +g_ParalysisCheckCount: equ $00FF114A g_FridayAnimation1: equ $00FF114B g_FridayAnimFramecount: equ $00FF114C g_FridayAnimation2: equ $00FF114D @@ -613,10 +613,10 @@ g_RmNum1: equ $00FF1204 RmNum2: equ $00FF1206 word_FF1208: equ $00FF1208 g_SwordCharge_0: equ $00FF120A -word_FF120C: equ $00FF120C +g_CarriedEntity: equ $00FF120C g_Gold: equ $00FF120E -unk_FF1210: equ $00FF1210 -unk_FF1218: equ $00FF1218 +word_FF1210: equ $00FF1210 +WarpTbl: equ $00FF1218 g_RoomFallDest: equ $00FF12DA g_RoomClimbDest: equ $00FF12DC g_ControllerPlayback: equ $00FF12DE @@ -666,7 +666,7 @@ word_FF1920: equ $00FF1920 word_FF1922: equ $00FF1922 word_FF1924: equ $00FF1924 g_Character: equ $00FF1926 -g_speakerSpriteId: equ $00FF1928 +g_SpeakerSpriteId: equ $00FF1928 unk_FF192A: equ $00FF192A unk_FF193E: equ $00FF193E word_FF1A7E: equ $00FF1A7E @@ -2315,8 +2315,8 @@ Sprite15_Defence: equ $00FF5BFC Sprite15_MaxHealth: equ $00FF5BFE EndOfSpriteTable: equ $00FF5C00 g_Blockset: equ $00FF5C02 -g_BackgroundBlocks: equ $00FF7C02 -g_ForegroundBlocks: equ $00FFA6CA +g_ForegroundBlocks: equ $00FF7C02 +g_BackgroundBlocks: equ $00FFA6CA g_HeightMap: equ $00FFD192 Stack: equ $00FFFC5A ExceptType: equ $00FFFFF8 diff --git a/code/inventory/inventory1.asm b/code/inventory/inventory1.asm index 1711167..7ecd192 100644 --- a/code/inventory/inventory1.asm +++ b/code/inventory/inventory1.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -CheckForMenuOpen: ; CODE XREF: sub_16DC+10p +CheckForMenuOpen: ; CODE XREF: GameLoop+10p ; FUNCTION CHUNK AT 0000774A SIZE 0000001C BYTES @@ -40,7 +40,7 @@ loc_7654: ; CODE XREF: CheckForMenuOpen+26j clr.w d6 bsr.w FillVSRAMOffset1 bsr.w FlushDMACopyQueue - lea ((g_BackgroundBlocks+$180)).l,a0 + lea ((g_ForegroundBlocks+$180)).l,a0 move.w #$04BF,d7 loc_76A0: ; CODE XREF: CheckForMenuOpen+80j @@ -102,7 +102,7 @@ sub_7718: ; CODE XREF: CheckForMenuOpen+BAp beq.s loc_7744 clr.w (g_SwordCharge_0).l movem.l d0-d1/a0,-(sp) - jsr (sub_103AE).l + jsr (j_RefreshSwordChargeHUD).l jsr (j_MarkHUDForUpdate).l jsr (j_RefreshHUD).l movem.l (sp)+,d0-d1/a0 @@ -162,7 +162,7 @@ locret_77A4: ; CODE XREF: CheckForMenuOpen+6j LoadMagicSwordGfx: ; CODE XREF: j_LoadMagicSwordGfxj - ; sub_26E8+38p ... + ; LoadGame+38p ... bsr.w FlushDMACopyQueue move.b (g_EquippedSword).l,d0 beq.s locret_77F2 diff --git a/code/inventory/inventory3.asm b/code/inventory/inventory3.asm index 59d6ce4..23c5cf8 100644 --- a/code/inventory/inventory3.asm +++ b/code/inventory/inventory3.asm @@ -33,7 +33,7 @@ loc_D2AE: ; CODE XREF: sub_D25C+4Aj dbf d7,loc_D28A lea (g_Pal1Base).l,a0 lea (g_Buffer).l,a1 - lea g_Buffer+$1C-g_Buffer(a1),a2 + lea $0000001C(a1),a2 moveq #$0000001F,d7 loc_D2C8: ; CODE XREF: sub_D25C+6Ej @@ -48,7 +48,7 @@ loc_D2DE: ; CODE XREF: sub_D25C+84j move.w (a0)+,(a1)+ dbf d7,loc_D2DE lea (g_Buffer).l,a0 - move.w (unk_FF0F9C).l,g_Buffer+4-g_Buffer(a0) + move.w (unk_FF0F9C).l,0000000004(a0) rts ; End of function sub_D25C @@ -275,7 +275,7 @@ sub_D4AE: ; CODE XREF: CheckForMenuOpen+88p ; ConsumeItem+14p ... bsr.w sub_D308 lea (g_Buffer).l,a1 - lea g_Buffer+$84-g_Buffer(a1),a0 + lea $00000084(a1),a0 move.w (a0),d0 move.w #$A000,d0 ori.w #$0000,d0 @@ -285,7 +285,7 @@ loc_D4CA: ; CODE XREF: sub_D4AE+1Ej move.w d0,(a0)+ dbf d7,loc_D4CA bsr.w sub_D50C - lea ((g_BackgroundBlocks+$204)).l,a0 + lea ((g_ForegroundBlocks+$204)).l,a0 move.w (a0)+,d0 move.w #$043E,d7 diff --git a/code/inventory/inventory4.asm b/code/inventory/inventory4.asm index 7fc4d5c..b441ad4 100644 --- a/code/inventory/inventory4.asm +++ b/code/inventory/inventory4.asm @@ -52,7 +52,7 @@ loc_D5D2: ; CODE XREF: sub_D5C8+2j move.w #$C000,d0 loc_D5D6: ; CODE XREF: sub_D5C8+8j - move.b #$55,d0 + move.b #CHR_MULT,d0 move.w d0,(a0)+ move.b d1,d0 addq.b #$01,d0 @@ -82,23 +82,23 @@ loc_D5FC: ; CODE XREF: sub_D5E4+10j loc_D600: ; CODE XREF: sub_D5E4+16j ; sub_D5E4:loc_D634j move.b (a2)+,d0 - cmpi.b #$69,d0 + cmpi.b #CHR_HYPHENATION_POINT,d0 bne.s loc_D616 - move.b #$48,d0 + move.b #CHR_Dash,d0 move.w d0,(a0) lea $00000048(a1),a0 bra.w loc_D634 ; --------------------------------------------------------------------------- loc_D616: ; CODE XREF: sub_D5E4+22j - cmpi.b #$6A,d0 + cmpi.b #CHR_BREAKING_SPACE,d0 bne.s loc_D624 lea $00000048(a1),a0 bra.w loc_D634 ; --------------------------------------------------------------------------- loc_D624: ; CODE XREF: sub_D5E4+36j - cmpi.b #$6B,d0 + cmpi.b #CHR_BREAK_POINT,d0 bne.s loc_D632 lea $00000048(a1),a0 bra.w loc_D634 @@ -205,7 +205,7 @@ loc_D6C8: ; CODE XREF: ROM:0000D4A6p dc.w SND_CursorMove ; --------------------------------------------------------------------------- bsr.w sub_D730 - lea ($00FF2C0A).l,a0 + lea ((g_Buffer+$A)).l,a0 subq.w #$01,(a0) moveq #$0000000B,d7 @@ -284,7 +284,7 @@ sub_D756: ; CODE XREF: sub_D714+Cp clr.w d2 lea (g_VDPSpr01_Y).l,a0 lea (g_Buffer).l,a1 - move.w g_Buffer+4-g_Buffer(a1),d3 + move.w 0000000004(a1),d3 move.w (unk_FF0F9C).l,d4 sub.w d3,d4 andi.b #$3F,d4 @@ -339,7 +339,7 @@ loc_D7C4: ; CODE XREF: sub_D756+6Aj sub_D7DE: ; CODE XREF: ROM:0000D436p ; ROM:loc_D440p ... lea (g_Buffer).l,a1 - lea g_Buffer+6-g_Buffer(a1),a0 + lea 0000000006(a1),a0 subq.w #$01,(a0) bpl.s loc_D7F2 clr.w (a0) @@ -383,7 +383,7 @@ loc_D814: ; CODE XREF: sub_D7DE:loc_D7F2j sub_D828: ; CODE XREF: sub_D50C+40p ; sub_D7DE:loc_D814p ... lea (g_Buffer).l,a1 - lea g_Buffer+6-g_Buffer(a1),a0 + lea 0000000006(a1),a0 move.w (a0),d0 lea $00000084(a1),a0 mulu.w #$0048,d0 @@ -414,7 +414,7 @@ sub_D86C: ; CODE XREF: sub_D50C+1Ap ; sub_EC60+14p ... movem.w d0-d1,-(sp) lea (g_Buffer).l,a1 - lea g_Buffer+$84-g_Buffer(a1),a0 + lea $00000084(a1),a0 mulu.w #$0048,d1 add.w d0,d1 add.w d0,d1 @@ -502,7 +502,7 @@ loc_D90A: ; CODE XREF: sub_D902+4j loc_D92C: ; CODE XREF: sub_D902+Aj ; sub_D902+26j lea (g_VDPSpr00_Y).l,a0 - move.w d0,g_VDPSpr00_X-g_VDPSpr00_Y(a0) + move.w d0,0000000006(a0) move.w d1,(a0) move.b #$0F,$00000002(a0) move.w #$A0A8,d2 diff --git a/code/inventory/inventory5.asm b/code/inventory/inventory5.asm index 54c9b6f..7c36e1e 100644 --- a/code/inventory/inventory5.asm +++ b/code/inventory/inventory5.asm @@ -52,7 +52,7 @@ loc_EA6C: ; CODE XREF: sub_EA4A+1Ej lsr.w #$04,d0 dbf d7,loc_EA62 lea (g_Buffer).l,a1 - lea g_Buffer+$18-g_Buffer(a1),a0 + lea $00000018(a1),a0 lea $0000001A(a1),a1 lea (unk_FF1BF4).l,a2 move.b (a2),d0 @@ -75,7 +75,7 @@ loc_EA98: ; CODE XREF: sub_EA4A+4Aj loc_EAA6: ; CODE XREF: sub_EAD4+54j lea (g_Buffer).l,a1 - lea g_Buffer+$18-g_Buffer(a1),a0 + lea $00000018(a1),a0 lea $0000001A(a1),a1 lea (unk_FF1BF4).l,a2 move.w (a1),d1 @@ -121,7 +121,7 @@ loc_EB02: ; CODE XREF: sub_EAD4:loc_EB7Aj ; sub_EAD4:loc_EB86j ... move.w (unk_FF0F9C).l,d0 lea (g_Buffer).l,a0 - move.w d0,g_Buffer+4-g_Buffer(a0) + move.w d0,0000000004(a0) move.w d0,$00000002(a0) loc_EB16: ; CODE XREF: sub_EAD4+9Cj @@ -135,7 +135,7 @@ loc_EB16: ; CODE XREF: sub_EAD4+9Cj andi.b #CTRLBF_AC,d0 ; A or C bne.w loc_EE12 lea (g_Buffer).l,a1 - lea g_Buffer+$18-g_Buffer(a1),a0 + lea $00000018(a1),a0 lea $0000001A(a1),a1 move.b d1,d0 btst #CTRL_UP,d0 @@ -304,7 +304,7 @@ sub_EC34: ; CODE XREF: ROM:0000EAD0p bsr.w sub_EA4A bsr.s InitEquipGreyedOutPal lea (g_Buffer).l,a1 - lea g_Buffer+$84-g_Buffer(a1),a0 + lea $00000084(a1),a0 move.w #$A000,d0 ori.w #$0000,d0 move.w #$0B63,d7 diff --git a/code/inventory/inventory6.asm b/code/inventory/inventory6.asm index b2da4d7..fe4933d 100644 --- a/code/inventory/inventory6.asm +++ b/code/inventory/inventory6.asm @@ -156,7 +156,7 @@ loc_EE0C: ; CODE XREF: ROM:0000EDF8j loc_EE12: ; CODE XREF: sub_EAD4+5Ej lea (g_Buffer).l,a1 - lea g_Buffer+$18-g_Buffer(a1),a0 + lea $00000018(a1),a0 lea $0000001A(a1),a1 lea EquipInventoryLayout(pc),a2 move.w (a0),d0 @@ -174,7 +174,7 @@ loc_EE44: ; CODE XREF: sub_EAD4+360j move.w (a1),d1 add.w d1,d1 lea (g_Buffer).l,a2 - lea g_Buffer+$10-g_Buffer(a2,d1.w),a2 + lea $00000010(a2,d1.w),a2 move.w (a0),(a2) lea ((g_Buffer+$10)).l,a0 clr.w d0 @@ -306,7 +306,7 @@ loc_EFB8: ; CODE XREF: ROM:0000EF2Ej bne.w loc_EEF6 move.w -$00000004(a6),d0 move.b d0,(g_SaveSlot).l - jsr (sub_154C).l + jsr (GetCurrentSaveSlot).l jsr (WaitUntilVBlank).l move.w -$00000004(a6),d0 bsr.w sub_F72E @@ -686,7 +686,7 @@ loc_F27A: ; CODE XREF: sub_F250+1Cj sub_F282: ; CODE XREF: ROM:0000F0ECp ; sub_F202+4p ... - lea off_F296(pc),a0 + lea SaveGameWindowBegin(pc),a0 andi.b #$03,d0 ext.w d0 ext.l d0 @@ -696,7 +696,7 @@ sub_F282: ; CODE XREF: ROM:0000F0ECp ; End of function sub_F282 ; --------------------------------------------------------------------------- -off_F296: dc.l g_Buffer+$56 ; DATA XREF: sub_F282t +SaveGameWindowBegin:dc.l g_Buffer+$56 ; DATA XREF: sub_F282t dc.l g_Buffer+$7A dc.l g_Buffer+$376 dc.l g_Buffer+$39A @@ -706,7 +706,7 @@ off_F296: dc.l g_Buffer+$56 ; DATA XREF: sub_F282t sub_F2A6: ; CODE XREF: sub_F13A+4p move.w -$00000002(a6),d0 - lea word_F2BE(pc),a0 + lea SaveGameNigelPos(pc),a0 andi.b #$03,d0 ext.w d0 ext.l d0 @@ -716,7 +716,7 @@ sub_F2A6: ; CODE XREF: sub_F13A+4p ; End of function sub_F2A6 ; --------------------------------------------------------------------------- -word_F2BE: dc.w $00A4,$00CC ; DATA XREF: sub_F2A6+4t +SaveGameNigelPos:dc.w $00A4,$00CC ; DATA XREF: sub_F2A6+4t dc.w $0134,$00CC dc.w $00A4,$011C dc.w $0134,$011C @@ -731,7 +731,7 @@ byte_F2DB: dc.b $0F,$06,$06,$06,$06,$00,$FF ; DATA XREF: sub_F0F8+Ao sub_F2E2: ; CODE XREF: ROM:loc_F024p ; sub_FA24p ... - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d1 move.b -$00000008(a6),d0 bne.s loc_F2FA diff --git a/code/items/items2.asm b/code/items/items2.asm index 55d1ab0..e541c3c 100644 --- a/code/items/items2.asm +++ b/code/items/items2.asm @@ -45,11 +45,11 @@ ItemUseDetoxGrass: ; CODE XREF: ROM:00008626j ; --------------------------------------------------------------------------- ItemUseGaiaStatue: ; CODE XREF: ROM:0000862Cj - btst #$02,(g_Vars+7).l ; Check for lava room flag + btst #$02,(g_AdditionalFlags+7).l ; Check for lava room flag bne.s loc_8758 cmpi.w #$020A,(g_RmNum1).l bne.s loc_8758 - bset #$02,(g_Vars+7).l + bset #$02,(g_AdditionalFlags+7).l bra.s loc_8762 ; --------------------------------------------------------------------------- diff --git a/code/items/items3.asm b/code/items/items3.asm index 65561d4..5ed2429 100644 --- a/code/items/items3.asm +++ b/code/items/items3.asm @@ -5,7 +5,7 @@ ItemUseGarlic: ; CODE XREF: ROM:0000864Aj bne.w ReturnFailure cmpi.b #$11,(Player_Y).l bhi.w ReturnFailure - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; --------------------------------------------------------------------------- ItemUseAntiparalyze: ; CODE XREF: ROM:00008650j @@ -37,9 +37,9 @@ ItemUseEinsteinWhistle: ; CODE XREF: ROM:00008656j subi.b #$1E,d0 cmpi.b #$04,d0 bcc.w ReturnFailure - btst #$00,(g_Vars+6).l + btst #$00,(g_AdditionalFlags+6).l bne.w ReturnFailure - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; --------------------------------------------------------------------------- ItemUseSpellbook: ; CODE XREF: ROM:0000865Cj @@ -52,7 +52,7 @@ ItemUseLithograph: ; CODE XREF: ROM:00008662j ; --------------------------------------------------------------------------- ItemUsePawnTicket: ; CODE XREF: ROM:00008668j - bset #$07,(g_Vars+$19).l + bset #$07,(g_AdditionalFlags+$19).l bne.w ReturnFailure loc_88DE: ; CODE XREF: ROM:00008928j @@ -66,7 +66,7 @@ loc_88F2: ; CODE XREF: ROM:000088ECj move.w d0,(Player_CurrentHealth).l move.w #$000A,d0 jsr (j_AddGold).l - jsr (j_RefreshMaxHealthHUD).l + jsr (j_RefreshCurrentHealthHUD).l jsr (j_MarkHUDForUpdate).l jsr (j_RefreshHUD).l jsr (j_EnableDMAQueueProcessing).l @@ -96,15 +96,15 @@ ItemUseGolasEye: ; CODE XREF: ROM:0000866Ej bcc.w ReturnFailure cmpi.b #$20,(Player_FloorHeight).l bne.w ReturnFailure - btst #$06,(g_Vars+$A).l + btst #$06,(g_AdditionalFlags+$A).l bne.w ReturnFailure - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; --------------------------------------------------------------------------- ItemUseDeathStatue: ; CODE XREF: ROM:00008674j move.w #$001C,d0 jsr (j_PrintString).l - move.w #$0014,d6 + move.w #00020,d6 bsr.w GenerateRandomNumber cmpi.b #$08,d7 bcs.s loc_899A @@ -133,7 +133,7 @@ loc_89C6: ; CODE XREF: ROM:00008998j subi.w #$000C,d7 move.b DeathStatueItemBonus(pc,d7.w),d0 move.b #$09,d1 - jsr (sub_22ED4).l + jsr (j_SetItemQuantity).l loc_89D8: ; CODE XREF: ROM:000089A6j ; ROM:000089C4j @@ -190,7 +190,7 @@ ItemUseLogs: ; CODE XREF: ROM:00008686j andi.w #$FEFE,d0 cmpi.w #$2C2E,d0 bne.w ReturnFailure - bset #$00,(g_Vars+$B).l + bset #$00,(g_AdditionalFlags+$B).l bne.w ReturnFailure bsr.w ConsumeItem bra.w ReturnSuccess @@ -208,7 +208,7 @@ loc_8A7A: ; CODE XREF: ROM:00008A52j andi.b #$FE,d0 cmpi.w #$0010,d0 bne.w ReturnFailure - bset #$01,(g_Vars+$B).l + bset #$01,(g_AdditionalFlags+$B).l bne.w ReturnFailure bsr.w ConsumeItem bra.w ReturnSuccess @@ -229,7 +229,7 @@ ItemUseIdolStone: ; CODE XREF: ROM:00008692j bcs.w ReturnFailure cmpi.b #$1B,(Player_Y).l bhi.w ReturnFailure - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; --------------------------------------------------------------------------- ItemUseKey: ; CODE XREF: ROM:00008698j @@ -245,12 +245,12 @@ ItemUseKey: ; CODE XREF: ROM:00008698j bne.w ReturnFailure loc_8B2A: ; CODE XREF: ROM:00008B20j - jsr (sub_103BE).l + jsr (j_CheckUnlockDoor).l bcc.w ReturnFailure loc_8B34: ; CODE XREF: ROM:00008B1Aj bsr.s ConsumeItem - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; --------------------------------------------------------------------------- ItemUseBell: ; CODE XREF: ROM:0000869Ej @@ -269,7 +269,7 @@ CheckForLifestock: ; CODE XREF: sub_620A+49Cp loc_8B4C: ; CODE XREF: CheckForLifestock+38j tst.w (a0) bmi.s loc_8B8C - cmpi.b #$7F,(a0) + cmpi.b #$7F,X(a0) beq.s loc_8B78 cmpi.b #SpriteB_Item,SpriteGraphic(a0) bne.s loc_8B68 @@ -311,7 +311,7 @@ loc_8B8C: ; CODE XREF: CheckForLifestock+Aj ItemUseShortcake: ; CODE XREF: ROM:000086A4j bsr.w ConsumeItem - bra.w loc_8BB2 + bra.w ReturnSuccessAndEnablePostUse ; =============== S U B R O U T I N E ======================================= @@ -328,7 +328,7 @@ ConsumeItem: ; CODE XREF: ROM:000086DCp ; --------------------------------------------------------------------------- -loc_8BB2: ; CODE XREF: ROM:0000884Aj +ReturnSuccessAndEnablePostUse: ; CODE XREF: ROM:0000884Aj ; ROM:000088C2j ... bset #$07,(byte_FF1152).l @@ -388,8 +388,8 @@ PostUseEinsteinWhistle: ; CODE XREF: ROM:000086B6j move.w #$0230,(g_RmNum1).l ; Wood cutter area move.w #$1732,(Player_X).l bset #$06,(Player_Flags2).l - bset #$00,(g_Vars+6).l - bsr.w loc_620E + bset #$00,(g_AdditionalFlags+6).l + bsr.w WarpToRoom trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_MusicDogWhistle @@ -401,19 +401,19 @@ PostUseEinsteinWhistle: ; CODE XREF: ROM:000086B6j movem.l (sp)+,d0 move.l d0,(Player_X).l bclr #$06,(Player_Flags2).l - bclr #$00,(g_Vars+6).l - bsr.w loc_620E + bclr #$00,(g_AdditionalFlags+6).l + bsr.w WarpToRoom move.b (g_BGM).l,d0 trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_LoadFromD0 ; --------------------------------------------------------------------------- - bset #$00,(g_Vars+6).l + bset #$00,(g_AdditionalFlags+6).l rts ; --------------------------------------------------------------------------- PostUseGolasEye: ; CODE XREF: ROM:000086BCj - bset #$06,(g_Vars+$A).l + bset #$06,(g_AdditionalFlags+$A).l bset #$00,(g_Flags+1).l rts ; --------------------------------------------------------------------------- @@ -424,11 +424,11 @@ PostUseIdolStone: ; CODE XREF: ROM:000086C2j dc.w SND_Rumble ; --------------------------------------------------------------------------- move.b #$08,d0 - bsr.w sub_4B52 + bsr.w DoTileSwap move.w #$001E,d0 jsr (Sleep).l ; Sleeps for d0 frames move.b #$10,d0 - bsr.w sub_4B52 + bsr.w DoTileSwap bset #$06,(g_Flags).l rts ; --------------------------------------------------------------------------- @@ -455,7 +455,7 @@ PostUseKey: ; CODE XREF: ROM:000086C8j loc_8CEE: ; CODE XREF: ROM:00008CC8j ; ROM:00008CCEj - jsr (sub_103A4).l + jsr (j_UnlockDoor).l rts ; --------------------------------------------------------------------------- @@ -469,7 +469,7 @@ PostUseShortcake: ; CODE XREF: ROM:000086CEj jsr (j_PlayCutsceneScript).l move.b #$00,d0 move.b #$09,d1 - jsr (sub_22ED4).l + jsr (j_SetItemQuantity).l move.w #$FFFF,d0 lea (Player_X).l,a5 jsr (j_AddHealth).l @@ -484,10 +484,10 @@ loc_8D44: ; CODE XREF: ROM:00008D00j jsr (j_FlushDMACopyQueue).l jsr (j_PlayCutsceneScript).l move.w #$00FF,(Player_CurrentHealth).l - jsr (j_RefreshMaxHealthHUD).l + jsr (j_RefreshCurrentHealthHUD).l move.b #$00,d0 move.b #$00,d1 - jsr (sub_22ED4).l + jsr (j_SetItemQuantity).l jsr (j_UpdateEkeEkeHUD).l jsr (j_MarkHUDForUpdate).l jsr (j_RefreshHUD).l diff --git a/code/maps/animtilesets.asm b/code/maps/animtilesets.asm index 069239b..f9994a6 100644 --- a/code/maps/animtilesets.asm +++ b/code/maps/animtilesets.asm @@ -3,8 +3,8 @@ LoadAnimTiles: ; CODE XREF: LoadRoom_0+60p - lea (unk_FF1134).l,a4 - lea (unk_FF1210).l,a5 + lea (byte_FF1134).l,a4 + lea (word_FF1210).l,a5 lea (unk_FF1860).l,a6 clr.w (a5) clr.w $00000004(a5) @@ -57,11 +57,11 @@ locret_9DA0: ; CODE XREF: LoadAnimTiles+28j ; =============== S U B R O U T I N E ======================================= -sub_9DA2: ; CODE XREF: sub_7052+15Ap +sub_9DA2: ; CODE XREF: CheckOpenChest+15Ap ; sub_7250+Ep ; DATA XREF: ... - lea (unk_FF1134).l,a4 - lea (unk_FF1210).l,a5 + lea (byte_FF1134).l,a4 + lea (word_FF1210).l,a5 lea (unk_FF1860).l,a6 bsr.s sub_9DBC addq.w #$04,a4 diff --git a/code/maps/chests1.asm b/code/maps/chests1.asm index a415854..fc7a515 100644 --- a/code/maps/chests1.asm +++ b/code/maps/chests1.asm @@ -10,8 +10,8 @@ LookupChestContents: ; DATA XREF: j_LookupChestContentst add.b (g_chestCount).l,d1 lea ChestContents(pc),a0 move.b (a0,d1.w),d0 - move.b d0,$00000036(a1) ; ChestContents - move.b d1,$00000037(a1) ; ChestIdx + move.b d0,GoldOrChestContents(a1) ; ChestContents + move.b d1,ChestIndex(a1) ; ChestIdx addq.b #$01,(g_chestCount).l rts ; End of function LookupChestContents diff --git a/code/maps/chests2.asm b/code/maps/chests2.asm index 9c32413..7d72eab 100644 --- a/code/maps/chests2.asm +++ b/code/maps/chests2.asm @@ -25,7 +25,7 @@ locret_9EBC4: ; CODE XREF: sub_9EB9C+8j CheckIfChestOpened: ; DATA XREF: j_CheckIfChestOpenedt clr.w d0 - move.b $00000037(a1),d0 + move.b ChestIndex(a1),d0 move.b d0,d1 andi.b #$07,d1 lsr.b #$03,d0 diff --git a/code/maps/customroomactions1.asm b/code/maps/customroomactions1.asm index 1f3fbfb..32d95e0 100644 --- a/code/maps/customroomactions1.asm +++ b/code/maps/customroomactions1.asm @@ -1,3 +1,4 @@ +CustomRoomActions module ; =============== S U B R O U T I N E ======================================= @@ -5,54 +6,54 @@ DoCustomRoomActions: ; CODE XREF: CheckFlags+6p cmpi.w #$0276,(RmNum2).l - bne.s loc_19B74 - bclr #$03,(g_Vars+9).l + bne.s _Next0 + bclr #$03,(g_AdditionalFlags+9).l -loc_19B74: ; CODE XREF: DoCustomRoomActions+8j +_Next0: ; CODE XREF: DoCustomRoomActions+8j cmpi.w #$01AA,(g_RmNum1).l - bne.s loc_19BA8 ; Gumi + bne.s _Next1 ; Gumi cmpi.b #$22,(Player_Y).l bcs.s loc_19B94 cmpi.b #$28,(Player_Y).l - bcs.w locret_1A308 + bcs.w EndCustomRoomAction loc_19B94: ; CODE XREF: DoCustomRoomActions+24j move.b #$00,d0 bsr.w HideSpriteAtD0 move.b #$01,d0 bsr.w HideSpriteAtD0 - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19BA8: ; CODE XREF: DoCustomRoomActions+1Aj +_Next1: ; CODE XREF: DoCustomRoomActions+1Aj cmpi.w #$0259,(g_RmNum1).l ; Gumi - bne.s loc_19BCA ; Swamp shrine boss room + bne.s _Next2 ; Swamp shrine boss room btst #$02,(g_Flags+2).l - bne.w locret_1A308 + bne.w EndCustomRoomAction move.w #$FFFF,(Sprite3_X).l - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19BCA: ; CODE XREF: DoCustomRoomActions+4Ej +_Next2: ; CODE XREF: DoCustomRoomActions+4Ej cmpi.w #$001C,(g_RmNum1).l ; Swamp shrine boss room - bne.s loc_19BEC ; Path between Gumi and Ryuma + bne.s _Next3 ; Path between Gumi and Ryuma btst #$05,(g_Flags+2).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.w #$FFFF,(Sprite1_X).l - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19BEC: ; CODE XREF: DoCustomRoomActions+70j +_Next3: ; CODE XREF: DoCustomRoomActions+70j cmpi.w #$01C1,(g_RmNum1).l ; Path between Gumi and Ryuma - bne.s loc_19C14 ; Ryuma entrance to thieve's cave + bne.s _Next4 ; Ryuma entrance to thieve's cave btst #$06,(g_Flags+2).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.w #$2119,(Sprite2_X).l clr.w (Sprite2_Z).l - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19C14: ; CODE XREF: DoCustomRoomActions+92j +_Next4: ; CODE XREF: DoCustomRoomActions+92j cmpi.w #$00B7,(g_RmNum1).l ; Ryuma entrance to thieve's cave bne.s loc_19C38 ; Thieve's Cave Entrance (with water) cmpi.b #$0F,(Player_Y).l @@ -68,7 +69,7 @@ loc_19C30: ; CODE XREF: DoCustomRoomActions+C4j loc_19C38: ; CODE XREF: DoCustomRoomActions+BAj cmpi.w #$00B9,(g_RmNum1).l ; Thieve's Cave Entrance (with water) - bne.s loc_19C5C ; Thieve's cave entrance (without water) + bne.s _Next6 ; Thieve's cave entrance (without water) cmpi.b #$24,(Player_Y).l bcc.s loc_19C54 move.b #$05,d0 @@ -80,9 +81,9 @@ loc_19C54: ; CODE XREF: DoCustomRoomActions+E8j bra.w HideSpriteAtD0 ; --------------------------------------------------------------------------- -loc_19C5C: ; CODE XREF: DoCustomRoomActions+DEj +_Next6: ; CODE XREF: DoCustomRoomActions+DEj cmpi.w #$00BA,(g_RmNum1).l ; Thieve's cave entrance (without water) - bne.s loc_19C80 ; Massan mayor's house + bne.s _Next7 ; Massan mayor's house cmpi.b #$24,(Player_Y).l bcc.s loc_19C78 move.b #$05,d0 @@ -94,16 +95,16 @@ loc_19C78: ; CODE XREF: DoCustomRoomActions+10Cj bra.w HideSpriteAtD0 ; --------------------------------------------------------------------------- -loc_19C80: ; CODE XREF: DoCustomRoomActions+102j +_Next7: ; CODE XREF: DoCustomRoomActions+102j cmpi.w #$0251,(g_RmNum1).l ; Massan mayor's house - bne.s loc_19D08 ; Jar Lady Upstairs + bne.s _Next8 ; Jar Lady Upstairs tst.b (g_Flags).l - bpl.w locret_1A308 + bpl.w EndCustomRoomAction move.b #$02,d0 bsr.w HideSpriteAtD0 lea (Sprite1_X).l,a1 - move.w #$1012,(a1) - andi.b #$3F,$00000004(a1) + move.w #$1012,X(a1) + andi.b #$3F,RotationAndSize(a1) btst #$04,(g_Flags).l bne.s loc_19CD6 clr.b d1 @@ -113,77 +114,77 @@ loc_19C80: ; CODE XREF: DoCustomRoomActions+102j move.b #$C0,d1 or.b d1,$00000004(a1) bsr.w SetSpriteRotationAnimFlags - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- loc_19CD6: ; CODE XREF: DoCustomRoomActions+152j - andi.b #$3F,$00000004(a1) + andi.b #$3F,RotationAndSize(a1) move.b #$40,d1 - or.b d1,$00000004(a1) + or.b d1,RotationAndSize(a1) bsr.w SetSpriteRotationAnimFlags lea (Sprite2_X).l,a1 move.w #$1210,(a1) - andi.b #$3F,$00000004(a1) + andi.b #$3F,RotationAndSize(a1) move.b #$80,d1 - or.b d1,$00000004(a1) + or.b d1,RotationAndSize(a1) bsr.w SetSpriteRotationAnimFlags - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19D08: ; CODE XREF: DoCustomRoomActions+126j +_Next8: ; CODE XREF: DoCustomRoomActions+126j cmpi.w #$02C5,(g_RmNum1).l ; Jar Lady Upstairs - bne.s loc_19D36 ; Mercator North + bne.s _Next9 ; Mercator North btst #$03,(g_Flags+3).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$07,d0 move.w #$1F23,d1 bsr.w MoveSprite move.w #$0010,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19D36: ; CODE XREF: DoCustomRoomActions+1AEj +_Next9: ; CODE XREF: DoCustomRoomActions+1AEj cmpi.w #$0277,(g_RmNum1).l ; Mercator North - bne.s loc_19D5C ; Mercator Harbour + bne.s _Next10 ; Mercator Harbour btst #$04,(g_Flags+$14).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$00,d0 move.w #$3336,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19D5C: ; CODE XREF: DoCustomRoomActions+1DCj +_Next10: ; CODE XREF: DoCustomRoomActions+1DCj cmpi.w #$0282,(g_RmNum1).l ; Mercator Harbour - bne.s loc_19D8A ; Castle entrance + bne.s _Next11 ; Castle entrance btst #$05,(g_Flags+$14).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$04,d0 move.w #$1E1A,d1 bsr.w MoveSprite move.w #$0010,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19D8A: ; CODE XREF: DoCustomRoomActions+202j +_Next11: ; CODE XREF: DoCustomRoomActions+202j cmpi.w #$0038,(g_RmNum1).l ; Castle entrance - bne.s loc_19DBC ; Crypt + bne.s _Next12 ; Crypt btst #$00,(g_Flags+$14).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$00,d0 move.w #$2218,d1 bsr.w MoveSprite move.b #$01,d0 move.w #$2518,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19DBC: ; CODE XREF: DoCustomRoomActions+230j +_Next12: ; CODE XREF: DoCustomRoomActions+230j cmpi.w #$0287,(g_RmNum1).l ; Crypt - bne.s loc_19E24 ; Castle + bne.s _Next13 ; Castle cmpi.b #$FF,(g_Flags+$15).l bne.s loc_19E14 bset #$03,(g_Flags+$16).l @@ -193,7 +194,7 @@ loc_19DBC: ; CODE XREF: DoCustomRoomActions+230j bsr.w HideSpriteAtD0 move.b #$01,d0 bsr.w HideSpriteAtD0 - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- loc_19DF6: ; CODE XREF: DoCustomRoomActions+27Ej @@ -203,7 +204,7 @@ loc_19DF6: ; CODE XREF: DoCustomRoomActions+27Ej bsr.w HideSpriteAtD0 move.b #$03,d0 bsr.w HideSpriteAtD0 - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- loc_19E14: ; CODE XREF: DoCustomRoomActions+26Cj @@ -211,14 +212,14 @@ loc_19E14: ; CODE XREF: DoCustomRoomActions+26Cj move.b #$01,d0 move.w #$FFFF,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19E24: ; CODE XREF: DoCustomRoomActions+262j +_Next13: ; CODE XREF: DoCustomRoomActions+262j cmpi.w #$003C,(g_RmNum1).l ; Castle - bne.s loc_19E5A ; Marsh shrine EkeEke fall + bne.s _Next14 ; Marsh shrine EkeEke fall btst #$00,(g_Flags+$14).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$00,d0 move.w #$1619,d1 bsr.w MoveSprite @@ -226,45 +227,45 @@ loc_19E24: ; CODE XREF: DoCustomRoomActions+262j bsr.w SetSpriteZ move.w #$0002,d1 bsr.w sub_1A356 - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19E5A: ; CODE XREF: DoCustomRoomActions+2CAj +_Next14: ; CODE XREF: DoCustomRoomActions+2CAj cmpi.w #$0007,(g_RmNum1).l ; Marsh shrine EkeEke fall - bne.s loc_19E80 ; Prison cell + bne.s _Next15 ; Prison cell btst #$02,(g_Flags+$A).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$00,d0 move.w #$0010,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19E80: ; CODE XREF: DoCustomRoomActions+300j +_Next15: ; CODE XREF: DoCustomRoomActions+300j cmpi.w #$002C,(g_RmNum1).l ; Prison cell - bne.s loc_19EBE ; Mercator Harbour + bne.s _Next16 ; Mercator Harbour move.b #$00,d0 - btst #$05,(g_Vars).l + btst #$05,(g_AdditionalFlags).l beq.w HideSpriteAtD0 - btst #$01,(g_Vars+7).l + btst #$01,(g_AdditionalFlags+7).l bne.w HideSpriteAtD0 - btst #$07,(g_Vars).l - beq.w locret_1A308 + btst #$07,(g_AdditionalFlags).l + beq.w EndCustomRoomAction move.w #$0F10,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19EBE: ; CODE XREF: DoCustomRoomActions+326j +_Next16: ; CODE XREF: DoCustomRoomActions+326j cmpi.w #$0284,(g_RmNum1).l ; Mercator Harbour - bne.s loc_19F08 ; Verla mine exit to Destel - btst #$05,(g_Vars+$A).l - bne.w locret_1A308 + bne.s _Next17 ; Verla mine exit to Destel + btst #$05,(g_AdditionalFlags+$A).l + bne.w EndCustomRoomAction cmpi.b #$24,(Player_X).l - bhi.w locret_1A308 + bhi.w EndCustomRoomAction move.b (Player_RotationAndSize).l,d0 andi.b #$C0,d0 - bne.w locret_1A308 + bne.w EndCustomRoomAction move.b #$00,d0 move.w #$0002,d1 bsr.w sub_1A356 @@ -272,54 +273,54 @@ loc_19EBE: ; CODE XREF: DoCustomRoomActions+326j lsl.w #$07,d0 adda.w d0,a5 clr.w $0000002A(a5) - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19F08: ; CODE XREF: DoCustomRoomActions+364j +_Next17: ; CODE XREF: DoCustomRoomActions+364j cmpi.w #$00EC,(g_RmNum1).l ; Verla mine exit to Destel - bne.s loc_19F3A ; Crypt boss room - btst #$00,(g_Vars+8).l - beq.w locret_1A308 + bne.s _Next18 ; Crypt boss room + btst #$00,(g_AdditionalFlags+8).l + beq.w EndCustomRoomAction move.b #$00,d0 move.w #$0D11,d1 bsr.w MoveSprite move.b #$01,d0 move.w #$0D15,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19F3A: ; CODE XREF: DoCustomRoomActions+3AEj +_Next18: ; CODE XREF: DoCustomRoomActions+3AEj cmpi.w #$028B,(g_RmNum1).l ; Crypt boss room - bne.s loc_19F60 ; Jar lady + bne.s _Next19 ; Jar lady btst #$06,(g_Flags+$14).l - beq.w locret_1A308 + beq.w EndCustomRoomAction move.b #$01,d0 move.w #$0020,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19F60: ; CODE XREF: DoCustomRoomActions+3E0j +_Next19: ; CODE XREF: DoCustomRoomActions+3E0j cmpi.w #$02B6,(g_RmNum1).l ; Jar lady - bne.s loc_19F8C ; Wholesaler + bne.s _Next20 ; Wholesaler move.b (g_Flags+$13).l,d0 andi.b #$E0,d0 cmpi.b #$60,d0 - bcs.w locret_1A308 + bcs.w EndCustomRoomAction move.b #$01,d0 move.w #$0000,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w EndCustomRoomAction ; --------------------------------------------------------------------------- -loc_19F8C: ; CODE XREF: DoCustomRoomActions+406j +_Next20: ; CODE XREF: DoCustomRoomActions+406j cmpi.w #$0295,(g_RmNum1).l ; Wholesaler - bne.s loc_19FE8 ; Statue warp in mountains + bne.s _Next21 ; Statue Warp In Mountains lea (Sprite1_X).l,a0 - btst #$04,(g_Vars+$A).l + btst #$04,(g_AdditionalFlags+$A).l bne.s loc_19FCC - btst #$03,(g_Vars+$A).l + btst #$03,(g_AdditionalFlags+$A).l beq.s loc_19FCE ; End of function DoCustomRoomActions @@ -332,7 +333,7 @@ sub_19FB0: ; CODE XREF: sub_19FB0:loc_19FCCp move.b #$7F,$00000480(a0) move.b #$7F,$00000500(a0) move.b #$7F,$00000580(a0) - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- loc_19FCC: ; CODE XREF: DoCustomRoomActions+442j @@ -343,41 +344,41 @@ loc_19FCE: ; CODE XREF: DoCustomRoomActions+44Cj move.b #$7F,$00000080(a0) move.b #$7F,$00000100(a0) move.b #$7F,$00000180(a0) - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_19FE8: ; CODE XREF: DoCustomRoomActions+432j - cmpi.w #00486,(g_RmNum1).l ; Statue warp in mountains - bne.s loc_1A00E ; Statue warp at game start - btst #$06,(g_Vars+$A).l - beq.w locret_1A308 +_Next21: ; CODE XREF: DoCustomRoomActions+432j + cmpi.w #$01E6,(g_RmNum1).l ; Statue Warp In Mountains + bne.s _Next22 + btst #$06,(g_AdditionalFlags+$A).l + beq.w _Done move.b #$00,d0 move.w #$362D,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A00E: ; CODE XREF: sub_19FB0+40j - cmpi.w #$0094,(g_RmNum1).l ; Statue warp at game start - bne.s loc_1A034 - btst #$06,(g_Vars+$A).l - beq.w locret_1A308 +_Next22: ; CODE XREF: sub_19FB0+40j + cmpi.w #$0094,(g_RmNum1).l + bne.s _Next23 + btst #$06,(g_AdditionalFlags+$A).l + beq.w _Done move.b #$01,d0 move.w #$1B2B,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A034: ; CODE XREF: sub_19FB0+66j - cmpi.b #SND_MusicTreeWarp,(g_BGM).l - bne.s loc_1A0A2 ; Verla mine exit tunnel entrance +_Next23: ; CODE XREF: sub_19FB0+66j + cmpi.b #$1D,(g_BGM).l + bne.s _Next24 ; Verla mine exit tunnel entrance lea BigTreeLocations(pc),a5 move.w #$0009,d7 move.w (g_RmNum1).l,d0 loc_1A04C: ; CODE XREF: sub_19FB0+A2j cmp.w (a5)+,d0 - beq.w locret_1A308 + beq.w _Done dbf d7,loc_1A04C bra.s loc_1A06C ; --------------------------------------------------------------------------- diff --git a/code/maps/customroomactions2.asm b/code/maps/customroomactions2.asm index 9eff546..31318e0 100644 --- a/code/maps/customroomactions2.asm +++ b/code/maps/customroomactions2.asm @@ -1,14 +1,14 @@ ; --------------------------------------------------------------------------- loc_1A06C: ; CODE XREF: sub_19FB0+A6j - btst #$07,(g_Vars+4).l - beq.w locret_1A308 + btst #$07,(g_AdditionalFlags+4).l + beq.w _Done lea (Sprite1_X).l,a5 moveq #$0000000E,d7 loc_1A080: ; CODE XREF: sub_19FB0+EEj tst.b (a5) - bmi.w locret_1A308 + bmi.w _Done tst.b $0000000C(a5) bpl.s loc_1A09A btst #$00,$00000038(a5) @@ -20,36 +20,36 @@ loc_1A09A: ; CODE XREF: sub_19FB0+DAj lea $00000080(a5),a5 dbf d7,loc_1A080 -loc_1A0A2: ; CODE XREF: sub_19FB0+8Cj +_Next24: ; CODE XREF: sub_19FB0+8Cj cmpi.w #$00F2,(g_RmNum1).l ; Verla mine exit tunnel entrance - bne.s loc_1A0CA ; Witches' Hut - btst #$07,(g_Vars+6).l - beq.w locret_1A308 + bne.s _Next25 ; Witches' Hut + btst #$07,(g_AdditionalFlags+6).l + beq.w _Done move.b #$00,d0 ext.w d0 lsl.w #$07,d0 bclr #$00,$00000008(a5,d0.w) - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A0CA: ; CODE XREF: sub_19FB0+FAj +_Next25: ; CODE XREF: sub_19FB0+FAj cmpi.w #$01E0,(g_RmNum1).l ; Witches' Hut - bne.s loc_1A0F2 ; Chicken race - btst #$06,(g_Vars+7).l - beq.w locret_1A308 + bne.s _Next26 ; Chicken race + btst #$06,(g_AdditionalFlags+7).l + beq.w _Done move.b #$02,d0 ext.w d0 lsl.w #$07,d0 bclr #$00,$00000008(a5,d0.w) - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A0F2: ; CODE XREF: sub_19FB0+122j +_Next26: ; CODE XREF: sub_19FB0+122j cmpi.w #$0299,(g_RmNum1).l ; Chicken race - bne.w loc_1A1A6 ; Cave logs entrance + bne.w _Next27 ; Cave logs entrance move.b (g_Controller2State).l,d0 cmpi.b #$E0,d0 ; A+C+START on player 2 - beq.w locret_1A308 ; Convert chickens to enemies + beq.w _Done ; Convert chickens to enemies lea (Sprite1_X).l,a0 move.b #SpriteB_Chicken,Sprite2_SpriteGraphic-Sprite1_X(a0) move.b #SpriteB_Chicken,$0000010B(a0) @@ -75,27 +75,27 @@ loc_1A0F2: ; CODE XREF: sub_19FB0+122j move.b #$C8,$00000104(a0) move.b #$C8,$00000184(a0) move.b #$C8,$00000204(a0) - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A1A6: ; CODE XREF: sub_19FB0+14Aj +_Next27: ; CODE XREF: sub_19FB0+14Aj cmpi.w #$019E,(g_RmNum1).l ; Cave logs entrance - bne.w loc_1A1D6 ; Castle dungeon entrance - btst #$04,(g_Vars+9).l - beq.w locret_1A308 + bne.w _Next28 ; Castle dungeon entrance + btst #$04,(g_AdditionalFlags+9).l + beq.w _Done move.b #$00,d0 move.w #$1718,d1 bsr.w MoveSprite move.w #$0003,d1 bsr.w sub_1A356 - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A1D6: ; CODE XREF: sub_19FB0+1FEj +_Next28: ; CODE XREF: sub_19FB0+1FEj cmpi.w #$0024,(g_RmNum1).l ; Castle dungeon entrance - bne.w loc_1A226 - btst #$05,(g_Vars).l - beq.w locret_1A308 + bne.w _Next29 + btst #$05,(g_AdditionalFlags).l + beq.w _Done move.b #$02,d0 move.w #$131A,d1 bsr.w MoveSprite @@ -109,72 +109,74 @@ loc_1A1D6: ; CODE XREF: sub_19FB0+1FEj move.b #$00,d0 move.w #$111B,d1 bsr.w MoveSprite - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A226: ; CODE XREF: sub_19FB0+22Ej +_Next29: ; CODE XREF: sub_19FB0+22Ej cmpi.w #$0199,(g_RmNum1).l - bne.w loc_1A24A ; Cave Spinner - btst #$01,(g_Vars+$B).l - beq.w locret_1A308 + bne.w _Next30 ; Cave Spinner + btst #$01,(g_AdditionalFlags+$B).l + beq.w _Done bclr #$00,(Sprite1_Flags1).l - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A24A: ; CODE XREF: sub_19FB0+27Ej +_Next30: ; CODE XREF: sub_19FB0+27Ej cmpi.w #$019A,(g_RmNum1).l ; Cave Spinner - bne.w loc_1A26E ; Cave Ifrit - btst #$00,(g_Vars+$18).l - beq.w locret_1A308 + bne.w _Next31 ; Cave Ifrit + btst #$00,(g_AdditionalFlags+$18).l + beq.w _Done bclr #$00,(Sprite2_Flags1).l - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A26E: ; CODE XREF: sub_19FB0+2A2j +_Next31: ; CODE XREF: sub_19FB0+2A2j cmpi.w #$0194,(g_RmNum1).l ; Cave Ifrit - bne.w loc_1A292 ; Cave Miro - btst #$05,(g_Vars+$18).l - beq.w locret_1A308 + bne.w _Next32 ; Cave Miro + btst #$05,(g_AdditionalFlags+$18).l + beq.w _Done bclr #$00,(Sprite1_Flags1).l - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A292: ; CODE XREF: sub_19FB0+2C6j +_Next32: ; CODE XREF: sub_19FB0+2C6j cmpi.w #$01A1,(g_RmNum1).l ; Cave Miro - bne.w loc_1A2B6 ; Mir's tower first room - btst #$02,(g_Vars+$18).l - beq.w locret_1A308 + bne.w _Next33 ; Mir's tower first room + btst #$02,(g_AdditionalFlags+$18).l + beq.w _Done bclr #$00,(Sprite1_Flags1).l - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A2B6: ; CODE XREF: sub_19FB0+2EAj +_Next33: ; CODE XREF: sub_19FB0+2EAj cmpi.w #$02EF,(g_RmNum1).l ; Mir's tower first room - bne.w loc_1A2D8 ; Mercator Harbour + bne.w _Next34 ; Mercator Harbour cmpi.w #$00FE,(g_ControllerPlayback).l - bne.w locret_1A308 + bne.w _Done clr.w (g_ControllerPlayback).l - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A2D8: ; CODE XREF: sub_19FB0+30Ej +_Next34: ; CODE XREF: sub_19FB0+30Ej cmpi.w #$0283,(g_RmNum1).l ; Mercator Harbour - bne.s loc_1A306 + bne.s _Next35 btst #$05,(g_Flags+$14).l - beq.w locret_1A308 + beq.w _Done move.b #$08,d0 move.w #$1E1A,d1 bsr.w MoveSprite move.w #$0010,d1 bsr.w SetSpriteZ - bra.w locret_1A308 + bra.w _Done ; --------------------------------------------------------------------------- -loc_1A306: ; CODE XREF: sub_19FB0+330j +_Next35: ; CODE XREF: sub_19FB0+330j nop -locret_1A308: ; CODE XREF: DoCustomRoomActions+2Ej +EndCustomRoomAction: ; CODE XREF: DoCustomRoomActions+2Ej ; DoCustomRoomActions+42j ... +_Done: rts ; End of function sub_19FB0 + modend diff --git a/code/maps/doors.asm b/code/maps/doors.asm index 249f07b..46d0a7a 100644 --- a/code/maps/doors.asm +++ b/code/maps/doors.asm @@ -127,7 +127,7 @@ loc_9670: ; CODE XREF: CheckForDoorNE+84j move.w d2,d3 add.b d2,d2 add.w d2,d0 - lea (g_BackgroundBlocks).l,a0 + lea (g_ForegroundBlocks).l,a0 adda.w d0,a0 move.w d3,d0 move.w d5,d4 diff --git a/code/maps/lavapalette.asm b/code/maps/lavapalette.asm index 2562d9a..951a512 100644 --- a/code/maps/lavapalette.asm +++ b/code/maps/lavapalette.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -CheckAndDoLavaPaletteFx: ; DATA XREF: sub_16DC+7Ct +CheckAndDoLavaPaletteFx: ; DATA XREF: GameLoop+7Ct cmpi.w #$020C,(g_RmNum1).l ; Lake shrine exterior with lava bne.s locret_260C move.b (byte_FF0F9D).l,d0 diff --git a/code/maps/loadroomsprites.asm b/code/maps/loadroomsprites.asm index fad25e8..cab9609 100644 --- a/code/maps/loadroomsprites.asm +++ b/code/maps/loadroomsprites.asm @@ -55,18 +55,18 @@ loc_1956C: ; CODE XREF: InitialiseSprites+4FCj beq.w loc_19A3A ; End of table for room move.b d0,d1 andi.b #$3F,d0 - move.b d0,(a1) + move.b d0,X(a1) move.b (a2)+,d2 ; d2 = data[1] ; a2 = &data[2] move.b d2,d3 andi.b #$3F,d2 - move.b d2,$00000001(a1) - move.w #$0808,$00000002(a1) + move.b d2,Y(a1) + move.w #$0808,SubX(a1) andi.b #$C0,d1 - move.b d1,$00000004(a1) + move.b d1,RotationAndSize(a1) andi.w #$00C0,d3 lsl.w #$07,d3 - move.w d3,$00000006(a1) + move.w d3,TileSource(a1) move.b (a2)+,d0 ; d0 = data[2] ; a2 = &data[3] move.b d0,d3 @@ -214,7 +214,7 @@ loc_196D6: ; CODE XREF: InitialiseSprites+196j ext.w d2 move.w d2,AnimationIndex(a1) move.b #SpriteB_Item,SpriteGraphic(a1) - jsr (LookupSpriteUnknownVal6F).l + jsr (LookupSpriteAnimFlags).l move.b -$00000006(a2),d0 ; a2 = &data[6] ; d0 = data[0] andi.b #$40,d0 @@ -250,7 +250,7 @@ loc_19724: ; CODE XREF: LookupSpriteGfxIndex+8j loc_1972A: ; CODE XREF: InitialiseSprites+FAj bsr.s LookupSpriteGfxIndex movem.w d1,-(sp) - jsr (LookupSpriteUnknownVal6F).l + jsr (LookupSpriteAnimFlags).l movem.w (sp)+,d1 ; d1 = rotation ? bsr.s SetSpriteRotationAnimFlags @@ -298,7 +298,7 @@ SetSpriteRotationAnimFlags: ; CODE XREF: sub_12CAE+Cp loc_197B6: ; CODE XREF: SetSpriteRotationAnimFlags+Cj ; SetSpriteRotationAnimFlags+14j - cmpi.b #$03,Unk6F(a1) ; Only true for Zak + cmpi.b #$03,AnimFlags(a1) ; Only true for Zak bne.s loc_197C0 addq.b #$08,d2 @@ -310,12 +310,12 @@ loc_197C0: ; CODE XREF: SetSpriteRotationAnimFlags+20j loc_197CC: ; CODE XREF: SetSpriteRotationAnimFlags+52j move.w #$0018,AnimationIndex(a1) move.b #$10,ChestIndex(a1) - move.b #$40,Flags4(a1) + move.b #$40,Flags4(a1) ; Bit 0 = Invincible / Solid rts ; --------------------------------------------------------------------------- loc_197E0: ; CODE XREF: SetSpriteRotationAnimFlags+2Aj - cmpi.b #SpriteB_Mushroom,$0000000B(a1) + cmpi.b #SpriteB_Mushroom,SpriteGraphic(a1) bne.s loc_197F0 move.w #$000C,AnimationFrame(a1) bra.s loc_197CC @@ -325,7 +325,7 @@ loc_197F0: ; CODE XREF: SetSpriteRotationAnimFlags+4Aj ext.w d2 move.w d2,AnimationIndex(a1) clr.w AnimationFrame(a1) - btst #$04,Unk6F(a1) + btst #$04,AnimFlags(a1) bne.s locret_19812 andi.b #$40,d0 lsr.b #$03,d0 @@ -410,10 +410,10 @@ loc_19874: ; CODE XREF: InitialiseSprites+30Ej loc_19894: ; CODE XREF: InitialiseSprites+354j move.b d1,d0 andi.b #$10,d1 - move.b d1,$00000008(a1) + move.b d1,Flags1(a1) andi.b #$20,d0 lsr.b #$05,d0 - or.b d0,$00000008(a1) + or.b d0,Flags1(a1) clr.w d0 move.b -$00000003(a2),d0 ; a2 = &bytes[7] ; d0 = byte[4] @@ -421,58 +421,58 @@ loc_19894: ; CODE XREF: InitialiseSprites+354j lsl.w #$08,d0 move.b (a2)+,d0 ; a2 = &bytes[8] ; d0 = bytes[7] - tst.w $00000034(a1) + tst.w BehaviourLUTIndex(a1) bne.s loc_198C0 - move.w d0,$00000034(a1) + move.w d0,BehaviourLUTIndex(a1) loc_198C0: ; CODE XREF: InitialiseSprites+380j - clr.w $0000002C(a1) - clr.w $0000002E(a1) - move.b #$FF,$0000006D(a1) - cmpi.b #SpriteB_Ghost,$0000000B(a1) + clr.w QueuedAction(a1) + clr.w PrevAction(a1) + move.b #$FF,Unk6D(a1) + cmpi.b #SpriteB_Ghost,SpriteGraphic(a1) bne.s loc_198E0 - move.w #$0008,$00000024(a1) - clr.w $0000002E(a1) + move.w #$0008,AnimationIndex(a1) + clr.w PrevAction(a1) loc_198E0: ; CODE XREF: InitialiseSprites+39Aj - tst.b $00000009(a1) + tst.b Speed(a1) bne.s loc_198FA - tst.w $0000002A(a1) + tst.w BehavParam(a1) bne.s loc_198FA - btst #$05,$0000000C(a1) + btst #$05,Flags2(a1) bne.s loc_198FA - bset #$07,$00000020(a1) + bset #$07,FallRate(a1) loc_198FA: ; CODE XREF: InitialiseSprites+3AAj ; InitialiseSprites+3B0j ... - move.w #$FFFF,$00000030(a1) + move.w #$FFFF,SpriteUnderneath(a1) movea.l a1,a5 - move.w $00000034(a1),d0 + move.w BehaviourLUTIndex(a1),d0 movem.l d0/a1,-(sp) jsr (j_LoadSpriteBehaviour).l movem.l (sp)+,d0/a1 cmpi.w #$0001,d0 bne.s loc_19932 move.b (byte_FF1838).l,d0 - sub.b d0,$0000002A(a1) + sub.b d0,BehavParam(a1) addq.b #$03,(byte_FF1838).l andi.b #$0F,(byte_FF1838).l loc_19932: ; CODE XREF: InitialiseSprites+3DEj - cmpi.b #SpriteB_Chest,$0000000B(a1) + cmpi.b #SpriteB_Chest,SpriteGraphic(a1) beq.s loc_1994E - cmpi.b #SpriteB_Mimic,$0000000B(a1) + cmpi.b #SpriteB_Mimic,SpriteGraphic(a1) beq.s loc_19952 - cmpi.b #SpriteB_Mushroom,$0000000B(a1) + cmpi.b #SpriteB_Mushroom,SpriteGraphic(a1) beq.s loc_19952 - clr.b $00000037(a1) + clr.b ChestIndex(a1) loc_1994E: ; CODE XREF: InitialiseSprites+3FEj - clr.b $00000038(a1) + clr.b Flags4(a1) ; Bit 0 = Invincible / Solid loc_19952: ; CODE XREF: InitialiseSprites+406j ; InitialiseSprites+40Ej - tst.b $0000000C(a1) + tst.b Flags2(a1) bpl.w loc_199E6 bsr.s GetEnemyStats ; sprite type bra.w loc_199E6 @@ -483,8 +483,8 @@ loc_19952: ; CODE XREF: InitialiseSprites+406j ; sprite type GetEnemyStats: ; CODE XREF: ROM:00012C8Cp - ; sub_178FE+1456p ... - move.b $0000003B(a1),d0 + ; OnTick+1456p ... + move.b SpriteType(a1),d0 lea EnemyStats(pc),a0 loc_19968: ; CODE XREF: GetEnemyStats+74j @@ -492,23 +492,23 @@ loc_19968: ; CODE XREF: GetEnemyStats+74j beq.s locret_199D0 cmp.b (a0),d0 bne.s loc_199D2 - move.b $00000001(a0),$0000003E(a1) ; Health - cmpi.b #$FF,$0000003E(a1) ; 0xFF - indestructable + move.b $00000001(a0),CurrentHealth(a1) ; Health + cmpi.b #$FF,CurrentHealth(a1) ; 0xFF - indestructable bne.s loc_19986 - bset #$00,$00000038(a1) + bset #$00,Flags4(a1) ; Bit 0 = Invincible / Solid loc_19986: ; CODE XREF: GetEnemyStats+1Ej - clr.b $0000003F(a1) + clr.b CurrentSubHealth(a1) clr.w d0 move.b $00000002(a0),d0 ; Defence lsl.w #$07,d0 - move.w d0,$0000007C(a1) - move.b $00000003(a0),$00000036(a1) ; Gold Drop + move.w d0,Defence(a1) + move.b $00000003(a0),GoldOrChestContents(a1) ; Gold Drop move.b $00000004(a0),d0 ; Attack move.b d0,d1 andi.b #$7F,d0 lsl.w #$08,d0 - move.w d0,$0000003C(a1) + move.w d0,AttackStrength(a1) andi.b #$80,d1 lsr.b #$04,d1 ; High bit of attack is used in item drop chance move.b $00000005(a0),d0 @@ -518,9 +518,9 @@ loc_19986: ; CODE XREF: GetEnemyStats+1Ej lsr.b #$05,d0 or.b d1,d0 ext.w d0 - move.w ItemDropProbabilityLookup(pc,d0.w),$00000078(a1) ; 1/64 + move.w ItemDropProbabilityLookup(pc,d0.w),InitFlags4_DropProbability(a1) ; 1/64 andi.b #$3F,d2 - move.b d2,$00000077(a1) + move.b d2,ItemDrop(a1) locret_199D0: ; CODE XREF: GetEnemyStats+Cj rts @@ -546,20 +546,20 @@ ItemDropProbabilityLookup:dc.w $0040 ; DATA XREF: GetEnemyStats+62r loc_199E6: ; CODE XREF: InitialiseSprites+41Cj ; InitialiseSprites+422j - move.w (a1),$00000040(a1) - move.w $00000002(a1),$00000042(a1) - move.w $00000004(a1),$00000044(a1) - move.b $00000006(a1),$00000046(a1) - move.w $0000000A(a1),$0000004A(a1) - move.b $0000000C(a1),$0000004C(a1) - move.w $00000012(a1),$00000052(a1) - move.w $0000002A(a1),$0000006A(a1) - move.l $00000032(a1),$00000072(a1) - move.b $00000036(a1),$00000076(a1) - move.b $00000038(a1),$00000068(a1) - move.w $0000003A(a1),$0000007A(a1) - move.w $0000003E(a1),$0000007E(a1) - lea $00000080(a1),a1 + move.w X(a1),InitX(a1) + move.w SubX(a1),InitSubX(a1) + move.w RotationAndSize(a1),InitRotAndSize(a1) + move.b TileSource(a1),InitTileSource(a1) + move.w Unk0A(a1),InitUnk0A(a1) + move.b Flags2(a1),InitFlags2(a1) + move.w Z(a1),InitZ(a1) + move.w BehavParam(a1),Unk6A(a1) + move.l BehaviourLUTPtr(a1),InitBehaviourLUTPtr(a1) + move.b GoldOrChestContents(a1),InitGoldOrChestCont(a1) + move.b Flags4(a1),Unk68(a1) ; Bit 0 = Invincible / Solid + move.w Dialogue(a1),InitDialogue(a1) + move.w CurrentHealth(a1),MaxHealth(a1) + lea SPRITE_SIZE(a1),a1 bra.w loc_1956C ; d0 = data[0] ; A2 = &data[1] ; --------------------------------------------------------------------------- @@ -589,7 +589,7 @@ loc_19A4A: ; CODE XREF: sub_19A40+82j movem.l (sp)+,a1 cmpa.l #Player_X,a1 beq.s loc_19AB6 - btst #$00,$00000008(a1) + btst #$00,Flags1(a1) bne.s loc_19AB6 movea.l a1,a5 jsr (sub_3BC).l @@ -597,7 +597,7 @@ loc_19A4A: ; CODE XREF: sub_19A40+82j cmpa.l #Player_X,a1 bne.s loc_19AA8 movem.l (sp)+,a1 - move.w $00000054(a1),d1 + move.w HitBoxZEnd(a1),d1 addq.w #$01,d1 move.w d1,(Player_Z).l add.b (Player_Height).l,d1 @@ -607,7 +607,7 @@ loc_19A4A: ; CODE XREF: sub_19A40+82j ; --------------------------------------------------------------------------- loc_19AA8: ; CODE XREF: sub_19A40+46j - cmpi.b #$18,$0000004B(a1) + cmpi.b #SpriteB_Ghost,InitSpriteGraphic(a1) bne.s loc_19AB6 jsr (j_MoveSpriteOffscreen).l @@ -618,7 +618,7 @@ loc_19AB6: ; CODE XREF: sub_19A40+2Cj loc_19ABA: ; CODE XREF: sub_19A40+16j ; sub_19A40+66j movem.w (sp)+,d7 - lea $00000080(a1),a1 + lea SPRITE_SIZE(a1),a1 dbf d7,loc_19A4A locret_19AC6: ; CODE XREF: sub_19A40+Cj @@ -630,53 +630,53 @@ locret_19AC6: ; CODE XREF: sub_19A40+Cj sub_19AC8: ; CODE XREF: ROM:00016374p - ; sub_178FE+1366p ... - move.b (a1),d0 + ; OnTick+1366p ... + move.b X(a1),d0 ext.w d0 move.w d0,d2 lsl.w #$04,d0 - add.b $00000002(a1),d0 - move.b $00000001(a1),d1 + add.b SubX(a1),d0 + move.b Y(a1),d1 ext.w d1 move.w d1,d3 lsl.w #$04,d1 - add.b $00000003(a1),d1 + add.b SubY(a1),d1 jsr (j_MultiplyD3By148).l add.w d2,d3 add.w d2,d3 addi.l #g_HeightMap,d3 - move.w d3,$00000028(a1) + move.w d3,HeightmapOffset(a1) movea.l d3,a0 - move.w (a0),$00000022(a1) - move.b $00000004(a1),d2 + move.w (a0),GroundHeight(a1) + move.b RotationAndSize(a1),d2 andi.w #$003E,d2 clr.w d3 - move.b $00000005(a1),d3 + move.b Height(a1),d3 adda.w #$0012,a1 add.w (a1)+,d3 subq.w #$01,d3 - cmpi.b #$1C,-$00000009(a1) - bne.s loc_19B1E - move.w -$00000002(a1),d3 + cmpi.b #SpriteB_Mushroom,(SpriteGraphic-CentreX)(a1) + bne.s loc_19B1E ; 0052 + move.w (Z-CentreX)(a1),d3 ; 10 loc_19B1E: ; CODE XREF: sub_19AC8+50j - move.w d3,$00000040(a1) - move.w d0,(a1)+ - move.w d1,(a1)+ + move.w d3,(HitBoxZEnd-CentreX)(a1) ; 0052 + move.w d0,(a1)+ ; CentreX + move.w d1,(a1)+ ; CentreY sub.w d2,d0 addq.w #$01,d0 - move.w d0,(a1)+ + move.w d0,(a1)+ ; HitBoxXStart add.w d2,d0 add.w d2,d0 subq.w #$02,d0 - move.w d0,(a1)+ + move.w d0,(a1)+ ; HitBoxXEnd sub.w d2,d1 addq.w #$01,d1 - move.w d1,(a1)+ + move.w d1,(a1)+ ; HitBoxYStart add.w d2,d1 add.w d2,d1 subq.w #$02,d1 - move.w d1,(a1)+ + move.w d1,(a1)+ ; HitBoxYEnd rts ; End of function sub_19AC8 diff --git a/code/maps/mapflagchanges.asm b/code/maps/mapflagchanges.asm index 79c1ade..52c0af1 100644 --- a/code/maps/mapflagchanges.asm +++ b/code/maps/mapflagchanges.asm @@ -60,7 +60,7 @@ locret_4E44: ; CODE XREF: CheckForGraphicSwapFlags+2j CheckTreeWarpFlags: ; CODE XREF: CheckRoomGfxFlags+2p lea TreeWarpGfxSwapFlags(pc),a0 - btst #$07,(g_Vars+4).l + btst #$07,(g_AdditionalFlags+4).l beq.s locret_4E8E loc_4E54: ; CODE XREF: CheckTreeWarpFlags+46j @@ -99,56 +99,56 @@ locret_4E8E: ; CODE XREF: CheckTreeWarpFlags+Cj sub_4E90: ; CODE XREF: CheckForGraphicSwapFlags+2Ep ; CheckTreeWarpFlags+3Ep - bsr.s sub_4E94 - bra.s sub_4EAE + bsr.s MapTileSwap + bra.s HMTileSwap ; End of function sub_4E90 ; =============== S U B R O U T I N E ======================================= -sub_4E94: ; CODE XREF: sub_4B52+3Ep +MapTileSwap: ; CODE XREF: DoTileSwap+3Ep ; sub_4E90p - bsr.s sub_4EC6 - bsr.w sub_4DBC + bsr.s LoadTileSwap + bsr.w GetMapOffsets movea.l a1,a3 movea.l a2,a4 - bsr.w sub_4DBC + bsr.w GetMapOffsets move.b (a0)+,d0 move.b (a0)+,d1 ext.w d0 ext.w d1 - bsr.s sub_4EF4 + bsr.s DoMapTileSwap rts -; End of function sub_4E94 +; End of function MapTileSwap ; =============== S U B R O U T I N E ======================================= -sub_4EAE: ; CODE XREF: sub_4B52+36p +HMTileSwap: ; CODE XREF: DoTileSwap+36p ; sub_4E90+2j - bsr.w sub_4DD8 + bsr.w GetHeightmapCoordOffset movea.l a1,a2 - bsr.w sub_4DD8 + bsr.w GetHeightmapCoordOffset move.b (a0)+,d0 move.b (a0)+,d1 ext.w d0 ext.w d1 - bsr.w sub_4F8C + bsr.w SwapHMTiles rts -; End of function sub_4EAE +; End of function HMTileSwap ; =============== S U B R O U T I N E ======================================= -sub_4EC6: ; CODE XREF: sub_4B52+14p - ; sub_4E94p +LoadTileSwap: ; CODE XREF: DoTileSwap+14p + ; MapTileSwapp subi.b #$08,d0 lea TileSwaps(pc),a0 -loc_4ECE: ; CODE XREF: sub_4EC6+20j +loc_4ECE: ; CODE XREF: LoadTileSwap+20j move.w $0000000C(a0),d1 bmi.s loc_4EE8 cmp.w (g_RmNum1).l,d1 @@ -156,13 +156,13 @@ loc_4ECE: ; CODE XREF: sub_4EC6+20j cmp.b $0000000E(a0),d0 beq.s locret_4EF2 -loc_4EE2: ; CODE XREF: sub_4EC6+14j +loc_4EE2: ; CODE XREF: LoadTileSwap+14j lea $00000010(a0),a0 bra.s loc_4ECE ; --------------------------------------------------------------------------- -loc_4EE8: ; CODE XREF: sub_4EC6+Cj - ; sub_4EC6+2Aj +loc_4EE8: ; CODE XREF: LoadTileSwap+Cj + ; LoadTileSwap+2Aj trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_NigelDropObj2 @@ -172,23 +172,23 @@ loc_4EE8: ; CODE XREF: sub_4EC6+Cj bra.s loc_4EE8 ; --------------------------------------------------------------------------- -locret_4EF2: ; CODE XREF: sub_4EC6+1Aj +locret_4EF2: ; CODE XREF: LoadTileSwap+1Aj rts -; End of function sub_4EC6 +; End of function LoadTileSwap ; =============== S U B R O U T I N E ======================================= -sub_4EF4: ; CODE XREF: sub_4E94+16p +DoMapTileSwap: ; CODE XREF: MapTileSwap+16p cmpi.b #$01,$00000009(a0) beq.s loc_4F24 bhi.s loc_4F4E -loc_4EFE: ; CODE XREF: sub_4EF4+2Aj +loc_4EFE: ; CODE XREF: DoMapTileSwap+2Aj movem.l d0/a1-a4,-(sp) -loc_4F02: ; CODE XREF: sub_4EF4+12j +loc_4F02: ; CODE XREF: DoMapTileSwap+12j move.w (a3)+,(a1)+ move.w (a4)+,(a2)+ dbf d0,loc_4F02 @@ -201,14 +201,14 @@ loc_4F02: ; CODE XREF: sub_4EF4+12j rts ; --------------------------------------------------------------------------- -loc_4F24: ; CODE XREF: sub_4EF4+6j +loc_4F24: ; CODE XREF: DoMapTileSwap+6j addq.w #$02,a1 addq.w #$02,a3 -loc_4F28: ; CODE XREF: sub_4EF4+54j +loc_4F28: ; CODE XREF: DoMapTileSwap+54j movem.l d0/a1-a4,-(sp) -loc_4F2C: ; CODE XREF: sub_4EF4+3Cj +loc_4F2C: ; CODE XREF: DoMapTileSwap+3Cj move.w (a3)+,(a1)+ move.w (a4)+,(a2)+ dbf d0,loc_4F2C @@ -221,14 +221,14 @@ loc_4F2C: ; CODE XREF: sub_4EF4+3Cj rts ; --------------------------------------------------------------------------- -loc_4F4E: ; CODE XREF: sub_4EF4+8j +loc_4F4E: ; CODE XREF: DoMapTileSwap+8j lea $00000094(a2),a2 lea $00000094(a4),a4 -loc_4F56: ; CODE XREF: sub_4EF4+92j +loc_4F56: ; CODE XREF: DoMapTileSwap+92j movem.l d0/a1-a4,-(sp) -loc_4F5A: ; CODE XREF: sub_4EF4+7Aj +loc_4F5A: ; CODE XREF: DoMapTileSwap+7Aj move.w (a3),(a1) move.w (a4),(a2) lea $00000094(a1),a1 @@ -243,25 +243,25 @@ loc_4F5A: ; CODE XREF: sub_4EF4+7Aj lea $00000096(a4),a4 dbf d1,loc_4F56 rts -; End of function sub_4EF4 +; End of function DoMapTileSwap ; =============== S U B R O U T I N E ======================================= -sub_4F8C: ; CODE XREF: sub_4EAE+12p - ; sub_4F8C+16j +SwapHMTiles: ; CODE XREF: HMTileSwap+12p + ; SwapHMTiles+16j movem.l d0/a1-a2,-(sp) -loc_4F90: ; CODE XREF: sub_4F8C+6j +loc_4F90: ; CODE XREF: SwapHMTiles+6j move.w (a2)+,(a1)+ dbf d0,loc_4F90 movem.l (sp)+,d0/a1-a2 lea $00000094(a1),a1 lea $00000094(a2),a2 - dbf d1,sub_4F8C + dbf d1,SwapHMTiles rts -; End of function sub_4F8C +; End of function SwapHMTiles ; =============== S U B R O U T I N E ======================================= @@ -287,7 +287,7 @@ loc_4FB6: ; CODE XREF: sub_4FA8+40j move.b $00000003(a0),d1 andi.b #$07,d1 bset d1,(a1,d3.w) - bsr.w sub_4B52 + bsr.w DoTileSwap locret_4FE4: ; CODE XREF: sub_4FA8+10j rts diff --git a/code/maps/mapflagdata.asm b/code/maps/mapflagdata.asm new file mode 100644 index 0000000..88a276b --- /dev/null +++ b/code/maps/mapflagdata.asm @@ -0,0 +1,8 @@ +RoomGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\roomgfxswapflags.bin" + Align $2 +LockedDoorGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\lockeddoorgfxswapflags.bin" + Align $2 +TreeWarpGfxSwapFlags: incbin "assets_packed\roomdata\flagactions\treewarpgfxswapflags.bin" + Align $2 +TileSwaps: incbin "assets_packed\roomdata\flagactions\tileswaps.bin" + Align $2 \ No newline at end of file diff --git a/code/maps/mapload.asm b/code/maps/mapload.asm index fa39c65..c6bb5e8 100644 --- a/code/maps/mapload.asm +++ b/code/maps/mapload.asm @@ -74,32 +74,32 @@ locret_26E6: ; CODE XREF: sub_2686+6j ; =============== S U B R O U T I N E ======================================= -sub_26E8: ; CODE XREF: ROM:loc_16CAp +LoadGame: ; CODE XREF: ROM:loc_16CAp bsr.s sub_2726 jsr (sub_22EC0).l bsr.w LoadGameSelectScreen bsr.w ClearAndRefreshVDPSpriteTableDMA tst.w (Player_X).l bne.s loc_271A - bset #$03,(g_Vars+7).l - move.b #$03,(g_Vars+$1B).l - bsr.w InitIntro + bset #$03,(g_AdditionalFlags+7).l + move.b #$03,(g_AdditionalFlags+$1B).l + bsr.w ClearGameData clr.b d0 bra.w LoadRoom_0 ; --------------------------------------------------------------------------- -loc_271A: ; CODE XREF: sub_26E8+16j +loc_271A: ; CODE XREF: LoadGame+16j clr.b d0 bsr.w LoadRoom_0 bsr.w LoadMagicSwordGfx rts -; End of function sub_26E8 +; End of function LoadGame ; =============== S U B R O U T I N E ======================================= -sub_2726: ; CODE XREF: sub_26E8p +sub_2726: ; CODE XREF: LoadGamep move.w #$0000,d0 move.b #$EF,d1 bsr.w MaskVDPReg @@ -132,7 +132,7 @@ loc_2744: ; CODE XREF: sub_2726+20j ; =============== S U B R O U T I N E ======================================= -InitIntro: ; CODE XREF: sub_26E8+28p +ClearGameData: ; CODE XREF: LoadGame+28p move.w #$03FF,(Player_CurrentHealth).l move.w #$03FF,(Player_MaxHealth).l move.w #$0100,(Player_Defence).l @@ -143,7 +143,7 @@ InitIntro: ; CODE XREF: sub_26E8+28p lea (g_ChestOpenFlags).l,a0 move.w #$003F,d7 -loc_27EC: ; CODE XREF: InitIntro+3Cj +loc_27EC: ; CODE XREF: ClearGameData+3Cj clr.b (a0)+ dbf d7,loc_27EC move.w #$008B,(g_RmNum1).l ; Intro sequence start @@ -153,14 +153,14 @@ loc_27EC: ; CODE XREF: InitIntro+3Cj move.w #$0090,(Player_Z).l move.w #$00FE,(g_ControllerPlayback).l rts -; End of function InitIntro +; End of function ClearGameData ; =============== S U B R O U T I N E ======================================= LoadRoom_0: ; CODE XREF: j_LoadRoom_0j - ; sub_26E8+2Ej ... + ; LoadGame+2Ej ... clr.w d1 move.b (g_RoomMaxHeight).l,d1 movem.w d0-d1,-(sp) @@ -176,13 +176,13 @@ LoadRoom_0: ; CODE XREF: j_LoadRoom_0j bsr.s sub_2896 jsr (sub_10388).l bsr.w sub_2DCE - bsr.w sub_9EF8 + bsr.w LoadAllWarps bsr.w sub_A114 bsr.w sub_7274 bsr.w FlushDMACopyQueue bsr.w sub_4042 bsr.w FlushDMACopyQueue - bsr.w sub_401C + bsr.w LoadSprites bsr.w LoadAnimTiles bsr.w LoadRoomMusic bsr.w FlushDMACopyQueue @@ -278,7 +278,7 @@ sub_295E: ; CODE XREF: LoadRoom_0+12p ; Bit 1: Can't attack ; Bit 2: Can't open menu move.w (Player_TempHealth).l,(Player_CurrentHealth).l - jsr (j_RefreshMaxHealthHUD).l + jsr (j_RefreshCurrentHealthHUD).l jsr (j_MarkHUDForUpdate).l jsr (j_RefreshHUD).l @@ -304,14 +304,14 @@ LoadRoom: ; CODE XREF: j_LoadRoomj bsr.w ClearVDPSpriteTable bsr.w LoadHUDSprites bsr.w sub_4042 - bsr.w sub_401C + bsr.w LoadSprites bra.w EnableDMAQueueProcessing ; End of function LoadRoom ; --------------------------------------------------------------------------- LoadRoomMusic: ; CODE XREF: LoadRoom_0+64p - btst #$03,(g_Vars+7).l + btst #$03,(g_AdditionalFlags+7).l bne.s locret_2A30 move.b (g_RoomBGM).l,d0 ext.w d0 @@ -326,7 +326,7 @@ loc_2A12: ; CODE XREF: ROM:00002A02j ; ROM:00002A0Cj cmpi.b #SND_MusicOverworld1,d0 bne.s loc_2A26 - btst #$04,(g_Vars+8).l + btst #$04,(g_AdditionalFlags+8).l beq.s loc_2A26 move.b #SND_MusicOverworld2,d0 @@ -368,7 +368,7 @@ RoomMusicLUT: dc.b SND_MusicPalace1 sub_2A46: ; CODE XREF: LoadRoom_0+24p bsr.w sub_2AF2 clr.b (byte_FF1133).l - clr.w (word_FF120C).l + clr.w (g_CarriedEntity).l clr.b (byte_FF1147).l clr.b (byte_FF1148).l lea (Player_X).l,a1 @@ -379,9 +379,10 @@ sub_2A46: ; CODE XREF: LoadRoom_0+24p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage and.w d1,d0 beq.s loc_2A80 eori.w #$FFFF,d1 @@ -391,9 +392,10 @@ sub_2A46: ; CODE XREF: LoadRoom_0+24p ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage loc_2A80: ; CODE XREF: sub_2A46+2Ej lea (g_PlayerXFlattened).l,a0 @@ -519,10 +521,10 @@ loc_2BD2: ; CODE XREF: GetTilemap+10j move.l #$40004000,(a1)+ dbf d7,loc_2BD2 movea.l a2,a0 - lea (g_BackgroundBlocks).l,a1 + lea (g_ForegroundBlocks).l,a1 jsr (DecompressMap1).l movem.w d0-d4,-(sp) - lea (g_BackgroundBlocks).l,a0 + lea (g_ForegroundBlocks).l,a0 move.b (a0)+,d0 move.b (a0)+,d1 move.b (a0)+,d2 @@ -549,7 +551,7 @@ loc_2BD2: ; CODE XREF: GetTilemap+10j movem.w d0-d3/d5/d7,-(sp) bsr.s ExtractMap movem.w (sp)+,d0-d3/d5/d7 - lea (g_ForegroundBlocks).l,a1 + lea (g_BackgroundBlocks).l,a1 bsr.s ExtractMap movem.w (sp)+,d0-d4 rts @@ -665,7 +667,7 @@ GetTileset: ; CODE XREF: ROM:00002BA8p lsl.w #$02,d3 movea.l (a0,d3.w),a0 movem.w d2-d4,-(sp) - lea (g_BackgroundBlocks).l,a1 + lea (g_ForegroundBlocks).l,a1 lea (0000000000).w,a2 movem.l a2,-(sp) movea.l a1,a2 @@ -675,7 +677,7 @@ GetTileset: ; CODE XREF: ROM:00002BA8p lsr.w #$02,d0 movea.l a2,a0 movem.l (sp)+,a1 - lea (g_BackgroundBlocks).l,a0 + lea (g_ForegroundBlocks).l,a0 lea (0000000000).w,a1 move.w #$3A80,d0 bsr.w FlushDMACopyQueue diff --git a/code/maps/room1.asm b/code/maps/room1.asm index 99708f2..83f226c 100644 --- a/code/maps/room1.asm +++ b/code/maps/room1.asm @@ -2,25 +2,25 @@ ; =============== S U B R O U T I N E ======================================= -sub_9EF8: ; CODE XREF: LoadRoom_0+44p - lea (unk_FF1218).l,a1 +LoadAllWarps: ; CODE XREF: LoadRoom_0+44p + lea (WarpTbl).l,a1 clr.b d7 move.w (g_RmNum1).l,d0 - bsr.s sub_9F1C + bsr.s LoadWarps move.w (g_RmNum1).l,d0 bsr.w GetOriginalRoomNum cmp.w (g_RmNum1).l,d0 beq.w locret_A0A0 -; End of function sub_9EF8 +; End of function LoadAllWarps ; =============== S U B R O U T I N E ======================================= -sub_9F1C: ; CODE XREF: sub_9EF8+Ep +LoadWarps: ; CODE XREF: LoadAllWarps+Ep movea.l (RoomExitsPtr).l,a0 -loc_9F22: ; CODE XREF: sub_9F1C+17Cj +loc_9F22: ; CODE XREF: LoadWarps+17Cj move.w (a0),d1 bmi.w loc_A09C andi.w #$03FF,d1 @@ -47,13 +47,13 @@ loc_9F22: ; CODE XREF: sub_9F1C+17Cj bra.s loc_9F74 ; --------------------------------------------------------------------------- -loc_9F6A: ; CODE XREF: sub_9F1C+48j +loc_9F6A: ; CODE XREF: LoadWarps+48j cmpi.b #$20,d1 bne.s loc_9F74 subi.w #$0100,d5 -loc_9F74: ; CODE XREF: sub_9F1C+42j - ; sub_9F1C+4Cj ... +loc_9F74: ; CODE XREF: LoadWarps+42j + ; LoadWarps+4Cj ... move.w d5,(a1)+ move.b d6,d1 andi.b #$0C,d6 @@ -65,13 +65,13 @@ loc_9F74: ; CODE XREF: sub_9F1C+42j bra.s loc_9F9C ; --------------------------------------------------------------------------- -loc_9F90: ; CODE XREF: sub_9F1C+68j +loc_9F90: ; CODE XREF: LoadWarps+68j cmpi.b #$08,d6 bne.w loc_A096 addq.b #$01,d3 addq.b #$01,d5 -loc_9F9C: ; CODE XREF: sub_9F1C+72j +loc_9F9C: ; CODE XREF: LoadWarps+72j addq.b #$01,d7 cmpi.b #$20,d7 bhi.w loc_A0A2 @@ -87,13 +87,13 @@ loc_9F9C: ; CODE XREF: sub_9F1C+72j bra.s loc_9FD0 ; --------------------------------------------------------------------------- -loc_9FC4: ; CODE XREF: sub_9F1C+9Cj +loc_9FC4: ; CODE XREF: LoadWarps+9Cj cmpi.b #$08,d6 bne.w loc_A096 addq.b #$01,d3 addq.b #$01,d5 -loc_9FD0: ; CODE XREF: sub_9F1C+A6j +loc_9FD0: ; CODE XREF: LoadWarps+A6j addq.b #$01,d7 cmpi.b #$20,d7 bhi.w loc_A0A2 @@ -103,7 +103,7 @@ loc_9FD0: ; CODE XREF: sub_9F1C+A6j bra.w loc_A096 ; --------------------------------------------------------------------------- -loc_9FE4: ; CODE XREF: sub_9F1C+12j +loc_9FE4: ; CODE XREF: LoadWarps+12j move.w $00000004(a0),d1 andi.w #$03FF,d1 cmp.w d1,d0 @@ -129,13 +129,13 @@ loc_9FE4: ; CODE XREF: sub_9F1C+12j bra.s loc_A032 ; --------------------------------------------------------------------------- -loc_A028: ; CODE XREF: sub_9F1C+106j +loc_A028: ; CODE XREF: LoadWarps+106j cmpi.b #$20,d1 bne.s loc_A032 addi.w #$0100,d5 -loc_A032: ; CODE XREF: sub_9F1C+100j - ; sub_9F1C+10Aj ... +loc_A032: ; CODE XREF: LoadWarps+100j + ; LoadWarps+10Aj ... move.w d5,(a1)+ move.b d6,d1 andi.b #$0C,d6 @@ -147,13 +147,13 @@ loc_A032: ; CODE XREF: sub_9F1C+100j bra.s loc_A056 ; --------------------------------------------------------------------------- -loc_A04C: ; CODE XREF: sub_9F1C+124j +loc_A04C: ; CODE XREF: LoadWarps+124j cmpi.b #$08,d6 bne.s loc_A096 addq.b #$01,d3 addq.b #$01,d5 -loc_A056: ; CODE XREF: sub_9F1C+12Ej +loc_A056: ; CODE XREF: LoadWarps+12Ej addq.b #$01,d7 cmpi.b #$20,d7 bhi.w loc_A0A2 @@ -169,13 +169,13 @@ loc_A056: ; CODE XREF: sub_9F1C+12Ej bra.s loc_A086 ; --------------------------------------------------------------------------- -loc_A07C: ; CODE XREF: sub_9F1C+154j +loc_A07C: ; CODE XREF: LoadWarps+154j cmpi.b #$08,d6 bne.s loc_A096 addq.b #$01,d3 addq.b #$01,d5 -loc_A086: ; CODE XREF: sub_9F1C+15Ej +loc_A086: ; CODE XREF: LoadWarps+15Ej addq.b #$01,d7 cmpi.b #$20,d7 bhi.w loc_A0A2 @@ -183,27 +183,27 @@ loc_A086: ; CODE XREF: sub_9F1C+15Ej move.w d4,(a1)+ move.w d5,(a1)+ -loc_A096: ; CODE XREF: sub_9F1C+60j - ; sub_9F1C+78j ... +loc_A096: ; CODE XREF: LoadWarps+60j + ; LoadWarps+78j ... addq.l #$08,a0 bra.w loc_9F22 ; --------------------------------------------------------------------------- -loc_A09C: ; CODE XREF: sub_9F1C+8j - ; sub_9F1C+18Aj ... +loc_A09C: ; CODE XREF: LoadWarps+8j + ; LoadWarps+18Aj ... move.w #$FFFF,(a1) -locret_A0A0: ; CODE XREF: sub_9EF8+20j +locret_A0A0: ; CODE XREF: LoadAllWarps+20j rts ; --------------------------------------------------------------------------- -loc_A0A2: ; CODE XREF: sub_9F1C+1Cj - ; sub_9F1C+86j ... +loc_A0A2: ; CODE XREF: LoadWarps+1Cj + ; LoadWarps+86j ... tst.w (DebugModeEnable).w bmi.w loc_A09C - move.w #$001D,d7 + move.w #00029,d7 -loc_A0AE: ; CODE XREF: sub_9F1C+1A0j +loc_A0AE: ; CODE XREF: LoadWarps+1A0j trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_NigelDropObj2 @@ -212,7 +212,7 @@ loc_A0AE: ; CODE XREF: sub_9F1C+1A0j jsr (j_Sleep).l dbf d7,loc_A0AE bra.s loc_A09C -; End of function sub_9F1C +; End of function LoadWarps ; =============== S U B R O U T I N E ======================================= @@ -220,7 +220,7 @@ loc_A0AE: ; CODE XREF: sub_9F1C+1A0j sub_A0C2: ; CODE XREF: sub_620A:loc_6212p ; sub_620A+F0p ... - lea (unk_FF1218).l,a0 + lea (WarpTbl).l,a0 move.b (Player_X).l,d0 move.b (Player_Y).l,d1 @@ -329,7 +329,7 @@ loc_A17A: ; CODE XREF: CheckForRoomTransition+10j ; =============== S U B R O U T I N E ======================================= -GetOriginalRoomNum: ; CODE XREF: sub_9EF8+16p +GetOriginalRoomNum: ; CODE XREF: LoadAllWarps+16p ; sub_A12E+6p ; DATA XREF: ... movem.l d1-d3/a0-a1,-(sp) diff --git a/code/maps/roomspriteflags.asm b/code/maps/roomspriteflags.asm index e381542..3c14034 100644 --- a/code/maps/roomspriteflags.asm +++ b/code/maps/roomspriteflags.asm @@ -71,7 +71,7 @@ sub_1A356: ; CODE XREF: DoCustomRoomActions+2F0p CheckRoomFlagsToHideSprites: ; CODE XREF: CheckFlags+8p - bsr.s CheckFlagsToToggleSpriteVisibility + bsr.s CheckSpriteVisibleFlags bsr.s CheckOneTimeEventFlags rts ; End of function CheckRoomFlagsToHideSprites @@ -80,11 +80,11 @@ CheckRoomFlagsToHideSprites: ; CODE XREF: CheckFlags+8p ; =============== S U B R O U T I N E ======================================= -CheckFlagsToToggleSpriteVisibility: ; CODE XREF: CheckRoomFlagsToHideSpritesp +CheckSpriteVisibleFlags: ; CODE XREF: CheckRoomFlagsToHideSpritesp lea SpriteVisibilityFlags(pc),a0 lea (g_Flags).l,a1 -loc_1A38C: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+52j +loc_1A38C: ; CODE XREF: CheckSpriteVisibleFlags+52j move.w (a0),d0 bmi.s locret_1A3D6 cmp.w (g_RmNum1).l,d0 @@ -100,11 +100,11 @@ loc_1A38C: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+52j bra.s loc_1A3B8 ; --------------------------------------------------------------------------- -loc_1A3B2: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+22j +loc_1A3B2: ; CODE XREF: CheckSpriteVisibleFlags+22j btst d1,(a1,d0.w) beq.s loc_1A3D2 -loc_1A3B8: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+2Ej +loc_1A3B8: ; CODE XREF: CheckSpriteVisibleFlags+2Ej move.b $00000003(a0),d0 andi.b #$1F,d0 lea (Sprite1_X).l,a5 @@ -112,15 +112,15 @@ loc_1A3B8: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+2Ej bsr.w HideSpriteAtD0 movem.l (sp)+,a0-a1 -loc_1A3D2: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+14j - ; CheckFlagsToToggleSpriteVisibility+2Cj ... +loc_1A3D2: ; CODE XREF: CheckSpriteVisibleFlags+14j + ; CheckSpriteVisibleFlags+2Cj ... addq.l #$04,a0 bra.s loc_1A38C ; --------------------------------------------------------------------------- -locret_1A3D6: ; CODE XREF: CheckFlagsToToggleSpriteVisibility+Cj +locret_1A3D6: ; CODE XREF: CheckSpriteVisibleFlags+Cj rts -; End of function CheckFlagsToToggleSpriteVisibility +; End of function CheckSpriteVisibleFlags ; =============== S U B R O U T I N E ======================================= @@ -206,8 +206,8 @@ loc_1A450: ; CODE XREF: CheckLockedDoorSpriteFlags+4j loc_1A45A: ; CODE XREF: CheckFlagsToHideMultipleSprites+1Cj move.w #$FFFF,(a0,d2.w) ; Move offscreen - addi.w #$0080,d2 - cmpi.w #$0800,d2 + addi.w #SPRITE_SIZE,d2 + cmpi.w #ALL_SPRITES_SIZE,d2 bne.s loc_1A45A ; Move offscreen locret_1A46A: ; CODE XREF: CheckFlagsToHideMultipleSprites+6j @@ -230,12 +230,12 @@ loc_1A470: ; CODE XREF: CheckPermanentSwitchFlags+34j bcc.s locret_1A4A2 btst d0,(a1,d1.w) beq.s loc_1A49C - andi.b #$3F,$00000004(a0,d2.w) - ori.b #$80,$00000004(a0,d2.w) - move.w #$0004,$00000024(a0,d2.w) - bclr #$00,$00000008(a0,d2.w) - clr.w $0000002A(a0,d2.w) - bset #$07,$00000048(a0,d2.w) + andi.b #$3F,RotationAndSize(a0,d2.w) + ori.b #$80,RotationAndSize(a0,d2.w) + move.w #$0004,AnimationIndex(a0,d2.w) + bclr #$00,Flags1(a0,d2.w) + clr.w BehavParam(a0,d2.w) + bset #$07,Unk48(a0,d2.w) loc_1A49C: ; CODE XREF: CheckPermanentSwitchFlags+Cj movea.l a6,a0 @@ -254,7 +254,7 @@ locret_1A4A2: ; CODE XREF: CheckPermanentSwitchFlags+6j ; =============== S U B R O U T I N E ======================================= -sub_1A4A4: ; DATA XREF: sub_103BEt +CheckUnlockDoor: ; DATA XREF: j_CheckUnlockDoort lea LockedDoorSpriteFlags(pc),a0 bsr.s FindNextRoomFlagMatch bcc.s loc_1A4B8 @@ -264,26 +264,26 @@ sub_1A4A4: ; DATA XREF: sub_103BEt rts ; --------------------------------------------------------------------------- -loc_1A4B8: ; CODE XREF: sub_1A4A4+6j - ; sub_1A4A4+Cj +loc_1A4B8: ; CODE XREF: CheckUnlockDoor+6j + ; CheckUnlockDoor+Cj tst.b d0 rts -; End of function sub_1A4A4 +; End of function CheckUnlockDoor ; =============== S U B R O U T I N E ======================================= -sub_1A4BC: ; DATA XREF: sub_103A4t +UnlockDoor: ; DATA XREF: j_UnlockDoort lea LockedDoorSpriteFlags(pc),a0 bsr.s FindNextRoomFlagMatch bcc.s locret_1A4CE bset d0,(a1,d1.w) move.w #$FFFF,(a0,d2.w) -locret_1A4CE: ; CODE XREF: sub_1A4BC+6j +locret_1A4CE: ; CODE XREF: UnlockDoor+6j rts -; End of function sub_1A4BC +; End of function UnlockDoor ; =============== S U B R O U T I N E ======================================= @@ -388,16 +388,16 @@ sub_1A56A: ; CODE XREF: ROM:0001626Cp clr.w d7 loc_1A572: ; CODE XREF: sub_1A56A+20j - cmpi.b #$FF,(a0) + cmpi.b #$FF,X(a0) beq.s loc_1A58C cmpa.l a0,a5 beq.s loc_1A58C - cmpi.b #$26,$0000000B(a0) + cmpi.b #SpriteB_SacredTree,SpriteGraphic(a0) bne.s loc_1A586 addq.b #$01,d7 loc_1A586: ; CODE XREF: sub_1A56A+18j - lea $00000080(a0),a0 + lea SPRITE_SIZE(a0),a0 bra.s loc_1A572 ; --------------------------------------------------------------------------- diff --git a/code/misc/debugmenu.asm b/code/misc/debugmenu.asm index feee292..9c89fa5 100644 --- a/code/misc/debugmenu.asm +++ b/code/misc/debugmenu.asm @@ -41,7 +41,7 @@ DebugMenuEnter: ; DATA XREF: ROM:DebugMenuActionTableo ; --------------------------------------------------------------------------- DebugMenuExit: ; DATA XREF: ROM:DebugMenuActionTableo - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l rts ; --------------------------------------------------------------------------- @@ -101,7 +101,7 @@ SoundMenuEnter: ; DATA XREF: ROM:SoundMenuActionJmptableo ; --------------------------------------------------------------------------- SoundMenuExit: ; DATA XREF: ROM:SoundMenuActionJmptableo - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l rts ; --------------------------------------------------------------------------- @@ -200,7 +200,7 @@ MusicMenuPlay: ; DATA XREF: ROM:MusicMenuActionJmptableo ; --------------------------------------------------------------------------- MusicMenuExit: ; DATA XREF: ROM:MusicMenuActionJmptableo - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l rts ; --------------------------------------------------------------------------- @@ -278,7 +278,7 @@ MapMenuOpen: ; DATA XREF: ROM:MapMenuActionJmpTableo MapMenuEnter: ; DATA XREF: ROM:MapMenuActionJmpTableo movem.l d0-a6,-(sp) - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l asl.w #$02,d1 lea MapList(pc,d1.w),a0 @@ -287,7 +287,7 @@ MapMenuEnter: ; DATA XREF: ROM:MapMenuActionJmpTableo move.w d0,(RmNum2).l jsr (j_CheckForRoomTransition).l move.w d0,(g_RmNum1).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l clr.b d0 jsr (j_LoadRoom_0).l jsr (sub_3E0).l @@ -296,7 +296,7 @@ MapMenuEnter: ; DATA XREF: ROM:MapMenuActionJmpTableo ; --------------------------------------------------------------------------- MapMenuExit: ; DATA XREF: ROM:MapMenuActionJmpTableo - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l rts ; --------------------------------------------------------------------------- @@ -362,7 +362,7 @@ FlagMenuOpen: ; DATA XREF: ROM:FlagMenuActionJmpTableo FlagMenuEnter: ; DATA XREF: ROM:FlagMenuActionJmpTableo movem.l d0-a6,-(sp) - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l lea (g_Flags).l,a0 moveq #$00000007,d0 @@ -383,7 +383,7 @@ loc_2A72A: ; CODE XREF: ROM:0002A732j loc_2A734: ; CODE XREF: ROM:0002A728j jsr (j_CheckForRoomTransition).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l clr.b d0 jsr (j_LoadRoom_0).l jsr (sub_3E0).l @@ -392,7 +392,7 @@ loc_2A734: ; CODE XREF: ROM:0002A728j ; --------------------------------------------------------------------------- FlagMenuExit: ; DATA XREF: ROM:FlagMenuActionJmpTableo - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bset #$01,(byte_FF1917).l rts ; --------------------------------------------------------------------------- @@ -491,7 +491,7 @@ loc_2A836: ; CODE XREF: IncrementVar+4j sub_2A840: ; CODE XREF: JmpToDebugActionTableEntry:loc_2A804p movem.l d1-a6,-(sp) jsr (j_WaitUntilVBlank).l - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d1 move.b (byte_FF1916).l,d2 move.b d1,(byte_FF1916).l diff --git a/code/pointertables/maps/mappointers.asm b/code/pointertables/maps/mappointers.asm index 3b59e4a..f158acb 100644 --- a/code/pointertables/maps/mappointers.asm +++ b/code/pointertables/maps/mappointers.asm @@ -1,3 +1,3 @@ RoomDataPtr: dc.l RoomData_0 ; DATA XREF: ROM:00002B52r RoomPalPtr: dc.l RoomPals ; DATA XREF: SetRoomPal+20r -RoomExitsPtr: dc.l RoomExits ; DATA XREF: sub_9F1Cr +RoomExitsPtr: dc.l RoomExits ; DATA XREF: LoadWarpsr diff --git a/code/pointertables/maps/roomlist.asm b/code/pointertables/maps/roomlist.asm index 53a05c5..92b3bdb 100644 --- a/code/pointertables/maps/roomlist.asm +++ b/code/pointertables/maps/roomlist.asm @@ -1,4 +1,4 @@ - dc.l Map187 ; TilemapPtr ; DATA XREF: ROM:RoomDataPtro + dc.l Map187 ; TilemapPtr ; DATA XREF: ROM:RoomDataPtro dc.b $09 ; Tileset dc.b $1D ; Palette dc.b $22 ; RoomHeight diff --git a/code/pointertables/sprites/spritegraphicsptr.asm b/code/pointertables/sprites/spritegraphicsptr.asm index 6a0a823..894544d 100644 --- a/code/pointertables/sprites/spritegraphicsptr.asm +++ b/code/pointertables/sprites/spritegraphicsptr.asm @@ -1,2 +1,2 @@ -SpriteGfxPtrPtr:dc.l SpriteGfxPtr ; DATA XREF: sub_4214+Co +SpriteGfxPtrPtr:dc.l SpriteGfxPtr ; DATA XREF: InitSpriteLoad+Co ; LoadSpriteGfx+10o ... diff --git a/code/pointertables/strings/introstringptrs.asm b/code/pointertables/strings/introstringptrs.asm index 69c50b8..ffd873c 100644 --- a/code/pointertables/strings/introstringptrs.asm +++ b/code/pointertables/strings/introstringptrs.asm @@ -1,4 +1,4 @@ - dc.l IntroString1 ; DATA XREF: CheckAndDisplayIntroString+18t + dc.l IntroString1 ; DATA XREF: CheckAndDisplayIntroString+18t dc.l IntroString2 dc.l IntroString3 dc.l IntroString4 diff --git a/code/script/characters/script_characters.asm b/code/script/characters/script_characters.asm index 34de5ce..a46541c 100644 --- a/code/script/characters/script_characters.asm +++ b/code/script/characters/script_characters.asm @@ -8,7 +8,7 @@ CS_0143: ; 0xA0F1: PRINT MSG 0x013E, END: "{5B}Go back now, and you'll{57}be given something good, OK?{58}" ScriptID $104,$1 ; Answer 'yes': Run text script at offset 0x0279FE ; 0x75C7: SET BIT 7 OF FLAG 0x038, MSGBOX CLEARED, END - ScriptJump ClearTextbox_0,$2 ; Answer 'no': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$2 ; Answer 'no': Jump to address 0x028FB8 ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -116,7 +116,7 @@ CS_0002: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0000 ; Params 00, 00 - ScriptJump loc_26006,$1 ; Jump to address 0x026006 + ScriptJump CS_0002_1,$1 ; Jump to address 0x026006 ; dc.w $0002 ; Params 00, 02 ScriptID $12D,$3 ; Run text script at offset 0x027A50 @@ -133,7 +133,7 @@ CS_0002: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26006: +CS_0002_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $128,$0 ; Prompt: Run text script at offset 0x027A46 @@ -251,17 +251,17 @@ CS_0003: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0000 ; Params 00, 00 - ScriptJump loc_26084,$1 ; Jump to address 0x026084 + ScriptJump CS_0003_1,$1 ; Jump to address 0x026084 ; dc.w $0003 ; Params 00, 03 - ScriptJump loc_26090,$3 ; Jump to address 0x026090 + ScriptJump CS_0003_2,$3 ; Jump to address 0x026090 ; dc.w $0004 ; Params 00, 04 ScriptID $15B,$5 ; Run text script at offset 0x027AAC ; 0xE140: PRINT MSG 0x018D, MSGBOX CLEARED, END: "{5B}We have to move this{57}debris to get to Mercator.{5E}" ; dc.w $0007 ; Params 00, 07 - ScriptJump loc_2609C,$7 ; Jump to address 0x02609C + ScriptJump CS_0003_3,$7 ; Jump to address 0x02609C ; dc.w $001B ; Params 00, 1B ScriptID $160,$9 ; Run text script at offset 0x027AB6 @@ -277,7 +277,7 @@ CS_0003: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26084: +CS_0003_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $14E,$0 ; Prompt: Run text script at offset 0x027A92 @@ -292,7 +292,7 @@ loc_26084: rts ; --------------------------------------------------------------------------- -loc_26090: +CS_0003_2: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C1 ; Bit 1 of flag 0x018 @@ -310,7 +310,7 @@ loc_26090: rts ; --------------------------------------------------------------------------- -loc_2609C: +CS_0003_3: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DA ; Bit 2 of flag 0x01B @@ -348,7 +348,7 @@ CS_0082: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0000 ; Params 00, 00 - ScriptJump loc_260D0,$1 ; Jump to address 0x0260D0 + ScriptJump CS_0082_1,$1 ; Jump to address 0x0260D0 ; dc.w $0002 ; Params 00, 02 ScriptID $16A,$3 ; Run text script at offset 0x027ACA @@ -365,7 +365,7 @@ CS_0082: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_260D0: +CS_0082_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C0 ; Bit 0 of flag 0x018 @@ -421,7 +421,7 @@ CS_0085: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0000 ; Params 00, 00 - ScriptJump loc_26112,$1 ; Jump to address 0x026112 + ScriptJump CS_0085_1,$1 ; Jump to address 0x026112 ; dc.w $0002 ; Params 00, 02 ScriptID $179,$3 ; Run text script at offset 0x027AE8 @@ -435,7 +435,7 @@ CS_0085: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26112: +CS_0085_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $174,$0 ; Prompt: Run text script at offset 0x027ADE @@ -468,12 +468,12 @@ CS_0004: ; 0xE166: PRINT MSG 0x01B3, MSGBOX CLEARED, END: "{5B}The curse on us will never{57}be lifted unless Helga{57}dies....howoooo!....{5E}" ; dc.w $0203 ; Params 02, 03 - ScriptJump loc_26130,$5 ; Jump to address 0x026130 + ScriptJump CS_0004_1,$5 ; Jump to address 0x026130 ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26130: +CS_0004_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00E2 ; Bit 2 of flag 0x01C @@ -576,7 +576,7 @@ CS_0008: ; 0x7C08: LOAD CUSTOM ACTION 0x08 (0x01211C CSA_0008), MSGBOX CLEARED, END ; dc.w $0002 ; Params 00, 02 - ScriptJump loc_261A8,$3 ; Jump to address 0x0261A8 + ScriptJump CS_0008_1,$3 ; Jump to address 0x0261A8 ; dc.w $0003 ; Params 00, 03 ScriptID $198,$5 ; Run text script at offset 0x027B26 @@ -627,7 +627,7 @@ CS_0008: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_261A8: +CS_0008_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0012 ; Bit 2 of flag 0x002 @@ -770,12 +770,12 @@ CS_0093: ; 0xE1A0: PRINT MSG 0x01ED, MSGBOX CLEARED, END: "{5B}a second...{5E}" ; dc.w $0005 ; Params 00, 05 - ScriptJump loc_2622C,$3 ; Jump to address 0x02622C + ScriptJump CS_0093_1,$3 ; Jump to address 0x02622C ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2622C: +CS_0093_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C3 ; Bit 3 of flag 0x018 @@ -848,12 +848,12 @@ CS_0096: ; 0xE1AB: PRINT MSG 0x01F8, MSGBOX CLEARED, END: "{5B}commonplace nowadays....{5E}" ; dc.w $0005 ; Params 00, 05 - ScriptJump loc_26276,$3 ; Jump to address 0x026276 + ScriptJump CS_0096_1,$3 ; Jump to address 0x026276 ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26276: +CS_0096_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C3 ; Bit 3 of flag 0x018 @@ -1181,11 +1181,11 @@ CS_00A1: dc.w $FFFF ; --------------------------------------------------------------------------- -CS_00A2: +CS_00A2: ; Params 61, 00 bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0008 ; Params 00, 08 - ScriptJump loc_263BC,$1 ; Jump to address 0x0263BC + ScriptJump CS_00A2_1,$1 ; Jump to address 0x0263BC ; dc.w $0018 ; Params 00, 18 ScriptID $218,$3 ; Run text script at offset 0x027C26 @@ -1200,7 +1200,7 @@ CS_00A2: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_263BC: +CS_00A2_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $214,$0 ; Prompt: Run text script at offset 0x027C1E @@ -1333,7 +1333,7 @@ CS_00A6: ; 0xE20C: PRINT MSG 0x0259, MSGBOX CLEARED, END: "{5B}Go take a look around town,{57}young man!{5E}" ; dc.w $0006 ; Params 00, 06 - ScriptJump loc_2644A,$3 ; Jump to address 0x02644A + ScriptJump CS_00A6_1,$3 ; Jump to address 0x02644A ; dc.w $0007 ; Params 00, 07 ScriptID $23C,$5 ; Run text script at offset 0x027C6E @@ -1357,7 +1357,7 @@ CS_00A6: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2644A: +CS_00A6_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $238,$0 ; Prompt: Run text script at offset 0x027C66 @@ -1367,12 +1367,12 @@ loc_2644A: ; 0x820F: PRINT MSG 0x025C: "{5B}Quick response!{57}Are you sure?{57}OK!{62}" ; 0x1420: SET BIT 0 OF FLAG 0x004 ; 0xE210: PRINT MSG 0x025D, MSGBOX CLEARED, END: "{5B}Their hideout is in{57}the cave on the promontory.{57}You can get there by raft.{5E}" - ScriptJump loc_26456,$2 ; Answer 'no': Jump to address 0x026456 + ScriptJump CS_00A6_2,$2 ; Answer 'no': Jump to address 0x026456 ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_26456: +CS_00A6_2: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $23D,$0 ; Prompt: Run text script at offset 0x027C70 @@ -1612,7 +1612,7 @@ CS_0013: ; 0xE23B: PRINT MSG 0x0288, MSGBOX CLEARED, END: "{5B}I said, do not disturb me!{57}Hammana, hammena, hammina...{5E}" ; dc.w $0018 ; Params 00, 18 - ScriptJump loc_26542,$B ; Jump to address 0x026542 + ScriptJump CS_0013_1,$B ; Jump to address 0x026542 ; dc.w $001A ; Params 00, 1A ScriptID $276,$D ; Run text script at offset 0x027CE2 @@ -1622,7 +1622,7 @@ CS_0013: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26542: +CS_0013_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0132 ; Bit 2 of flag 0x026 @@ -1862,7 +1862,7 @@ CS_0015: ; 0xE269: PRINT MSG 0x02B6, MSGBOX CLEARED, END: "{5B}You again!{57}I said members only!{57}Now, out! Out!{5E}" ; dc.w $000E ; Params 00, 0E - ScriptJump loc_26616,$5 ; Jump to address 0x026616 + ScriptJump CS_0015_1,$5 ; Jump to address 0x026616 ; dc.w $000F ; Params 00, 0F ScriptID $2A6,$7 ; Run text script at offset 0x027D42 @@ -1871,7 +1871,7 @@ CS_0015: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26616: +CS_0015_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $001A ; Bit 2 of flag 0x003 @@ -1887,10 +1887,10 @@ CS_0016: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_26638,$1 ; Jump to address 0x026638 + ScriptJump CS_0016_1,$1 ; Jump to address 0x026638 ; dc.w $000C ; Params 00, 0C - ScriptJump loc_26650,$3 ; Jump to address 0x026650 + ScriptJump CS_0016_2,$3 ; Jump to address 0x026650 ; dc.w $000E ; Params 00, 0E ScriptID $2AB,$5 ; Run text script at offset 0x027D4C @@ -1903,7 +1903,7 @@ CS_0016: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26638: ; Trap01Handler +CS_0016_1: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- ScriptID $2A7,$0 ; Run text script at offset 0x027D44 @@ -1913,17 +1913,17 @@ loc_26638: ; Trap01Handler ; --------------------------------------------------------------------------- move.w #$00C8,d0 -loc_26640: ; CODE XREF: ROM:00026B02j +CS_0016_3: ; CODE XREF: ROM:00026B02j bsr.w TestFlagBit - beq.s locret_2664E + beq.s CS_0016_4 move.w #$002C,d0 bsr.w SetFlagBit -locret_2664E: ; CODE XREF: ROM:00026644j +CS_0016_4: ; CODE XREF: ROM:00026644j rts ; --------------------------------------------------------------------------- -loc_26650: +CS_0016_2: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $001E ; Bit 6 of flag 0x003 @@ -1963,7 +1963,7 @@ CS_0017: CS_00BD: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- -word_26676: dc.w $0009 ; Params 00, 09 + dc.w $0009 ; Params 00, 09 ScriptID $2B4,$1 ; Run text script at offset 0x027D5E ; 0x8277: PRINT MSG 0x02C4: "{5B}Quite expensive, but I feel{57}much better! I've got to go{57}home now and...{62}" ; 0xE278: PRINT MSG 0x02C5, MSGBOX CLEARED, END: "{5B}practice what I learned...{5E}" @@ -2011,25 +2011,25 @@ CS_00C0: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_266B2,$1 ; Jump to address 0x0266B2 + ScriptJump CS_00C0_1,$1 ; Jump to address 0x0266B2 ; dc.w $0101 ; Params 01, 01 - ScriptJump loc_266BE,$3 ; Jump to address 0x0266BE + ScriptJump CS_00C0_2,$3 ; Jump to address 0x0266BE ; dc.w $0102 ; Params 01, 02 ScriptID $2D7,$5 ; Run text script at offset 0x027DA4 ; 0xE295: PRINT MSG 0x02E2, MSGBOX CLEARED, END: "{5B}Did you go to the market?{5E}" ; dc.w $001A ; Params 00, 1A - ScriptJump loc_26706,$7 ; Jump to address 0x026706 + ScriptJump CS_00C0_8,$7 ; Jump to address 0x026706 ; dc.w $0103 ; Params 01, 03 - ScriptJump loc_266FA,$9 ; Jump to address 0x0266FA + ScriptJump CS_00C0_7,$9 ; Jump to address 0x0266FA ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_266B2: +CS_00C0_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C7 ; Bit 7 of flag 0x018 @@ -2045,7 +2045,7 @@ loc_266B2: rts ; --------------------------------------------------------------------------- -loc_266BE: ; Trap01Handler +CS_00C0_2: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- ScriptID $2C4,$0 ; Run text script at offset 0x027D7E @@ -2054,18 +2054,16 @@ loc_266BE: ; Trap01Handler ; 0xA288: PRINT MSG 0x02D5, END: "{5B}Would you give me{57}your opinion?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcs.s loc_266CE - -loc_266C8: ; Trap01Handler - trap #$01 + bcs.s CS_00C0_3 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $2C7,$0 ; Run text script at offset 0x027D84 ; 0xE289: PRINT MSG 0x02D6, MSGBOX CLEARED, END: "{5B}Yeah, I know that you're{57}busy. Visit me later when{57}you have nothing better to do.{5E}" ; --------------------------------------------------------------------------- - bra.s locret_266F8 + bra.s CS_00C0_9 ; --------------------------------------------------------------------------- -loc_266CE: ; CODE XREF: ROM:000266C6j +CS_00C0_3: ; CODE XREF: ROM:000266C6j ; ROM:000266F2j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- @@ -2073,34 +2071,27 @@ loc_266CE: ; CODE XREF: ROM:000266C6j ; 0xA28A: PRINT MSG 0x02D7, END: "{5B}How about a drugstore?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_266DE + bcc.s CS_00C0_4 trap #$01 ; Trap01Handler -; --------------------------------------------------------------------------- - ScriptID $2CD,$0 ; Run text script at offset 0x027D90 - ; 0x1553: SET BIT 3 OF FLAG 0x02A - ; 0xA28F: PRINT MSG 0x02DC, END: "{5B}You agree? Great!!{57}It looks like I'm a drugstore{57}owner from now on!{62}" -; --------------------------------------------------------------------------- - bra.s loc_266F4 -; --------------------------------------------------------------------------- -loc_266DE: ; CODE XREF: ROM:000266D6j + move.b $00000016(sp,d6.w),(a3) + +CS_00C0_4: ; CODE XREF: ROM:000266D6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $2C9,$0 ; Run text script at offset 0x027D88 ; 0xA28B: PRINT MSG 0x02D8, END: "{5B}Hmmm....okay, then,{57}how about a variety shop?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_266EE - -loc_266E8: ; Trap01Handler - trap #$01 + bcc.s CS_00C0_5 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $2CF,$0 ; Run text script at offset 0x027D94 ; 0xA290: PRINT MSG 0x02DD, END: "{5B}You agree? Then it's{57}settled! I'm a variety shop{57}owner from now on!{62}" ; --------------------------------------------------------------------------- - bra.s loc_266F4 + bra.s CS_00C0_6 ; --------------------------------------------------------------------------- -loc_266EE: ; CODE XREF: ROM:000266E6j +CS_00C0_5: ; CODE XREF: ROM:000266E6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $2CA,$0 ; Run text script at offset 0x027D8A @@ -2108,10 +2099,10 @@ loc_266EE: ; CODE XREF: ROM:000266E6j ; 0x828D: PRINT MSG 0x02DA: "{5B}choose between the two.{57}I'll follow your advice.{62}" ; 0xA28E: PRINT MSG 0x02DB, END: "{5B}Now, let's try once more.{62}" ; --------------------------------------------------------------------------- - bra.s loc_266CE + bra.s CS_00C0_3 ; --------------------------------------------------------------------------- -loc_266F4: ; CODE XREF: ROM:000266ECj +CS_00C0_6: ; CODE XREF: ROM:000266ECj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $2D0,$0 ; Run text script at offset 0x027D96 @@ -2124,11 +2115,11 @@ loc_266F4: ; CODE XREF: ROM:000266ECj ; 0x77E8: RECEIVE ITEM [0xFF1196], MSGBOX CLEARED, END ; --------------------------------------------------------------------------- -locret_266F8: ; CODE XREF: ROM:000266CCj +CS_00C0_9: ; CODE XREF: ROM:000266CCj rts ; --------------------------------------------------------------------------- -loc_266FA: +CS_00C0_7: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DD ; Bit 5 of flag 0x01B @@ -2144,14 +2135,14 @@ loc_266FA: rts ; --------------------------------------------------------------------------- -loc_26706: +CS_00C0_8: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0152 ; Bit 2 of flag 0x02A ScriptID $2DE,$1 ; Flag set: Run text script at offset 0x027DB2 ; 0x829C: PRINT MSG 0x02E9: "{5B}Was the market already{57}closed? That's okay.{57}They'll open it up again.{62}" ; 0xE29D: PRINT MSG 0x02EA, MSGBOX CLEARED, END: "{5B}I'll just stay here and{57}get things ready so I can{57}go for myself next month.{5E}" - ScriptJump loc_266B2,$2 ; Flag clear: Jump to address 0x0366B2 + ScriptJump CS_00C0_1,$2 ; Flag clear: Jump to address 0x0366B2 ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- @@ -2168,10 +2159,10 @@ CS_00C1: ; 0xE29F: PRINT MSG 0x02EC, MSGBOX CLEARED, END: "{5B}My dad is thinking of{57}changing his job.{5E}" ; dc.w $0102 ; Params 01, 02 - ScriptJump loc_2672C,$5 ; Jump to address 0x02672C + ScriptJump CS_00C1_1,$5 ; Jump to address 0x02672C ; dc.w $001A ; Params 00, 1A - ScriptJump loc_26738,$7 ; Jump to address 0x026738 + ScriptJump CS_00C1_2,$7 ; Jump to address 0x026738 ; dc.w $0103 ; Params 01, 03 ScriptID $2E4,$9 ; Run text script at offset 0x027DBE @@ -2180,7 +2171,7 @@ CS_00C1: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2672C: +CS_00C1_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0153 ; Bit 3 of flag 0x02A @@ -2192,7 +2183,7 @@ loc_2672C: rts ; --------------------------------------------------------------------------- -loc_26738: +CS_00C1_2: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0152 ; Bit 2 of flag 0x02A @@ -2348,12 +2339,12 @@ CS_0019: ; 0xE2C6: PRINT MSG 0x0313, MSGBOX CLEARED, END: "{5B}What are we going to do{57}now?{5E}" ; dc.w $001D ; Params 00, 1D - ScriptJump loc_267CC,$9 ; Jump to address 0x0267CC + ScriptJump CS_0019_1,$9 ; Jump to address 0x0267CC ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_267CC: +CS_0019_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $014A ; Bit 2 of flag 0x029 @@ -2371,7 +2362,7 @@ CS_001A: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_267E6,$1 ; Jump to address 0x0267E6 + ScriptJump CS_001A_1,$1 ; Jump to address 0x0267E6 ; dc.w $0014 ; Params 00, 14 ScriptID $315,$3 ; Run text script at offset 0x027E20 @@ -2382,7 +2373,7 @@ CS_001A: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_267E6: ; Trap01Handler +CS_001A_1: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- ScriptID $30E,$0 ; Run text script at offset 0x027E12 @@ -2390,12 +2381,10 @@ loc_267E6: ; Trap01Handler ; 0xA2CA: PRINT MSG 0x0317, END: "{5B}Will you hear my story?{58}" ; --------------------------------------------------------------------------- -loc_267EA: ; CODE XREF: ROM:000267FAj +CS_001A_2: ; CODE XREF: ROM:000267FAj bsr.w GetYesNoAnswer ; Params 61, 00 - bcc.s loc_267F6 ; Params 64, 06 - -loc_267F0: ; Trap01Handler - trap #$01 + bcc.s CS_001A_3 ; Params 64, 06 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $310,$0 ; Run text script at offset 0x027E16 ; 0x82CB: PRINT MSG 0x0318: "{5B}Needless to say, I'm Ludwig,{57}the world-famous composer{57}from the continent.{62}" @@ -2403,19 +2392,19 @@ loc_267F0: ; Trap01Handler ; 0x82CD: PRINT MSG 0x031A: "{5B}she just vanished!!{57}I'm afraid my lessons weren't{57}good enough for her...{62}" ; 0xE2CE: PRINT MSG 0x031B, MSGBOX CLEARED, END: "{5B}She might at least say{57}good-bye before leaving...{57}Sigh!...how cute she was....{5E}" ; --------------------------------------------------------------------------- - bra.s locret_267FC + bra.s CS_001A_4 ; --------------------------------------------------------------------------- -loc_267F6: ; CODE XREF: ROM:000267EEj +CS_001A_3: ; CODE XREF: ROM:000267EEj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $314,$0 ; Run text script at offset 0x027E1E ; 0xA2CF: PRINT MSG 0x031C, END: "{5B}Oh, please listen....{58}" ; --------------------------------------------------------------------------- - bra.s loc_267EA + bra.s CS_001A_2 ; --------------------------------------------------------------------------- -locret_267FC: ; CODE XREF: ROM:000267F4j +CS_001A_4: ; CODE XREF: ROM:000267F4j rts ; --------------------------------------------------------------------------- @@ -2499,12 +2488,12 @@ CS_00C8: ; 0xE2E5: PRINT MSG 0x0332, MSGBOX CLEARED, END: "{5B}Ah, Princess......{57}Zzzzzzzz.....{5E}" ; dc.w $001D ; Params 00, 1D - ScriptJump loc_2684E,$5 ; Jump to address 0x02684E + ScriptJump CS_00C8_1,$5 ; Jump to address 0x02684E ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2684E: +CS_00C8_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $014A ; Bit 2 of flag 0x029 @@ -2521,7 +2510,7 @@ CS_00C9: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_26868,$1 ; Jump to address 0x026868 + ScriptJump CS_00C9_1,$1 ; Jump to address 0x026868 ; dc.w $0014 ; Params 00, 14 ScriptID $32E,$3 ; Run text script at offset 0x027E52 @@ -2530,7 +2519,7 @@ CS_00C9: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26868: +CS_00C9_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0028 ; Bit 0 of flag 0x005 @@ -2597,7 +2586,7 @@ CS_00CB: ; 0xE2F9: PRINT MSG 0x0346, MSGBOX CLEARED, END: "{5B}Finally he's seen the light!{57}We've been preaching to him{57}for six hours!{5E}" ; dc.w $001B ; Params 00, 1B - ScriptJump loc_268AC,$B ; Jump to address 0x0268AC + ScriptJump CS_00CB_1,$B ; Jump to address 0x0268AC ; dc.w $001D ; Params 00, 1D ScriptID $345,$D ; Run text script at offset 0x027E80 @@ -2606,7 +2595,7 @@ CS_00CB: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_268AC: +CS_00CB_1: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $341,$0 ; Prompt: Run text script at offset 0x027E78 @@ -2630,7 +2619,7 @@ CS_00CC: ; 0xE2FF: PRINT MSG 0x034C, MSGBOX CLEARED, END: "{5B}Heh, heh, heh...You'd better{57}leave....this place isn't for{57}sightseers.....heh, heh, heh...{5E}" ; dc.w $0014 ; Params 00, 14 - ScriptJump loc_268CA,$3 ; Jump to address 0x0268CA + ScriptJump CS_00CC_1,$3 ; Jump to address 0x0268CA ; dc.w $0015 ; Params 00, 15 ScriptID $34B,$5 ; Run text script at offset 0x027E8C @@ -2639,7 +2628,7 @@ CS_00CC: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_268CA: +CS_00CC_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00A2 ; Bit 2 of flag 0x014 @@ -2654,10 +2643,8 @@ loc_268CA: ; --------------------------------------------------------------------------- CS_001B: ; Money won from Greenpea - cmpi.w #01600,(g_Vars+$1C).l - blt.s loc_268EC - -loc_268E0: + cmpi.w #01600,(g_AdditionalFlags+$1C).l + blt.s CS_001B_1 bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0008 ; Bit 0 of flag 0x001 @@ -2667,10 +2654,10 @@ loc_268E0: ; 0x1408: SET BIT 0 OF FLAG 0x001 ; 0xE588: PRINT MSG 0x05D5, MSGBOX CLEARED, END: "{5B}No-no-no! Please...{57}get out! You're some kind{57}of con-artist, aren't you?{5E}" ; --------------------------------------------------------------------------- - bra.s locret_268F6 + bra.s CS_001B_2 ; --------------------------------------------------------------------------- -loc_268EC: ; CODE XREF: ROM:000268DEj +CS_001B_1: ; CODE XREF: ROM:000268DEj bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0008 ; Bit 0 of flag 0x001 @@ -2681,7 +2668,7 @@ loc_268EC: ; CODE XREF: ROM:000268DEj ; 0x7C34: LOAD CUSTOM ACTION 0x34 (0x0121CC CSA_0034), MSGBOX CLEARED, END ; --------------------------------------------------------------------------- -locret_268F6: ; CODE XREF: ROM:000268EAj +CS_001B_2: ; CODE XREF: ROM:000268EAj rts ; --------------------------------------------------------------------------- @@ -2743,23 +2730,21 @@ CS_00CF: CS_00D0: move.w #$001B,d0 bsr.w TestFlagBit - beq.s loc_2694A + beq.s CS_00D0_3 move.w #$000F,d0 bsr.w TestFlagBit - bne.s loc_26944 - -loc_2693E: ; Trap01Handler - trap #$01 + bne.s CS_00D0_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $681,$0 ; Run text script at offset 0x0284F8 ; 0x18D0: LOAD CHARACTER SCRIPT * (0x00D0) ; 0x8591: PRINT MSG 0x05DE: "{5B}Collecting jars is his hobby.{57}Scattering jars and making{57}somebody put them back{62}" ; 0xE592: PRINT MSG 0x05DF, MSGBOX CLEARED, END: "{5B}is my hobby.{5E}" ; --------------------------------------------------------------------------- - bra.s loc_26948 + bra.s CS_00D0_2 ; --------------------------------------------------------------------------- -loc_26944: ; CODE XREF: ROM:0002693Cj +CS_00D0_1: ; CODE XREF: ROM:0002693Cj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $67F,$0 ; Run text script at offset 0x0284F4 @@ -2767,25 +2752,23 @@ loc_26944: ; CODE XREF: ROM:0002693Cj ; 0xE590: PRINT MSG 0x05DD, MSGBOX CLEARED, END: "{5B}Please help me again.{5E}" ; --------------------------------------------------------------------------- -loc_26948: ; CODE XREF: ROM:00026942j - bra.s locret_2695E +CS_00D0_2: ; CODE XREF: ROM:00026942j + bra.s CS_00D0_5 ; --------------------------------------------------------------------------- -loc_2694A: ; CODE XREF: ROM:00026932j +CS_00D0_3: ; CODE XREF: ROM:00026932j move.w #$001A,d0 bsr.w TestFlagBit - bne.s loc_2695A - -loc_26954: ; Trap01Handler - trap #$01 + bne.s CS_00D0_4 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $35C,$0 ; Run text script at offset 0x027EAE ; 0x7C38: LOAD CUSTOM ACTION 0x38 (0x0121DC CSA_0038), MSGBOX CLEARED, END ; --------------------------------------------------------------------------- - bra.s locret_2695E + bra.s CS_00D0_5 ; --------------------------------------------------------------------------- -loc_2695A: ; CODE XREF: ROM:00026952j +CS_00D0_4: ; CODE XREF: ROM:00026952j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $684,$0 ; Run text script at offset 0x0284FE @@ -2793,7 +2776,7 @@ loc_2695A: ; CODE XREF: ROM:00026952j ; 0xE593: PRINT MSG 0x05E0, MSGBOX CLEARED, END: "{5B}I have a bad back.{57}Those jars are just{57}too heavy for me...{5E}" ; --------------------------------------------------------------------------- -locret_2695E: ; CODE XREF: ROM:loc_26948j +CS_00D0_5: ; CODE XREF: ROM:CS_00D0_2j ; ROM:00026958j rts ; --------------------------------------------------------------------------- @@ -3072,7 +3055,7 @@ CS_001D: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_26A6C,$1 ; Jump to address 0x026A6C + ScriptJump CS_001D_1,$1 ; Jump to address 0x026A6C ; dc.w $000C ; Params 00, 0C ScriptID $39B,$3 ; Run text script at offset 0x027F2C @@ -3098,7 +3081,7 @@ CS_001D: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26A6C: +CS_001D_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $002A ; Bit 2 of flag 0x005 @@ -3229,7 +3212,7 @@ CS_00E5: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_26AFA,$1 ; Jump to address 0x026AFA + ScriptJump CS_00E5_1,$1 ; Jump to address 0x026AFA ; dc.w $000F ; Params 00, 0F ScriptID $3B9,$3 ; Run text script at offset 0x027F68 @@ -3240,7 +3223,7 @@ CS_00E5: ; 0xE36A: PRINT MSG 0x03B7, MSGBOX CLEARED, END: "{5B}I'd like to come along and{57}help, but standing here is{57}an important duty!{5E}" ; dc.w $0017 ; Params 00, 17 - ScriptJump loc_26B06,$7 ; Jump to address 0x026B06 + ScriptJump CS_00E5_2,$7 ; Jump to address 0x026B06 ; dc.w $0018 ; Params 00, 18 ScriptID $3BE,$9 ; Run text script at offset 0x027F72 @@ -3253,7 +3236,7 @@ CS_00E5: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26AFA: ; Trap01Handler +CS_00E5_1: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- ScriptID $3B7,$0 ; Run text script at offset 0x027F64 @@ -3261,12 +3244,12 @@ loc_26AFA: ; Trap01Handler ; 0xE368: PRINT MSG 0x03B5, MSGBOX CLEARED, END: "{5B}This is the castle of{57}Mercator.{57}I cannot allow you inside.{5E}" ; --------------------------------------------------------------------------- -loc_26AFE: ; CODE XREF: ROM:00026B34j +CS_00E5_3: ; CODE XREF: ROM:00026B34j move.w #$00C6,d0 - bra.w loc_26640 + bra.w CS_0016_3 ; --------------------------------------------------------------------------- -loc_26B06: +CS_00E5_2: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DC ; Bit 4 of flag 0x01B @@ -3282,7 +3265,7 @@ CS_00E6: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0009 ; Params 00, 09 - ScriptJump loc_26B30,$1 ; Jump to address 0x026B30 + ScriptJump CS_00E6_1,$1 ; Jump to address 0x026B30 ; dc.w $000F ; Params 00, 0F ScriptID $3C3,$3 ; Run text script at offset 0x027F7C @@ -3294,7 +3277,7 @@ CS_00E6: ; 0xE372: PRINT MSG 0x03BF, MSGBOX CLEARED, END: "{5B}Hahahahaha!!{5E}" ; dc.w $0017 ; Params 00, 17 - ScriptJump loc_26B36,$7 ; Jump to address 0x026B36 + ScriptJump CS_00E6_2,$7 ; Jump to address 0x026B36 ; dc.w $0018 ; Params 00, 18 ScriptID $3C7,$9 ; Run text script at offset 0x027F84 @@ -3308,7 +3291,7 @@ CS_00E6: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26B30: ; Trap01Handler +CS_00E6_1: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- ScriptID $3C0,$0 ; Run text script at offset 0x027F76 @@ -3316,10 +3299,10 @@ loc_26B30: ; Trap01Handler ; 0x836E: PRINT MSG 0x03BB: "{5B}You have not been invited{57}by Duke Mercator, have you?{62}" ; 0xE36F: PRINT MSG 0x03BC, MSGBOX CLEARED, END: "{5B}This is not a place for{57}dirty little kids like you!{57}Get out of here!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_26AFE + bra.s CS_00E5_3 ; --------------------------------------------------------------------------- -loc_26B36: +CS_00E6_2: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DC ; Bit 4 of flag 0x01B @@ -3356,7 +3339,7 @@ CS_001E: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0011 ; Params 00, 11 - ScriptJump loc_26B72,$1 ; Jump to address 0x026B72 + ScriptJump CS_001E_1,$1 ; Jump to address 0x026B72 ; dc.w $0012 ; Params 00, 12 ScriptID $49D,$3 ; Run text script at offset 0x028130 @@ -3364,32 +3347,32 @@ CS_001E: ; 0xE43A: PRINT MSG 0x0487, MSGBOX CLEARED, END: "{5B}Why dost thou not go{57}to the banquet room?{5E}" ; dc.w $0013 ; Params 00, 13 - ScriptJump loc_26B8A,$5 ; Jump to address 0x026B8A + ScriptJump CS_001E_3,$5 ; Jump to address 0x026B8A ; dc.w $0014 ; Params 00, 14 - ScriptJump loc_26B96,$7 ; Jump to address 0x026B96 + ScriptJump CS_001E_4,$7 ; Jump to address 0x026B96 ; dc.w $0018 ; Params 00, 18 - ScriptJump loc_26BA2,$9 ; Jump to address 0x026BA2 + ScriptJump CS_001E_5,$9 ; Jump to address 0x026BA2 ; dc.w $001D ; Params 00, 1D - ScriptJump loc_26BAE,$B ; Jump to address 0x026BAE + ScriptJump CS_001E_6,$B ; Jump to address 0x026BAE ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26B72: +CS_001E_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00CE ; Bit 6 of flag 0x019 ScriptID $49A,$1 ; Flag clear: Run text script at offset 0x02812A ; 0x7C51: LOAD CUSTOM ACTION 0x51 (0x012240 CSA_0051), MSGBOX CLEARED, END - ScriptJump loc_26B7E,$2 ; Flag set: Jump to address 0x026B7E + ScriptJump CS_001E_2,$2 ; Flag set: Jump to address 0x026B7E ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_26B7E: +CS_001E_2: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00DB ; Bit 3 of flag 0x01B @@ -3403,7 +3386,7 @@ loc_26B7E: rts ; --------------------------------------------------------------------------- -loc_26B8A: +CS_001E_3: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00CF ; Bit 7 of flag 0x019 @@ -3420,7 +3403,7 @@ loc_26B8A: rts ; --------------------------------------------------------------------------- -loc_26B96: +CS_001E_4: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00D1 ; Bit 1 of flag 0x01A @@ -3436,7 +3419,7 @@ loc_26B96: rts ; --------------------------------------------------------------------------- -loc_26BA2: +CS_001E_5: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00D5 ; Bit 5 of flag 0x01A @@ -3448,7 +3431,7 @@ loc_26BA2: rts ; --------------------------------------------------------------------------- -loc_26BAE: +CS_001E_6: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DE ; Bit 6 of flag 0x01B @@ -3464,27 +3447,25 @@ loc_26BAE: ; 0x17E8: RECEIVE ITEM [0xFF1196] ; 0x181E: LOAD CHARACTER SCRIPT Arthur (0x001E) ; 0xE44F: PRINT MSG 0x049C, MSGBOX CLEARED, END: "{5B}Visit me anytime!{57}Take care of thyself!{5E}" - ScriptJump loc_26BBA,$2 ; Flag set: Jump to address 0x026BBA + ScriptJump CS_001E_7,$2 ; Flag set: Jump to address 0x026BBA ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_26BBA: +CS_001E_7: move.w #ITM_CASINOTICKET,d0 bsr.w CheckIfItemIsOwned - beq.s loc_26BCA - -loc_26BC4: ; Trap01Handler - trap #$01 + beq.s CS_001E_8 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $4B6,$0 ; Run text script at offset 0x028162 ; 0x181E: LOAD CHARACTER SCRIPT Arthur (0x001E) ; 0xE44F: PRINT MSG 0x049C, MSGBOX CLEARED, END: "{5B}Visit me anytime!{57}Take care of thyself!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_26BCE + bra.s CS_001E_9 ; --------------------------------------------------------------------------- -loc_26BCA: ; CODE XREF: ROM:00026BC2j +CS_001E_8: ; CODE XREF: ROM:00026BC2j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $4B8,$0 ; Run text script at offset 0x028166 @@ -3493,7 +3474,7 @@ loc_26BCA: ; CODE XREF: ROM:00026BC2j ; 0x77E8: RECEIVE ITEM [0xFF1196], MSGBOX CLEARED, END ; --------------------------------------------------------------------------- -locret_26BCE: ; CODE XREF: ROM:00026BC8j +CS_001E_9: ; CODE XREF: ROM:00026BC8j rts ; --------------------------------------------------------------------------- @@ -3631,14 +3612,14 @@ CS_00F1: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_26C66,$1 ; Jump to address 0x026C66 + ScriptJump CS_00F1_2,$1 ; Jump to address 0x026C66 ; dc.w $0101 ; Params 01, 01 ScriptID $3E7,$3 ; Run text script at offset 0x027FC4 ; 0xE38D: PRINT MSG 0x03DA, MSGBOX CLEARED, END: "{5B}Sorry! This warehouse{57}is for traders only.{5E}" ; dc.w $0102 ; Params 01, 02 - ScriptJump loc_26C5A,$5 ; Jump to address 0x026C5A + ScriptJump CS_00F1_1,$5 ; Jump to address 0x026C5A ; dc.w $0103 ; Params 01, 03 ScriptID $3EA,$7 ; Run text script at offset 0x027FCA @@ -3647,7 +3628,7 @@ CS_00F1: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26C5A: +CS_00F1_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00A5 ; Bit 5 of flag 0x014 @@ -3659,7 +3640,7 @@ loc_26C5A: rts ; --------------------------------------------------------------------------- -loc_26C66: +CS_00F1_2: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $3EB,$0 ; Prompt: Run text script at offset 0x027FCC @@ -3703,14 +3684,14 @@ CS_00F4: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00A4 ; Bit 4 of flag 0x014 - ScriptJump loc_26C92,$1 ; Flag set: Jump to address 0x026C92 + ScriptJump CS_00F4_1,$1 ; Flag set: Jump to address 0x026C92 ScriptID $3F2,$2 ; Flag clear: Run text script at offset 0x027FDA ; 0x7C6A: LOAD CUSTOM ACTION 0x6A (0x0122A4 CSA_006A), MSGBOX CLEARED, END ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_26C92: +CS_00F4_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00D2 ; Bit 2 of flag 0x01A @@ -3768,12 +3749,12 @@ CS_00F7: ; 0xE3A1: PRINT MSG 0x03EE, MSGBOX CLEARED, END: "{5B}The goods you purchased{57}will be sent directly to your{57}shop with the bill. Thanks!{5E}" ; dc.w $001A ; Params 00, 1A - ScriptJump loc_26CCA,$3 ; Jump to address 0x026CCA + ScriptJump CS_00F7_1,$3 ; Jump to address 0x026CCA ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26CCA: +CS_00F7_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00D9 ; Bit 1 of flag 0x01B @@ -3804,14 +3785,14 @@ CS_00F9: ; 0xE3A3: PRINT MSG 0x03F0, MSGBOX CLEARED, END: "{5B}Welcome to{57}the castle of Mercator!{5E}" ; dc.w $0014 ; Params 00, 14 - ScriptJump loc_26CFA,$3 ; Jump to address 0x026CFA + ScriptJump CS_00F9_1,$3 ; Jump to address 0x026CFA ; dc.w $0017 ; Params 00, 17 ScriptID $405,$5 ; Run text script at offset 0x028000 ; 0xE3A7: PRINT MSG 0x03F4, MSGBOX CLEARED, END: "{5B}Nigel! Welcome back!{57}Thank heavens the goddess{57}accepted my prayer!{5E}" ; dc.w $0018 ; Params 00, 18 - ScriptJump loc_26D06,$7 ; Jump to address 0x026D06 + ScriptJump CS_00F9_2,$7 ; Jump to address 0x026D06 ; dc.w $0019 ; Params 00, 19 ScriptID $409,$9 ; Run text script at offset 0x028008 @@ -3825,7 +3806,7 @@ CS_00F9: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26CFA: +CS_00F9_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00D4 ; Bit 4 of flag 0x01A @@ -3838,7 +3819,7 @@ loc_26CFA: rts ; --------------------------------------------------------------------------- -loc_26D06: +CS_00F9_2: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00E8 ; Bit 0 of flag 0x01D @@ -3969,12 +3950,12 @@ CS_00FE: ; 0xE3CA: PRINT MSG 0x0417, MSGBOX CLEARED, END: "{5B}Training rooms for{57}the soldiers from here.{5E}" ; dc.w $0014 ; Params 00, 14 - ScriptJump loc_26D88,$3 ; Jump to address 0x026D88 + ScriptJump CS_00FE_1,$3 ; Jump to address 0x026D88 ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26D88: +CS_00FE_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00A1 ; Bit 1 of flag 0x014 @@ -4005,7 +3986,7 @@ CS_0100: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0011 ; Params 00, 11 - ScriptJump loc_26DAE,$1 ; Jump to address 0x026DAE + ScriptJump CS_0100_1,$1 ; Jump to address 0x026DAE ; dc.w $0012 ; Params 00, 12 ScriptID $433,$3 ; Run text script at offset 0x02805C @@ -4015,7 +3996,7 @@ CS_0100: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26DAE: +CS_0100_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00CC ; Bit 4 of flag 0x019 @@ -4071,7 +4052,7 @@ CS_0021: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0010 ; Params 00, 10 - ScriptJump loc_26DEA,$1 ; Jump to address 0x026DEA + ScriptJump CS_0021_1,$1 ; Jump to address 0x026DEA ; dc.w $0013 ; Params 00, 13 ScriptID $43F,$3 ; Run text script at offset 0x028074 @@ -4081,7 +4062,7 @@ CS_0021: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26DEA: +CS_0021_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00CA ; Bit 2 of flag 0x019 @@ -4294,7 +4275,7 @@ CS_010E: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0011 ; Params 00, 11 - ScriptJump loc_26EC4,$1 ; Jump to address 0x026EC4 + ScriptJump CS_010E_1,$1 ; Jump to address 0x026EC4 ; dc.w $0012 ; Params 00, 12 ScriptID $478,$3 ; Run text script at offset 0x0280E6 @@ -4307,7 +4288,7 @@ CS_010E: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26EC4: +CS_010E_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00CD ; Bit 5 of flag 0x019 @@ -4377,7 +4358,7 @@ CS_0112: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0011 ; Params 00, 11 - ScriptJump loc_26F14,$1 ; Jump to address 0x026F14 + ScriptJump CS_0112_1,$1 ; Jump to address 0x026F14 ; dc.w $0012 ; Params 00, 12 ScriptID $489,$3 ; Run text script at offset 0x028108 @@ -4390,7 +4371,7 @@ CS_0112: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26F14: +CS_0112_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $00CE ; Bit 6 of flag 0x019 @@ -4541,7 +4522,7 @@ CS_011E: ScriptID $4CD,$2 ; Flag set: Run text script at offset 0x028190 ; 0xE461: PRINT MSG 0x04AE, MSGBOX CLEARED, END: "{5B}ahead and save the princess.{57}The duke has taken Miss Lara{57}prisoner...please find her!{5E}" ; --------------------------------------------------------------------------- - rts + ScriptID $22FF,$3 ; --------------------------------------------------------------------------- CS_011F: @@ -4592,7 +4573,7 @@ CS_0120: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_26FC0,$1 ; Jump to address 0x026FC0 + ScriptJump CS_0120_1,$1 ; Jump to address 0x026FC0 ; dc.w $001B ; Params 00, 1B ScriptID $4FA,$3 ; Run text script at offset 0x0281EA @@ -4601,7 +4582,7 @@ CS_0120: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26FC0: +CS_0120_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0135 ; Bit 5 of flag 0x026 @@ -4620,7 +4601,7 @@ CS_0121: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_26FDA,$1 ; Jump to address 0x026FDA + ScriptJump CS_0121_1,$1 ; Jump to address 0x026FDA ; dc.w $001B ; Params 00, 1B ScriptID $4FE,$3 ; Run text script at offset 0x0281F2 @@ -4629,7 +4610,7 @@ CS_0121: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26FDA: +CS_0121_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0135 ; Bit 5 of flag 0x026 @@ -4646,7 +4627,7 @@ CS_0122: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_26FF4,$1 ; Jump to address 0x026FF4 + ScriptJump CS_0122_1,$1 ; Jump to address 0x026FF4 ; dc.w $001B ; Params 00, 1B ScriptID $501,$3 ; Run text script at offset 0x0281F8 @@ -4655,7 +4636,7 @@ CS_0122: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_26FF4: +CS_0122_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0135 ; Bit 5 of flag 0x026 @@ -4671,7 +4652,7 @@ CS_0123: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_2700E,$1 ; Jump to address 0x02700E + ScriptJump CS_0123_1,$1 ; Jump to address 0x02700E ; dc.w $001B ; Params 00, 1B ScriptID $505,$3 ; Run text script at offset 0x028200 @@ -4682,7 +4663,7 @@ CS_0123: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2700E: +CS_0123_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0136 ; Bit 6 of flag 0x026 @@ -4714,7 +4695,7 @@ CS_0125: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_27036,$1 ; Jump to address 0x027036 + ScriptJump CS_0125_1,$1 ; Jump to address 0x027036 ; dc.w $001B ; Params 00, 1B ScriptID $50D,$3 ; Run text script at offset 0x028210 @@ -4724,7 +4705,7 @@ CS_0125: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_27036: +CS_0125_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0136 ; Bit 6 of flag 0x026 @@ -4740,7 +4721,7 @@ CS_0126: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_27050,$1 ; Jump to address 0x027050 + ScriptJump CS_0126_1,$1 ; Jump to address 0x027050 ; dc.w $001B ; Params 00, 1B ScriptID $513,$3 ; Run text script at offset 0x02821C @@ -4751,7 +4732,7 @@ CS_0126: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_27050: +CS_0126_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0137 ; Bit 7 of flag 0x026 @@ -4769,7 +4750,7 @@ CS_0127: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_2706A,$1 ; Jump to address 0x02706A + ScriptJump CS_0127_1,$1 ; Jump to address 0x02706A ; dc.w $001B ; Params 00, 1B ScriptID $518,$3 ; Run text script at offset 0x028226 @@ -4778,7 +4759,7 @@ CS_0127: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2706A: +CS_0127_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0137 ; Bit 7 of flag 0x026 @@ -4794,7 +4775,7 @@ CS_0128: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $001A ; Params 00, 1A - ScriptJump loc_27084,$1 ; Jump to address 0x027084 + ScriptJump CS_0128_1,$1 ; Jump to address 0x027084 ; dc.w $001B ; Params 00, 1B ScriptID $51C,$3 ; Run text script at offset 0x02822E @@ -4803,18 +4784,18 @@ CS_0128: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_27084: +CS_0128_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0137 ; Bit 7 of flag 0x026 - ScriptJump loc_27090,$1 ; Flag set: Jump to address 0x027090 + ScriptJump CS_0128_2,$1 ; Flag set: Jump to address 0x027090 ScriptID $519,$2 ; Flag clear: Run text script at offset 0x028228 ; 0xE4A5: PRINT MSG 0x04F2, MSGBOX CLEARED, END: "{5B}Don't look at ME...{57}GET 'im!{5E}" ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_27090: +CS_0128_2: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $013D ; Bit 5 of flag 0x027 @@ -5110,37 +5091,33 @@ CS_002D: ; Trap01Handler CS_0139: move.w #$000A,d0 bsr.w TestFlagBit - beq.s loc_27172 - -loc_2716C: ; Trap01Handler - trap #$01 + beq.s CS_0139_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A03,$0 ; Run text script at offset 0x028BFC ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C4: PRINT MSG 0x0811, MSGBOX CLEARED, END: "{5B}See you again!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_2718A + bra.s CS_0139_3 ; --------------------------------------------------------------------------- -loc_27172: ; CODE XREF: ROM:0002716Aj +CS_0139_1: ; CODE XREF: ROM:0002716Aj move.w #$0008,d0 bsr.w TestFlagBit - beq.s loc_27182 - -loc_2717C: ; Trap01Handler - trap #$01 + beq.s CS_0139_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FC,$0 ; Run text script at offset 0x028BEE ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C0: PRINT MSG 0x080D, MSGBOX CLEARED, END: "{5B}Good luck!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_2718A + bra.s CS_0139_3 ; --------------------------------------------------------------------------- -loc_27182: ; CODE XREF: ROM:0002717Aj +CS_0139_2: ; CODE XREF: ROM:0002717Aj move.w #$0132,(g_Character).l -locret_2718A: ; CODE XREF: ROM:00027170j +CS_0139_3: ; CODE XREF: ROM:00027170j ; ROM:00027180j rts ; --------------------------------------------------------------------------- @@ -5148,37 +5125,33 @@ locret_2718A: ; CODE XREF: ROM:00027170j CS_013A: move.w #$000A,d0 bsr.w TestFlagBit - beq.s loc_2719C - -loc_27196: ; Trap01Handler - trap #$01 + beq.s CS_013A_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A03,$0 ; Run text script at offset 0x028BFC ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C4: PRINT MSG 0x0811, MSGBOX CLEARED, END: "{5B}See you again!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_271B4 + bra.s CS_013A_3 ; --------------------------------------------------------------------------- -loc_2719C: ; CODE XREF: ROM:00027194j +CS_013A_1: ; CODE XREF: ROM:00027194j move.w #$0008,d0 bsr.w TestFlagBit - beq.s loc_271AC - -loc_271A6: ; Trap01Handler - trap #$01 + beq.s CS_013A_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FC,$0 ; Run text script at offset 0x028BEE ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C0: PRINT MSG 0x080D, MSGBOX CLEARED, END: "{5B}Good luck!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_271B4 + bra.s CS_013A_3 ; --------------------------------------------------------------------------- -loc_271AC: ; CODE XREF: ROM:000271A4j +CS_013A_2: ; CODE XREF: ROM:000271A4j move.w #$0159,(g_Character).l -locret_271B4: ; CODE XREF: ROM:0002719Aj +CS_013A_3: ; CODE XREF: ROM:0002719Aj ; ROM:000271AAj rts ; --------------------------------------------------------------------------- @@ -5186,37 +5159,33 @@ locret_271B4: ; CODE XREF: ROM:0002719Aj CS_013B: move.w #$000A,d0 bsr.w TestFlagBit - beq.s loc_271C6 - -loc_271C0: ; Trap01Handler - trap #$01 + beq.s CS_013B_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A03,$0 ; Run text script at offset 0x028BFC ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C4: PRINT MSG 0x0811, MSGBOX CLEARED, END: "{5B}See you again!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_271DE + bra.s CS_013B_3 ; --------------------------------------------------------------------------- -loc_271C6: ; CODE XREF: ROM:000271BEj +CS_013B_1: ; CODE XREF: ROM:000271BEj move.w #$0008,d0 bsr.w TestFlagBit - beq.s loc_271D6 - -loc_271D0: ; Trap01Handler - trap #$01 + beq.s CS_013B_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FC,$0 ; Run text script at offset 0x028BEE ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C0: PRINT MSG 0x080D, MSGBOX CLEARED, END: "{5B}Good luck!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_271DE + bra.s CS_013B_3 ; --------------------------------------------------------------------------- -loc_271D6: ; CODE XREF: ROM:000271CEj +CS_013B_2: ; CODE XREF: ROM:000271CEj move.w #$0135,(g_Character).l -locret_271DE: ; CODE XREF: ROM:000271C4j +CS_013B_3: ; CODE XREF: ROM:000271C4j ; ROM:000271D4j rts ; --------------------------------------------------------------------------- @@ -5229,20 +5198,20 @@ CS_013C: ; 0xE7D0: PRINT MSG 0x081D, MSGBOX CLEARED, END: "{5B}I'm sorry.{57}This is a private area.{57}No admittance!{5E}" ; dc.w $001D ; Params 00, 1D - ScriptJump loc_271EE,$3 ; Jump to address 0x0271EE + ScriptJump CS_013C_1,$3 ; Jump to address 0x0271EE ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_271EE: +CS_013C_1: move.w #$014B,d0 bsr.w TestFlagBit - bne.s loc_27202 + bne.s CS_013C_2 move.w #$0137,(g_Character).l - bra.s locret_27206 + bra.s CS_013C_3 ; --------------------------------------------------------------------------- -loc_27202: ; CODE XREF: ROM:000271F6j +CS_013C_2: ; CODE XREF: ROM:000271F6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A19,$0 ; Run text script at offset 0x028C28 @@ -5250,14 +5219,14 @@ loc_27202: ; CODE XREF: ROM:000271F6j ; 0xE7D3: PRINT MSG 0x0820, MSGBOX CLEARED, END: "{5B}Welcome to{57}the Casino Arthurlier!{57}Have fun!{5E}" ; --------------------------------------------------------------------------- -locret_27206: ; CODE XREF: ROM:00027200j +CS_013C_3: ; CODE XREF: ROM:00027200j rts ; --------------------------------------------------------------------------- CS_013D: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- -word_2720C: dc.w $00E5 ; Bit 5 of flag 0x01C + dc.w $00E5 ; Bit 5 of flag 0x01C ScriptID $A67,$1 ; Flag clear: Run text script at offset 0x028CC4 ; 0x1BF3: LOAD SPECIAL CHARACTER Pixie (0x0B) ; 0x87FF: PRINT MSG 0x084C: "{5B}Oh, Friday!{57}To think I have not seen you{57}for 256 years!{62}" @@ -5306,12 +5275,12 @@ CS_002E: ; 0xE452: PRINT MSG 0x049F, MSGBOX CLEARED, END: "{5B}Hey! How did you{57}escape?!! I'm not through{57}with you yet!!{5E}" ; dc.w $001D ; Params 00, 1D - ScriptJump loc_27230,$3 ; Jump to address 0x027230 + ScriptJump CS_002E_1,$3 ; Jump to address 0x027230 ; dc.w $FFFF ; --------------------------------------------------------------------------- -loc_27230: +CS_002E_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00E7 ; Bit 7 of flag 0x01C @@ -5378,7 +5347,7 @@ CS_0032: bsr.w HandleProgressDependentDialogue ; --------------------------------------------------------------------------- dc.w $0010 ; Params 00, 10 - ScriptJump loc_2727C,$1 ; Jump to address 0x02727C + ScriptJump CS_0032_1,$1 ; Jump to address 0x02727C ; dc.w $0011 ; Params 00, 11 ScriptID $447,$3 ; Run text script at offset 0x028084 @@ -5396,18 +5365,18 @@ CS_0032: dc.w $FFFF ; --------------------------------------------------------------------------- -loc_2727C: +CS_0032_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00C9 ; Bit 1 of flag 0x019 - ScriptJump loc_27288,$1 ; Flag clear: Jump to address 0x027288 + ScriptJump CS_0032_2,$1 ; Flag clear: Jump to address 0x027288 ScriptID $446,$2 ; Flag set: Run text script at offset 0x028082 ; 0xE3E7: PRINT MSG 0x0434, MSGBOX CLEARED, END: "{5B}This gorgeous castle is{57}well worth exploring.....{5E}" ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_27288: +CS_0032_2: bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $441,$0 ; Prompt: Run text script at offset 0x028078 @@ -5491,7 +5460,7 @@ CS_0039: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00DF ; Bit 7 of flag 0x01B - ScriptID $8A7,$1 ; Flag set: Run text script at offset 0x028944 + ScriptID $8A7,$1 ; Flag clear: Run text script at offset 0x028944 ; 0x86E9: PRINT MSG 0x0736: "{5B}My name is Kado.{57}I was once a famous{57}swordsman.{62}" ; 0x86EA: PRINT MSG 0x0737: "{5B}I used to work at the{57}castle, but retired. I didn't{57}like town life.{62}" ; 0x86EB: PRINT MSG 0x0738: "{5B}Are you a treasure{57}hunter? Then you must need{57}a better sword than that...{62}" @@ -5501,12 +5470,12 @@ CS_0039: ; 0x86EC: PRINT MSG 0x0739: "{5B}It has a special power.{62}" ; 0x86ED: PRINT MSG 0x073A: "{5B}When the sword is fully{57}charged, a magic flame will{57}burn any enemy it touches!{62}" ; 0xE6EE: PRINT MSG 0x073B, MSGBOX CLEARED, END: "{5B}I think you can{57}appreciate the value{57}of the sword.{62}" - ScriptJump loc_272DC,$2 ; Flag clear: Jump to address 0x0272DC + ScriptJump CS_0039_1,$2 ; Flag set: Jump to address 0x0272DC ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- -loc_272DC: +CS_0039_1: bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00E3 ; Bit 3 of flag 0x01C @@ -5526,7 +5495,7 @@ loc_272DC: CS_003A: move.w #ITM_SUNSTONE,d0 bsr.w CheckIfItemIsOwned - beq.s loc_272F8 + beq.s CS_003A_1 trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $4DE,$0 ; Run text script at offset 0x0281B2 @@ -5534,10 +5503,10 @@ CS_003A: ; 0x846E: PRINT MSG 0x04BB: "{5B}You've found the {5F}!{62}" ; 0xE46F: PRINT MSG 0x04BC, MSGBOX CLEARED, END: "{5B}Perhaps you know this{57}forest better than me! Will{57}you take my place?{5E}" ; --------------------------------------------------------------------------- - bra.s locret_2730C + bra.s CS_003A_2 ; --------------------------------------------------------------------------- -loc_272F8: ; CODE XREF: ROM:000272F0j +CS_003A_1: ; CODE XREF: ROM:000272F0j bsr.w SetFlagBitOnTalking ; --------------------------------------------------------------------------- dc.w $00D7 ; Bit 7 of flag 0x01A @@ -5568,7 +5537,7 @@ loc_272F8: ; CODE XREF: ROM:000272F0j ; 0xE46D: PRINT MSG 0x04BA, MSGBOX CLEARED, END: "{5B}The {5F} is in{57}the northeast sector of{57}this forest.{5E}" ; --------------------------------------------------------------------------- -locret_2730C: ; CODE XREF: ROM:000272F6j +CS_003A_2: ; CODE XREF: ROM:000272F6j rts ; --------------------------------------------------------------------------- @@ -5633,7 +5602,7 @@ CS_0142: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $014D ; Bit 5 of flag 0x029 - ScriptJump loc_2734C,$1 ; Flag set: Jump to address 0x02734C + ScriptJump CS_0142_1,$1 ; Flag set: Jump to address 0x02734C ScriptID $A2A,$2 ; Flag clear: Run text script at offset 0x028C4A ; 0x14E0: SET BIT 0 OF FLAG 0x01C ; 0x1BED: LOAD SPECIAL CHARACTER * (0x05) @@ -5644,7 +5613,7 @@ CS_0142: rts ; --------------------------------------------------------------------------- -loc_2734C: +CS_0142_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $015B ; Bit 3 of flag 0x02B diff --git a/code/script/cutscenes/script_cutscenes.asm b/code/script/cutscenes/script_cutscenes.asm index 2bdbdc0..c878f33 100644 --- a/code/script/cutscenes/script_cutscenes.asm +++ b/code/script/cutscenes/script_cutscenes.asm @@ -3,7 +3,7 @@ XS_001B: move.w #$0021,d0 bsr.w TestFlagBit - bne.s loc_2736E + bne.s XS_001B_1 bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $5A9,$0 ; Prompt: Run text script at offset 0x028348 @@ -14,10 +14,10 @@ XS_001B: ScriptID $5AC,$2 ; Answer 'no': Run text script at offset 0x02834E ; 0xE515: PRINT MSG 0x0562, MSGBOX CLEARED, END: "{5B}Why not?{57}It could be fun!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_27378 + bra.s XS_001B_2 ; --------------------------------------------------------------------------- -loc_2736E: ; CODE XREF: ROM:00027360j +XS_001B_1: ; CODE XREF: ROM:00027360j bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $5AD,$0 ; Prompt: Run text script at offset 0x028350 @@ -29,7 +29,7 @@ loc_2736E: ; CODE XREF: ROM:00027360j ; 0xE518: PRINT MSG 0x0565, MSGBOX CLEARED, END: "{5B}Right.{57}We don't have to go.{5E}" ; --------------------------------------------------------------------------- -locret_27378: ; CODE XREF: ROM:0002736Cj +XS_001B_2: ; CODE XREF: ROM:0002736Cj rts ; --------------------------------------------------------------------------- @@ -78,31 +78,25 @@ XS_002E: ; Trap01Handler XS_0036: move.w #$0023,d0 bsr.w TestFlagBit - bne.s loc_273AE - -loc_273A4: ; Trap01Handler - trap #$01 + bne.s XS_0036_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $253,$0 ; Run text script at offset 0x027C9C ; 0x18AA: LOAD CHARACTER SCRIPT * (0x00AA) ; 0xE223: PRINT MSG 0x0270, MSGBOX CLEARED, END: "{5B}If ya ain't got a{57}safe-conduct pass, ya ain't{57}gettin' in these gates!{5E}" ; --------------------------------------------------------------------------- - -loc_273A8: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $257,$0 ; Run text script at offset 0x027CA4 ; 0x18AB: LOAD CHARACTER SCRIPT * (0x00AB) ; 0xE226: PRINT MSG 0x0273, MSGBOX CLEARED, END: "{5B}My legs are sore from{57}standing here all day long.{5E}" ; --------------------------------------------------------------------------- - bra.s locret_273E6 + bra.s XS_0036_6 ; --------------------------------------------------------------------------- -loc_273AE: ; CODE XREF: ROM:000273A2j +XS_0036_1: ; CODE XREF: ROM:000273A2j move.l d0,-(sp) - -loc_273B0: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $61E,$0 ; Run text script at offset 0x028432 ; 0x18AA: LOAD CHARACTER SCRIPT * (0x00AA) @@ -114,23 +108,21 @@ loc_273B0: ; Trap01Handler ; 0xA557: PRINT MSG 0x05A4, END: "{5B}Heh heh...I'll letcha in{57}for {5A} golds. Whaddaya say?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_273E0 + bcc.s XS_0036_4 move.l (g_PrintNumericDwordValue).l,d0 jsr (j_RemoveGold).l - bcc.s loc_273DA + bcc.s XS_0036_2 jsr (j_GetGold).l jsr (j_RemoveGold).l - -loc_273D4: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $628,$0 ; Run text script at offset 0x028446 ; 0xE55B: PRINT MSG 0x05A8, MSGBOX CLEARED, END: "{5B}...Is that all?{57}OK, go ahead!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_273DE + bra.s XS_0036_3 ; --------------------------------------------------------------------------- -loc_273DA: ; CODE XREF: ROM:000273C6j +XS_0036_2: ; CODE XREF: ROM:000273C6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $625,$0 ; Run text script at offset 0x028440 @@ -139,29 +131,27 @@ loc_273DA: ; CODE XREF: ROM:000273C6j ; 0xE55A: PRINT MSG 0x05A7, MSGBOX CLEARED, END: "{5B}It all depends on your luck!{5E}" ; --------------------------------------------------------------------------- -loc_273DE: ; CODE XREF: ROM:000273D8j - bra.s loc_273E4 +XS_0036_3: ; CODE XREF: ROM:000273D8j + bra.s XS_0036_5 ; --------------------------------------------------------------------------- -loc_273E0: ; CODE XREF: ROM:000273B8j +XS_0036_4: ; CODE XREF: ROM:000273B8j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $629,$0 ; Run text script at offset 0x028448 ; 0xE55C: PRINT MSG 0x05A9, MSGBOX CLEARED, END: "{5B}What a miser!{57}OK, go ahead!{5E}" ; --------------------------------------------------------------------------- -loc_273E4: ; CODE XREF: ROM:loc_273DEj +XS_0036_5: ; CODE XREF: ROM:XS_0036_3j move.l (sp)+,d0 -locret_273E6: ; CODE XREF: ROM:000273ACj +XS_0036_6: ; CODE XREF: ROM:000273ACj rts ; --------------------------------------------------------------------------- XS_0037: move.l d0,-(sp) - -loc_273EA: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $62A,$0 ; Run text script at offset 0x02844A ; 0x1BF6: LOAD SPECIAL CHARACTER Fahl (0x0E) @@ -169,77 +159,71 @@ loc_273EA: ; Trap01Handler ; 0xA55E: PRINT MSG 0x05AB, END: "{5B}Will you challenge me?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_27436 - -loc_273F4: ; Trap01Handler - trap #$01 + bcc.s XS_0037_5 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $62D,$0 ; Run text script at offset 0x028450 ; 0x1014: LOAD 20 INTO NUMERIC VARIABLE ; 0xA55F: PRINT MSG 0x05AC, END: "{5B}Now, pay me{57}{5A} golds, OK?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_27436 + bcc.s XS_0037_5 move.l (g_PrintNumericDwordValue).l,d0 jsr (j_RemoveGold).l - bcc.s loc_27418 - -loc_2740C: ; Trap01Handler - trap #$01 + bcc.s XS_0037_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $62F,$0 ; Run text script at offset 0x028454 ; 0xE560: PRINT MSG 0x05AD, MSGBOX CLEARED, END: "{5B}I'm sorry, but it's{57}my job. I can't do it if you{57}don't have enough money.{5E}" ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l - bra.s loc_27432 + bra.s XS_0037_4 ; --------------------------------------------------------------------------- -loc_27418: ; CODE XREF: ROM:0002740Aj +XS_0037_1: ; CODE XREF: ROM:0002740Aj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $631,$0 ; Run text script at offset 0x028458 ; 0xA562: PRINT MSG 0x05AF, END: "{5B}Do you want to hear{57}the rules?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_27428 - -loc_27422: ; Trap01Handler - trap #$01 + bcc.s XS_0037_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- -word_27424: ScriptID $632,$0 ; Run text script at offset 0x02845A + ScriptID $632,$0 ; Run text script at offset 0x02845A ; 0x8563: PRINT MSG 0x05B0: "{5B}I'll change into various{57}monsters who will attack you{57}one after the other.{62}" ; 0x8564: PRINT MSG 0x05B1: "{5B}I'll evaluate your{57}skill by the number of{57}monsters you defeat{62}" ; 0x8565: PRINT MSG 0x05B2: "{5B}without getting hit.{57}Once you get hit, it's over.{62}" ; 0x8566: PRINT MSG 0x05B3: "{5B}Your reward will be based on{57}the number of monsters you kill.{57}Got it?{62}" ; 0xE567: PRINT MSG 0x05B4, MSGBOX CLEARED, END: "{5B}Now, ready...{59}set...{59}GO!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_2742C + bra.s XS_0037_3 ; --------------------------------------------------------------------------- -loc_27428: ; CODE XREF: ROM:00027420j +XS_0037_2: ; CODE XREF: ROM:00027420j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $637,$0 ; Run text script at offset 0x028464 ; 0xE568: PRINT MSG 0x05B5, MSGBOX CLEARED, END: "{5B}Now, ready...{59}set..{59}GO!{5E}" ; --------------------------------------------------------------------------- -loc_2742C: ; CODE XREF: ROM:00027426j +XS_0037_3: ; CODE XREF: ROM:00027426j st (g_YesNoPromptResult).l -loc_27432: ; CODE XREF: ROM:00027416j +XS_0037_4: ; CODE XREF: ROM:00027416j ; ROM:0002743Aj move.l (sp)+,d0 rts ; --------------------------------------------------------------------------- -loc_27436: ; CODE XREF: ROM:000273F2j +XS_0037_5: ; CODE XREF: ROM:000273F2j ; ROM:000273FCj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $630,$0 ; Run text script at offset 0x028456 ; 0xE561: PRINT MSG 0x05AE, MSGBOX CLEARED, END: "{5B}Take care of yourself!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_27432 + bra.s XS_0037_4 ; --------------------------------------------------------------------------- XS_0038: @@ -251,7 +235,7 @@ XS_0038: ; 0x1019: LOAD 25 INTO NUMERIC VARIABLE ; 0x856A: PRINT MSG 0x05B7: "{5B}I'll give you {5A} golds{57}if you stop now.{62}" ; 0xA56B: PRINT MSG 0x05B8, END: "{5B}Will you go on?{57}{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $63D,$2 ; Answer 'no': Run text script at offset 0x028470 ; 0x856C: PRINT MSG 0x05B9: "{5B}{5A} golds. Take them!{62}" ; 0x17E9: RECEIVE [NUMERIC_VAR] GOLDS @@ -270,7 +254,7 @@ XS_0039: ; 0x1032: LOAD 50 INTO NUMERIC VARIABLE ; 0x856F: PRINT MSG 0x05BC: "{5B}I'll give you {5A} golds{57}if you stop now.{62}" ; 0xA570: PRINT MSG 0x05BD, END: "{5B}Want to continue?{57}{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $63D,$2 ; Answer 'no': Run text script at offset 0x028470 ; 0x856C: PRINT MSG 0x05B9: "{5B}{5A} golds. Take them!{62}" ; 0x17E9: RECEIVE [NUMERIC_VAR] GOLDS @@ -288,7 +272,7 @@ XS_003A: ; 0x8571: PRINT MSG 0x05BE: "{5B}Excellent!!{57}You don't need anymore{57}training!{62}" ; 0x1064: LOAD 100 INTO NUMERIC VARIABLE ; 0xA572: PRINT MSG 0x05BF, END: "{5B}Take {5A} golds!{57}Still want to continue?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $63D,$2 ; Answer 'no': Run text script at offset 0x028470 ; 0x856C: PRINT MSG 0x05B9: "{5B}{5A} golds. Take them!{62}" ; 0x17E9: RECEIVE [NUMERIC_VAR] GOLDS @@ -306,7 +290,7 @@ XS_003B: ; 0x8573: PRINT MSG 0x05C0: "{5B}I give up! You're the{57}strongest man I've ever met!{62}" ; 0x10C8: LOAD 200 INTO NUMERIC VARIABLE ; 0xA574: PRINT MSG 0x05C1, END: "{5B}Please...take the{57}{5A} golds. Want to go on?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $63D,$2 ; Answer 'no': Run text script at offset 0x028470 ; 0x856C: PRINT MSG 0x05B9: "{5B}{5A} golds. Take them!{62}" ; 0x17E9: RECEIVE [NUMERIC_VAR] GOLDS @@ -324,7 +308,7 @@ XS_003C: ; 0x8575: PRINT MSG 0x05C2: "{5B}P....{59}please...{59}{57}I'm almost...{57}worn out...{62}" ; 0x1190: LOAD 400 INTO NUMERIC VARIABLE ; 0xA576: PRINT MSG 0x05C3, END: "{5B}Take the {5A} golds...{57}...You STILL want to go on?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $63D,$2 ; Answer 'no': Run text script at offset 0x028470 ; 0x856C: PRINT MSG 0x05B9: "{5B}{5A} golds. Take them!{62}" ; 0x17E9: RECEIVE [NUMERIC_VAR] GOLDS @@ -337,40 +321,36 @@ XS_003C: XS_003F: ; Trap01Handler trap #$01 ; --------------------------------------------------------------------------- -word_2747A: ScriptID $65E,$0 ; Run text script at offset 0x0284B2 + ScriptID $65E,$0 ; Run text script at offset 0x0284B2 ; 0x181B: LOAD CHARACTER SCRIPT Owner (0x001B) ; 0x857C: PRINT MSG 0x05C9: "{5B}Welcome to Greenpea's!{57}Step right up! Have some{57}fun! Make some money!{62}" ; 0x1032: LOAD 50 INTO NUMERIC VARIABLE ; 0xA57D: PRINT MSG 0x05CA, END: "{5B}{5A} golds for one play.{57}Okay?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcs.s loc_27488 - -loc_27482: ; Trap01Handler - trap #$01 + bcs.s XS_003F_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $665,$0 ; Run text script at offset 0x0284C0 ; 0xE580: PRINT MSG 0x05CD, MSGBOX CLEARED, END: "{5B}Are you nuts?{57}Don't you like gambling?{5E}" ; --------------------------------------------------------------------------- - bra.s locret_274BC + bra.s XS_003F_5 ; --------------------------------------------------------------------------- -loc_27488: ; CODE XREF: ROM:00027480j +XS_003F_1: ; CODE XREF: ROM:00027480j move.l (g_PrintNumericDwordValue).l,d0 jsr (j_RemoveGold).l - bcc.s loc_274A2 - -loc_27496: ; Trap01Handler - trap #$01 + bcc.s XS_003F_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $664,$0 ; Run text script at offset 0x0284BE ; 0xE57F: PRINT MSG 0x05CC, MSGBOX CLEARED, END: "{5B}Oops!{57}Come again when{57}you have more money!{5E}" ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l - bra.s locret_274BC + bra.s XS_003F_5 ; --------------------------------------------------------------------------- -loc_274A2: ; CODE XREF: ROM:00027494j +XS_003F_2: ; CODE XREF: ROM:00027494j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $662,$0 ; Run text script at offset 0x0284BA @@ -378,10 +358,8 @@ loc_274A2: ; CODE XREF: ROM:00027494j ; 0xA57E: PRINT MSG 0x05CB, END: "{5B}Thanks! Do you need to{57}know how to play?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_274B2 - -loc_274AC: ; Trap01Handler - trap #$01 + bcc.s XS_003F_3 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $666,$0 ; Run text script at offset 0x0284C2 ; 0x8581: PRINT MSG 0x05CE: "{5B}Throw the ball over{57}the counter so it lands on{57}the moving plates.{62}" @@ -389,20 +367,20 @@ loc_274AC: ; Trap01Handler ; 0x8583: PRINT MSG 0x05D0: "{5B}If the ball slides off,{57}you lose! You have only{57}one throw.{62}" ; 0xE584: PRINT MSG 0x05D1, MSGBOX CLEARED, END: "{5B}Are you ready?{57}Okay! Then, let's go!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_274B6 + bra.s XS_003F_4 ; --------------------------------------------------------------------------- -loc_274B2: ; CODE XREF: ROM:000274AAj +XS_003F_3: ; CODE XREF: ROM:000274AAj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $66A,$0 ; Run text script at offset 0x0284CA ; 0xE585: PRINT MSG 0x05D2, MSGBOX CLEARED, END: "{5B}Now, let's try!{5E}" ; --------------------------------------------------------------------------- -loc_274B6: ; CODE XREF: ROM:000274B0j +XS_003F_4: ; CODE XREF: ROM:000274B0j st (g_YesNoPromptResult).l -locret_274BC: ; CODE XREF: ROM:00027486j +XS_003F_5: ; CODE XREF: ROM:00027486j ; ROM:000274A0j rts ; --------------------------------------------------------------------------- @@ -416,20 +394,18 @@ XS_0042: ; Trap01Handler ; 0xA58B: PRINT MSG 0x05D8, END: "{5B}would you do me a favor?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_274CE - -loc_274C8: ; Trap01Handler - trap #$01 + bcc.s XS_0042_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $675,$0 ; Run text script at offset 0x0284E0 ; 0x18D0: LOAD CHARACTER SCRIPT * (0x00D0) ; 0x858C: PRINT MSG 0x05D9: "{5B}The room upstairs is{57}a mess. Would you put the{57}jars on the shelves neatly?{62}" ; 0xE58D: PRINT MSG 0x05DA, MSGBOX CLEARED, END: "{5B}Collecting jars is{57}my husband's hobby....{5E}" ; --------------------------------------------------------------------------- - bra.s locret_274D2 + bra.s XS_0042_2 ; --------------------------------------------------------------------------- -loc_274CE: ; CODE XREF: ROM:000274C6j +XS_0042_1: ; CODE XREF: ROM:000274C6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $678,$0 ; Run text script at offset 0x0284E6 @@ -437,7 +413,7 @@ loc_274CE: ; CODE XREF: ROM:000274C6j ; 0xE58E: PRINT MSG 0x05DB, MSGBOX CLEARED, END: "{5B}Fine!{57}I'll do it myself.{5E}" ; --------------------------------------------------------------------------- -locret_274D2: ; CODE XREF: ROM:000274CCj +XS_0042_2: ; CODE XREF: ROM:000274CCj rts ; --------------------------------------------------------------------------- @@ -489,20 +465,18 @@ XS_0046: ; Trap01Handler XS_0048: ; Any status effect moveq #$0000000F,d0 bsr.w TestPlayerStatus - beq.s loc_27506 - -loc_274FA: ; Trap01Handler - trap #$01 + beq.s XS_0048_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $69F,$0 ; Run text script at offset 0x028534 ; 0x1813: LOAD CHARACTER SCRIPT Teller (0x0013) ; 0xE5A1: PRINT MSG 0x05EE, MSGBOX CLEARED, END: "{5B}I can't cast a spell on{57}you now. Go to the church{57}and get cured first.{5E}" ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l - bra.s locret_27510 + bra.s XS_0048_2 ; --------------------------------------------------------------------------- -loc_27506: ; CODE XREF: ROM:000274F8j +XS_0048_1: ; CODE XREF: ROM:000274F8j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $698,$0 ; Run text script at offset 0x028526 @@ -513,7 +487,7 @@ loc_27506: ; CODE XREF: ROM:000274F8j ; --------------------------------------------------------------------------- st (g_YesNoPromptResult).l -locret_27510: ; CODE XREF: ROM:00027504j +XS_0048_2: ; CODE XREF: ROM:00027504j rts ; --------------------------------------------------------------------------- @@ -539,7 +513,7 @@ XS_005E: ; 0x182E: LOAD CHARACTER SCRIPT Kayla (0x002E) ; 0x85DA: PRINT MSG 0x0627: "{5B}Hahahahaha!{57}Nice to meet you again!{57}Hahahahahahaha!{62}" ; 0xA5DB: PRINT MSG 0x0628, END: "{5B}I've been waiting for{57}you! Now, come here!{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $6FE,$2 ; Answer 'no': Run text script at offset 0x0285F2 ; 0x182E: LOAD CHARACTER SCRIPT Kayla (0x002E) ; 0x85E0: PRINT MSG 0x062D: "{5B}You refused me!{57}I've never been{57}refused before!{62}" @@ -566,9 +540,7 @@ XS_0064: ; CODE XREF: ROM:00027532j ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer bcs.s XS_0064 - -loc_27534: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $711,$0 ; Run text script at offset 0x028618 ; 0x1BF1: LOAD SPECIAL CHARACTER Duke (0x09) @@ -589,7 +561,7 @@ XS_0069: ScriptID $72B,$0 ; Prompt: Run text script at offset 0x02864C ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) ; 0xA602: PRINT MSG 0x064F, END: "{5B}Nigel, are you going{57}to bed for the night?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $72D,$2 ; Answer 'no': Run text script at offset 0x028650 ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) ; 0xE603: PRINT MSG 0x0650, MSGBOX CLEARED, END: "{5B}Let's go{57}explore the castle, then.{5E}" @@ -606,13 +578,11 @@ XS_0073: ; Trap01Handler ; 0xA615: PRINT MSG 0x0662, END: "{5B}Would you invest{57}{5A} golds in me?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_2756A + bcc.s XS_0073_1 move.l (g_PrintNumericDwordValue).l,d0 jsr (j_RemoveGold).l - bcs.s loc_2756A - -loc_2755E: ; Trap01Handler - trap #$01 + bcs.s XS_0073_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $750,$0 ; Run text script at offset 0x028696 ; 0x14D2: SET BIT 2 OF FLAG 0x01A @@ -620,11 +590,11 @@ loc_2755E: ; Trap01Handler ; --------------------------------------------------------------------------- st (g_YesNoPromptResult).l -locret_27568: ; CODE XREF: ROM:00027574j +XS_0073_2: ; CODE XREF: ROM:00027574j rts ; --------------------------------------------------------------------------- -loc_2756A: ; CODE XREF: ROM:0002754Ej +XS_0073_1: ; CODE XREF: ROM:0002754Ej ; ROM:0002755Cj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- @@ -632,7 +602,7 @@ loc_2756A: ; CODE XREF: ROM:0002754Ej ; 0xE616: PRINT MSG 0x0663, MSGBOX CLEARED, END: "{5B}Aren't you interested{57}in the money game?{5E}" ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l - bra.s locret_27568 + bra.s XS_0073_2 ; --------------------------------------------------------------------------- XS_0075: @@ -646,9 +616,7 @@ XS_0075: ; 0x18F1: LOAD CHARACTER SCRIPT * (0x00F1) ; 0xA61A: PRINT MSG 0x0667, END: "{5B}Hey, a buyer!{57}You want variety goods?{57}Sure, we've got lots!{62}" ; --------------------------------------------------------------------------- - -loc_27580: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $759,$0 ; Run text script at offset 0x0286A8 ; 0xE61B: PRINT MSG 0x0668, MSGBOX CLEARED, END: "{5B}We've got all kinds{57}of items, and of good{57}quality, too!{5E}" @@ -694,9 +662,7 @@ XS_0077: XS_0079: move.w #ITM_ARMLET,d0 bsr.w CheckIfItemIsOwned - beq.s loc_275B4 - -loc_275A8: + beq.s XS_0079_1 bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $76A,$0 ; Prompt: Run text script at offset 0x0286CA @@ -708,10 +674,10 @@ loc_275A8: ScriptID $76D,$2 ; Answer 'no': Run text script at offset 0x0286D0 ; 0xE62A: PRINT MSG 0x0677, MSGBOX CLEARED, END: "{5B}Do as you like.{5E}" ; --------------------------------------------------------------------------- - bra.s locret_275BE + bra.s XS_0079_2 ; --------------------------------------------------------------------------- -loc_275B4: ; CODE XREF: ROM:000275A6j +XS_0079_1: ; CODE XREF: ROM:000275A6j bsr.w HandleYesNoPrompt ; --------------------------------------------------------------------------- ScriptID $770,$0 ; Prompt: Run text script at offset 0x0286D6 @@ -724,32 +690,30 @@ loc_275B4: ; CODE XREF: ROM:000275A6j ; 0xE62F: PRINT MSG 0x067C, MSGBOX CLEARED, END: "{5B}Do as you like.{5E}" ; --------------------------------------------------------------------------- -locret_275BE: ; CODE XREF: ROM:000275B2j +XS_0079_2: ; CODE XREF: ROM:000275B2j rts ; --------------------------------------------------------------------------- XS_007A: move.w #ITM_ARMLET,d0 bsr.w CheckIfItemIsOwned - beq.s loc_275D0 - -loc_275CA: ; Trap01Handler - trap #$01 + beq.s XS_007A_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $76F,$0 ; Run text script at offset 0x0286D4 ; 0xE62C: PRINT MSG 0x0679, MSGBOX CLEARED, END: "{5B}I can see there's{57}something about you...{57}I don't know what it is...{5E}" ; --------------------------------------------------------------------------- - bra.s locret_275D4 + bra.s XS_007A_2 ; --------------------------------------------------------------------------- -loc_275D0: ; CODE XREF: ROM:000275C8j +XS_007A_1: ; CODE XREF: ROM:000275C8j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $775,$0 ; Run text script at offset 0x0286E0 ; 0xE631: PRINT MSG 0x067E, MSGBOX CLEARED, END: "{5B}Heh heh...come back{57}anytime you like...the undead{57}are always waiting...{5E}" ; --------------------------------------------------------------------------- -locret_275D4: ; CODE XREF: ROM:000275CEj +XS_007A_2: ; CODE XREF: ROM:000275CEj rts ; --------------------------------------------------------------------------- @@ -759,7 +723,7 @@ XS_007D: ScriptID $779,$0 ; Prompt: Run text script at offset 0x0286E8 ; 0x1834: LOAD CHARACTER SCRIPT Mir (0x0034) ; 0xA634: PRINT MSG 0x0681, END: "{5B}Are you going in{57}at all costs?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $77B,$2 ; Answer 'no': Run text script at offset 0x0286EC ; 0x1834: LOAD CHARACTER SCRIPT Mir (0x0034) ; 0xE635: PRINT MSG 0x0682, MSGBOX CLEARED, END: "{5B}Go back now.{57}Never step foot in this{57}tower again.{5E}" @@ -773,7 +737,7 @@ XS_007E: ScriptID $77D,$0 ; Prompt: Run text script at offset 0x0286F0 ; 0x1834: LOAD CHARACTER SCRIPT Mir (0x0034) ; 0xA636: PRINT MSG 0x0683, END: "{5B}Anything I can do for you?{58}" - ScriptJump ClearTextbox_0,$1 ; Answer 'yes': Jump to address 0x028FB8 + ScriptJump ClearTextbox,$1 ; Answer 'yes': Jump to address 0x028FB8 ScriptID $77F,$2 ; Answer 'no': Run text script at offset 0x0286F4 ; 0x1834: LOAD CHARACTER SCRIPT Mir (0x0034) ; 0xE637: PRINT MSG 0x0684, MSGBOX CLEARED, END: "{5B}Go back right now!{5E}" @@ -805,7 +769,7 @@ XS_0089: ; Trap01Handler ; 0xA657: PRINT MSG 0x06A4, END: "{5B}I'm going to send you{57}directly to the ground, OK?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bsr.w ClearTextbox_0 + bsr.w ClearTextbox rts ; --------------------------------------------------------------------------- @@ -835,58 +799,50 @@ XS_00A5: ; Trap01Handler ; 0xA6A7: PRINT MSG 0x06F4, END: "{5B}Give me an {5F}!{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcs.s loc_27630 - -loc_2761C: ; Trap01Handler - trap #$01 + bcs.s XS_00A5_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $834,$0 ; Run text script at offset 0x02885E ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) ; 0xA6AD: PRINT MSG 0x06FA, END: "{5B}But...he's nearly{57}dead! Please!{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcs.s loc_27630 - bsr.s sub_2763A - beq.s locret_27638 - -loc_2762A: ; Trap01Handler - trap #$01 + bcs.s XS_00A5_1 + bsr.s XS_00A5_2 + beq.s XS_00A5_3 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $836,$0 ; Run text script at offset 0x028862 ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) ; 0xE6AE: PRINT MSG 0x06FB, MSGBOX CLEARED, END: "{5B}I hate you!!{5E}" ; --------------------------------------------------------------------------- - bra.s locret_27638 + bra.s XS_00A5_3 ; --------------------------------------------------------------------------- -loc_27630: ; CODE XREF: ROM:0002761Aj +XS_00A5_1: ; CODE XREF: ROM:0002761Aj ; ROM:00027624j - bsr.s sub_2763A - beq.s locret_27638 - -loc_27634: ; Trap01Handler - trap #$01 + bsr.s XS_00A5_2 + beq.s XS_00A5_3 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $82B,$0 ; Run text script at offset 0x02884C ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) ; 0xE6A8: PRINT MSG 0x06F5, MSGBOX CLEARED, END: "{5B}Thanks!{57}It's all right, poor dog!{5E}" ; --------------------------------------------------------------------------- -locret_27638: ; CODE XREF: ROM:00027628j +XS_00A5_3: ; CODE XREF: ROM:00027628j ; ROM:0002762Ej ... rts ; =============== S U B R O U T I N E ======================================= -sub_2763A: ; CODE XREF: ROM:00027626p - ; ROM:loc_27630p +XS_00A5_2: ; CODE XREF: ROM:00027626p + ; ROM:XS_00A5_1p move.w (word_FF1198).l,d0 bsr.w CheckIfItemIsOwned - bne.s locret_27650 - -loc_27646: ; Trap01Handler - trap #$01 + bne.s XS_00A5_4 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $838,$0 ; Run text script at offset 0x028866 ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) @@ -895,9 +851,9 @@ loc_27646: ; Trap01Handler ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l -locret_27650: ; CODE XREF: sub_2763A+Aj +XS_00A5_4: ; CODE XREF: XS_00A5_2+Aj rts -; End of function sub_2763A +; End of function XS_00A5_2 ; =============== S U B R O U T I N E ======================================= @@ -905,20 +861,18 @@ locret_27650: ; CODE XREF: sub_2763A+Aj XS_00AC: movem.l d0/d6-a0,-(sp) - lea word_27672(pc),a0 + lea XS_00AC_Options(pc),a0 moveq #$00000004,d6 jsr (j_GenerateRandomNumber).l add.w d7,d7 move.w (a0,d7.w),d0 bsr.w RunTextCmd movem.l (sp)+,d0/d6-a0 - -locret_27670: rts ; End of function XS_00AC ; --------------------------------------------------------------------------- -word_27672: ScriptID $852,$0 ; DATA XREF: XS_00AC+4t +XS_00AC_Options:ScriptID $852,$0 ; DATA XREF: XS_00AC+4t ; Mayor (0x00) : Run text script at offset 0x02889A ; 0x1BED: LOAD SPECIAL CHARACTER * (0x05) ; 0xE6BB: PRINT MSG 0x0708, MSGBOX CLEARED, END: "{5B}Oh!!{57}Don't frighten me like that!{5E}" @@ -935,18 +889,16 @@ word_27672: ScriptID $852,$0 ; DATA XREF: XS_00AC+4t XS_00AD: movem.l d0/d6-a0,-(sp) - lea word_2769A(pc),a0 + lea XS_00AD_Options(pc),a0 moveq #$00000004,d6 jsr (j_GenerateRandomNumber).l add.w d7,d7 move.w (a0,d7.w),d0 bsr.w RunTextCmd movem.l (sp)+,d0/d6-a0 - -locret_27698: rts ; --------------------------------------------------------------------------- -word_2769A: ScriptID $85A,$0 ; DATA XREF: ROM:0002767Et +XS_00AD_Options:ScriptID $85A,$0 ; DATA XREF: ROM:0002767Et ; Mayor (0x00) : Run text script at offset 0x0288AA ; 0x1BED: LOAD SPECIAL CHARACTER * (0x05) ; 0xE6BF: PRINT MSG 0x070C, MSGBOX CLEARED, END: "{5B}Woah! That made me dizzy!{5E}" @@ -969,10 +921,8 @@ XS_00B2: ; Trap01Handler ; --------------------------------------------------------------------------- move.w #ITM_RESTORATION,d0 bsr.w GetRemainingItemAllowedCount - beq.s loc_276B6 - -loc_276B0: ; Trap01Handler - trap #$01 + beq.s XS_00B2_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $873,$0 ; Run text script at offset 0x0288DC ; 0x86CF: PRINT MSG 0x071C: "{5B}I'll give you this.{57}I can't see it, but it{57}sure looks good.{62}" @@ -981,17 +931,17 @@ loc_276B0: ; Trap01Handler ; 0x1BED: LOAD SPECIAL CHARACTER * (0x05) ; 0xE6D0: PRINT MSG 0x071D, MSGBOX CLEARED, END: "{5B}I enjoyed talking{57}with you! I can't see you,{57}but you're still my friend.{5E}" ; --------------------------------------------------------------------------- - bra.s locret_276BA + bra.s XS_00B2_2 ; --------------------------------------------------------------------------- -loc_276B6: ; CODE XREF: ROM:000276AEj +XS_00B2_1: ; CODE XREF: ROM:000276AEj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $878,$0 ; Run text script at offset 0x0288E6 ; 0xE6D1: PRINT MSG 0x071E, MSGBOX CLEARED, END: "{5B}Good luck!{57}I can't see you, but{57}good luck!{5E}" ; --------------------------------------------------------------------------- -locret_276BA: ; CODE XREF: ROM:000276B4j +XS_00B2_2: ; CODE XREF: ROM:000276B4j rts ; --------------------------------------------------------------------------- @@ -1007,13 +957,13 @@ XS_00B3: ; Trap01Handler ; --------------------------------------------------------------------------- moveq #ITM_EINSTEINWHISTLE,d0 bsr.w CheckIfItemIsOwned - beq.s loc_276D0 - bsr.w ClearTextbox_0 + beq.s XS_00B3_1 + bsr.w ClearTextbox st d0 - bra.s loc_276D6 + bra.s XS_00B3_2 ; --------------------------------------------------------------------------- -loc_276D0: ; CODE XREF: ROM:000276C6j +XS_00B3_1: ; CODE XREF: ROM:000276C6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $888,$0 ; Run text script at offset 0x028906 @@ -1022,7 +972,7 @@ loc_276D0: ; CODE XREF: ROM:000276C6j ; --------------------------------------------------------------------------- clr.b d0 -loc_276D6: ; CODE XREF: ROM:000276CEj +XS_00B3_2: ; CODE XREF: ROM:000276CEj move.b d0,(g_YesNoPromptResult).l rts ; --------------------------------------------------------------------------- @@ -1048,9 +998,7 @@ XS_00E5: ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_MusicDukeChase ; --------------------------------------------------------------------------- - -loc_276EE: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $94D,$0 ; Run text script at offset 0x028A90 ; 0x1BF1: LOAD SPECIAL CHARACTER Duke (0x09) @@ -1080,9 +1028,7 @@ XS_00E9: ; Trap01Handler ; --------------------------------------------------------------------------- dc.w SND_MusicMap ; --------------------------------------------------------------------------- - -loc_27706: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $95E,$0 ; Run text script at offset 0x028AB2 ; 0x1836: LOAD CHARACTER SCRIPT Lara (0x0036) @@ -1098,9 +1044,7 @@ loc_27706: ; Trap01Handler XS_00EB: bsr.w RestoreBGM_1 - -loc_27714: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $963,$0 ; Run text script at offset 0x028ABC ; 0x1836: LOAD CHARACTER SCRIPT Lara (0x0036) @@ -1123,9 +1067,7 @@ XS_00F0: ; Trap01Handler ; --------------------------------------------------------------------------- dc.w SND_MusicFinalCutscene ; --------------------------------------------------------------------------- - -loc_27722: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $97B,$0 ; Run text script at offset 0x028AEC ; 0x1836: LOAD CHARACTER SCRIPT Lara (0x0036) @@ -1142,9 +1084,7 @@ loc_27722: ; Trap01Handler XS_00F2: bsr.w RestoreBGM_1 - -loc_2772C: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $986,$0 ; Run text script at offset 0x028B02 ; 0x1BE9: LOAD SPECIAL CHARACTER Friday (0x01) @@ -1162,8 +1102,6 @@ XS_00FE: ; Trap01Handler ; 0x1805: LOAD CHARACTER SCRIPT Owner (0x0005) ; 0xA793: PRINT MSG 0x07E0, END: "Nigel got 2000 golds!" ; --------------------------------------------------------------------------- - -loc_27736: bsr.w Sleep_0 ; --------------------------------------------------------------------------- dc.w 00119 @@ -1183,24 +1121,22 @@ XS_0122: ; Trap01Handler ; --------------------------------------------------------------------------- moveq #0000000050,d0 -loc_27744: ; CODE XREF: ROM:00027780j +XS_0122_1: ; CODE XREF: ROM:00027780j ; ROM:00027788j bsr.w GetYesNoAnswer - bcc.s loc_27764 + bcc.s XS_0122_4 jsr (j_RemoveGold).l - bcs.s loc_27758 - -loc_27752: ; Trap01Handler - trap #$01 + bcs.s XS_0122_2 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FC,$0 ; Run text script at offset 0x028BEE ; 0x1939: LOAD CHARACTER SCRIPT * (0x0139) ; 0xE7C0: PRINT MSG 0x080D, MSGBOX CLEARED, END: "{5B}Good luck!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_27762 + bra.s XS_0122_3 ; --------------------------------------------------------------------------- -loc_27758: ; CODE XREF: ROM:00027750j +XS_0122_2: ; CODE XREF: ROM:00027750j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FE,$0 ; Run text script at offset 0x028BF2 @@ -1208,23 +1144,23 @@ loc_27758: ; CODE XREF: ROM:00027750j ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l -loc_27762: ; CODE XREF: ROM:00027756j - bra.s locret_27768 +XS_0122_3: ; CODE XREF: ROM:00027756j + bra.s XS_0122_5 ; --------------------------------------------------------------------------- -loc_27764: ; CODE XREF: ROM:00027748j +XS_0122_4: ; CODE XREF: ROM:00027748j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $9FF,$0 ; Run text script at offset 0x028BF4 ; 0xE7C2: PRINT MSG 0x080F, MSGBOX CLEARED, END: "{5B}Ohhhh...so close!{5E}" ; --------------------------------------------------------------------------- -locret_27768: ; CODE XREF: ROM:loc_27762j +XS_0122_5: ; CODE XREF: ROM:XS_0122_3j rts ; --------------------------------------------------------------------------- XS_0123: - move.l #$000000C8,(g_PrintNumericDwordValue).l + move.l #0000000200,(g_PrintNumericDwordValue).l XS_0127: ; CODE XREF: ROM:00027794j trap #$01 ; Trap01Handler @@ -1251,7 +1187,7 @@ XS_0125: ; Trap01Handler ; 0xA7CA: PRINT MSG 0x0817, END: "{5B}20 golds for one turn.{57}Wanna try?{58}" ; --------------------------------------------------------------------------- moveq #0000000020,d0 - bra.s loc_27744 + bra.s XS_0122_1 ; --------------------------------------------------------------------------- XS_0128: ; Trap01Handler @@ -1265,7 +1201,7 @@ XS_0128: ; Trap01Handler ; 0xA7CF: PRINT MSG 0x081C, END: "{5B}50 golds for one race.{57}Give it a try?{58}" ; --------------------------------------------------------------------------- moveq #0000000050,d0 - bra.s loc_27744 + bra.s XS_0122_1 ; --------------------------------------------------------------------------- XS_0129: @@ -1276,10 +1212,8 @@ XS_0129: XS_012A: moveq #ITM_CASINOTICKET,d0 bsr.w CheckIfItemIsOwned - beq.s loc_277B8 - -loc_2779E: ; Trap01Handler - trap #$01 + beq.s XS_012A_3 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A15,$0 ; Run text script at offset 0x028C20 ; 0x193C: LOAD CHARACTER SCRIPT * (0x013C) @@ -1288,20 +1222,18 @@ loc_2779E: ; Trap01Handler ; 0xA7D2: PRINT MSG 0x081F, END: "{5B}Care to come in?{58}" ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer - bcc.s loc_277B2 + bcc.s XS_012A_1 bsr.w CheckAndConsumeItem - -loc_277AC: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A19,$0 ; Run text script at offset 0x028C28 ; 0x193C: LOAD CHARACTER SCRIPT * (0x013C) ; 0xE7D3: PRINT MSG 0x0820, MSGBOX CLEARED, END: "{5B}Welcome to{57}the Casino Arthurlier!{57}Have fun!{5E}" ; --------------------------------------------------------------------------- - bra.s loc_277B6 + bra.s XS_012A_2 ; --------------------------------------------------------------------------- -loc_277B2: ; CODE XREF: ROM:000277A6j +XS_012A_1: ; CODE XREF: ROM:000277A6j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A1B,$0 ; Run text script at offset 0x028C2C @@ -1309,11 +1241,11 @@ loc_277B2: ; CODE XREF: ROM:000277A6j ; 0xE7D4: PRINT MSG 0x0821, MSGBOX CLEARED, END: "{5B}See you!{5E}" ; --------------------------------------------------------------------------- -loc_277B6: ; CODE XREF: ROM:000277B0j - bra.s locret_277C2 +XS_012A_2: ; CODE XREF: ROM:000277B0j + bra.s XS_012A_4 ; --------------------------------------------------------------------------- -loc_277B8: ; CODE XREF: ROM:0002779Cj +XS_012A_3: ; CODE XREF: ROM:0002779Cj trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A1D,$0 ; Run text script at offset 0x028C30 @@ -1323,7 +1255,7 @@ loc_277B8: ; CODE XREF: ROM:0002779Cj ; --------------------------------------------------------------------------- clr.b (g_YesNoPromptResult).l -locret_277C2: ; CODE XREF: ROM:loc_277B6j +XS_012A_4: ; CODE XREF: ROM:XS_012A_2j rts ; --------------------------------------------------------------------------- @@ -1331,26 +1263,22 @@ XS_012B: clr.b (g_YesNoPromptResult).l move.w #$00E0,d0 bsr.w TestFlagBit - beq.s loc_277F0 + beq.s XS_012B_3 move.w #$00E1,d0 bsr.w TestFlagBit - beq.s loc_277E4 - -loc_277DE: ; Trap01Handler - trap #$01 + beq.s XS_012B_1 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A26,$0 ; Run text script at offset 0x028C42 ; 0x1BED: LOAD SPECIAL CHARACTER * (0x05) ; 0xE7D9: PRINT MSG 0x0826, MSGBOX CLEARED, END: "{5B}I wish we could grow{57}more trees underground...{5E}" ; --------------------------------------------------------------------------- - bra.s loc_277EE + bra.s XS_012B_2 ; --------------------------------------------------------------------------- -loc_277E4: ; CODE XREF: ROM:000277DCj +XS_012B_1: ; CODE XREF: ROM:000277DCj st (g_YesNoPromptResult).l - -loc_277EA: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A23,$0 ; Run text script at offset 0x028C3C ; 0x14E1: SET BIT 1 OF FLAG 0x01C @@ -1358,11 +1286,11 @@ loc_277EA: ; Trap01Handler ; 0xE7D8: PRINT MSG 0x0825, MSGBOX CLEARED, END: "{5B}You met my father, right?{57}In that case, go on up and{57}cut the tree to make a raft!{5E}" ; --------------------------------------------------------------------------- -loc_277EE: ; CODE XREF: ROM:000277E2j - bra.s locret_277F4 +XS_012B_2: ; CODE XREF: ROM:000277E2j + bra.s XS_012B_4 ; --------------------------------------------------------------------------- -loc_277F0: ; CODE XREF: ROM:000277D2j +XS_012B_3: ; CODE XREF: ROM:000277D2j trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $A20,$0 ; Run text script at offset 0x028C36 @@ -1371,6 +1299,6 @@ loc_277F0: ; CODE XREF: ROM:000277D2j ; 0xE7D7: PRINT MSG 0x0824, MSGBOX CLEARED, END: "{5B}I'm standing guard!{5E}" ; --------------------------------------------------------------------------- -locret_277F4: ; CODE XREF: ROM:loc_277EEj +XS_012B_4: ; CODE XREF: ROM:XS_012B_2j rts ; --------------------------------------------------------------------------- diff --git a/code/script/scriptflagcheck.asm b/code/script/scriptflagcheck.asm index 86902f9..1357e0a 100644 --- a/code/script/scriptflagcheck.asm +++ b/code/script/scriptflagcheck.asm @@ -55,5 +55,3 @@ GetFlagProgress: ; CODE XREF: HandleProgressDependentDialogue+4p ; --------------------------------------------------------------------------- movea.l (sp)+,a0 rts - - diff --git a/code/script/shops/script_shops.asm b/code/script/shops/script_shops.asm index c28359a..f426490 100644 --- a/code/script/shops/script_shops.asm +++ b/code/script/shops/script_shops.asm @@ -103,7 +103,7 @@ Shop_05: ShopPrice_06: bsr.w DisplayItemPriceMessage ; --------------------------------------------------------------------------- - ScriptJump loc_25E82,$0 ; Jump to address 0x025E82 + ScriptJump ShopPrice_06_1,$0 ; Jump to address 0x025E82 ; --------------------------------------------------------------------------- Shop_06: @@ -119,7 +119,7 @@ Shop_06: ; 0xE072: PRINT MSG 0x00BF, MSGBOX CLEARED, END: "{5B}I'm so sorry....{5E}" ; --------------------------------------------------------------------------- -loc_25E82: +ShopPrice_06_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0153 ; Bit 3 of flag 0x02A @@ -134,7 +134,7 @@ loc_25E82: ShopPrice_07: bsr.w DisplayItemPriceMessage ; --------------------------------------------------------------------------- - ScriptJump loc_25EC4,$0 ; Jump to address 0x025EC4 + ScriptJump ShopPrice_07_1,$0 ; Jump to address 0x025EC4 ; --------------------------------------------------------------------------- Shop_07: @@ -184,7 +184,7 @@ ShopSteal_07: ; ID 0xC, Script 0x1, Speaker SpriteB_Nigel (0x00) rts ; --------------------------------------------------------------------------- -loc_25EC4: +ShopPrice_07_1: bsr.w CheckFlagAndDisplayMessage ; --------------------------------------------------------------------------- dc.w $0140 ; Bit 0 of flag 0x028 @@ -324,7 +324,7 @@ GameSaveRefusedMsg: rts ; --------------------------------------------------------------------------- -RequestGameContineMsg: +RequestGameContinueMsg: bsr.s HandleChurchInterraction ; --------------------------------------------------------------------------- ScriptID $28,$0 ; Normal priest: Run text script at offset 0x027846 diff --git a/code/script/shops/script_shopspecialitems.asm b/code/script/shops/script_shopspecialitems.asm index 1f4076a..4889899 100644 --- a/code/script/shops/script_shopspecialitems.asm +++ b/code/script/shops/script_shopspecialitems.asm @@ -216,12 +216,12 @@ HandleMap: ; --------------------------------------------------------------------------- bsr.w GetYesNoAnswer bcs.s loc_250CA - bsr.w ClearTextbox_0 + bsr.w ClearTextbox bra.s loc_250FA ; --------------------------------------------------------------------------- loc_250CA: ; CODE XREF: ROM:000250C2j - bsr.w ClearTextbox_0 + bsr.w ClearTextbox trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_MusicMap diff --git a/code/script/shops/shoptable.asm b/code/script/shops/shoptable.asm index b9afcf3..08f7fc0 100644 --- a/code/script/shops/shoptable.asm +++ b/code/script/shops/shoptable.asm @@ -1,4 +1,4 @@ - dc.w $0254 ; DATA XREF: sub_24A98+2At + dc.w $0254 ; DATA XREF: sub_24A98+2At ; sub_24D0C+At ; Massan Shop dc.b $10 ; Items/services normal price diff --git a/code/script/shops/shoptable_specialitems.asm b/code/script/shops/shoptable_specialitems.asm index 6f9ceed..9d24385 100644 --- a/code/script/shops/shoptable_specialitems.asm +++ b/code/script/shops/shoptable_specialitems.asm @@ -1,4 +1,4 @@ - dc.b $25 ; DATA XREF: sub_24B48+8t + dc.b ITM_HOTELREGISTER ; DATA XREF: sub_24B48+8t dc.b $14 dc.w $0260 ; Gumi Inn - register ScriptID $42,$2 ; Run text script at offset 0x02787A @@ -16,7 +16,7 @@ ; 0xE046: PRINT MSG 0x0093, MSGBOX CLEARED, END: "{5B}Sorry, but that's my{57}rock-bottom rate.{5E}" ScriptID $47,$9 ; Run text script at offset 0x027884 ; 0xE047: PRINT MSG 0x0094, MSGBOX CLEARED, END: "{5B}What....?{5E}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $0260 ; Gumi Inn - map ScriptID $48,$2 ; Run text script at offset 0x027886 @@ -26,7 +26,7 @@ ; 0xE041: PRINT MSG 0x008E, MSGBOX CLEARED, END: "{5B}What are you doing!{5E}" ScriptID $49,$5 ; Run text script at offset 0x027888 ; 0xA049: PRINT MSG 0x0096, END: "{5B}I'll show you the{57}{5F}, OK?{58}" - dc.b $25 + dc.b ITM_HOTELREGISTER dc.b $14 dc.w $026F ; Ryuma inn - register ScriptID $5A,$2 ; Run text script at offset 0x0278AA @@ -44,7 +44,7 @@ ; 0xE05E: PRINT MSG 0x00AB, MSGBOX CLEARED, END: "{5B}I'm afraid you don't{57}have enough golds. So sorry.{5E}" ScriptID $5F,$9 ; Run text script at offset 0x0278B4 ; 0xE05F: PRINT MSG 0x00AC, MSGBOX CLEARED, END: "{5B}Well, if you should{57}change your mind....{5E}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $026F ; Ryuma inn - map ScriptID $60,$2 ; Run text script at offset 0x0278B6 @@ -54,7 +54,7 @@ ; 0xE059: PRINT MSG 0x00A6, MSGBOX CLEARED, END: "{5B}Hey!{57}You have to pay for that!!{5E}" ScriptID $61,$5 ; Run text script at offset 0x0278B8 ; 0xA061: PRINT MSG 0x00AE, END: "{5B}You want to see{57}the {5F}?{58}" - dc.b $25 + dc.b ITM_HOTELREGISTER dc.b $14 dc.w $02BD ; Mercator inn - Register ScriptID $77,$2 ; Run text script at offset 0x0278E4 @@ -72,7 +72,7 @@ ; 0xE07B: PRINT MSG 0x00C8, MSGBOX CLEARED, END: "{5B}Oops!...{57}please come again when you{57}have more golds.{5E}" ScriptID $7C,$9 ; Run text script at offset 0x0278EE ; 0xE07C: PRINT MSG 0x00C9, MSGBOX CLEARED, END: "{5B}Don't you need a rest?{57}Please come again soon...{5E}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $02BD ; Mercator inn - map ScriptID $7D,$2 ; Run text script at offset 0x0278F0 @@ -82,14 +82,14 @@ ; 0xE076: PRINT MSG 0x00C3, MSGBOX CLEARED, END: "{5B}No, no!{57}It's not a gift.{5E}" ScriptID $7E,$5 ; Run text script at offset 0x0278F2 ; 0xA07E: PRINT MSG 0x00CB, END: "{5B}Here.{57}Let me show you.{58}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $02CF ; Verla shop - map ScriptJump ShopMap_07,$2 ; Jump to address 0x025F00 ScriptJump HandleMap,$3 ; Jump to address 0x0250B2 ScriptJump ShopSteal_07,$4 ; Jump to address 0x025EB8 ScriptJump ShopConfirmMap_07,$5 ; Jump to address 0x025F0C - dc.b $24 + dc.b ITM_SPELLBOOK dc.b $0A dc.w $02E0 ; Destel church - spellbook ScriptID $33,$2 ; Run text script at offset 0x02785C @@ -97,7 +97,7 @@ ScriptJump HandleSpellbook,$3 ; Jump to address 0x025100 ScriptID $39,$4 ; Run text script at offset 0x027868 ; 0xE039: PRINT MSG 0x0086, MSGBOX CLEARED, END: "{5B}No, no! Don't take it{57}outside! The world is not{57}ready for its magical powers!{5E}" - dc.b $25 + dc.b ITM_HOTELREGISTER dc.b $14 dc.w $02D9 ; Destel inn - register ScriptID $5A,$2 ; Run text script at offset 0x0278AA @@ -115,7 +115,7 @@ ; 0xE05E: PRINT MSG 0x00AB, MSGBOX CLEARED, END: "{5B}I'm afraid you don't{57}have enough golds. So sorry.{5E}" ScriptID $5F,$9 ; Run text script at offset 0x0278B4 ; 0xE05F: PRINT MSG 0x00AC, MSGBOX CLEARED, END: "{5B}Well, if you should{57}change your mind....{5E}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $02D9 ; Destel inn - map ScriptID $60,$2 ; Run text script at offset 0x0278B6 @@ -125,7 +125,7 @@ ; 0xE059: PRINT MSG 0x00A6, MSGBOX CLEARED, END: "{5B}Hey!{57}You have to pay for that!!{5E}" ScriptID $61,$5 ; Run text script at offset 0x0278B8 ; 0xA061: PRINT MSG 0x00AE, END: "{5B}You want to see{57}the {5F}?{58}" - dc.b $25 + dc.b ITM_HOTELREGISTER dc.b $14 dc.w $02E9 ; Kazalt inn - register ScriptID $2B,$2 ; Run text script at offset 0x02784C @@ -143,15 +143,15 @@ ; 0xE02F: PRINT MSG 0x007C, MSGBOX CLEARED, END: "{5B}You don't have{57}enough golds, do you?{5E}" ScriptID $30,$9 ; Run text script at offset 0x027856 ; 0xE030: PRINT MSG 0x007D, MSGBOX CLEARED, END: "{5B}What a pity....{5E}" - dc.b $00 + dc.b ITM_EKEEKE dc.b $06 dc.w $0307 ; Mir's tower - priest room ScriptJump GainItem,$2 ; Jump to address 0x034AD0 - dc.b $12 + dc.b ITM_DETOXGRASS dc.b $06 dc.w $0307 ; Mir's tower - priest room ScriptJump GainItem,$2 ; Jump to address 0x034AD0 - dc.b $21 + dc.b ITM_DETOXBOOK dc.b $18 dc.w $FFFF ; Generic - Detox book ScriptID $F,$2 ; Run text script at offset 0x027814 @@ -176,7 +176,7 @@ ; 0xE018: PRINT MSG 0x0065, MSGBOX CLEARED, END: "{5B}Hmmm{59}.{59}.{59}.{57}No poison...{57}No detoxification needed!{5E}" dc.b $01 ; Jump to address 0x024D40 dc.b $00 - dc.b $22 + dc.b ITM_ANTICURSE dc.b $18 dc.w $FFFF ; Generic - Anticurse ScriptID $19,$2 ; Run text script at offset 0x027828 @@ -200,7 +200,7 @@ ; 0xE01D: PRINT MSG 0x006A, MSGBOX CLEARED, END: "{5B}I really want{57}to help you{59}.{59}.{59}.{57}but you're not cursed.{5E}" dc.b $08 ; Jump to address 0x025458 dc.b $00 - dc.b $11 + dc.b ITM_AWAKENINGBOOK dc.b $18 dc.w $FFFF ; Generic - Awakening book ScriptID $1E,$2 ; Run text script at offset 0x027832 @@ -224,7 +224,7 @@ ; 0xE022: PRINT MSG 0x006F, MSGBOX CLEARED, END: "{5B}W-what...?{57}But you're not{57}hallucinating now!{5E}" dc.b $02 ; Jump to address 0x024E70 dc.b $00 - dc.b $23 + dc.b ITM_RECORDBOOK dc.b $18 dc.w $FFFF ; Generic - Record book ScriptJump HandleIdentifyRecordBook,$2 ; Jump to address 0x025F18 @@ -234,10 +234,10 @@ ScriptJump InitiateGameSaveMsg,$6 ; Jump to address 0x025F28 ScriptJump GameSaveCompleteMsg,$7 ; Jump to address 0x025F30 ScriptJump GameSaveRefusedMsg,$8 ; Jump to address 0x025F38 - ScriptJump RequestGameContineMsg,$9 ; Jump to address 0x025F40 + ScriptJump RequestGameContinueMsg,$9 ; Jump to address 0x025F40 ScriptJump ConfirmGameContinueMsg,$A ; Jump to address 0x025F48 ScriptJump ConfirmGameStopMsg,$B ; Jump to address 0x025F50 - dc.b $25 + dc.b ITM_HOTELREGISTER dc.b $14 dc.w $FFFF ; Generic - Hotel Register ScriptID $2B,$2 ; Run text script at offset 0x02784C @@ -255,7 +255,7 @@ ; 0xE02F: PRINT MSG 0x007C, MSGBOX CLEARED, END: "{5B}You don't have{57}enough golds, do you?{5E}" ScriptID $30,$9 ; Run text script at offset 0x027856 ; 0xE030: PRINT MSG 0x007D, MSGBOX CLEARED, END: "{5B}What a pity....{5E}" - dc.b $26 + dc.b ITM_ISLANDMAP dc.b $0C dc.w $FFFF ; Generic - Island Map ScriptID $31,$2 ; Run text script at offset 0x027858 diff --git a/code/scripthandling/dialogueactions.asm b/code/scripthandling/dialogueactions.asm index f59d827..013c4b9 100644 --- a/code/scripthandling/dialogueactions.asm +++ b/code/scripthandling/dialogueactions.asm @@ -68,7 +68,7 @@ CSA_0007: ; CODE XREF: ROM:00012118j move.w (g_RmNum1).l,d0 jsr (j_CheckForRoomTransition).l move.w d0,(g_RmNum1).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l move.b #$31,(g_FridayAnimation2).l movem.l (sp)+,d0 movem.l (sp)+,a5 @@ -94,7 +94,7 @@ CSA_0009: ; CODE XREF: ROM:00012120j move.b #$00,d0 move.b #$06,d1 bsr.w sub_1587C - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (sub_404).l jsr (j_EnableProcessingOfVRAMCopyQueue).l jsr (j_EnableDMAQueueProcessing).l @@ -102,9 +102,9 @@ CSA_0009: ; CODE XREF: ROM:00012120j bsr.w LoadCutsceneDialogue movem.l (sp)+,a5 movea.l a5,a0 - andi.b #$3F,$00000004(a0) + andi.b #$3F,RotationAndSize(a0) bsr.w loc_10492 - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$0013,d0 ; Cutscene 0x013: 0x025454 bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -117,7 +117,7 @@ CSA_000A: ; CODE XREF: ROM:00012124j move.b d0,d1 addi.b #$06,d1 bsr.w sub_1587C - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (sub_404).l jsr (j_EnableProcessingOfVRAMCopyQueue).l jmp (j_EnableDMAQueueProcessing).l @@ -134,7 +134,7 @@ CSA_000C: ; CODE XREF: ROM:0001212Cj move.b #$0C,d0 move.b #$0D,d1 bsr.w sub_1587C - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (sub_404).l jsr (j_EnableProcessingOfVRAMCopyQueue).l jmp (j_EnableDMAQueueProcessing).l @@ -177,7 +177,7 @@ loc_1281E: ; CODE XREF: ROM:00012852j andi.b #$3F,$00000004(a0) or.b d0,$00000004(a0) bsr.w loc_10492 - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_WaitUntilVBlank).l movem.w (sp)+,d7 dbf d7,loc_1281E @@ -232,7 +232,7 @@ CSA_0016: ; CODE XREF: ROM:00012154j tst.b (g_YesNoPromptResult).l beq.s loc_12906 move.b #$08,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l bset #$00,(g_Flags+1).l rts ; --------------------------------------------------------------------------- @@ -244,7 +244,7 @@ loc_12906: ; CODE XREF: ROM:000128F0j CSA_0017: ; CODE XREF: ROM:00012158j move.b #$10,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l rts ; --------------------------------------------------------------------------- @@ -256,7 +256,7 @@ CSA_0018: ; CODE XREF: ROM:0001215Cj tst.b (g_YesNoPromptResult).l beq.s loc_1294A move.b #$08,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l bset #$00,(g_Flags+1).l rts ; --------------------------------------------------------------------------- @@ -268,17 +268,17 @@ loc_1294A: ; CODE XREF: ROM:00012934j CSA_0019: ; CODE XREF: ROM:00012160j move.b #$08,d0 - jmp (sub_40A).l + jmp (j_DoTileSwap).l ; --------------------------------------------------------------------------- CSA_001A: ; CODE XREF: ROM:00012164j move.b #$10,d0 - jmp (sub_40A).l + jmp (j_DoTileSwap).l ; --------------------------------------------------------------------------- CSA_001B: ; CODE XREF: ROM:00012168j move.b #$08,d0 - jmp (sub_40A).l + jmp (j_DoTileSwap).l ; --------------------------------------------------------------------------- CSA_001C: ; CODE XREF: ROM:0001216Cj @@ -294,7 +294,7 @@ CSA_001D: ; CODE XREF: ROM:00012170j bsr.w LoadCutsceneDialogue bsr.w sub_1584A bset #$07,(g_Flags).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l move.b #$11,(Player_X).l move.b #$10,(Player_Y).l bclr #$06,(Player_Flags2).l @@ -316,7 +316,7 @@ CSA_001E: ; CODE XREF: ROM:00012174j move.w (g_RmNum1).l,d0 jsr (j_CheckForRoomTransition).l move.w d0,(g_RmNum1).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l movem.l (sp)+,d0 movem.l (sp)+,a5 movem.l (sp)+,d0 @@ -398,7 +398,7 @@ CSA_0028: ; CODE XREF: ROM:0001219Cj dc.w SND_DoorLock ; --------------------------------------------------------------------------- move.b #$08,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l bset #$07,(g_Flags+4).l rts ; --------------------------------------------------------------------------- @@ -465,8 +465,8 @@ CSA_002F: ; CODE XREF: ROM:000121B8j loc_12BA0: ; CODE XREF: ROM:00012BE4j movem.w d7,-(sp) - lea ($00FF5400).l,a0 - move.b Player_RotationAndSize-Player_X(a0),d0 + lea (Player_X).l,a0 + move.b RotationAndSize(a0),d0 addi.b #$40,d0 andi.b #$C0,d0 andi.b #$3F,$00000004(a0) @@ -474,7 +474,7 @@ loc_12BA0: ; CODE XREF: ROM:00012BE4j ori.b #$80,$0000000A(a0) movem.l a5,-(sp) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,a5 movem.w (sp)+,d7 @@ -492,7 +492,7 @@ loc_12BFE: ; CODE XREF: ROM:00012B80j ; --------------------------------------------------------------------------- CSA_0030: ; CODE XREF: ROM:000121BCj - clr.b (g_Vars+$1A).l + clr.b (g_AdditionalFlags+$1A).l move.w #$0037,d0 ; Cutscene 0x037: 0x02549C bsr.w LoadCutsceneDialogue tst.b (g_YesNoPromptResult).l @@ -515,15 +515,15 @@ CSA_0031: ; CODE XREF: ROM:000121C0j movem.l a5,-(sp) move.b #$01,(Sprite1_Speed).l lea (Sprite1_X).l,a1 - bset #$07,Sprite1_Flags2-Sprite1_X(a1) - bset #$07,$0000004C(a1) - bclr #$04,$0000000C(a1) + bset #$07,Flags2(a1) + bset #$07,InitFlags2(a1) + bclr #$04,Flags2(a1) clr.w d0 - move.b (g_Vars+$1A).l,d0 + move.b (g_AdditionalFlags+$1A).l,d0 move.b FahlEnemyList(pc,d0.w),d0 - move.b d0,$0000003B(a1) + move.b d0,SpriteType(a1) bsr.w LookupSpriteGfxIndex - move.b $0000000B(a1),d0 + move.b SpriteGraphic(a1),d0 bsr.w GetEnemyStats ; sprite type bsr.s sub_12CAE movem.l (sp)+,a5 @@ -540,7 +540,7 @@ CSA_0031: ; CODE XREF: ROM:000121C0j sub_12CAE: ; CODE XREF: ROM:00012C90p ; ROM:00012D3Ep bsr.w GetSpriteDims - bsr.w LookupSpriteUnknownVal6F + bsr.w LookupSpriteAnimFlags move.b RotationAndSize(a1),d1 bsr.w SetSpriteRotationAnimFlags move.b SpriteType(a1),d0 @@ -552,8 +552,8 @@ sub_12CAE: ; CODE XREF: ROM:00012C90p ; --------------------------------------------------------------------------- jsr (j_CopyBasePalleteToActivePalette).l lea (Sprite1_X).l,a1 - bset #$07,Sprite1_Unk48-Sprite1_X(a1) - jmp (sub_3F8).l + bset #$07,Unk48(a1) + jmp (j_LoadSprites).l ; End of function sub_12CAE ; --------------------------------------------------------------------------- @@ -611,28 +611,28 @@ FahlEnemyList: dc.b SPR_ORC1 ; DATA XREF: ROM:00012C7Cr CSA_0032: ; CODE XREF: ROM:000121C4j lea (Sprite1_X).l,a1 - clr.w Sprite1_Unk2A-Sprite1_X(a1) - bclr #$07,$0000000C(a1) - bclr #$07,$0000004C(a1) + clr.w BehavParam(a1) + bclr #$07,Flags2(a1) + bclr #$07,InitFlags2(a1) move.b #$01,d0 - move.b d0,$0000003B(a1) + move.b d0,SpriteType(a1) bsr.w LookupSpriteGfxIndex - move.b $0000000B(a1),d0 + move.b SpriteGraphic(a1),d0 bsr.w sub_12CAE tst.w (Player_CurrentHealth).l beq.w locret_12D8E - addq.b #$01,(g_Vars+$1A).l - cmpi.b #$05,(g_Vars+$1A).l + addq.b #$01,(g_AdditionalFlags+$1A).l + cmpi.b #$05,(g_AdditionalFlags+$1A).l beq.s loc_12D90 - cmpi.b #$0A,(g_Vars+$1A).l + cmpi.b #$0A,(g_AdditionalFlags+$1A).l beq.s loc_12D96 - cmpi.b #$14,(g_Vars+$1A).l + cmpi.b #$14,(g_AdditionalFlags+$1A).l beq.s loc_12D9C - cmpi.b #$1E,(g_Vars+$1A).l + cmpi.b #$1E,(g_AdditionalFlags+$1A).l beq.s loc_12DA2 - cmpi.b #$28,(g_Vars+$1A).l + cmpi.b #$28,(g_AdditionalFlags+$1A).l beq.s loc_12DA8 - cmpi.b #$32,(g_Vars+$1A).l + cmpi.b #$32,(g_AdditionalFlags+$1A).l beq.s loc_12DC6 locret_12D8E: ; CODE XREF: ROM:00012D48j @@ -704,12 +704,12 @@ loc_12DCE: ; CODE XREF: ROM:00012DB4j ; --------------------------------------------------------------------------- CSA_0033: ; CODE XREF: ROM:000121C8j - bset #$04,$0000000C(a5) + bset #$04,Flags2(a5) lea (Player_X).l,a0 - bset #$07,Player_Unk0A-Player_X(a0) - bset #$07,$00000048(a0) + bset #$07,Unk0A(a0) + bset #$07,Unk48(a0) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w (Player_TempHealth).l,(Player_CurrentHealth).l bsr.w RefreshCurrentHealthHUD bsr.w MarkHUDForUpdate @@ -751,7 +751,7 @@ CSA_0035: ; CODE XREF: ROM:000121D0j loc_12F00: ; CODE XREF: ROM:00012EECj ; ROM:00012EF8j - add.w d0,(g_Vars+$1C).l + add.w d0,(g_AdditionalFlags+$1C).l move.l d0,(g_PrintNumericDwordValue).l bsr.w AddGold move.w #$0040,d0 ; Cutscene 0x040: 0x0254AE @@ -775,7 +775,7 @@ CSA_0036: ; CODE XREF: ROM:000121D4j loc_12F50: ; CODE XREF: ROM:00012F32j ; ROM:00012F3Ej - sub.w d0,(g_Vars+$1C).l + sub.w d0,(g_AdditionalFlags+$1C).l bsr.w RemoveGold locret_12F5A: ; CODE XREF: ROM:00012F4Ej @@ -855,7 +855,7 @@ sub_12FE6: ; CODE XREF: ROM:00012FDAp lea (Player_X).l,a1 move.b RotationAndSize(a1),d1 bsr.w SetSpriteRotationAnimFlags - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l rts ; End of function sub_12FE6 @@ -919,7 +919,7 @@ loc_1309C: ; CODE XREF: ROM:000130E0j ori.b #$80,Unk0A(a0) movem.l a5,-(sp) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,a5 movem.w (sp)+,d7 @@ -938,7 +938,7 @@ loc_1309C: ; CODE XREF: ROM:000130E0j lea (Player_X).l,a1 move.b RotationAndSize(a1),d1 bsr.w SetSpriteRotationAnimFlags - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$0050,d0 bsr.w LoadCutsceneDialogue move.b #$31,(g_FridayAnimation2).l @@ -983,7 +983,7 @@ CSA_0047: ; CODE XREF: ROM:00012218j move.w #$0004,AnimationFrame(a5) bset #$07,Unk48(a5) movem.l a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$0054,d0 bsr.w LoadCutsceneDialogue movem.l (sp)+,a5 @@ -1010,7 +1010,7 @@ CSA_004A: ; CODE XREF: ROM:00012224j move.w #$0004,AnimationIndex(a5) clr.w AnimationFrame(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$0055,d0 bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -1040,7 +1040,7 @@ CSA_004F: ; CODE XREF: ROM:00012238j move.w (g_RmNum1).l,d0 jsr (j_CheckForRoomTransition).l move.w d0,(g_RmNum1).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l movem.l (sp)+,d0 movem.l (sp)+,a5 movem.l (sp)+,d0 @@ -1079,7 +1079,7 @@ CSA_0052: ; CODE XREF: ROM:00012244j eori.b #$80,d1 or.b d1,RotationAndSize(a0) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$005D,d0 ; Cutscene 0x05D: 0x0254E8 bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -1096,7 +1096,7 @@ CSA_0053: ; CODE XREF: ROM:00012248j loc_132D8: ; CODE XREF: ROM:CSA_0056j move.w #$0F14,(Player_X).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l clr.b (g_FridayAnimation1).l clr.w (gVDPSprFriday_Y).l move.w #$0061,d0 @@ -1104,7 +1104,7 @@ loc_132D8: ; CODE XREF: ROM:CSA_0056j jsr (sub_434).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_410).l + jsr (j_InitVDP).l clr.b (byte_FF1142).l clr.b (byte_FF1143).l bclr #$06,(Player_Flags2).l @@ -1115,14 +1115,15 @@ loc_132D8: ; CODE XREF: ROM:CSA_0056j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bclr #$05,(Player_AnimAction).l move.w #$0044,(Player_AnimationIndex).l move.w #$0008,(Player_AnimationFrame).l bset #$07,(Player_Unk48).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FadeInFromDarkness).l movem.l (sp)+,d0 movem.l (sp)+,a5 @@ -1178,9 +1179,10 @@ CSA_0057: ; CODE XREF: ROM:00012258j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bclr #$05,(Player_AnimAction).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- @@ -1200,9 +1202,10 @@ loc_1341E: ; CODE XREF: ROM:000133DEj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage rts ; --------------------------------------------------------------------------- @@ -1293,7 +1296,7 @@ CSA_0063: ; CODE XREF: ROM:00012288j loc_134D2: ; CODE XREF: ROM:000134EAj bsr.w sub_135F6 - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l cmpi.b #$1A,(byte_FF1145).l bne.s loc_134D2 @@ -1430,7 +1433,7 @@ loc_13688: ; CODE XREF: ROM:00013696j jsr (j_Sleep).l dbf d7,loc_13688 move.b #$08,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l moveq #$FFFFFFFF,d0 move.w (Player_HeightmapOffset).l,d0 movea.l d0,a0 @@ -1494,7 +1497,7 @@ sub_1375A: ; CODE XREF: ROM:0001373Cp movem.l a5,-(sp) move.w #$0008,AnimationIndex(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 move.w #00010,d0 @@ -1523,8 +1526,8 @@ loc_137CA: ; CODE XREF: ROM:0001379Aj lea (Sprite1_X).l,a5 addi.l #$00000018,BehaviourLUTPtr(a5) movea.l BehaviourLUTPtr(a5),a0 - move.b (a0),Unk2B(a5) - move.b $00000001(a0),Unk2A(a5) + move.b (a0),BehavCmd(a5) + move.b $00000001(a0),BehavParam(a5) rts ; --------------------------------------------------------------------------- @@ -1535,7 +1538,7 @@ CSA_006B: ; CODE XREF: ROM:000122A8j bset #$07,Unk48(a5) movea.l a5,a1 bsr.w SetSpriteRotationAnimFlags - jsr (sub_3F8).l + jsr (j_LoadSprites).l move.w #$0074,d0 ; Cutscene 0x074: 0x025516 bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -1592,7 +1595,7 @@ CSA_0072: ; CODE XREF: ROM:000122C4j move.w #$000C,AnimationIndex(a5) clr.w AnimationFrame(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l move.w #$0028,d0 ; Cutscene 0x028: 0x02547E bsr.w LoadCutsceneDialogue @@ -1632,7 +1635,7 @@ CSA_0076: ; CODE XREF: ROM:000122D4j CSA_0077: ; CODE XREF: ROM:000122D8j movem.l a5,-(sp) lea (Sprite1_X).l,a5 - move.w #$014D,BehaviourLUTIndex(a5) + move.w #00333,BehaviourLUTIndex(a5) jsr (j_LoadSpriteBehaviour).l movem.l (sp)+,a5 rts @@ -1665,9 +1668,9 @@ locret_13956: ; CODE XREF: ROM:0001394Cj CSA_007B: ; CODE XREF: ROM:000122E8j move.b #$08,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l move.b #$10,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_PermanentSwitch @@ -1749,7 +1752,7 @@ loc_13A16: ; CODE XREF: ROM:00013A08j clr.w (g_ControllerPlayback).l jsr (j_HideSprite).l move.b #$28,d0 - jmp (sub_40A).l + jmp (j_DoTileSwap).l ; --------------------------------------------------------------------------- CSA_0084: ; CODE XREF: ROM:0001230Cj @@ -1781,7 +1784,7 @@ CSA_0087: ; CODE XREF: ROM:00012318j lea (Sprite12_X).l,a5 jsr (j_HideSprite).l movem.l (sp)+,a5 - move.b #$1F,d0 + move.b #ITM_ARMLET,d0 jmp (j_CheckAndConsumeItem).l ; --------------------------------------------------------------------------- @@ -1839,7 +1842,7 @@ CSA_008C: ; CODE XREF: ROM:0001232Cj move.w #$0038,AnimationIndex(a5) move.w #$0004,AnimationFrame(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l move.b #$40,(byte_FF1143).l clr.w (Player_AttackStrength).l @@ -1862,21 +1865,21 @@ loc_13B56: ; CODE XREF: ROM:00013B04j ; ROM:00013B4Aj move.w #$0038,AnimationIndex(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,a5 rts ; --------------------------------------------------------------------------- CSA_008F: ; CODE XREF: ROM:00012338j - clr.w Unk2A(a5) + clr.w BehavParam(a5) movea.l BehaviourLUTPtr(a5),a0 addi.l #$0000000F,BehaviourLUTPtr(a5) addq.l #$02,a0 lea (Sprite2_X).l,a5 move.l a0,Sprite2_BehaviourLUTPtr-Sprite2_X(a5) - move.b (a0),Unk2B(a5) - move.b $00000001(a0),Unk2A(a5) + move.b (a0),BehavCmd(a5) + move.b $00000001(a0),BehavParam(a5) rts ; --------------------------------------------------------------------------- @@ -1922,8 +1925,8 @@ CSA_0096: ; CODE XREF: ROM:00012354j movea.l BehaviourLUTPtr(a0),a1 addq.l #$04,a1 move.l a1,BehaviourLUTPtr(a5) - move.b (a1),Unk2B(a5) - move.b $00000001(a1),Unk2A(a5) + move.b (a1),BehavCmd(a5) + move.b $00000001(a1),BehavParam(a5) bclr #$07,Flags2(a5) bclr #$07,InitFlags2(a5) bclr #$01,Flags2(a5) @@ -1975,7 +1978,7 @@ CSA_009A: ; CODE XREF: ROM:00012364j jsr (sub_434).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_410).l + jsr (j_InitVDP).l jsr (j_FadeInFromDarkness).l movem.l (sp)+,d0 movem.l (sp)+,a5 @@ -2058,7 +2061,7 @@ sub_13D3C: ; CODE XREF: sub_13D16+Ep movem.l a5,-(sp) move.w #$0010,AnimationIndex(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 move.w #$0008,d0 @@ -2192,7 +2195,7 @@ loc_13E86: ; CODE XREF: ROM:00013EA8j jsr j_CSA_00B2_ZakOnlyFlyUp(pc,d0.w) bsr.w ZakFlapWings movem.l d7-a0/a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,d7-a0/a5 dbf d7,loc_13E86 @@ -2406,7 +2409,7 @@ sub_13FB2: ; CODE XREF: ZakFlapWings+38p movem.l a5,-(sp) move.w #$0008,AnimationIndex(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 move.w #$0004,d0 @@ -2416,7 +2419,7 @@ sub_13FB2: ; CODE XREF: ZakFlapWings+38p ; --------------------------------------------------------------------------- CSA_00B5: ; CODE XREF: ROM:000123D0j - bset #$06,(g_Vars).l + bset #$06,(g_AdditionalFlags).l move.w #$00A0,d0 ; Cutscene 0x0A0: 0x02556E bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -2493,7 +2496,7 @@ loc_14058: ; CODE XREF: ROM:00014052j ori.b #$80,Unk0A(a0) movem.l a5,-(sp) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 bsr.w CSA_015A @@ -2505,7 +2508,7 @@ loc_14058: ; CODE XREF: ROM:00014052j move.b #ITM_EKEEKE,d0 jsr (j_CheckAndConsumeItem).l jsr (j_UpdateEkeEkeHUD).l - bset #$00,(g_Vars+4).l + bset #$00,(g_AdditionalFlags+4).l jsr (j_HideSprite).l rts ; --------------------------------------------------------------------------- @@ -2544,13 +2547,13 @@ CSA_00C6: ; CODE XREF: ROM:00012414j ori.b #$80,Unk0A(a0) movem.l a5,-(sp) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 move.w #$00AB,d0 ; Cutscene 0x0AB: 0x025584 bsr.w LoadCutsceneDialogue move.b #$31,(g_FridayAnimation1).l - bset #$04,(g_Vars+4).l + bset #$04,(g_AdditionalFlags+4).l bset #$00,(g_Flags+1).l rts ; --------------------------------------------------------------------------- @@ -2586,7 +2589,7 @@ loc_14190: ; CODE XREF: ROM:0001419Ej move.b #$5F,(g_FridayAnimation1).l move.b #$22,(g_FridayAnimation2).l bsr.w loc_15852 - bset #$06,(g_Vars+4).l + bset #$06,(g_AdditionalFlags+4).l loc_141E0: ; CODE XREF: ROM:0001416Aj move.b #$31,(g_FridayAnimation1).l @@ -2630,7 +2633,7 @@ CSA_00CE: ; CODE XREF: ROM:00012434j CSA_00CF: ; CODE XREF: ROM:00012438j move.w #$00BC,d0 ; Cutscene 0x0BC: 0x0255A6 bsr.w LoadCutsceneDialogue - bset #$01,(g_Vars+6).l + bset #$01,(g_AdditionalFlags+6).l move.w #$0275,(g_RmNum1).l ; Lighthouse bsr.s SpecialWarp bset #$00,(g_Flags+1).l @@ -2655,7 +2658,7 @@ SpecialWarp: ; CODE XREF: ROM:00014240p jsr (sub_434).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_410).l + jsr (j_InitVDP).l jmp (j_FadeFromWhite).l ; End of function SpecialWarp @@ -2674,7 +2677,7 @@ CSA_00D1: ; CODE XREF: ROM:00012440j bsr.w LoadCutsceneDialogue tst.b (g_YesNoPromptResult).l beq.w locret_142B8 - bset #$04,(g_Vars+$B).l + bset #$04,(g_AdditionalFlags+$B).l locret_142B8: ; CODE XREF: ROM:000142ACj rts @@ -2696,7 +2699,7 @@ CSA_00D2: ; CODE XREF: ROM:00012444j jsr (j_DisplayIslandMap).l andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l - bset #$04,(g_Vars+8).l + bset #$04,(g_AdditionalFlags+8).l move.w #$01F1,(g_RmNum1).l ; Ship move.w #$2724,(Player_X).l bsr.s LoadRoom_1 @@ -2755,7 +2758,7 @@ CSA_00D6: ; CODE XREF: ROM:00012454j bsr.w LoadCutsceneDialogue move.w #$021F,(g_RmNum1).l ; Empty dock move.w #$2D28,(Player_X).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l movem.l (sp)+,d0 movem.l (sp)+,a5 movem.l (sp)+,d0 @@ -2938,7 +2941,7 @@ locret_1458C: ; CODE XREF: ROM:00014578j ; --------------------------------------------------------------------------- CSA_00EF: ; CODE XREF: ROM:000124B8j - bset #$01,(g_Vars+$A).l + bset #$01,(g_AdditionalFlags+$A).l move.w #$00E3,d0 ; Cutscene 0x0E3: 0x0255F4 bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -2956,9 +2959,10 @@ CSA_00F1: ; CODE XREF: ROM:000124C0j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$C0,d0 cmpi.b #$C0,d0 bne.s loc_145C2 @@ -2984,7 +2988,7 @@ sub_145E2: ; CODE XREF: ROM:000145DAp movem.l a5,-(sp) move.w #$0028,AnimationIndex(a5) bset #$07,Unk48(a5) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 move.w #$0006,d0 @@ -3002,15 +3006,15 @@ CSA_00F3: ; CODE XREF: ROM:000124C8j movea.l BehaviourLUTPtr(a0),a1 addq.l #$04,a1 move.l a1,BehaviourLUTPtr(a5) - move.b (a1),Unk2B(a5) - move.b $00000001(a1),Unk2A(a5) + move.b (a1),BehavCmd(a5) + move.b $00000001(a1),BehavParam(a5) bclr #$07,Flags2(a5) bclr #$07,InitFlags2(a5) bclr #$01,Flags2(a5) bclr #$06,Flags2(a5) - bclr #$06,Flags4(a5) + bclr #$06,Flags4(a5) ; Bit 0 = Invincible / Solid bclr #$00,Flags2(a5) - move.b #$01,Unk6F(a5) + move.b #$01,AnimFlags(a5) bset #$04,Flags2(a5) rts ; --------------------------------------------------------------------------- @@ -3036,7 +3040,7 @@ loc_14680: ; CODE XREF: ROM:000146B0j bsr.w ZakFlapWings bsr.w ZakFlapWings movem.l d7-a0/a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,d7-a0/a5 dbf d7,loc_14680 @@ -3051,13 +3055,13 @@ loc_14680: ; CODE XREF: ROM:000146B0j ; --------------------------------------------------------------------------- dc.w SND_EnemyNoise ; --------------------------------------------------------------------------- - bset #$00,(g_Vars+$19).l + bset #$00,(g_AdditionalFlags+$19).l move.b #$01,(byte_FF1145).l rts ; --------------------------------------------------------------------------- CSA_00F6: ; CODE XREF: ROM:000124D4j - bclr #$00,(g_Vars+$19).l + bclr #$00,(g_AdditionalFlags+$19).l move.w #$00DC,d0 ; Cutscene 0x0DC: 0x0255E6 bsr.w LoadCutsceneDialogue move.w #$002F,d7 @@ -3068,7 +3072,7 @@ loc_14704: ; CODE XREF: ROM:0001472Cj bsr.w ZakFlapWings bsr.w ZakFlapWings movem.l d7-a0/a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,d7-a0/a5 dbf d7,loc_14704 @@ -3094,7 +3098,7 @@ loc_14704: ; CODE XREF: ROM:0001472Cj bsr.w SetSpriteRotationAnimFlags bset #$07,$00000048(a1) bclr #$00,$0000000C(a1) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l bsr.w CSA_015A move.w #$00DE,d0 ; Cutscene 0x0DE: 0x0255EA @@ -3102,15 +3106,15 @@ loc_14704: ; CODE XREF: ROM:0001472Cj clr.b (g_FridayAnimation1).l clr.w (gVDPSprFriday_Y).l clr.w (g_ControllerPlayback).l - bset #$05,(g_Vars+$A).l + bset #$05,(g_AdditionalFlags+$A).l bra.w CSA_009A ; --------------------------------------------------------------------------- rts ; --------------------------------------------------------------------------- CSA_00F7: ; CODE XREF: ROM:000124D8j - move.w #$0120,$00000012(a5) - bset #$06,$00000038(a5) + move.w #$0120,Z(a5) + bset #$06,Flags4(a5) ; Bit 0 = Invincible / Solid rts ; =============== S U B R O U T I N E ======================================= @@ -3121,7 +3125,7 @@ sub_147E8: ; CODE XREF: ROM:0001482Ap bsr.w sub_13F66 bsr.w sub_13F66 movem.l d7-a0/a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,d7-a0/a5 rts @@ -3191,8 +3195,8 @@ CSA_00FC: ; CODE XREF: ROM:000124ECj movea.l BehaviourLUTPtr(a0),a1 addq.l #$04,a1 move.l a1,BehaviourLUTPtr(a5) - move.b (a1),Unk2B(a5) - move.b Y(a1),Unk2A(a5) + move.b (a1),BehavCmd(a5) + move.b Y(a1),BehavParam(a5) bclr #$07,Flags2(a5) bclr #$07,InitFlags2(a5) rts @@ -3305,7 +3309,7 @@ CSA_0109: ; CODE XREF: ROM:00012520j CSA_010A: ; CODE XREF: ROM:00012524j move.w #$00FA,d0 ; Cutscene 0x0FA: 0x025622 - btst #$07,(g_Vars+4).l + btst #$07,(g_AdditionalFlags+4).l bne.s loc_14A12 move.w #$00F9,d0 btst #$01,(g_Flags+4).l @@ -3332,7 +3336,7 @@ loc_14A26: ; CODE XREF: ROM:00014A40j bclr #$07,Flags2(a0) bclr #$07,InitFlags2(a0) beq.s loc_14A3C - clr.w Unk2A(a0) + clr.w BehavParam(a0) loc_14A3C: ; CODE XREF: ROM:00014A36j lea SPRITE_SIZE(a0),a0 @@ -3349,7 +3353,7 @@ CSA_010D: ; CODE XREF: ROM:00012530j move.w #$0808,(Player_SubX).l andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l move.w #$00FE,(g_ControllerPlayback).l ; Lock controls movem.l (sp)+,d0 movem.l (sp)+,a5 @@ -3364,7 +3368,7 @@ CSA_010E: ; CODE XREF: ROM:00012534j move.w #$2C2C,(Player_X).l move.w #$0808,(Player_SubX).l ori.b #$C0,(Player_RotationAndSize).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l move.w #$00FE,(g_ControllerPlayback).l ; Lock Controls movem.l (sp)+,d0 movem.l (sp)+,a5 @@ -3380,7 +3384,7 @@ CSA_010F: ; CODE XREF: ROM:00012538j move.w #$0808,(Player_SubX).l ori.b #$C0,(Player_RotationAndSize).l ori.b #$40,(Player_Flags2).l - jsr (sub_3EC).l + jsr (j_WarpToRoom).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_MusicHarbour @@ -3412,7 +3416,7 @@ CSA_0111: ; CODE XREF: ROM:00012540j move.w #$0100,d0 ; Cutscene 0x100: 0x02562E move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_MusicFridayAppear @@ -3429,7 +3433,7 @@ loc_14B8E: ; CODE XREF: ROM:00014B9Cj move.w #$0101,d0 ; Cutscene 0x101: 0x025630 move.w #00060,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l move.w #00030,d0 jsr (j_Sleep).l bsr.w CSA_015A @@ -3439,7 +3443,7 @@ loc_14B8E: ; CODE XREF: ROM:00014B9Cj move.w #$0103,d0 ; Cutscene 0x103: 0x025634 move.w #00060,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l bset #$03,(g_Flags+1).l rts @@ -3491,7 +3495,7 @@ CSA_0112: ; CODE XREF: ROM:00012544j move.w #$0118,d0 ; Cutscene 0x118: 0x02565E move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l move.b #$67,(g_FridayAnimation1).l move.b #$22,(g_FridayAnimation2).l @@ -3505,7 +3509,7 @@ loc_14CA2: ; CODE XREF: ROM:00014CB0j move.w #$0808,(Player_SubX).l andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l move.b #$21,(g_FridayAnimation1).l move.b #$21,(g_FridayAnimation2).l jsr (sub_42E).l @@ -3525,13 +3529,13 @@ CSA_0113: ; CODE XREF: ROM:00012548j move.w #$0808,(Player_SubX).l andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l - bclr #$03,(g_Vars+7).l + bclr #$03,(g_AdditionalFlags+7).l move.w #$0090,(Player_Z).l - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l jsr (sub_434).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_4A6).l + jsr (j_StartGame).l movem.l (sp)+,d0 movem.l (sp)+,a5 movem.l (sp)+,d0 @@ -3561,7 +3565,7 @@ CSA_0114: ; CODE XREF: ROM:0001254Cj move.w #$010A,d0 ; Cutscene 0x10A: 0x025642 move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jmp (j_ClearTextbox_0).l + jmp (j_ClearTextbox).l ; --------------------------------------------------------------------------- CSA_0115: ; CODE XREF: ROM:00012550j @@ -3576,14 +3580,14 @@ CSA_0115: ; CODE XREF: ROM:00012550j ; --------------------------------------------------------------------------- dc.w SND_MusicIntro ; --------------------------------------------------------------------------- - jmp (j_ClearTextbox_0).l + jmp (j_ClearTextbox).l ; --------------------------------------------------------------------------- CSA_0116: ; CODE XREF: ROM:00012554j move.w #$010D,d0 ; Cutscene 0x10D: 0x025648 move.w #00090,d1 bsr.w ShowCutsceneDialogueAndWait - jmp (j_ClearTextbox_0).l + jmp (j_ClearTextbox).l ; --------------------------------------------------------------------------- CSA_0117: ; CODE XREF: ROM:00012558j @@ -3632,7 +3636,7 @@ CSA_011C: ; CODE XREF: ROM:0001256Cj bsr.w ShowCutsceneDialogueAndWait clr.w (g_ControllerPlayback).l move.b #$31,(g_FridayAnimation1).l - jmp (j_ClearTextbox_0).l + jmp (j_ClearTextbox).l ; --------------------------------------------------------------------------- CSA_011D: ; CODE XREF: ROM:00012570j @@ -3669,7 +3673,7 @@ CSA_0123: ; CODE XREF: ROM:00012588j move.w #$0119,d0 ; Cutscene 0x119: 0x025660 move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jmp (j_ClearTextbox_0).l + jmp (j_ClearTextbox).l ; --------------------------------------------------------------------------- CSA_0124: ; CODE XREF: ROM:0001258Cj @@ -3723,7 +3727,7 @@ CSA_0129: ; CODE XREF: ROM:000125A0j lea (Player_X).l,a1 move.b Player_RotationAndSize-Player_X(a1),d1 bsr.w SetSpriteRotationAnimFlags - jsr (sub_3F8).l + jsr (j_LoadSprites).l bsr.w CSA_015A move.w #$00F7,d0 ; Cutscene 0x0F7: 0x02561C bsr.w LoadCutsceneDialogue @@ -3737,7 +3741,7 @@ CSA_012A: ; CODE XREF: ROM:000125A4j ; --------------------------------------------------------------------------- CSA_012B: ; CODE XREF: ROM:000125A8j - bset #$02,(g_Vars+9).l + bset #$02,(g_AdditionalFlags+9).l move.w #$0120,d0 ; Cutscene 0x120: 0x02566E bra.w LoadCutsceneDialogue ; --------------------------------------------------------------------------- @@ -3877,7 +3881,7 @@ CSA_0137: ; CODE XREF: ROM:000125D8j bsr.w LoadCutsceneDialogue tst.b (g_YesNoPromptResult).l beq.w locret_15126 - bset #$03,(g_Vars+9).l + bset #$03,(g_AdditionalFlags+9).l locret_15126: ; CODE XREF: ROM:0001511Aj rts @@ -3888,7 +3892,7 @@ CSA_0138: ; CODE XREF: ROM:000125DCj bsr.w LoadCutsceneDialogue tst.b (g_YesNoPromptResult).l beq.w locret_15142 - bset #$04,(g_Vars+9).l + bset #$04,(g_AdditionalFlags+9).l locret_15142: ; CODE XREF: ROM:00015136j rts @@ -4007,7 +4011,7 @@ CSA_0149: ; CODE XREF: ROM:00012620j CSA_014A: ; CODE XREF: ROM:00012624j bsr.w CSA_015A - btst #$04,(g_Vars+$18).l + btst #$04,(g_AdditionalFlags+$18).l bne.s locret_15272 move.w #$0139,d0 ; Cutscene 0x139: 0x0256A0 bsr.w LoadCutsceneDialogue @@ -4099,29 +4103,29 @@ CSA_014E: ; CODE XREF: ROM:00012634j or.w d0,$00000940(a2) move.w #$0140,d0 ; Cutscene 0x140: 0x0256AE bsr.w LoadCutsceneDialogue - bclr #$06,$0000000C(a5) - bclr #$06,$0000004C(a5) - move.w #$000C,$00000024(a5) - move.w #$0014,$00000026(a5) - bset #$07,$00000048(a5) + bclr #$06,Flags2(a5) + bclr #$06,InitFlags2(a5) + move.w #$000C,AnimationIndex(a5) + move.w #$0014,AnimationFrame(a5) + bset #$07,Unk48(a5) movem.l a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l movem.l (sp)+,a5 jsr (j_EnableDMAQueueProcessing).l move.w #$0005,d0 jsr (j_Sleep).l - move.w #$000C,$00000024(a5) - move.w #$0010,$00000026(a5) - bset #$07,$00000048(a5) + move.w #$000C,AnimationIndex(a5) + move.w #$0010,AnimationFrame(a5) + bset #$07,Unk48(a5) movem.l a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l movem.l (sp)+,a5 jsr (j_EnableDMAQueueProcessing).l move.w #$0005,d0 jsr (j_Sleep).l - move.w #$0004,$00000024(a5) - move.w #$0000,$00000026(a5) - bset #$07,$00000048(a5) + move.w #$0004,AnimationIndex(a5) + move.w #$0000,AnimationFrame(a5) + bset #$07,Unk48(a5) rts ; --------------------------------------------------------------------------- @@ -4163,11 +4167,11 @@ CSA_0153: ; CODE XREF: ROM:00012648j ; --------------------------------------------------------------------------- dc.w SND_Fireball1 ; --------------------------------------------------------------------------- - move.w #$0008,$00000024(a5) - move.w #$0004,$00000026(a5) - bset #$07,$00000048(a5) + move.w #$0008,AnimationIndex(a5) + move.w #$0004,AnimationFrame(a5) + bset #$07,Unk48(a5) movem.l a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l movem.l (sp)+,a5 jsr (j_FlushDMACopyQueue).l lea ($0000F180).l,a2 @@ -4217,7 +4221,7 @@ loc_15532: ; CODE XREF: sub_15530+36j bset #$01,(Sprite3_Flags2).l movem.w d7,-(sp) movem.l a5,-(sp) - jsr (sub_3F8).l + jsr (j_LoadSprites).l movem.l (sp)+,a5 jsr (j_FlushDMACopyQueue).l movem.w (sp)+,d7 @@ -4253,12 +4257,12 @@ loc_15594: ; CODE XREF: ROM:00015598j move.w #$1C19,(Player_X).l andi.b #$3F,(Player_RotationAndSize).l ori.b #$80,(Player_RotationAndSize).l - ori.b #$80,$0000000A(a0) + ori.b #$80,Unk0A(a0) jsr (sub_3FE).l jsr (sub_434).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_410).l + jsr (j_InitVDP).l jsr (j_FadeFromWhite).l trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- @@ -4275,7 +4279,7 @@ loc_15594: ; CODE XREF: ROM:00015598j move.w #$0145,d0 ; Cutscene 0x145: 0x0256B8 move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l move.b #$6D,(g_FridayAnimation1).l move.b #$21,(g_FridayAnimation2).l bsr.w loc_15852 @@ -4294,7 +4298,7 @@ loc_15594: ; CODE XREF: ROM:00015598j move.w #$014A,d0 ; Cutscene 0x14A: 0x0256C2 move.w #00180,d1 bsr.w ShowCutsceneDialogueAndWait - jsr (j_ClearTextbox_0).l + jsr (j_ClearTextbox).l move.b #$69,(g_FridayAnimation1).l move.b #$21,(g_FridayAnimation2).l moveq #$00000003,d7 @@ -4338,7 +4342,7 @@ loc_1568E: ; CODE XREF: ROM:0001569Cj jsr (j_Sleep).l clr.w d0 move.b #$EF,d1 - jsr (j_AndVDPReg).l + jsr (j_MaskVDPReg).l jsr (j_PlayEndCredits).l jmp (j_EndGame).l ; --------------------------------------------------------------------------- @@ -4376,7 +4380,7 @@ loc_15744: ; CODE XREF: ROM:0001578Aj ; --------------------------------------------------------------------------- loc_15780: ; CODE XREF: ROM:00015778j - addq.b #$01,(g_Vars+$11).l + addq.b #$01,(g_AdditionalFlags+$11).l loc_15786: ; CODE XREF: ROM:0001574Cj ; ROM:0001577Ej @@ -4390,11 +4394,11 @@ locret_1578E: ; CODE XREF: ROM:00015746j CSA_0158: ; CODE XREF: ROM:0001265Cj bset #$02,(g_Flags+1).l clr.l d0 - move.b (g_Vars+$11).l,d0 + move.b (g_AdditionalFlags+$11).l,d0 movem.l d0,-(sp) - cmp.b (g_Vars+$1B).l,d0 + cmp.b (g_AdditionalFlags+$1B).l,d0 bls.s loc_157C0 - move.b d0,(g_Vars+$1B).l + move.b d0,(g_AdditionalFlags+$1B).l move.l d0,(g_PrintNumericDwordValue).l move.w #$0126,d0 ; Cutscene 0x126: 0x02567A bsr.w LoadCutsceneDialogue @@ -4429,14 +4433,14 @@ locret_15806: ; CODE XREF: ROM:000157F0j CSA_0159: ; CODE XREF: ROM:00012660j clr.l d0 - move.b (g_Vars+$1B).l,d0 ; Chicken toss room record + move.b (g_AdditionalFlags+$1B).l,d0 ; Chicken toss room record move.l d0,(g_PrintNumericDwordValue).l move.w #$0125,d0 ; Cutscene 0x125: 0x025678 bsr.w LoadCutsceneDialogue tst.b (g_YesNoPromptResult).l beq.w locret_15836 bset #$00,(g_Flags+1).l - clr.b (g_Vars+$11).l + clr.b (g_AdditionalFlags+$11).l locret_15836: ; CODE XREF: ROM:00015824j rts @@ -4565,7 +4569,7 @@ sub_1595C: ; CODE XREF: sub_15914+40p move.w d6,d7 loc_15960: ; CODE XREF: sub_1595C+Cj - tst.w $00000004(a0) + tst.w RotationAndSize(a0) bne.s locret_15970 addq.w #$08,a0 dbf d7,loc_15960 diff --git a/code/scripthandling/scriptfuncs1.asm b/code/scripthandling/scriptfuncs1.asm index 70a83cd..2649a06 100644 --- a/code/scripthandling/scriptfuncs1.asm +++ b/code/scripthandling/scriptfuncs1.asm @@ -41,8 +41,6 @@ DisplayItemPriceMessage: ; CODE XREF: ROM:ShopPrice_01p move.w (a0),d0 bsr.w RunTextCmd movem.l (sp)+,d0-d1/a0 - -loc_24F06: addq.l #$04,sp rts ; End of function DisplayItemPriceMessage diff --git a/code/scripthandling/scriptfuncs2.asm b/code/scripthandling/scriptfuncs2.asm index 986029f..088a332 100644 --- a/code/scripthandling/scriptfuncs2.asm +++ b/code/scripthandling/scriptfuncs2.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -PlayerTalk: ; DATA XREF: sub_22EB8t +PlayerTalk: ; DATA XREF: j_PlayerTalkt movem.l d0-a6,-(sp) move.w #$FFFF,(g_Character).l btst #CTRL_DOWN,(g_Controller2State).l @@ -218,9 +218,7 @@ loc_25304: ; CODE XREF: HandleProgressDependentDialogue:loc_25316j loc_2530C: ; CODE XREF: HandleProgressDependentDialogue+3Ej tst.w (DebugModeEnable).w bne.s loc_25316 - -loc_25312: ; Trap01Handler - trap #$01 + trap #$01 ; Trap01Handler ; --------------------------------------------------------------------------- ScriptID $0,$0 ; Run text script at offset 0x0277F6 ; 0xE000: PRINT MSG 0x004D, MSGBOX CLEARED, END: "? ERROR 7{5E}" diff --git a/code/scripthandling/scriptfuncs3.asm b/code/scripthandling/scriptfuncs3.asm index b058f34..affa8cf 100644 --- a/code/scripthandling/scriptfuncs3.asm +++ b/code/scripthandling/scriptfuncs3.asm @@ -1,3 +1,4 @@ + ; =============== S U B R O U T I N E ======================================= @@ -33,6 +34,8 @@ loc_253EE: ; CODE XREF: PickValueBasedOnFlags+Cj movem.l (sp)+,d0/a1 rts ; End of function PickValueBasedOnFlags + + ; =============== S U B R O U T I N E ======================================= diff --git a/code/scripthandling/scriptfuncs4.asm b/code/scripthandling/scriptfuncs4.asm index edf5120..a6e1afe 100644 --- a/code/scripthandling/scriptfuncs4.asm +++ b/code/scripthandling/scriptfuncs4.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -CheckFlagAndDisplayMessage: ; CODE XREF: ROM:loc_25E82p +CheckFlagAndDisplayMessage: ; CODE XREF: ROM:ShopPrice_06_1p ; ROM:ShopEnter_07p ... movem.l d0/a0,-(sp) movea.l $00000008(sp),a0 @@ -27,8 +27,8 @@ loc_25DB0: ; CODE XREF: CheckFlagAndDisplayMessage+14j ; =============== S U B R O U T I N E ======================================= -SetFlagBitOnTalking: ; CODE XREF: ROM:loc_26090p - ; ROM:loc_2609Cp ... +SetFlagBitOnTalking: ; CODE XREF: ROM:CS_0003_2p + ; ROM:CS_0003_3p ... movem.l d0/a0,-(sp) movea.l $00000008(sp),a0 move.w (a0),d0 @@ -54,7 +54,7 @@ loc_25DDC: ; CODE XREF: SetFlagBitOnTalking+18j HandleYesNoPrompt: ; CODE XREF: ROM:CS_0143p - ; ROM:loc_26006p ... + ; ROM:CS_0002_1p ... movem.l d0/a0,-(sp) movea.l $00000008(sp),a0 move.w (a0),d0 diff --git a/code/scripthandling/scriptfuncs6.asm b/code/scripthandling/scriptfuncs6.asm index da97b65..781c305 100644 --- a/code/scripthandling/scriptfuncs6.asm +++ b/code/scripthandling/scriptfuncs6.asm @@ -27,7 +27,7 @@ loc_28D74: ; CODE XREF: ProcessScriptWord+Aj loc_28D86: ; CODE XREF: ProcessScriptWord+Ej btst #$0E,d0 ; Bit 14 - Clear textbox beq.s loc_28D90 ; Bit 13 - Don't process any more words - bsr.w ClearTextbox_0 + bsr.w ClearTextbox loc_28D90: ; CODE XREF: ProcessScriptWord+26j btst #$0D,d0 ; Bit 13 - Don't process any more words @@ -37,11 +37,11 @@ loc_28D90: ; CODE XREF: ProcessScriptWord+26j ; End of function ProcessScriptWord ; --------------------------------------------------------------------------- -ActionTable: dc.w LoadValueIntoFF1196-ActionTable ; DATA XREF: ProcessScriptWord+18t +ActionTable: dc.w LoadItemIntoSlot0-ActionTable ; DATA XREF: ProcessScriptWord+18t ; ROM:ActionTableo ... - dc.w LoadValueIntoFF1198-ActionTable - dc.w LoadValueIntoFF119A-ActionTable - dc.w LoadValueIntoFF119C-ActionTable + dc.w LoadItemIntoSlot1-ActionTable + dc.w LoadItemIntoSlot2-ActionTable + dc.w LoadItemIntoSlot3-ActionTable dc.w GetNumericValue-ActionTable dc.w DoSpecialAction-ActionTable dc.w SwitchCharacter-ActionTable @@ -53,7 +53,7 @@ ActionTable: dc.w LoadValueIntoFF1196-ActionTable ; DATA XREF: ProcessScriptWord DisplayTextFromScriptWord: ; CODE XREF: ProcessScriptWord+Cp move.l d0,-(sp) andi.w #$1FFF,d0 - addi.w #$004D,d0 + addi.w #SCRIPT_STRINGS_BEGIN,d0 bsr.w DisplayText ; Prints the compressed string identified by d0 move.l (sp)+,d0 rts @@ -63,7 +63,7 @@ DisplayTextFromScriptWord: ; CODE XREF: ProcessScriptWord+Cp ; =============== S U B R O U T I N E ======================================= -LoadValueIntoFF1196: ; DATA XREF: ROM:ActionTableo +LoadItemIntoSlot0: ; DATA XREF: ROM:ActionTableo movem.l d0/a1,-(sp) andi.l #$000003FF,d0 ; 0x03FF - special value means next operand is an address cmpi.w #$03FF,d0 @@ -73,19 +73,19 @@ LoadValueIntoFF1196: ; DATA XREF: ROM:ActionTableo bra.s loc_28DDE ; --------------------------------------------------------------------------- -loc_28DD8: ; CODE XREF: LoadValueIntoFF1196+Ej +loc_28DD8: ; CODE XREF: LoadItemIntoSlot0+Ej move.w d0,(word_FF1196).l -loc_28DDE: ; CODE XREF: LoadValueIntoFF1196+18j +loc_28DDE: ; CODE XREF: LoadItemIntoSlot0+18j movem.l (sp)+,d0/a1 rts -; End of function LoadValueIntoFF1196 +; End of function LoadItemIntoSlot0 ; =============== S U B R O U T I N E ======================================= -LoadValueIntoFF1198: ; DATA XREF: ROM:ActionTableo +LoadItemIntoSlot1: ; DATA XREF: ROM:ActionTableo movem.l d0/a1,-(sp) andi.l #$000003FF,d0 ; 0x03FF - special value means next operand is an address cmpi.w #$03FF,d0 @@ -95,19 +95,19 @@ LoadValueIntoFF1198: ; DATA XREF: ROM:ActionTableo bra.s loc_28E04 ; --------------------------------------------------------------------------- -loc_28DFE: ; CODE XREF: LoadValueIntoFF1198+Ej +loc_28DFE: ; CODE XREF: LoadItemIntoSlot1+Ej move.w d0,(word_FF1198).l -loc_28E04: ; CODE XREF: LoadValueIntoFF1198+18j +loc_28E04: ; CODE XREF: LoadItemIntoSlot1+18j movem.l (sp)+,d0/a1 rts -; End of function LoadValueIntoFF1198 +; End of function LoadItemIntoSlot1 ; =============== S U B R O U T I N E ======================================= -LoadValueIntoFF119A: ; DATA XREF: ROM:ActionTableo +LoadItemIntoSlot2: ; DATA XREF: ROM:ActionTableo movem.l d0/a1,-(sp) andi.l #$000003FF,d0 ; 0x03FF - special value means next operand is an address cmpi.w #$03FF,d0 @@ -117,19 +117,19 @@ LoadValueIntoFF119A: ; DATA XREF: ROM:ActionTableo bra.s loc_28E2A ; --------------------------------------------------------------------------- -loc_28E24: ; CODE XREF: LoadValueIntoFF119A+Ej +loc_28E24: ; CODE XREF: LoadItemIntoSlot2+Ej move.w d0,(word_FF119A).l -loc_28E2A: ; CODE XREF: LoadValueIntoFF119A+18j +loc_28E2A: ; CODE XREF: LoadItemIntoSlot2+18j movem.l (sp)+,d0/a1 rts -; End of function LoadValueIntoFF119A +; End of function LoadItemIntoSlot2 ; =============== S U B R O U T I N E ======================================= -LoadValueIntoFF119C: ; DATA XREF: ROM:ActionTableo +LoadItemIntoSlot3: ; DATA XREF: ROM:ActionTableo movem.l d0/a1,-(sp) andi.l #$000003FF,d0 cmpi.w #$03FF,d0 ; 0x03FF - special value means next operand is an address @@ -139,13 +139,13 @@ LoadValueIntoFF119C: ; DATA XREF: ROM:ActionTableo bra.s loc_28E50 ; --------------------------------------------------------------------------- -loc_28E4A: ; CODE XREF: LoadValueIntoFF119C+Ej +loc_28E4A: ; CODE XREF: LoadItemIntoSlot3+Ej move.w d0,(word_FF119C).l -loc_28E50: ; CODE XREF: LoadValueIntoFF119C+18j +loc_28E50: ; CODE XREF: LoadItemIntoSlot3+18j movem.l (sp)+,d0/a1 rts -; End of function LoadValueIntoFF119C +; End of function LoadItemIntoSlot3 ; =============== S U B R O U T I N E ======================================= @@ -321,7 +321,7 @@ loc_28F98: ; CODE XREF: LoadTextboxGraphics+Cj OpenTextbox: ; CODE XREF: ROM:00028EBCp ; ROM:00028EE2p ... movem.l d0-a6,-(sp) - bsr.w j_ClearTextbox + bsr.w j_ReloadTextbox jsr (j_QueueTextboxTilemapDMA).l jsr (j_FlushDMACopyQueue).l movem.l (sp)+,d0-a6 @@ -332,7 +332,7 @@ OpenTextbox: ; CODE XREF: ROM:00028EBCp ; =============== S U B R O U T I N E ======================================= -ClearTextbox_0: ; CODE XREF: ROM:loc_24B3Ep +ClearTextbox: ; CODE XREF: ROM:loc_24B3Ep ; ROM:000250C4p ... movem.l d0-a6,-(sp) btst #$00,(byte_FF1902).l @@ -340,10 +340,10 @@ ClearTextbox_0: ; CODE XREF: ROM:loc_24B3Ep bsr.w j_SetUpTextDisplay bclr #$00,(byte_FF1902).l -loc_28FD2: ; CODE XREF: ClearTextbox_0+Cj +loc_28FD2: ; CODE XREF: ClearTextbox+Cj movem.l (sp)+,d0-a6 rts -; End of function ClearTextbox_0 +; End of function ClearTextbox ; =============== S U B R O U T I N E ======================================= @@ -467,7 +467,7 @@ GetSpeakerSfx: ; CODE XREF: ROM:000251E2p move.b d1,d0 ; d0 - current talker script num jsr (j_GetSpeakerSpriteId).l ; d1 - current talker sprite ID bcs.s loc_290C2 - move.w d1,(g_speakerSpriteId).l + move.w d1,(g_SpeakerSpriteId).l lea SpriteIdToTalkSfx(pc),a0 loc_290AC: ; CODE XREF: GetSpeakerSfx+2Cj diff --git a/code/scripthandling/scriptfuncs8.asm b/code/scripthandling/scriptfuncs8.asm index ff7758a..b259380 100644 --- a/code/scripthandling/scriptfuncs8.asm +++ b/code/scripthandling/scriptfuncs8.asm @@ -70,7 +70,7 @@ loc_291B2: ; CODE XREF: GetItemQtyAndMaxQty+1Aj ; =============== S U B R O U T I N E ======================================= -AddItem: ; CODE XREF: GetItem+36p +SetItemQuantity: ; CODE XREF: GetItem+36p ; CheckAndConsumeItem:loc_2922Cp ... movem.l d1-d2/a0,-(sp) move.b d1,d2 @@ -80,13 +80,13 @@ AddItem: ; CODE XREF: GetItem+36p ble.s loc_291C8 move.w d1,d2 -loc_291C8: ; CODE XREF: AddItem+Ej +loc_291C8: ; CODE XREF: SetItemQuantity+Ej addq.w #$01,d2 move.w d2,d1 bsr.w UpdateItemQtyInInventory movem.l (sp)+,d1-d2/a0 rts -; End of function AddItem +; End of function SetItemQuantity ; =============== S U B R O U T I N E ======================================= @@ -114,7 +114,7 @@ loc_29202: ; CODE XREF: GetItem+8j loc_2920A: ; CODE XREF: GetItem+30j addq.w #$01,d1 - bsr.s AddItem + bsr.s SetItemQuantity tst.b d0 bne.s loc_29216 @@ -143,7 +143,7 @@ loc_29228: ; CODE XREF: CheckAndConsumeItem+8j subq.w #$01,d1 loc_2922C: ; CODE XREF: CheckAndConsumeItem:loc_29228j - bsr.s AddItem + bsr.s SetItemQuantity move.l (sp)+,d1 rts ; End of function CheckAndConsumeItem @@ -213,7 +213,7 @@ loc_2927E: ; CODE XREF: GetItemInventoryQty+18j ; =============== S U B R O U T I N E ======================================= -UpdateItemQtyInInventory: ; CODE XREF: AddItem+16p +UpdateItemQtyInInventory: ; CODE XREF: SetItemQuantity+16p movem.l d0-d1/a0,-(sp) lea (g_Inventory).l,a0 andi.w #$003F,d0 @@ -238,7 +238,7 @@ loc_292AE: ; CODE XREF: UpdateItemQtyInInventory+1Aj ; =============== S U B R O U T I N E ======================================= -GetItemMaxQty: ; CODE XREF: AddItem+8p +GetItemMaxQty: ; CODE XREF: SetItemQuantity+8p ; GetRemainingItemAllowedCount:loc_29240p ... move.l a0,-(sp) bsr.s GetItemProperties @@ -280,14 +280,14 @@ GetItemEquipSlot: ; DATA XREF: ROM:00022ED8t ; =============== S U B R O U T I N E ======================================= -GetItemRSP: ; CODE XREF: GetItemShopSellPrice+10p +GetItemBuyPrice: ; CODE XREF: GetItemShopSellPrice+10p ; DATA XREF: ROM:00022EDCt move.l a0,-(sp) bsr.s GetItemProperties move.w $00000002(a0),d1 movea.l (sp)+,a0 rts -; End of function GetItemRSP +; End of function GetItemBuyPrice ; =============== S U B R O U T I N E ======================================= diff --git a/code/scripthandling/scriptfuncs9.asm b/code/scripthandling/scriptfuncs9.asm index f84db20..6b306b5 100644 --- a/code/scripthandling/scriptfuncs9.asm +++ b/code/scripthandling/scriptfuncs9.asm @@ -10,7 +10,7 @@ loc_2940C: ; CODE XREF: DebugGetAllItems:loc_29418j bsr.w GetItemMaxQty beq.s loc_29418 moveq #$00000009,d1 - bsr.w AddItem + bsr.w SetItemQuantity loc_29418: ; CODE XREF: DebugGetAllItems+Cj dbf d0,loc_2940C @@ -80,7 +80,7 @@ ConvertFlagNumberToBit: ; CODE XREF: SetFlagBit+4p ; =============== S U B R O U T I N E ======================================= -sub_29470: ; CODE XREF: HandleControlChars+A6p +GetChrName: ; CODE XREF: HandleControlChars+A6p move.l d1,-(sp) cmpi.w #01000,d1 blt.s loc_29482 @@ -89,23 +89,23 @@ sub_29470: ; CODE XREF: HandleControlChars+A6p bra.s loc_29494 ; --------------------------------------------------------------------------- -loc_29482: ; CODE XREF: sub_29470+6j - cmpi.w #$003D,d1 +loc_29482: ; CODE XREF: GetChrName+6j + cmpi.w #NUM_CHAR_NAMES,d1 blt.s loc_29490 clr.w d1 lea DefaultName(pc),a2 bra.s loc_29494 ; --------------------------------------------------------------------------- -loc_29490: ; CODE XREF: sub_29470+16j +loc_29490: ; CODE XREF: GetChrName+16j lea CharacterNameTable(pc),a2 -loc_29494: ; CODE XREF: sub_29470+10j - ; sub_29470+1Ej +loc_29494: ; CODE XREF: GetChrName+10j + ; GetChrName+1Ej bsr.s sub_294B6 move.l (sp)+,d1 rts -; End of function sub_29470 +; End of function GetChrName ; =============== S U B R O U T I N E ======================================= @@ -134,7 +134,7 @@ loc_294B0: ; CODE XREF: LoadUncompressedString+Cj ; =============== S U B R O U T I N E ======================================= -sub_294B6: ; CODE XREF: sub_29470:loc_29494p +sub_294B6: ; CODE XREF: GetChrName:loc_29494p ; LoadUncompressedString:loc_294B0p move.l d1,-(sp) clr.w d7 diff --git a/code/scripthandling/shops/shopscriptfuncs1.asm b/code/scripthandling/shops/shopscriptfuncs1.asm index 638b9bf..6843583 100644 --- a/code/scripthandling/shops/shopscriptfuncs1.asm +++ b/code/scripthandling/shops/shopscriptfuncs1.asm @@ -158,7 +158,7 @@ loc_24B36: ; CODE XREF: ROM:00024B14j move.b #$FF,(byte_FF1903).l loc_24B3E: ; CODE XREF: ROM:00024AF2j - bsr.w ClearTextbox_0 + bsr.w ClearTextbox movem.l (sp)+,d0-d2/a1 rts diff --git a/code/scripthandling/shops/shopscriptfuncs2.asm b/code/scripthandling/shops/shopscriptfuncs2.asm index 4349d56..e242f4c 100644 --- a/code/scripthandling/shops/shopscriptfuncs2.asm +++ b/code/scripthandling/shops/shopscriptfuncs2.asm @@ -8,7 +8,7 @@ GetItemShopSellPrice: ; CODE XREF: sub_24B48+4p clr.w d0 move.b (byte_FF1903).l,d0 move.w d0,(word_FF1198).l - bsr.w GetItemRSP + bsr.w GetItemBuyPrice clr.w d2 cmpi.w #ITM_LIFESTOCK,d0 bne.s loc_24CE4 ; Lifestock price modifier diff --git a/code/scripthandling/triggeractionjumptable.asm b/code/scripthandling/triggeractionjumptable.asm index 5e28850..73f3094 100644 --- a/code/scripthandling/triggeractionjumptable.asm +++ b/code/scripthandling/triggeractionjumptable.asm @@ -2,7 +2,7 @@ ; =============== S U B R O U T I N E ======================================= -ProcessTriggerAction: ; DATA XREF: sub_178FE+1256t +ProcessTriggerAction: ; DATA XREF: OnTick+1256t ; FUNCTION CHUNK AT 00010F4C SIZE 00000068 BYTES diff --git a/code/scripthandling/triggeractions.asm b/code/scripthandling/triggeractions.asm index fb87287..cbc3735 100644 --- a/code/scripthandling/triggeractions.asm +++ b/code/scripthandling/triggeractions.asm @@ -36,7 +36,7 @@ loc_10F82: ; CODE XREF: ProcessTriggerAction+262j bclr #$07,$000001A0(a0) bclr #$07,$00000220(a0) bclr #$07,$000002A0(a0) - btst #$06,(g_Vars+$A).l + btst #$06,(g_AdditionalFlags+$A).l bne.w loc_10F4C trap #$00 ; Trap00Handler ; END OF FUNCTION CHUNK FOR ProcessTriggerAction @@ -254,9 +254,10 @@ loc_11256: ; CODE XREF: ROM:00010D4Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.w loc_10F52 bra.w loc_10F4C ; --------------------------------------------------------------------------- @@ -296,9 +297,10 @@ loc_112CA: ; CODE XREF: ROM:00010D5Cj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage bne.w loc_10F52 bra.w loc_10F4C ; --------------------------------------------------------------------------- @@ -610,9 +612,10 @@ loc_116A4: ; CODE XREF: ROM:00010DD4j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.w #$2730,d0 beq.w loc_10F52 bra.w loc_10F4C @@ -631,9 +634,10 @@ loc_116C6: ; CODE XREF: ROM:00010DDCj ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.w #$0700,d0 beq.w loc_10F52 bra.w loc_10F4C @@ -954,9 +958,10 @@ loc_11ADA: ; CODE XREF: ROM:00010E68j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage andi.b #$3F,d0 beq.w loc_10F52 bra.w loc_10F4C @@ -1107,7 +1112,7 @@ loc_11C86: ; CODE XREF: ROM:00010EA8j ; --------------------------------------------------------------------------- loc_11C96: ; CODE XREF: ROM:00010EACj - btst #$04,(g_Vars+$A).l + btst #$04,(g_AdditionalFlags+$A).l bne.w loc_10F52 move.b (Player_X).l,d0 subi.b #$22,d0 @@ -1279,9 +1284,9 @@ loc_11EB0: ; CODE XREF: ROM:00011E7Ej ; --------------------------------------------------------------------------- loc_11EBC: ; CODE XREF: ROM:00010EE4j - btst #$05,(g_Vars+9).l + btst #$05,(g_AdditionalFlags+9).l beq.w loc_10F52 - btst #$01,(g_Vars+$B).l + btst #$01,(g_AdditionalFlags+$B).l bne.w loc_10F52 cmpi.b #$14,(Player_X).l bne.w loc_10F52 diff --git a/code/sprites/spritebehaviourjumptable.asm b/code/sprites/spritebehaviourjumptable.asm index b8a37a1..ad8eba4 100644 --- a/code/sprites/spritebehaviourjumptable.asm +++ b/code/sprites/spritebehaviourjumptable.asm @@ -2,8 +2,8 @@ ; =============== S U B R O U T I N E ======================================= -sub_178FE: ; CODE XREF: sub_178C8+1Cp - ; DATA XREF: sub_1039Ct +OnTick: ; CODE XREF: sub_178C8+1Cp + ; DATA XREF: j_OnTickt ; FUNCTION CHUNK AT 00017ADE SIZE 00000062 BYTES ; FUNCTION CHUNK AT 00017ED4 SIZE 00000024 BYTES @@ -28,220 +28,220 @@ sub_178FE: ; CODE XREF: sub_178C8+1Cp bsr.w sub_191B4 bsr.w sub_19206 -loc_17906: ; CODE XREF: sub_178FE+1C0j - ; sub_178FE+1C8j ... - move.w Unk2A(a5),d0 +ProcessNextCmd: ; CODE XREF: OnTick+1C0j + ; OnTick+1C8j ... + move.w BehavParam(a5),d0 beq.w locret_17AB8 andi.w #$00FF,d0 lsl.w #$02,d0 jmp loc_17918(pc,d0.w) ; --------------------------------------------------------------------------- -loc_17918: ; CODE XREF: sub_178FE+16j - bra.w loc_17ADE +loc_17918: ; CODE XREF: OnTick+16j + bra.w EB_Pause ; --------------------------------------------------------------------------- - bra.w loc_17B12 + bra.w EB_MoveTimed ; --------------------------------------------------------------------------- - bra.w sub_17F26 + bra.w EB_TurnCW ; --------------------------------------------------------------------------- - bra.w sub_17F2A + bra.w EB_TurnCCW ; --------------------------------------------------------------------------- - bra.w sub_17F2E + bra.w EB_TurnNE ; --------------------------------------------------------------------------- - bra.w sub_17F32 + bra.w EB_TurnSE ; --------------------------------------------------------------------------- - bra.w sub_17F36 + bra.w EB_TurnSW ; --------------------------------------------------------------------------- - bra.w sub_17F3A + bra.w EB_TurnNW ; --------------------------------------------------------------------------- - bra.w sub_17F3E + bra.w EB_SetDirCW ; --------------------------------------------------------------------------- - bra.w sub_17F5A + bra.w EB_SetDirCCW ; --------------------------------------------------------------------------- - bra.w sub_17F76 + bra.w EB_SetDirNE ; --------------------------------------------------------------------------- - bra.w sub_17F82 + bra.w EB_SetDirSE ; --------------------------------------------------------------------------- - bra.w sub_17F94 + bra.w EB_SetDirSW ; --------------------------------------------------------------------------- - bra.w sub_17FA6 + bra.w EB_SetDirNW ; --------------------------------------------------------------------------- - bra.w loc_17FF6 + bra.w EB_MakeVisible ; --------------------------------------------------------------------------- - bra.w loc_18000 + bra.w EB_MakeInvisible ; --------------------------------------------------------------------------- - bra.w loc_18044 + bra.w EB_B10 ; --------------------------------------------------------------------------- - bra.w loc_17B20 + bra.w EB_MoveRelative ; --------------------------------------------------------------------------- - bra.w loc_1821A + bra.w EB_GoToInstruction ; --------------------------------------------------------------------------- - bra.w loc_1820E + bra.w EB_MoveUntilCollision ; --------------------------------------------------------------------------- - bra.w sub_17FB8 + bra.w EB_TurnRandom ; --------------------------------------------------------------------------- - bra.w sub_17FBE + bra.w EB_SetDirRandom ; --------------------------------------------------------------------------- - bra.w loc_181A8 + bra.w EB_B16 ; --------------------------------------------------------------------------- - bra.w loc_17FB2 + bra.w EB_TurnRandomImmediate ; --------------------------------------------------------------------------- - bra.w loc_17ED4 + bra.w EB_TurnCWImmediate ; --------------------------------------------------------------------------- - bra.w loc_17EDA + bra.w EB_TurnCCWImmediate ; --------------------------------------------------------------------------- - bra.w loc_17EE0 + bra.w EB_TurnNEImmediate ; --------------------------------------------------------------------------- - bra.w loc_17EE6 + bra.w EB_TurnSEImmediate ; --------------------------------------------------------------------------- - bra.w loc_17EEC + bra.w EB_TurnSWImmediate ; --------------------------------------------------------------------------- - bra.w loc_17EF2 + bra.w EB_TurnNWImmediate ; --------------------------------------------------------------------------- - bra.w loc_1822A + bra.w EB_Freeze ; --------------------------------------------------------------------------- - bra.w loc_18234 + bra.w EB_SetSpeed1 ; --------------------------------------------------------------------------- - bra.w loc_1823E + bra.w EB_SetSpeed2 ; --------------------------------------------------------------------------- - bra.w loc_18248 + bra.w EB_SetSpeed3 ; --------------------------------------------------------------------------- - bra.w loc_18252 + bra.w EB_SetSpeed4 ; --------------------------------------------------------------------------- - bra.w sub_17FE2 + bra.w EB_Turn180 ; --------------------------------------------------------------------------- - bra.w sub_17FEA + bra.w EB_SetDir180 ; --------------------------------------------------------------------------- - bra.w loc_17FDC + bra.w EB_SetDir180Immediate ; --------------------------------------------------------------------------- - bra.w loc_18350 + bra.w EB_FollowPlayerWithJump ; --------------------------------------------------------------------------- - bra.w loc_18756 + bra.w EB_Jump ; --------------------------------------------------------------------------- - bra.w loc_18760 + bra.w EB_EnableRotation ; --------------------------------------------------------------------------- - bra.w loc_1876A + bra.w EB_DisableRotation ; --------------------------------------------------------------------------- - bra.w loc_17AEA + bra.w EB_MoveRandomTime ; --------------------------------------------------------------------------- - bra.w loc_18D72 + bra.w EB_LoadSpecialAI ; --------------------------------------------------------------------------- - bra.w loc_18340 + bra.w EB_FollowPlayerNoJump ; --------------------------------------------------------------------------- - bra.w loc_18774 + bra.w EB_B2D ; --------------------------------------------------------------------------- - bra.w loc_188C4 + bra.w EB_ShopItem ; --------------------------------------------------------------------------- - bra.w loc_18044 + bra.w EB_B10 ; --------------------------------------------------------------------------- - bra.w loc_18976 + bra.w MoveUpRelative ; --------------------------------------------------------------------------- - bra.w loc_189C8 + bra.w MoveDownRelative ; --------------------------------------------------------------------------- - bra.w loc_181A8 + bra.w EB_B16 ; --------------------------------------------------------------------------- - bra.w loc_1825C + bra.w EB_B33 ; --------------------------------------------------------------------------- - bra.w loc_18B24 + bra.w EB_PlaybackInput ; --------------------------------------------------------------------------- - bra.w loc_18B32 + bra.w EB_ResetPlayback ; --------------------------------------------------------------------------- - bra.w loc_18B50 + bra.w EB_WaitForCondition ; --------------------------------------------------------------------------- - bra.w loc_18B3C + bra.w EB_Pause4s ; --------------------------------------------------------------------------- - bra.w loc_18B62 + bra.w EB_EnableGravity ; --------------------------------------------------------------------------- - bra.w loc_18B6C + bra.w EB_DisableGravity ; --------------------------------------------------------------------------- - bra.w loc_189BE + bra.w EB_MoveUpTimed ; --------------------------------------------------------------------------- - bra.w loc_18A58 + bra.w EB_MoveDownTimed ; --------------------------------------------------------------------------- - bra.w loc_18A68 + bra.w EB_MoveUpAbsolute ; --------------------------------------------------------------------------- - bra.w loc_18A8E + bra.w EB_MoveDownAbsolute ; --------------------------------------------------------------------------- bra.w j_j_HideSprite ; --------------------------------------------------------------------------- - bra.w loc_18AB4 + bra.w EB_NudgeUp ; --------------------------------------------------------------------------- - bra.w loc_18AD0 + bra.w EB_MoveDownUntilCollision ; --------------------------------------------------------------------------- - bra.w loc_18B76 + bra.w EB_SetFlag ; --------------------------------------------------------------------------- - bra.w loc_18BA4 + bra.w EB_WaitForFlagSet ; --------------------------------------------------------------------------- - bra.w loc_18B9C + bra.w EB_ClearFlag ; --------------------------------------------------------------------------- - bra.w loc_18BB8 + bra.w EB_Hide ; --------------------------------------------------------------------------- - bra.w loc_18BC2 + bra.w EB_ShowWhenCollisionClear ; --------------------------------------------------------------------------- - bra.w loc_18BAE + bra.w EB_WaitForFlagClear ; --------------------------------------------------------------------------- - bra.w loc_18BDE + bra.w EB_B47 ; --------------------------------------------------------------------------- - bra.w loc_18BF8 + bra.w EB_SetEntityAction ; --------------------------------------------------------------------------- - bra.w loc_18C1C + bra.w EB_ActivateSwitch ; --------------------------------------------------------------------------- - bra.w loc_18C2C + bra.w EB_ResetSwitch ; --------------------------------------------------------------------------- - bra.w loc_18C38 + bra.w EB_MoveToXYPosImmediate ; --------------------------------------------------------------------------- - bra.w loc_18C58 + bra.w EB_MoveToZPosImmediate ; --------------------------------------------------------------------------- - bra.w loc_18C6C + bra.w EB_ResetToInitParams ; --------------------------------------------------------------------------- - bra.w loc_18CFC + bra.w EB_TriggerCutscene ; --------------------------------------------------------------------------- - bra.w loc_17B30 + bra.w EB_MoveNoClip ; --------------------------------------------------------------------------- - bra.w loc_18D12 + bra.w EB_RotatePlayer ; --------------------------------------------------------------------------- - bra.w loc_18D46 + bra.w EB_MakeHostile ; --------------------------------------------------------------------------- - bra.w loc_18D5C + bra.w EB_MakeNonHostile ; --------------------------------------------------------------------------- - bra.w loc_18D78 + bra.w EB_EnableWalkBackwards ; --------------------------------------------------------------------------- - bra.w loc_18D82 + bra.w EB_DisableWalkBackwards ; --------------------------------------------------------------------------- - bra.w loc_18D8C + bra.w EB_SpecialAnimation ; --------------------------------------------------------------------------- - bra.w loc_18E04 + bra.w EB_MoveUpToInitPos ; --------------------------------------------------------------------------- - bra.w loc_18E38 + bra.w EB_TriggerTileSwap ; --------------------------------------------------------------------------- - bra.w loc_17F04 + bra.w EB_UpdateSpriteFacing ; --------------------------------------------------------------------------- - bra.w loc_18E56 + bra.w EB_PrintText ; --------------------------------------------------------------------------- - bra.w loc_18E7A + bra.w EB_B5A ; --------------------------------------------------------------------------- - bra.w loc_182A6 + bra.w EB_SetTargetPosition ; --------------------------------------------------------------------------- - bra.w loc_182CC + bra.w EB_MoveToTargetPosition ; --------------------------------------------------------------------------- - bra.w loc_18FD4 + bra.w EB_RepeatBegin ; --------------------------------------------------------------------------- - bra.w loc_18FEC + bra.w EB_B5E ; --------------------------------------------------------------------------- - bra.w loc_19004 + bra.w EB_DecayFlash ; --------------------------------------------------------------------------- - bra.w loc_1904E + bra.w EB_FlashSpinAppear ; --------------------------------------------------------------------------- - bra.w loc_190A0 + bra.w EB_FlashSpinDisappear ; --------------------------------------------------------------------------- - bra.w loc_190C8 + bra.w EB_PlaySound ; --------------------------------------------------------------------------- - bra.w loc_18EDE + bra.w EB_B63 ; --------------------------------------------------------------------------- - bra.w loc_18CF2 + bra.w EB_StartHiCutscene ; --------------------------------------------------------------------------- - bra.w loc_18F12 + bra.w EB_B65 ; --------------------------------------------------------------------------- - bra.w loc_18F70 + bra.w EB_B66 ; --------------------------------------------------------------------------- - bra.w loc_18F9E + bra.w EB_B67 diff --git a/code/sprites/spritebehaviours.asm b/code/sprites/spritebehaviours.asm index 3732059..4e4f2e3 100644 --- a/code/sprites/spritebehaviours.asm +++ b/code/sprites/spritebehaviours.asm @@ -1,104 +1,104 @@ ; --------------------------------------------------------------------------- -locret_17AB8: ; CODE XREF: sub_178FE+Cj +locret_17AB8: ; CODE XREF: OnTick+Cj rts ; --------------------------------------------------------------------------- -loc_17ABA: ; CODE XREF: sub_178FE+608j - ; sub_178FE+6FEj ... +ProcessNextCmdImmediately_1: ; CODE XREF: OnTick+608j + ; OnTick+6FEj ... moveq #$00000001,d0 - bsr.s sub_17ACA - bra.w loc_17906 + bsr.s LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17AC2: ; CODE XREF: sub_178FE+21Cj - ; sub_178FE:loc_18356j ... +ProcessNextCmdImmediately_2: ; CODE XREF: OnTick+21Cj + ; OnTick:loc_18356j ... moveq #$00000002,d0 - bsr.s sub_17ACA - bra.w loc_17906 -; End of function sub_178FE + bsr.s LoadNextCmd + bra.w ProcessNextCmd +; End of function OnTick ; =============== S U B R O U T I N E ======================================= -sub_17ACA: ; CODE XREF: sub_178FE+1BEp - ; sub_178FE+1C6p ... +LoadNextCmd: ; CODE XREF: OnTick+1BEp + ; OnTick+1C6p ... movea.l BehaviourLUTPtr(a5),a6 adda.l d0,a6 move.l a6,BehaviourLUTPtr(a5) - move.b (a6)+,Unk2B(a5) - move.b (a6),Unk2A(a5) + move.b (a6)+,BehavCmd(a5) + move.b (a6),BehavParam(a5) rts -; End of function sub_17ACA +; End of function LoadNextCmd ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17ADE: ; CODE XREF: sub_178FE:loc_17918j +EB_Pause: ; CODE XREF: OnTick:loc_17918j subq.b #$01,$0000002A(a5) bne.s locret_17AE8 moveq #$00000002,d0 - bsr.s sub_17ACA + bsr.s LoadNextCmd -locret_17AE8: ; CODE XREF: sub_178FE+1E4j +locret_17AE8: ; CODE XREF: OnTick+1E4j rts ; --------------------------------------------------------------------------- -loc_17AEA: ; CODE XREF: sub_178FE+C2j +EB_MoveRandomTime: ; CODE XREF: OnTick+C2j clr.w d6 - move.b Unk2A(a5),d6 + move.b BehavParam(a5),d6 jsr (j_GenerateRandomNumber).l movea.l BehaviourLUTPtr(a5),a6 clr.w d6 - move.b SubX(a6),d6 + move.b $00000002(a6),d6 sub.w d7,d6 addq.b #$01,d6 - move.b d6,Unk2A(a5) + move.b d6,BehavParam(a5) addq.l #$01,BehaviourLUTPtr(a5) - move.b #$01,Unk2B(a5) + move.b #$01,BehavCmd(a5) -loc_17B12: ; CODE XREF: sub_178FE+1Ej +EB_MoveTimed: ; CODE XREF: OnTick+1Ej bsr.s sub_17B50 - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_17B1E - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_17B1E: ; CODE XREF: sub_178FE+21Aj +locret_17B1E: ; CODE XREF: OnTick+21Aj rts ; --------------------------------------------------------------------------- -loc_17B20: ; CODE XREF: sub_178FE+5Ej +EB_MoveRelative: ; CODE XREF: OnTick+5Ej bsr.s sub_17B50 bcs.s locret_17B2E - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_17B2E moveq #$00000002,d0 - bsr.s sub_17ACA + bsr.s LoadNextCmd -locret_17B2E: ; CODE XREF: sub_178FE+224j - ; sub_178FE+22Aj +locret_17B2E: ; CODE XREF: OnTick+224j + ; OnTick+22Aj rts ; --------------------------------------------------------------------------- -loc_17B30: ; CODE XREF: sub_178FE+156j +EB_MoveNoClip: ; CODE XREF: OnTick+156j bsr.s sub_17B40 bcs.s locret_17B3E - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_17B3E moveq #$00000002,d0 - bsr.s sub_17ACA + bsr.s LoadNextCmd -locret_17B3E: ; CODE XREF: sub_178FE+234j - ; sub_178FE+23Aj +locret_17B3E: ; CODE XREF: OnTick+234j + ; OnTick+23Aj rts -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_17B40: ; CODE XREF: sub_178FE:loc_17B30p +sub_17B40: ; CODE XREF: OnTick:EB_MoveNoClipp bset #$06,Unk48(a5) bsr.s loc_17B56 bclr #$06,Unk48(a5) @@ -109,8 +109,8 @@ sub_17B40: ; CODE XREF: sub_178FE:loc_17B30p ; =============== S U B R O U T I N E ======================================= -sub_17B50: ; CODE XREF: sub_178FE:loc_17B12p - ; sub_178FE:loc_17B20p ... +sub_17B50: ; CODE XREF: OnTick:EB_MoveTimedp + ; OnTick:EB_MoveRelativep ... bclr #$06,Unk48(a5) loc_17B56: ; CODE XREF: sub_17B40+6p @@ -187,7 +187,7 @@ loc_17BDA: ; CODE XREF: sub_1914C-15C2j move.w (a6),GroundHeight(a5) loc_17C14: ; CODE XREF: sub_1914C-154Cj - btst #$03,Action(a5) + btst #$03,QueuedAction(a5) bne.s loc_17C28 bset #$00,Action1(a5) bset #$00,Unk6D(a5) @@ -242,7 +242,7 @@ loc_17C82: ; CODE XREF: sub_17C2C+Cj loc_17C94: ; CODE XREF: sub_17C2C+4j cmpa.l #Player_X,a0 bne.s loc_17C7A - cmpi.b #$5C,Unk2B(a5) + cmpi.b #$5C,BehavCmd(a5) bne.s loc_17C7A loc_17CA4: ; CODE XREF: sub_17C2C+66j @@ -469,44 +469,44 @@ loc_17ED0: ; CODE XREF: sub_1914C-128Aj rts ; END OF FUNCTION CHUNK FOR sub_1914C ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17ED4: ; CODE XREF: sub_178FE+7Aj - bsr.s sub_17F26 - bra.w loc_17906 +EB_TurnCWImmediate: ; CODE XREF: OnTick+7Aj + bsr.s EB_TurnCW + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17EDA: ; CODE XREF: sub_178FE+7Ej - bsr.s sub_17F2A - bra.w loc_17906 +EB_TurnCCWImmediate: ; CODE XREF: OnTick+7Ej + bsr.s EB_TurnCCW + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17EE0: ; CODE XREF: sub_178FE+82j - bsr.s sub_17F2E - bra.w loc_17906 +EB_TurnNEImmediate: ; CODE XREF: OnTick+82j + bsr.s EB_TurnNE + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17EE6: ; CODE XREF: sub_178FE+86j - bsr.s sub_17F32 - bra.w loc_17906 +EB_TurnSEImmediate: ; CODE XREF: OnTick+86j + bsr.s EB_TurnSE + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17EEC: ; CODE XREF: sub_178FE+8Aj - bsr.s sub_17F36 - bra.w loc_17906 +EB_TurnSWImmediate: ; CODE XREF: OnTick+8Aj + bsr.s EB_TurnSW + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_17EF2: ; CODE XREF: sub_178FE+8Ej - bsr.s sub_17F3A - bra.w loc_17906 -; END OF FUNCTION CHUNK FOR sub_178FE +EB_TurnNWImmediate: ; CODE XREF: OnTick+8Ej + bsr.s EB_TurnNW + bra.w ProcessNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_17EF8: ; CODE XREF: sub_17F26+2j - ; sub_17F2A+2j ... - btst #$00,$0000000C(a5) +sub_17EF8: ; CODE XREF: EB_TurnCW+2j + ; EB_TurnCCW+2j ... + btst #$00,Flags2(a5) bne.s locret_17F02 bsr.s sub_17F0A @@ -515,18 +515,18 @@ locret_17F02: ; CODE XREF: sub_17EF8+6j ; End of function sub_17EF8 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17F04: ; CODE XREF: sub_178FE+17Aj +EB_UpdateSpriteFacing: ; CODE XREF: OnTick+17Aj bsr.s sub_17F0A - bra.w loc_17ABA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w ProcessNextCmdImmediately_1 +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= sub_17F0A: ; CODE XREF: sub_17EF8+8p - ; sub_178FE:loc_17F04p ... + ; OnTick:EB_UpdateSpriteFacingp ... move.b $00000004(a5),d1 andi.b #$C0,d1 movea.l a5,a1 @@ -540,225 +540,225 @@ sub_17F0A: ; CODE XREF: sub_17EF8+8p ; =============== S U B R O U T I N E ======================================= -sub_17F26: ; CODE XREF: sub_178FE+22j - ; sub_178FE:loc_17ED4p - bsr.s sub_17F3E +EB_TurnCW: ; CODE XREF: OnTick+22j + ; OnTick:EB_TurnCWImmediatep + bsr.s EB_SetDirCW bra.s sub_17EF8 -; End of function sub_17F26 +; End of function EB_TurnCW ; =============== S U B R O U T I N E ======================================= -sub_17F2A: ; CODE XREF: sub_178FE+26j - ; sub_178FE:loc_17EDAp - bsr.s sub_17F5A +EB_TurnCCW: ; CODE XREF: OnTick+26j + ; OnTick:EB_TurnCCWImmediatep + bsr.s EB_SetDirCCW bra.s sub_17EF8 -; End of function sub_17F2A +; End of function EB_TurnCCW ; =============== S U B R O U T I N E ======================================= -sub_17F2E: ; CODE XREF: sub_178FE+2Aj - ; sub_178FE:loc_17EE0p ... - bsr.s sub_17F76 +EB_TurnNE: ; CODE XREF: OnTick+2Aj + ; OnTick:EB_TurnNEImmediatep ... + bsr.s EB_SetDirNE bra.s sub_17EF8 -; End of function sub_17F2E +; End of function EB_TurnNE ; =============== S U B R O U T I N E ======================================= -sub_17F32: ; CODE XREF: sub_178FE+2Ej - ; sub_178FE:loc_17EE6p - bsr.s sub_17F82 +EB_TurnSE: ; CODE XREF: OnTick+2Ej + ; OnTick:EB_TurnSEImmediatep + bsr.s EB_SetDirSE bra.s sub_17EF8 -; End of function sub_17F32 +; End of function EB_TurnSE ; =============== S U B R O U T I N E ======================================= -sub_17F36: ; CODE XREF: sub_178FE+32j - ; sub_178FE:loc_17EECp ... - bsr.s sub_17F94 +EB_TurnSW: ; CODE XREF: OnTick+32j + ; OnTick:EB_TurnSWImmediatep ... + bsr.s EB_SetDirSW bra.s sub_17EF8 -; End of function sub_17F36 +; End of function EB_TurnSW ; =============== S U B R O U T I N E ======================================= -sub_17F3A: ; CODE XREF: sub_178FE+36j - ; sub_178FE:loc_17EF2p - bsr.s sub_17FA6 +EB_TurnNW: ; CODE XREF: OnTick+36j + ; OnTick:EB_TurnNWImmediatep + bsr.s EB_SetDirNW bra.s sub_17EF8 -; End of function sub_17F3A +; End of function EB_TurnNW ; =============== S U B R O U T I N E ======================================= -sub_17F3E: ; CODE XREF: sub_178FE+3Aj - ; sub_17F26p +EB_SetDirCW: ; CODE XREF: OnTick+3Aj + ; EB_TurnCWp move.b $00000004(a5),d0 andi.b #$3F,$00000004(a5) addi.b #$40,d0 andi.b #$C0,d0 or.b d0,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17F3E + bra.w LoadNextCmd +; End of function EB_SetDirCW ; =============== S U B R O U T I N E ======================================= -sub_17F5A: ; CODE XREF: sub_178FE+3Ej - ; sub_17F2Ap +EB_SetDirCCW: ; CODE XREF: OnTick+3Ej + ; EB_TurnCCWp move.b $00000004(a5),d0 andi.b #$3F,$00000004(a5) subi.b #$40,d0 andi.b #$C0,d0 or.b d0,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17F5A + bra.w LoadNextCmd +; End of function EB_SetDirCCW ; =============== S U B R O U T I N E ======================================= -sub_17F76: ; CODE XREF: sub_178FE+42j - ; sub_17F2Ep +EB_SetDirNE: ; CODE XREF: OnTick+42j + ; EB_TurnNEp andi.b #$3F,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17F76 + bra.w LoadNextCmd +; End of function EB_SetDirNE ; =============== S U B R O U T I N E ======================================= -sub_17F82: ; CODE XREF: sub_178FE+46j - ; sub_17F32p +EB_SetDirSE: ; CODE XREF: OnTick+46j + ; EB_TurnSEp andi.b #$3F,$00000004(a5) ori.b #$40,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17F82 + bra.w LoadNextCmd +; End of function EB_SetDirSE ; =============== S U B R O U T I N E ======================================= -sub_17F94: ; CODE XREF: sub_178FE+4Aj - ; sub_17F36p +EB_SetDirSW: ; CODE XREF: OnTick+4Aj + ; EB_TurnSWp andi.b #$3F,$00000004(a5) ori.b #$80,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17F94 + bra.w LoadNextCmd +; End of function EB_SetDirSW ; =============== S U B R O U T I N E ======================================= -sub_17FA6: ; CODE XREF: sub_178FE+4Ej - ; sub_17F3Ap +EB_SetDirNW: ; CODE XREF: OnTick+4Ej + ; EB_TurnNWp ori.b #$C0,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17FA6 + bra.w LoadNextCmd +; End of function EB_SetDirNW ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17FB2: ; CODE XREF: sub_178FE+76j - bsr.s sub_17FB8 - bra.w loc_17906 -; END OF FUNCTION CHUNK FOR sub_178FE +EB_TurnRandomImmediate: ; CODE XREF: OnTick+76j + bsr.s EB_TurnRandom + bra.w ProcessNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_17FB8: ; CODE XREF: sub_178FE+6Aj - ; sub_178FE:loc_17FB2p - bsr.s sub_17FBE +EB_TurnRandom: ; CODE XREF: OnTick+6Aj + ; OnTick:EB_TurnRandomImmediatep + bsr.s EB_SetDirRandom bra.w sub_17EF8 -; End of function sub_17FB8 +; End of function EB_TurnRandom ; =============== S U B R O U T I N E ======================================= -sub_17FBE: ; CODE XREF: sub_178FE+6Ej - ; sub_17FB8p +EB_SetDirRandom: ; CODE XREF: OnTick+6Ej + ; EB_TurnRandomp move.w #$0100,d6 jsr (j_GenerateRandomNumber).l andi.b #$C0,d7 andi.b #$3F,$00000004(a5) or.b d7,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17FBE + bra.w LoadNextCmd +; End of function EB_SetDirRandom ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17FDC: ; CODE XREF: sub_178FE+AEj - bsr.s sub_17FE2 - bra.w loc_17906 -; END OF FUNCTION CHUNK FOR sub_178FE +EB_SetDir180Immediate: ; CODE XREF: OnTick+AEj + bsr.s EB_Turn180 + bra.w ProcessNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_17FE2: ; CODE XREF: sub_178FE+A6j - ; sub_178FE:loc_17FDCp - bsr.s sub_17FEA +EB_Turn180: ; CODE XREF: OnTick+A6j + ; OnTick:EB_SetDir180Immediatep + bsr.s EB_SetDir180 bsr.w sub_17EF8 rts -; End of function sub_17FE2 +; End of function EB_Turn180 ; =============== S U B R O U T I N E ======================================= -sub_17FEA: ; CODE XREF: sub_178FE+AAj - ; sub_17FE2p +EB_SetDir180: ; CODE XREF: OnTick+AAj + ; EB_Turn180p eori.b #$80,$00000004(a5) moveq #$00000001,d0 - bra.w sub_17ACA -; End of function sub_17FEA + bra.w LoadNextCmd +; End of function EB_SetDir180 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_17FF6: ; CODE XREF: sub_178FE+52j +EB_MakeVisible: ; CODE XREF: OnTick+52j andi.b #$BF,$0000000C(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18000: ; CODE XREF: sub_178FE+56j +EB_MakeInvisible: ; CODE XREF: OnTick+56j ori.b #$40,$0000000C(a5) - bra.w loc_17ABA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w ProcessNextCmdImmediately_1 +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- -SpeedTable: dc.b $08,$04,$04,$04,$04,$04,$04,$04,$02,$02 ; DATA XREF: sub_178FE+786r +SpeedTable: dc.b $08,$04,$04,$04,$04,$04,$04,$04,$02,$02 ; DATA XREF: OnTick+786r dc.b $02,$02,$02,$02,$02,$02,$02,$02,$01,$01 dc.b $01,$01,$01,$08,$08,$08,$08,$04,$04,$04 dc.b $04,$04,$04,$04,$04,$04,$04,$04,$04,$04 dc.b $02,$02,$02,$02,$02,$02,$02,$02,$02,$02 dc.b $02,$02,$02,$01,$01,$01,$01,$FF ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18044: ; CODE XREF: sub_178FE+5Aj - ; sub_178FE+D6j - move.b $0000002A(a5),d0 - addq.b #$01,$0000002A(a5) +EB_B10: ; CODE XREF: OnTick+5Aj + ; OnTick+D6j + move.b BehavParam(a5),d0 + addq.b #$01,BehavParam(a5) cmpi.b #$03,d0 bcs.s loc_1805E cmpi.b #$17,d0 @@ -766,35 +766,36 @@ loc_18044: ; CODE XREF: sub_178FE+5Aj cmpi.b #$1A,d0 bcc.s loc_18082 -loc_1805E: ; CODE XREF: sub_178FE+752j +loc_1805E: ; CODE XREF: OnTick+752j btst #$05,(Player_Action+1).l ; Bit0 - Walk NE (-Y) ; Bit1 - Walk SW (+Y) ; Bit2 - Walk NW (-X) ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb + ; Bit13 - Receive Damage beq.s loc_18082 move.w (Player_HitBoxZEnd).l,d1 addq.w #$01,d1 - move.w d1,$00000012(a5) + move.w d1,Z(a5) clr.w d7 - move.b $00000005(a5),d7 + move.b Height(a5),d7 add.w d7,d1 subq.w #$01,d1 - move.w d1,$00000054(a5) + move.w d1,HitBoxZEnd(a5) -loc_18082: ; CODE XREF: sub_178FE+758j - ; sub_178FE+75Ej ... +loc_18082: ; CODE XREF: OnTick+758j + ; OnTick+75Ej ... ext.w d0 move.b SpeedTable(pc,d0.w),d0 move.b d0,Speed(a5) bsr.w sub_17B50 bcc.w loc_18128 trap #$00 ; Trap00Handler -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- dc.w SND_SpeakerPitch1 ; --------------------------------------------------------------------------- @@ -826,7 +827,7 @@ loc_180DC: ; CODE XREF: ROM:000180D4j move.w d0,$00000034(a5) jsr (j_LoadSpriteBehaviour).l move.w $0000007C(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,$0000003E(a5) bhi.s loc_180FC bsr.w sub_16134 @@ -848,16 +849,16 @@ loc_18108: ; CODE XREF: ROM:0001809Aj cmpi.b #SpriteB_Vase,SpriteGraphic(a5) bne.s loc_18122 bclr #$05,Flags2(a5) - move.w #$0055,Unk2A(a5) + move.w #$0055,BehavParam(a5) clr.b Speed(a5) rts ; --------------------------------------------------------------------------- loc_18122: ; CODE XREF: ROM:0001810Ej eori.b #$80,$00000004(a5) -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18128: ; CODE XREF: sub_178FE+792j +loc_18128: ; CODE XREF: OnTick+792j cmpi.b #$20,$0000002A(a5) bcc.s loc_1819C cmpi.b #$17,$0000002A(a5) @@ -865,15 +866,15 @@ loc_18128: ; CODE XREF: sub_178FE+792j cmpi.b #$09,$0000002A(a5) bcc.s loc_1819C -loc_18140: ; CODE XREF: sub_178FE+838j - ; sub_178FE+8A8j +loc_18140: ; CODE XREF: OnTick+838j + ; OnTick+8A8j cmpi.b #$39,$0000002A(a5) bcc.s loc_18150 cmpi.b #$17,$0000002A(a5) bne.s locret_1819A -loc_18150: ; CODE XREF: sub_178FE+848j - ; sub_178FE+8A6j +loc_18150: ; CODE XREF: OnTick+848j + ; OnTick+8A6j cmpi.b #$10,$00000069(a5) beq.s loc_1818A cmpi.b #$16,$00000069(a5) @@ -889,32 +890,32 @@ loc_18150: ; CODE XREF: sub_178FE+848j rts ; --------------------------------------------------------------------------- -loc_1818A: ; CODE XREF: sub_178FE+858j - ; sub_178FE+860j ... +loc_1818A: ; CODE XREF: OnTick+858j + ; OnTick+860j ... clr.w $0000002A(a5) bra.s loc_18196 ; --------------------------------------------------------------------------- -loc_18190: ; CODE XREF: sub_178FE+868j +loc_18190: ; CODE XREF: OnTick+868j move.w #$002E,$0000002A(a5) -loc_18196: ; CODE XREF: sub_178FE+890j +loc_18196: ; CODE XREF: OnTick+890j clr.b $00000009(a5) -locret_1819A: ; CODE XREF: sub_178FE+850j +locret_1819A: ; CODE XREF: OnTick+850j rts ; --------------------------------------------------------------------------- -loc_1819C: ; CODE XREF: sub_178FE+830j - ; sub_178FE+840j +loc_1819C: ; CODE XREF: OnTick+830j + ; OnTick+840j move.b $0000002F(a5),d0 andi.b #$30,d0 beq.s loc_18150 bra.s loc_18140 ; --------------------------------------------------------------------------- -loc_181A8: ; CODE XREF: sub_178FE+72j - ; sub_178FE+E2j +EB_B16: ; CODE XREF: OnTick+72j + ; OnTick+E2j move.b $0000002A(a5),d0 addq.b #$01,$0000002A(a5) tst.b d0 @@ -924,11 +925,11 @@ loc_181A8: ; CODE XREF: sub_178FE+72j andi.b #$30,d0 beq.s loc_181C6 -loc_181C0: ; CODE XREF: sub_178FE+8B4j +loc_181C0: ; CODE XREF: OnTick+8B4j bsr.w sub_17B50 bcc.s locret_1820C -loc_181C6: ; CODE XREF: sub_178FE+8C0j +loc_181C6: ; CODE XREF: OnTick+8C0j cmpi.b #$10,$00000069(a5) beq.s loc_18208 cmpi.b #$16,$00000069(a5) @@ -944,64 +945,64 @@ loc_181C6: ; CODE XREF: sub_178FE+8C0j rts ; --------------------------------------------------------------------------- -loc_18200: ; CODE XREF: sub_178FE+8E6j +loc_18200: ; CODE XREF: OnTick+8E6j move.w #$002E,$0000002A(a5) rts ; --------------------------------------------------------------------------- -loc_18208: ; CODE XREF: sub_178FE+8CEj - ; sub_178FE+8D6j ... +loc_18208: ; CODE XREF: OnTick+8CEj + ; OnTick+8D6j ... clr.w $0000002A(a5) -locret_1820C: ; CODE XREF: sub_178FE+8B6j - ; sub_178FE+8C6j +locret_1820C: ; CODE XREF: OnTick+8B6j + ; OnTick+8C6j rts ; --------------------------------------------------------------------------- -loc_1820E: ; CODE XREF: sub_178FE+66j +EB_MoveUntilCollision: ; CODE XREF: OnTick+66j bsr.w sub_17B50 bcc.s locret_18218 - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -locret_18218: ; CODE XREF: sub_178FE+914j +locret_18218: ; CODE XREF: OnTick+914j rts ; --------------------------------------------------------------------------- -loc_1821A: ; CODE XREF: sub_178FE+62j +EB_GoToInstruction: ; CODE XREF: OnTick+62j move.b $0000002A(a5),d0 ext.w d0 ext.l d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_1822A: ; CODE XREF: sub_178FE+92j +EB_Freeze: ; CODE XREF: OnTick+92j move.b #$00,$00000009(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18234: ; CODE XREF: sub_178FE+96j - move.b #$01,$00000009(a5) - bra.w loc_17ABA +EB_SetSpeed1: ; CODE XREF: OnTick+96j + move.b #$01,Speed(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_1823E: ; CODE XREF: sub_178FE+9Aj - move.b #$02,$00000009(a5) - bra.w loc_17ABA +EB_SetSpeed2: ; CODE XREF: OnTick+9Aj + move.b #$02,Speed(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18248: ; CODE XREF: sub_178FE+9Ej - move.b #$04,$00000009(a5) - bra.w loc_17ABA +EB_SetSpeed3: ; CODE XREF: OnTick+9Ej + move.b #$04,Speed(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18252: ; CODE XREF: sub_178FE+A2j - move.b #$08,$00000009(a5) - bra.w loc_17ABA +EB_SetSpeed4: ; CODE XREF: OnTick+A2j + move.b #$08,Speed(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_1825C: ; CODE XREF: sub_178FE+E6j +EB_B33: ; CODE XREF: OnTick+E6j subq.b #$01,$0000002A(a5) beq.w loc_18356 move.w $00000014(a5),d0 @@ -1014,16 +1015,16 @@ loc_1825C: ; CODE XREF: sub_178FE+E6j bra.s loc_18288 ; --------------------------------------------------------------------------- -loc_1827E: ; CODE XREF: sub_178FE+976j +loc_1827E: ; CODE XREF: OnTick+976j move.b #$40,d2 bra.s loc_18288 ; --------------------------------------------------------------------------- -loc_18284: ; CODE XREF: sub_178FE+974j +loc_18284: ; CODE XREF: OnTick+974j move.b #$FF,d2 -loc_18288: ; CODE XREF: sub_178FE+97Ej - ; sub_178FE+984j +loc_18288: ; CODE XREF: OnTick+97Ej + ; OnTick+984j sub.w (Player_CentreY).l,d1 beq.s loc_1829E bpl.s loc_18298 @@ -1032,35 +1033,35 @@ loc_18288: ; CODE XREF: sub_178FE+97Ej bra.s loc_182A2 ; --------------------------------------------------------------------------- -loc_18298: ; CODE XREF: sub_178FE+992j +loc_18298: ; CODE XREF: OnTick+992j move.b #$80,d3 bra.s loc_182A2 ; --------------------------------------------------------------------------- -loc_1829E: ; CODE XREF: sub_178FE+990j +loc_1829E: ; CODE XREF: OnTick+990j move.b #$FF,d3 -loc_182A2: ; CODE XREF: sub_178FE+998j - ; sub_178FE+99Ej +loc_182A2: ; CODE XREF: OnTick+998j + ; OnTick+99Ej bra.w loc_183C2 ; --------------------------------------------------------------------------- -loc_182A6: ; CODE XREF: sub_178FE+186j - movea.l $00000032(a5),a6 - move.b $00000001(a6),$0000005A(a5) - move.b $00000002(a6),$0000005B(a5) - move.b $00000003(a6),$0000005C(a5) - move.b $00000004(a6),$0000005D(a5) +EB_SetTargetPosition: ; CODE XREF: OnTick+186j + movea.l BehaviourLUTPtr(a5),a6 + move.b $00000001(a6),TargetX(a5) + move.b $00000002(a6),TargetY(a5) + move.b $00000003(a6),TargetSubX(a5) + move.b $00000004(a6),TargetSubY(a5) moveq #$00000005,d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_182CC: ; CODE XREF: sub_178FE+18Aj - move.w $0000005A(a5),d2 - move.w $0000005C(a5),d3 - move.w $00000014(a5),d0 - move.w $00000016(a5),d1 +EB_MoveToTargetPosition: ; CODE XREF: OnTick+18Aj + move.w TargetX(a5),d2 + move.w TargetSubX(a5),d3 + move.w CentreX(a5),d0 + move.w CentreY(a5),d1 andi.w #$FFFC,d0 andi.w #$FFFC,d1 andi.w #$FFFC,d2 @@ -1068,9 +1069,9 @@ loc_182CC: ; CODE XREF: sub_178FE+18Aj cmp.w d0,d2 bne.s loc_182F6 cmp.w d1,d3 - beq.w loc_17ABA + beq.w ProcessNextCmdImmediately_1 -loc_182F6: ; CODE XREF: sub_178FE+9F0j +loc_182F6: ; CODE XREF: OnTick+9F0j sub.w d2,d0 beq.s loc_1830A bpl.s loc_18304 @@ -1079,16 +1080,16 @@ loc_182F6: ; CODE XREF: sub_178FE+9F0j bra.s loc_1830E ; --------------------------------------------------------------------------- -loc_18304: ; CODE XREF: sub_178FE+9FCj +loc_18304: ; CODE XREF: OnTick+9FCj move.b #$C0,d2 bra.s loc_1830E ; --------------------------------------------------------------------------- -loc_1830A: ; CODE XREF: sub_178FE+9FAj +loc_1830A: ; CODE XREF: OnTick+9FAj move.b #$FF,d2 -loc_1830E: ; CODE XREF: sub_178FE+A04j - ; sub_178FE+A0Aj +loc_1830E: ; CODE XREF: OnTick+A04j + ; OnTick+A0Aj sub.w d3,d1 beq.s loc_18320 bpl.s loc_1831C @@ -1097,16 +1098,16 @@ loc_1830E: ; CODE XREF: sub_178FE+A04j bra.s loc_18324 ; --------------------------------------------------------------------------- -loc_1831C: ; CODE XREF: sub_178FE+A14j +loc_1831C: ; CODE XREF: OnTick+A14j clr.b d3 bra.s loc_18324 ; --------------------------------------------------------------------------- -loc_18320: ; CODE XREF: sub_178FE+A12j +loc_18320: ; CODE XREF: OnTick+A12j move.b #$FF,d3 -loc_18324: ; CODE XREF: sub_178FE+A1Cj - ; sub_178FE+A20j +loc_18324: ; CODE XREF: OnTick+A1Cj + ; OnTick+A20j move.b $00000004(a5),d4 andi.b #$C0,d4 beq.w loc_1858C @@ -1116,34 +1117,34 @@ loc_18324: ; CODE XREF: sub_178FE+A1Cj bra.w loc_183D8 ; --------------------------------------------------------------------------- -loc_18340: ; CODE XREF: sub_178FE+CAj - subq.b #$01,$0000002A(a5) +EB_FollowPlayerNoJump: ; CODE XREF: OnTick+CAj + subq.b #$01,BehavParam(a5) beq.s loc_18356 bsr.s sub_18360 - bclr #$07,$00000021(a5) + bclr #$07,JumpRate(a5) rts ; --------------------------------------------------------------------------- -loc_18350: ; CODE XREF: sub_178FE+B2j - subq.b #$01,$0000002A(a5) +EB_FollowPlayerWithJump: ; CODE XREF: OnTick+B2j + subq.b #$01,BehavParam(a5) bne.s sub_18360 -loc_18356: ; CODE XREF: sub_178FE+962j - ; sub_178FE+A46j - bra.w loc_17AC2 +loc_18356: ; CODE XREF: OnTick+962j + ; OnTick+A46j + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- loc_1835A: ; CODE XREF: sub_18360+12Aj ; sub_18360+2DEj moveq #$00000002,d0 - bra.w sub_17ACA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w LoadNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_18360: ; CODE XREF: sub_178FE+A48p - ; sub_178FE+A56j +sub_18360: ; CODE XREF: OnTick+A48p + ; OnTick+A56j move.w (Player_CentreX).l,d2 move.w (Player_CentreY).l,d3 move.w $00000014(a5),d0 @@ -1197,7 +1198,7 @@ loc_183B8: ; CODE XREF: sub_18360+52j beq.s loc_183C2 eori.b #$80,d3 -loc_183C2: ; CODE XREF: sub_178FE:loc_182A2j +loc_183C2: ; CODE XREF: OnTick:loc_182A2j ; sub_18360+46j ... move.b $00000004(a5),d4 andi.b #$C0,d4 @@ -1206,7 +1207,7 @@ loc_183C2: ; CODE XREF: sub_178FE:loc_182A2j bcs.s loc_183EA beq.w loc_1859E -loc_183D8: ; CODE XREF: sub_178FE+A3Ej +loc_183D8: ; CODE XREF: OnTick+A3Ej cmpi.b #$C0,d2 beq.s loc_183FC cmpi.b #$40,d2 @@ -1214,7 +1215,7 @@ loc_183D8: ; CODE XREF: sub_178FE+A3Ej bra.w loc_18486 ; --------------------------------------------------------------------------- -loc_183EA: ; CODE XREF: sub_178FE+A36j +loc_183EA: ; CODE XREF: OnTick+A36j ; sub_18360+72j cmpi.b #$40,d2 beq.s loc_183FC @@ -1360,7 +1361,7 @@ loc_18534: ; CODE XREF: sub_18360+1C6j bra.w sub_18748 ; --------------------------------------------------------------------------- -loc_1858C: ; CODE XREF: sub_178FE+A2Ej +loc_1858C: ; CODE XREF: OnTick+A2Ej ; sub_18360+6Aj cmpi.b #$00,d3 beq.s loc_185B0 @@ -1369,7 +1370,7 @@ loc_1858C: ; CODE XREF: sub_178FE+A2Ej bra.w loc_1863A ; --------------------------------------------------------------------------- -loc_1859E: ; CODE XREF: sub_178FE+A3Aj +loc_1859E: ; CODE XREF: OnTick+A3Aj ; sub_18360+74j cmpi.b #$80,d3 beq.s loc_185B0 @@ -1536,24 +1537,24 @@ sub_18748: ; CODE XREF: sub_18360:loc_183FCp ; End of function sub_18748 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18756: ; CODE XREF: sub_178FE+B6j - bset #$07,$00000021(a5) - bra.w loc_17ABA +EB_Jump: ; CODE XREF: OnTick+B6j + bset #$07,JumpRate(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18760: ; CODE XREF: sub_178FE+BAj - bclr #$00,$0000000C(a5) - bra.w loc_17ABA +EB_EnableRotation: ; CODE XREF: OnTick+BAj + bclr #$00,Flags2(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_1876A: ; CODE XREF: sub_178FE+BEj - bset #$00,$0000000C(a5) - bra.w loc_17ABA +EB_DisableRotation: ; CODE XREF: OnTick+BEj + bset #$00,Flags2(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18774: ; CODE XREF: sub_178FE+CEj +EB_B2D: ; CODE XREF: OnTick+CEj tst.b $0000000A(a5) bmi.w locret_188C2 move.w $00000014(a5),d0 @@ -1570,7 +1571,7 @@ loc_18774: ; CODE XREF: sub_178FE+CEj lea (Player_X).l,a0 moveq #$0000000F,d7 -loc_187AA: ; CODE XREF: sub_178FE+F7Aj +loc_187AA: ; CODE XREF: OnTick+F7Aj cmp.w $00000014(a0),d0 bhi.w loc_18872 cmp.w $00000014(a0),d2 @@ -1590,7 +1591,7 @@ loc_187AA: ; CODE XREF: sub_178FE+F7Aj cmpa.l #Player_X,a0 bne.w loc_18872 -loc_187F0: ; CODE XREF: sub_178FE+EE6j +loc_187F0: ; CODE XREF: OnTick+EE6j clr.w d0 move.b $00000036(a5),d0 bne.s loc_18850 @@ -1606,7 +1607,7 @@ loc_187F0: ; CODE XREF: sub_178FE+EE6j bne.s loc_18816 addq.b #$01,d1 -loc_18816: ; CODE XREF: sub_178FE+F14j +loc_18816: ; CODE XREF: OnTick+F14j jsr (j_GetItem).l ext.w d0 move.w d0,(word_FF1196).l @@ -1615,7 +1616,7 @@ loc_18816: ; CODE XREF: sub_178FE+F14j bsr.w MarkHUDForUpdate bsr.w RefreshHUD -loc_18832: ; CODE XREF: sub_178FE+F26j +loc_18832: ; CODE XREF: OnTick+F26j jsr (j_FlushDMACopyQueue).l jsr (sub_22EE8).l move.w #$0013,d0 @@ -1624,7 +1625,7 @@ loc_18832: ; CODE XREF: sub_178FE+F26j bra.s loc_188BC ; --------------------------------------------------------------------------- -loc_18850: ; CODE XREF: sub_178FE+EF8j +loc_18850: ; CODE XREF: OnTick+EF8j trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_PickupMoney @@ -1637,13 +1638,13 @@ loc_18850: ; CODE XREF: sub_178FE+EF8j bra.s loc_188BC ; --------------------------------------------------------------------------- -loc_1886A: ; CODE XREF: sub_178FE+F5Cj +loc_1886A: ; CODE XREF: OnTick+F5Cj jsr (j_AddGold).l bra.s loc_188BC ; --------------------------------------------------------------------------- -loc_18872: ; CODE XREF: sub_178FE+EB0j - ; sub_178FE+EB8j ... +loc_18872: ; CODE XREF: OnTick+EB0j + ; OnTick+EB8j ... lea $00000080(a0),a0 tst.b (a0) dbmi d7,loc_187AA @@ -1657,7 +1658,7 @@ loc_18872: ; CODE XREF: sub_178FE+EB0j bne.s loc_1889E bset #$06,$0000000C(a5) -loc_1889E: ; CODE XREF: sub_178FE+F98j +loc_1889E: ; CODE XREF: OnTick+F98j cmpi.w #$0168,d0 bcs.s loc_188B6 move.w d0,d1 @@ -1666,20 +1667,20 @@ loc_1889E: ; CODE XREF: sub_178FE+F98j andi.b #$BF,$0000000C(a5) or.b d1,$0000000C(a5) -loc_188B6: ; CODE XREF: sub_178FE+FA4j - cmpi.w #$01A4,d0 +loc_188B6: ; CODE XREF: OnTick+FA4j + cmpi.w #00420,d0 bcs.s locret_188C2 -loc_188BC: ; CODE XREF: sub_178FE+F04j - ; sub_178FE+F50j ... +loc_188BC: ; CODE XREF: OnTick+F04j + ; OnTick+F50j ... jsr (j_MoveSpriteOffscreen).l -locret_188C2: ; CODE XREF: sub_178FE+E7Aj - ; sub_178FE+F8Aj ... +locret_188C2: ; CODE XREF: OnTick+E7Aj + ; OnTick+F8Aj ... rts ; --------------------------------------------------------------------------- -loc_188C4: ; CODE XREF: sub_178FE+D2j +EB_ShopItem: ; CODE XREF: OnTick+D2j btst #$06,$00000008(a5) beq.s loc_1891E move.b (Player_Unk2F).l,d0 @@ -1695,17 +1696,17 @@ loc_188C4: ; CODE XREF: sub_178FE+D2j jsr (j_MoveSpriteOffscreen).l subi.w #$0010,(Player_HitBoxZEnd).l clr.b (byte_FF1133).l - clr.w (word_FF120C).l + clr.w (g_CarriedEntity).l -loc_18914: ; CODE XREF: sub_178FE+FFAj +loc_18914: ; CODE XREF: OnTick+FFAj move.b #$60,(g_SwordButtonMask).l -locret_1891C: ; CODE XREF: sub_178FE+FDCj - ; sub_178FE+FE4j ... +locret_1891C: ; CODE XREF: OnTick+FDCj + ; OnTick+FE4j ... rts ; --------------------------------------------------------------------------- -loc_1891E: ; CODE XREF: sub_178FE+FCCj +loc_1891E: ; CODE XREF: OnTick+FCCj bclr #$03,$00000008(a5) move.b $00000023(a5),d0 andi.b #$3F,d0 @@ -1726,43 +1727,43 @@ loc_1891E: ; CODE XREF: sub_178FE+FCCj bpl.s locret_1896C jsr (j_MoveSpriteOffscreen).l -locret_1896C: ; CODE XREF: sub_178FE+1066j +locret_1896C: ; CODE XREF: OnTick+1066j rts ; --------------------------------------------------------------------------- -loc_1896E: ; CODE XREF: sub_178FE+1032j - ; sub_178FE+103Aj ... +loc_1896E: ; CODE XREF: OnTick+1032j + ; OnTick+103Aj ... bclr #$07,$00000038(a5) rts ; --------------------------------------------------------------------------- -loc_18976: ; CODE XREF: sub_178FE+DAj +MoveUpRelative: ; CODE XREF: OnTick+DAj bsr.s sub_1899E bsr.s sub_189F0 bcs.s sub_1898E -loc_1897C: ; CODE XREF: sub_178FE+10C4j +loc_1897C: ; CODE XREF: OnTick+10C4j bset #$05,$0000002D(a5) -loc_18982: ; CODE XREF: sub_178FE+10C8j +loc_18982: ; CODE XREF: OnTick+10C8j subq.b #$01,$0000002A(a5) bne.s locret_1899C moveq #$00000002,d0 - bra.w sub_17ACA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w LoadNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_1898E: ; CODE XREF: sub_178FE+107Cj - ; sub_178FE+10C6p ... +sub_1898E: ; CODE XREF: OnTick+107Cj + ; OnTick+10C6p ... clr.w d0 move.b $00000009(a5),d0 sub.w d0,$00000012(a5) sub.w d0,$00000054(a5) -locret_1899C: ; CODE XREF: sub_178FE+1088j - ; sub_178FE+1186j +locret_1899C: ; CODE XREF: OnTick+1088j + ; OnTick+1186j rts ; End of function sub_1898E @@ -1770,8 +1771,8 @@ locret_1899C: ; CODE XREF: sub_178FE+1088j ; =============== S U B R O U T I N E ======================================= -sub_1899E: ; CODE XREF: sub_178FE:loc_18976p - ; sub_178FE:loc_189BEp ... +sub_1899E: ; CODE XREF: OnTick:MoveUpRelativep + ; OnTick:EB_MoveUpTimedp ... clr.w d0 move.b $00000009(a5),d0 beq.s loc_189B8 @@ -1790,9 +1791,9 @@ loc_189B8: ; CODE XREF: sub_1899E+6j ; End of function sub_1899E ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_189BE: ; CODE XREF: sub_178FE+102j +EB_MoveUpTimed: ; CODE XREF: OnTick+102j bsr.s sub_1899E bsr.s sub_189F0 bcc.s loc_1897C @@ -1800,33 +1801,33 @@ loc_189BE: ; CODE XREF: sub_178FE+102j bra.s loc_18982 ; --------------------------------------------------------------------------- -loc_189C8: ; CODE XREF: sub_178FE+DEj +MoveDownRelative: ; CODE XREF: OnTick+DEj bsr.s sub_18A38 bsr.s sub_189F0 bcs.s sub_189E0 -loc_189CE: ; CODE XREF: sub_178FE+115Ej +loc_189CE: ; CODE XREF: OnTick+115Ej bset #$04,$0000002D(a5) -loc_189D4: ; CODE XREF: sub_178FE+1166j +loc_189D4: ; CODE XREF: OnTick+1166j subq.b #$01,$0000002A(a5) bne.s locret_189EE moveq #$00000002,d0 - bra.w sub_17ACA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w LoadNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_189E0: ; CODE XREF: sub_178FE+10CEj - ; sub_178FE+1162p ... +sub_189E0: ; CODE XREF: OnTick+10CEj + ; OnTick+1162p ... clr.w d0 move.b $00000009(a5),d0 add.w d0,Z(a5) add.w d0,$00000054(a5) -locret_189EE: ; CODE XREF: sub_178FE+10DAj - ; sub_178FE+11ACj +locret_189EE: ; CODE XREF: OnTick+10DAj + ; OnTick+11ACj rts ; End of function sub_189E0 @@ -1834,8 +1835,8 @@ locret_189EE: ; CODE XREF: sub_178FE+10DAj ; =============== S U B R O U T I N E ======================================= -sub_189F0: ; CODE XREF: sub_178FE+107Ap - ; sub_178FE+10C2p ... +sub_189F0: ; CODE XREF: OnTick+107Ap + ; OnTick+10C2p ... move.l a5,d0 subi.l #Player_X,d0 jsr (j_CollisionDetect).l @@ -1868,8 +1869,8 @@ loc_18A34: ; CODE XREF: sub_189F0+Ej ; =============== S U B R O U T I N E ======================================= -sub_18A38: ; CODE XREF: sub_178FE:loc_189C8p - ; sub_178FE:loc_18A58p ... +sub_18A38: ; CODE XREF: OnTick:MoveDownRelativep + ; OnTick:EB_MoveDownTimedp ... clr.w d0 move.b $00000009(a5),d0 beq.s loc_18A52 @@ -1888,9 +1889,9 @@ loc_18A52: ; CODE XREF: sub_18A38+6j ; End of function sub_18A38 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18A58: ; CODE XREF: sub_178FE+106j +EB_MoveDownTimed: ; CODE XREF: OnTick+106j bsr.s sub_18A38 bsr.s sub_189F0 bcc.w loc_189CE @@ -1898,7 +1899,7 @@ loc_18A58: ; CODE XREF: sub_178FE+106j bra.w loc_189D4 ; --------------------------------------------------------------------------- -loc_18A68: ; CODE XREF: sub_178FE+10Aj +EB_MoveUpAbsolute: ; CODE XREF: OnTick+10Aj bsr.w sub_1899E bsr.s sub_189F0 bcs.w sub_1898E @@ -1909,10 +1910,10 @@ loc_18A68: ; CODE XREF: sub_178FE+10Aj cmp.w d1,d0 bcs.w locret_1899C moveq #$00000002,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -loc_18A8E: ; CODE XREF: sub_178FE+10Ej +EB_MoveDownAbsolute: ; CODE XREF: OnTick+10Ej bsr.s sub_18A38 bsr.w sub_189F0 bcs.w sub_189E0 @@ -1923,39 +1924,39 @@ loc_18A8E: ; CODE XREF: sub_178FE+10Ej cmp.w d1,d0 bhi.w locret_189EE moveq #$00000002,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -loc_18AB4: ; CODE XREF: sub_178FE+116j +EB_NudgeUp: ; CODE XREF: OnTick+116j bsr.w sub_1899E bsr.w sub_189F0 bcc.s loc_18AC8 bsr.w sub_1898E moveq #$00000001,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -loc_18AC8: ; CODE XREF: sub_178FE+11BEj +loc_18AC8: ; CODE XREF: OnTick+11BEj bset #$05,$0000002D(a5) rts ; --------------------------------------------------------------------------- -loc_18AD0: ; CODE XREF: sub_178FE+11Aj +EB_MoveDownUntilCollision: ; CODE XREF: OnTick+11Aj bsr.s sub_18ADC bcc.s locret_18ADA moveq #$00000001,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -locret_18ADA: ; CODE XREF: sub_178FE+11D4j +locret_18ADA: ; CODE XREF: OnTick+11D4j rts -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_18ADC: ; CODE XREF: sub_178FE:loc_18AD0p - ; sub_178FE+16A8p +sub_18ADC: ; CODE XREF: OnTick:EB_MoveDownUntilCollisionp + ; OnTick+16A8p movea.l a5,a0 move.w $00000012(a0),d7 jsr (sub_3C8).l @@ -1986,20 +1987,20 @@ loc_18B10: ; CODE XREF: sub_18ADC+24j ; End of function sub_18ADC ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18B24: ; CODE XREF: sub_178FE+EAj +EB_PlaybackInput: ; CODE XREF: OnTick+EAj move.b $0000002A(a5),d0 jsr (PlaybackInput).l - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -loc_18B32: ; CODE XREF: sub_178FE+EEj +EB_ResetPlayback: ; CODE XREF: OnTick+EEj clr.w (g_ControllerPlayback).l - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18B3C: ; CODE XREF: sub_178FE+F6j +EB_Pause4s: ; CODE XREF: OnTick+F6j move.b #$09,d0 jsr (PlaybackInput).l clr.w (Player_Action).l ; Bit0 - Walk NE (-Y) @@ -2008,49 +2009,50 @@ loc_18B3C: ; CODE XREF: sub_178FE+F6j ; Bit3 - Walk SE (+X) ; Bit4 - Fall ; Bit5 - Jump - ; Bit6, Bit7 - Pick up / Put down - ; Bit8-Bit10 - Sword swing + ; Bit6-Bit7 - Pick up / Put down + ; Bit8-Bit11 - Sword swing, attack ; Bit12 - Ladder Climb - bra.w loc_17ABA + ; Bit13 - Receive Damage + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18B50: ; CODE XREF: sub_178FE+F2j - move.b Unk2A(a5),d0 +EB_WaitForCondition: ; CODE XREF: OnTick+F2j + move.b BehavParam(a5),d0 jsr (ProcessTriggerAction).l bcc.s locret_18B60 - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18B60: ; CODE XREF: sub_178FE+125Cj +locret_18B60: ; CODE XREF: OnTick+125Cj rts ; --------------------------------------------------------------------------- -loc_18B62: ; CODE XREF: sub_178FE+FAj +EB_EnableGravity: ; CODE XREF: OnTick+FAj bclr #$07,FallRate(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18B6C: ; CODE XREF: sub_178FE+FEj +EB_DisableGravity: ; CODE XREF: OnTick+FEj bset #$07,FallRate(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18B76: ; CODE XREF: sub_178FE+11Ej +EB_SetFlag: ; CODE XREF: OnTick+11Ej bsr.s sub_18B86 bset d7,(a6,d6.w) -loc_18B7C: ; CODE XREF: sub_178FE+12A4j - ; sub_178FE+12ACj ... +loc_18B7C: ; CODE XREF: OnTick+12A4j + ; OnTick+12ACj ... moveq #$00000003,d0 - bsr.w sub_17ACA - bra.w loc_17906 -; END OF FUNCTION CHUNK FOR sub_178FE + bsr.w LoadNextCmd + bra.w ProcessNextCmd +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_18B86: ; CODE XREF: sub_178FE:loc_18B76p - ; sub_178FE:loc_18B9Cp ... +sub_18B86: ; CODE XREF: OnTick:EB_SetFlagp + ; OnTick:EB_ClearFlagp ... clr.w d6 move.b $0000002A(a5),d6 movea.l $00000032(a5),a6 @@ -2060,161 +2062,161 @@ sub_18B86: ; CODE XREF: sub_178FE:loc_18B76p ; End of function sub_18B86 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18B9C: ; CODE XREF: sub_178FE+126j +EB_ClearFlag: ; CODE XREF: OnTick+126j bsr.s sub_18B86 bclr d7,(a6,d6.w) bra.s loc_18B7C ; --------------------------------------------------------------------------- -loc_18BA4: ; CODE XREF: sub_178FE+122j +EB_WaitForFlagSet: ; CODE XREF: OnTick+122j bsr.s sub_18B86 btst d7,(a6,d6.w) bne.s loc_18B7C rts ; --------------------------------------------------------------------------- -loc_18BAE: ; CODE XREF: sub_178FE+132j +EB_WaitForFlagClear: ; CODE XREF: OnTick+132j bsr.s sub_18B86 btst d7,(a6,d6.w) beq.s loc_18B7C rts ; --------------------------------------------------------------------------- -loc_18BB8: ; CODE XREF: sub_178FE+12Aj +EB_Hide: ; CODE XREF: OnTick+12Aj bset #$00,$00000008(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18BC2: ; CODE XREF: sub_178FE+12Ej +EB_ShowWhenCollisionClear: ; CODE XREF: OnTick+12Ej move.l a5,d0 subi.l #Player_X,d0 jsr (j_CheckForCollision).l bcs.s locret_18BDC bclr #$00,$00000008(a5) - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -locret_18BDC: ; CODE XREF: sub_178FE+12D2j +locret_18BDC: ; CODE XREF: OnTick+12D2j rts ; --------------------------------------------------------------------------- -loc_18BDE: ; CODE XREF: sub_178FE+136j +EB_B47: ; CODE XREF: OnTick+136j clr.w d0 move.b $0000002A(a5),d0 lsl.w #$07,d0 lea (Sprite1_X).l,a6 tst.b $0000000C(a6,d0.w) bmi.s locret_18BF6 - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18BF6: ; CODE XREF: sub_178FE+12F2j +locret_18BF6: ; CODE XREF: OnTick+12F2j rts ; --------------------------------------------------------------------------- -loc_18BF8: ; CODE XREF: sub_178FE+13Aj +EB_SetEntityAction: ; CODE XREF: OnTick+13Aj clr.w d0 move.b $0000002A(a5),d0 movea.l $00000032(a5),a6 move.b $00000002(a6),d7 lsl.w #$07,d0 lea (Sprite1_X).l,a6 - move.b d7,$00000009(a6,d0.w) + move.b d7,Speed(a6,d0.w) moveq #$00000003,d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_18C1C: ; CODE XREF: sub_178FE+13Ej - bsr.w sub_17F36 +EB_ActivateSwitch: ; CODE XREF: OnTick+13Ej + bsr.w EB_TurnSW bsr.w sub_17F0A trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- dc.w SND_Switch ; --------------------------------------------------------------------------- - bra.w loc_17906 + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_18C2C: ; CODE XREF: sub_178FE+142j - bsr.w sub_17F2E +EB_ResetSwitch: ; CODE XREF: OnTick+142j + bsr.w EB_TurnNE bsr.w sub_17F0A - bra.w loc_17906 + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_18C38: ; CODE XREF: sub_178FE+146j +EB_MoveToXYPosImmediate: ; CODE XREF: OnTick+146j move.b $0000002A(a5),(a5) movea.l $00000032(a5),a6 move.b $00000002(a6),$00000001(a5) movea.l a5,a1 jsr (sub_19AC8).l moveq #$00000003,d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_18C58: ; CODE XREF: sub_178FE+14Aj +EB_MoveToZPosImmediate: ; CODE XREF: OnTick+14Aj clr.w d0 move.b $0000002A(a5),d0 move.w d0,$00000012(a5) movea.l a5,a1 bsr.w sub_19AC8 - bra.w loc_17AC2 -; --------------------------------------------------------------------------- - -loc_18C6C: ; CODE XREF: sub_178FE+14Ej - move.w $00000040(a5),(a5) - move.w $00000042(a5),$00000002(a5) - move.w $00000044(a5),$00000004(a5) - andi.b #$1F,$00000006(a5) - move.b $00000046(a5),d0 - or.b d0,$00000006(a5) - move.w $0000004A(a5),$0000000A(a5) - move.b $0000004C(a5),$0000000C(a5) - move.w $00000052(a5),$00000012(a5) - move.b $00000076(a5),$00000036(a5) - move.b $00000068(a5),$00000038(a5) - move.w $0000007A(a5),$0000003A(a5) - move.w $0000007E(a5),$0000003E(a5) - clr.b $00000037(a5) + bra.w ProcessNextCmdImmediately_2 +; --------------------------------------------------------------------------- + +EB_ResetToInitParams: ; CODE XREF: OnTick+14Ej + move.w InitX(a5),X(a5) + move.w InitSubX(a5),SubX(a5) + move.w InitRotAndSize(a5),RotationAndSize(a5) + andi.b #$1F,TileSource(a5) + move.b InitTileSource(a5),d0 + or.b d0,TileSource(a5) + move.w InitUnk0A(a5),Unk0A(a5) + move.b InitFlags2(a5),Flags2(a5) + move.w InitZ(a5),Z(a5) + move.b InitGoldOrChestCont(a5),GoldOrChestContents(a5) + move.b Unk68(a5),Flags4(a5) ; Bit 0 = Invincible / Solid + move.w InitDialogue(a5),Dialogue(a5) + move.w MaxHealth(a5),CurrentHealth(a5) + clr.b ChestIndex(a5) movea.l a5,a1 - jsr (LookupSpriteUnknownVal6F).l + jsr (LookupSpriteAnimFlags).l jsr (sub_19AC8).l jsr (sub_3BC).l bcc.s loc_18CD6 - bset #$00,$00000008(a5) + bset #$00,Flags1(a5) rts ; --------------------------------------------------------------------------- -loc_18CD6: ; CODE XREF: sub_178FE+13CEj - bclr #$00,$00000008(a5) - clr.w $0000002C(a5) - move.w #$FFFF,$0000002E(a5) - clr.w $00000026(a5) - clr.w $00000024(a5) - bra.w loc_17ABA +loc_18CD6: ; CODE XREF: OnTick+13CEj + bclr #$00,Flags1(a5) + clr.w QueuedAction(a5) + move.w #$FFFF,PrevAction(a5) + clr.w AnimationFrame(a5) + clr.w AnimationIndex(a5) + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18CF2: ; CODE XREF: sub_178FE+1AAj +EB_StartHiCutscene: ; CODE XREF: OnTick+1AAj move.w #$0100,d0 - move.b $0000002A(a5),d0 + move.b BehavParam(a5),d0 bra.s loc_18D02 ; --------------------------------------------------------------------------- -loc_18CFC: ; CODE XREF: sub_178FE+152j +EB_TriggerCutscene: ; CODE XREF: OnTick+152j clr.w d0 - move.b Unk2A(a5),d0 + move.b BehavParam(a5),d0 -loc_18D02: ; CODE XREF: sub_178FE+13FCj +loc_18D02: ; CODE XREF: OnTick+13FCj movem.l a5,-(sp) bsr.w ProcessDialogueScriptAction movem.l (sp)+,a5 - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -loc_18D12: ; CODE XREF: sub_178FE+15Aj - move.b Unk2A(a5),d0 +EB_RotatePlayer: ; CODE XREF: OnTick+15Aj + move.b BehavParam(a5),d0 lsl.b #$06,d0 lea (Player_X).l,a0 andi.b #$3F,RotationAndSize(a0) @@ -2222,54 +2224,54 @@ loc_18D12: ; CODE XREF: sub_178FE+15Aj ori.b #$80,Unk0A(a0) movem.l a5,-(sp) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l movem.l (sp)+,a5 - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -loc_18D46: ; CODE XREF: sub_178FE+15Ej +EB_MakeHostile: ; CODE XREF: OnTick+15Ej bset #$07,Flags2(a5) bset #$07,InitFlags2(a5) movea.l a5,a1 bsr.w GetEnemyStats ; sprite type - bra.w loc_17ABA + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18D5C: ; CODE XREF: sub_178FE+162j +EB_MakeNonHostile: ; CODE XREF: OnTick+162j bclr #$07,Flags2(a5) bclr #$07,InitFlags2(a5) - bra.w loc_17ABA -; END OF FUNCTION CHUNK FOR sub_178FE + bra.w ProcessNextCmdImmediately_1 +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -j_j_HideSprite: ; CODE XREF: sub_178FE+112j - ; sub_178FE+1592p ... +j_j_HideSprite: ; CODE XREF: OnTick+112j + ; OnTick+1592p ... jmp (j_HideSprite).l ; End of function j_j_HideSprite ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18D72: ; CODE XREF: sub_178FE+C6j +EB_LoadSpecialAI: ; CODE XREF: OnTick+C6j jmp (sub_1A440C).l ; --------------------------------------------------------------------------- -loc_18D78: ; CODE XREF: sub_178FE+166j - bclr #$01,Flags4(a5) - bra.w loc_17ABA +EB_EnableWalkBackwards: ; CODE XREF: OnTick+166j + bclr #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18D82: ; CODE XREF: sub_178FE+16Aj - bset #$01,Flags4(a5) - bra.w loc_17ABA +EB_DisableWalkBackwards: ; CODE XREF: OnTick+16Aj + bset #$01,Flags4(a5) ; Bit 0 = Invincible / Solid + bra.w ProcessNextCmdImmediately_1 ; --------------------------------------------------------------------------- -loc_18D8C: ; CODE XREF: sub_178FE+16Ej - move.b Unk2A(a5),d0 - addq.b #$01,Unk2A(a5) +EB_SpecialAnimation: ; CODE XREF: OnTick+16Ej + move.b BehavParam(a5),d0 + addq.b #$01,BehavParam(a5) tst.b d0 bne.s loc_18DAE trap #$00 ; Trap00Handler @@ -2282,7 +2284,7 @@ loc_18D8C: ; CODE XREF: sub_178FE+16Ej rts ; --------------------------------------------------------------------------- -loc_18DAE: ; CODE XREF: sub_178FE+1498j +loc_18DAE: ; CODE XREF: OnTick+1498j cmpi.b #$0A,d0 bne.s loc_18DC8 move.w #$0008,AnimationIndex(a5) @@ -2291,7 +2293,7 @@ loc_18DAE: ; CODE XREF: sub_178FE+1498j rts ; --------------------------------------------------------------------------- -loc_18DC8: ; CODE XREF: sub_178FE+14B4j +loc_18DC8: ; CODE XREF: OnTick+14B4j cmpi.b #$14,d0 bcs.s locret_18E02 bne.s loc_18DF0 @@ -2303,19 +2305,19 @@ loc_18DC8: ; CODE XREF: sub_178FE+14B4j rts ; --------------------------------------------------------------------------- -loc_18DF0: ; CODE XREF: sub_178FE+14D0j +loc_18DF0: ; CODE XREF: OnTick+14D0j bchg #$06,Flags2(a5) cmpi.b #$1E,d0 bcs.s locret_18E02 jmp (j_HideSprite).l ; --------------------------------------------------------------------------- -locret_18E02: ; CODE XREF: sub_178FE+14CEj - ; sub_178FE+14FCj +locret_18E02: ; CODE XREF: OnTick+14CEj + ; OnTick+14FCj rts ; --------------------------------------------------------------------------- -loc_18E04: ; CODE XREF: sub_178FE+172j +EB_MoveUpToInitPos: ; CODE XREF: OnTick+172j bsr.w sub_1899E bsr.w sub_189F0 bcs.w loc_18E28 @@ -2324,160 +2326,160 @@ loc_18E04: ; CODE XREF: sub_178FE+172j cmp.w InitZ(a5),d0 bcs.w locret_18E36 moveq #$00000001,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -loc_18E28: ; CODE XREF: sub_178FE+150Ej +loc_18E28: ; CODE XREF: OnTick+150Ej clr.w d0 move.b Speed(a5),d0 add.w d0,Z(a5) add.w d0,HitBoxZEnd(a5) -locret_18E36: ; CODE XREF: sub_178FE+1520j +locret_18E36: ; CODE XREF: OnTick+1520j rts ; --------------------------------------------------------------------------- -loc_18E38: ; CODE XREF: sub_178FE+176j +EB_TriggerTileSwap: ; CODE XREF: OnTick+176j movem.l a5,-(sp) - move.b Unk2A(a5),d0 + move.b BehavParam(a5),d0 lsl.b #$03,d0 - jsr (sub_40A).l + jsr (j_DoTileSwap).l jsr (j_EnableDMAQueueProcessing).l movem.l (sp)+,a5 - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -loc_18E56: ; CODE XREF: sub_178FE+17Ej - jsr (j_ClearTextbox).l - move.b Unk2A(a5),d0 +EB_PrintText: ; CODE XREF: OnTick+17Ej + jsr (j_ReloadTextbox).l + move.b BehavParam(a5),d0 lsl.w #$08,d0 movea.l BehaviourLUTPtr(a5),a6 move.b SubX(a6),d0 jsr (sub_22EC8).l moveq #$00000003,d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_18E7A: ; CODE XREF: sub_178FE+182j +EB_B5A: ; CODE XREF: OnTick+182j bsr.w sub_17B50 bcs.s loc_18E8C - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_18E8A - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18E8A: ; CODE XREF: sub_178FE+1586j +locret_18E8A: ; CODE XREF: OnTick+1586j rts ; --------------------------------------------------------------------------- -loc_18E8C: ; CODE XREF: sub_178FE+1580j +loc_18E8C: ; CODE XREF: OnTick+1580j movem.l d7-a0,-(sp) bsr.w j_j_HideSprite movem.l (sp)+,d7-a0 tst.b d7 bpl.s locret_18EDC movea.l a0,a5 - btst #$00,Flags4(a5) + btst #$00,Flags4(a5) ; Bit 0 = Invincible / Solid bne.s locret_18EDC move.b Flags2(a5),d0 andi.b #$82,d0 cmpi.b #$80,d0 bne.s locret_18EDC move.w Defence(a5),d0 - bsr.w sub_1657E + bsr.w CalculatePlayerDamageOutput sub.w d0,CurrentHealth(a5) bhi.s loc_18EC8 bsr.w sub_16134 bra.s locret_18EDC ; --------------------------------------------------------------------------- -loc_18EC8: ; CODE XREF: sub_178FE+15C2j +loc_18EC8: ; CODE XREF: OnTick+15C2j bsr.w sub_1602A move.w #$013E,BehaviourLUTIndex(a5) jsr (j_LoadSpriteBehaviour).l trap #$00 ; Trap00Handler -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- dc.w SND_EnemyHit1 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -locret_18EDC: ; CODE XREF: sub_178FE+159Cj - ; sub_178FE+15A6j ... +locret_18EDC: ; CODE XREF: OnTick+159Cj + ; OnTick+15A6j ... rts ; --------------------------------------------------------------------------- -loc_18EDE: ; CODE XREF: sub_178FE+1A6j +EB_B63: ; CODE XREF: OnTick+1A6j bsr.w sub_17B50 bcs.s loc_18EF0 -loc_18EE4: ; CODE XREF: sub_178FE+15FEj - subq.b #$01,Unk2A(a5) +loc_18EE4: ; CODE XREF: OnTick+15FEj + subq.b #$01,BehavParam(a5) bne.s locret_18EEE - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18EEE: ; CODE XREF: sub_178FE+15EAj +locret_18EEE: ; CODE XREF: OnTick+15EAj rts ; --------------------------------------------------------------------------- -loc_18EF0: ; CODE XREF: sub_178FE+15E4j - ; sub_178FE+1640j +loc_18EF0: ; CODE XREF: OnTick+15E4j + ; OnTick+1640j tst.b d7 beq.s loc_18EFE move.b SpriteType(a5),d0 cmp.b SpriteType(a0),d0 beq.s loc_18EE4 -loc_18EFE: ; CODE XREF: sub_178FE+15F4j +loc_18EFE: ; CODE XREF: OnTick+15F4j movem.l d7-a0,-(sp) bsr.w j_j_HideSprite movem.l (sp)+,d7-a0 rts -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- ori #$01,ccr rts ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18F12: ; CODE XREF: sub_178FE+1AEj +EB_B65: ; CODE XREF: OnTick+1AEj bsr.w sub_17B50 bcs.s loc_18F2E -loc_18F18: ; CODE XREF: sub_178FE+163Cj +loc_18F18: ; CODE XREF: OnTick+163Cj bsr.s sub_18F40 bsr.w sub_17B50 bcs.s loc_18F2E bsr.s sub_18F58 - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_18F2C - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18F2C: ; CODE XREF: sub_178FE+1628j +locret_18F2C: ; CODE XREF: OnTick+1628j rts ; --------------------------------------------------------------------------- -loc_18F2E: ; CODE XREF: sub_178FE+1618j - ; sub_178FE+1620j ... +loc_18F2E: ; CODE XREF: OnTick+1618j + ; OnTick+1620j ... tst.b d7 beq.s loc_18F3C move.b SpriteType(a5),d0 cmp.b SpriteType(a0),d0 beq.s loc_18F18 -loc_18F3C: ; CODE XREF: sub_178FE+1632j +loc_18F3C: ; CODE XREF: OnTick+1632j bsr.s sub_18F58 bra.s loc_18EF0 -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; =============== S U B R O U T I N E ======================================= -sub_18F40: ; CODE XREF: sub_178FE:loc_18F18p - ; sub_178FE+1680p ... +sub_18F40: ; CODE XREF: OnTick:loc_18F18p + ; OnTick+1680p ... move.b RotationAndSize(a5),d0 addi.b #$40,d0 andi.b #$C0,d0 @@ -2490,8 +2492,8 @@ sub_18F40: ; CODE XREF: sub_178FE:loc_18F18p ; =============== S U B R O U T I N E ======================================= -sub_18F58: ; CODE XREF: sub_178FE+1622p - ; sub_178FE:loc_18F3Cp ... +sub_18F58: ; CODE XREF: OnTick+1622p + ; OnTick:loc_18F3Cp ... move.b RotationAndSize(a5),d0 subi.b #$40,d0 andi.b #$C0,d0 @@ -2501,40 +2503,40 @@ sub_18F58: ; CODE XREF: sub_178FE+1622p ; End of function sub_18F58 ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18F70: ; CODE XREF: sub_178FE+1B2j +EB_B66: ; CODE XREF: OnTick+1B2j bsr.w sub_17B50 bcs.s loc_18F8C -loc_18F76: ; CODE XREF: sub_178FE+169Aj +loc_18F76: ; CODE XREF: OnTick+169Aj bsr.s sub_18F58 bsr.w sub_17B50 bcs.s loc_18F8C bsr.s sub_18F40 - subq.b #$01,Unk2A(a5) + subq.b #$01,BehavParam(a5) bne.s locret_18F8A - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -locret_18F8A: ; CODE XREF: sub_178FE+1686j +locret_18F8A: ; CODE XREF: OnTick+1686j rts ; --------------------------------------------------------------------------- -loc_18F8C: ; CODE XREF: sub_178FE+1676j - ; sub_178FE+167Ej +loc_18F8C: ; CODE XREF: OnTick+1676j + ; OnTick+167Ej tst.b d7 beq.s loc_18F9A move.b SpriteType(a5),d0 cmp.b SpriteType(a0),d0 beq.s loc_18F76 -loc_18F9A: ; CODE XREF: sub_178FE+1690j +loc_18F9A: ; CODE XREF: OnTick+1690j bsr.s sub_18F40 bra.s loc_18F2E ; --------------------------------------------------------------------------- -loc_18F9E: ; CODE XREF: sub_178FE+1B6j +EB_B67: ; CODE XREF: OnTick+1B6j bsr.w sub_17B50 bcs.w loc_18FB2 bsr.w sub_18ADC @@ -2542,82 +2544,82 @@ loc_18F9E: ; CODE XREF: sub_178FE+1B6j rts ; --------------------------------------------------------------------------- -locret_18FB0: ; CODE XREF: sub_178FE+16C0j +locret_18FB0: ; CODE XREF: OnTick+16C0j rts ; --------------------------------------------------------------------------- -loc_18FB2: ; CODE XREF: sub_178FE+16A4j +loc_18FB2: ; CODE XREF: OnTick+16A4j tst.b d7 beq.s loc_18FC0 move.b SpriteType(a5),d0 cmp.b SpriteType(a0),d0 beq.s locret_18FB0 -loc_18FC0: ; CODE XREF: sub_178FE+16ACj - ; sub_178FE+16B6j +loc_18FC0: ; CODE XREF: OnTick+16ACj + ; OnTick+16B6j movem.l d7-a0,-(sp) bsr.w j_j_HideSprite movem.l (sp)+,d7-a0 rts -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- ori #$01,ccr rts ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_18FD4: ; CODE XREF: sub_178FE+18Ej - move.b Unk2A(a5),d0 +EB_RepeatBegin: ; CODE XREF: OnTick+18Ej + move.b BehavParam(a5),d0 beq.s loc_18FDE - move.b d0,Unk66(a5) + move.b d0,RepeatCount(a5) -loc_18FDE: ; CODE XREF: sub_178FE+16DAj +loc_18FDE: ; CODE XREF: OnTick+16DAj movea.l BehaviourLUTPtr(a5),a0 addq.l #$02,a0 - move.l a0,Unk62(a5) - bra.w loc_17AC2 + move.l a0,RepeatPtr(a5) + bra.w ProcessNextCmdImmediately_2 ; --------------------------------------------------------------------------- -loc_18FEC: ; CODE XREF: sub_178FE+192j - subq.b #$01,Unk66(a5) - beq.w loc_17ABA - move.l Unk62(a5),BehaviourLUTPtr(a5) +EB_B5E: ; CODE XREF: OnTick+192j + subq.b #$01,RepeatCount(a5) + beq.w ProcessNextCmdImmediately_1 + move.l RepeatPtr(a5),BehaviourLUTPtr(a5) moveq #$00000000,d0 - bsr.w sub_17ACA - bra.w loc_17906 + bsr.w LoadNextCmd + bra.w ProcessNextCmd ; --------------------------------------------------------------------------- -loc_19004: ; CODE XREF: sub_178FE+196j - ; sub_178FE+1778j ... - addq.b #$01,Unk2A(a5) +EB_DecayFlash: ; CODE XREF: OnTick+196j + ; OnTick+1778j ... + addq.b #$01,BehavParam(a5) lea byte_19030(pc),a0 -loc_1900C: ; CODE XREF: sub_178FE+171Aj +loc_1900C: ; CODE XREF: OnTick+171Aj move.b (a0)+,d0 cmpi.b #$FF,d0 beq.s locret_1902E - cmp.b Unk2A(a5),d0 + cmp.b BehavParam(a5),d0 bne.s loc_1900C bchg #$06,Flags2(a5) cmpi.b #$FF,$00000001(a0) bne.s locret_1902E moveq #$00000002,d0 - bra.w sub_17ACA + bra.w LoadNextCmd ; --------------------------------------------------------------------------- -locret_1902E: ; CODE XREF: sub_178FE+1714j - ; sub_178FE+1728j +locret_1902E: ; CODE XREF: OnTick+1714j + ; OnTick+1728j rts -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- byte_19030: dc.b $08,$09,$10,$11,$17,$18,$1D,$1E,$22,$23,$26,$27,$29,$2A,$2B - ; DATA XREF: sub_178FE+170At + ; DATA XREF: OnTick+170At dc.b $2D,$2E,$31,$32,$36,$37,$3C,$3D,$43,$44,$4B,$4C,$54,$FF,$FF ; --------------------------------------------------------------------------- -; START OF FUNCTION CHUNK FOR sub_178FE +; START OF FUNCTION CHUNK FOR OnTick -loc_1904E: ; CODE XREF: sub_178FE+19Aj - move.b Unk2A(a5),d0 +EB_FlashSpinAppear: ; CODE XREF: OnTick+19Aj + move.b BehavParam(a5),d0 move.b #$00,d1 cmpi.b #$2C,d0 bcs.s loc_19074 @@ -2629,10 +2631,10 @@ loc_1904E: ; CODE XREF: sub_178FE+19Aj bcs.s loc_19074 move.b #$07,d1 -loc_19074: ; CODE XREF: sub_178FE+175Cj - ; sub_178FE+1766j ... +loc_19074: ; CODE XREF: OnTick+175Cj + ; OnTick+1766j ... and.b d1,d0 - bne.w loc_19004 + bne.w EB_DecayFlash move.b RotationAndSize(a5),d1 addi.b #$40,d1 andi.b #$C0,d1 @@ -2641,11 +2643,11 @@ loc_19074: ; CODE XREF: sub_178FE+175Cj movea.l a5,a1 bsr.w SetSpriteRotationAnimFlags bset #$07,Unk48(a5) - bra.w loc_19004 + bra.w EB_DecayFlash ; --------------------------------------------------------------------------- -loc_190A0: ; CODE XREF: sub_178FE+19Ej - move.b Unk2A(a5),d0 +EB_FlashSpinDisappear: ; CODE XREF: OnTick+19Ej + move.b BehavParam(a5),d0 move.b #$07,d1 cmpi.b #$2C,d0 bcs.s loc_19074 @@ -2659,14 +2661,14 @@ loc_190A0: ; CODE XREF: sub_178FE+19Ej bra.s loc_19074 ; --------------------------------------------------------------------------- -loc_190C8: ; CODE XREF: sub_178FE+1A2j - move.b Unk2A(a5),d0 +EB_PlaySound: ; CODE XREF: OnTick+1A2j + move.b BehavParam(a5),d0 trap #$00 ; Trap00Handler -; END OF FUNCTION CHUNK FOR sub_178FE +; END OF FUNCTION CHUNK FOR OnTick ; --------------------------------------------------------------------------- dc.w SND_LoadFromD0 ; --------------------------------------------------------------------------- - bra.w loc_17AC2 + bra.w ProcessNextCmdImmediately_2 ; =============== S U B R O U T I N E ======================================= @@ -2680,14 +2682,14 @@ loc_190DC: ; CODE XREF: sub_190D4+3Aj bmi.s locret_19112 cmpi.b #$7F,d0 beq.s loc_1910A - bset #$03,Action(a5) + bset #$03,QueuedAction(a5) movem.l d7/a5,-(sp) movem.l a5,-(sp) bsr.w sub_19114 movem.l (sp)+,a5 bsr.w sub_1917E movem.l (sp)+,d7/a5 - bclr #$03,Action(a5) + bclr #$03,QueuedAction(a5) loc_1910A: ; CODE XREF: sub_190D4+10j lea SPRITE_SIZE(a5),a5 @@ -2780,7 +2782,7 @@ locret_191B2: ; CODE XREF: sub_1917E+4j ; =============== S U B R O U T I N E ======================================= -sub_191B4: ; CODE XREF: sub_178FEp +sub_191B4: ; CODE XREF: OnTickp move.w GroundHeight(a5),d0 andi.b #$3F,d0 cmpi.b #FLOOR_PIT,d0 @@ -2828,7 +2830,7 @@ locret_19204: ; CODE XREF: sub_191E4+12j ; =============== S U B R O U T I N E ======================================= -sub_19206: ; CODE XREF: sub_178FE+4p +sub_19206: ; CODE XREF: OnTick+4p ; sub_19114p btst #$06,Flags1(a5) beq.s loc_19276 @@ -2909,7 +2911,7 @@ sub_192B6: ; DATA XREF: sub_103B8t move.b d2,d0 move.b d0,SpriteType(a1) bsr.w LookupSpriteGfxIndex - jsr (LookupSpriteUnknownVal6F).l + jsr (LookupSpriteAnimFlags).l move.b SpriteGraphic(a1),d0 bsr.w GetSpriteDims movem.l a1,-(sp) diff --git a/code/sprites/spritefuncs1.asm b/code/sprites/spritefuncs1.asm index c21b794..a9fba83 100644 --- a/code/sprites/spritefuncs1.asm +++ b/code/sprites/spritefuncs1.asm @@ -2,36 +2,47 @@ ; =============== S U B R O U T I N E ======================================= -sub_103DE: ; DATA XREF: sub_10310t +UpdateFrames: ; DATA XREF: j_UpdateFramest lea (Sprite1_X).l,a0 moveq #$0000000E,d7 -loc_103E6: ; CODE XREF: sub_103DE+20j +loc_103E6: ; CODE XREF: UpdateFrames+20j move.b (a0),d0 bmi.s locret_10402 cmpi.b #$7F,d0 beq.s loc_103FA movem.l d7-a0,-(sp) - bsr.s sub_10404 + bsr.s UpdateSpriteFrame movem.l (sp)+,d7-a0 -loc_103FA: ; CODE XREF: sub_103DE+10j +loc_103FA: ; CODE XREF: UpdateFrames+10j lea $00000080(a0),a0 dbf d7,loc_103E6 -locret_10402: ; CODE XREF: sub_103DE+Aj +locret_10402: ; CODE XREF: UpdateFrames+Aj rts -; End of function sub_103DE +; End of function UpdateFrames ; =============== S U B R O U T I N E ======================================= -sub_10404: ; CODE XREF: sub_103DE+16p - ; DATA XREF: sub_10314t - move.w AnimAction(a0),d2 - move.w Action(a0),d0 - move.w d0,AnimAction(a0) +UpdateSpriteFrame: ; CODE XREF: UpdateFrames+16p + ; DATA XREF: j_UpdateSpriteFramet + move.w PrevAction(a0),d2 + move.w QueuedAction(a0),d0 + move.w d0,PrevAction(a0) ; D0 - Action + ; Idle - 0000 + ; Walk NE - 0001 + ; Walk SW - 0002 + ; Walk NW - 0004 + ; Walk SE - 0008 + ; Fall - 0010 + ; Jump - 0020 + ; Pick Up - 0040, 0080, 00C0 + ; Attack - 0100, 0200, 0300, 0400, (500, 600, 700) + ; Climb - 1000 + ; TakeDmg - 2000 btst #$01,Flags2(a0) beq.s loc_10428 move.b Unk48(a0),d1 @@ -39,120 +50,122 @@ sub_10404: ; CODE XREF: sub_103DE+16p bne.s loc_10428 bchg #$06,Flags2(a0) -loc_10428: ; CODE XREF: sub_10404+12j - ; sub_10404+1Cj +loc_10428: ; CODE XREF: UpdateSpriteFrame+12j + ; UpdateSpriteFrame+1Cj move.b Unk0A(a0),d1 andi.b #$7F,d1 beq.s loc_1048A - move.b Unk6F(a0),d3 - btst #$05,d3 + move.b AnimFlags(a0),d3 + btst #$05,d3 ; HasTakeDamageAnim beq.s loc_10446 move.w d0,d1 andi.w #$2000,d1 - bne.w loc_1076C + bne.w LoadDamageAnimFrame ; Bit5: HasDamageAnim -loc_10446: ; CODE XREF: sub_10404+36j +loc_10446: ; CODE XREF: UpdateSpriteFrame+36j tst.b Unk0A(a0) bmi.s loc_104B2 - cmpi.b #$FF,d0 + cmpi.b #$FF,d0 ; Any Movement beq.w loc_1051E tst.w d0 - beq.s loc_1049E + beq.s LoadIdleAnimFrame ; Idle btst #$00,Flags2(a0) bne.s locret_10490 move.w d0,d1 - andi.w #$2000,d1 - bne.w loc_1076C + andi.w #$2000,d1 ; Take Dmg + bne.w LoadDamageAnimFrame ; Bit5: HasDamageAnim move.w d0,d1 - andi.w #$0700,d1 - bne.w loc_106B0 + andi.w #$0700,d1 ; Attack + bne.w LoadAttackAnimFrame move.w d0,d1 - andi.w #$0030,d1 - bne.w loc_1074A + andi.w #$0030,d1 ; Jump/Fall + bne.w LoadJumpAnimFrame move.w d0,d1 - andi.w #$000F,d1 - bne.w loc_105AC + andi.w #$000F,d1 ; Walk + bne.w LoadWalkAnimFrame rts ; --------------------------------------------------------------------------- -loc_1048A: ; CODE XREF: sub_10404+2Cj +loc_1048A: ; CODE XREF: UpdateSpriteFrame+2Cj andi.b #$7F,Unk0A(a0) -locret_10490: ; CODE XREF: sub_10404+5Aj - ; sub_10404+A8j +locret_10490: ; CODE XREF: UpdateSpriteFrame+5Aj + ; UpdateSpriteFrame+A8j rts ; --------------------------------------------------------------------------- loc_10492: ; CODE XREF: ROM:00012762p ; ROM:0001283Ep ori.b #$80,Unk0A(a0) - move.b Unk6F(a0),d3 + move.b AnimFlags(a0),d3 bra.s loc_104B2 ; --------------------------------------------------------------------------- -loc_1049E: ; CODE XREF: sub_10404+52j - ; sub_10404+34Aj +LoadIdleAnimFrame: ; CODE XREF: UpdateSpriteFrame+52j + ; UpdateSpriteFrame+34Aj btst #$00,d3 beq.w loc_1056E btst #$00,Flags2(a0) bne.s locret_10490 bsr.w sub_10794 -loc_104B2: ; CODE XREF: sub_10404+46j - ; sub_10404+98j +loc_104B2: ; CODE XREF: UpdateSpriteFrame+46j + ; UpdateSpriteFrame+98j clr.w AnimationFrame(a0) move.w #$0000,d1 - btst #$06,Flags4(a0) + btst #$06,Flags4(a0) ; True for mimic, mushroom beq.w loc_104C8 move.w #$0008,d1 -loc_104C8: ; CODE XREF: sub_10404+BCj +loc_104C8: ; CODE XREF: UpdateSpriteFrame+BCj btst #$01,d3 - beq.s loc_104D2 + beq.s GetRotatedFrame ; Bit 4 - Do not rotate move.w #$0008,d1 -loc_104D2: ; CODE XREF: sub_10404+C8j - ; sub_10404+144j ... - btst #$04,d3 - bne.s loc_104F8 +GetRotatedFrame: ; CODE XREF: UpdateSpriteFrame+C8j + ; UpdateSpriteFrame+144j ... + btst #$04,d3 ; Bit 4 - Do not rotate + bne.s GetNWFrame move.b RotationAndSize(a0),d0 andi.b #$C0,d0 - beq.s loc_104F8 + beq.s GetNWFrame cmpi.b #$80,d0 - beq.s loc_10510 - bhi.s loc_10504 + beq.s GetNEFrame + bhi.s GetSEFrame + +GetSWFrame: addq.w #$04,d1 move.w d1,AnimationIndex(a0) bset #$03,TileSource(a0) rts ; --------------------------------------------------------------------------- -loc_104F8: ; CODE XREF: sub_10404+D2j - ; sub_10404+DCj +GetNWFrame: ; CODE XREF: UpdateSpriteFrame+D2j + ; UpdateSpriteFrame+DCj move.w d1,AnimationIndex(a0) bclr #$03,TileSource(a0) rts ; --------------------------------------------------------------------------- -loc_10504: ; CODE XREF: sub_10404+E4j +GetSEFrame: ; CODE XREF: UpdateSpriteFrame+E4j move.w d1,AnimationIndex(a0) bset #$03,TileSource(a0) rts ; --------------------------------------------------------------------------- -loc_10510: ; CODE XREF: sub_10404+E2j +GetNEFrame: ; CODE XREF: UpdateSpriteFrame+E2j addq.w #$04,d1 move.w d1,AnimationIndex(a0) bclr #$03,TileSource(a0) -locret_1051C: ; CODE XREF: sub_10404+120j +locret_1051C: ; CODE XREF: UpdateSpriteFrame+120j rts ; --------------------------------------------------------------------------- -loc_1051E: ; CODE XREF: sub_10404+4Cj +loc_1051E: ; CODE XREF: UpdateSpriteFrame+4Cj btst #$00,Flags2(a0) bne.s locret_1051C - clr.w AnimAction(a0) + clr.w PrevAction(a0) bsr.w sub_10794 andi.w #$07C0,d2 beq.s loc_10554 @@ -162,31 +175,31 @@ loc_1051E: ; CODE XREF: sub_10404+4Cj btst #$01,d3 beq.s loc_1054C move.w #$0018,d1 - bra.w loc_104D2 + bra.w GetRotatedFrame ; Bit 4 - Do not rotate ; --------------------------------------------------------------------------- -loc_1054C: ; CODE XREF: sub_10404+13Ej +loc_1054C: ; CODE XREF: UpdateSpriteFrame+13Ej move.w #$0010,d1 - bra.w loc_104D2 + bra.w GetRotatedFrame ; Bit 4 - Do not rotate ; --------------------------------------------------------------------------- -loc_10554: ; CODE XREF: sub_10404+12Ej +loc_10554: ; CODE XREF: UpdateSpriteFrame+12Ej clr.w AnimationFrame(a0) move.w #$0000,d1 - btst #$06,Flags4(a0) - beq.w loc_104D2 + btst #$06,Flags4(a0) ; Bit 0 = Invincible / Solid + beq.w GetRotatedFrame ; Bit 4 - Do not rotate move.w #$0008,d1 - bra.w loc_104D2 + bra.w GetRotatedFrame ; Bit 4 - Do not rotate ; --------------------------------------------------------------------------- -loc_1056E: ; CODE XREF: sub_10404+9Ej +loc_1056E: ; CODE XREF: UpdateSpriteFrame+9Ej move.b Unk0D(a0),d0 move.b d0,d1 move.b Speed(a0),d7 bne.s loc_1057E move.w #$0001,d7 -loc_1057E: ; CODE XREF: sub_10404+174j +loc_1057E: ; CODE XREF: UpdateSpriteFrame+174j add.b d7,d1 neg.b d7 and.b d7,d1 @@ -201,11 +214,11 @@ loc_1057E: ; CODE XREF: sub_10404+174j move.b d1,AnimationFrame1(a0) bset #$07,Unk0A(a0) -locret_105AA: ; CODE XREF: sub_10404+188j +locret_105AA: ; CODE XREF: UpdateSpriteFrame+188j rts ; --------------------------------------------------------------------------- -loc_105AC: ; CODE XREF: sub_10404+80j +LoadWalkAnimFrame: ; CODE XREF: UpdateSpriteFrame+80j btst #$06,d3 bne.s loc_105BC btst #$03,d3 @@ -213,7 +226,7 @@ loc_105AC: ; CODE XREF: sub_10404+80j bra.s loc_105E6 ; --------------------------------------------------------------------------- -loc_105BC: ; CODE XREF: sub_10404+1ACj +loc_105BC: ; CODE XREF: UpdateSpriteFrame+1ACj move.b #$1C,d5 move.w #$0008,d4 andi.b #$0F,d2 @@ -221,7 +234,7 @@ loc_105BC: ; CODE XREF: sub_10404+1ACj beq.s loc_105D2 move.b #$08,Unk0D(a0) -loc_105D2: ; CODE XREF: sub_10404+1C6j +loc_105D2: ; CODE XREF: UpdateSpriteFrame+1C6j move.b Unk0D(a0),d0 move.b d0,d1 move.b Speed(a0),d7 @@ -231,39 +244,39 @@ loc_105D2: ; CODE XREF: sub_10404+1C6j bra.s loc_10616 ; --------------------------------------------------------------------------- -loc_105E6: ; CODE XREF: sub_10404+1B6j +loc_105E6: ; CODE XREF: UpdateSpriteFrame+1B6j move.b #$0C,d5 clr.w d4 - btst #$06,Flags4(a0) + btst #$06,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_105F8 move.w #$0018,d4 -loc_105F8: ; CODE XREF: sub_10404+1EEj - ; sub_10404+2A0j ... +loc_105F8: ; CODE XREF: UpdateSpriteFrame+1EEj + ; UpdateSpriteFrame+2A0j ... andi.b #$0F,d2 cmp.b d1,d2 beq.s loc_10606 move.b #$08,Unk0D(a0) -loc_10606: ; CODE XREF: sub_10404+1FAj +loc_10606: ; CODE XREF: UpdateSpriteFrame+1FAj move.b Unk0D(a0),d0 move.b d0,d1 move.b Speed(a0),d7 bne.s loc_10616 move.w #$0002,d7 -loc_10616: ; CODE XREF: sub_10404+1DAj - ; sub_10404+1E0j ... - btst #$01,Flags4(a0) +loc_10616: ; CODE XREF: UpdateSpriteFrame+1DAj + ; UpdateSpriteFrame+1E0j ... + btst #$01,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_10622 sub.b d7,d1 bra.s loc_10624 ; --------------------------------------------------------------------------- -loc_10622: ; CODE XREF: sub_10404+218j +loc_10622: ; CODE XREF: UpdateSpriteFrame+218j add.b d7,d1 -loc_10624: ; CODE XREF: sub_10404+21Cj +loc_10624: ; CODE XREF: UpdateSpriteFrame+21Cj neg.b d7 and.b d7,d1 move.b d1,Unk0D(a0) @@ -278,13 +291,13 @@ loc_10624: ; CODE XREF: sub_10404+21Cj move.b d1,AnimationFrame1(a0) bset #$07,Unk0A(a0) -loc_1064E: ; CODE XREF: sub_10404+22Cj +loc_1064E: ; CODE XREF: UpdateSpriteFrame+22Cj move.b RotationAndSize(a0),d0 - btst #$01,Flags4(a0) + btst #$01,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_1065E eori.b #$80,d0 -loc_1065E: ; CODE XREF: sub_10404+254j +loc_1065E: ; CODE XREF: UpdateSpriteFrame+254j btst #$04,d3 bne.s loc_10676 andi.b #$C0,d0 @@ -296,78 +309,78 @@ loc_1065E: ; CODE XREF: sub_10404+254j bra.s loc_10682 ; --------------------------------------------------------------------------- -loc_10676: ; CODE XREF: sub_10404+25Ej - ; sub_10404+264j ... +loc_10676: ; CODE XREF: UpdateSpriteFrame+25Ej + ; UpdateSpriteFrame+264j ... move.w d4,AnimationIndex(a0) bclr #$03,TileSource(a0) rts ; --------------------------------------------------------------------------- -loc_10682: ; CODE XREF: sub_10404+26Cj - ; sub_10404+270j +loc_10682: ; CODE XREF: UpdateSpriteFrame+26Cj + ; UpdateSpriteFrame+270j move.w d4,AnimationIndex(a0) bset #$03,TileSource(a0) -locret_1068C: ; CODE XREF: sub_10404+292j +locret_1068C: ; CODE XREF: UpdateSpriteFrame+292j rts ; --------------------------------------------------------------------------- -loc_1068E: ; CODE XREF: sub_10404+26Aj +loc_1068E: ; CODE XREF: UpdateSpriteFrame+26Aj addq.w #$04,d4 bra.s loc_10676 ; --------------------------------------------------------------------------- -loc_10692: ; CODE XREF: sub_10404+1B2j +loc_10692: ; CODE XREF: UpdateSpriteFrame+1B2j btst #$03,d3 beq.s locret_1068C move.b #$04,d5 clr.w d4 - btst #$06,Flags4(a0) + btst #$06,Flags4(a0) ; Bit 0 = Invincible / Solid beq.w loc_105F8 move.w #$0008,d4 bra.w loc_105F8 ; --------------------------------------------------------------------------- -loc_106B0: ; CODE XREF: sub_10404+6Cj +LoadAttackAnimFrame: ; CODE XREF: UpdateSpriteFrame+6Cj bsr.w sub_10794 btst #$06,d3 - bne.s loc_106C0 + bne.s GetAttackFrame move.w #$0008,d2 bra.s loc_106C4 ; --------------------------------------------------------------------------- -loc_106C0: ; CODE XREF: sub_10404+2B4j +GetAttackFrame: ; CODE XREF: UpdateSpriteFrame+2B4j move.w #$0038,d2 -loc_106C4: ; CODE XREF: sub_10404+2BAj +loc_106C4: ; CODE XREF: UpdateSpriteFrame+2BAj clr.w AnimationFrame(a0) cmpi.w #$0100,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$0004,AnimationFrame(a0) cmpi.w #$0200,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$0008,AnimationFrame(a0) cmpi.w #$0300,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$000C,AnimationFrame(a0) cmpi.w #$0400,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$0010,AnimationFrame(a0) cmpi.w #$0500,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$0014,AnimationFrame(a0) cmpi.w #$0600,d1 - beq.s loc_10710 + beq.s GetRotatedAnimIdx move.w #$0018,AnimationFrame(a0) -loc_10710: ; CODE XREF: sub_10404+2C8j - ; sub_10404+2D4j ... +GetRotatedAnimIdx: ; CODE XREF: UpdateSpriteFrame+2C8j + ; UpdateSpriteFrame+2D4j ... move.b RotationAndSize(a0),d0 - btst #$01,Flags4(a0) + btst #$01,Flags4(a0) ; Bit 0 = Invincible / Solid beq.s loc_10720 eori.b #$80,d0 -loc_10720: ; CODE XREF: sub_10404+316j +loc_10720: ; CODE XREF: UpdateSpriteFrame+316j andi.b #$C0,d0 beq.s loc_1073E cmpi.b #$80,d0 @@ -375,64 +388,64 @@ loc_10720: ; CODE XREF: sub_10404+316j bhi.s loc_10730 addq.w #$04,d2 -loc_10730: ; CODE XREF: sub_10404+328j +loc_10730: ; CODE XREF: UpdateSpriteFrame+328j move.w d2,AnimationIndex(a0) - bset #$03,TileSource(a0) + bset #$03,TileSource(a0) ; Set HFlip rts ; --------------------------------------------------------------------------- -loc_1073C: ; CODE XREF: sub_10404+326j +loc_1073C: ; CODE XREF: UpdateSpriteFrame+326j addq.w #$04,d2 -loc_1073E: ; CODE XREF: sub_10404+320j +loc_1073E: ; CODE XREF: UpdateSpriteFrame+320j move.w d2,AnimationIndex(a0) - bclr #$03,TileSource(a0) + bclr #$03,TileSource(a0) ; Clear HFlip rts ; --------------------------------------------------------------------------- -loc_1074A: ; CODE XREF: sub_10404+76j +LoadJumpAnimFrame: ; CODE XREF: UpdateSpriteFrame+76j btst #$02,d3 - beq.w loc_1049E + beq.w LoadIdleAnimFrame bsr.w sub_10794 clr.w AnimationFrame(a0) btst #$06,d3 beq.s loc_10766 move.w #$0020,d2 - bra.s loc_10710 + bra.s GetRotatedAnimIdx ; --------------------------------------------------------------------------- -loc_10766: ; CODE XREF: sub_10404+35Aj +loc_10766: ; CODE XREF: UpdateSpriteFrame+35Aj move.w #$0010,d2 - bra.s loc_10710 + bra.s GetRotatedAnimIdx ; --------------------------------------------------------------------------- -loc_1076C: ; CODE XREF: sub_10404+3Ej - ; sub_10404+62j - btst #$05,d3 +LoadDamageAnimFrame: ; CODE XREF: UpdateSpriteFrame+3Ej + ; UpdateSpriteFrame+62j + btst #$05,d3 ; Bit5: HasDamageAnim beq.w locret_1078A bsr.w sub_10794 clr.w AnimationFrame(a0) btst #$02,d3 bne.s loc_1078C move.w #$0018,d2 - bra.w loc_10710 + bra.w GetRotatedAnimIdx ; --------------------------------------------------------------------------- -locret_1078A: ; CODE XREF: sub_10404+36Cj +locret_1078A: ; CODE XREF: UpdateSpriteFrame+36Cj rts ; --------------------------------------------------------------------------- -loc_1078C: ; CODE XREF: sub_10404+37Cj +loc_1078C: ; CODE XREF: UpdateSpriteFrame+37Cj move.w #$0020,d2 - bra.w loc_10710 -; End of function sub_10404 + bra.w GetRotatedAnimIdx +; End of function UpdateSpriteFrame ; =============== S U B R O U T I N E ======================================= -sub_10794: ; CODE XREF: sub_10404+AAp - ; sub_10404+126p ... +sub_10794: ; CODE XREF: UpdateSpriteFrame+AAp + ; UpdateSpriteFrame+126p ... cmp.w d0,d2 beq.s loc_107A8 cmpi.w #$FFFF,d2 @@ -453,7 +466,7 @@ loc_107A8: ; CODE XREF: sub_10794+2j ; =============== S U B R O U T I N E ======================================= -LookupSpriteUnknownVal6F: ; CODE XREF: sub_12CAE+4p +LookupSpriteAnimFlags: ; CODE XREF: sub_12CAE+4p ; ROM:00016370p ; DATA XREF: ... move.b Unk0A(a1),d1 @@ -462,7 +475,7 @@ LookupSpriteUnknownVal6F: ; CODE XREF: sub_12CAE+4p move.b SpriteGraphic(a1),d1 lea SpriteAnimFlags(pc),a0 -loc_107C0: ; CODE XREF: LookupSpriteUnknownVal6F+1Ej +loc_107C0: ; CODE XREF: LookupSpriteAnimFlags+1Ej move.b $00000001(a0),d3 bmi.s loc_107CE cmp.b (a0),d1 @@ -471,13 +484,13 @@ loc_107C0: ; CODE XREF: LookupSpriteUnknownVal6F+1Ej bra.s loc_107C0 ; --------------------------------------------------------------------------- -loc_107CE: ; CODE XREF: LookupSpriteUnknownVal6F+8j - ; LookupSpriteUnknownVal6F+16j +loc_107CE: ; CODE XREF: LookupSpriteAnimFlags+8j + ; LookupSpriteAnimFlags+16j move.b #$01,d3 -loc_107D2: ; CODE XREF: LookupSpriteUnknownVal6F+1Aj - move.b d3,Unk6F(a1) +loc_107D2: ; CODE XREF: LookupSpriteAnimFlags+1Aj + move.b d3,AnimFlags(a1) rts -; End of function LookupSpriteUnknownVal6F +; End of function LookupSpriteAnimFlags ; --------------------------------------------------------------------------- diff --git a/code/sprites/spritefuncs2.asm b/code/sprites/spritefuncs2.asm index 1fd513e..67abbf4 100644 --- a/code/sprites/spritefuncs2.asm +++ b/code/sprites/spritefuncs2.asm @@ -60,20 +60,20 @@ loc_10BA6: ; CODE XREF: sub_10ACE+A4j cmpi.b #$96,(byte_FF1145).l bne.w locret_10C84 btst #$07,(g_Flags+5).l - beq.s loc_10BC4 + beq.s OnFaint move.b #$33,d0 bra.w ProcessDialogueScriptAction ; --------------------------------------------------------------------------- -loc_10BC4: ; CODE XREF: sub_10ACE+ECj +OnFaint: ; CODE XREF: sub_10ACE+ECj bclr #$00,(Player_Flags2).l cmpi.w #$01AA,(g_RmNum1).l ; Waterfall Shrine Entrance - bne.s loc_10BE2 + bne.s EkeEkeRecover btst #$04,(g_Flags).l beq.w loc_10C8E -loc_10BE2: ; CODE XREF: sub_10ACE+106j - btst #$00,(g_Vars+$19).l +EkeEkeRecover: ; CODE XREF: sub_10ACE+106j + btst #$00,(g_AdditionalFlags+$19).l bne.w loc_10C86 move.b #ITM_EKEEKE,d0 jsr (j_GetItemQtyAndMaxQty).l @@ -84,7 +84,7 @@ loc_10BE2: ; CODE XREF: sub_10ACE+106j jsr (j_CheckAndConsumeItem).l move.b #$01,(g_FridayAnimation1).l move.b #$11,(g_FridayAnimation2).l - move.w #$003C,d0 + move.w #00060,d0 jsr (j_Sleep).l move.b #$41,(g_FridayAnimation2).l @@ -97,7 +97,7 @@ loc_10C2C: ; CODE XREF: sub_10ACE+16Cj bset #$07,Unk0A(a0) bset #$07,Unk48(a0) jsr (sub_3FE).l - jsr (sub_3F8).l + jsr (j_LoadSprites).l bsr.w UpdateEkeEkeHUD jsr (j_EkeEkeHealthRecover).l clr.b (byte_FF1145).l @@ -121,7 +121,7 @@ loc_10C86: ; CODE XREF: sub_10ACE+11Cj ; --------------------------------------------------------------------------- loc_10C8E: ; CODE XREF: sub_10ACE+110j - jsr (sub_3E6).l + jsr (j_FadeOutToDarkness).l clr.b (byte_FF1145).l move.w #$0251,(g_RmNum1).l ; Massan mayor's house move.w #$0251,(RmNum2).l @@ -132,7 +132,7 @@ loc_10C8E: ; CODE XREF: sub_10ACE+110j ori.b #$80,(Player_RotationAndSize).l clr.b d0 jsr (j_LoadRoom_0).l - jsr (sub_410).l + jsr (j_InitVDP).l move.b #$21,(g_FridayAnimation1).l move.b #$11,(g_FridayAnimation2).l move.b #$09,d0 diff --git a/code/sprites/spritefuncsjumptable.asm b/code/sprites/spritefuncsjumptable.asm index dde70ed..303a11c 100644 --- a/code/sprites/spritefuncsjumptable.asm +++ b/code/sprites/spritefuncsjumptable.asm @@ -3,7 +3,7 @@ ; Attributes: thunk -sub_10300: ; DATA XREF: sub_16DC+3Ct +sub_10300: ; DATA XREF: GameLoop+3Ct jmp sub_178C8(pc) ; End of function sub_10300 @@ -17,18 +17,18 @@ sub_10300: ; DATA XREF: sub_16DC+3Ct ; Attributes: thunk -sub_10310: ; DATA XREF: sub_16DC+5Et - jmp sub_103DE(pc) -; End of function sub_10310 +j_UpdateFrames: ; DATA XREF: GameLoop+5Et + jmp UpdateFrames(pc) +; End of function j_UpdateFrames ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_10314: ; DATA XREF: sub_7274+Et - jmp sub_10404(pc) -; End of function sub_10314 +j_UpdateSpriteFrame: ; DATA XREF: sub_7274+Et + jmp UpdateSpriteFrame(pc) +; End of function j_UpdateSpriteFrame ; =============== S U B R O U T I N E ======================================= @@ -65,7 +65,7 @@ j_GetGold: ; DATA XREF: ROM:000273C8t ; Attributes: thunk -j_AddGold: ; DATA XREF: sub_7052+A4t +j_AddGold: ; DATA XREF: CheckOpenChest+A4t ; ROM:000088FCt ... jmp AddGold(pc) ; End of function j_AddGold @@ -94,7 +94,7 @@ j_IncrementSwordCharge: ; DATA XREF: UpdateSwordCharge+8t ; Attributes: thunk -j_DecreaseSwordCharge: ; DATA XREF: sub_66AC+8At +j_DecreaseSwordCharge: ; DATA XREF: ProcessActionButton+8At jmp DecreaseSwordCharge(pc) ; End of function j_DecreaseSwordCharge @@ -104,7 +104,7 @@ j_DecreaseSwordCharge: ; DATA XREF: sub_66AC+8At ; Attributes: thunk j_AddHealth: ; DATA XREF: sub_620A+45At - ; sub_7052+138t ... + ; CheckOpenChest+138t ... jmp AddHealth(pc) ; End of function j_AddHealth @@ -121,7 +121,7 @@ j_RemoveHealth: ; DATA XREF: j_j_RemoveHealtht ; Attributes: thunk -j_RefreshHUD: ; DATA XREF: sub_16DC+88t +j_RefreshHUD: ; DATA XREF: GameLoop+88t ; sub_295E+30t ... jmp RefreshHUD(pc) ; End of function j_RefreshHUD @@ -131,16 +131,16 @@ j_RefreshHUD: ; DATA XREF: sub_16DC+88t ; Attributes: thunk -sub_10344: ; DATA XREF: ROM:00008DE4t - jmp sub_1690A(pc) -; End of function sub_10344 +j_RefreshAllHUD: ; DATA XREF: ROM:00008DE4t + jmp RefreshAllHUD(pc) +; End of function j_RefreshAllHUD ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_10348: ; DATA XREF: sub_16DC+28t +sub_10348: ; DATA XREF: GameLoop+28t jmp loc_15C1C(pc) ; End of function sub_10348 @@ -149,7 +149,7 @@ sub_10348: ; DATA XREF: sub_16DC+28t ; Attributes: thunk -sub_1034C: ; DATA XREF: sub_16DC+54t +sub_1034C: ; DATA XREF: GameLoop+54t jmp sub_16420(pc) ; End of function sub_1034C @@ -158,7 +158,7 @@ sub_1034C: ; DATA XREF: sub_16DC+54t ; Attributes: thunk -sub_10350: ; DATA XREF: sub_16DC+64t +sub_10350: ; DATA XREF: GameLoop+64t jmp sub_10ACE(pc) ; End of function sub_10350 @@ -167,16 +167,16 @@ sub_10350: ; DATA XREF: sub_16DC+64t ; Attributes: thunk -sub_10354: ; DATA XREF: sub_4374+7Ct +j_LoadStatusGfx: ; DATA XREF: sub_4374+7Ct jmp LoadStatusGfx(pc) -; End of function sub_10354 +; End of function j_LoadStatusGfx ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_10358: ; DATA XREF: sub_16DC+2Et +sub_10358: ; DATA XREF: GameLoop+2Et jmp sub_16220(pc) ; End of function sub_10358 @@ -187,7 +187,7 @@ sub_10358: ; DATA XREF: sub_16DC+2Et ; Attributes: thunk -j_UpdateEkeEkeHUD: ; DATA XREF: sub_7052+110t +j_UpdateEkeEkeHUD: ; DATA XREF: CheckOpenChest+110t ; ROM:000086E0t ... jmp UpdateEkeEkeHUD(pc) ; End of function j_UpdateEkeEkeHUD @@ -207,7 +207,7 @@ j_MarkHUDForUpdate: ; DATA XREF: sub_295E+2At ; Attributes: thunk -j_AddToMaxHealth: ; DATA XREF: sub_7052+12Et +j_AddToMaxHealth: ; DATA XREF: CheckOpenChest+12Et ; GetItem+14t jmp AddToMaxHealth(pc) ; End of function j_AddToMaxHealth @@ -239,7 +239,7 @@ j_GetPlayerStatus: ; DATA XREF: ROM:ItemUseDetoxGrasst ; Attributes: thunk -sub_10380: ; DATA XREF: sub_16DC+76t +sub_10380: ; DATA XREF: GameLoop+76t jmp sub_16602(pc) ; End of function sub_10380 @@ -248,7 +248,7 @@ sub_10380: ; DATA XREF: sub_16DC+76t ; Attributes: thunk -sub_10384: ; DATA XREF: sub_16DC+A2t +sub_10384: ; DATA XREF: GameLoop+A2t jmp sub_166E8(pc) ; End of function sub_10384 @@ -273,8 +273,8 @@ sub_1038E: ; DATA XREF: LoadRoom_0+2Et ; --------------------------------------------------------------------------- -loc_10394: ; DATA XREF: ROM:loc_1A8AECt - jmp loc_164EA(pc) +j_PlayerDeath: ; DATA XREF: ROM:loc_1A8AECt + jmp PlayerDeath(pc) ; =============== S U B R O U T I N E ======================================= @@ -290,46 +290,46 @@ j_AddStatusEffect: ; DATA XREF: ROM:000089A0t ; Attributes: thunk -sub_1039C: ; DATA XREF: LoadSpecialAIt - jmp sub_178FE(pc) -; End of function sub_1039C +j_OnTick: ; DATA XREF: j_j_OnTickt + jmp OnTick(pc) +; End of function j_OnTick ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -j_LookupSpriteUnknownVal6F: ; DATA XREF: sub_1A83E6+3AEt - jmp LookupSpriteUnknownVal6F(pc) -; End of function j_LookupSpriteUnknownVal6F +j_LookupSpriteAnimFlags: ; DATA XREF: sub_1A83E6+3AEt + jmp LookupSpriteAnimFlags(pc) +; End of function j_LookupSpriteAnimFlags ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_103A4: ; DATA XREF: ROM:loc_8CEEt - jmp (sub_1A4BC).l -; End of function sub_103A4 +j_UnlockDoor: ; DATA XREF: ROM:loc_8CEEt + jmp (UnlockDoor).l +; End of function j_UnlockDoor ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -j_RefreshMaxHealthHUD: ; DATA XREF: sub_295E+24t +j_RefreshCurrentHealthHUD: ; DATA XREF: sub_295E+24t ; ROM:00008902t ... jmp RefreshCurrentHealthHUD(pc) -; End of function j_RefreshMaxHealthHUD +; End of function j_RefreshCurrentHealthHUD ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_103AE: ; DATA XREF: sub_7718+16t - jmp sub_16CC6(pc) -; End of function sub_103AE +j_RefreshSwordChargeHUD: ; DATA XREF: sub_7718+16t + jmp RefreshSwordChargeHUD(pc) +; End of function j_RefreshSwordChargeHUD ; =============== S U B R O U T I N E ======================================= @@ -356,9 +356,9 @@ sub_103B8: ; DATA XREF: ROM:001A95CEt ; Attributes: thunk -sub_103BE: ; DATA XREF: ROM:loc_8B2At - jmp (sub_1A4A4).l -; End of function sub_103BE +j_CheckUnlockDoor: ; DATA XREF: ROM:loc_8B2At + jmp (CheckUnlockDoor).l +; End of function j_CheckUnlockDoor ; =============== S U B R O U T I N E ======================================= @@ -401,7 +401,7 @@ sub_103D2: ; DATA XREF: sub_223At ; Attributes: thunk -sub_103D8: ; DATA XREF: sub_16DC+4Et +sub_103D8: ; DATA XREF: GameLoop+4Et jmp (sub_190D4).l ; End of function sub_103D8 diff --git a/code/sprites/spritefuncsjumptable2.asm b/code/sprites/spritefuncsjumptable2.asm index 264c2cf..9d9eb31 100644 --- a/code/sprites/spritefuncsjumptable2.asm +++ b/code/sprites/spritefuncsjumptable2.asm @@ -22,8 +22,8 @@ sub_1A4404: ; DATA XREF: sub_178C8:loc_178F6t ; Attributes: thunk -j_MoveSpriteOffscreen: ; DATA XREF: sub_178FE:loc_188BCt - ; sub_178FE+FFCt ... +j_MoveSpriteOffscreen: ; DATA XREF: OnTick:loc_188BCt + ; OnTick+FFCt ... jmp MoveSpriteOffscreen(pc) ; End of function j_MoveSpriteOffscreen diff --git a/code/sprites/sprites1.asm b/code/sprites/sprites1.asm index dbc0d85..a3eda77 100644 --- a/code/sprites/sprites1.asm +++ b/code/sprites/sprites1.asm @@ -32,8 +32,8 @@ j_LookupChestContents: ; DATA XREF: InitialiseSprites+214t ; Attributes: thunk -sub_9B00C: ; DATA XREF: sub_7052+AAt - ; sub_7052+E4t ... +sub_9B00C: ; DATA XREF: CheckOpenChest+AAt + ; CheckOpenChest+E4t ... jmp sub_9EB9C(pc) ; Church in cave ; End of function sub_9B00C @@ -83,8 +83,8 @@ loc_9B044: ; CODE XREF: LoadSpriteBehaviour+Aj lea SpriteBehaviourTable(pc),a1 adda.l d1,a1 move.l a1,BehaviourLUTPtr(a5) - move.b (a1)+,Unk2B(a5) - move.b (a1),Unk2A(a5) + move.b (a1)+,BehavCmd(a5) + move.b (a1),BehavParam(a5) rts ; End of function LoadSpriteBehaviour diff --git a/code/system/header.asm b/code/system/header.asm index 1bd9ed9..70f3fb0 100644 --- a/code/system/header.asm +++ b/code/system/header.asm @@ -1,93 +1,3 @@ -; -; +-------------------------------------------------------------------------+ -; | This file has been generated by The Interactive Disassembler (IDA) | -; | Copyright (c) 2015 Hex-Rays, | -; | License info: 48-3057-7374-2C | -; | Zhou Tao, Jiangsu Australia Sinuo Network Technology Co., Ltd. | -; +-------------------------------------------------------------------------+ -; -; Input MD5 : 04AE2B65F3A11A7504339E60735BEED8 -; Input CRC32 : FBBB5B97 - -; File Name : C:\Users\Tom\Documents\hacks\lstalker\landstalker.bin -; Format : Binary file -; Base Address: 0000h Range: 0000h - 200000h Loaded length: 200000h - - org $000000 - -; Processor : 68000 -; Target assembler: 680x0 Assembler in MRI compatible mode -; This file should be compiled with "as -M" - -; =========================================================================== - -; Segment type: Pure code -; segment "ROM" -ResetSP: dc.l $00000000 ; DATA XREF: ROM:loc_4B8o - ; ROM:EndGameo ... -ResetPC: dc.l EntryPoint -BusError: dc.l HandleGenericError -AddressError: dc.l HandleAddressError -IllegalInstr: dc.l HandleIllegalInst -DivBy0: dc.l HandleDiv0 -CHKInstr: dc.l HandleGenericError -TRAPVInstr: dc.l HandleGenericError -PrivViolation: dc.l HandleGenericError -Trace: dc.l HandleGenericError -LineA: dc.l HandleGenericError -LineF: dc.l HandleGenericError -Reserved0: dc.l HandleGenericError -Reserved1: dc.l HandleGenericError -Reserved2: dc.l HandleGenericError -UninitInterrupt:dc.l HandleGenericError -Reserved3: dc.l HandleGenericError -Reserved4: dc.l HandleGenericError -Reserved5: dc.l HandleGenericError -Reserved6: dc.l HandleGenericError -Reserved7: dc.l HandleGenericError -Reserved8: dc.l HandleGenericError -Reserved9: dc.l HandleGenericError -Reserved10: dc.l HandleGenericError -SpuriousInt: dc.l HandleGenericError -IRQ1: dc.l HandleUnexpectedInterrupt -EXT_Interrupt: dc.l HandleUnexpectedInterrupt -IRQ3: dc.l HandleUnexpectedInterrupt -HBlank_Interrupt:dc.l HandleHBlankInterrupt -IRQ5: dc.l HandleUnexpectedInterrupt -VBlank_Interrupt:dc.l HandleVBlankInterrupt -IRQ7: dc.l HandleIRQ7 -Trap00: dc.l Trap00Handler ; Play sound -Trap01: dc.l Trap01Handler -Trap02: dc.l Trap02Handler -Trap03: dc.l HandleUnexpectedInterrupt -Trap04: dc.l HandleUnexpectedInterrupt -Trap05: dc.l HandleUnexpectedInterrupt -Trap06: dc.l HandleUnexpectedInterrupt -Trap07: dc.l HandleUnexpectedInterrupt -Trap08: dc.l HandleUnexpectedInterrupt -Trap09: dc.l HandleUnexpectedInterrupt -Trap0A: dc.l HandleUnexpectedInterrupt -Trap0B: dc.l HandleUnexpectedInterrupt -Trap0C: dc.l HandleUnexpectedInterrupt -Trap0D: dc.l HandleUnexpectedInterrupt -Trap0E: dc.l HandleUnexpectedInterrupt -Trap0F: dc.l HandleUnexpectedInterrupt -FP_BranchUnorderedCond:dc.l HandleGenericError -FP_InexactResult:dc.l HandleGenericError -FP_Div0: dc.l HandleGenericError -FP_Underflow: dc.l HandleGenericError -FP_OperandError:dc.l HandleGenericError -FP_Overflow: dc.l HandleGenericError -FP_SignalingNAN:dc.l HandleGenericError -FP_UnimplementedType:dc.l HandleGenericError -MMU_ConfigError:dc.l HandleGenericError -MMU_IllegalOperation:dc.l HandleGenericError -MMU_AccessViolation:dc.l HandleGenericError -Reserved11: dc.l HandleGenericError -Reserved12: dc.l HandleGenericError -Reserved13: dc.l HandleGenericError -Reserved14: dc.l HandleGenericError -Reserved15: dc.l HandleGenericError ConsoleName: dc.b 'SEGA GENESIS ' Copyright: dc.b '(C)SEGA 1993.JUL' DomesticName: dc.b 'Landstalker ' @@ -107,7 +17,7 @@ SRamEnd: dc.l SRAM_End Memo: dc.b ' ' dc.b ' ' CountrySupport: dc.b 'U ' ; DATA XREF: AddStatusEffect+22t -SlowDown: dc.w $0000 ; DATA XREF: sub_16DC+9Ar +SlowDown: dc.w $0000 ; DATA XREF: GameLoop+9Ar BuildDate: dc.b '93/07/13 20:03' DebugModeEnable:dc.w $FFFF ; DATA XREF: HandleDirectionalInput:loc_18DCr ; ROM:CheckForDebugButtonsr ... diff --git a/code/system/regioncheck_routine.asm b/code/system/regioncheck_routine.asm index a7e6cf1..092c9bd 100644 --- a/code/system/regioncheck_routine.asm +++ b/code/system/regioncheck_routine.asm @@ -18,29 +18,29 @@ loc_11EA6C: ; CODE XREF: CheckRegion+4j loc_11EA7C: ; CODE XREF: CheckRegion+14j jsr (j_DisableDisplayAndInts).l - lea RegionErrorLine1(pc),a0 ; " DEVELOPED FOR USE ONLY WITH" - lea ((g_BackgroundBlocks+$886)).l,a1 + lea RegionErrorLine1(pc),a0 + lea ((g_ForegroundBlocks+$886)).l,a1 bsr.w sub_11EB40 move.b #$80,d1 cmpi.b #$80,d1 bne.s loc_11EAAA - lea RegionErrorNTSC(pc),a0 ; " NTSC GENESIS" - lea ((g_BackgroundBlocks+$A06)).l,a1 + lea RegionErrorNTSC(pc),a0 + lea ((g_ForegroundBlocks+$A06)).l,a1 bsr.w sub_11EB40 bra.s loc_11EAB8 ; --------------------------------------------------------------------------- loc_11EAAA: ; CODE XREF: CheckRegion+34j - lea RegionErrorPAL(pc),a0 ; "PAL AND FRENCH SECAM MEGA DRIVE" - lea ((g_BackgroundBlocks+$A06)).l,a1 + lea RegionErrorPAL(pc),a0 + lea ((g_ForegroundBlocks+$A06)).l,a1 bsr.w sub_11EB40 loc_11EAB8: ; CODE XREF: CheckRegion+44j - lea RegionErrorLine3(pc),a0 ; " SYSTEMS." - lea ((g_BackgroundBlocks+$B86)).l,a1 + lea RegionErrorLine3(pc),a0 + lea ((g_ForegroundBlocks+$B86)).l,a1 bsr.w sub_11EB40 jsr (j_EnableDisplayAndInts).l - lea ((g_BackgroundBlocks+$3FE)).l,a0 + lea ((g_ForegroundBlocks+$3FE)).l,a0 lea ($0000C000).l,a1 move.w #$0800,d0 moveq #$00000002,d1 diff --git a/code/system/regioncheck_strings.asm b/code/system/regioncheck_strings.asm index 0d02b3e..277c823 100644 --- a/code/system/regioncheck_strings.asm +++ b/code/system/regioncheck_strings.asm @@ -1,12 +1,12 @@ -RegionErrorLine1:dc.b $20, $20, $44, $45, $56, $45, $4C, $4F, $50, $45, $44, $20, $46, $4F, $52, $20 - ; DATA XREF: CheckRegion+1Et - dc.b $55, $53, $45, $20, $4F, $4E, $4C, $59, $20, $57, $49, $54, $48, $00 -RegionErrorNTSC:dc.b $20, $20, $20, $20, $20, $20, $20, $20, $20, $4E, $54, $53, $43, $20, $47, $45 - ; DATA XREF: CheckRegion+36t - dc.b $4E, $45, $53, $49, $53, $00 -RegionErrorPAL: dc.b $50, $41, $4C, $20, $41, $4E, $44, $20, $46, $52, $45, $4E, $43, $48, $20, $53 - ; DATA XREF: CheckRegion:loc_11EAAAt - dc.b $45, $43, $41, $4D, $20, $4D, $45, $47, $41, $20, $44, $52, $49, $56, $45, $00 -RegionErrorLine3:dc.b $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $53, $59, $53, $54, $45 - ; DATA XREF: CheckRegion:loc_11EAB8t - dc.b $4D, $53, $2E, $00 \ No newline at end of file +RegionErrorLine1:dc.b $20,$20,$44,$45,$56,$45,$4C,$4F,$50,$45,$44,$20,$46,$4F,$52,$20 + ; DATA XREF: CheckRegion+1Et + dc.b $55,$53,$45,$20,$4F,$4E,$4C,$59,$20,$57,$49,$54,$48,$00 +RegionErrorNTSC:dc.b $20,$20,$20,$20,$20,$20,$20,$20,$20,$4E,$54,$53,$43,$20,$47,$45 + ; DATA XREF: CheckRegion+36t + dc.b $4E,$45,$53,$49,$53,$00 +RegionErrorPAL: dc.b $50,$41,$4C,$20,$41,$4E,$44,$20,$46,$52,$45,$4E,$43,$48,$20,$53 + ; DATA XREF: CheckRegion:loc_11EAAAt + dc.b $45,$43,$41,$4D,$20,$4D,$45,$47,$41,$20,$44,$52,$49,$56,$45,$00 +RegionErrorLine3:dc.b $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$53,$59,$53,$54,$45 + ; DATA XREF: CheckRegion:loc_11EAB8t + dc.b $4D,$53,$2E,$00 diff --git a/code/system/savegame.asm b/code/system/savegame.asm index 9757b01..45d017a 100644 --- a/code/system/savegame.asm +++ b/code/system/savegame.asm @@ -69,9 +69,9 @@ loc_152C: ; CODE XREF: CheckSRAM+3Ej ; =============== S U B R O U T I N E ======================================= -sub_154C: ; CODE XREF: ROM:0000EFD8p +GetCurrentSaveSlot: ; CODE XREF: ROM:0000EFD8p move.b (g_SaveSlot).l,d0 -; End of function sub_154C +; End of function GetCurrentSaveSlot ; =============== S U B R O U T I N E ======================================= @@ -273,7 +273,7 @@ SaveGameRamPtrs:dc.l g_Flags ; Address ; DATA XREF: SaveGame+Ct dc.w $0001 ; Length dc.l g_HourCount ; Address dc.w $0001 ; Length - dc.l g_Vars ; Address + dc.l g_AdditionalFlags ; Address dc.w $001F ; Length dc.l g_PlayerStatus ; Address dc.w $0000 ; Length diff --git a/code/system/system.asm b/code/system/system.asm index 2094c88..1d1e682 100644 --- a/code/system/system.asm +++ b/code/system/system.asm @@ -1,6 +1,6 @@ ; --------------------------------------------------------------------------- -loc_4B8: ; CODE XREF: ROM:000016C6j +ResetAll: ; CODE XREF: ROM:000016C6j lea (ResetSP).w,sp bra.s loc_4CE ; --------------------------------------------------------------------------- @@ -21,7 +21,7 @@ loc_4CE: ; CODE XREF: ROM:000004BCj jmp (ResetGame).l ; --------------------------------------------------------------------------- -loc_4DC: ; CODE XREF: ROM:000016D8j +GameOver: ; CODE XREF: ROM:000016D8j lea (ResetSP).w,sp trap #$00 ; Trap00Handler ; --------------------------------------------------------------------------- @@ -172,7 +172,7 @@ loc_618: ; CODE XREF: ROM:0000060Ej move.w (a4),d0 moveq #$00000000,d0 movea.l d0,a6 - move.l a6,usp + move.l a6,usp moveq #$00000017,d1 loc_622: ; CODE XREF: ROM:00000628j @@ -440,8 +440,8 @@ loc_830: ; CODE XREF: WaitUntilZ80Ready+18j ; --------------------------------------------------------------------------- -RestoreBGM: ; CODE XREF: sub_7052+BEp - ; sub_7052+F8p +RestoreBGM: ; CODE XREF: CheckOpenChest+BEp + ; CheckOpenChest+F8p ; DATA XREF: ... movem.w d0,-(sp) bsr.s WaitUntilZ80Ready @@ -499,7 +499,7 @@ OrVDPReg: ; CODE XREF: j_OrVDPRegj ; =============== S U B R O U T I N E ======================================= -MaskVDPReg: ; CODE XREF: j_AndVDPRegj +MaskVDPReg: ; CODE XREF: j_MaskVDPRegj ; DisableDisplayAndInts-12j ... movem.l d0-d1/a0,-(sp) lea (g_VDPReg00_ModeSet1).l,a0 @@ -677,7 +677,7 @@ InitFadeFromBlackParams: ; CODE XREF: j_InitFadeFromBlackParamsj FadeFromBlack: ; CODE XREF: j_FadeFromBlackj ; ROM:00008DF0j bsr.s InitFadeFromBlackParams - bra.w loc_9AA + bra.w DoChangePaletteBrightness ; End of function FadeFromBlack @@ -700,7 +700,7 @@ FadeToBlack: ; CODE XREF: j_FadeToBlackj ; ROM:000004E4p bsr.s InitFadeToBlackParams -loc_9AA: ; CODE XREF: FadeFromBlack+2j +DoChangePaletteBrightness: ; CODE XREF: FadeFromBlack+2j move.w #$0006,d6 loc_9AE: ; CODE XREF: FadeToBlack+10j @@ -792,7 +792,7 @@ FadeFromWhite: ; CODE XREF: j_FadeFromWhitej move.w #$0C00,d3 move.w #-$0200,d4 move.w #$0E00,d7 - bra.w loc_A5E + bra.w DoWhiteFade ; --------------------------------------------------------------------------- FadeToWhite: ; CODE XREF: j_FadeToWhitej @@ -800,7 +800,7 @@ FadeToWhite: ; CODE XREF: j_FadeToWhitej move.w #$0200,d4 move.w #$0E00,d7 -loc_A5E: ; CODE XREF: FadeFromWhite+Cj +DoWhiteFade: ; CODE XREF: FadeFromWhite+Cj move.w #$0006,d6 loc_A62: ; CODE XREF: FadeFromWhite+4Cj @@ -870,7 +870,7 @@ loc_AD6: ; CODE XREF: BrightenColour+3Ej ClearAndRefreshVDPSpriteTableDMA: ; CODE XREF: j_CopyVDPSpriteTableDMAj - ; sub_26E8+Cp ... + ; LoadGame+Cp ... bsr.s ClearScrollPlanes bsr.s ClearVDPSpriteTable @@ -1333,7 +1333,7 @@ QueueHScrollDMAUpdate: ; CODE XREF: j_QueueHScrollDMAUpdatej FillHScrollData: ; CODE XREF: j_FillHScrollDataj - ; sub_906C+26p ... + ; InitScrollRegs+26p ... movem.l d7/a6,-(sp) lea (g_HorizontalScrollData).l,a6 @@ -1384,7 +1384,7 @@ QueueVSRAMUpdate: ; CODE XREF: j_QueueVSRAMUpdatej FillVSRAM: ; CODE XREF: j_FillVSRAMj - ; sub_906C+46p + ; InitScrollRegs+46p movem.l d7/a6,-(sp) lea (g_VSRAMData).l,a6 @@ -1505,7 +1505,7 @@ PowersOf10: dc.l 1000000000 ; DATA XREF: ConvertToBase10+4t ; =============== S U B R O U T I N E ======================================= -UpdateControllerInputs: ; CODE XREF: j_WaitForZ80j +UpdateControllerInputs: ; CODE XREF: j_UpdateControllerInputsj ; ROM:WaitForButtonPushp ... movem.l d5-d7/a5-a6,-(sp) move sr,d5 diff --git a/code/system/system_jmps.asm b/code/system/system_jmps.asm index 04659b4..f9effc4 100644 --- a/code/system/system_jmps.asm +++ b/code/system/system_jmps.asm @@ -353,10 +353,10 @@ j_OrVDPReg: ; CODE XREF: DisplayLithograph+Ep ; Attributes: thunk -j_AndVDPReg: ; CODE XREF: ROM:00015712p +j_MaskVDPReg: ; CODE XREF: ROM:00015712p ; DisplayIslandMap+1AEp jmp (MaskVDPReg).l -; End of function j_AndVDPReg +; End of function j_MaskVDPReg ; =============== S U B R O U T I N E ======================================= @@ -404,10 +404,10 @@ j_ConvertToBase10: ; CODE XREF: sub_F346+12p ; Attributes: thunk -j_WaitForZ80: ; CODE XREF: sub_F2E2p +j_UpdateControllerInputs: ; CODE XREF: sub_F2E2p ; HandleControlChars:loc_23216p ... jmp (UpdateControllerInputs).l -; End of function j_WaitForZ80 +; End of function j_UpdateControllerInputs ; --------------------------------------------------------------------------- jmp (WaitForButtonPush).l @@ -573,7 +573,7 @@ j_QueueHUDTilemapDMA: ; CODE XREF: sub_15914+34p ; Attributes: thunk sub_3BC: ; CODE XREF: ROM:0001576Ep - ; sub_178FE+13C8p ... + ; OnTick+13C8p ... jmp (sub_3456).l ; End of function sub_3BC @@ -602,7 +602,7 @@ j_SaveGame: ; CODE XREF: ROM:00025010p ; Attributes: thunk -j_CheckForCollision: ; CODE XREF: sub_178FE+12CCp +j_CheckForCollision: ; CODE XREF: OnTick+12CCp jmp (CheckForCollision).l ; End of function j_CheckForCollision @@ -631,20 +631,20 @@ sub_3E0: ; CODE XREF: ROM:000129C2p ; Attributes: thunk -sub_3E6: ; CODE XREF: sub_10ACE:loc_10C8Ep +j_FadeOutToDarkness: ; CODE XREF: sub_10ACE:loc_10C8Ep ; ROM:0001299Cp ... jmp (FadeOutToDarkness).l -; End of function sub_3E6 +; End of function j_FadeOutToDarkness ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_3EC: ; CODE XREF: ROM:000126D4p +j_WarpToRoom: ; CODE XREF: ROM:000126D4p ; ROM:00012A0Ap ... - jmp (loc_620E).l -; End of function sub_3EC + jmp (WarpToRoom).l +; End of function j_WarpToRoom ; =============== S U B R O U T I N E ======================================= @@ -661,10 +661,10 @@ j_CheckForRoomTransition: ; CODE XREF: ROM:000126C8p ; Attributes: thunk -sub_3F8: ; CODE XREF: sub_10ACE+18Ep +j_LoadSprites: ; CODE XREF: sub_10ACE+18Ep ; ROM:00012736p ... - jmp (sub_401C).l -; End of function sub_3F8 + jmp (LoadSprites).l +; End of function j_LoadSprites ; =============== S U B R O U T I N E ======================================= @@ -691,20 +691,20 @@ sub_404: ; CODE XREF: ROM:0001273Cp ; Attributes: thunk -sub_40A: ; CODE XREF: ROM:000128F6p +j_DoTileSwap: ; CODE XREF: ROM:000128F6p ; ROM:00012912p ... - jmp (sub_4B52).l -; End of function sub_40A + jmp (DoTileSwap).l +; End of function j_DoTileSwap ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk -sub_410: ; CODE XREF: sub_10ACE+20Cp +j_InitVDP: ; CODE XREF: sub_10ACE+20Cp ; ROM:00013308p ... - jmp (sub_8EA0).l -; End of function sub_410 + jmp (InitVDP).l +; End of function j_InitVDP ; =============== S U B R O U T I N E ======================================= @@ -794,7 +794,7 @@ j_RestoreBGM: ; CODE XREF: ROM:00014FD6j ; Attributes: thunk sub_44C: ; CODE XREF: ROM:00013C80p - jmp (sub_E154).l + jmp (WarpPadFx).l ; End of function sub_44C ; --------------------------------------------------------------------------- @@ -918,9 +918,9 @@ j_CheckIfLifestockSold: ; CODE XREF: InitialiseSprites+11Ap ; Attributes: thunk -sub_4A6: ; CODE XREF: ROM:00014D6Ep - jmp (loc_8D84).l -; End of function sub_4A6 +j_StartGame: ; CODE XREF: ROM:00014D6Ep + jmp (StartGame).l +; End of function j_StartGame ; --------------------------------------------------------------------------- diff --git a/code/system/vector_table.asm b/code/system/vector_table.asm new file mode 100644 index 0000000..422b7d6 --- /dev/null +++ b/code/system/vector_table.asm @@ -0,0 +1,90 @@ +; +; +-------------------------------------------------------------------------+ +; | This file has been generated by The Interactive Disassembler (IDA) | +; | Copyright (c) 2015 Hex-Rays, | +; | License info: 48-3057-7374-2C | +; | Zhou Tao, Jiangsu Australia Sinuo Network Technology Co., Ltd. | +; +-------------------------------------------------------------------------+ +; +; Input MD5 : 04AE2B65F3A11A7504339E60735BEED8 +; Input CRC32 : FBBB5B97 + +; File Name : C:\Users\Tom\Documents\hacks\lstalker\landstalker.bin +; Format : Binary file +; Base Address: 0000h Range: 0000h - 200000h Loaded length: 200000h + + org $000000 + +; Processor : 68000 +; Target assembler: 680x0 Assembler in MRI compatible mode +; This file should be compiled with "as -M" + +; =========================================================================== + +; Segment type: Pure code +; segment "ROM" +ResetSP: dc.l $00000000 ; DATA XREF: ROM:loc_4B8o + ; ROM:EndGameo ... +ResetPC: dc.l EntryPoint +BusError: dc.l HandleGenericError +AddressError: dc.l HandleAddressError +IllegalInstr: dc.l HandleIllegalInst +DivBy0: dc.l HandleDiv0 +CHKInstr: dc.l HandleGenericError +TRAPVInstr: dc.l HandleGenericError +PrivViolation: dc.l HandleGenericError +Trace: dc.l HandleGenericError +LineA: dc.l HandleGenericError +LineF: dc.l HandleGenericError +Reserved0: dc.l HandleGenericError +Reserved1: dc.l HandleGenericError +Reserved2: dc.l HandleGenericError +UninitInterrupt:dc.l HandleGenericError +Reserved3: dc.l HandleGenericError +Reserved4: dc.l HandleGenericError +Reserved5: dc.l HandleGenericError +Reserved6: dc.l HandleGenericError +Reserved7: dc.l HandleGenericError +Reserved8: dc.l HandleGenericError +Reserved9: dc.l HandleGenericError +Reserved10: dc.l HandleGenericError +SpuriousInt: dc.l HandleGenericError +IRQ1: dc.l HandleUnexpectedInterrupt +EXT_Interrupt: dc.l HandleUnexpectedInterrupt +IRQ3: dc.l HandleUnexpectedInterrupt +HBlank_Interrupt:dc.l HandleHBlankInterrupt +IRQ5: dc.l HandleUnexpectedInterrupt +VBlank_Interrupt:dc.l HandleVBlankInterrupt +IRQ7: dc.l HandleIRQ7 +Trap00: dc.l Trap00Handler ; Play sound +Trap01: dc.l Trap01Handler +Trap02: dc.l Trap02Handler +Trap03: dc.l HandleUnexpectedInterrupt +Trap04: dc.l HandleUnexpectedInterrupt +Trap05: dc.l HandleUnexpectedInterrupt +Trap06: dc.l HandleUnexpectedInterrupt +Trap07: dc.l HandleUnexpectedInterrupt +Trap08: dc.l HandleUnexpectedInterrupt +Trap09: dc.l HandleUnexpectedInterrupt +Trap0A: dc.l HandleUnexpectedInterrupt +Trap0B: dc.l HandleUnexpectedInterrupt +Trap0C: dc.l HandleUnexpectedInterrupt +Trap0D: dc.l HandleUnexpectedInterrupt +Trap0E: dc.l HandleUnexpectedInterrupt +Trap0F: dc.l HandleUnexpectedInterrupt +FP_BranchUnorderedCond:dc.l HandleGenericError +FP_InexactResult:dc.l HandleGenericError +FP_Div0: dc.l HandleGenericError +FP_Underflow: dc.l HandleGenericError +FP_OperandError:dc.l HandleGenericError +FP_Overflow: dc.l HandleGenericError +FP_SignalingNAN:dc.l HandleGenericError +FP_UnimplementedType:dc.l HandleGenericError +MMU_ConfigError:dc.l HandleGenericError +MMU_IllegalOperation:dc.l HandleGenericError +MMU_AccessViolation:dc.l HandleGenericError +Reserved11: dc.l HandleGenericError +Reserved12: dc.l HandleGenericError +Reserved13: dc.l HandleGenericError +Reserved14: dc.l HandleGenericError +Reserved15: dc.l HandleGenericError \ No newline at end of file diff --git a/code/text/stringfuncs1.asm b/code/text/stringfuncs1.asm index 3c28df1..6d25371 100644 --- a/code/text/stringfuncs1.asm +++ b/code/text/stringfuncs1.asm @@ -48,7 +48,7 @@ sub_22F66: ; CODE XREF: PrintString+38p bls.s locret_22FCA HandleNewLine: ; CODE XREF: HandleControlChars+4j - ; HandleControlChars:loc_2329Ap ... + ; HandleControlChars:HandleNewLineAndPromptp ... movem.w d0,-(sp) bsr.s sub_22F7C movem.w (sp)+,d0 @@ -111,7 +111,7 @@ sub_22FD2: ; CODE XREF: PrintString+24p cmpi.w #~$0015,d0 beq.s locret_22FF0 movem.l d0,-(sp) - bsr.w sub_23314 + bsr.w InsertNewline movem.l (sp)+,d0 movem.l (sp)+,d1 bra.w loc_22F52 @@ -175,10 +175,10 @@ loc_2304E: ; CODE XREF: GetNextChar+82j movea.l (dword_FF1848).l,a0 bsr.w DecodeChar move.l a0,(dword_FF1848).l - cmpi.b #CHR_55,d0 ; String begin + cmpi.b #CHR_STR_BEGIN,d0 ; String begin beq.s loc_23080 bcs.s loc_2307A - subi.b #CHR_56,d0 ; Down arrow prompt + subi.b #CHR_ARROW_PROMPT,d0 ; Down arrow prompt andi.w #$00FF,d0 add.w d0,d0 lea ControlChars(pc),a1 @@ -211,11 +211,11 @@ loc_23094: ; CODE XREF: GetNextChar+6j move.l a1,(dword_FF1844).l cmpi.w #$FFFF,d0 beq.s loc_230C0 - cmpi.w #CHR_69,d0 + cmpi.w #CHR_HYPHENATION_POINT,d0 beq.s loc_23094 - cmpi.w #CHR_6A,d0 + cmpi.w #CHR_BREAKING_SPACE,d0 beq.s loc_230BC - cmpi.w #CHR_6B,d0 + cmpi.w #CHR_BREAK_POINT,d0 beq.s loc_23094 rts ; --------------------------------------------------------------------------- @@ -244,7 +244,7 @@ ProcessChar: ; CODE XREF: PrintString:loc_22F60p loc_230D6: ; CODE XREF: ProcessChar+2j ; HandleControlChars+76j - cmpi.b #CHR_Colon,d0 + cmpi.b #CHR_BEGIN_TALK,d0 bne.s loc_230F4 andi.b #$01,(byte_FF1144).l ori.b #$22,(byte_FF1144).l @@ -310,15 +310,15 @@ HandleControlChars: ; CODE XREF: ProcessChar+8j ; FUNCTION CHUNK AT 0002332A SIZE 0000000C BYTES - bra.w loc_231CA + bra.w HandleYesNo ; --------------------------------------------------------------------------- bra.w HandleNewLine ; --------------------------------------------------------------------------- - bra.w loc_231DA + bra.w PopName ; --------------------------------------------------------------------------- bra.w HandleItemName ; --------------------------------------------------------------------------- - bra.w HandleEndOfString + bra.w HandleWaitForInput ; --------------------------------------------------------------------------- bra.w HandleSpeakerName ; --------------------------------------------------------------------------- @@ -326,19 +326,19 @@ HandleControlChars: ; CODE XREF: ProcessChar+8j ; --------------------------------------------------------------------------- bra.w locret_2320C ; --------------------------------------------------------------------------- - bra.w loc_2320E + bra.w Handle1sPauseOrInput ; --------------------------------------------------------------------------- - bra.w loc_23238 + bra.w Handle1_5sPauseOrInput ; --------------------------------------------------------------------------- - bra.w loc_2323E + bra.w Handle2sPauseOrInput ; --------------------------------------------------------------------------- - bra.w loc_23244 + bra.w Handle1sPause ; --------------------------------------------------------------------------- bra.w HandleNumericVariable ; --------------------------------------------------------------------------- - bra.w loc_2329A + bra.w HandleNewLineAndPrompt ; --------------------------------------------------------------------------- - bra.w sub_23314 + bra.w InsertNewline ; --------------------------------------------------------------------------- bra.w HandleContinuePrompt ; --------------------------------------------------------------------------- @@ -362,7 +362,7 @@ loc_231C4: ; CODE XREF: HandleControlChars+6Cj bra.w loc_230D6 ; --------------------------------------------------------------------------- -loc_231CA: ; CODE XREF: HandleControlCharsj +HandleYesNo: ; CODE XREF: HandleControlCharsj bsr.w sub_2313C bcs.s loc_231D4 bsr.w DMACopyTextboxTiles @@ -372,23 +372,23 @@ loc_231D4: ; CODE XREF: HandleControlChars+7Ej rts ; --------------------------------------------------------------------------- -loc_231DA: ; CODE XREF: HandleControlChars+8j - bsr.w sub_23336 - bra.w sub_2335C +PopName: ; CODE XREF: HandleControlChars+8j + bsr.w PopItem + bra.w CopyStringToBuffer ; --------------------------------------------------------------------------- HandleItemName: ; CODE XREF: HandleControlChars+Cj - bsr.w sub_23336 + bsr.w PopItem bsr.w LoadUncompressedString - bra.w sub_2335C + bra.w CopyStringToBuffer ; --------------------------------------------------------------------------- HandleSpeakerName: ; CODE XREF: HandleControlChars+14j - bsr.w sub_23314 - bsr.w sub_23336 - bsr.w sub_29470 - bsr.w sub_2335C - move.w #$0047,(a1)+ + bsr.w InsertNewline + bsr.w PopItem + bsr.w GetChrName + bsr.w CopyStringToBuffer + move.w #CHR_Colon,(a1)+ clr.w (a1)+ move.w #$FFFF,(a1)+ rts @@ -402,15 +402,15 @@ locret_2320C: ; CODE XREF: HandleControlChars+1Cj rts ; --------------------------------------------------------------------------- -loc_2320E: ; CODE XREF: HandleControlChars+20j - move.w #$003B,d0 +Handle1sPauseOrInput: ; CODE XREF: HandleControlChars+20j + move.w #00059,d0 loc_23212: ; CODE XREF: HandleControlChars+ECj ; HandleControlChars+F2j movem.w d2,-(sp) loc_23216: ; CODE XREF: HandleControlChars+DEj - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d1 andi.b #$70,d1 bne.s loc_23232 @@ -423,18 +423,18 @@ loc_23232: ; CODE XREF: HandleControlChars+D6j rts ; --------------------------------------------------------------------------- -loc_23238: ; CODE XREF: HandleControlChars+24j - move.w #$0059,d0 +Handle1_5sPauseOrInput: ; CODE XREF: HandleControlChars+24j + move.w #00089,d0 bra.s loc_23212 ; --------------------------------------------------------------------------- -loc_2323E: ; CODE XREF: HandleControlChars+28j - move.w #$0077,d0 +Handle2sPauseOrInput: ; CODE XREF: HandleControlChars+28j + move.w #00119,d0 bra.s loc_23212 ; --------------------------------------------------------------------------- -loc_23244: ; CODE XREF: HandleControlChars+2Cj - move.w #$003B,d0 +Handle1sPause: ; CODE XREF: HandleControlChars+2Cj + move.w #00059,d0 jmp (j_Sleep).l ; --------------------------------------------------------------------------- @@ -458,7 +458,7 @@ loc_23276: ; CODE XREF: HandleControlChars+122j rts ; --------------------------------------------------------------------------- -HandleEndOfString: ; CODE XREF: HandleControlChars+10j +HandleWaitForInput: ; CODE XREF: HandleControlChars+10j movem.w d2,-(sp) loc_23284: ; CODE XREF: HandleControlChars+13Cj @@ -473,7 +473,7 @@ loc_2328E: ; CODE XREF: HandleControlChars+146j bra.s loc_23232 ; --------------------------------------------------------------------------- -loc_2329A: ; CODE XREF: HandleControlChars+34j +HandleNewLineAndPrompt: ; CODE XREF: HandleControlChars+34j bsr.w HandleNewLine HandleContinuePrompt: ; CODE XREF: HandleControlChars+3Cj @@ -502,7 +502,7 @@ loc_232B8: ; CODE XREF: HandleControlChars+172j sub_232CE: ; CODE XREF: HandleControlChars+13Ap ; HandleControlChars+144p ... - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d1 andi.b #$70,d1 rts @@ -532,7 +532,7 @@ loc_232F4: ; CODE XREF: sub_232E0+10j ; =============== S U B R O U T I N E ======================================= -sub_23314: ; CODE XREF: sub_22FD2+Ep +InsertNewline: ; CODE XREF: sub_22FD2+Ep ; HandleControlChars+38j ... move.b (byte_FF1144).l,d2 lsr.b #$01,d2 @@ -540,7 +540,7 @@ sub_23314: ; CODE XREF: sub_22FD2+Ep cmp.w (word_FF1194).l,d2 bne.w HandleNewLine rts -; End of function sub_23314 +; End of function InsertNewline ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR HandleControlChars @@ -550,7 +550,7 @@ locret_2332A: ; CODE XREF: HandleControlChars+54j ; --------------------------------------------------------------------------- loc_2332C: ; CODE XREF: HandleControlChars+64j - bsr.s sub_23336 + bsr.s PopItem move.b d1,(byte_FF112A).l rts ; END OF FUNCTION CHUNK FOR HandleControlChars @@ -558,13 +558,13 @@ loc_2332C: ; CODE XREF: HandleControlChars+64j ; =============== S U B R O U T I N E ======================================= -sub_23336: ; CODE XREF: HandleControlChars:loc_231DAp +PopItem: ; CODE XREF: HandleControlChars:PopNamep ; HandleControlChars:HandleItemNamep ... movea.l (dword_FF184C).l,a1 move.w (a1)+,d1 move.l a1,(dword_FF184C).l rts -; End of function sub_23336 +; End of function PopItem ; --------------------------------------------------------------------------- @@ -589,19 +589,19 @@ loc_23354: ; CODE XREF: ROM:0002334Aj ; =============== S U B R O U T I N E ======================================= -sub_2335C: ; CODE XREF: HandleControlChars+8Ej +CopyStringToBuffer: ; CODE XREF: HandleControlChars+8Ej ; HandleControlChars+9Aj ... lea (unk_FF119E).l,a1 move.l a1,(dword_FF1844).l -loc_23368: ; CODE XREF: sub_2335C+12j +loc_23368: ; CODE XREF: CopyStringToBuffer+12j clr.w d0 move.b (a2)+,d0 move.w d0,(a1)+ dbf d7,loc_23368 move.w #$FFFF,(a1) rts -; End of function sub_2335C +; End of function CopyStringToBuffer ; --------------------------------------------------------------------------- ControlChars: dc.w ~$0015 ; DATA XREF: GetNextChar+2Ct diff --git a/code/text/stringfuncs2.asm b/code/text/stringfuncs2.asm index beb83cf..dd4d5fc 100644 --- a/code/text/stringfuncs2.asm +++ b/code/text/stringfuncs2.asm @@ -17,7 +17,7 @@ sub_2343A: ; DATA XREF: sub_22EE8t RefreshAndClearTextbox: ; CODE XREF: sub_2343Ap ; DATA XREF: j_RefreshAndClearTextboxt movem.l d0-a6,-(sp) - bsr.s ClearTextbox + bsr.s ReloadTextbox bsr.w ReloadTextboxSprites movem.l (sp)+,d0-a6 rts @@ -31,7 +31,7 @@ SetUpTextDisplay: ; DATA XREF: j_SetUpTextDisplayt move.w #$8AB8,d0 ; HINT on line 184 move.w #$0001,d1 bsr.s SetVDPForTextbox - bsr.s ClearTextbox + bsr.s ReloadTextbox bra.w ReloadTextboxSprites ; End of function SetUpTextDisplay @@ -81,19 +81,19 @@ TestIfInventoryIsOpen: ; CODE XREF: sub_22F7C:loc_22F8Ep ; =============== S U B R O U T I N E ======================================= -ClearTextbox: ; CODE XREF: RefreshAndClearTextbox+4p +ReloadTextbox: ; CODE XREF: RefreshAndClearTextbox+4p ; SetUpTextDisplay+Ap ... bsr.s LoadTextboxTilemap bsr.s ClearTextboxTiles bsr.w DMACopyTextboxTiles rts -; End of function ClearTextbox +; End of function ReloadTextbox ; =============== S U B R O U T I N E ======================================= -LoadTextboxTilemap: ; CODE XREF: ClearTextboxp +LoadTextboxTilemap: ; CODE XREF: ReloadTextboxp clr.w (g_VDPSpr79_Y).l move.w #$0001,(word_FF1194).l move.b #$01,(byte_FF1129).l @@ -147,7 +147,7 @@ loc_2351E: ; CODE XREF: ReloadTextboxSprites+10j ; =============== S U B R O U T I N E ======================================= -ClearTextboxTiles: ; CODE XREF: ClearTextbox+2p +ClearTextboxTiles: ; CODE XREF: ReloadTextbox+2p tst.b (byte_FF1128).l beq.w loc_2353A nop diff --git a/code/text/stringfuncs3.asm b/code/text/stringfuncs3.asm index 1ce0117..690b3b3 100644 --- a/code/text/stringfuncs3.asm +++ b/code/text/stringfuncs3.asm @@ -3,7 +3,7 @@ InitHuffmanDecomp: ; CODE XREF: PrintString+1Ap - move.b #CHR_55,(g_curDecomprChar).l ; 1st char is always 55 + move.b #CHR_STR_BEGIN,(g_curDecomprChar).l ; 1st char is always 55 clr.w (word_FF1922).l clr.w (word_FF1920).l rts @@ -105,7 +105,7 @@ loc_24778: ; CODE XREF: YesNoPrompt+AEj loc_2478C: ; CODE XREF: YesNoPrompt+60j jsr (j_WaitUntilVBlank).l - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d0 and.b d2,d0 andi.b #$70,d0 @@ -167,7 +167,7 @@ loc_24822: ; CODE XREF: YesNoPrompt+86j sub_2482C: ; DATA XREF: sub_22E88t bsr.w sub_24998 - bsr.w ClearTextbox + bsr.w ReloadTextbox move.w #$0050,(word_FF1194).l move.w #$0002,d0 jsr (sub_22EC8).l @@ -203,7 +203,7 @@ loc_24898: ; CODE XREF: sub_2488A+6Aj loc_248AC: ; CODE XREF: sub_2488A+1Aj jsr (j_WaitUntilVBlank).l - jsr (j_WaitForZ80).l + jsr (j_UpdateControllerInputs).l move.b (g_Controller1State).l,d0 and.b d2,d0 andi.b #$70,d0 diff --git a/code/text/stringfuncsjumptable.asm b/code/text/stringfuncsjumptable.asm index 7c248d8..0817b9a 100644 --- a/code/text/stringfuncsjumptable.asm +++ b/code/text/stringfuncsjumptable.asm @@ -1,12 +1,4 @@ - ; In game character set: - ; _0123456789ABCDE - ; FGHIJKLMNOPQRSTU - ; VWXYZabcdefghijk - ; lmnopqrstuvwxyz* - ; .,?!/<>:-'"%#&() - ; ={UL}{UR}{DR}{DL} - ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk @@ -30,7 +22,7 @@ sub_22E8C: ; DATA XREF: CheckForMenuOpen+96t ; Attributes: thunk j_PrintString: ; CODE XREF: DisplayText+6p - ; DATA XREF: sub_7052+B8t ... + ; DATA XREF: CheckOpenChest+B8t ... jmp PrintString(pc) ; End of function j_PrintString @@ -49,10 +41,10 @@ j_RefreshAndClearTextbox: ; CODE XREF: LoadTextboxGraphics+Ep ; Attributes: thunk -j_ClearTextbox: ; CODE XREF: OpenTextbox+4p - ; DATA XREF: sub_178FE:loc_18E56t - jmp ClearTextbox(pc) -; End of function j_ClearTextbox +j_ReloadTextbox: ; CODE XREF: OpenTextbox+4p + ; DATA XREF: OnTick:EB_PrintTextt + jmp ReloadTextbox(pc) +; End of function j_ReloadTextbox ; =============== S U B R O U T I N E ======================================= @@ -68,7 +60,7 @@ j_SetTextboxHInt: ; CODE XREF: LoadTextboxGraphics+1Ep ; Attributes: thunk -j_SetUpTextDisplay: ; CODE XREF: ClearTextbox_0+Ep +j_SetUpTextDisplay: ; CODE XREF: ClearTextbox+Ep ; DATA XREF: LoadGameSelectScreen+Et ... jmp SetUpTextDisplay(pc) ; End of function j_SetUpTextDisplay @@ -98,7 +90,7 @@ sub_22EA8: ; DATA XREF: sub_620A+4Ct ; Attributes: thunk -sub_22EAC: ; DATA XREF: sub_178FE+FEEt +sub_22EAC: ; DATA XREF: OnTick+FEEt jmp sub_24A5C(pc) ; End of function sub_22EAC @@ -107,7 +99,7 @@ sub_22EAC: ; DATA XREF: sub_178FE+FEEt ; Attributes: thunk -sub_22EB0: ; DATA XREF: sub_178FE+105At +sub_22EB0: ; DATA XREF: OnTick+105At jmp sub_24A78(pc) ; End of function sub_22EB0 @@ -126,10 +118,10 @@ sub_22EB4: ; DATA XREF: sub_9BFE+34t ; Attributes: thunk -sub_22EB8: ; DATA XREF: sub_6E20+120t - ; sub_6E20+1CCt ... +j_PlayerTalk: ; DATA XREF: CheckTalk+120t + ; CheckTalk+1CCt ... jmp PlayerTalk(pc) -; End of function sub_22EB8 +; End of function j_PlayerTalk ; --------------------------------------------------------------------------- jmp ProcessScriptWord(pc) @@ -138,7 +130,7 @@ sub_22EB8: ; DATA XREF: sub_6E20+120t ; Attributes: thunk -sub_22EC0: ; DATA XREF: sub_26E8+2t +sub_22EC0: ; DATA XREF: LoadGame+2t jmp sub_24A34(pc) ; End of function sub_22EC0 @@ -157,7 +149,7 @@ j_LoadUncompressedString: ; DATA XREF: sub_D5E4+6t ; Attributes: thunk -sub_22EC8: ; DATA XREF: sub_178FE+156Ct +sub_22EC8: ; DATA XREF: OnTick+156Ct ; YesNoPrompt+10t ... jmp sub_22F1C(pc) ; End of function sub_22EC8 @@ -177,7 +169,7 @@ j_YesNoPrompt: ; CODE XREF: GetYesNoAnswer+Ap ; Attributes: thunk j_GetItemQtyAndMaxQty: ; DATA XREF: sub_620A+492t - ; sub_7052:loc_711Et ... + ; CheckOpenChest:loc_711Et ... jmp GetItemQtyAndMaxQty(pc) ; End of function j_GetItemQtyAndMaxQty @@ -186,15 +178,15 @@ j_GetItemQtyAndMaxQty: ; DATA XREF: sub_620A+492t ; Attributes: thunk -sub_22ED4: ; DATA XREF: ROM:000089D2t +j_SetItemQuantity: ; DATA XREF: ROM:000089D2t ; ROM:00008D1At ... - jmp AddItem(pc) -; End of function sub_22ED4 + jmp SetItemQuantity(pc) +; End of function j_SetItemQuantity ; --------------------------------------------------------------------------- jmp GetItemEquipSlot(pc) ; --------------------------------------------------------------------------- - jmp GetItemRSP(pc) + jmp GetItemBuyPrice(pc) ; =============== S U B R O U T I N E ======================================= @@ -219,8 +211,8 @@ j_RunTextCmd: ; DATA XREF: Trap01Handler+Et ; Attributes: thunk -sub_22EE8: ; DATA XREF: sub_7052+7At - ; sub_7052+1AEt ... +sub_22EE8: ; DATA XREF: CheckOpenChest+7At + ; CheckOpenChest+1AEt ... jmp sub_2343A(pc) ; End of function sub_22EE8 @@ -297,8 +289,8 @@ j_GetSaveLocationString: ; DATA XREF: sub_F578+16t ; Attributes: thunk -j_GetItem: ; DATA XREF: sub_7052+106t - ; sub_178FE:loc_18816t +j_GetItem: ; DATA XREF: CheckOpenChest+106t + ; OnTick:loc_18816t jmp GetItem(pc) ; End of function j_GetItem @@ -326,10 +318,10 @@ sub_22F10: ; DATA XREF: sub_3EB0E+28t ; Attributes: thunk -j_ClearTextbox_0: ; DATA XREF: ROM:00014B74t +j_ClearTextbox: ; DATA XREF: ROM:00014B74t ; ROM:00014BB6t ... - jmp ClearTextbox_0(pc) -; End of function j_ClearTextbox_0 + jmp ClearTextbox(pc) +; End of function j_ClearTextbox ; --------------------------------------------------------------------------- jmp SpellBook(pc) diff --git a/code/title/gameloadscreen1.asm b/code/title/gameloadscreen1.asm index 7c1fe2e..6ce5145 100644 --- a/code/title/gameloadscreen1.asm +++ b/code/title/gameloadscreen1.asm @@ -5,7 +5,7 @@ sub_F346: ; CODE XREF: sub_F78E+50p moveq #$00000000,d7 move.w (g_HourCount).l,d7 - mulu.w #$0064,d7 + mulu.w #00100,d7 add.w (g_MinuteCount).l,d7 jsr (j_ConvertToBase10).l lea (unk_FF0F96).l,a0 @@ -463,7 +463,7 @@ LoadGameStartPalette: ; CODE XREF: ROM:0000EECCp lea (g_Pal0Base).l,a1 bsr.s CopyPalette_0 lea (g_Pal0Base).l,a0 - lea g_Pal1Base-g_Pal0Base(a0),a1 + lea $00000020(a0),a1 bsr.w CopyPalette_0 lea $00000040(a0),a1 ; End of function LoadGameStartPalette diff --git a/code/title/gameloadscreen2.asm b/code/title/gameloadscreen2.asm index c570329..efaff2a 100644 --- a/code/title/gameloadscreen2.asm +++ b/code/title/gameloadscreen2.asm @@ -171,7 +171,7 @@ loc_F824: ; CODE XREF: sub_F81A+Cj loc_F852: ; CODE XREF: ROM:0000F848j lea (g_Pal0Base).l,a0 - lea g_Pal1Base-g_Pal0Base(a0),a1 + lea $00000020(a0),a1 moveq #$0000000F,d7 move.w #$0EEE,d1 @@ -188,7 +188,7 @@ loc_F862: ; CODE XREF: ROM:0000F86Aj loc_F87C: ; CODE XREF: ROM:0000F84Ej lea (g_Pal0Base).l,a0 - lea g_Pal1Base-g_Pal0Base(a0),a1 + lea $00000020(a0),a1 moveq #$0000000F,d7 loc_F888: ; CODE XREF: ROM:0000F88Aj diff --git a/landstalker_us.asm b/landstalker_us.asm index 0770dd9..a34acb7 100644 --- a/landstalker_us.asm +++ b/landstalker_us.asm @@ -11,6 +11,7 @@ Defines: include "code\include\landstalker.inc" org $000000 + include "code\system\vector_table.asm" include "code\system\header.asm" include "code\system\system_jmps.asm" include "code\system\system.asm" @@ -222,9 +223,16 @@ SpriteFrames: include "code\sprites\spriteframes.asm" include "code\sprites\spritefuncsjumptable2.asm" include "code\sprites\spritefuncs3.asm" SpritePalettes: include "code\sprites\spritepalettes.asm" + include "code\gamelogic\ai\enemies1.asm" include "code\gamelogic\ai\enemyai1.asm" -ProjectilePalette1: incbin "assets_packed\graphics\spritepalettes\projectile1.pal" + include "code\gamelogic\ai\enemies2.asm" include "code\gamelogic\ai\enemyai2.asm" + include "code\gamelogic\ai\enemies3.asm" + include "code\gamelogic\ai\enemyai3.asm" +ProjectilePalette1: incbin "assets_packed\graphics\spritepalettes\projectile1.pal" + include "code\gamelogic\ai\enemyai4.asm" + include "code\gamelogic\ai\enemies4.asm" + include "code\gamelogic\ai\enemyai5.asm" ProjectilePalette2: incbin "assets_packed\graphics\spritepalettes\projectile2.pal" PadTo $1AF800 BlocksetPrimaryPointers: include "code\pointertables\blocks\primaryblocksetpointers.asm" diff --git a/landstalker_us_expanded.asm b/landstalker_us_expanded.asm index 33261a4..1cec1a6 100644 --- a/landstalker_us_expanded.asm +++ b/landstalker_us_expanded.asm @@ -11,6 +11,7 @@ Defines: include "code\include\landstalker.inc" org $000000 + include "code\system\vector_table.asm" include "code\system\header.asm" include "code\system\system_jmps.asm" include "code\system\system.asm" @@ -214,9 +215,16 @@ SpriteFrames: include "code\sprites\spriteframes.asm" include "code\sprites\spritefuncsjumptable2.asm" include "code\sprites\spritefuncs3.asm" SpritePalettes: include "code\sprites\spritepalettes.asm" + include "code\gamelogic\ai\enemies1.asm" include "code\gamelogic\ai\enemyai1.asm" -ProjectilePalette1: incbin "assets_packed\graphics\spritepalettes\projectile1.pal" + include "code\gamelogic\ai\enemies2.asm" include "code\gamelogic\ai\enemyai2.asm" + include "code\gamelogic\ai\enemies3.asm" + include "code\gamelogic\ai\enemyai3.asm" +ProjectilePalette1: incbin "assets_packed\graphics\spritepalettes\projectile1.pal" + include "code\gamelogic\ai\enemyai4.asm" + include "code\gamelogic\ai\enemies4.asm" + include "code\gamelogic\ai\enemyai5.asm" ProjectilePalette2: incbin "assets_packed\graphics\spritepalettes\projectile2.pal" BlocksetPrimaryPointers: include "code\pointertables\blocks\primaryblocksetpointers.asm" BlocksetSecondaryPointers: include "code\pointertables\blocks\secondaryblocksetpointers.asm"