From 04196daf5f6be5afe8ba1e00bdd43b2c43d10875 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Wed, 3 Jun 2026 20:50:55 -0500 Subject: [PATCH] Rework map/hud loot icons to be more independent --- doorrando/hudadditions.asm | 2 +- gk/check_loot.asm | 115 +++++++++++++++++++++++++++++++------ gk/doors_dungeon_map.asm | 4 +- gk/draw_loot.asm | 4 +- gk/loot_hud.asm | 20 +------ gk/settings.asm | 55 +++++++++++------- menu/dr_sheet_dc.2bpp | Bin 2048 -> 2048 bytes menu/dr_sheet_dc.2bppc | Bin 1499 -> 1525 bytes 8 files changed, 138 insertions(+), 62 deletions(-) diff --git a/doorrando/hudadditions.asm b/doorrando/hudadditions.asm index 5a8af01..e10b421 100644 --- a/doorrando/hudadditions.asm +++ b/doorrando/hudadditions.asm @@ -33,7 +33,7 @@ DRHUD_DrawIndicators: DRHUD_BossIndicator: LDA.w DungeonID : CMP.b #$FF : BNE .in_dungeon LDA.w NpcItemIndicator : BEQ .early_exit - LDA.l ShowLootInHUD : BEQ .early_exit + LDA.l HudItems_enabled : BEQ .early_exit REP #$10 LDY.w #!NPCIcon : STY.w HUDMultiIndicator JMP DRHUD_Finished diff --git a/gk/check_loot.asm b/gk/check_loot.asm index 2b011db..9fd3c14 100644 --- a/gk/check_loot.asm +++ b/gk/check_loot.asm @@ -1,18 +1,15 @@ ; A = room_id ; out A = level of loot -CheckLoot: +CheckMapLoot: PHP REP #$30 - PHB : PHX : PHY + PHX STA.b $CA - LDA.b $06 : PHA LDA.b $0E : PHA - STZ.b $02 ; best item class found - - LDA.l ShowItems_default + LDA.l MapItems_default AND.w #$00FF STA.b $0E @@ -24,7 +21,7 @@ CheckLoot: LDA.l SaveDataWRAM, X AND.w #$000F BEQ + - LDA.l ShowItems_visited_tile + LDA.l MapItems_visited_tile AND.w #$00FF CMP.b $0E BCC + @@ -40,7 +37,7 @@ CheckLoot: LDA.l MapField AND.l DungeonMask, X BEQ + - LDA.l ShowItems_have_map + LDA.l MapItems_have_map AND.w #$00FF CMP.b $0E BCC + @@ -49,7 +46,7 @@ CheckLoot: + LDA.l CompassField AND.l DungeonMask, X BEQ + - LDA.l ShowItems_have_compass + LDA.l MapItems_have_compass AND.w #$00FF CMP.b $0E BCC + @@ -57,6 +54,84 @@ CheckLoot: + .skip_dungeon_checks + JMP GetLootLevelAndCleanUp + +; A = room_id +; out A = level of loot +CheckHudLoot: + PHP + REP #$30 + PHX + + STA.b $CA + + LDA.b $0E : PHA + ++ LDA.w DungeonID + AND.w #$00FF + CMP.w #$00FF + BEQ .cave + + TAX + + LDA.l HudItems_default_dungeon + AND.w #$00FF + STA.b $0E + + LDA.l MapField + AND.l DungeonMask, X + BEQ + + LDA.l HudItems_have_map + AND.w #$00FF + CMP.b $0E + BCC + + STA.b $0E + ++ LDA.l CompassField + AND.l DungeonMask, X + BEQ + + LDA.l HudItems_have_compass + AND.w #$00FF + CMP.b $0E + BCC + + STA.b $0E ++ + + BRA GetLootLevelAndCleanUp + +.cave + LDA.l HudItems_cave + AND.w #$00FF + STA.b $0E + ; intentional fall-through + +GetLootLevelAndCleanUp: + STZ.b $02 + + LDA.b $0E + AND.w #$00FF + BEQ + + JSL GetLootLevel ++ + + PLA : STA.b $0E + PLX + PLP + + LDA.b $02 +RTL + +; $CA = room_id +; $0E = level of details to return +; (1 - presence, 2 - compass or presence, 3 - value) +; out $02 = level of loot +GetLootLevel: + PHP + REP #$30 + PHB : PHX : PHY + LDA.b $06 : PHA + + STZ.b $02 ; best item class found LDA.l ItemSources : BIT.w #$0001 : BEQ + JSR CheckChests @@ -82,11 +157,9 @@ CheckLoot: JSR CheckNpcs .done - PLA : STA.b $0E PLA : STA.b $06 PLY : PLX : PLB PLP - LDA.b $02 RTL CheckChests: @@ -543,15 +616,19 @@ GetLootClass: CMP.w #$0080 : BNE .not_compass .compass - LDA.l AlwaysShowCompass + LDA.b $0E AND.w #$00FF - BNE .check_value + CMP.w #$0002 + BEQ .check_value .not_compass LDA.b $0E BEQ .done - CMP.w #$0001 - BEQ .value_set + CMP.w #$0003 + BCS .check_value + + LDA.w #$0001 + BRA .value_set .check_value LDA.l LootTypeMapping, X @@ -574,9 +651,13 @@ GetPotJunkClass: LDA.b $0E BEQ .done - CMP.w #$0001 - BEQ .value_set + CMP.w #$0003 + BCS .check_value + LDA.w #$0001 + BRA .value_set + +.check_value ; hardcode as junk for now LDA.w #$0002 diff --git a/gk/doors_dungeon_map.asm b/gk/doors_dungeon_map.asm index 15b8a8e..60c2300 100644 --- a/gk/doors_dungeon_map.asm +++ b/gk/doors_dungeon_map.asm @@ -150,7 +150,7 @@ DrawFullRoomTile: RTL DrawSingleRoomLoot: - LDA.l ShowLootOnMap : AND.w #$00FF : BNE + + LDA.l MapItems_enabled : AND.w #$00FF : BNE + RTL + PHX : PHY @@ -176,7 +176,7 @@ DrawSingleRoomLoot: LDA.b $CA AND.w #$F0FF - JSL CheckLoot + JSL CheckMapLoot ASL A : ASL A : ASL A diff --git a/gk/draw_loot.asm b/gk/draw_loot.asm index f72bbf1..10cea18 100644 --- a/gk/draw_loot.asm +++ b/gk/draw_loot.asm @@ -32,7 +32,7 @@ DrawLoot: LDA.l DRMode BNE .skip - LDA.l ShowLootOnMap + LDA.l MapItems_enabled BEQ .skip REP #$30 @@ -128,7 +128,7 @@ DrawSingleFloorLoot: LDA.w #$0000 BRA + .valid_room - JSL CheckLoot + JSL CheckMapLoot + ASL A : ASL A : ASL A diff --git a/gk/loot_hud.asm b/gk/loot_hud.asm index f7607c3..f61e838 100644 --- a/gk/loot_hud.asm +++ b/gk/loot_hud.asm @@ -45,7 +45,7 @@ UpdateLootHUD: PHX : PHY SEP #$30 - LDA.l ShowLootInHUD : BEQ .setting_off + LDA.l HudItems_enabled : BEQ .setting_off LDA.b IndoorsFlag : BEQ .done REP #$30 @@ -77,23 +77,7 @@ UpdateLootHUD: ASL A : ASL A : ASL A : ASL A ORA.b RoomIndex .check - JSL CheckLoot - - SEP #$30 - CMP.l ShowItems_hud_cap - BCC + - LDA.l ShowItems_hud_cap -+ - - LDX.w DungeonID - CPX.b #$FF - BNE + - CMP.l ShowItems_cave_cap - BCC + - LDA.l ShowItems_cave_cap -+ - - REP #$30 + JSL CheckHudLoot ASL A : TAX LDA.l HUDLootTypeIcons, X diff --git a/gk/settings.asm b/gk/settings.asm index b7ca867..728e33f 100644 --- a/gk/settings.asm +++ b/gk/settings.asm @@ -52,7 +52,7 @@ dw $2DCB, $6DCB, $ADCB, $EDCB ; 01 - unknown - dot dw $29EB, $69EB, $29FB, $69FB ; 02 - junk - pot dw $29CA, $69CA, $29DA, $29DB ; 03 - small key dw $29E9, $69E9, $29F9, $69F9 ; 04 - triforce piece -dw $29DD, $69DD, $A9DD, $E9DD ; 05 - safety - plus +dw $29DD, $69DD, $A9DD, $E9DD ; 05 - health - plus dw $29EC, $69EC, $29FC, $69FC ; 06 - less important item - small chest dw $29E8, $69E8, $29F8, $69F8 ; 07 - compass dw $29CE, $29CF, $29DE, $29DF ; 08 - map @@ -87,7 +87,7 @@ dw $10A4 : db $04 : dl HeartContainer_Trinexx dw $1073 : db $05 : dl BonkKey_Desert ; torch dw $108C : db $05 : dl BonkKey_GTower ; torch -dw $1087 : db $05 : dl StandingKey_Hera ; investigate +dw $1087 : db $05 : dl StandingKey_Hera dw $10E1 : db $06 : dl HeartPiece_Forest_Thieves dw $10E2 : db $06 : dl HeartPiece_Lumberjack_Tree @@ -220,42 +220,53 @@ warnpc $B9FF08 org $B9FF08 ; $00 - do not show anything ; $01 - show presence of unobtained items -; $02 - show category of item -ShowItems: +; $02 - show compass if presence, otherwise presence of unobtained items +; $03 - show category of item +MapItems: .default db $00 .have_map db $00 .have_compass - db $02 + db $03 .visited_tile - db $01 + db $02 .reserved - skip 2 -.hud_cap - db $FF -.cave_cap + skip 3 +.enabled db $01 warnpc $B9FF10 org $B9FF10 -; ---P bepc +HudItems: +.cave + db $00 +.default_dungeon + db $00 +.have_map + db $01 +.have_compass + db $03 +.reserved + skip 3 +.enabled + db $01 +warnpc $B9FF18 + +org $B9FF20 +; ---P sepc ; P - dungeon prizes -; b - bosses (and torches in GT and desert, plus hera basement standing item) +; s - standing items (plus torches in GT and desert and bosses) ; e - enemy drops ; p - pots ; c - chests ItemSources: db $09 -; $B9FF11 -AlwaysShowCompass: - db $01 - -; $B9FF12 -ShowLootOnMap: - db $01 - -; $B9FF13 -ShowLootInHUD: +; B9FF21 +; a--- --mv +; a - always +; m - have map +; v - have visited dungeon +MapSwapping: db $01 diff --git a/menu/dr_sheet_dc.2bpp b/menu/dr_sheet_dc.2bpp index 72b9f7ab8a2f13b944ecb18ec865706ab0008c24..2fbc08a0d4063d01bf8528136575d9c00556b0ec 100644 GIT binary patch delta 97 zcmZn=Xb{*Cz-++4z+z)nr;?&nXI1A?V_^a0*I3nouu>XJO+^KS4`PEvTwFFcFf%gA oaWIG|m{j=uY5CJq;bCAPz#+h6z*E3irePysBOtMPK5HTq0N;igZ2$lO delta 97 zcmZn=Xb{*Cz-;gz2onGM{{Q;F`u}ne2ME@K;p+eC5H1S2xq+FHNsfVmgF%Er#DJxO cp@PAHfq_AQ!2$?l6f^`h1OztEXH8@R0AMOKBLDyZ diff --git a/menu/dr_sheet_dc.2bppc b/menu/dr_sheet_dc.2bppc index c327e131cafc7d91ce9581193f06f8330d6c145d..55c9d1853a498c30c215bfb75c2d31a762c45696 100644 GIT binary patch delta 164 zcmV;V09*gt3-t@Idjd%?{}liL1Ux!^BxE9fI(|faI5+?R1bjMvgJJ^(B4z}9czA_i z1A}S206w6 delta 138 zcmV;50CoTM3)>5@djc;s{|I6KP5<@(d;g~<|3$C=0;~ULGXEz40DnY(NB~JgfB%G2 z0tD0l!T)oLeFL+^0#*S?3Ml^W{(}DQI4C$cgFpodM0}F|y8gzxd_;v_1q*C^UUJ^@ szT&*(cz7ZJ00=_>6ag>