From 9a40f28a862a6eb63d1446b8ae31453cef4c2ad0 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Tue, 30 Dec 2025 16:36:55 -0600 Subject: [PATCH 01/73] Rename dungeonmap.asm -> bossicons.asm --- LTTP_RND_GeneralBugfixes.asm | 2 +- dungeonmap.asm => bossicons.asm | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename dungeonmap.asm => bossicons.asm (100%) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index bc99d6c..bf3a4f9 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -179,7 +179,7 @@ incsrc toast.asm incsrc fastcredits.asm incsrc msu.asm incsrc menu/overworldmap.asm ; Overwrites some code in bank $8A -incsrc dungeonmap.asm +incsrc bossicons.asm incsrc hextodec.asm incsrc multiworld.asm incsrc textrenderer.asm diff --git a/dungeonmap.asm b/bossicons.asm similarity index 100% rename from dungeonmap.asm rename to bossicons.asm -- 2.43.0 From 10ced3c9c645739cc8c3aca1c74491d08600348a Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Tue, 30 Dec 2025 21:56:48 -0600 Subject: [PATCH 02/73] Big pass at dungeon item indicators --- LTTP_RND_GeneralBugfixes.asm | 16 +- dungeon_map/blink_loot.asm | 99 ++++++++ dungeon_map/check_loot.asm | 251 +++++++++++++++++++++ dungeon_map/data/item_mapping.asm | 261 ++++++++++++++++++++++ dungeon_map/data/supertile_shapes.asm | 256 +++++++++++++++++++++ dungeon_map/draw_loot.asm | 130 +++++++++++ dungeon_map/draw_rooms.asm | 84 +++++++ dungeon_map/dungeon_switch.asm | 101 +++++++++ dungeon_map/hooks.asm | 105 +++++++++ dungeon_map/main.asm | 33 +++ dungeon_map/map_bg3.asm | 96 ++++++++ dungeon_map/settings.asm | 83 +++++++ enemizer/underworld_sprites.asm | 6 +- keydrop/standing_items.asm | 12 +- menu/{drsheetdc.2bpp => dr_sheet_dc.2bpp} | Bin 2048 -> 2048 bytes menu/dr_sheet_dc.2bppc | Bin 0 -> 1460 bytes menu/drsheetdc.2bppc | Bin 1713 -> 0 bytes menu/map_icons.3bpp | Bin 0 -> 3072 bytes menu/map_icons_1.3bppc | Bin 0 -> 479 bytes menu/map_icons_2.3bppc | Bin 0 -> 668 bytes menu/map_sheet_d4.3bpp | Bin 0 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 0 -> 989 bytes vanillalabels.asm | 1 + 23 files changed, 1525 insertions(+), 9 deletions(-) create mode 100644 dungeon_map/blink_loot.asm create mode 100644 dungeon_map/check_loot.asm create mode 100644 dungeon_map/data/item_mapping.asm create mode 100644 dungeon_map/data/supertile_shapes.asm create mode 100644 dungeon_map/draw_loot.asm create mode 100644 dungeon_map/draw_rooms.asm create mode 100644 dungeon_map/dungeon_switch.asm create mode 100644 dungeon_map/hooks.asm create mode 100644 dungeon_map/main.asm create mode 100644 dungeon_map/map_bg3.asm create mode 100644 dungeon_map/settings.asm rename menu/{drsheetdc.2bpp => dr_sheet_dc.2bpp} (96%) create mode 100644 menu/dr_sheet_dc.2bppc delete mode 100644 menu/drsheetdc.2bppc create mode 100644 menu/map_icons.3bpp create mode 100644 menu/map_icons_1.3bppc create mode 100644 menu/map_icons_2.3bppc create mode 100644 menu/map_sheet_d4.3bpp create mode 100644 menu/map_sheet_d4.3bppc diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index bf3a4f9..6600fab 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -209,7 +209,11 @@ incsrc gloom.asm incsrc special_weapons.asm incsrc variable_ganon_vulnerability.asm incsrc pseudoflute.asm -warnpc $BA8000 +incsrc dungeon_map/main.asm +warnpc $B9F000 + +org $B9F000 +incsrc dungeon_map/settings.asm org $A38000 incsrc stats/credits.asm ; Statically mapped @@ -253,7 +257,7 @@ warnpc $B1A000 org $B1A000 GFX_HUD_Items: -incbin "menu/drsheetdc.2bppc" +incbin "menu/dr_sheet_dc.2bppc" warnpc $B1A800 org $B1A800 @@ -306,6 +310,14 @@ NewFontInverted: incbin "data/newfont_inverted.bin" SmallCharacters: incbin "data/smallchars.2bpp" + +DungeonMapIcons1: +incbin "menu/map_icons_1.3bppc" +DungeonMapIcons2: +incbin "menu/map_icons_2.3bppc" +MapSheetD4: +incbin "menu/map_sheet_d4.3bppc" + org $8CD7DF incsrc data/playernamecharmap.asm org $8CE73D diff --git a/dungeon_map/blink_loot.asm b/dungeon_map/blink_loot.asm new file mode 100644 index 0000000..d0e65e1 --- /dev/null +++ b/dungeon_map/blink_loot.asm @@ -0,0 +1,99 @@ +; we want the icons indicating what is left in a room to blink +; but we don't want to redraw to BG1 every few frames +; so we duplicate the left side of BG1 to a lower portion and just toggle vertical scroll + +BlinkLoot: + ; do not show icons if we're scrolling + LDA.w $0210 + BNE .hide + + LDA.b FrameCounter + AND.b #$10 + BEQ .show +.hide + LDA.b #$01 +.show + STZ.b $E6 + STA.w $E7 + JSL $8AE96B + RTL + +StartDoubleWrite: + ; what we wrote over + REP #$30 + STZ.w GFXStripes + + STZ.w $021B + RTL + +CheckDoubleWrite: + LDA.w $021C + BNE .done + + LDA.b #$08 + STA.w $021C + REP #$30 + JML $8AE20B + +.done + ; what we wrote over + REP #$10 + LDY.w GFXStripes + LDA.b #$FF + JML $8AE2E7 + +DrawMountain: + LDX.w GFXStripes + PHX + LDY.w #$0000 +.next_word + LDA.w $8AEFEF, Y + STA.w GFXStripes+2, X + INX : INX + INY : INY + CPY.w #$002A + BCC .next_word + + PLY + LDA.w $021B + BEQ .done + + ; if second copy of mountain, adjust VRAM addresses + SEP #$20 + LDA.w GFXStripes+$02, Y + ORA.w $021C + STA.w GFXStripes+$02, Y + + LDA.w GFXStripes+$08, Y + ORA.w $021C + STA.w GFXStripes+$08, Y + + LDA.w GFXStripes+$10, Y + ORA.w $021C + STA.w GFXStripes+$10, Y + + LDA.w GFXStripes+$20, Y + ORA.w $021C + STA.w GFXStripes+$20, Y + + LDA.w GFXStripes+$26, Y + ORA.w $021C + STA.w GFXStripes+$26, Y + REP #$20 + +.done + RTL + +WriteBigEndianAddressX: + ORA.w $021B + XBA + STA.w GFXStripes+2, X + AND.w #$FFF7 + RTL + +WriteBigEndianAddressY: + ORA.w $021B + XBA + STA.w GFXStripes+2, Y + AND.w #$FFF7 + RTL diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm new file mode 100644 index 0000000..4003fdd --- /dev/null +++ b/dungeon_map/check_loot.asm @@ -0,0 +1,251 @@ +; A = room_id +; out A = level of loot +CheckLoot: + PHP + REP #$30 + PHB : PHX : PHY + + STA.b $00 + ASL A + TAX + + LDA.b $06 : PHA + + STZ.b $02 ; best item class found + + JSR CheckChests + JSR CheckBoss + JSR CheckPots + JSR CheckEnemies + + PLA : STA.b $06 + PLY : PLX : PLB + PLP + LDA.b $02 + RTL + +CheckChests: + LDA.w #($81<<8) + PHA + PLB : PLB + + LDA.w #$0008 + STA.b $04 + + LDY.w #$FFFD +.increment_mask + LDA.b $04 + ASL A + STA.b $04 +.next_chest + INY #3 + CPY.w #$01F8 + BCS .done + + LDA.w RoomData_ChestItems, Y + AND.w #$7FFF + CMP.b $00 + BNE .next_chest + + LDA.l SaveDataWRAM, X + AND.b $04 + BNE .increment_mask ; already got item + + LDA.w RoomData_ChestItems+2, Y + AND.w #$00FF + JSR GetLootClass + BRA .increment_mask + +.done + RTS + +CheckBoss: + LDX.w #$FFFA +.next_boss + INX #6 + LDA.l MiscLocations, X + BPL .check + RTS + +.check + CMP.b $00 + BNE .next_boss + + TXY + CMP.b RoomIndex + BEQ .current_room + + ASL A + TAX + LDA.l SaveDataWRAM, X + BRA .continue + +.current_room + LDA.w RoomItemsTaken ; if checking our current room, $0403 has fresher flags + ASL #4 + +.continue + STA.b $04 + + TYX + LDA.l MiscLocations+2, X ; get bit of room data to check + AND.w #$00FF + ASL A + TAX + LDA.l DungeonMask, X + + TYX + BIT.b $04 + BNE .next_boss ; continue checking if we already got the item + + LDA.l MiscLocations+4, X + STA.b $05 + + LDA.l MiscLocations+3, X + STA.b $04 + + LDA.b [$04] + AND.w #$00FF + JSR GetLootClass + + BRA .next_boss + +CheckPots: + LDA.b $00 + ASL A + TAX + + LDA.l UWPotsPointers, X + STA.b $04 + LDA.w #bank(UWPotsData) + STA.b $06 + + LDY.w #$0000 + LDX.w #$FFFF +.next_pot + LDA.b [$04], Y + CMP.w #$FFFF : BEQ .done + INX : INY : INY + BIT.w #$8000 : BNE .we_care ; marked as major item + LDA.b [$04], Y + AND.w #$00FF + CMP.w #$0008 : BEQ .small_key + INY + BRA .next_pot + +.small_key + LDA.w #$0024 +.we_care + INY + PHA + PHX + TXA : ASL A + EOR.w #$FFFF + CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want + TAX + LDA.l DungeonMask, X : STA.b $08 + + LDA.b $00 : ASL A : TAX + LDA.l RoomPotData, X + PLX + AND.b $08 + BEQ .not_obtained + PLA + BRA .next_pot + +.not_obtained + PLA + AND.w #$00FF + JSR GetLootClass + BRA .next_pot + +.done + RTS + +CheckEnemies: + LDA.b $00 + ASL A + TAX + + LDA.l UWSpritesPointers, X + INC A ; skip the layered/unlayered indicator + STA.b $04 + LDA.w #bank(UWSpritesData) + STA.b $06 + + LDY.w #$0000 + LDX.w #$FFFF +.next_enemy + LDA.b [$04], Y + AND.w #$00FF + CMP.w #$00FF : BEQ .done + INY : INY + LDA.b [$04], Y + AND.w #$00FF + CMP.w #$00F8 : BEQ .major ; major item + CMP.w #$00F9 : BEQ .major ; major item in other world + CMP.w #$00E4 : BEQ .vanilla_key + INY + BRA .next_enemy + +.vanilla_key + DEY : DEY + LDA.b [$04], Y + AND.w #$00FF + CMP.w #$00FD ; big key + BEQ .big_key + CMP.w #$00FE ; small key + BEQ .small_key + INY #3 ; false alarm -- probably hera basement key + BRA .next_enemy +.small_key + LDA.w #$0024 + BRA .proceed +.big_key + LDA.w #$0032 + BRA .proceed + +.major + DEY : DEY + LDA.b [$04], Y + AND.w #$00FF + +.proceed + INX + INY : INY : INY + + PHA + PHX + TXA : ASL A + TAX + LDA.l DungeonMask, X : STA.b $08 + + LDA.b $00 : ASL A : TAX + LDA.l SpriteDropData, X + PLX + AND.b $08 + BEQ .not_obtained + PLA + BRA .next_enemy + +.not_obtained + PLA + AND.w #$00FF + JSR GetLootClass + BRA .next_enemy + +.done + RTS + +; A = item id +; updates "best loot" value if better +GetLootClass: + PHX + TAX + LDA.l LootTypeMapping, X + AND.w #$00FF + CMP.b $02 + BCC + + STA.b $02 ++ PLX + RTS diff --git a/dungeon_map/data/item_mapping.asm b/dungeon_map/data/item_mapping.asm new file mode 100644 index 0000000..1017def --- /dev/null +++ b/dungeon_map/data/item_mapping.asm @@ -0,0 +1,261 @@ +db $0A ; 00 - Fighter Sword and Shield +db $0A ; 01 - Master Sword +db $0A ; 02 - Tempered Sword +db $0A ; 03 - Butter Sword +db $05 ; 04 - Fighter Shield +db $05 ; 05 - Fire Shield +db $05 ; 06 - Mirror Shield +db $0A ; 07 - Fire Rod +db $0A ; 08 - Ice Rod +db $0A ; 09 - Hammer +db $0A ; 0A - Hookshot +db $0A ; 0B - Bow +db $0A ; 0C - Boomerang +db $0A ; 0D - Powder +db $02 ; 0E - Bottle Refill (bee) +db $0A ; 0F - Bombos +db $0A ; 10 - Ether +db $0A ; 11 - Quake +db $0A ; 12 - Lamp +db $0A ; 13 - Shovel +db $0A ; 14 - Flute +db $0A ; 15 - Somaria +db $0A ; 16 - Bottle +db $05 ; 17 - Heartpiece +db $0A ; 18 - Byrna +db $0A ; 19 - Cape +db $0A ; 1A - Mirror +db $0A ; 1B - Glove +db $0A ; 1C - Mitts +db $0A ; 1D - Book +db $0A ; 1E - Flippers +db $0A ; 1F - Pearl +db $0C ; 20 - Crystal +db $0A ; 21 - Net +db $05 ; 22 - Blue Mail +db $05 ; 23 - Red Mail +db $03 ; 24 - Small Key +db $06 ; 25 - Compass +db $05 ; 26 - Heart Container from 4/4 +db $02 ; 27 - Bomb +db $02 ; 28 - 3 bombs +db $0A ; 29 - Mushroom +db $0A ; 2A - Red boomerang +db $0A ; 2B - Full bottle (red) +db $0A ; 2C - Full bottle (green) +db $0A ; 2D - Full bottle (blue) +db $05 ; 2E - Potion refill (red) +db $05 ; 2F - Potion refill (green) +db $05 ; 30 - Potion refill (blue) +db $02 ; 31 - 10 bombs +db $08 ; 32 - Big key +db $02 ; 33 - Map +db $02 ; 34 - 1 rupee +db $02 ; 35 - 5 rupees +db $02 ; 36 - 20 rupees +db $09 ; 37 - Green pendant +db $09 ; 38 - Blue pendant +db $09 ; 39 - Red pendant +db $0A ; 3A - Tossed bow +db $0A ; 3B - Silvers +db $0A ; 3C - Full bottle (bee) +db $0A ; 3D - Full bottle (fairy) +db $05 ; 3E - Boss heart +db $05 ; 3F - Sanc heart +db $02 ; 40 - 100 rupees +db $02 ; 41 - 50 rupees +db $02 ; 42 - Heart +db $02 ; 43 - Arrow +db $02 ; 44 - 10 arrows +db $02 ; 45 - Small magic +db $02 ; 46 - 300 rupees +db $02 ; 47 - 20 rupees green +db $0A ; 48 - Full bottle (good bee) +db $0A ; 49 - Tossed fighter sword +db $0A ; 4A - Active Flute +db $0A ; 4B - Boots + +db $05 ; 4C - Bomb capacity (50) +db $05 ; 4D - Arrow capacity (70) +db $0A ; 4E - 1/2 magic +db $0A ; 4F - 1/4 magic +db $0A ; 50 - Safe master sword +db $05 ; 51 - Bomb capacity (+5) +db $05 ; 52 - Bomb capacity (+10) +db $05 ; 53 - Arrow capacity (+5) +db $05 ; 54 - Arrow capacity (+10) +db $02 ; 55 - Programmable item 1 +db $02 ; 56 - Programmable item 2 +db $02 ; 57 - Programmable item 3 +db $0A ; 58 - Upgrade-only silver arrows +db $02 ; 59 - Rupoor +db $02 ; 5A - Nothing +db $02 ; 5B - Red clock +db $02 ; 5C - Blue clock +db $02 ; 5D - Green clock +db $0A ; 5E - Progressive sword +db $05 ; 5F - Progressive shield +db $05 ; 60 - Progressive armor +db $0A ; 61 - Progressive glove +db $02 ; 62 - RNG pool item (single) +db $02 ; 63 - RNG pool item (multi) +db $0A ; 64 - Progressive bow +db $0A ; 65 - Progressive bow +db $02 ; 66 - +db $02 ; 67 - +db $02 ; 68 - +db $02 ; 69 - +db $0E ; 6A - Triforce +db $0D ; 6B - Power star +db $0D ; 6C - Triforce Piece +db $02 ; 6D - Server request item +db $02 ; 6E - Server request item (dungeon drop) +db $02 ; 6F - + +db $02 ; 70 - Map of Light World +db $02 ; 71 - Map of Dark World +db $02 ; 72 - Map of Ganon's Tower +db $02 ; 73 - Map of Turtle Rock +db $02 ; 74 - Map of Thieves' Town +db $02 ; 75 - Map of Tower of Hera +db $02 ; 76 - Map of Ice Palace +db $02 ; 77 - Map of Skull Woods +db $02 ; 78 - Map of Misery Mire +db $02 ; 79 - Map of Dark Palace +db $02 ; 7A - Map of Swamp Palace +db $02 ; 7B - Map of Agahnim's Tower +db $02 ; 7C - Map of Desert Palace +db $02 ; 7D - Map of Eastern Palace +db $02 ; 7E - Map of Hyrule Castle +db $02 ; 7F - Map of Sewers + +db $06 ; 80 - Compass of Light World +db $06 ; 81 - Compass of Dark World +db $06 ; 82 - Compass of Ganon's Tower +db $06 ; 83 - Compass of Turtle Rock +db $06 ; 84 - Compass of Thieves' Town +db $06 ; 85 - Compass of Tower of Hera +db $06 ; 86 - Compass of Ice Palace +db $06 ; 87 - Compass of Skull Woods +db $06 ; 88 - Compass of Misery Mire +db $06 ; 89 - Compass of Dark Palace +db $06 ; 8A - Compass of Swamp Palace +db $06 ; 8B - Compass of Agahnim's Tower +db $06 ; 8C - Compass of Desert Palace +db $06 ; 8D - Compass of Eastern Palace +db $06 ; 8E - Compass of Hyrule Castle +db $06 ; 8F - Compass of Sewers + +db $08 ; 90 - Skull key +db $08 ; 91 - Reserved +db $08 ; 92 - Big key of Ganon's Tower +db $08 ; 93 - Big key of Turtle Rock +db $08 ; 94 - Big key of Thieves' Town +db $08 ; 95 - Big key of Tower of Hera +db $08 ; 96 - Big key of Ice Palace +db $08 ; 97 - Big key of Skull Woods +db $08 ; 98 - Big key of Misery Mire +db $08 ; 99 - Big key of Dark Palace +db $08 ; 9A - Big key of Swamp Palace +db $08 ; 9B - Big key of Agahnim's Tower +db $08 ; 9C - Big key of Desert Palace +db $08 ; 9D - Big key of Eastern Palace +db $08 ; 9E - Big key of Hyrule Castle +db $08 ; 9F - Big key of Sewers + +db $07 ; A0 - Small key of Sewers +db $07 ; A1 - Small key of Hyrule Castle +db $07 ; A2 - Small key of Eastern Palace +db $07 ; A3 - Small key of Desert Palace +db $07 ; A4 - Small key of Agahnim's Tower +db $07 ; A5 - Small key of Swamp Palace +db $07 ; A6 - Small key of Dark Palace +db $07 ; A7 - Small key of Misery Mire +db $07 ; A8 - Small key of Skull Woods +db $07 ; A9 - Small key of Ice Palace +db $07 ; AA - Small key of Tower of Hera +db $07 ; AB - Small key of Thieves' Town +db $07 ; AC - Small key of Turtle Rock +db $07 ; AD - Small key of Ganon's Tower +db $02 ; AE - Reserved +db $03 ; AF - Generic small key +db $0C ; B0 - Crystal 6 +db $0C ; B1 - Crystal 1 +db $0C ; B2 - Crystal 5 +db $0C ; B3 - Crystal 7 +db $0C ; B4 - Crystal 2 +db $0C ; B5 - Crystal 4 +db $0C ; B6 - Crystal 3 +db $02 ; B7 - Reserved +db $02 ; B8 - +db $02 ; B9 - +db $02 ; BA - +db $02 ; BB - +db $02 ; BC - +db $02 ; BD - +db $02 ; BE - +db $02 ; BF - +db $02 ; C0 - +db $02 ; C1 - +db $02 ; C2 - +db $02 ; C3 - +db $02 ; C4 - +db $02 ; C5 - +db $02 ; C6 - +db $02 ; C7 - +db $02 ; C8 - +db $02 ; C9 - +db $02 ; CA - +db $02 ; CB - +db $02 ; CC - +db $02 ; CD - +db $02 ; CE - +db $02 ; CF - +db $02 ; D0 - Bee trap +db $02 ; D1 - Apples +db $02 ; D2 - Fairy +db $02 ; D3 - Chicken +db $02 ; D4 - Big Magic +db $02 ; D5 - 5 Arrows +db $02 ; D6 - Good Bee +db $02 ; D7 - +db $02 ; D8 - +db $02 ; D9 - +db $02 ; DA - +db $02 ; DB - +db $02 ; DC - +db $02 ; DD - +db $02 ; DE - +db $02 ; DF - +db $02 ; E0 - +db $02 ; E1 - +db $02 ; E2 - +db $02 ; E3 - +db $02 ; E4 - +db $02 ; E5 - +db $02 ; E6 - +db $02 ; E7 - +db $02 ; E8 - +db $02 ; E9 - +db $02 ; EA - +db $02 ; EB - +db $02 ; EC - +db $02 ; ED - +db $02 ; EE - +db $02 ; EF - +db $02 ; F0 - +db $02 ; F1 - +db $02 ; F2 - +db $02 ; F3 - +db $02 ; F4 - +db $02 ; F5 - +db $02 ; F6 - +db $02 ; F7 - +db $02 ; F8 - +db $02 ; F9 - +db $02 ; FA - +db $02 ; FB - +db $02 ; FC - +db $02 ; FD - +db $02 ; FE - Server request (async) +db $02 ; FF - diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm new file mode 100644 index 0000000..71f34c4 --- /dev/null +++ b/dungeon_map/data/supertile_shapes.asm @@ -0,0 +1,256 @@ +db $0F, $00, $1F, $0E ; 00 +db $46, $46, $0E, $0E +db $00, $30, $14, $14 +db $0E, $1F, $20, $0F +db $65, $74, $2D, $2E ; 04 +db $FF, $FF, $FF, $FF ; 05 - unused +db $FF, $FF, $4F, $FF +db $00, $40, $00, $00 ; 07 +db $0E, $0E, $10, $20 ; 08 - useless fairy entrance +db $66, $66, $FF, $FF +db $44, $44, $0E, $0E +db $2E, $67, $2E, $70 ; 0B +db $31, $31, $24, $24 ; 0C +db $FF, $FF, $4F, $FF ; 0D +db $FF, $FF, $57, $5F ; 0E +db $FF, $FF, $FF, $FF ; 0F - unused and should never be, treated as non-id +db $00, $00, $20, $00 ; 10 +db $00, $30, $00, $10 +db $14, $14, $24, $24 +db $FF, $77, $FF, $77 ; 13 +db $11, $01, $11, $11 +db $34, $00, $01, $00 +db $75, $65, $2E, $2E ; 16 +db $40, $40, $00, $00 +db $10, $0F, $00, $0F ; 18 - useless fairy drop +db $0F, $03, $0F, $02 +db $6E, $6F, $6D, $75 ; 1A +db $2E, $67, $75, $FF +db $74, $74, $3E, $2E ; 1C +db $72, $67, $FF, $FF +db $FF, $68, $57, $4B +db $FF, $FF, $71, $57 ; 1F +db $FF, $FF, $4F, $FF ; 20 +db $00, $10, $00, $01 +db $0E, $0E, $15, $14 +db $FF, $FF, $FF, $6B +db $10, $10, $01, $20 ; 24 +db $FF, $FF, $FF, $FF ; 25 - unused +db $00, $3C, $14, $42 ; 26 +db $40, $40, $00, $00 +db $30, $1E, $24, $24 ; 28 +db $1F, $0E, $0F, $00 +db $10, $12, $10, $5E +db $12, $1E, $36, $00 +db $00, $00, $10, $10 ; 2C - hookshot cave fairies +db $FF, $FF, $FF, $FF ; 2D - unused +db $FF, $4F, $FF, $FF ; 2E +db $00, $1E, $00, $20 ; 2F - kakariko well +db $75, $FF, $65, $FF ; 30 +db $2E, $57, $2E, $57 ; 31 +db $14, $14, $44, $44 +db $FF, $FF, $4F, $FF ; 33 +db $00, $01, $40, $01 +db $4D, $77, $71, $3D ; 35 +db $15, $15, $15, $15 +db $77, $4D, $3D, $71 ; 37 +db $6C, $FF, $77, $FF ; 38 +db $FF, $FF, $72, $69 ; 39 +db $64, $64, $14, $14 +db $65, $FF, $75, $FF +db $00, $10, $00, $20 ; 3C - hookshot cave +db $2E, $2E, $75, $65 ; 3D +db $FF, $74, $72, $2E ; 3E +db $FF, $FF, $57, $57 +db $65, $FF, $2E, $57 ; 40 +db $00, $30, $14, $14 +db $44, $31, $0E, $0E +db $72, $2E, $FF, $75 +db $70, $3D, $70, $3D +db $6C, $74, $3D, $2E ; 45 +db $14, $14, $00, $00 +db $FF, $FF, $FF, $FF ; 47 - unused +db $FF, $FF, $FF, $FF ; 48 - unused +db $72, $2E, $72, $2E ; 49 +db $61, $61, $24, $24 +db $75, $74, $2E, $2E +db $FF, $65, $FF, $77 ; 4C +db $10, $30, $01, $00 +db $72, $57, $FF, $FF ; 4E +db $1E, $00, $01, $1E +db $FF, $77, $FF, $75 ; 50 +db $14, $14, $44, $44 +db $01, $1E, $04, $14 +db $65, $75, $2E, $2E +db $50, $50, $40, $00 ; 54 +db $00, $00, $20, $00 +db $74, $74, $2B, $3D +db $2E, $70, $63, $5B +db $00, $00, $21, $10 ; 58 - split +db $10, $00, $20, $00 +db $FF, $FF, $FF, $4F +db $FF, $77, $FF, $75 ; 5B +db $71, $6A, $FF, $74 ; 5C +db $2E, $67, $75, $FF ; 5D +db $FF, $68, $57, $4B ; 5E +db $FF, $FF, $7B, $FF +db $0F, $13, $0F, $22 ; 60 +db $47, $45, $26, $26 +db $06, $14, $22, $00 +db $65, $FF, $76, $FF ; 63 +db $FF, $FF, $57, $71 +db $FF, $FF, $71, $69 +db $00, $30, $10, $00 +db $00, $10, $00, $01 +db $00, $10, $01, $00 ; 68 +db $00, $00, $00, $00 +db $FF, $4C, $FF, $74 ; 6A +db $65, $75, $2E, $2E +db $65, $FF, $2E, $71 ; 6C +db $75, $FF, $77, $FF ; 6D +db $FF, $4E, $FF, $FF ; 6E +db $00, $00, $00, $00 +db $7A, $FF, $FF, $FF ; 70 +db $65, $FF, $2D, $70 ; 71 +db $44, $44, $04, $14 ; 72 - slight cheating I guess... +db $74, $74, $2E, $4B ; 73 +db $00, $00, $05, $05 +db $74, $74, $4A, $75 ; 75 +db $2D, $7C, $2E, $57 ; 76 +db $30, $00, $60, $60 +db $00, $00, $00, $00 ; 78 +db $00, $00, $00, $00 +db $00, $00, $00, $00 +db $70, $71, $4F, $4D +db $77, $74, $77, $77 +db $2E, $70, $77, $4F ; 7D +db $FF, $77, $53, $2D ; 7E +db $77, $FF, $55, $FF +db $67, $70, $FF, $FF ; 80 +db $10, $01, $00, $01 +db $5D, $14, $01, $00 +db $74, $75, $2B, $2E ; 83 +db $04, $05, $24, $24 +db $4B, $72, $2E, $5F ; 85 +db $00, $00, $00, $00 +db $67, $2E, $54, $74 +db $00, $00, $00, $00 ; 88 +db $00, $00, $0E, $0E +db $00, $00, $00, $00 +db $2D, $71, $2D, $70 +db $7E, $7F, $7D, $78 ; 8C +db $71, $2D, $70, $2D ; 8D +db $FF, $4E, $FF, $FF +db $00, $00, $00, $00 +db $FF, $FF, $4F, $FF ; 90 +db $FF, $65, $FF, $77 +db $00, $00, $01, $01 ; 92 - should it be split? idk +db $2C, $2C, $77, $74 ; 93 +db $00, $00, $00, $00 +db $FF, $77, $FF, $75 ; 95 +db $77, $FF, $2E, $57 +db $65, $74, $2E, $2F ; 97 +db $0E, $0E, $20, $40 ; 98 +db $1E, $00, $42, $14 +db $00, $00, $00, $00 +db $72, $70, $70, $71 +db $10, $10, $01, $01 +db $70, $72, $71, $70 +db $1E, $30, $00, $52 +db $0E, $1F, $11, $0F +db $72, $57, $FF, $FF ; A0 +db $00, $02, $1E, $12 +db $45, $45, $16, $06 +db $02, $0F, $12, $0F +db $FF, $FF, $4E, $FF ; A4 +db $65, $75, $2E, $2E +db $00, $30, $00, $00 +db $00, $0F, $0E, $1F +db $00, $03, $00, $12 ; A8 +db $17, $17, $16, $16 +db $03, $00, $12, $00 +db $FF, $FF, $5A, $FF +db $FF, $FF, $FF, $4F ; AC +db $00, $00, $00, $00 +db $0F, $34, $1F, $0E +db $11, $0F, $0E, $1F +db $2E, $67, $2E, $57 ; B0 +db $74, $75, $2E, $2D +db $14, $05, $10, $11 ; B2 - split this monster somehow? +db $4A, $FF, $4A, $FF +db $10, $00, $44, $44 +db $30, $00, $10, $00 +db $65, $74, $75, $75 +db $74, $FF, $75, $FF +db $FF, $4A, $FF, $74 ; B8 +db $15, $15, $14, $14 +db $73, $70, $FF, $FF +db $10, $01, $00, $01 +db $34, $10, $11, $10 +db $00, $00, $00, $00 +db $FF, $65, $FF, $4A +db $FF, $FF, $4D, $FF +db $2E, $67, $2E, $57 ; C0 +db $2E, $73, $2D, $73 +db $11, $13, $01, $13 +db $13, $00, $03, $00 +db $44, $44, $00, $01 ; C4 +db $75, $FF, $4A, $FF +db $10, $11, $10, $11 +db $11, $00, $01, $00 +db $FF, $FF, $FF, $4F ; C8 +db $14, $14, $24, $24 +db $00, $00, $00, $00 +db $00, $03, $14, $07 +db $13, $10, $07, $14 ; CC +db $00, $00, $00, $00 +db $FF, $78, $FF, $FF +db $00, $00, $00, $00 +db $2E, $67, $2E, $57 ; D0 +db $4E, $4F, $70, $70 +db $FF, $75, $FF, $55 +db $FF, $FF, $FF, $FF ; D3 - unused +db $FF, $FF, $FF, $FF ; D4 - unused +db $75, $FF, $76, $FF +db $75, $75, $74, $76 +db $00, $00, $00, $00 +db $FF, $75, $FF, $77 ; D8 +db $FF, $FF, $71, $71 +db $FF, $FF, $5C, $FF +db $14, $06, $24, $3F +db $06, $14, $03, $00 ; DC +db $00, $00, $00, $00 +db $0F, $00, $1F, $0E +db $0E, $0E, $24, $24 +db $2E, $67, $76, $FF ; E0 +db $00, $00, $20, $00 +db $00, $1E, $00, $20 +db $1E, $00, $20, $00 +db $00, $02, $20, $02 +db $02, $00, $26, $24 +db $00, $01, $10, $00 +db $01, $00, $00, $20 +db $30, $30, $40, $20 ; E8 more cheating +db $00, $00, $00, $00 +db $30, $0F, $20, $0F +db $0F, $30, $0F, $20 +db $00, $00, $00, $00 +db $30, $30, $00, $20 +db $00, $00, $00, $20 +db $1E, $00, $60, $60 +db $00, $02, $20, $02 ; F0 +db $02, $02, $00, $20 +db $1F, $0E, $0F, $20 +db $0E, $1F, $20, $0F +db $1F, $0E, $0F, $20 +db $0E, $1F, $20, $0F +db $00, $00, $00, $00 +db $00, $00, $00, $00 +db $30, $30, $60, $24 ; F8 +db $00, $01, $20, $00 +db $34, $00, $20, $00 +db $1E, $30, $24, $24 +db $00, $00, $00, $00 +db $30, $30, $24, $24 +db $0F, $0F, $00, $20 +db $00, $00, $00, $20 diff --git a/dungeon_map/draw_loot.asm b/dungeon_map/draw_loot.asm new file mode 100644 index 0000000..2d5393d --- /dev/null +++ b/dungeon_map/draw_loot.asm @@ -0,0 +1,130 @@ +RedrawLoot: + JSL DrawLoot + + ; what we wrote over + SEP #$20 + STZ.w $0210 + RTL + +FirstDrawLoot: + ; what we wrote over + LDA.b #$08 + STA.b $17 + +DrawLoot: + LDA.b $07 + STA.w $021B + + REP #$30 + PHX : PHY + + STZ.b $0E + + LDX.w DungeonID + LDA.l $8AF615, X + STA.b $0C + + SEP #$20 + LDA.l $8AF5E9, X + AND.b #$0F + CLC : ADC.w $020E + PHA + + JSR DrawSingleFloorLoot + + INC.b $0F + LDA.b #$80 + STA.b $0E + PLA : DEC A + JSR DrawSingleFloorLoot + + LDX.w GFXStripes + LDA.b #$FF + STA.w GFXStripes+2, X + + LDA.b #$01 + STA.b NMISTRIPES + + PLY : PLX + LDA.b #$00 + RTL + +DrawSingleFloorLoot: + REP #$20 + AND.w #$00FF + ASL A + TAX + + LDA.l $8AF605, X + TAY + STZ.b $06 + +.next_row + REP #$20 + LDA.w GFXStripes + TAX + CLC : ADC.w #$0030 + STA.w GFXStripes + + LDA.b $07 + AND.w #$00FF + XBA + LSR A : LSR A + CLC : ADC.w #$1092 + ADC.b $0E + XBA + STA.w GFXStripes+2, X + CLC : ADC.w #$2000 + STA.w GFXStripes+$1A, X + + LDA.w #$1300 + STA.w GFXStripes+$04, X + STA.w GFXStripes+$1C, X + +.next_room + REP #$20 + LDA.b ($0C), Y ; get room id + PHY + + AND.w #$00FF + CMP.w #$000F ; $0F = empty room + + BNE .valid_room + LDA.w #$0000 + BRA + +.valid_room + JSL CheckLoot ++ + ASL A : ASL A : ASL A + + TXY + TAX + + LDA.l LootTypeIcons+0, X + STA.w GFXStripes+$06, Y + LDA.l LootTypeIcons+2, X + STA.w GFXStripes+$08, Y + LDA.l LootTypeIcons+4, X + STA.w GFXStripes+$1E, Y + LDA.l LootTypeIcons+6, X + STA.w GFXStripes+$20, Y + + TYX + PLY + INY : INX #4 + + SEP #$20 + INC.b $06 + LDA.b $06 + CMP.b #$05 + BCC .next_room + + STZ.b $06 + INC.b $07 + LDA.b $07 + CMP.b #$05 + BCS .done + JMP .next_row + +.done + RTS diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm new file mode 100644 index 0000000..3e0e2d7 --- /dev/null +++ b/dungeon_map/draw_rooms.asm @@ -0,0 +1,84 @@ +; $CA has room_id +DrawDungeonMapRoom: + PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank + + ; base no-info palette + LDA.w #$0C00 + STA.b $0C + + PHX + LDX.w DungeonID + LDA.l MapField + AND.l DungeonMask, X + BEQ + + LDA.w #$1400 + STA.b $0C + LDA.b $0E + ORA.w #$8000 + STA.b $0E + + + + LDA.l CompassField + AND.l DungeonMask, X + BEQ + + LDA.b $0E + ORA.w #$4000 + STA.b $0E + + + PLX + + LDA.b $0E + BNE + + ; we haven't seen the supertile at all and don't have map or compass + LDA.w #$0F7B + STA.l $7F0042, X + ORA.w #$4000 + STA.l $7F0040, X + ORA.w #$8000 + STA.l $7F0000, X + AND.w #$BFFF + STA.l $7F0002, X + JMP .done + + + + AND.w #$000F + BEQ + + LDA.w #$1400 + STA.b $0C + + + + LDA.b $CA + AND.w #$00FF + ASL A : ASL A + TAY + + macro DrawQuadrant(quadrant, writeOffset) + ?DrawQuadrant: + LDA.w SupertileRoomShapes+, Y + AND.w #$00FF + CMP.w #$00FF : BEQ ?.empty + CLC : ADC.w #$0340 + ORA.w #(3-)<<14 + PHA + LDA.b $0E + AND.w #1<<(3-) + BNE ?.visited + PLA + ORA.b $0C + BRA ?.write + ?.visited + PLA + ORA.w #$0800 + ?.write + STA.l $7F0000+, X + ?.empty + endmacro + + %DrawQuadrant(0, $00) + %DrawQuadrant(1, $02) + %DrawQuadrant(2, $40) + %DrawQuadrant(3, $42) + +.done + PLB + RTL diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm new file mode 100644 index 0000000..52a222d --- /dev/null +++ b/dungeon_map/dungeon_switch.asm @@ -0,0 +1,101 @@ +CheckSwitchMap: + SEP #$20 + LDA.b $F6 + AND.b #$30 + BNE + + + ; what we wrote over + REP #$20 + LDA.w $8AF5E9, X + AND.w #$000F + CLC : ADC.b $00 + RTL + ++ PHA + TXA + ASL A + TAX + PLA + BIT.b #$20 + BNE + + INX ++ LDA.l DungeonMapData.prev, X + STA.w DungeonID + + LDA.b #$04 + STA.w $0200 + REP #$20 + LDA.w #$0000 + RTL + +DungeonMapSwitch_Submodule: +; LDA.b $9B +; STA.l $7EC229 + + JSL $80893D + JSL $80833F +; LDA.l $7EC229 +; STA.b $9B + + LDA.b #$09 + STA.b $14 + STA.w $0710 + + LDA.b #$01 + STA.w $0200 + STA.w $020D + STZ.w $021B + STZ.w $021C + STZ.b $06 + STZ.b $07 + + LDA.w DungeonID + ASL A + TAX + LDA.l DungeonMapData.floor, X + STA.b $A4 + + REP #$20 + JML $98BC8A + +SkipMapSprites: + STZ.b $00 + STZ.b $0E + + LDA.w $0200 + CMP.b #$04 + BNE + + JML $8AEAFC ++ LDA.l $7EC22A + CMP.w DungeonID + BEQ + + JML $8AEAF3 ++ JML $8AEADE + +CacheCurrentDungeon: + STA.l $7EC206 + SEP #$20 + LDA.w DungeonID + STA.l $7EC22A + LDA.b $A4 + STA.l $7EC22B + REP #$20 + RTL + +RestoreCurrentDungeon: + LDA.b #$F3 + STA.w $012C ; what we wrote over + LDA.l $7EC22A + STA.w DungeonID + LDA.l $7EC22B + STA.b $4A + RTL + +RestoreDungeonMapFloorIndex: + STZ.w $020F + LDA.w $021B + STA.b $07 + STZ.b $06 + LDA.b $0A + AND.b #$08 + RTL diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm new file mode 100644 index 0000000..a8b3428 --- /dev/null +++ b/dungeon_map/hooks.asm @@ -0,0 +1,105 @@ +; move aga boss icon to correct room +org $8AEE75 +db $08 + +; change dungeon map subsheet gfx in TR +org $80DDC9 +db $57 + +; Dungeon Map Palettes 2-5 left half +org $9BE544 +dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7 + +org $9BE564 +dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7 + +org $9BE584 +dw $0000, $71E7, $2DFF, $3B5F, $7FFF, $0000, $0018, $1CE7 + +org $9BE5A4 +dw $0000, $34E0, $7FFF, $2656, $34E0, $0000, $7EB5, $1CE7 + +; move BG1 to main screen in dungeon map screen +org $8AE130 +LDA.b #$17 : STA.b $1C +LDA.b #$00 : STA.b $1D + +; make skull icon blink opposite our loot icons +org $8AEE2B + AND.b #$10 + NOP #2 + db $F0 ; BEQ to replace BCS + +;================================================================================ +; Overhaul of Dungeon Map Screen +;-------------------------------------------------------------------------------- +org $8AE64F + PLX + JSL DrawDungeonMapRoom + JMP.w $8AE7F2 + +org $8AE152 + JSL LoadLastHUDPalette + +;================================================================================ +; Swapping Dungeon in Dungeon Map Screen (L/R) +;-------------------------------------------------------------------------------- +org $8AE9A7 + JSL CheckSwitchMap + BRA + : NOP #3 : + + +org $8AEF06 + DEC.b $13 + BNE + + JML DungeonMapSwitch_Submodule ++ RTL +warnpc $8AEF29 + +org $8AEADA + JML SkipMapSprites + +org $8AE9C7 + JSL RestoreDungeonMapFloorIndex + NOP + +org $98BC86 + JSL CacheCurrentDungeon + +org $8AEFC5 + JSL RestoreCurrentDungeon + NOP + +;================================================================================ +; Show indicators of what is left in each room +;-------------------------------------------------------------------------------- +org $8AEABA + JSL RedrawLoot + NOP + +org $8AE42B + JSL FirstDrawLoot + +;================================================================================ +; Blink indicators of what is left in each room +;-------------------------------------------------------------------------------- +org $8AE964 + JSL BlinkLoot + +org $8AE235 + JSL WriteBigEndianAddressX +org $8AE290 + JSL WriteBigEndianAddressY +org $8AE350 + JSL WriteBigEndianAddressY + +org $8AE206 + JSL StartDoubleWrite + NOP + +org $8AE2E0 + JML CheckDoubleWrite + NOP + +org $8AE21C + JSL DrawMountain + BRA + : NOP #9 : + diff --git a/dungeon_map/main.asm b/dungeon_map/main.asm new file mode 100644 index 0000000..07d0d4f --- /dev/null +++ b/dungeon_map/main.asm @@ -0,0 +1,33 @@ +pushpc +incsrc hooks.asm + +macro WriteGFXSheetPointer(sheet, location) + pushpc + org $80CFC0+ + db >>16 + + org $80D09F+ + db >>8 + + org $80D17E+ + db >>0 + + pullpc +endmacro + +%WriteGFXSheetPointer($C9, DungeonMapIcons1) +%WriteGFXSheetPointer($CA, DungeonMapIcons2) + +%WriteGFXSheetPointer($D5, DungeonMapIcons1) +%WriteGFXSheetPointer($D6, DungeonMapIcons2) + +%WriteGFXSheetPointer($D4, MapSheetD4) + +pullpc + +incsrc draw_rooms.asm +incsrc map_bg3.asm +incsrc dungeon_switch.asm +incsrc draw_loot.asm +incsrc check_loot.asm +incsrc blink_loot.asm diff --git a/dungeon_map/map_bg3.asm b/dungeon_map/map_bg3.asm new file mode 100644 index 0000000..acda9f3 --- /dev/null +++ b/dungeon_map/map_bg3.asm @@ -0,0 +1,96 @@ +pushpc +org $809383 +db BG3DungeonMapStripes>>0 + +org $80938C +db BG3DungeonMapStripes>>8 + +org $809395 +db BG3DungeonMapStripes>>16 +pullpc + +LoadLastHUDPalette: + ; what we wrote over + JSL $9BEE52 + + REP #$20 + LDA.l MapHUDPalette + STA.l PaletteBuffer+$3A + LDA.l MapHUDPalette+2 + STA.l PaletteBuffer+$3C + LDA.l MapHUDPalette+4 + STA.l PaletteBuffer+$3E + SEP #$20 + RTL + +BG3DungeonMapStripes: +; boring stuff from vanilla +dw $4260, $0100, $2100 +dw $4360, $0E40, $2101 +dw $4B60, $0100, $6100 +dw $6260, $2EC0, $2110 +dw $6B60, $2EC0, $6110 +dw $6263, $0100, $A100 +dw $6363, $0E40, $A101 +dw $6B63, $0100, $E100 +dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107 +dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117 +dw $4E60, $0100, $2100 +dw $4F60, $1A40, $2101 +dw $5D60, $0100, $6100 +dw $6E60, $2EC0, $2110 +dw $7D60, $2EC0, $6110 +dw $6E63, $0100, $A100 +dw $6F63, $1A40, $A101 +dw $7D63, $0100, $E100 +dw $0060, $7E40, $2111 +dw $8063, $3E41, $2111 +dw $0060, $3EC0, $2111 +dw $0160, $3EC0, $2111 +dw $0C60, $3EC0, $2111 +dw $0D60, $3EC0, $2111 +dw $1E60, $3EC0, $2111 +dw $1F60, $3EC0, $2111 + +; new stuff here: +; horizontal borders +dw $7260, $1340, $1D11 +dw $D261, $1340, $1D11 +dw $F261, $1340, $1D11 +dw $5263, $1340, $1D11 + +; vertical borders +dw $7160, $2FC0, $1D11 +dw $7C60, $2FC0, $1D11 + +macro TopOfSquares(start) + ; silly Big Endian + db >>8, , $00, $13 + dw $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C +endmacro + +macro BottomOfSquares(start) + ; silly Big Endian + db >>8, , $00, $13 + dw $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C +endmacro + +macro FullRow(start) + %TopOfSquares() + %BottomOfSquares(+$20) +endmacro + +; top grid +%FullRow($6092) +%FullRow($60D2) +%FullRow($6112) +%FullRow($6152) +%FullRow($6192) + +%FullRow($6212) +%FullRow($6252) +%FullRow($6292) +%FullRow($62D2) +%FullRow($6312) + +db $FF diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm new file mode 100644 index 0000000..bb3140b --- /dev/null +++ b/dungeon_map/settings.asm @@ -0,0 +1,83 @@ +; $B9F000 +SupertileRoomShapes: +incsrc data/supertile_shapes.asm +warnpc $B9F400 + +org $B9F400 +DungeonMapData: + db $02, $04, $00, $00 ; Sewers + db $1A, $00, $00, $00 ; Hyrule Castle + db $00, $06, $00, $00 ; Eastern Palace + db $04, $14, $00, $00 ; Desert Palace + db $14, $0C, $01, $00 ; Castle Tower + db $0C, $10, $00, $00 ; Swamp Palace + db $08, $0A, $00, $00 ; Palace of Darkness + db $12, $18, $00, $00 ; Misery Mire + db $0A, $16, $FF, $00 ; Skull Woods + db $16, $0E, $00, $00 ; Ice Palace + db $06, $08, $01, $00 ; Tower of Hera + db $10, $12, $00, $00 ; Thieves Town + db $0E, $1A, $00, $00 ; Turtle Rock + db $18, $02, $01, $00 ; Ganon's Tower + db $1A, $02, $00, $00 ; Extra + db $1A, $02, $00, $00 ; Extra + +struct DungeonMapData DungeonMapData + .prev: skip 1 + .next: skip 1 + .floor: skip 1 + .unused: skip 1 +endstruct + +; $B9F480 +LootTypeIcons: +dw $1300, $1300, $1300, $1300 ; 00 - nothing +dw $334D, $734D, $335D, $735D ; 01 - unknown - basic chest +dw $330D, $730D, $333D, $733D ; 02 - junk - pot +dw $3307, $3308, $3317, $3318 ; 03 - small key +dw $330A, $730A, $333A, $733A ; 04 - triforce piece +dw $330C, $730C, $333C, $733C ; 05 - safety - heart +dw $330E, $730E, $333E, $733E ; 06 - compass +dw $3307, $3308, $3317, $3318 ; 07 - small key +dw $3305, $7305, $3315, $3316 ; 08 - big key +dw $3309, $7309, $3339, $7339 ; 09 - pendant +dw $330F, $730F, $333F, $733F ; 0A - inventory item - big chest +dw $3309, $7309, $3339, $7339 ; 0B - also pendant +dw $3303, $7303, $B303, $F303 ; 0C - crystal +dw $330A, $730A, $333A, $733A ; 0D - triforce piece +dw $330B, $730B, $333B, $733B ; 0E - triforce +dw $1300, $1300, $1300, $1300 ; 0F - empty (reserved) + +; $B9F500 +LootTypeMapping: +incsrc data/item_mapping.asm + +; $B9F600 +; Room ID mappings to bit to check for presence and address of item drop +MiscLocations: +dw $00C8 : db $04 : dl HeartContainer_ArmosKnights +dw $0033 : db $04 : dl HeartContainer_Lanmolas +dw $0007 : db $04 : dl HeartContainer_Moldorm + +dw $005A : db $04 : dl HeartContainer_HelmasaurKing +dw $0006 : db $04 : dl HeartContainer_Arrghus +dw $0029 : db $04 : dl HeartContainer_Mothula +dw $00AC : db $04 : dl HeartContainer_Blind +dw $00DE : db $04 : dl HeartContainer_Kholdstare +dw $0090 : db $04 : dl HeartContainer_Vitreous +dw $00A4 : db $04 : dl HeartContainer_Trinexx + +dw $0073 : db $05 : dl BonkKey_Desert ; torch +dw $008C : db $05 : dl BonkKey_GTower ; torch +dw $0087 : db $05 : dl StandingKey_Hera + +dw $FFFF : db $FF : dl $FFFFFF ; Placeholders +dw $FFFF : db $FF : dl $FFFFFF +dw $FFFF : db $FF : dl $FFFFFF +dw $FFFF + +; $B9F682 +MapHUDPalette: + dw $0000, $3ED8, $2E54 + +; $B9F688 diff --git a/enemizer/underworld_sprites.asm b/enemizer/underworld_sprites.asm index cb80068..87f0e6f 100644 --- a/enemizer/underworld_sprites.asm +++ b/enemizer/underworld_sprites.asm @@ -1,10 +1,6 @@ LoadUnderworldSprites: STA.b Scrap00 ; part one of what we replaced - if !FEATURE_FIX_BASEROM - LDA.w #$89 - else - LDA.w #UWSpritesData>>16 ; set the bank to 28 for now - endif + LDA.w #UWSpritesData>>16 ; set the bank to 28 for now STA.b Scrap02 LDA.w $048E RTL diff --git a/keydrop/standing_items.asm b/keydrop/standing_items.asm index 23598cf..aa3c160 100644 --- a/keydrop/standing_items.asm +++ b/keydrop/standing_items.asm @@ -98,10 +98,18 @@ else endif UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers -org $89DACE +if !FEATURE_FIX_BASEROM + org $01DDE7 +else + org $89DACE +endif UWPotsData: ; variable number of bytes (max 0x11D1) for all pots data -org $A88000 +if !FEATURE_FIX_BASEROM + org $89D92E +else + org $A88000 +endif UWSpritesData: ; variable number of bytes (max 0x2800) for all sprites and sprite drop data ; First $2800 bytes of this bank (28) is reserved for the sprite tables diff --git a/menu/drsheetdc.2bpp b/menu/dr_sheet_dc.2bpp similarity index 96% rename from menu/drsheetdc.2bpp rename to menu/dr_sheet_dc.2bpp index 11555562c84fb0575be66f61d381b0786b649653..aa4d3460fb9e69c09e8d43881b2a15bcb19bcdd7 100644 GIT binary patch delta 29 ZcmZn=Xb{+NfJNZ{e?}Cz`2vdpGXThS4P5{L delta 29 ncmV+&0OJ3E5P%S{zyuKffBnDv-}mqD_uu=!{eS+m&;&382k8<~ diff --git a/menu/dr_sheet_dc.2bppc b/menu/dr_sheet_dc.2bppc new file mode 100644 index 0000000000000000000000000000000000000000..34408747308207846ac4952cf383e9f261196f9c GIT binary patch literal 1460 zcmWlXdrTZv6vofY?948Y@G4p&3b-tl#%I(jnzdABKp;M<7P09cU~GIOM(U%5mURYp zc38GlpsmKzR&CU%0UuaxHB`&`2pC_DQ6N6rE`nm3W|x+l9oXT1-u`p%x%Zx&@Autv zyvU4Bb=$A}Ido?C-}`1>^+F_&O3*+aNOZa6y`t(4HCnmit-`_FdCHzAJkxuBZ+)nt zV^fE91I5%6H#}U@ShAtCv80${#e}(nn>`brhVBVZ2N@m8A`>#D3sU~f1*uY~sp#F3 zAFGIJpSkQRr=Y;+*8(ADbD-MiclrHQdS?v=#FX|J*V z`GZc7b;3MEf_JSMB)PV27r(KFN!o6tWmo4F_4JcEfXFaepV57D1J`54O_VQHxSv?r zT+D<;ic(X@M7nx^ujgD=w6br@7Fr*wqx21>f0lAzS=p2y+DNgohVIsGfpr+5Ov!c= z1W0hB7`FYa!2NdCr^{=DT7UJT{U@AdYihc#6@&PwhCS;bcw< zbBp8lPv@pjCBMZqaIywp&>uU8MAtNa#Ikup^ucu=3(H9jw)8#59kWTyXc=w6>&YZi z*+^bR)LzqG&o@3?X|&x3&l6nXX`IBdRq#B5d+;AuduJ7@KZH1h$8QABH8i7^>Qn=v z2SwK}_!7_Ud_f{db9}k84l|ZVQ>T-OMDlcMblG5i!;+Z7bSfz9vF9aGs58`k5C^bYOO%U= z#H{9QR%adcO1OYPU`%5pp0C&v>*6DYdm&^7gVp2pC${lFX~JmeT2Y8b)k86NN$kzo z+ta@;gkw_H_-%>Y#NI?Bun~<|siBcJ`jEZ?Td@YuaX%}qLP0}=>p}i}EAPoAID(IA zaHJIUk%moF$d^cwEUv-U&;iLT5tXex;}=YIT`kkgp+{x)XV4lxbh-67W@X9h5r`k- z)2>398Z_iqH=w6i4&N@*ZVm0~CeVSM@4H+&O*-T&T$s>v2dQkZ3?j%PnV9fH<+~~Q(TJ=MkZx5M-k#o zEw7+>s8CUKy-MGvU(lRS@_%sJ+8pN-=RIei{ho7_%f{oe+SnoMGQ|~-kFY(pY|!de zXurk=>2RoB;ngigi8vS8%yK1sonm?v`6&C2>3SrpSij3@y8aah8)G|kYs3{gfBa|EjQ{`u literal 0 HcmV?d00001 diff --git a/menu/drsheetdc.2bppc b/menu/drsheetdc.2bppc deleted file mode 100644 index 3f1bc71b81557ea64dab2af7924d2f5df3e70250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1713 zcmX9;3v3i+5T5_v$CW~;tyKvi@ZS}!N+MCzVk*S$T?>r}2o>cKQHfS!L_m4i6{an+DOL2)>ma2G@)1;wgZFNq;FgsDM$X;Iz?HOR^v5eZJP zo`|WKg%sHCz1h9ZwLN?r)F9`5aBPs1R;;rRLw{Ub86S`nVO;T=daxR(-{~BHZXErtm;RoUg%}v;ykv zqu`T{;U2J>Jf1}?i8cYZlFI(=?}jTDG1!OtRj9(eDoqLl0v4{zY4V6K}Xo(+*bP2!UhezRvtd4V3igVxQIL0Z2+%CG2JVuJ)L$c?2> zb)%n&3#B6GBRQI~GSov|l%`9Z@v?wL_Ccvv(P27cpODat6_9E@)O^m+Hd3nzg{SI$eto1gWU}#%s1e)%7pE>t2n$RIJ~pDO-=U zmbWdl%QSe#Ua9*hN3~cxQ|74Dd#Ml3{em-j$%zh4w2sGrG_7kx*DOWiX+qNBwlK{? zX@p3>nO>&{?5!H+>u9n=-cJ>F$bcEPX23%Qq~AjO>6230A0m9vu;vg93)7qsC4&au zYGA(MY}0tvLCGeLGjOv8r)uso;GM+thV>J1PKY44oDMTS&#?BB{FDyX3^TC6uyQF< zK_RNG_x+sqR+y@|1LiSt6-_qjd{gi<9U6ma<>C>YZRan;=`{GNMx7?z+M8wEuO2c?=VudsqYFh>Q6qe}=r;Jd?FiseT|kVHfM^xQ0qIYR$X2Jn3pwcQ;wlkF+YAT-!)KBsn`JbfU z-V*j2ahGtS<_)rq>9yB=@=l@Y(?~X%KKWH99Jkx}6xW_NlD`|=^^op!Zqmi7SWUCO zdb&?Z6{&O?7kJoovP|uy_j1(t*uNX4+~e*5&!0{f2H5gT_-3RZ<12y9x_EE`jtRio z#4x7vMw6*BXn^=9!-bQx%^T7->zMJo`lGl`eL$4PYBM|)tK*zBxCmqi2P@CXGdY-S k)>X{8Y$neezJ#9hTp%!X#H}O76^|)qV*YM;dmN(w0hV9C_W%F@ diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp new file mode 100644 index 0000000000000000000000000000000000000000..f498014f5438aad7632bc8a2dedbc9eb50ac9cfc GIT binary patch literal 3072 zcmc&$!A=xG5G~jc2{BIMX~KCvfMDW@#0`-651a^+@xmW$GCRUgc*0MS$ibU@g~QE6 zFCN5M>(#5Cu36ZNA=-7=?zgY2t6o>vZZCZ>k#!ry7DDR<_(WvV8viAO&D*QXl6e;$Pt8^wkNQEY8Nt2olSm1rU@N5~af z@3}r*HP#0>^y#XxK6|bY@vIMU^0SthUAg~eI`$77{AN1#f93v(XaB&-kGcNKxvKu8 z2nQCMT=h#j_pWmrxR|DO)~74GvMO2sQU6=Vm-Q!~^&j;o|GxfB+qBb`{-geL$Cvdd zpZ=r%?W&CTEozx~F9Fw`dybFziZAm!=@fN*dt3WPuo5`+38?h% zBOdD0__6=^F5@R0nAffQht6a=?*56V8rM(ve-C&6#5Lqc8KaDY$3~vXH`*C=IREin z2lY>}QcuRyNUw1x%la?mLOzN#b#s29Mm-|4umWaLLLrZGJ+ zNmjzYH2XSg;}72i9LjuAqf)5<-Cg{ij&bM@oPFs=ZY(P5`Cc`{JSYTKp9$Ps^94PSB!(#HgS5}Wov6EJBdGMQf_E?{IFVvH|DPH0`#!sDlIoFE* zU}pa-n)&hZ8~#uDE2LL{ z`lD`F4b4hB2~9Z*^b_i^I3vn@FWUA3vmsyW|4AQ(r&G5YaSy?&_Y EA3%Z~^Z)<= literal 0 HcmV?d00001 diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc new file mode 100644 index 0000000000000000000000000000000000000000..8e6b4785bded66169acadece4ddee61a4a36cc47 GIT binary patch literal 479 zcmW-dPfHt76vfY-cl|>Q1_WUUT}Z24jGL^~MZ}?l39Y22e-qdtZdp%kE`49#Ys zWC1(Iu0lLCa^N8;fj+!Ha}j?*>`ipV+FOt=^f6@DdV^C?2|;N}Hi-&_RuvxFZ>bU4 zvggrjALz1xG%rY{`+P8ok+Y5Ozt?iyOJ1be1WP;v&RlVxm439f$s;QKYj#9=ZV|^ literal 0 HcmV?d00001 diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc new file mode 100644 index 0000000000000000000000000000000000000000..47cd63c6d98d24792ed05541a3caf79d1048c0df GIT binary patch literal 668 zcmWlX&ubGw6vw~s&8CzzP*9MiUW9B*PZ}$vB0)knZQ82PgY*!vl&I^$f*0{%VVgQT z*_~|Sj~>KRJPDq9(UT~Mg1sqt@DGrhieRZw@X&U*)7y7=Z{~g9_cJ0vV$UWZV3ex~ z+5#xGhCzL&3*h6i^ve>crBFEtQx;bfpc&_&=Ak`vQ$#0FL)y9vRmWV4mOK_)=ivIN zts>{6gi6INmtD{C^)m!{Q00@XgZqv@iN9(19g-ovzs9(p;IMFt5s8Z2`N z7sxm>Bl4B_C#gR)S_!IDM0^Ut4+>6V>pV=MyGZdK)C@%}hW(^WR)R;6(|9?Q-~jBe zE-l^kZn-J&ZyNt`C~wdJ4G#_u|8iR6%rF-FHaWJs$ZCT^hVYx^X1i>{N?<=Op?zBD zG3Z@n?%1B~*deI9gzjabuTwn0-G?IFCH59n8^uhDk<0*ycD#>b2E*AUcAtnfMZz_Y4fzv*m)&*-TubuwbbjgkMCk zNXBJwn5$&60GtoMNH$vIed2Y3gs3ScB Ds~^da literal 0 HcmV?d00001 diff --git a/menu/map_sheet_d4.3bpp b/menu/map_sheet_d4.3bpp new file mode 100644 index 0000000000000000000000000000000000000000..7470cdafa1f0ffe09a61f57dcf347a16dd686b78 GIT binary patch literal 1536 zcma)6u}<4i6g{yW+fX+S0twWH*h(U?G9iXE4q-zX2vQiBB3WV%Fm#LQ4=^xy=+edi zfXEN@4=N=efD|@Vwbkpn&vBYmt<-y*=X1|H@7lTcGw}b>W{CS1V`54?OV)0OVHvo> z39k9O5)0Fl>l01yaEdNE_?YQ;r`^t+1_)jSeo*v_z5@hXz&XxvpXv7(=Vzq8>F7SP3tIPVHk0&uJiR42 zj`che6UpOq4h)tI&$$(&3OKfejB; z{=t|YB(_&IW0DfJ16&f~K&g6gd6|$T81Qb67yiNMSo@{E%*a)^ycG{dvD8VlBG(Wg ziDTRINV5CMN4Xz4*pFNFxCCic7P@PBvN*Gyn*UH=)J!GwOr*X_rOB$Fru}}JFL=ZY zQuNvRFm&B8)cWLQLW}mKTnAO2rD9=p9-w4>Dl%r==UFIB!ta)7lkl|}q|QQKp({ydNunhzR%LH<-rmI@a~*+YX1j~~&G+@khToR_Bcw}M zZnohAH*lj$R7qNVCmGw@_4*NM*_SHDe7Er{$uhF@eA{=NMRj0}UpHCT+-X&+UQqJq Xb9?p84UaQXfz<;-OpI1N42Ay!s1-f_ literal 0 HcmV?d00001 diff --git a/menu/map_sheet_d4.3bppc b/menu/map_sheet_d4.3bppc new file mode 100644 index 0000000000000000000000000000000000000000..3933267d91f2cdbe8277abcbfdf660ccb788bdf0 GIT binary patch literal 989 zcmW+!U5Hyn7(FxJ+@IZzxx02tLrwQy?%f!)6ry5XAtu}0>ncmYb|HNzLIW4}L0__6 zQGChWGB?S()kPPCJ}BygLPHTBL=h~Tg8C+c_#zaNhe8n+v!Hbmf5wRqGjrz5oZzk^%kbQy!_jzK1-%x7mE88A4$+dBj!7FwJ+#zeslW4dz_ za}K%Lg$F99$`1jQnL8E~3t&~OR8Ju%~;9p38 zWcD5|;Ud{#b7v#0OGXy53uo8Y6I0(7O|%hi+r*pgFr6p)3ztt&7(=cQ z#m#mskJF@{SQ3R92qbZA`kCH6-g}+o5trLUP-?5L_8(E{E4-vas6d&2tMAoVB|A5W zH&j1TFdF@SqtP!ab00_Oqv6BwJlpoXMP&?+hWaeMM|NK|6x8gvFaIDPRJ#Qw?-Kg* zLBTPeed9W4==~+MmtyGcFaNW>4~^NMrYwuMYGQ`z#x1ybh9}U}_H{s=VZEz@m(gB< z3fq_}qg=cC@vYigIRIN+403up4Phfc@igIi*z#wHdH>vN^YSOLh%kr85#)C6i}&w~ zdQ!diF5di{dbdSn*-TJ}a|ZZM`tSc4?)?fK9AS6H2wgj@=2=qdJY`IsI1vQr5~8j8 literal 0 HcmV?d00001 diff --git a/vanillalabels.asm b/vanillalabels.asm index 8ee4842..a26cdf4 100644 --- a/vanillalabels.asm +++ b/vanillalabels.asm @@ -274,6 +274,7 @@ GFXSheetPointers_background_bank = $80CFC0 GFXSheetPointers_background_high = $80D09F GFXSheetPointers_background_low = $80D17E LayerOfDestination = $81C31F +RoomData_ChestItems = $81E96C AnimatedTileSheets = $82802E Module1B_SpawnSelect_spawns = $828481 Overworld_ActualScreenID = $82A4E3 -- 2.43.0 From 443080c48257610aadc36c33b0df79af27146897 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Wed, 31 Dec 2025 00:21:40 -0600 Subject: [PATCH 03/73] ShowItems settings --- dungeon_map/check_loot.asm | 75 +++++++++++++++++++++++++++++++++++--- dungeon_map/settings.asm | 51 ++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 6 deletions(-) diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index 4003fdd..b5aae17 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -6,18 +6,77 @@ CheckLoot: PHB : PHX : PHY STA.b $00 - ASL A - TAX LDA.b $06 : PHA + LDA.b $0E : PHA STZ.b $02 ; best item class found - JSR CheckChests - JSR CheckBoss - JSR CheckPots - JSR CheckEnemies + LDA.l ShowItems_default + AND.w #$00FF + STA.b $0E + LDA.l SaveDataWRAM, X + AND.w #$000F + BEQ + + LDA.l ShowItems_visited_tile + AND.w #$00FF + CMP.b $0E + BCC + + STA.b $0E + ++ LDA.b DungeonID + TAX + + LDA.l MapField + AND.l DungeonMask, X + BEQ + + LDA.l ShowItems_have_map + AND.w #$00FF + CMP.b $0E + BCC + + STA.b $0E + ++ LDA.l CompassField + AND.l DungeonMask, X + BEQ + + LDA.l ShowItems_have_compass + AND.w #$00FF + CMP.b $0E + BCC + + STA.b $0E + ++ LDA.b $0E + BEQ .done + + LDA.l ItemSources : BIT.w #$0001 : BEQ + + JSR CheckChests ++ + + LDA.l ItemSources : BIT.w #$0002 : BEQ + + JSR CheckPots ++ + + LDA.l ItemSources : BIT.w #$0004 : BEQ + + JSR CheckEnemies ++ + + LDA.l ItemSources : BIT.w #$0008 : BEQ + + JSR CheckBoss ++ + + LDA.b $0E + AND.w #$00FF + CMP.w #$0001 + BNE .done + + LDA.b $02 + BEQ .done + LDA.w #$0001 + STA.b $02 + +.done + PLA : STA.b $0E PLA : STA.b $06 PLY : PLX : PLB PLP @@ -25,6 +84,10 @@ CheckLoot: RTL CheckChests: + LDA.b $00 + ASL A + TAX + LDA.w #($81<<8) PHA PLB : PLB diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index bb3140b..1a9b074 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -81,3 +81,54 @@ MapHUDPalette: dw $0000, $3ED8, $2E54 ; $B9F688 + +warnpc $B9FF00 + +org $B9FF00 +; $00 - do not show anything +; $01 - show presence of supertile as dark square +; $02 - show shape of quadrants +; $03 - show outline of shape but no details +; $04 - show dark but detailed +; $05 - show lit with detail +ShowRooms: ; NYI +.default + db $02 +.have_map + db $04 +.have_compass + db $03 +.visited_tile + db $04 +.visited_quadrant + db $05 +.reserved + skip 3 + +org $B9FF08 +; $00 - do not show anything +; $01 - show presence of unobtained items +; $02 - show category of item +ShowItems: +.default + db $00 +.have_map + db $00 +.have_compass + db $02 +.visited_tile + db $01 +.item_is_compass ; NYI + db $00 +.reserved + skip 3 + +org $B9FF10 +; ---P bepc +; P - dungeon prizes - NYI +; b - bosses (and torches in GT, plus hera basement standing item) +; e - enemy drops +; p - pots +; c - chests +ItemSources: + db $0F -- 2.43.0 From 58db28f8bf0994baa143ed421b1320efe56a6d08 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Wed, 31 Dec 2025 12:17:43 -0600 Subject: [PATCH 04/73] Check dungeon prizes, tweak gfx --- dungeon_map/check_loot.asm | 36 ++++++++++++++++++++++ dungeon_map/hooks.asm | 2 +- dungeon_map/settings.asm | 60 ++++++++++++++++++++++++------------- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 479 -> 453 bytes menu/map_icons_2.3bppc | Bin 668 -> 668 bytes menu/map_sheet_d4.3bpp | Bin 1536 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 989 -> 992 bytes 8 files changed, 76 insertions(+), 22 deletions(-) diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index b5aae17..12cfae4 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -65,6 +65,10 @@ CheckLoot: JSR CheckBoss + + LDA.l ItemSources : BIT.w #$0010 : BEQ + + JSR CheckPrize ++ + LDA.b $0E AND.w #$00FF CMP.w #$0001 @@ -173,6 +177,38 @@ CheckBoss: BRA .next_boss +CheckPrize: + LDX.w #$FFFD +.next_prize + INX #3 + LDA.l PrizeLocations, X + BPL .check + RTS + +.check + CMP.b $00 + BNE .next_prize + + TXY + + ASL A + TAX + LDA.l SaveDataWRAM, X + TYX + BIT.w #$0800 + BNE .next_prize + + LDA.l PrizeLocations+2, X ; get which prize to look at + AND.w #$00FF + TAX + LDA.l DungeonPrizeReceiptID, X + TYX + + AND.w #$00FF + JSR GetLootClass + + BRA .next_prize + CheckPots: LDA.b $00 ASL A diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index a8b3428..74710a7 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -14,7 +14,7 @@ org $9BE564 dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7 org $9BE584 -dw $0000, $71E7, $2DFF, $3B5F, $7FFF, $0000, $0018, $1CE7 +dw $0000, $71E7, $7FFF, $3B5F, $71E7, $0000, $7EB5, $1CE7 org $9BE5A4 dw $0000, $34E0, $7FFF, $2656, $34E0, $0000, $7EB5, $1CE7 diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 1a9b074..679f3b8 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -31,22 +31,22 @@ endstruct ; $B9F480 LootTypeIcons: -dw $1300, $1300, $1300, $1300 ; 00 - nothing -dw $334D, $734D, $335D, $735D ; 01 - unknown - basic chest -dw $330D, $730D, $333D, $733D ; 02 - junk - pot -dw $3307, $3308, $3317, $3318 ; 03 - small key -dw $330A, $730A, $333A, $733A ; 04 - triforce piece -dw $330C, $730C, $333C, $733C ; 05 - safety - heart -dw $330E, $730E, $333E, $733E ; 06 - compass -dw $3307, $3308, $3317, $3318 ; 07 - small key -dw $3305, $7305, $3315, $3316 ; 08 - big key -dw $3309, $7309, $3339, $7339 ; 09 - pendant -dw $330F, $730F, $333F, $733F ; 0A - inventory item - big chest -dw $3309, $7309, $3339, $7339 ; 0B - also pendant -dw $3303, $7303, $B303, $F303 ; 0C - crystal -dw $330A, $730A, $333A, $733A ; 0D - triforce piece -dw $330B, $730B, $333B, $733B ; 0E - triforce -dw $1300, $1300, $1300, $1300 ; 0F - empty (reserved) +dw $0B00, $0B00, $0B00, $0B00 ; 00 - nothing +dw $2B0E, $6B0E, $2B3E, $6B3E ; 01 - unknown - basic chest +dw $2B0D, $6B0D, $2B3D, $6B3D ; 02 - junk - pot +dw $2B07, $6B07, $2B17, $2B18 ; 03 - small key +dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece +dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus +dw $AB3A, $EB3A, $2B3A, $6B3A ; 06 - compass +dw $2B07, $2B08, $2B17, $2B18 ; 07 - small key +dw $2B05, $6B05, $2B15, $2B16 ; 08 - big key +dw $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant +dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest +dw $2B09, $2B0A, $2B39, $6B39 ; 0B - also pendant +dw $6F02, $2B02, $EB02, $AF02 ; 0C - crystal +dw $2B0B, $6B0B, $2B3B, $6B3B ; 0D - triforce piece +dw $2B0C, $6B0C, $2B3C, $6B3C ; 0E - triforce +dw $0B00, $0B00, $0B00, $0B00 ; 0F - empty (reserved) ; $B9F500 LootTypeMapping: @@ -73,14 +73,32 @@ dw $0087 : db $05 : dl StandingKey_Hera dw $FFFF : db $FF : dl $FFFFFF ; Placeholders dw $FFFF : db $FF : dl $FFFFFF -dw $FFFF : db $FF : dl $FFFFFF +dw $FFFF : db $FF : dl $FFFFFF ; Aga 1? ($0020) +dw $FFFF : db $FF : dl $FFFFFF ; Ice Armos? ($001C) +dw $FFFF : db $FF : dl $FFFFFF ; Lanmolas 2? ($0033) +dw $FFFF : db $FF : dl $FFFFFF ; Moldorm 2? ($004D) +dw $FFFF : db $FF : dl $FFFFFF ; Aga 2? ($000D) dw $FFFF -; $B9F682 +; $B9F69A MapHUDPalette: dw $0000, $3ED8, $2E54 -; $B9F688 +; $B9F6A0 +PrizeLocations: +dw $00C8 : db $02 ; ArmosKnights +dw $0033 : db $03 ; Lanmolas +dw $0006 : db $05 ; Arrghus +dw $005A : db $06 ; HelmasaurKing +dw $0090 : db $07 ; Vitreous +dw $0029 : db $08 ; Mothula +dw $00DE : db $09 ; Kholdstare +dw $0007 : db $0A ; Moldorm +dw $00AC : db $0B ; Blind +dw $00A4 : db $0C ; Trinexx +dw $FFFF + +; $B9F6C0 warnpc $B9FF00 @@ -125,10 +143,10 @@ ShowItems: org $B9FF10 ; ---P bepc -; P - dungeon prizes - NYI +; P - dungeon prizes ; b - bosses (and torches in GT, plus hera basement standing item) ; e - enemy drops ; p - pots ; c - chests ItemSources: - db $0F + db $1F diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index f498014f5438aad7632bc8a2dedbc9eb50ac9cfc..a25b43b80ba718039e6292e148e83dc63861e155 100644 GIT binary patch delta 44 zcmZpWXpq?8#5nN+-{b^Fj?EE_2|%{Q<_kH diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index 8e6b4785bded66169acadece4ddee61a4a36cc47..183aa4bc9fc3ce88ebe2d017d94ae9e682f2078d 100644 GIT binary patch delta 37 tcmcc5e3W@YID0=siw(mh*NHg^tP>9~^kz-GcYy7KCkJCM)8xgBHUJ9_4dMU* delta 63 zcmX@ge4lwjxM(8-BR_*PKWnQkBO@1Aiw%PoLwmr)xCEi9Qw)sk{N3h^3>>X{m>B-` TWllVNfc1$xLqEghPDUF53T6@$ diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index 47cd63c6d98d24792ed05541a3caf79d1048c0df..c54a6481d4fd8df31906e321157019d9b6fe6e0b 100644 GIT binary patch delta 24 fcmbQkI)`M67~L2FT3H5@ diff --git a/menu/map_sheet_d4.3bpp b/menu/map_sheet_d4.3bpp index 7470cdafa1f0ffe09a61f57dcf347a16dd686b78..be46ec0cb8209fbc2ca16b832aac16a11ec3ab86 100644 GIT binary patch delta 409 zcmYLDOHRWu5FP(APLtw*kRm}L5oJ-t5*92_6VAZ42SBWPgZK!b_9pC+mpw)nJ%AS+ zfUzCKv*dXmzxQTrY0Hm?xwXA(T{~7|<@IO39S~3;M*#$sN`@NXz*%qo7~LM1T9 z83!SvjxmTn@LubmgQ_<)NQYYH1npL;yHpBN|VF0M>4opJKs5TX0sE|MwG?4afca=No*nr+l0*OiB^J@Ru)@pBX(9ZFn_`l zgoI6@cVJ;>k!XoBDuL_|tpQHziH237EUt(fKvle>4=?Entr5<) zzreu^r~Y4QXHcj9;qadrzX8wi+etU%>w7Z&4n6rPw!~*S8E_Ea7HC=7W~aq6{{dE7 ztMmY^jjNkW*XH{d4CiNDcVoaf mM(g603L#pqZ050n(K~wtQ@m9iQPkUt`pe+W(DD7WR4f26ot>d_q~0y?wXe+gcY1*#(BoYXb~$3EIX?+v9h)jvc080V1+lciHcy@ z#?s0v*aXsM1+}%dkW69iF2qJem9)+(cS_ilo=+gFBYuzrScFRE78*W?aPC;{#8KQofX&H0Ht`4t|9bKC`sV9 zQ1f1gD89fGOd1x@o47XU;KFS4*oOwPw=a}2^z&^&PPw_5#40Wm!H3ZoW{RZ zb`EtKpA7%(pP Date: Fri, 2 Jan 2026 03:36:12 -0600 Subject: [PATCH 05/73] Fix pot shuffle, implement map settings --- dungeon_map/check_loot.asm | 9 ++- dungeon_map/draw_rooms.asm | 109 +++++++++++++++++++++++-------------- dungeon_map/hooks.asm | 4 +- dungeon_map/settings.asm | 19 +++---- 4 files changed, 86 insertions(+), 55 deletions(-) diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index 12cfae4..799b2d4 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -225,7 +225,7 @@ CheckPots: LDA.b [$04], Y CMP.w #$FFFF : BEQ .done INX : INY : INY - BIT.w #$8000 : BNE .we_care ; marked as major item + BIT.w #$8000 : BNE .major_item ; marked as major item LDA.b [$04], Y AND.w #$00FF CMP.w #$0008 : BEQ .small_key @@ -234,10 +234,13 @@ CheckPots: .small_key LDA.w #$0024 -.we_care - INY + BRA .continue +.major_item + LDA.b [$04], Y +.continue PHA PHX + INY TXA : ASL A EOR.w #$FFFF CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index 3e0e2d7..e84cf7f 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -1,51 +1,54 @@ ; $CA has room_id DrawDungeonMapRoom: PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank + LDA.b $0A : PHA - ; base no-info palette - LDA.w #$0C00 - STA.b $0C + LDA.l ShowRooms_default + AND.w #$00FF + STA.b $0A PHX + LDX.w DungeonID LDA.l MapField AND.l DungeonMask, X - BEQ + - LDA.w #$1400 - STA.b $0C - LDA.b $0E - ORA.w #$8000 - STA.b $0E - + + LDA.l ShowRooms_have_map + AND.w #$00FF + CMP.b $0A + BCC + + STA.b $0A ++ + LDX.w DungeonID LDA.l CompassField AND.l DungeonMask, X - BEQ + - LDA.b $0E - ORA.w #$4000 - STA.b $0E - + - PLX + LDA.l ShowRooms_have_compass + AND.w #$00FF + CMP.b $0A + BCC + + STA.b $0A ++ LDA.b $0E - BNE + - ; we haven't seen the supertile at all and don't have map or compass - LDA.w #$0F7B - STA.l $7F0042, X - ORA.w #$4000 - STA.l $7F0040, X - ORA.w #$8000 - STA.l $7F0000, X - AND.w #$BFFF - STA.l $7F0002, X - JMP .done - + - AND.w #$000F BEQ + - LDA.w #$1400 - STA.b $0C - + + LDA.l ShowRooms_visited_tile + AND.w #$00FF + CMP.b $0A + BCC + + STA.b $0A ++ + + LDA.b $0A : BNE + : LDA.w #$0F00 : BRA ++ ++ DEC A : BNE + : LDA.w #$0F7B : BRA ++ ++ DEC A : BNE + : LDA.w #$0F7B : BRA ++ ++ DEC A : BNE + : LDA.w #$0C00 : BRA ++ ++ DEC A : BNE + : LDA.w #$1000 : BRA ++ ++ DEC A : BNE + : LDA.w #$1400 : BRA ++ ++ LDA.w #$0800 +++ STA.b $0C + + PLX LDA.b $CA AND.w #$00FF @@ -58,20 +61,45 @@ DrawDungeonMapRoom: AND.w #$00FF CMP.w #$00FF : BEQ ?.empty CLC : ADC.w #$0340 - ORA.w #(3-)<<14 PHA LDA.b $0E AND.w #1<<(3-) BNE ?.visited - PLA - ORA.b $0C - BRA ?.write + + ?.unvisited + LDA.b $0A + CMP.w #$0003 + BCS ?.shape + + ?.square + PLA + LDA.b $0C + BRA ?.write + + ?.shape + PLA + ORA.b $0C + BRA ?.write + ?.visited - PLA - ORA.w #$0800 - ?.write - STA.l $7F0000+, X + PLA + ORA.w #$0800 + BRA ?.write + ?.empty + LDA.b $0A + CMP.w #$0001 + BEQ ?.full_square + LDA.w #$0F00 + BRA ?.write + + ?.full_square + LDA.w #$0F7B + + ?.write + ORA.w #(3-)<<14 + STA.l $7F0000+, X + ?.done endmacro %DrawQuadrant(0, $00) @@ -80,5 +108,6 @@ DrawDungeonMapRoom: %DrawQuadrant(3, $42) .done + PLA : STA.b $0A PLB RTL diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index 74710a7..843ec74 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -14,10 +14,10 @@ org $9BE564 dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7 org $9BE584 -dw $0000, $71E7, $7FFF, $3B5F, $71E7, $0000, $7EB5, $1CE7 +dw $0000, $4100, $7FFF, $2656, $4100, $0000, $7EB5, $1CE7 org $9BE5A4 -dw $0000, $34E0, $7FFF, $2656, $34E0, $0000, $7EB5, $1CE7 +dw $0000, $5565, $7FFF, $2BE9, $0000, $0000, $7EB5, $1CE7 ; move BG1 to main screen in dungeon map screen org $8AE130 diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 679f3b8..bf83d99 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -38,7 +38,7 @@ dw $2B07, $6B07, $2B17, $2B18 ; 03 - small key dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus dw $AB3A, $EB3A, $2B3A, $6B3A ; 06 - compass -dw $2B07, $2B08, $2B17, $2B18 ; 07 - small key +dw $2B07, $6B07, $2B17, $2B18 ; 07 - small key dw $2B05, $6B05, $2B15, $2B16 ; 08 - big key dw $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest @@ -105,23 +105,22 @@ warnpc $B9FF00 org $B9FF00 ; $00 - do not show anything ; $01 - show presence of supertile as dark square -; $02 - show shape of quadrants -; $03 - show outline of shape but no details -; $04 - show dark but detailed -; $05 - show lit with detail -ShowRooms: ; NYI +; $02 - show presence of quadrants as dark squares +; $03 - show outline of shape with walls but no interior details (palette 3) +; $04 - show dark with stairs but no hole/internal walls (palette 4) +; $05 - show mostly lit with stairs and holes/internal walls (palette 5) +; $06 - show fully lit with stairs and holes/internal walls (palette 2) +ShowRooms: .default - db $02 + db $01 .have_map db $04 .have_compass db $03 .visited_tile - db $04 -.visited_quadrant db $05 .reserved - skip 3 + skip 4 org $B9FF08 ; $00 - do not show anything -- 2.43.0 From 9b4d79247fc0aa391e1d6f3fbbdbc2f8c838ce2b Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Fri, 2 Jan 2026 15:01:12 -0600 Subject: [PATCH 06/73] Update supertile shapes --- dungeon_map/data/supertile_shapes.asm | 202 +++++++++++++------------- dungeon_map/draw_rooms.asm | 10 +- dungeon_map/hooks.asm | 6 +- dungeon_map/settings.asm | 4 +- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 453 -> 586 bytes menu/map_icons_2.3bppc | Bin 668 -> 699 bytes menu/map_sheet_d4.3bpp | Bin 1536 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 992 -> 994 bytes 9 files changed, 112 insertions(+), 110 deletions(-) diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 71f34c4..a7d2310 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -1,19 +1,19 @@ -db $0F, $00, $1F, $0E ; 00 -db $46, $46, $0E, $0E -db $00, $30, $14, $14 -db $0E, $1F, $20, $0F +db $FF, $65, $FF, $FF ; 00 +db $48, $48, $FF, $FF ; 01 +db $00, $30, $14, $14 ; 02 +db $FF, $FF, $4F, $FF ; 03 - Houlihan db $65, $74, $2D, $2E ; 04 db $FF, $FF, $FF, $FF ; 05 - unused -db $FF, $FF, $4F, $FF -db $00, $40, $00, $00 ; 07 -db $0E, $0E, $10, $20 ; 08 - useless fairy entrance -db $66, $66, $FF, $FF -db $44, $44, $0E, $0E +db $FF, $FF, $4F, $FF ; 06 - Arrghus +db $00, $40, $00, $00 ; 07 - Moldorm +db $FF, $FF, $72, $5F ; 08 - useless fairy entrance +db $66, $66, $FF, $FF ; 09 +db $58, $58, $FF, $FF ; 0A db $2E, $67, $2E, $70 ; 0B db $31, $31, $24, $24 ; 0C -db $FF, $FF, $4F, $FF ; 0D +db $FF, $FF, $4F, $FF ; 0D - Aga 2 db $FF, $FF, $57, $5F ; 0E -db $FF, $FF, $FF, $FF ; 0F - unused and should never be, treated as non-id +db $FF, $FF, $FF, $FF ; 0F - unused and should never be used, treated as non-id db $00, $00, $20, $00 ; 10 db $00, $30, $00, $10 db $14, $14, $24, $24 @@ -22,8 +22,8 @@ db $11, $01, $11, $11 db $34, $00, $01, $00 db $75, $65, $2E, $2E ; 16 db $40, $40, $00, $00 -db $10, $0F, $00, $0F ; 18 - useless fairy drop -db $0F, $03, $0F, $02 +db $75, $FF, $74, $FF ; 18 - useless fairy drop +db $FF, $29, $FF, $1A ; 19 db $6E, $6F, $6D, $75 ; 1A db $2E, $67, $75, $FF db $74, $74, $3E, $2E ; 1C @@ -32,20 +32,20 @@ db $FF, $68, $57, $4B db $FF, $FF, $71, $57 ; 1F db $FF, $FF, $4F, $FF ; 20 db $00, $10, $00, $01 -db $0E, $0E, $15, $14 +db $FF, $FF, $28, $08 ; 22 db $FF, $FF, $FF, $6B db $10, $10, $01, $20 ; 24 db $FF, $FF, $FF, $FF ; 25 - unused db $00, $3C, $14, $42 ; 26 db $40, $40, $00, $00 -db $30, $1E, $24, $24 ; 28 -db $1F, $0E, $0F, $00 +db $65, $FF, $1B, $0B ; 28 +db $FF, $FF, $FF, $56 ; 29 - Mothula db $10, $12, $10, $5E -db $12, $1E, $36, $00 -db $00, $00, $10, $10 ; 2C - hookshot cave fairies +db $2A, $FF, $0D, $70 ; 2B +db $00, $00, $10, $10 ; 2C - hookshot cave back db $FF, $FF, $FF, $FF ; 2D - unused db $FF, $4F, $FF, $FF ; 2E -db $00, $1E, $00, $20 ; 2F - kakariko well +db $74, $FF, $2E, $5F ; 2F - Kakariko well db $75, $FF, $65, $FF ; 30 db $2E, $57, $2E, $57 ; 31 db $14, $14, $44, $44 @@ -58,13 +58,13 @@ db $6C, $FF, $77, $FF ; 38 db $FF, $FF, $72, $69 ; 39 db $64, $64, $14, $14 db $65, $FF, $75, $FF -db $00, $10, $00, $20 ; 3C - hookshot cave +db $00, $10, $00, $20 ; 3C - hookshot cave front db $2E, $2E, $75, $65 ; 3D db $FF, $74, $72, $2E ; 3E db $FF, $FF, $57, $57 db $65, $FF, $2E, $57 ; 40 db $00, $30, $14, $14 -db $44, $31, $0E, $0E +db $58, $49, $FF, $FF ; 42 db $72, $2E, $FF, $75 db $70, $3D, $70, $3D db $6C, $74, $3D, $2E ; 45 @@ -77,39 +77,39 @@ db $75, $74, $2E, $2E db $FF, $65, $FF, $77 ; 4C db $10, $30, $01, $00 db $72, $57, $FF, $FF ; 4E -db $1E, $00, $01, $1E +db $FF, $70, $56, $FF db $FF, $77, $FF, $75 ; 50 db $14, $14, $44, $44 -db $01, $1E, $04, $14 -db $65, $75, $2E, $2E +db $77, $FF, $19, $08 ; 52 +db $65, $75, $2E, $2E ; 53 db $50, $50, $40, $00 ; 54 -db $00, $00, $20, $00 -db $74, $74, $2B, $3D +db $00, $00, $20, $00 ; 55 +db $74, $74, $2B, $3D ; 56 db $2E, $70, $63, $5B db $00, $00, $21, $10 ; 58 - split db $10, $00, $20, $00 -db $FF, $FF, $FF, $4F +db $FF, $FF, $FF, $4F ; 5A - Helmasaur King db $FF, $77, $FF, $75 ; 5B db $71, $6A, $FF, $74 ; 5C db $2E, $67, $75, $FF ; 5D db $FF, $68, $57, $4B ; 5E db $FF, $FF, $7B, $FF -db $0F, $13, $0F, $22 ; 60 +db $FF, $39, $FF, $3A ; 60 db $47, $45, $26, $26 db $06, $14, $22, $00 db $65, $FF, $76, $FF ; 63 db $FF, $FF, $57, $71 -db $FF, $FF, $71, $69 +db $FF, $FF, $71, $69 ; 65 db $00, $30, $10, $00 -db $00, $10, $00, $01 +db $00, $10, $00, $01 ; 67 db $00, $10, $01, $00 ; 68 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 69 - unused db $FF, $4C, $FF, $74 ; 6A -db $65, $75, $2E, $2E -db $65, $FF, $2E, $71 ; 6C +db $65, $75, $2E, $2E ; 6B +db $65, $FF, $2E, $71 ; 6C - Lanmolas 2 db $75, $FF, $77, $FF ; 6D db $FF, $4E, $FF, $FF ; 6E -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 6F - unused db $7A, $FF, $FF, $FF ; 70 db $65, $FF, $2D, $70 ; 71 db $44, $44, $04, $14 ; 72 - slight cheating I guess... @@ -118,9 +118,9 @@ db $00, $00, $05, $05 db $74, $74, $4A, $75 ; 75 db $2D, $7C, $2E, $57 ; 76 db $30, $00, $60, $60 -db $00, $00, $00, $00 ; 78 -db $00, $00, $00, $00 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 78 - unused +db $FF, $FF, $FF, $FF ; 79 - unused +db $FF, $FF, $FF, $FF ; 7A - unused db $70, $71, $4F, $4D db $77, $74, $77, $77 db $2E, $70, $77, $4F ; 7D @@ -128,52 +128,52 @@ db $FF, $77, $53, $2D ; 7E db $77, $FF, $55, $FF db $67, $70, $FF, $FF ; 80 db $10, $01, $00, $01 -db $5D, $14, $01, $00 +db $5D, $14, $01, $00 ; 82 db $74, $75, $2B, $2E ; 83 db $04, $05, $24, $24 db $4B, $72, $2E, $5F ; 85 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 86 - unused db $67, $2E, $54, $74 -db $00, $00, $00, $00 ; 88 -db $00, $00, $0E, $0E -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 88 - unused +db $70, $70, $FF, $FF +db $FF, $FF, $FF, $FF ; 8A - unused db $2D, $71, $2D, $70 db $7E, $7F, $7D, $78 ; 8C db $71, $2D, $70, $2D ; 8D db $FF, $4E, $FF, $FF -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 8F - unused db $FF, $FF, $4F, $FF ; 90 db $FF, $65, $FF, $77 db $00, $00, $01, $01 ; 92 - should it be split? idk db $2C, $2C, $77, $74 ; 93 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; 94 - unused db $FF, $77, $FF, $75 ; 95 db $77, $FF, $2E, $57 db $65, $74, $2E, $2F ; 97 -db $0E, $0E, $20, $40 ; 98 -db $1E, $00, $42, $14 -db $00, $00, $00, $00 +db $FF, $FF, $5F, $57 ; 98 +db $FF, $74, $0A, $18 ; 99 +db $FF, $FF, $FF, $FF ; 9A - unused db $72, $70, $70, $71 db $10, $10, $01, $01 db $70, $72, $71, $70 -db $1E, $30, $00, $52 -db $0E, $1F, $11, $0F +db $FF, $65, $70, $79 ; 9E +db $FF, $FF, $5B, $FF ; 9F db $72, $57, $FF, $FF ; A0 -db $00, $02, $1E, $12 +db $70, $1D, $FF, $2A ; A1 db $45, $45, $16, $06 -db $02, $0F, $12, $0F +db $1A, $FF, $2A, $FF ; A3 db $FF, $FF, $4E, $FF ; A4 db $65, $75, $2E, $2E db $00, $30, $00, $00 -db $00, $0F, $0E, $1F +db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room db $00, $03, $00, $12 ; A8 db $17, $17, $16, $16 db $03, $00, $12, $00 db $FF, $FF, $5A, $FF -db $FF, $FF, $FF, $4F ; AC -db $00, $00, $00, $00 -db $0F, $34, $1F, $0E -db $11, $0F, $0E, $1F +db $FF, $FF, $FF, $4F ; AC - Blind +db $FF, $FF, $FF, $FF ; AD - unused +db $FF, $59, $FF, $FF ; AE +db $5B, $FF, $FF, $FF ; AF db $2E, $67, $2E, $57 ; B0 db $74, $75, $2E, $2D db $14, $05, $10, $11 ; B2 - split this monster somehow? @@ -185,11 +185,11 @@ db $74, $FF, $75, $FF db $FF, $4A, $FF, $74 ; B8 db $15, $15, $14, $14 db $73, $70, $FF, $FF -db $10, $01, $00, $01 +db $10, $01, $00, $01 ; BB db $34, $10, $11, $10 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; BD - unused db $FF, $65, $FF, $4A -db $FF, $FF, $4D, $FF +db $FF, $FF, $4D, $FF ; BF db $2E, $67, $2E, $57 ; C0 db $2E, $73, $2D, $73 db $11, $13, $01, $13 @@ -198,14 +198,14 @@ db $44, $44, $00, $01 ; C4 db $75, $FF, $4A, $FF db $10, $11, $10, $11 db $11, $00, $01, $00 -db $FF, $FF, $FF, $4F ; C8 -db $14, $14, $24, $24 -db $00, $00, $00, $00 -db $00, $03, $14, $07 +db $FF, $FF, $FF, $4F ; C8 - Armos Knights +db $14, $14, $24, $24 ; C9 +db $FF, $FF, $FF, $FF ; CA - unused +db $00, $03, $14, $07 ; CB db $13, $10, $07, $14 ; CC -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; CD - unused db $FF, $78, $FF, $FF -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; CF - unused db $2E, $67, $2E, $57 ; D0 db $4E, $4F, $70, $70 db $FF, $75, $FF, $55 @@ -213,44 +213,46 @@ db $FF, $FF, $FF, $FF ; D3 - unused db $FF, $FF, $FF, $FF ; D4 - unused db $75, $FF, $76, $FF db $75, $75, $74, $76 -db $00, $00, $00, $00 +db $FF, $FF, $FF, $FF ; D7 - unused db $FF, $75, $FF, $77 ; D8 db $FF, $FF, $71, $71 db $FF, $FF, $5C, $FF db $14, $06, $24, $3F db $06, $14, $03, $00 ; DC -db $00, $00, $00, $00 -db $0F, $00, $1F, $0E -db $0E, $0E, $24, $24 +db $FF, $FF, $FF, $FF ; DD - unused +db $FF, $56, $FF, $FF ; DE - Kholdstare +db $FF, $FF, $60, $24 ; DF - paradox top db $2E, $67, $76, $FF ; E0 -db $00, $00, $20, $00 -db $00, $1E, $00, $20 -db $1E, $00, $20, $00 -db $00, $02, $20, $02 -db $02, $00, $26, $24 -db $00, $01, $10, $00 -db $01, $00, $00, $20 -db $30, $30, $40, $20 ; E8 more cheating -db $00, $00, $00, $00 -db $30, $0F, $20, $0F -db $0F, $30, $0F, $20 -db $00, $00, $00, $00 -db $30, $30, $00, $20 -db $00, $00, $00, $20 -db $1E, $00, $60, $60 -db $00, $02, $20, $02 ; F0 -db $02, $02, $00, $20 -db $1F, $0E, $0F, $20 -db $0E, $1F, $20, $0F -db $1F, $0E, $0F, $20 -db $0E, $1F, $20, $0F -db $00, $00, $00, $00 -db $00, $00, $00, $00 -db $30, $30, $60, $24 ; F8 -db $00, $01, $20, $00 -db $34, $00, $20, $00 -db $1E, $30, $24, $24 -db $00, $00, $00, $00 -db $30, $30, $24, $24 -db $0F, $0F, $00, $20 -db $00, $00, $00, $20 + +; no more dungeon +db $00, $00, $20, $00 ; E1 - lost woods thieves hideout +db $00, $00, $00, $20 ; E2 - lumberjack cave +db $FF, $74, $5F, $2E ; E3 - magic bat +db $00, $02, $20, $02 ; E4 - old man's house front +db $02, $00, $26, $24 ; E5 - old man's house back +db $00, $01, $10, $00 ; E6 - death mountain descent left +db $01, $00, $00, $20 ; E7 - death mountain descent right +db $30, $30, $40, $20 ; E8 - superbunny top +db $FF, $FF, $FF, $FF ; E9 - unused +db $65, $FF, $76, $FF ; EA - spectacle top +db $FF, $66, $FF, $76 ; EB - bumper top +db $FF, $FF, $FF, $FF ; EC - unused +db $30, $30, $00, $20 ; ED - fairy ascension top +db $00, $50, $00, $20 ; EE - spiral top +db $FF, $00, $60, $24 ; EF - paradox top +db $00, $02, $20, $02 ; F0 - old man rescue left +db $02, $02, $00, $20 ; F1 - old man rescue right +db $FF, $FF, $FF, $5F ; F2 - Sahasrahla's Kakariko house left +db $FF, $FF, $5F, $FF ; F3 - Sahasrahla's Kakariko house right +db $FF, $FF, $FF, $5F ; F4 - quarreling brothers left +db $FF, $FF, $5F, $FF ; F5 - quarreling brothers right +db $FF, $FF, $FF, $FF ; F6 - unused +db $FF, $FF, $FF, $FF ; F7 - unused +db $30, $30, $60, $24 ; F8 - superbunny bottom +db $00, $01, $20, $00 ; F9 - spectacle left +db $34, $00, $20, $00 ; FA - spectacle bottom +db $FF, $65, $08, $18 ; FB - bumper bottom +db $FF, $FF, $FF, $FF ; FC - unused +db $30, $30, $24, $24 ; FD - fairy ascension bottom +db $FF, $FF, $74, $76 ; FE - spiral bottom +db $74, $74, $2E, $2B ; FF - paradox bottom diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index e84cf7f..4c05d17 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -40,11 +40,11 @@ DrawDungeonMapRoom: + LDA.b $0A : BNE + : LDA.w #$0F00 : BRA ++ -+ DEC A : BNE + : LDA.w #$0F7B : BRA ++ -+ DEC A : BNE + : LDA.w #$0F7B : BRA ++ -+ DEC A : BNE + : LDA.w #$0C00 : BRA ++ -+ DEC A : BNE + : LDA.w #$1000 : BRA ++ ++ DEC A : BNE + : LDA.w #$174F : BRA ++ ++ DEC A : BNE + : LDA.w #$174F : BRA ++ + DEC A : BNE + : LDA.w #$1400 : BRA ++ ++ DEC A : BNE + : LDA.w #$1000 : BRA ++ ++ DEC A : BNE + : LDA.w #$0C00 : BRA ++ + LDA.w #$0800 ++ STA.b $0C @@ -94,7 +94,7 @@ DrawDungeonMapRoom: BRA ?.write ?.full_square - LDA.w #$0F7B + LDA.w #$174F ?.write ORA.w #(3-)<<14 diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index 843ec74..1b53049 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -11,13 +11,13 @@ org $9BE544 dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7 org $9BE564 -dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7 +dw $0000, $5565, $7FFF, $331C, $0000, $0000, $7EB5, $1CE7 org $9BE584 -dw $0000, $4100, $7FFF, $2656, $4100, $0000, $7EB5, $1CE7 +dw $0000, $4100, $7FFF, $2656, $4100, $0000, $4100, $4100 org $9BE5A4 -dw $0000, $5565, $7FFF, $2BE9, $0000, $0000, $7EB5, $1CE7 +dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $34E0, $34E0 ; move BG1 to main screen in dungeon map screen org $8AE130 diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index bf83d99..40bae62 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -106,9 +106,9 @@ org $B9FF00 ; $00 - do not show anything ; $01 - show presence of supertile as dark square ; $02 - show presence of quadrants as dark squares -; $03 - show outline of shape with walls but no interior details (palette 3) +; $03 - show outline of shape with walls but no interior details (palette 5) ; $04 - show dark with stairs but no hole/internal walls (palette 4) -; $05 - show mostly lit with stairs and holes/internal walls (palette 5) +; $05 - show mostly lit with stairs and holes/internal walls (palette 3) ; $06 - show fully lit with stairs and holes/internal walls (palette 2) ShowRooms: .default diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index a25b43b80ba718039e6292e148e83dc63861e155..d9811c5a671911e814ea5fbec025b6b9c524eed7 100644 GIT binary patch delta 585 zcmZvZzfQw25XLWciz*?p_GZY6ME4F>BX#BlKn#`FzQM&K6Kcr9$TN@^Xw!FT#l#C# zE_eQu1PPy_IG^*~_p@!$;Q65GC;imehyyX2OzI z9kAyh8LryT-&MPEJtyab6Hd~SlZwPs6j~SLwLYKsEJEHRxu*!VNXnm dp^x8ZvzdO6W^$+(IC04V0$+kcRIc7!SHFUY!5#nr delta 227 zcmZpWXpoq2X!2zy-N_G_6kynZ;U5Dkfbkm`kRby@0|ZR2XFNFhB9lJM01&MOGz3-g zKZs(WC@N@}{FCV<)D4oGIamT1q2>roV&-E0$MA3SR90Qa$ybyHAvTL3MiLthXd|(Rc*ueh6%5z}Y%D?=8y`T<1~+FzvTiN} z1&I$}WuZ}26D_#LKV!LpH65P-De8B4*BP$kEm7k5-vrw|5RC}CQEJYzJ{FY~cDgu8G6EgpEgSlX4NFQ(xgTOfjsDpo zCsCEGBSPmG{o0s8LCG1%$OW|uw-+csa~>k!g%b#8AV&Q|wu&Yt%nFPYShanco~r%8 UOBy_cvyL0A>B;a2eg%c z-a(;ja8K+{=vr_OYOHxGZQV>I2q?c7n2f^Etl%k*_9R!02D%8c?3HQ5yvF04E^`L-!iBA<*Uz;JI+SGR6i)_+Q8a z&G1}h?sNE}%+#o$dauOasigYri5}ArJ ze?xpgmASJFv-X*vXVxTwB-K~Za2O+9cS=l4;5-p2iusA<^rviOL2CE3&UiiU(ZW_R z%e+-Yk1z|ce^}5KjgDw56y%sa!q%EFhTwa&(uCHKjZMKFmApl=%Oc+(`%W--C=Hq8 sl5qrW0A7cvb_H2BZ{uAyHQfUaTUUbfOI}8DBAAx~m&xzINy-A1CK@cR=LBR@c)(&mac1aZcKyY%%;2`KExH&i!CHFQ7H-*-K zldIq$E;{+KIOy)+4=AM-v898X5Utx84(B|W7iQDt&V1{zkfC1A8zB6K*GKExHq|4X zq&3V=^)X}XHmOgVwdFDup(h~UNsgnl0NswuR2{3&F(ZM~wJ2w)GRLP>sOl6qj)gy@ z@Pj=@Smc!&oP7k$=1H2TRsD#a%}IelZ` Zpm`^PAJQo^ID@l1mN%Q?CeAT0000Z|AwCcgmwY~{{R3_ n+%S`!0nP-3bOJDwZvrb11t1^@2p}LN{{`Ro-&Iw!s{%IxU1A?w -- 2.43.0 From 688300d21a2af071fff1ce9fa2a8102522be54ae Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Fri, 2 Jan 2026 17:05:10 -0600 Subject: [PATCH 07/73] Tile warps on map --- dungeon_map/data/supertile_shapes.asm | 32 +++++++++++++------------- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 586 -> 670 bytes menu/map_icons_2.3bppc | Bin 699 -> 722 bytes 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index a7d2310..f0b226c 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -7,9 +7,9 @@ db $FF, $FF, $FF, $FF ; 05 - unused db $FF, $FF, $4F, $FF ; 06 - Arrghus db $00, $40, $00, $00 ; 07 - Moldorm db $FF, $FF, $72, $5F ; 08 - useless fairy entrance -db $66, $66, $FF, $FF ; 09 -db $58, $58, $FF, $FF ; 0A -db $2E, $67, $2E, $70 ; 0B +db $66, $3B, $FF, $FF ; 09 +db $58, $1F, $FF, $FF ; 0A +db $2E, $67, $2E, $1E ; 0B db $31, $31, $24, $24 ; 0C db $FF, $FF, $4F, $FF ; 0D - Aga 2 db $FF, $FF, $57, $5F ; 0E @@ -25,7 +25,7 @@ db $40, $40, $00, $00 db $75, $FF, $74, $FF ; 18 - useless fairy drop db $FF, $29, $FF, $1A ; 19 db $6E, $6F, $6D, $75 ; 1A -db $2E, $67, $75, $FF +db $2E, $67, $75, $FF ; 1B db $74, $74, $3E, $2E ; 1C db $72, $67, $FF, $FF db $FF, $68, $57, $4B @@ -72,8 +72,8 @@ db $14, $14, $00, $00 db $FF, $FF, $FF, $FF ; 47 - unused db $FF, $FF, $FF, $FF ; 48 - unused db $72, $2E, $72, $2E ; 49 -db $61, $61, $24, $24 -db $75, $74, $2E, $2E +db $61, $61, $24, $24 ; 4A +db $75, $0E, $2E, $2E ; 4B db $FF, $65, $FF, $77 ; 4C db $10, $30, $01, $00 db $72, $57, $FF, $FF ; 4E @@ -104,7 +104,7 @@ db $00, $30, $10, $00 db $00, $10, $00, $01 ; 67 db $00, $10, $01, $00 ; 68 db $FF, $FF, $FF, $FF ; 69 - unused -db $FF, $4C, $FF, $74 ; 6A +db $FF, $4C, $FF, $0E ; 6A db $65, $75, $2E, $2E ; 6B db $65, $FF, $2E, $71 ; 6C - Lanmolas 2 db $75, $FF, $77, $FF ; 6D @@ -121,9 +121,9 @@ db $30, $00, $60, $60 db $FF, $FF, $FF, $FF ; 78 - unused db $FF, $FF, $FF, $FF ; 79 - unused db $FF, $FF, $FF, $FF ; 7A - unused -db $70, $71, $4F, $4D +db $1E, $71, $4F, $4D ; 7B db $77, $74, $77, $77 -db $2E, $70, $77, $4F ; 7D +db $2E, $70, $52, $51 ; 7D - warp tiles db $FF, $77, $53, $2D ; 7E db $77, $FF, $55, $FF db $67, $70, $FF, $FF ; 80 @@ -153,9 +153,9 @@ db $65, $74, $2E, $2F ; 97 db $FF, $FF, $5F, $57 ; 98 db $FF, $74, $0A, $18 ; 99 db $FF, $FF, $FF, $FF ; 9A - unused -db $72, $70, $70, $71 +db $72, $1E, $1E, $38 ; 9B db $10, $10, $01, $01 -db $70, $72, $71, $70 +db $1E, $72, $71, $1E ; 9D db $FF, $65, $70, $79 ; 9E db $FF, $FF, $5B, $FF ; 9F db $72, $57, $FF, $FF ; A0 @@ -163,8 +163,8 @@ db $70, $1D, $FF, $2A ; A1 db $45, $45, $16, $06 db $1A, $FF, $2A, $FF ; A3 db $FF, $FF, $4E, $FF ; A4 -db $65, $75, $2E, $2E -db $00, $30, $00, $00 +db $65, $75, $2E, $2E ; A5 +db $00, $30, $00, $00 ; A6 db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room db $00, $03, $00, $12 ; A8 db $17, $17, $16, $16 @@ -175,8 +175,8 @@ db $FF, $FF, $FF, $FF ; AD - unused db $FF, $59, $FF, $FF ; AE db $5B, $FF, $FF, $FF ; AF db $2E, $67, $2E, $57 ; B0 -db $74, $75, $2E, $2D -db $14, $05, $10, $11 ; B2 - split this monster somehow? +db $0E, $75, $0C, $2D ; B1 +db $1C, $62, $72, $4B ; B2 - split this monster somehow? db $4A, $FF, $4A, $FF db $10, $00, $44, $44 db $30, $00, $10, $00 @@ -207,7 +207,7 @@ db $FF, $FF, $FF, $FF ; CD - unused db $FF, $78, $FF, $FF db $FF, $FF, $FF, $FF ; CF - unused db $2E, $67, $2E, $57 ; D0 -db $4E, $4F, $70, $70 +db $4E, $4F, $1E, $70 ; D1 db $FF, $75, $FF, $55 db $FF, $FF, $FF, $FF ; D3 - unused db $FF, $FF, $FF, $FF ; D4 - unused diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index d9811c5a671911e814ea5fbec025b6b9c524eed7..4f56f3ffa5100d93c51faf23728028dad1fbc98f 100644 GIT binary patch delta 425 zcmYjNu}T9$5S`sikYF8nBo-EaK!~MRgiE27ts!6#k-H`!Sj*o1!}aqcRH*QBY|b6Az{5i`QTAph6U$Um+k=tP;yocseCkM%BZp?; zXW4q4xu!5@<~o*oC1RCw3zgEJ01_!Hp~GUnKEvp!UMZ`qH?6%l0|ujh7<`ObRCm}x zwUv_q3D;M{({XQ5EK0aw@Ok)aE_o){k0r8pJ`Xnf2H7a>8uAmZmQT!066^1JpD8hr@poHVh7jnHd_LaL52OiU|n* zVONY>bn}0vd`6aM49^%Q7qMIr#j0>}IIA&sna%TApECNLV>kzO2m=EXlaUd~86b!d zw}Fa3Qvr#e2SQLdfE>%jWNg5|3}S&~<}u9U*?fsTj&ZUCCm$C`7YIC4ne4$?CzHmI x#!v@@3=B?APEk=#AQngy$nl#Wai%cBRRF`Y4x}PYr4A_npW!(WPEO*U2LL41QZ@hp diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index 4e311b9ea930c7f7841e8ce913cabdfc4d8df6c2..c44c5da3ad3eef740235f7021001db27b54656e0 100644 GIT binary patch delta 281 zcmWlUJxc>Y07PeYSCn*GEh)s0kRs_+L?z&H8;giSv=PKYM6R|Lya?;M+?@e6jg{n2 z*oOoxEW}!@Pq6d{9G=}Y?>**CJx|?Vw*3bXw^5i}y9#E)v8Yx>fnL^u(k%oN+W_;{ zP7D)i6NA7~D2|Uqx4^qK)UjXS;c4&4&og-i!*Nz+62Wx^qjS?kCx!$9vmBOize3*? zZUkTF%{x??iUYgBOo73~&7nUO_KI$W=}_Q0`x1jio;D-8iY$%D(`n^?#s4f)FI>t; zt$dT|sxmqH4ekzJxV_~@(tPXNL#RS(E$uq9PiYHjeUahF${}=VuHZQ7nv7Qf;CPZj;|I+B3~mm~6u&$z;wj IIhDy009PI@6951J diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index 040f0b1b3a9f876f343697ff3e4660a3f1eab733..d72be7eb63d9eef444880f11924c988379570d77 100644 GIT binary patch delta 165 zcmV;W09yaM1=0nO);og~0EJKiLuMF=asdKbT0(;c0fX`YLuVL;LIDIqLPJ0GM*#i+7>hgr0%jQI zNEqh}<{0D{e%c!t7#n_kiSPggXBcJ}Bp8PP0gYe)i6#I_egK4H0+I-mwE<=Vy#bRQ T0z(Ogm;r{z1B<2slWzh{J^?a7 delta 142 zcmV;90CE4)1-k{1)-Q*Q0EvVFgC+ojk^zJ+07L-KiBJFmGcbwN00W)?o(zQw00jX4 z0%BqUgA4$NR+A9{d^Clw0fzzr1Ac%&fQmo>M*#i+7>+yuiW>uoCIE@>00n0lW*8(G whX4VMU;vFi1Bp}tlm?U10cHXP0+TudLl1>e0f)u|gkAvwT3Un+1(SvXOydzKy8r+H -- 2.43.0 From fecf9547a529c79adfc035bcea6e599f296d0be2 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sat, 3 Jan 2026 09:20:51 -0600 Subject: [PATCH 08/73] Sprites for entrances and update supertile shapes --- dungeon_map/data/entrance_tiles.asm | 26 ++++ dungeon_map/data/supertile_shapes.asm | 182 +++++++++++++------------- dungeon_map/draw_loot.asm | 6 +- dungeon_map/draw_rooms.asm | 133 +++++++++++++++++++ dungeon_map/dungeon_switch.asm | 15 ++- dungeon_map/hooks.asm | 4 + dungeon_map/settings.asm | 10 ++ menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 670 -> 584 bytes menu/map_icons_2.3bppc | Bin 722 -> 676 bytes menu/map_sheet_d4.3bpp | Bin 1536 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 994 -> 977 bytes ram.asm | 1 + vanillalabels.asm | 3 + 14 files changed, 284 insertions(+), 96 deletions(-) create mode 100644 dungeon_map/data/entrance_tiles.asm diff --git a/dungeon_map/data/entrance_tiles.asm b/dungeon_map/data/entrance_tiles.asm new file mode 100644 index 0000000..f7f01ed --- /dev/null +++ b/dungeon_map/data/entrance_tiles.asm @@ -0,0 +1,26 @@ +dw $200C +dw $100E +dw $2012 +dw $1023 +dw $1024 +dw $2028 +dw $204A +dw $4056 +dw $4057 +dw $4058 +dw $4059 +dw $1060 +dw $2061 +dw $4062 +dw $4063 +dw $2077 +dw $4083 +dw $2084 +dw $1085 +dw $4098 +dw $20C9 +dw $40D5 +dw $10D6 +dw $20DB +dw $40E0 +dw $FFFF diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index f0b226c..117b843 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -5,47 +5,47 @@ db $FF, $FF, $4F, $FF ; 03 - Houlihan db $65, $74, $2D, $2E ; 04 db $FF, $FF, $FF, $FF ; 05 - unused db $FF, $FF, $4F, $FF ; 06 - Arrghus -db $00, $40, $00, $00 ; 07 - Moldorm -db $FF, $FF, $72, $5F ; 08 - useless fairy entrance +db $00, $30, $00, $00 ; 07 - Moldorm +db $FF, $FF, $72, $72 ; 08 - useless fairy entrance db $66, $3B, $FF, $FF ; 09 db $58, $1F, $FF, $FF ; 0A db $2E, $67, $2E, $1E ; 0B -db $31, $31, $24, $24 ; 0C +db $31, $31, $14, $14 ; 0C db $FF, $FF, $4F, $FF ; 0D - Aga 2 -db $FF, $FF, $57, $5F ; 0E +db $FF, $FF, $57, $72 ; 0E db $FF, $FF, $FF, $FF ; 0F - unused and should never be used, treated as non-id -db $00, $00, $20, $00 ; 10 -db $00, $30, $00, $10 -db $14, $14, $24, $24 +db $00, $00, $10, $00 ; 10 +db $00, $30, $00, $10 ; 11 +db $14, $14, $14, $14 ; 12 db $FF, $77, $FF, $77 ; 13 -db $11, $01, $11, $11 -db $34, $00, $01, $00 +db $11, $01, $11, $11 ; 14 +db $34, $00, $01, $00 ; 15 db $75, $65, $2E, $2E ; 16 -db $40, $40, $00, $00 +db $30, $30, $00, $00 ; 17 db $75, $FF, $74, $FF ; 18 - useless fairy drop -db $FF, $29, $FF, $1A ; 19 +db $FF, $29, $FF, $2A ; 19 db $6E, $6F, $6D, $75 ; 1A db $2E, $67, $75, $FF ; 1B db $74, $74, $3E, $2E ; 1C -db $72, $67, $FF, $FF -db $FF, $68, $57, $4B +db $72, $67, $FF, $FF ; 1D +db $FF, $68, $57, $4B ; 1E db $FF, $FF, $71, $57 ; 1F db $FF, $FF, $4F, $FF ; 20 -db $00, $10, $00, $01 +db $00, $10, $00, $01 ; 21 db $FF, $FF, $28, $08 ; 22 -db $FF, $FF, $FF, $6B -db $10, $10, $01, $20 ; 24 +db $FF, $FF, $FF, $5B ; 23 +db $10, $10, $01, $10 ; 24 db $FF, $FF, $FF, $FF ; 25 - unused db $00, $3C, $14, $42 ; 26 -db $40, $40, $00, $00 -db $65, $FF, $1B, $0B ; 28 +db $30, $30, $00, $00 ; 27 +db $65, $FF, $2D, $08 ; 28 db $FF, $FF, $FF, $56 ; 29 - Mothula db $10, $12, $10, $5E db $2A, $FF, $0D, $70 ; 2B db $00, $00, $10, $10 ; 2C - hookshot cave back db $FF, $FF, $FF, $FF ; 2D - unused db $FF, $4F, $FF, $FF ; 2E -db $74, $FF, $2E, $5F ; 2F - Kakariko well +db $74, $FF, $2E, $72 ; 2F - Kakariko well db $75, $FF, $65, $FF ; 30 db $2E, $57, $2E, $57 ; 31 db $14, $14, $44, $44 @@ -58,7 +58,7 @@ db $6C, $FF, $77, $FF ; 38 db $FF, $FF, $72, $69 ; 39 db $64, $64, $14, $14 db $65, $FF, $75, $FF -db $00, $10, $00, $20 ; 3C - hookshot cave front +db $00, $10, $00, $10 ; 3C - hookshot cave front db $2E, $2E, $75, $65 ; 3D db $FF, $74, $72, $2E ; 3E db $FF, $FF, $57, $57 @@ -72,7 +72,7 @@ db $14, $14, $00, $00 db $FF, $FF, $FF, $FF ; 47 - unused db $FF, $FF, $FF, $FF ; 48 - unused db $72, $2E, $72, $2E ; 49 -db $61, $61, $24, $24 ; 4A +db $61, $61, $14, $14 ; 4A db $75, $0E, $2E, $2E ; 4B db $FF, $65, $FF, $77 ; 4C db $10, $30, $01, $00 @@ -83,24 +83,24 @@ db $14, $14, $44, $44 db $77, $FF, $19, $08 ; 52 db $65, $75, $2E, $2E ; 53 db $50, $50, $40, $00 ; 54 -db $00, $00, $20, $00 ; 55 -db $74, $74, $2B, $3D ; 56 -db $2E, $70, $63, $5B -db $00, $00, $21, $10 ; 58 - split -db $10, $00, $20, $00 +db $00, $00, $10, $00 ; 55 +db $74, $74, $2D, $3D ; 56 +db $2E, $70, $4A, $5B ; 57 +db $00, $00, $11, $10 ; 58 - split +db $10, $00, $10, $00 db $FF, $FF, $FF, $4F ; 5A - Helmasaur King db $FF, $77, $FF, $75 ; 5B db $71, $6A, $FF, $74 ; 5C db $2E, $67, $75, $FF ; 5D db $FF, $68, $57, $4B ; 5E -db $FF, $FF, $7B, $FF -db $FF, $39, $FF, $3A ; 60 -db $47, $45, $26, $26 -db $06, $14, $22, $00 -db $65, $FF, $76, $FF ; 63 -db $FF, $FF, $57, $71 +db $FF, $FF, $7B, $FF ; 5F +db $FF, $39, $FF, $2A ; 60 +db $47, $45, $16, $16 ; 61 +db $06, $14, $12, $00 ; 62 +db $65, $FF, $75, $FF ; 63 +db $FF, $FF, $57, $71 ; 64 db $FF, $FF, $71, $69 ; 65 -db $00, $30, $10, $00 +db $00, $30, $10, $00 ; 66 db $00, $10, $00, $01 ; 67 db $00, $10, $01, $00 ; 68 db $FF, $FF, $FF, $FF ; 69 - unused @@ -129,9 +129,9 @@ db $77, $FF, $55, $FF db $67, $70, $FF, $FF ; 80 db $10, $01, $00, $01 db $5D, $14, $01, $00 ; 82 -db $74, $75, $2B, $2E ; 83 -db $04, $05, $24, $24 -db $4B, $72, $2E, $5F ; 85 +db $74, $75, $2D, $2E ; 83 +db $04, $05, $14, $14 +db $4B, $72, $2E, $72 ; 85 db $FF, $FF, $FF, $FF ; 86 - unused db $67, $2E, $54, $74 db $FF, $FF, $FF, $FF ; 88 - unused @@ -148,28 +148,28 @@ db $00, $00, $01, $01 ; 92 - should it be split? idk db $2C, $2C, $77, $74 ; 93 db $FF, $FF, $FF, $FF ; 94 - unused db $FF, $77, $FF, $75 ; 95 -db $77, $FF, $2E, $57 +db $77, $FF, $2E, $57 ; 96 db $65, $74, $2E, $2F ; 97 -db $FF, $FF, $5F, $57 ; 98 +db $FF, $FF, $72, $57 ; 98 db $FF, $74, $0A, $18 ; 99 db $FF, $FF, $FF, $FF ; 9A - unused db $72, $1E, $1E, $38 ; 9B -db $10, $10, $01, $01 +db $10, $10, $01, $01 ; 9C db $1E, $72, $71, $1E ; 9D db $FF, $65, $70, $79 ; 9E db $FF, $FF, $5B, $FF ; 9F db $72, $57, $FF, $FF ; A0 db $70, $1D, $FF, $2A ; A1 -db $45, $45, $16, $06 +db $45, $45, $16, $06 ; A2 db $1A, $FF, $2A, $FF ; A3 db $FF, $FF, $4E, $FF ; A4 db $65, $75, $2E, $2E ; A5 db $00, $30, $00, $00 ; A6 db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room db $00, $03, $00, $12 ; A8 -db $17, $17, $16, $16 -db $03, $00, $12, $00 -db $FF, $FF, $5A, $FF +db $17, $17, $16, $16 ; A9 +db $03, $00, $12, $00 ; AA +db $FF, $FF, $5A, $FF ; AB db $FF, $FF, $FF, $4F ; AC - Blind db $FF, $FF, $FF, $FF ; AD - unused db $FF, $59, $FF, $FF ; AE @@ -177,29 +177,29 @@ db $5B, $FF, $FF, $FF ; AF db $2E, $67, $2E, $57 ; B0 db $0E, $75, $0C, $2D ; B1 db $1C, $62, $72, $4B ; B2 - split this monster somehow? -db $4A, $FF, $4A, $FF -db $10, $00, $44, $44 -db $30, $00, $10, $00 -db $65, $74, $75, $75 -db $74, $FF, $75, $FF +db $4A, $FF, $4A, $FF ; B3 +db $10, $00, $44, $44 ; B4 +db $30, $00, $10, $00 ; B5 +db $65, $74, $75, $75 ; B6 +db $74, $FF, $75, $FF ; B7 db $FF, $4A, $FF, $74 ; B8 -db $15, $15, $14, $14 -db $73, $70, $FF, $FF -db $10, $01, $00, $01 ; BB -db $34, $10, $11, $10 +db $15, $15, $14, $14 ; B9 +db $73, $70, $FF, $FF ; BA +db $2D, $3D, $2E, $3D ; BB +db $7F, $2D, $73, $2D ; BC - block off entrances? db $FF, $FF, $FF, $FF ; BD - unused -db $FF, $65, $FF, $4A +db $FF, $65, $FF, $4A ; BE db $FF, $FF, $4D, $FF ; BF db $2E, $67, $2E, $57 ; C0 -db $2E, $73, $2D, $73 -db $11, $13, $01, $13 -db $13, $00, $03, $00 +db $2E, $73, $2D, $73 ; C1 +db $11, $13, $01, $13 ; C2 +db $13, $00, $03, $00 ; C3 db $44, $44, $00, $01 ; C4 -db $75, $FF, $4A, $FF -db $10, $11, $10, $11 -db $11, $00, $01, $00 +db $75, $FF, $4A, $FF ; C5 +db $10, $11, $10, $11 ; C6 +db $11, $00, $01, $00 ; C7 db $FF, $FF, $FF, $4F ; C8 - Armos Knights -db $14, $14, $24, $24 ; C9 +db $14, $14, $14, $14 ; C9 db $FF, $FF, $FF, $FF ; CA - unused db $00, $03, $14, $07 ; CB db $13, $10, $07, $14 ; CC @@ -211,48 +211,48 @@ db $4E, $4F, $1E, $70 ; D1 db $FF, $75, $FF, $55 db $FF, $FF, $FF, $FF ; D3 - unused db $FF, $FF, $FF, $FF ; D4 - unused -db $75, $FF, $76, $FF -db $75, $75, $74, $76 +db $75, $FF, $75, $FF ; D5 +db $75, $75, $74, $75 ; D6 db $FF, $FF, $FF, $FF ; D7 - unused db $FF, $75, $FF, $77 ; D8 -db $FF, $FF, $71, $71 -db $FF, $FF, $5C, $FF -db $14, $06, $24, $3F +db $FF, $FF, $71, $71 ; D9 +db $FF, $FF, $5C, $FF ; DA +db $14, $06, $14, $3F ; DB db $06, $14, $03, $00 ; DC db $FF, $FF, $FF, $FF ; DD - unused db $FF, $56, $FF, $FF ; DE - Kholdstare -db $FF, $FF, $60, $24 ; DF - paradox top -db $2E, $67, $76, $FF ; E0 +db $FF, $FF, $60, $14 ; DF - paradox top +db $2E, $67, $75, $FF ; E0 ; no more dungeon -db $00, $00, $20, $00 ; E1 - lost woods thieves hideout -db $00, $00, $00, $20 ; E2 - lumberjack cave -db $FF, $74, $5F, $2E ; E3 - magic bat -db $00, $02, $20, $02 ; E4 - old man's house front -db $02, $00, $26, $24 ; E5 - old man's house back +db $00, $00, $10, $00 ; E1 - lost woods thieves hideout +db $00, $00, $00, $10 ; E2 - lumberjack cave +db $FF, $74, $72, $2E ; E3 - magic bat +db $00, $02, $10, $02 ; E4 - old man's house front +db $02, $00, $16, $14 ; E5 - old man's house back db $00, $01, $10, $00 ; E6 - death mountain descent left -db $01, $00, $00, $20 ; E7 - death mountain descent right -db $30, $30, $40, $20 ; E8 - superbunny top +db $01, $00, $00, $10 ; E7 - death mountain descent right +db $30, $30, $40, $10 ; E8 - superbunny top db $FF, $FF, $FF, $FF ; E9 - unused -db $65, $FF, $76, $FF ; EA - spectacle top -db $FF, $66, $FF, $76 ; EB - bumper top +db $65, $FF, $75, $FF ; EA - spectacle top +db $FF, $66, $FF, $75 ; EB - bumper top db $FF, $FF, $FF, $FF ; EC - unused -db $30, $30, $00, $20 ; ED - fairy ascension top -db $00, $50, $00, $20 ; EE - spiral top -db $FF, $00, $60, $24 ; EF - paradox top -db $00, $02, $20, $02 ; F0 - old man rescue left -db $02, $02, $00, $20 ; F1 - old man rescue right -db $FF, $FF, $FF, $5F ; F2 - Sahasrahla's Kakariko house left -db $FF, $FF, $5F, $FF ; F3 - Sahasrahla's Kakariko house right -db $FF, $FF, $FF, $5F ; F4 - quarreling brothers left -db $FF, $FF, $5F, $FF ; F5 - quarreling brothers right +db $30, $30, $00, $10 ; ED - fairy ascension top +db $00, $50, $00, $10 ; EE - spiral top +db $FF, $00, $60, $14 ; EF - paradox top +db $00, $02, $10, $02 ; F0 - old man rescue left +db $02, $02, $00, $10 ; F1 - old man rescue right +db $FF, $FF, $FF, $72 ; F2 - Sahasrahla's Kakariko house left +db $FF, $FF, $72, $FF ; F3 - Sahasrahla's Kakariko house right +db $FF, $FF, $FF, $72 ; F4 - quarreling brothers left +db $FF, $FF, $72, $FF ; F5 - quarreling brothers right db $FF, $FF, $FF, $FF ; F6 - unused db $FF, $FF, $FF, $FF ; F7 - unused -db $30, $30, $60, $24 ; F8 - superbunny bottom -db $00, $01, $20, $00 ; F9 - spectacle left -db $34, $00, $20, $00 ; FA - spectacle bottom +db $30, $30, $60, $14 ; F8 - superbunny bottom +db $00, $01, $10, $00 ; F9 - spectacle left +db $34, $00, $10, $00 ; FA - spectacle bottom db $FF, $65, $08, $18 ; FB - bumper bottom db $FF, $FF, $FF, $FF ; FC - unused -db $30, $30, $24, $24 ; FD - fairy ascension bottom -db $FF, $FF, $74, $76 ; FE - spiral bottom -db $74, $74, $2E, $2B ; FF - paradox bottom +db $30, $30, $14, $14 ; FD - fairy ascension bottom +db $FF, $FF, $74, $75 ; FE - spiral bottom +db $74, $74, $2E, $2D ; FF - paradox bottom diff --git a/dungeon_map/draw_loot.asm b/dungeon_map/draw_loot.asm index 2d5393d..17975eb 100644 --- a/dungeon_map/draw_loot.asm +++ b/dungeon_map/draw_loot.asm @@ -21,11 +21,11 @@ DrawLoot: STZ.b $0E LDX.w DungeonID - LDA.l $8AF615, X + LDA.l DungeonMapRoomPointers, X STA.b $0C SEP #$20 - LDA.l $8AF5E9, X + LDA.l DungeonMapFloorCountData, X AND.b #$0F CLC : ADC.w $020E PHA @@ -55,7 +55,7 @@ DrawSingleFloorLoot: ASL A TAX - LDA.l $8AF605, X + LDA.l DungeonMapFloorToDataOffset, X TAY STZ.b $06 diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index 4c05d17..0be9c57 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -111,3 +111,136 @@ DrawDungeonMapRoom: PLA : STA.b $0A PLB RTL + +DrawEntrances: + REP #$30 + PHX : PHY + LDA.b $06 : PHA + + LDX.w DungeonID + LDA.l DungeonMapRoomPointers, X + STA.b $0C + + SEP #$20 + LDA.l DungeonMapFloorCountData, X + AND.b #$0F + CLC : ADC.w $020E + DEC A + REP #$20 + AND.w #$00FF + + JSR DrawBothFloorsEntrances + +.done + REP #$20 + PLA : STA.b $06 + PLY : PLX + SEP #$30 + RTL + +DrawBothFloorsEntrances: + ASL A + TAX + + LDA.l DungeonMapFloorToDataOffset, X + TAY + STZ.b $06 + +.next_room + REP #$20 + LDA.b ($0C), Y ; get room id + AND.w #$00FF + CMP.w #$000F ; $0F = empty room + + BEQ + + JSR DrawSingleRoomEntrances ++ + + INY + + SEP #$20 + INC.b $06 + LDA.b $06 + CMP.b #$05 + BCC .next_room + + STZ.b $06 +- INC.b $07 + LDA.b $07 + CMP.b #$0A + BCC .next_room + +.done + RTS + +macro DrawSingleEntrance(offset) + LDX.b $00 + STZ.w OAMBufferAux, X ; high x-bit and size bit + TXA + ASL #2 + TAX + + LDA.b $06 + ASL #4 + CLC : ADC.b #$90+ + STA.w OAMBuffer+0, X + + LDA.b $07 + ASL #4 + CMP.b #$50 + BCC ?+ + CLC : ADC.b #$50 +?+ CLC : ADC.b #$87 + CLC : ADC.w $0213 + SEC : SBC.b $E8 + STA.w OAMBuffer+1, X + + LDA.b #$33 + STA.w OAMBuffer+2, X + + LDA.b #$23 + STA.w OAMBuffer+3, X + + INC.b $00 +endmacro + +DrawSingleRoomEntrances: + STA.b $0E + SEP #$10 + + LDX.b #$FE +.next_entry + INX : INX + LDA.l SupertileEntrances, X + BPL + + JMP .done ++ + + AND.w #$0FFF + CMP.b $0E + BNE .next_entry + + SEP #$20 + LDA.l SupertileEntrances+1, X + PHA : PHA + + BIT.b #$40 + BEQ + + %DrawSingleEntrance(0) ++ + + PLA + BIT.b #$20 + BEQ + + %DrawSingleEntrance(4) ++ + + PLA + BIT.b #$10 + BEQ + + %DrawSingleEntrance(8) ++ + +.done + REP #$30 + RTS diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm index 52a222d..881db9a 100644 --- a/dungeon_map/dungeon_switch.asm +++ b/dungeon_map/dungeon_switch.asm @@ -44,6 +44,7 @@ DungeonMapSwitch_Submodule: LDA.b #$01 STA.w $0200 STA.w $020D + STZ.w $0213 STZ.w $021B STZ.w $021C STZ.b $06 @@ -60,7 +61,15 @@ DungeonMapSwitch_Submodule: SkipMapSprites: STZ.b $00 + + LDA.w $0200 + CMP.b #$04 + BEQ + + JSL DrawEntrances ++ + STZ.b $0E + STZ.b $0F LDA.w $0200 CMP.b #$04 @@ -92,10 +101,12 @@ RestoreCurrentDungeon: RTL RestoreDungeonMapFloorIndex: - STZ.w $020F + STZ.w $020F ; first part we wrote over + LDA.w $021B STA.b $07 STZ.b $06 - LDA.b $0A + + LDA.b $0A ; the rest of what we wrote over AND.b #$08 RTL diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index 1b53049..f114bcf 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -41,6 +41,10 @@ org $8AE64F org $8AE152 JSL LoadLastHUDPalette +org $8AEAE8 ; vanilla checks number of sprites drawn instead of... counting... + LDA.b $0E + CMP.b #$02 + ;================================================================================ ; Swapping Dungeon in Dungeon Map Screen (L/R) ;-------------------------------------------------------------------------------- diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 40bae62..2df5ca9 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -2,6 +2,8 @@ SupertileRoomShapes: incsrc data/supertile_shapes.asm warnpc $B9F400 +padbyte $FF +pad $B9F400 org $B9F400 DungeonMapData: @@ -99,6 +101,14 @@ dw $00A4 : db $0C ; Trinexx dw $FFFF ; $B9F6C0 +SupertileEntrances: +incsrc data/entrance_tiles.asm +warnpc $B9F700 +padbyte $FF +pad $B9F700 + +; $B9F700 + warnpc $B9FF00 diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index 4f56f3ffa5100d93c51faf23728028dad1fbc98f..ab68c7fe3cf6598c0323da043358374955b43ff0 100644 GIT binary patch delta 459 zcmZpWXpq>z#VE#r6>L^u%wUwjDg_jrynrd89+xDY#2qQNXYv7N51d}ytiTe0CjdHF zv)J}C{9`!4u=xk;Cng-BIEfRt1(OpvXRAv51Ny@05EBr9SlGd21+EV`-8or<`vw5( CMHr(1 delta 459 zcmY*VJ5B>J5S_INQbLbhZeb)!Zh+ZsC^SLKs9971eTV=L0S?p7 z-k(H-D@06wZqFVXH_}L~HMpT<41HJ5;HS;v`TSPZ=dZ=5`TNBhO@A@@m!$}BA(47i mimvNJ=nKVq`FeGei3pPN`i~^8$aZy5no}p@L!De-eEa~yC6v$r diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index c44c5da3ad3eef740235f7021001db27b54656e0..307282b469e5beeb9897ddb7a0a941c8071b9752 100644 GIT binary patch delta 155 zcmbQodV*y_Av}#>opAX!*?48ov~ogu$5} zpc_H~ZN1&mAto+uPfP*3leg&W@uzg>(4|M;%TnSis;TKSjjOVPW=mxsG<9Y_#2`9X zQ&*xo(@ing${xz7!0n#or`%}9LG>(5l*zJVex=HJV#Or9_Z+*+DF;OU00LnCY?A{4egroFix!iT0VPD7=mLmk z0Es35N`3%@V*-*00)}G(j3NSt7XXds0EAcpgrNb11_A+ET8kwDgaZJC<^Ta28ieft zjj96yLc)hS0yO}W4FW?mh3EhQ<|K`n1cSZ=hZ+Hm5(0+^0!@AZgZ==AVgc|V3IvC{ q0gY<{kf8yDb^t>d|AY&Zjsh+di3SCV2myxs1CY7^hO+~OS^)o^uRRd} delta 214 zcmZ3&dWm(yDGuj<49@2mIyoj@(gd-Y=P}IVnaspkC)jy|!TFg4ql!f93x*awh7QKb zEsU!CogWxj(B9 zKL!SaW*!Dcr$hZgOszr8?K7Arzh!i`YyZL2JAPUg=1wlwZX3pS1D3WKjBUr6yO%LGmoYd$XJ`$YoXn&r*3HJ+F^QpNGjpp1 OW6wT@HXtL4;XeRp3q$w- diff --git a/menu/map_sheet_d4.3bpp b/menu/map_sheet_d4.3bpp index b1de6dd5db9fbb7ad3cedc1bfb624157a3af1b92..23bf78b2883a901d46e701fdba47822d2827380e 100644 GIT binary patch delta 31 fcmZqRY2ev#f@LBv2fqY^4TA&_Lc!+yEQ*W(X!`|* delta 36 qcmZqRY2ev#f<>HzL59JOp&kfj7&sUh7&t_f9Lq&GHs5DaWCQ?-3 Date: Sat, 3 Jan 2026 09:58:23 -0600 Subject: [PATCH 09/73] Add dungeon indicator lettering to maps --- dungeon_map/dungeon_switch.asm | 29 +++++++++++++++++++++++++++++ dungeon_map/hooks.asm | 4 ++++ dungeon_map/settings.asm | 18 ++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm index 881db9a..b0fab19 100644 --- a/dungeon_map/dungeon_switch.asm +++ b/dungeon_map/dungeon_switch.asm @@ -110,3 +110,32 @@ RestoreDungeonMapFloorIndex: LDA.b $0A ; the rest of what we wrote over AND.b #$08 RTL + +DrawDungeonLabel: + LDY.b #$00 + LDA.w DungeonID + ASL A + TAX + LDA.b NMISTRIPES + BEQ + + LDY.b #$20 ++ + + REP #$20 + LDA.w #$E660 + STA.w GFXStripes+$02, Y + LDA.w #$0300 + STA.w GFXStripes+$04, Y + + LDA.l DungeonLabels+0, X + STA.w GFXStripes+$06, Y + LDA.l DungeonLabels+2, X + STA.w GFXStripes+$08, Y + SEP #$20 + LDA.b #$FF + STA.w GFXStripes+$0A, Y + LDA.b #$01 + STA.b NMISTRIPES + + INC.w $020D ; what we wrote over + RTL diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index f114bcf..ff36c39 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -73,6 +73,10 @@ org $8AEFC5 JSL RestoreCurrentDungeon NOP +org $8AE1EC + PLB + JML DrawDungeonLabel + ;================================================================================ ; Show indicators of what is left in each room ;-------------------------------------------------------------------------------- diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 2df5ca9..8bffdc5 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -108,7 +108,25 @@ padbyte $FF pad $B9F700 ; $B9F700 +DungeonLabels: +dw $2561, $256F ; Sewers +dw $2564, $255F ; Hyrule Castle +dw $2561, $256C ; Eastern Palace +dw $2560, $256C ; Desert Palace +dw $255D, $2570 ; Agahnim's Tower +dw $256F, $256C ; Swamp Palace +dw $256C, $2560 ; Palace of Darkness +dw $2569, $2569 ; Misery Mire +dw $256F, $2573 ; Skull Woods +dw $2565, $256C ; Ice Palace +dw $2570, $2564 ; Tower of Hera +dw $2570, $2570 ; Thieves' Town +dw $2570, $256E ; Turtle Rock +dw $2563, $2570 ; Ganon's Tower +dw $25A4, $25A4 ; Reserved +dw $25A4, $25A4 ; Reserved +; $B9F740 warnpc $B9FF00 -- 2.43.0 From 7a12032067b3641da46c9c0415186cf18ff37dd2 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sat, 3 Jan 2026 13:19:29 -0600 Subject: [PATCH 10/73] More supertile shape updates --- dungeon_map/data/supertile_shapes.asm | 130 +++++++++++++------------- dungeon_map/draw_rooms.asm | 7 +- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons.dat | Bin 0 -> 256 bytes menu/map_icons.pal | Bin 0 -> 768 bytes menu/map_icons_1.3bppc | Bin 584 -> 716 bytes menu/map_icons_2.3bppc | Bin 676 -> 743 bytes 7 files changed, 71 insertions(+), 66 deletions(-) create mode 100644 menu/map_icons.dat create mode 100644 menu/map_icons.pal diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 117b843..316f819 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -12,7 +12,7 @@ db $58, $1F, $FF, $FF ; 0A db $2E, $67, $2E, $1E ; 0B db $31, $31, $14, $14 ; 0C db $FF, $FF, $4F, $FF ; 0D - Aga 2 -db $FF, $FF, $57, $72 ; 0E +db $FF, $FF, $D9, $22 ; 0E db $FF, $FF, $FF, $FF ; 0F - unused and should never be used, treated as non-id db $00, $00, $10, $00 ; 10 db $00, $30, $00, $10 ; 11 @@ -23,13 +23,13 @@ db $34, $00, $01, $00 ; 15 db $75, $65, $2E, $2E ; 16 db $30, $30, $00, $00 ; 17 db $75, $FF, $74, $FF ; 18 - useless fairy drop -db $FF, $29, $FF, $2A ; 19 +db $FF, $29, $FF, $1B ; 19 db $6E, $6F, $6D, $75 ; 1A -db $2E, $67, $75, $FF ; 1B +db $33, $D9, $21, $FF ; 1B db $74, $74, $3E, $2E ; 1C db $72, $67, $FF, $FF ; 1D -db $FF, $68, $57, $4B ; 1E -db $FF, $FF, $71, $57 ; 1F +db $FF, $F8, $D9, $26 ; 1E +db $FF, $FF, $20, $D9 ; 1F db $FF, $FF, $4F, $FF ; 20 db $00, $10, $00, $01 ; 21 db $FF, $FF, $28, $08 ; 22 @@ -38,48 +38,48 @@ db $10, $10, $01, $10 ; 24 db $FF, $FF, $FF, $FF ; 25 - unused db $00, $3C, $14, $42 ; 26 db $30, $30, $00, $00 ; 27 -db $65, $FF, $2D, $08 ; 28 +db $65, $FF, $18, $08 ; 28 db $FF, $FF, $FF, $56 ; 29 - Mothula -db $10, $12, $10, $5E -db $2A, $FF, $0D, $70 ; 2B +db $10, $12, $10, $5E ; 2A +db $2A, $FF, $0D, $CD ; 2B db $00, $00, $10, $10 ; 2C - hookshot cave back db $FF, $FF, $FF, $FF ; 2D - unused db $FF, $4F, $FF, $FF ; 2E db $74, $FF, $2E, $72 ; 2F - Kakariko well -db $75, $FF, $65, $FF ; 30 +db $21, $FF, $DA, $FF ; 30 - inset stairs if possible db $2E, $57, $2E, $57 ; 31 -db $14, $14, $44, $44 +db $14, $14, $44, $44 ; 32 db $FF, $FF, $4F, $FF ; 33 -db $00, $01, $40, $01 +db $00, $01, $40, $01 ; 34 db $4D, $77, $71, $3D ; 35 -db $15, $15, $15, $15 +db $15, $15, $15, $15 ; 36 db $77, $4D, $3D, $71 ; 37 db $6C, $FF, $77, $FF ; 38 db $FF, $FF, $72, $69 ; 39 -db $64, $64, $14, $14 -db $65, $FF, $75, $FF +db $64, $64, $14, $14 ; 3A - make bespoke if feasible +db $65, $FF, $75, $FF ; 3B - inset stairs if feasible db $00, $10, $00, $10 ; 3C - hookshot cave front db $2E, $2E, $75, $65 ; 3D -db $FF, $74, $72, $2E ; 3E -db $FF, $FF, $57, $57 -db $65, $FF, $2E, $57 ; 40 -db $00, $30, $14, $14 +db $FF, $CF, $72, $33 ; 3E +db $FF, $FF, $D9, $D9 ; 3F +db $65, $FF, $32, $D9 ; 40 - inset stairs if feasible +db $00, $30, $14, $14 ; 41 db $58, $49, $FF, $FF ; 42 -db $72, $2E, $FF, $75 -db $70, $3D, $70, $3D -db $6C, $74, $3D, $2E ; 45 -db $14, $14, $00, $00 +db $72, $2E, $FF, $75 ; 43 +db $CD, $5F, $CD, $5F ; 44 +db $6B, $CF, $24, $DB ; 45 +db $35, $35, $33, $33 ; 46 db $FF, $FF, $FF, $FF ; 47 - unused db $FF, $FF, $FF, $FF ; 48 - unused db $72, $2E, $72, $2E ; 49 db $61, $61, $14, $14 ; 4A -db $75, $0E, $2E, $2E ; 4B +db $21, $D1, $33, $33 ; 4B db $FF, $65, $FF, $77 ; 4C -db $10, $30, $01, $00 -db $72, $57, $FF, $FF ; 4E -db $FF, $70, $56, $FF +db $10, $30, $01, $00 ; 4D +db $22, $D9, $FF, $FF ; 4E +db $FF, $56, $CD, $FF ; 4F db $FF, $77, $FF, $75 ; 50 -db $14, $14, $44, $44 +db $14, $14, $44, $44 ; 51 db $77, $FF, $19, $08 ; 52 db $65, $75, $2E, $2E ; 53 db $50, $50, $40, $00 ; 54 @@ -87,19 +87,19 @@ db $00, $00, $10, $00 ; 55 db $74, $74, $2D, $3D ; 56 db $2E, $70, $4A, $5B ; 57 db $00, $00, $11, $10 ; 58 - split -db $10, $00, $10, $00 +db $10, $00, $10, $00 ; 59 db $FF, $FF, $FF, $4F ; 5A - Helmasaur King db $FF, $77, $FF, $75 ; 5B db $71, $6A, $FF, $74 ; 5C db $2E, $67, $75, $FF ; 5D -db $FF, $68, $57, $4B ; 5E +db $FF, $F8, $DC, $26 ; 5E db $FF, $FF, $7B, $FF ; 5F db $FF, $39, $FF, $2A ; 60 db $47, $45, $16, $16 ; 61 db $06, $14, $12, $00 ; 62 db $65, $FF, $75, $FF ; 63 -db $FF, $FF, $57, $71 ; 64 -db $FF, $FF, $71, $69 ; 65 +db $FF, $FF, $D9, $F1 ; 64 +db $FF, $FF, $F1, $69 ; 65 db $00, $30, $10, $00 ; 66 db $00, $10, $00, $01 ; 67 db $00, $10, $01, $00 ; 68 @@ -114,36 +114,36 @@ db $7A, $FF, $FF, $FF ; 70 db $65, $FF, $2D, $70 ; 71 db $44, $44, $04, $14 ; 72 - slight cheating I guess... db $74, $74, $2E, $4B ; 73 -db $00, $00, $05, $05 +db $00, $00, $05, $05 ; 74 db $74, $74, $4A, $75 ; 75 db $2D, $7C, $2E, $57 ; 76 -db $30, $00, $60, $60 +db $30, $00, $60, $60 ; 77 db $FF, $FF, $FF, $FF ; 78 - unused db $FF, $FF, $FF, $FF ; 79 - unused db $FF, $FF, $FF, $FF ; 7A - unused db $1E, $71, $4F, $4D ; 7B -db $77, $74, $77, $77 +db $77, $74, $77, $77 ; 7C db $2E, $70, $52, $51 ; 7D - warp tiles -db $FF, $77, $53, $2D ; 7E -db $77, $FF, $55, $FF +db $FF, $77, $DC, $BA ; 7E +db $A2, $FF, $CE, $FF ; 7F db $67, $70, $FF, $FF ; 80 -db $10, $01, $00, $01 +db $10, $01, $00, $01 ; 81 db $5D, $14, $01, $00 ; 82 db $74, $75, $2D, $2E ; 83 -db $04, $05, $14, $14 +db $04, $05, $14, $14 ; 84 db $4B, $72, $2E, $72 ; 85 db $FF, $FF, $FF, $FF ; 86 - unused -db $67, $2E, $54, $74 +db $67, $2E, $54, $74 ; 87 db $FF, $FF, $FF, $FF ; 88 - unused -db $70, $70, $FF, $FF +db $70, $70, $FF, $FF ; 89 db $FF, $FF, $FF, $FF ; 8A - unused -db $2D, $71, $2D, $70 +db $2D, $71, $2D, $70 ; 8B db $7E, $7F, $7D, $78 ; 8C db $71, $2D, $70, $2D ; 8D -db $FF, $4E, $FF, $FF +db $FF, $4E, $FF, $FF ; 8E db $FF, $FF, $FF, $FF ; 8F - unused db $FF, $FF, $4F, $FF ; 90 -db $FF, $65, $FF, $77 +db $FF, $65, $FF, $77 ; 91 db $00, $00, $01, $01 ; 92 - should it be split? idk db $2C, $2C, $77, $74 ; 93 db $FF, $FF, $FF, $FF ; 94 - unused @@ -156,44 +156,44 @@ db $FF, $FF, $FF, $FF ; 9A - unused db $72, $1E, $1E, $38 ; 9B db $10, $10, $01, $01 ; 9C db $1E, $72, $71, $1E ; 9D -db $FF, $65, $70, $79 ; 9E +db $FF, $DA, $CD, $79 ; 9E db $FF, $FF, $5B, $FF ; 9F -db $72, $57, $FF, $FF ; A0 +db $A2, $DC, $FF, $FF ; A0 db $70, $1D, $FF, $2A ; A1 -db $45, $45, $16, $06 ; A2 +db $45, $45, $16, $06 ; A2 - show paths somehow db $1A, $FF, $2A, $FF ; A3 db $FF, $FF, $4E, $FF ; A4 db $65, $75, $2E, $2E ; A5 db $00, $30, $00, $00 ; A6 db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room -db $00, $03, $00, $12 ; A8 +db $DB, $76, $DB, $63 ; A8 db $17, $17, $16, $16 ; A9 -db $03, $00, $12, $00 ; AA +db $0B, $DB, $1B, $DB ; AA db $FF, $FF, $5A, $FF ; AB db $FF, $FF, $FF, $4F ; AC - Blind db $FF, $FF, $FF, $FF ; AD - unused db $FF, $59, $FF, $FF ; AE db $5B, $FF, $FF, $FF ; AF -db $2E, $67, $2E, $57 ; B0 +db $DB, $DC, $DB, $D9 ; B0 db $0E, $75, $0C, $2D ; B1 -db $1C, $62, $72, $4B ; B2 - split this monster somehow? -db $4A, $FF, $4A, $FF ; B3 +db $1C, $62, $22, $26 ; B2 +db $2D, $FF, $2D, $FF ; B3 db $10, $00, $44, $44 ; B4 db $30, $00, $10, $00 ; B5 db $65, $74, $75, $75 ; B6 db $74, $FF, $75, $FF ; B7 db $FF, $4A, $FF, $74 ; B8 -db $15, $15, $14, $14 ; B9 +db $2B, $2B, $14, $14 ; B9 db $73, $70, $FF, $FF ; BA -db $2D, $3D, $2E, $3D ; BB -db $7F, $2D, $73, $2D ; BC - block off entrances? +db $BA, $24, $32, $24 ; BB +db $7F, $BA, $A4, $BA ; BC - block off entrances? db $FF, $FF, $FF, $FF ; BD - unused -db $FF, $65, $FF, $4A ; BE -db $FF, $FF, $4D, $FF ; BF -db $2E, $67, $2E, $57 ; C0 -db $2E, $73, $2D, $73 ; C1 +db $FF, $DA, $FF, $A5 ; BE +db $FF, $56, $4D, $FF ; BF +db $32, $DC, $32, $D9 ; C0 +db $DB, $24, $25, $24 ; C1 db $11, $13, $01, $13 ; C2 -db $13, $00, $03, $00 ; C3 +db $13, $00, $03, $00 ; C3 - show layers db $44, $44, $00, $01 ; C4 db $75, $FF, $4A, $FF ; C5 db $10, $11, $10, $11 ; C6 @@ -204,18 +204,18 @@ db $FF, $FF, $FF, $FF ; CA - unused db $00, $03, $14, $07 ; CB db $13, $10, $07, $14 ; CC db $FF, $FF, $FF, $FF ; CD - unused -db $FF, $78, $FF, $FF +db $FF, $78, $FF, $FF ; CE - Kholdstare drop db $FF, $FF, $FF, $FF ; CF - unused -db $2E, $67, $2E, $57 ; D0 -db $4E, $4F, $1E, $70 ; D1 -db $FF, $75, $FF, $55 +db $32, $DC, $32, $D9 ; D0 +db $4E, $4F, $41, $CD ; D1 +db $FF, $75, $FF, $55 ; D2 db $FF, $FF, $FF, $FF ; D3 - unused db $FF, $FF, $FF, $FF ; D4 - unused db $75, $FF, $75, $FF ; D5 db $75, $75, $74, $75 ; D6 db $FF, $FF, $FF, $FF ; D7 - unused -db $FF, $75, $FF, $77 ; D8 -db $FF, $FF, $71, $71 ; D9 +db $FF, $21, $FF, $A2 ; D8 +db $FF, $FF, $20, $20 ; D9 db $FF, $FF, $5C, $FF ; DA db $14, $06, $14, $3F ; DB db $06, $14, $03, $00 ; DC diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index 0be9c57..e1eac54 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -60,6 +60,11 @@ DrawDungeonMapRoom: LDA.w SupertileRoomShapes+, Y AND.w #$00FF CMP.w #$00FF : BEQ ?.empty + BIT.w #$0080 + BEQ ?+ + AND.w #$007F + ORA.w #$C000 + ?+ CLC : ADC.w #$0340 PHA LDA.b $0E @@ -97,7 +102,7 @@ DrawDungeonMapRoom: LDA.w #$174F ?.write - ORA.w #(3-)<<14 + EOR.w #(3-)<<14 STA.l $7F0000+, X ?.done endmacro diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index ab68c7fe3cf6598c0323da043358374955b43ff0..3af636bf3bc2b109d68c1710ab5680fca950a0f4 100644 GIT binary patch delta 691 zcmY*Xu}T9$5S_bCPK_XlXvPyfkwrm4)Yc&30ul?c4MZ?lTsmz*OkIm9Hr0%+R%)ZM{$B>sZGZd28@syD6r@d1<+B*C(@h%{REN)rsKMuNRy+mEJc6Lm`g`PvUHJ-21Wn# zMI`P-$b9Ok9h4%=ZEz#}*9O;B)+$q^g-mlr>4 z%ZIrfwMk)ijS~zs5(u}BO2uL+4Cyl4#6jOO#6DlioI1YGVzlm|^iH+02|D%`~0b>K6zse9N@dNG3D#q=h~`s4$ENMRs%-Yk@qL_u+l?VVi3XtG&<9$0f}Q zXVXTSKt|dGy^hW1Q|?(=W-sn}Uvh8xTG03>cNlMsq2=+7xQ?wLBj)5cK;%6;89$%- KGZ{1fuEq~<%j5(A delta 525 zcmZXRF-yZh6vtogav^EKQfbYZL5g$`2T5lGih`ZQFHo?9IEk);P%=A6!(03W`T_g` zQg>(3Rk~UymvZsm-KC1=ad7=TpcVxHoas*$eO&pG70dw?HBL{8 znJiu;cD$rbcWo(|!R`~+x2JgIy)`SHydSm7aho0DvPf_k_;|+#*b-aV5$k_e4JZ5n zn?n2h<4tmL5K?J0$7V8}ert7n_1F3&xnLtRMnDUVdd}vb?re;XJEEr%61)~S`n;m$ zDg&AUW796CfsCnHy_7gyARY%j>QylLuinFb@a%CINxTdPtxxzeHHQqqYlLCry=z`S z3Is9))y L>WJ+qlpV!414OYL diff --git a/menu/map_icons.dat b/menu/map_icons.dat new file mode 100644 index 0000000000000000000000000000000000000000..be85915c716131319e2daa52cdf68d7ec0f52491 GIT binary patch literal 256 zcmWe&1Of&|Mt(L?Gk#%ZV*y4MW(Echb}m*m11>Rj2@s!?jf0)vK!AZC2ta&BHlTU~ L1_2PCVTc0&-wgvt literal 0 HcmV?d00001 diff --git a/menu/map_icons.pal b/menu/map_icons.pal new file mode 100644 index 0000000000000000000000000000000000000000..0becfb6c06288654d0fda8cd39c01c6af9573a82 GIT binary patch literal 768 zcmcJLF-YrB6o&uN(Qa;~ck7@`nVVYVB5Hk&OJ3gvRSR;w9?(Q382-EObf8w>`c(P%Q6 zOsCU0j^$-!9>ub-8Jf~OI&|nDRy020@m@8OMi6x-5i|DP4VWw z`VwA9$)F&Z&i)lKf#M*7jD|v(TG4v;x4uB>y9syZZkn-<=Gi37Q4B>&KOBw#D zh#YDag`K@$mC7Vk2s4CJY34B(j77ODvgQ_A^&CYdJ^0}Sm_*(~tBa&n6R;YH-QB>f zP}f1{3JqlNX6dHxEM1Rg=`8nQ*Ta(^t2Zr;;vw{+2pLI60(sspioqOJTVxL($of8a3vVQx|9RNyGR5Kzf|ssc(kNGNzs zDE8n+)qo;bgXr*8*+s_q{zlex?KCFy{z zeJViiv|mEpb?irR*!u$7Ivf7P$Il#I%J>9J*2wv3%92yC19 M1wonx9xRI5e{(>hW&i*H delta 426 zcmW;IK}%af5C`!8%x)!ksL+BeIao?I`RmuY&c~+@fDB?lV9woi?6X=VuZ&%Fr z1>2ko6$HPB4HZfcqKDo@5J6Jt)tiLXect{vhne5Z$)i7VZ@g{Fa1sPzo?!V7CW5Ks zod=B@Pzwru4=i!rq zGNULpesQ_X9&Ps)QbmZ5brc2$9Mh4exxp{L263+;veFTRgR QJwbMjpfbxyd*Ar=Jw+jYAOHXW diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index a20db9e57d8ea0d4bcff551c6421a06c84113c87..5c7be3fe719fe0ffc2ae09f1489268d5f7348e46 100644 GIT binary patch delta 567 zcmW+yJ!n%=7(L&;FKNK|7sXx@uxegK5Tc8S5G3TK)@BeC2d&r!f8vr=m&!}ZeSgVI zLt~tUg3c9j3J#JC4lYg##X(AW0lRc?kfgrn)$QF$40Rw9wHPAAqbddG6`-X zgb@f9!puT52kG=crr|T-qjMN!7A~V40u4V2BZB`(DY=`%C6psL5}X5E`Pk3ky+yZj zqHw@O9>tT{;S=v0a^-tMl*$LbwI3_$eZ*GI$xigfJNAs_bJAw zG;M0f+9dUa{ek#UWm-9Ss)N}mG~B}fZoA`KWt=$=S^ErgE?_OV3F{778)U^9EiO6-nFVxC z!wH$U$*DN7Q%c*p%Sf-O_=MNF>_g&3+;?Q=92LB2tD o)ixEO=D*UoY&2y1D^Od1&s$HKn~1d%uaYX;X4&l;l|zMakD| zm)A+RqHpB=pt=>`r1&TKpW$-^DMAGwFu2Z!zX36^$)8Qv=+a}HuHz5>%DYses-{(s zjjM>3!JWR@4^7oOgNPbnU6I}pvvMkqh4ZB*M9q10@SP3sBe;OJ19yi_H0JNHc$N9* zFiPRxCifY+B}Sc2RA(-Sn}SwW++P^I;Oair Date: Sat, 3 Jan 2026 17:12:39 -0600 Subject: [PATCH 11/73] Full words in supertile shapes file --- dungeon_map/data/analyze.rb | 39 ++ dungeon_map/data/supertile_shapes.asm | 512 +++++++++++++------------- dungeon_map/draw_rooms.asm | 16 +- dungeon_map/settings.asm | 26 +- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 716 -> 788 bytes menu/map_icons_2.3bppc | Bin 743 -> 779 bytes 7 files changed, 312 insertions(+), 281 deletions(-) create mode 100644 dungeon_map/data/analyze.rb diff --git a/dungeon_map/data/analyze.rb b/dungeon_map/data/analyze.rb new file mode 100644 index 0000000..8963343 --- /dev/null +++ b/dungeon_map/data/analyze.rb @@ -0,0 +1,39 @@ +File.open("supertile_shapes.asm", "r") do |file| + bytes = [] + while line = file.gets + m = line.match(/dw \$(\h+), \$(\h+), \$(\h+), \$(\h+)/) + bytes += m.captures if m + break if bytes.length >= 4 * 0xE0 + end + + counts = [] + for byte in bytes do + value = byte.to_i(16) + next if value == 0xFFFF + value = (value & 0x03FF) - 0x340 + if not counts[value] + counts[value] = 0 + end + counts[value] += 1 + end + + print(" ") + for col in 0...16 + printf(" x%X", col) + end + puts + + for row in 0...8 + printf("%Xx", row) + for col in 0...16 + printf("%4d", counts[row * 16 + col] || 0) + end + puts + end + + printf("Unused:") + for i in 0...0x80 + printf(" %2X", i) unless counts[i] + end + puts +end diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 316f819..69c0d2f 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -1,258 +1,258 @@ -db $FF, $65, $FF, $FF ; 00 -db $48, $48, $FF, $FF ; 01 -db $00, $30, $14, $14 ; 02 -db $FF, $FF, $4F, $FF ; 03 - Houlihan -db $65, $74, $2D, $2E ; 04 -db $FF, $FF, $FF, $FF ; 05 - unused -db $FF, $FF, $4F, $FF ; 06 - Arrghus -db $00, $30, $00, $00 ; 07 - Moldorm -db $FF, $FF, $72, $72 ; 08 - useless fairy entrance -db $66, $3B, $FF, $FF ; 09 -db $58, $1F, $FF, $FF ; 0A -db $2E, $67, $2E, $1E ; 0B -db $31, $31, $14, $14 ; 0C -db $FF, $FF, $4F, $FF ; 0D - Aga 2 -db $FF, $FF, $D9, $22 ; 0E -db $FF, $FF, $FF, $FF ; 0F - unused and should never be used, treated as non-id -db $00, $00, $10, $00 ; 10 -db $00, $30, $00, $10 ; 11 -db $14, $14, $14, $14 ; 12 -db $FF, $77, $FF, $77 ; 13 -db $11, $01, $11, $11 ; 14 -db $34, $00, $01, $00 ; 15 -db $75, $65, $2E, $2E ; 16 -db $30, $30, $00, $00 ; 17 -db $75, $FF, $74, $FF ; 18 - useless fairy drop -db $FF, $29, $FF, $1B ; 19 -db $6E, $6F, $6D, $75 ; 1A -db $33, $D9, $21, $FF ; 1B -db $74, $74, $3E, $2E ; 1C -db $72, $67, $FF, $FF ; 1D -db $FF, $F8, $D9, $26 ; 1E -db $FF, $FF, $20, $D9 ; 1F -db $FF, $FF, $4F, $FF ; 20 -db $00, $10, $00, $01 ; 21 -db $FF, $FF, $28, $08 ; 22 -db $FF, $FF, $FF, $5B ; 23 -db $10, $10, $01, $10 ; 24 -db $FF, $FF, $FF, $FF ; 25 - unused -db $00, $3C, $14, $42 ; 26 -db $30, $30, $00, $00 ; 27 -db $65, $FF, $18, $08 ; 28 -db $FF, $FF, $FF, $56 ; 29 - Mothula -db $10, $12, $10, $5E ; 2A -db $2A, $FF, $0D, $CD ; 2B -db $00, $00, $10, $10 ; 2C - hookshot cave back -db $FF, $FF, $FF, $FF ; 2D - unused -db $FF, $4F, $FF, $FF ; 2E -db $74, $FF, $2E, $72 ; 2F - Kakariko well -db $21, $FF, $DA, $FF ; 30 - inset stairs if possible -db $2E, $57, $2E, $57 ; 31 -db $14, $14, $44, $44 ; 32 -db $FF, $FF, $4F, $FF ; 33 -db $00, $01, $40, $01 ; 34 -db $4D, $77, $71, $3D ; 35 -db $15, $15, $15, $15 ; 36 -db $77, $4D, $3D, $71 ; 37 -db $6C, $FF, $77, $FF ; 38 -db $FF, $FF, $72, $69 ; 39 -db $64, $64, $14, $14 ; 3A - make bespoke if feasible -db $65, $FF, $75, $FF ; 3B - inset stairs if feasible -db $00, $10, $00, $10 ; 3C - hookshot cave front -db $2E, $2E, $75, $65 ; 3D -db $FF, $CF, $72, $33 ; 3E -db $FF, $FF, $D9, $D9 ; 3F -db $65, $FF, $32, $D9 ; 40 - inset stairs if feasible -db $00, $30, $14, $14 ; 41 -db $58, $49, $FF, $FF ; 42 -db $72, $2E, $FF, $75 ; 43 -db $CD, $5F, $CD, $5F ; 44 -db $6B, $CF, $24, $DB ; 45 -db $35, $35, $33, $33 ; 46 -db $FF, $FF, $FF, $FF ; 47 - unused -db $FF, $FF, $FF, $FF ; 48 - unused -db $72, $2E, $72, $2E ; 49 -db $61, $61, $14, $14 ; 4A -db $21, $D1, $33, $33 ; 4B -db $FF, $65, $FF, $77 ; 4C -db $10, $30, $01, $00 ; 4D -db $22, $D9, $FF, $FF ; 4E -db $FF, $56, $CD, $FF ; 4F -db $FF, $77, $FF, $75 ; 50 -db $14, $14, $44, $44 ; 51 -db $77, $FF, $19, $08 ; 52 -db $65, $75, $2E, $2E ; 53 -db $50, $50, $40, $00 ; 54 -db $00, $00, $10, $00 ; 55 -db $74, $74, $2D, $3D ; 56 -db $2E, $70, $4A, $5B ; 57 -db $00, $00, $11, $10 ; 58 - split -db $10, $00, $10, $00 ; 59 -db $FF, $FF, $FF, $4F ; 5A - Helmasaur King -db $FF, $77, $FF, $75 ; 5B -db $71, $6A, $FF, $74 ; 5C -db $2E, $67, $75, $FF ; 5D -db $FF, $F8, $DC, $26 ; 5E -db $FF, $FF, $7B, $FF ; 5F -db $FF, $39, $FF, $2A ; 60 -db $47, $45, $16, $16 ; 61 -db $06, $14, $12, $00 ; 62 -db $65, $FF, $75, $FF ; 63 -db $FF, $FF, $D9, $F1 ; 64 -db $FF, $FF, $F1, $69 ; 65 -db $00, $30, $10, $00 ; 66 -db $00, $10, $00, $01 ; 67 -db $00, $10, $01, $00 ; 68 -db $FF, $FF, $FF, $FF ; 69 - unused -db $FF, $4C, $FF, $0E ; 6A -db $65, $75, $2E, $2E ; 6B -db $65, $FF, $2E, $71 ; 6C - Lanmolas 2 -db $75, $FF, $77, $FF ; 6D -db $FF, $4E, $FF, $FF ; 6E -db $FF, $FF, $FF, $FF ; 6F - unused -db $7A, $FF, $FF, $FF ; 70 -db $65, $FF, $2D, $70 ; 71 -db $44, $44, $04, $14 ; 72 - slight cheating I guess... -db $74, $74, $2E, $4B ; 73 -db $00, $00, $05, $05 ; 74 -db $74, $74, $4A, $75 ; 75 -db $2D, $7C, $2E, $57 ; 76 -db $30, $00, $60, $60 ; 77 -db $FF, $FF, $FF, $FF ; 78 - unused -db $FF, $FF, $FF, $FF ; 79 - unused -db $FF, $FF, $FF, $FF ; 7A - unused -db $1E, $71, $4F, $4D ; 7B -db $77, $74, $77, $77 ; 7C -db $2E, $70, $52, $51 ; 7D - warp tiles -db $FF, $77, $DC, $BA ; 7E -db $A2, $FF, $CE, $FF ; 7F -db $67, $70, $FF, $FF ; 80 -db $10, $01, $00, $01 ; 81 -db $5D, $14, $01, $00 ; 82 -db $74, $75, $2D, $2E ; 83 -db $04, $05, $14, $14 ; 84 -db $4B, $72, $2E, $72 ; 85 -db $FF, $FF, $FF, $FF ; 86 - unused -db $67, $2E, $54, $74 ; 87 -db $FF, $FF, $FF, $FF ; 88 - unused -db $70, $70, $FF, $FF ; 89 -db $FF, $FF, $FF, $FF ; 8A - unused -db $2D, $71, $2D, $70 ; 8B -db $7E, $7F, $7D, $78 ; 8C -db $71, $2D, $70, $2D ; 8D -db $FF, $4E, $FF, $FF ; 8E -db $FF, $FF, $FF, $FF ; 8F - unused -db $FF, $FF, $4F, $FF ; 90 -db $FF, $65, $FF, $77 ; 91 -db $00, $00, $01, $01 ; 92 - should it be split? idk -db $2C, $2C, $77, $74 ; 93 -db $FF, $FF, $FF, $FF ; 94 - unused -db $FF, $77, $FF, $75 ; 95 -db $77, $FF, $2E, $57 ; 96 -db $65, $74, $2E, $2F ; 97 -db $FF, $FF, $72, $57 ; 98 -db $FF, $74, $0A, $18 ; 99 -db $FF, $FF, $FF, $FF ; 9A - unused -db $72, $1E, $1E, $38 ; 9B -db $10, $10, $01, $01 ; 9C -db $1E, $72, $71, $1E ; 9D -db $FF, $DA, $CD, $79 ; 9E -db $FF, $FF, $5B, $FF ; 9F -db $A2, $DC, $FF, $FF ; A0 -db $70, $1D, $FF, $2A ; A1 -db $45, $45, $16, $06 ; A2 - show paths somehow -db $1A, $FF, $2A, $FF ; A3 -db $FF, $FF, $4E, $FF ; A4 -db $65, $75, $2E, $2E ; A5 -db $00, $30, $00, $00 ; A6 -db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room -db $DB, $76, $DB, $63 ; A8 -db $17, $17, $16, $16 ; A9 -db $0B, $DB, $1B, $DB ; AA -db $FF, $FF, $5A, $FF ; AB -db $FF, $FF, $FF, $4F ; AC - Blind -db $FF, $FF, $FF, $FF ; AD - unused -db $FF, $59, $FF, $FF ; AE -db $5B, $FF, $FF, $FF ; AF -db $DB, $DC, $DB, $D9 ; B0 -db $0E, $75, $0C, $2D ; B1 -db $1C, $62, $22, $26 ; B2 -db $2D, $FF, $2D, $FF ; B3 -db $10, $00, $44, $44 ; B4 -db $30, $00, $10, $00 ; B5 -db $65, $74, $75, $75 ; B6 -db $74, $FF, $75, $FF ; B7 -db $FF, $4A, $FF, $74 ; B8 -db $2B, $2B, $14, $14 ; B9 -db $73, $70, $FF, $FF ; BA -db $BA, $24, $32, $24 ; BB -db $7F, $BA, $A4, $BA ; BC - block off entrances? -db $FF, $FF, $FF, $FF ; BD - unused -db $FF, $DA, $FF, $A5 ; BE -db $FF, $56, $4D, $FF ; BF -db $32, $DC, $32, $D9 ; C0 -db $DB, $24, $25, $24 ; C1 -db $11, $13, $01, $13 ; C2 -db $13, $00, $03, $00 ; C3 - show layers -db $44, $44, $00, $01 ; C4 -db $75, $FF, $4A, $FF ; C5 -db $10, $11, $10, $11 ; C6 -db $11, $00, $01, $00 ; C7 -db $FF, $FF, $FF, $4F ; C8 - Armos Knights -db $14, $14, $14, $14 ; C9 -db $FF, $FF, $FF, $FF ; CA - unused -db $00, $03, $14, $07 ; CB -db $13, $10, $07, $14 ; CC -db $FF, $FF, $FF, $FF ; CD - unused -db $FF, $78, $FF, $FF ; CE - Kholdstare drop -db $FF, $FF, $FF, $FF ; CF - unused -db $32, $DC, $32, $D9 ; D0 -db $4E, $4F, $41, $CD ; D1 -db $FF, $75, $FF, $55 ; D2 -db $FF, $FF, $FF, $FF ; D3 - unused -db $FF, $FF, $FF, $FF ; D4 - unused -db $75, $FF, $75, $FF ; D5 -db $75, $75, $74, $75 ; D6 -db $FF, $FF, $FF, $FF ; D7 - unused -db $FF, $21, $FF, $A2 ; D8 -db $FF, $FF, $20, $20 ; D9 -db $FF, $FF, $5C, $FF ; DA -db $14, $06, $14, $3F ; DB -db $06, $14, $03, $00 ; DC -db $FF, $FF, $FF, $FF ; DD - unused -db $FF, $56, $FF, $FF ; DE - Kholdstare -db $FF, $FF, $60, $14 ; DF - paradox top -db $2E, $67, $75, $FF ; E0 +dw $FFFF, $83A5, $FFFF, $FFFF ; 00 +dw $C388, $8388, $FFFF, $FFFF ; 01 +dw $4348, $034A, $4342, $0342 ; 02 +dw $FFFF, $FFFF, $438F, $FFFF ; 03 - Houlihan +dw $C3A5, $83B4, $436D, $036E ; 04 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 05 - unused +dw $FFFF, $FFFF, $438F, $FFFF ; 06 - Arrghus +dw $C340, $8370, $4340, $0340 ; 07 - Moldorm +dw $FFFF, $FFFF, $43B2, $03B2 ; 08 - useless fairy entrance +dw $C3A6, $837B, $FFFF, $FFFF ; 09 +dw $C398, $835F, $FFFF, $FFFF ; 0A +dw $039B, $439C, $839B, $0381 ; 0B +dw $C371, $8371, $4354, $0354 ; 0C +dw $FFFF, $FFFF, $438F, $FFFF ; 0D - Aga 2 +dw $FFFF, $FFFF, $8399, $439B ; 0E +dw $FFFF, $FFFF, $FFFF, $FFFF ; 0F - unused and should never be used, treated as non-id +dw $C340, $8340, $4350, $0340 ; 10 +dw $C340, $8370, $4340, $0350 ; 11 +dw $C354, $8354, $4354, $0354 ; 12 +dw $FFFF, $83B7, $FFFF, $03B7 ; 13 +dw $C351, $8341, $4351, $0351 ; 14 +dw $C374, $8340, $4341, $0340 ; 15 +dw $C3B5, $83A5, $436E, $036E ; 16 +dw $C370, $8370, $4340, $0340 ; 17 +dw $C3B5, $FFFF, $43B4, $FFFF ; 18 - useless fairy drop +dw $FFFF, $8369, $FFFF, $035A ; 19 +dw $C3AE, $83AF, $43AD, $0361 ; 1A +dw $039B, $439C, $4361, $FFFF ; 1B +dw $C3B4, $83B4, $437E, $036E ; 1C +dw $C3B2, $83A7, $FFFF, $FFFF ; 1D +dw $FFFF, $43B8, $8399, $0366 ; 1E +dw $FFFF, $FFFF, $4360, $C399 ; 1F +dw $FFFF, $FFFF, $438F, $FFFF ; 20 +dw $C340, $8350, $4340, $0341 ; 21 +dw $FFFF, $FFFF, $4368, $0348 ; 22 +dw $FFFF, $FFFF, $FFFF, $039B ; 23 +dw $C350, $8350, $4341, $0350 ; 24 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 25 - unused +dw $C340, $837C, $4354, $0382 ; 26 +dw $C370, $8370, $4340, $0340 ; 27 +dw $C3A5, $FFFF, $4358, $0348 ; 28 +dw $FFFF, $FFFF, $FFFF, $0396 ; 29 - Mothula +dw $C350, $8352, $4350, $039E ; 2A +dw $C36A, $FFFF, $434D, $C38D ; 2B +dw $C340, $8340, $4350, $0350 ; 2C - hookshot cave back +dw $FFFF, $FFFF, $FFFF, $FFFF ; 2D - unused +dw $FFFF, $838F, $FFFF, $FFFF ; 2E +dw $C3B4, $FFFF, $436E, $03B2 ; 2F - Kakariko well +dw $C361, $FFFF, $839A, $FFFF ; 30 - inset stairs if possible +dw $43B2, $0397, $839B, $C399 ; 31 +dw $C354, $8354, $4384, $0384 ; 32 +dw $FFFF, $FFFF, $438F, $FFFF ; 33 +dw $4348, $0368, $4349, $8368 ; 34 +dw $C38D, $83B7, $43B1, $037D ; 35 +dw $C355, $8355, $4355, $0355 ; 36 +dw $C3B7, $838D, $437D, $03B1 ; 37 +dw $C3AC, $FFFF, $43B7, $FFFF ; 38 +dw $FFFF, $FFFF, $039B, $03A9 ; 39 +dw $C3A4, $83A4, $4354, $0354 ; 3A - make bespoke if feasible +dw $C3A5, $FFFF, $43B5, $FFFF ; 3B - inset stairs if feasible +dw $C340, $8350, $4340, $0350 ; 3C - hookshot cave front +dw $C36E, $836E, $43B5, $03A5 ; 3D +dw $FFFF, $438F, $43B2, $0373 ; 3E +dw $FFFF, $FFFF, $8399, $C399 ; 3F +dw $C3A5, $FFFF, $4372, $C399 ; 40 - inset stairs if feasible +dw $C340, $8370, $4354, $0354 ; 41 +dw $C398, $8389, $FFFF, $FFFF ; 42 +dw $C3B2, $836E, $FFFF, $03B5 ; 43 +dw $038D, $839F, $838D, $039F ; 44 +dw $C3AB, $438F, $4364, $C39B ; 45 +dw $C375, $8375, $4373, $0373 ; 46 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 47 - unused +dw $FFFF, $FFFF, $FFFF, $FFFF ; 48 - unused +dw $839B, $8372, $039B, $0372 ; 49 +dw $0376, $0377, $0386, $4386 ; 4A +dw $C361, $4391, $4373, $0373 ; 4B +dw $FFFF, $83A5, $FFFF, $03B7 ; 4C +dw $C350, $8370, $4341, $0340 ; 4D +dw $839B, $4399, $FFFF, $FFFF ; 4E +dw $FFFF, $8396, $838D, $FFFF ; 4F +dw $FFFF, $83B7, $FFFF, $03B5 ; 50 +dw $C354, $8354, $4384, $0384 ; 51 +dw $C3B7, $FFFF, $4359, $0348 ; 52 +dw $C3A5, $83B5, $436E, $036E ; 53 +dw $C390, $8390, $4380, $0340 ; 54 +dw $C340, $8340, $4350, $0340 ; 55 +dw $038F, $83B4, $4365, $039F ; 56 +dw $039B, $438D, $0365, $039B ; 57 +dw $C372, $439B, $0383, $0365 ; 58 - split +dw $838A, $8372, $038A, $0372 ; 59 +dw $FFFF, $FFFF, $FFFF, $038F ; 5A - Helmasaur King +dw $FFFF, $83B7, $FFFF, $03B5 ; 5B +dw $C3B1, $83AA, $FFFF, $03B4 ; 5C +dw $C36E, $83A7, $43B5, $FFFF ; 5D +dw $FFFF, $43B8, $839C, $0366 ; 5E +dw $FFFF, $FFFF, $43BB, $FFFF ; 5F +dw $FFFF, $8379, $FFFF, $036A ; 60 +dw $C387, $8385, $4356, $0356 ; 61 +dw $C346, $8354, $4352, $0340 ; 62 +dw $C3A5, $FFFF, $43B5, $FFFF ; 63 +dw $FFFF, $FFFF, $8399, $C3B1 ; 64 +dw $FFFF, $FFFF, $83B1, $03A9 ; 65 +dw $038F, $039A, $0362, $83B2 ; 66 +dw $83B4, $83B5, $03B7, $039F ; 67 +dw $C340, $8350, $4341, $0340 ; 68 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 69 - unused +dw $FFFF, $838C, $FFFF, $034E ; 6A +dw $C3A5, $83B5, $436E, $036E ; 6B +dw $C3A5, $FFFF, $436E, $03B1 ; 6C - Lanmolas 2 +dw $C3B5, $FFFF, $43B7, $FFFF ; 6D +dw $FFFF, $838E, $FFFF, $FFFF ; 6E +dw $FFFF, $FFFF, $FFFF, $FFFF ; 6F - unused +dw $43BA, $FFFF, $FFFF, $FFFF ; 70 +dw $C3A5, $FFFF, $436D, $03B0 ; 71 +dw $C384, $8384, $4344, $0354 ; 72 - slight cheating I guess... +dw $C3B4, $83B4, $436E, $038B ; 73 +dw $C340, $8340, $4345, $0345 ; 74 +dw $C3B4, $83B4, $438A, $03B5 ; 75 +dw $C36D, $83BC, $436E, $0397 ; 76 +dw $C370, $8340, $43A0, $03A0 ; 77 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 78 - unused +dw $FFFF, $FFFF, $FFFF, $FFFF ; 79 - unused +dw $FFFF, $FFFF, $FFFF, $FFFF ; 7A - unused +dw $C35E, $83B1, $438F, $038D ; 7B +dw $C3B7, $83B4, $43B7, $03B7 ; 7C +dw $C36E, $83B0, $4392, $0391 ; 7D - warp tiles +dw $FFFF, $83B7, $839C, $C37A ; 7E +dw $439B, $FFFF, $838E, $FFFF ; 7F +dw $C3A7, $83B0, $FFFF, $FFFF ; 80 +dw $C350, $8341, $4340, $0341 ; 81 +dw $C39D, $8354, $4341, $0340 ; 82 +dw $C3B4, $83B5, $436D, $036E ; 83 +dw $C344, $8345, $4354, $0354 ; 84 +dw $C38B, $83B2, $436E, $03B2 ; 85 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 86 - unused +dw $C3A7, $836E, $4394, $03B4 ; 87 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 88 - unused +dw $C3B0, $83B0, $FFFF, $FFFF ; 89 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 8A - unused +dw $C36D, $83B1, $436D, $03B0 ; 8B +dw $83BE, $83BF, $03BD, $03B8 ; 8C +dw $C3B1, $836D, $43B0, $036D ; 8D +dw $FFFF, $838E, $FFFF, $FFFF ; 8E +dw $FFFF, $FFFF, $FFFF, $FFFF ; 8F - unused +dw $FFFF, $FFFF, $438F, $FFFF ; 90 +dw $FFFF, $83A5, $FFFF, $03B7 ; 91 +dw $C340, $8340, $4341, $0341 ; 92 - should it be split? idk +dw $C36C, $836C, $43B7, $03B4 ; 93 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 94 - unused +dw $FFFF, $83B7, $FFFF, $03B5 ; 95 +dw $C3B7, $FFFF, $436E, $0397 ; 96 +dw $C3A5, $83B4, $436E, $036F ; 97 +dw $FFFF, $FFFF, $43B2, $0397 ; 98 +dw $FFFF, $038F, $434A, $0363 ; 99 +dw $FFFF, $FFFF, $FFFF, $FFFF ; 9A - unused +dw $C3B2, $835E, $435E, $0378 ; 9B +dw $C350, $8350, $4341, $0341 ; 9C +dw $C35E, $83B2, $43B1, $035E ; 9D +dw $FFFF, $439A, $838D, $03B9 ; 9E +dw $FFFF, $FFFF, $439B, $FFFF ; 9F +dw $839B, $439C, $FFFF, $FFFF ; A0 +dw $C3B0, $835D, $FFFF, $036A ; A1 +dw $C385, $8385, $4356, $0346 ; A2 - show paths somehow +dw $C35A, $FFFF, $436A, $FFFF ; A3 +dw $FFFF, $FFFF, $438E, $FFFF ; A4 +dw $C3A5, $83B5, $436E, $036E ; A5 +dw $C340, $8370, $4340, $0340 ; A6 +dw $C396, $FFFF, $FFFF, $FFFF ; A7 - ToH fairy basement room +dw $039B, $83B6, $839B, $03A3 ; A8 +dw $C357, $8357, $4356, $0356 ; A9 +dw $C34B, $439B, $435B, $C39B ; AA +dw $FFFF, $FFFF, $439A, $FFFF ; AB +dw $FFFF, $FFFF, $FFFF, $038F ; AC - Blind +dw $FFFF, $FFFF, $FFFF, $FFFF ; AD - unused +dw $FFFF, $8399, $FFFF, $FFFF ; AE +dw $C39B, $FFFF, $FFFF, $FFFF ; AF +dw $039B, $439C, $839B, $C399 ; B0 +dw $C34E, $83B5, $434C, $036D ; B1 +dw $C35C, $83A2, $039B, $0366 ; B2 +dw $0365, $FFFF, $0365, $FFFF ; B3 +dw $C350, $8340, $4384, $0384 ; B4 +dw $C370, $8340, $4350, $0340 ; B5 +dw $C3A5, $83B4, $43B5, $03B5 ; B6 +dw $C3B4, $FFFF, $43B5, $FFFF ; B7 +dw $FFFF, $838A, $FFFF, $03B4 ; B8 +dw $C36B, $836B, $4354, $0354 ; B9 +dw $0364, $438D, $FFFF, $FFFF ; BA +dw $037A, $8364, $4372, $0364 ; BB +dw $C3BF, $437A, $8364, $C37A ; BC - block off entrances? +dw $FFFF, $FFFF, $FFFF, $FFFF ; BD - unused +dw $FFFF, $439A, $FFFF, $C365 ; BE +dw $FFFF, $8396, $438D, $FFFF ; BF +dw $C372, $439C, $4372, $C399 ; C0 +dw $039B, $0364, $4365, $8364 ; C1 +dw $C351, $8353, $4341, $0353 ; C2 +dw $C353, $8340, $4343, $0340 ; C3 - show layers +dw $C384, $8384, $4340, $0341 ; C4 +dw $C3B5, $FFFF, $438A, $FFFF ; C5 +dw $C350, $8351, $4350, $0351 ; C6 +dw $C351, $8340, $4341, $0340 ; C7 +dw $FFFF, $FFFF, $FFFF, $038F ; C8 - Armos Knights +dw $0367, $4367, $0386, $4386 ; C9 +dw $FFFF, $FFFF, $FFFF, $FFFF ; CA - unused +dw $C340, $8343, $4354, $0347 ; CB +dw $C353, $8350, $4347, $0354 ; CC +dw $FFFF, $FFFF, $FFFF, $FFFF ; CD - unused +dw $FFFF, $83B8, $FFFF, $FFFF ; CE - Kholdstare drop +dw $FFFF, $FFFF, $FFFF, $FFFF ; CF - unused +dw $C372, $439C, $4372, $C399 ; D0 +dw $C38E, $838F, $4381, $C38D ; D1 +dw $FFFF, $83B5, $FFFF, $0395 ; D2 +dw $FFFF, $FFFF, $FFFF, $FFFF ; D3 - unused +dw $FFFF, $FFFF, $FFFF, $FFFF ; D4 - unused +dw $C3B5, $FFFF, $43B5, $FFFF ; D5 +dw $C3B5, $83B5, $43B4, $03B5 ; D6 +dw $FFFF, $FFFF, $FFFF, $FFFF ; D7 - unused +dw $FFFF, $8361, $FFFF, $839B ; D8 +dw $FFFF, $FFFF, $4360, $0360 ; D9 +dw $FFFF, $FFFF, $439C, $FFFF ; DA +dw $C354, $8346, $4354, $037F ; DB +dw $C346, $8354, $4343, $0340 ; DC +dw $FFFF, $FFFF, $FFFF, $FFFF ; DD - unused +dw $FFFF, $8396, $FFFF, $FFFF ; DE - Kholdstare +dw $FFFF, $FFFF, $43A0, $0354 ; DF - paradox top +dw $C36E, $83A7, $43B5, $FFFF ; E0 ; no more dungeon -db $00, $00, $10, $00 ; E1 - lost woods thieves hideout -db $00, $00, $00, $10 ; E2 - lumberjack cave -db $FF, $74, $72, $2E ; E3 - magic bat -db $00, $02, $10, $02 ; E4 - old man's house front -db $02, $00, $16, $14 ; E5 - old man's house back -db $00, $01, $10, $00 ; E6 - death mountain descent left -db $01, $00, $00, $10 ; E7 - death mountain descent right -db $30, $30, $40, $10 ; E8 - superbunny top -db $FF, $FF, $FF, $FF ; E9 - unused -db $65, $FF, $75, $FF ; EA - spectacle top -db $FF, $66, $FF, $75 ; EB - bumper top -db $FF, $FF, $FF, $FF ; EC - unused -db $30, $30, $00, $10 ; ED - fairy ascension top -db $00, $50, $00, $10 ; EE - spiral top -db $FF, $00, $60, $14 ; EF - paradox top -db $00, $02, $10, $02 ; F0 - old man rescue left -db $02, $02, $00, $10 ; F1 - old man rescue right -db $FF, $FF, $FF, $72 ; F2 - Sahasrahla's Kakariko house left -db $FF, $FF, $72, $FF ; F3 - Sahasrahla's Kakariko house right -db $FF, $FF, $FF, $72 ; F4 - quarreling brothers left -db $FF, $FF, $72, $FF ; F5 - quarreling brothers right -db $FF, $FF, $FF, $FF ; F6 - unused -db $FF, $FF, $FF, $FF ; F7 - unused -db $30, $30, $60, $14 ; F8 - superbunny bottom -db $00, $01, $10, $00 ; F9 - spectacle left -db $34, $00, $10, $00 ; FA - spectacle bottom -db $FF, $65, $08, $18 ; FB - bumper bottom -db $FF, $FF, $FF, $FF ; FC - unused -db $30, $30, $14, $14 ; FD - fairy ascension bottom -db $FF, $FF, $74, $75 ; FE - spiral bottom -db $74, $74, $2E, $2D ; FF - paradox bottom +dw $C340, $8340, $4350, $0340 ; E1 - lost woods thieves hideout +dw $C340, $8340, $4340, $0350 ; E2 - lumberjack cave +dw $FFFF, $83B4, $43B2, $036E ; E3 - magic bat +dw $C340, $8342, $4350, $0342 ; E4 - old man's house front +dw $C342, $8340, $4356, $0354 ; E5 - old man's house back +dw $C340, $8341, $4350, $0340 ; E6 - death mountain descent left +dw $C341, $8340, $4340, $0350 ; E7 - death mountain descent right +dw $C370, $8370, $4380, $0350 ; E8 - superbunny top +dw $FFFF, $FFFF, $FFFF, $FFFF ; E9 - unused +dw $C3A5, $FFFF, $43B5, $FFFF ; EA - spectacle top +dw $FFFF, $83A6, $FFFF, $03B5 ; EB - bumper top +dw $FFFF, $FFFF, $FFFF, $FFFF ; EC - unused +dw $C370, $8370, $4340, $0350 ; ED - fairy ascension top +dw $C340, $8390, $4340, $0350 ; EE - spiral top +dw $FFFF, $8340, $43A0, $0354 ; EF - paradox top +dw $C340, $8342, $4350, $0342 ; F0 - old man rescue left +dw $C342, $8342, $4340, $0350 ; F1 - old man rescue right +dw $FFFF, $FFFF, $FFFF, $03B2 ; F2 - Sahasrahla's Kakariko house left +dw $FFFF, $FFFF, $43B2, $FFFF ; F3 - Sahasrahla's Kakariko house right +dw $FFFF, $FFFF, $FFFF, $03B2 ; F4 - quarreling brothers left +dw $FFFF, $FFFF, $43B2, $FFFF ; F5 - quarreling brothers right +dw $FFFF, $FFFF, $FFFF, $FFFF ; F6 - unused +dw $FFFF, $FFFF, $FFFF, $FFFF ; F7 - unused +dw $C370, $8370, $43A0, $0354 ; F8 - superbunny bottom +dw $C340, $8341, $4350, $0340 ; F9 - spectacle left +dw $C374, $8340, $4350, $0340 ; FA - spectacle bottom +dw $FFFF, $83A5, $4348, $0358 ; FB - bumper bottom +dw $FFFF, $FFFF, $FFFF, $FFFF ; FC - unused +dw $C370, $8370, $4354, $0354 ; FD - fairy ascension bottom +dw $FFFF, $FFFF, $43B4, $03B5 ; FE - spiral bottom +dw $C3B4, $83B4, $436E, $036D ; FF - paradox bottom diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index e1eac54..e64b0f2 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -52,24 +52,17 @@ DrawDungeonMapRoom: LDA.b $CA AND.w #$00FF - ASL A : ASL A + ASL A : ASL A : ASL A TAY macro DrawQuadrant(quadrant, writeOffset) ?DrawQuadrant: - LDA.w SupertileRoomShapes+, Y - AND.w #$00FF - CMP.w #$00FF : BEQ ?.empty - BIT.w #$0080 - BEQ ?+ - AND.w #$007F - ORA.w #$C000 - ?+ - CLC : ADC.w #$0340 + LDA.w SupertileRoomShapes+(2*), Y + CMP.w #$FFFF : BEQ ?.empty PHA LDA.b $0E AND.w #1<<(3-) - BNE ?.visited + BNE ?.visited ?.unvisited LDA.b $0A @@ -102,7 +95,6 @@ DrawDungeonMapRoom: LDA.w #$174F ?.write - EOR.w #(3-)<<14 STA.l $7F0000+, X ?.done endmacro diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 8bffdc5..5d5bf84 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -1,11 +1,11 @@ ; $B9F000 SupertileRoomShapes: incsrc data/supertile_shapes.asm -warnpc $B9F400 +warnpc $B9F800 padbyte $FF -pad $B9F400 +pad $B9F800 -org $B9F400 +org $B9F800 DungeonMapData: db $02, $04, $00, $00 ; Sewers db $1A, $00, $00, $00 ; Hyrule Castle @@ -31,7 +31,7 @@ struct DungeonMapData DungeonMapData .unused: skip 1 endstruct -; $B9F480 +; $B9F880 LootTypeIcons: dw $0B00, $0B00, $0B00, $0B00 ; 00 - nothing dw $2B0E, $6B0E, $2B3E, $6B3E ; 01 - unknown - basic chest @@ -50,11 +50,11 @@ dw $2B0B, $6B0B, $2B3B, $6B3B ; 0D - triforce piece dw $2B0C, $6B0C, $2B3C, $6B3C ; 0E - triforce dw $0B00, $0B00, $0B00, $0B00 ; 0F - empty (reserved) -; $B9F500 +; $B9F900 LootTypeMapping: incsrc data/item_mapping.asm -; $B9F600 +; $B9FA00 ; Room ID mappings to bit to check for presence and address of item drop MiscLocations: dw $00C8 : db $04 : dl HeartContainer_ArmosKnights @@ -82,11 +82,11 @@ dw $FFFF : db $FF : dl $FFFFFF ; Moldorm 2? ($004D) dw $FFFF : db $FF : dl $FFFFFF ; Aga 2? ($000D) dw $FFFF -; $B9F69A +; $B9FA9A MapHUDPalette: dw $0000, $3ED8, $2E54 -; $B9F6A0 +; $B9FAA0 PrizeLocations: dw $00C8 : db $02 ; ArmosKnights dw $0033 : db $03 ; Lanmolas @@ -100,14 +100,14 @@ dw $00AC : db $0B ; Blind dw $00A4 : db $0C ; Trinexx dw $FFFF -; $B9F6C0 +; $B9FAC0 SupertileEntrances: incsrc data/entrance_tiles.asm -warnpc $B9F700 +warnpc $B9FB00 padbyte $FF -pad $B9F700 +pad $B9FB00 -; $B9F700 +; $B9FB00 DungeonLabels: dw $2561, $256F ; Sewers dw $2564, $255F ; Hyrule Castle @@ -126,7 +126,7 @@ dw $2563, $2570 ; Ganon's Tower dw $25A4, $25A4 ; Reserved dw $25A4, $25A4 ; Reserved -; $B9F740 +; $B9FB40 warnpc $B9FF00 diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index 3af636bf3bc2b109d68c1710ab5680fca950a0f4..ef4b9d3a7e1e86b6be007e25062434f0a9f69cac 100644 GIT binary patch delta 382 zcmZ8cK}rKb5UiQOAbuco^f2sAn3EtZ$vOz`(I?~}lShQ~7(ugJ8vSKV+$KjKITV$3}^u^ZYgeaIsVBJvHg- dPSqlkmz_dBJLZmj_OFQ>Wm68rzd2}F@&m|vb(#PG delta 382 zcmZpWXpop-Ai;nGO!Sx_jzenWdq*Y%28KF@e^6M*U<2eHVq!X!rh-Ec!{h{J51f{5 zKENEn2sDy3u-So?gAu2hlM~o*`)>0JwpGl!zZw2R;Xk0wF2|V}7?}S7{RI>KZ}uN3 z?sS+D2>x%b=dxt9u08Je)%8)0rR|_pqauJkQYD_j9W-#3@<1$1>SxN zT>uT|sxvoh8IagIOa*Yed06j%i$2kPAD$gK3&@ni*Tw33X3fxn3;j#F47-E=3(P(A z4jO`PLX0#u6Fl$7DA~(wTm9NRqa1PeP;>U zl_)2q{O+VQ6Idnk%>1lZBx2DeF?&Qx8VH-4p_D?f3dr~4589xsxWMJsrRY=AJ<(G# zVAvDsPvJVs*)r~SML!62-0cpW5L@8Dlm#VS0gv2~UUbYk951NXxo$_G6!9q^Pk$j= S%5nDAE}qOA5Skx>m;M3mXJw=S delta 273 zcmWm6u}Z^G6o>Kuxu@-7>5w60RE(klt5^%hNvaa4y6PrQd5Y5IPx# diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index 5c7be3fe719fe0ffc2ae09f1489268d5f7348e46..42310ba8081ffeea393d6836a71a3f6b72606ff1 100644 GIT binary patch delta 265 zcmWlSy-LGS97liudvA(pCqJMF0ihv-E+SGF(b}lRid*Yc5JWD i-Zj@mwJKV#K)HRVxhKP4cVkrl)tms0B-QuW@K*oOU}L=i -- 2.43.0 From fd8852d866f8106ce73762fa1e4130029f9e7443 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 4 Jan 2026 09:03:23 -0600 Subject: [PATCH 12/73] Lots of bugs fixes and supertile updates --- dungeon_map/check_loot.asm | 41 +++-- dungeon_map/data/item_mapping.asm | 222 +++++++++++++------------- dungeon_map/data/supertile_shapes.asm | 86 +++++----- dungeon_map/draw_rooms.asm | 4 + dungeon_map/dungeon_switch.asm | 8 +- dungeon_map/main.asm | 3 + dungeon_map/settings.asm | 63 ++++---- menu/map_icons.3bpp | Bin 3072 -> 3072 bytes menu/map_icons_1.3bppc | Bin 788 -> 813 bytes menu/map_icons_2.3bppc | Bin 779 -> 781 bytes menu/map_sheet_d4.3bpp | Bin 1536 -> 1536 bytes menu/map_sheet_d4.3bppc | Bin 977 -> 976 bytes 12 files changed, 235 insertions(+), 192 deletions(-) diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index 799b2d4..bce7e00 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -16,6 +16,10 @@ CheckLoot: AND.w #$00FF STA.b $0E + LDA.b $00 + ASL A + TAX + LDA.l SaveDataWRAM, X AND.w #$000F BEQ + @@ -25,7 +29,7 @@ CheckLoot: BCC + STA.b $0E -+ LDA.b DungeonID ++ LDA.w DungeonID TAX LDA.l MapField @@ -233,8 +237,12 @@ CheckPots: BRA .next_pot .small_key + LDA.w #$8000 : STA.b $08 LDA.w #$0024 - BRA .continue + PHA + PHX + INY + BRA .mask_set .major_item LDA.b [$04], Y .continue @@ -242,13 +250,16 @@ CheckPots: PHX INY TXA : ASL A - EOR.w #$FFFF - CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want TAX LDA.l DungeonMask, X : STA.b $08 +.mask_set LDA.b $00 : ASL A : TAX +if !FEATURE_FIX_BASEROM + LDA.l SpriteDropData, X +else LDA.l RoomPotData, X +endif PLX AND.b $08 BEQ .not_obtained @@ -281,6 +292,8 @@ CheckEnemies: LDA.b [$04], Y AND.w #$00FF CMP.w #$00FF : BEQ .done + LDA.b [$04], Y + BIT.w #$8000 : BNE .overlord INY : INY LDA.b [$04], Y AND.w #$00FF @@ -288,24 +301,34 @@ CheckEnemies: CMP.w #$00F9 : BEQ .major ; major item in other world CMP.w #$00E4 : BEQ .vanilla_key INY + INX + BRA .next_enemy + +.overlord + INY : INY : INY BRA .next_enemy .vanilla_key DEY : DEY + LDA.w #$8000 : STA.b $08 LDA.b [$04], Y + INY #3 AND.w #$00FF CMP.w #$00FD ; big key BEQ .big_key CMP.w #$00FE ; small key BEQ .small_key - INY #3 ; false alarm -- probably hera basement key + ; false alarm -- probably hera basement key + INX ; since it's an actual sprite it advances the counter BRA .next_enemy .small_key LDA.w #$0024 - BRA .proceed + PHA : PHX + BRA .mask_set .big_key LDA.w #$0032 - BRA .proceed + PHA : PHX + BRA .mask_set .major DEY : DEY @@ -313,7 +336,6 @@ CheckEnemies: AND.w #$00FF .proceed - INX INY : INY : INY PHA @@ -322,6 +344,7 @@ CheckEnemies: TAX LDA.l DungeonMask, X : STA.b $08 +.mask_set LDA.b $00 : ASL A : TAX LDA.l SpriteDropData, X PLX @@ -334,7 +357,7 @@ CheckEnemies: PLA AND.w #$00FF JSR GetLootClass - BRA .next_enemy + JMP .next_enemy .done RTS diff --git a/dungeon_map/data/item_mapping.asm b/dungeon_map/data/item_mapping.asm index 1017def..15d228f 100644 --- a/dungeon_map/data/item_mapping.asm +++ b/dungeon_map/data/item_mapping.asm @@ -1,65 +1,65 @@ -db $0A ; 00 - Fighter Sword and Shield -db $0A ; 01 - Master Sword -db $0A ; 02 - Tempered Sword -db $0A ; 03 - Butter Sword +db $0B ; 00 - Fighter Sword and Shield +db $0B ; 01 - Master Sword +db $0B ; 02 - Tempered Sword +db $0B ; 03 - Butter Sword db $05 ; 04 - Fighter Shield db $05 ; 05 - Fire Shield db $05 ; 06 - Mirror Shield -db $0A ; 07 - Fire Rod -db $0A ; 08 - Ice Rod -db $0A ; 09 - Hammer -db $0A ; 0A - Hookshot -db $0A ; 0B - Bow -db $0A ; 0C - Boomerang -db $0A ; 0D - Powder +db $0B ; 07 - Fire Rod +db $0B ; 08 - Ice Rod +db $0B ; 09 - Hammer +db $0B ; 0A - Hookshot +db $0B ; 0B - Bow +db $06 ; 0C - Boomerang +db $0B ; 0D - Powder db $02 ; 0E - Bottle Refill (bee) -db $0A ; 0F - Bombos -db $0A ; 10 - Ether -db $0A ; 11 - Quake -db $0A ; 12 - Lamp -db $0A ; 13 - Shovel -db $0A ; 14 - Flute -db $0A ; 15 - Somaria -db $0A ; 16 - Bottle +db $0B ; 0F - Bombos +db $0B ; 10 - Ether +db $0B ; 11 - Quake +db $0B ; 12 - Lamp +db $06 ; 13 - Shovel +db $0B ; 14 - Flute +db $0B ; 15 - Somaria +db $0B ; 16 - Bottle db $05 ; 17 - Heartpiece -db $0A ; 18 - Byrna -db $0A ; 19 - Cape -db $0A ; 1A - Mirror -db $0A ; 1B - Glove -db $0A ; 1C - Mitts -db $0A ; 1D - Book -db $0A ; 1E - Flippers -db $0A ; 1F - Pearl -db $0C ; 20 - Crystal -db $0A ; 21 - Net +db $06 ; 18 - Byrna +db $0B ; 19 - Cape +db $0B ; 1A - Mirror +db $0B ; 1B - Glove +db $0B ; 1C - Mitts +db $0B ; 1D - Book +db $0B ; 1E - Flippers +db $0B ; 1F - Pearl +db $0D ; 20 - Crystal +db $06 ; 21 - Net db $05 ; 22 - Blue Mail db $05 ; 23 - Red Mail db $03 ; 24 - Small Key -db $06 ; 25 - Compass +db $07 ; 25 - Compass db $05 ; 26 - Heart Container from 4/4 db $02 ; 27 - Bomb db $02 ; 28 - 3 bombs -db $0A ; 29 - Mushroom -db $0A ; 2A - Red boomerang -db $0A ; 2B - Full bottle (red) -db $0A ; 2C - Full bottle (green) -db $0A ; 2D - Full bottle (blue) +db $06 ; 29 - Mushroom +db $06 ; 2A - Red boomerang +db $0B ; 2B - Full bottle (red) +db $0B ; 2C - Full bottle (green) +db $0B ; 2D - Full bottle (blue) db $05 ; 2E - Potion refill (red) db $05 ; 2F - Potion refill (green) db $05 ; 30 - Potion refill (blue) db $02 ; 31 - 10 bombs -db $08 ; 32 - Big key +db $09 ; 32 - Big key db $02 ; 33 - Map db $02 ; 34 - 1 rupee db $02 ; 35 - 5 rupees db $02 ; 36 - 20 rupees -db $09 ; 37 - Green pendant -db $09 ; 38 - Blue pendant -db $09 ; 39 - Red pendant -db $0A ; 3A - Tossed bow -db $0A ; 3B - Silvers -db $0A ; 3C - Full bottle (bee) -db $0A ; 3D - Full bottle (fairy) +db $0A ; 37 - Green pendant +db $0A ; 38 - Blue pendant +db $0A ; 39 - Red pendant +db $0B ; 3A - Tossed bow +db $0B ; 3B - Silvers +db $0B ; 3C - Full bottle (bee) +db $0B ; 3D - Full bottle (fairy) db $05 ; 3E - Boss heart db $05 ; 3F - Sanc heart db $02 ; 40 - 100 rupees @@ -70,16 +70,16 @@ db $02 ; 44 - 10 arrows db $02 ; 45 - Small magic db $02 ; 46 - 300 rupees db $02 ; 47 - 20 rupees green -db $0A ; 48 - Full bottle (good bee) -db $0A ; 49 - Tossed fighter sword -db $0A ; 4A - Active Flute -db $0A ; 4B - Boots +db $0B ; 48 - Full bottle (good bee) +db $0B ; 49 - Tossed fighter sword +db $0B ; 4A - Active Flute +db $0B ; 4B - Boots db $05 ; 4C - Bomb capacity (50) db $05 ; 4D - Arrow capacity (70) -db $0A ; 4E - 1/2 magic -db $0A ; 4F - 1/4 magic -db $0A ; 50 - Safe master sword +db $0B ; 4E - 1/2 magic +db $0B ; 4F - 1/4 magic +db $0B ; 50 - Safe master sword db $05 ; 51 - Bomb capacity (+5) db $05 ; 52 - Bomb capacity (+10) db $05 ; 53 - Arrow capacity (+5) @@ -87,27 +87,27 @@ db $05 ; 54 - Arrow capacity (+10) db $02 ; 55 - Programmable item 1 db $02 ; 56 - Programmable item 2 db $02 ; 57 - Programmable item 3 -db $0A ; 58 - Upgrade-only silver arrows +db $0B ; 58 - Upgrade-only silver arrows db $02 ; 59 - Rupoor db $02 ; 5A - Nothing db $02 ; 5B - Red clock db $02 ; 5C - Blue clock db $02 ; 5D - Green clock -db $0A ; 5E - Progressive sword +db $0B ; 5E - Progressive sword db $05 ; 5F - Progressive shield db $05 ; 60 - Progressive armor -db $0A ; 61 - Progressive glove +db $0B ; 61 - Progressive glove db $02 ; 62 - RNG pool item (single) db $02 ; 63 - RNG pool item (multi) -db $0A ; 64 - Progressive bow -db $0A ; 65 - Progressive bow +db $0B ; 64 - Progressive bow +db $0B ; 65 - Progressive bow db $02 ; 66 - db $02 ; 67 - db $02 ; 68 - db $02 ; 69 - -db $0E ; 6A - Triforce -db $0D ; 6B - Power star -db $0D ; 6C - Triforce Piece +db $0F ; 6A - Triforce +db $0E ; 6B - Power star +db $0E ; 6C - Triforce Piece db $02 ; 6D - Server request item db $02 ; 6E - Server request item (dungeon drop) db $02 ; 6F - @@ -129,63 +129,63 @@ db $02 ; 7D - Map of Eastern Palace db $02 ; 7E - Map of Hyrule Castle db $02 ; 7F - Map of Sewers -db $06 ; 80 - Compass of Light World -db $06 ; 81 - Compass of Dark World -db $06 ; 82 - Compass of Ganon's Tower -db $06 ; 83 - Compass of Turtle Rock -db $06 ; 84 - Compass of Thieves' Town -db $06 ; 85 - Compass of Tower of Hera -db $06 ; 86 - Compass of Ice Palace -db $06 ; 87 - Compass of Skull Woods -db $06 ; 88 - Compass of Misery Mire -db $06 ; 89 - Compass of Dark Palace -db $06 ; 8A - Compass of Swamp Palace -db $06 ; 8B - Compass of Agahnim's Tower -db $06 ; 8C - Compass of Desert Palace -db $06 ; 8D - Compass of Eastern Palace -db $06 ; 8E - Compass of Hyrule Castle -db $06 ; 8F - Compass of Sewers +db $07 ; 80 - Compass of Light World +db $07 ; 81 - Compass of Dark World +db $07 ; 82 - Compass of Ganon's Tower +db $07 ; 83 - Compass of Turtle Rock +db $07 ; 84 - Compass of Thieves' Town +db $07 ; 85 - Compass of Tower of Hera +db $07 ; 86 - Compass of Ice Palace +db $07 ; 87 - Compass of Skull Woods +db $07 ; 88 - Compass of Misery Mire +db $07 ; 89 - Compass of Dark Palace +db $07 ; 8A - Compass of Swamp Palace +db $07 ; 8B - Compass of Agahnim's Tower +db $07 ; 8C - Compass of Desert Palace +db $07 ; 8D - Compass of Eastern Palace +db $07 ; 8E - Compass of Hyrule Castle +db $07 ; 8F - Compass of Sewers -db $08 ; 90 - Skull key -db $08 ; 91 - Reserved -db $08 ; 92 - Big key of Ganon's Tower -db $08 ; 93 - Big key of Turtle Rock -db $08 ; 94 - Big key of Thieves' Town -db $08 ; 95 - Big key of Tower of Hera -db $08 ; 96 - Big key of Ice Palace -db $08 ; 97 - Big key of Skull Woods -db $08 ; 98 - Big key of Misery Mire -db $08 ; 99 - Big key of Dark Palace -db $08 ; 9A - Big key of Swamp Palace -db $08 ; 9B - Big key of Agahnim's Tower -db $08 ; 9C - Big key of Desert Palace -db $08 ; 9D - Big key of Eastern Palace -db $08 ; 9E - Big key of Hyrule Castle -db $08 ; 9F - Big key of Sewers +db $09 ; 90 - Skull key +db $09 ; 91 - Reserved +db $09 ; 92 - Big key of Ganon's Tower +db $09 ; 93 - Big key of Turtle Rock +db $09 ; 94 - Big key of Thieves' Town +db $09 ; 95 - Big key of Tower of Hera +db $09 ; 96 - Big key of Ice Palace +db $09 ; 97 - Big key of Skull Woods +db $09 ; 98 - Big key of Misery Mire +db $09 ; 99 - Big key of Dark Palace +db $09 ; 9A - Big key of Swamp Palace +db $09 ; 9B - Big key of Agahnim's Tower +db $09 ; 9C - Big key of Desert Palace +db $09 ; 9D - Big key of Eastern Palace +db $09 ; 9E - Big key of Hyrule Castle +db $09 ; 9F - Big key of Sewers -db $07 ; A0 - Small key of Sewers -db $07 ; A1 - Small key of Hyrule Castle -db $07 ; A2 - Small key of Eastern Palace -db $07 ; A3 - Small key of Desert Palace -db $07 ; A4 - Small key of Agahnim's Tower -db $07 ; A5 - Small key of Swamp Palace -db $07 ; A6 - Small key of Dark Palace -db $07 ; A7 - Small key of Misery Mire -db $07 ; A8 - Small key of Skull Woods -db $07 ; A9 - Small key of Ice Palace -db $07 ; AA - Small key of Tower of Hera -db $07 ; AB - Small key of Thieves' Town -db $07 ; AC - Small key of Turtle Rock -db $07 ; AD - Small key of Ganon's Tower +db $08 ; A0 - Small key of Sewers +db $08 ; A1 - Small key of Hyrule Castle +db $08 ; A2 - Small key of Eastern Palace +db $08 ; A3 - Small key of Desert Palace +db $08 ; A4 - Small key of Agahnim's Tower +db $08 ; A5 - Small key of Swamp Palace +db $08 ; A6 - Small key of Dark Palace +db $08 ; A7 - Small key of Misery Mire +db $08 ; A8 - Small key of Skull Woods +db $08 ; A9 - Small key of Ice Palace +db $08 ; AA - Small key of Tower of Hera +db $08 ; AB - Small key of Thieves' Town +db $08 ; AC - Small key of Turtle Rock +db $08 ; AD - Small key of Ganon's Tower db $02 ; AE - Reserved db $03 ; AF - Generic small key -db $0C ; B0 - Crystal 6 -db $0C ; B1 - Crystal 1 -db $0C ; B2 - Crystal 5 -db $0C ; B3 - Crystal 7 -db $0C ; B4 - Crystal 2 -db $0C ; B5 - Crystal 4 -db $0C ; B6 - Crystal 3 +db $0D ; B0 - Crystal 6 +db $0D ; B1 - Crystal 1 +db $0D ; B2 - Crystal 5 +db $0D ; B3 - Crystal 7 +db $0D ; B4 - Crystal 2 +db $0D ; B5 - Crystal 4 +db $0D ; B6 - Crystal 3 db $02 ; B7 - Reserved db $02 ; B8 - db $02 ; B9 - diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 69c0d2f..3b0c706 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -2,7 +2,7 @@ dw $FFFF, $83A5, $FFFF, $FFFF ; 00 dw $C388, $8388, $FFFF, $FFFF ; 01 dw $4348, $034A, $4342, $0342 ; 02 dw $FFFF, $FFFF, $438F, $FFFF ; 03 - Houlihan -dw $C3A5, $83B4, $436D, $036E ; 04 +dw $039A, $038F, $4365, $C39B ; 04 dw $FFFF, $FFFF, $FFFF, $FFFF ; 05 - unused dw $FFFF, $FFFF, $438F, $FFFF ; 06 - Arrghus dw $C340, $8370, $4340, $0340 ; 07 - Moldorm @@ -15,28 +15,28 @@ dw $FFFF, $FFFF, $438F, $FFFF ; 0D - Aga 2 dw $FFFF, $FFFF, $8399, $439B ; 0E dw $FFFF, $FFFF, $FFFF, $FFFF ; 0F - unused and should never be used, treated as non-id dw $C340, $8340, $4350, $0340 ; 10 -dw $C340, $8370, $4340, $0350 ; 11 +dw $83B7, $C3AC, $03B7, $438A ; 11 dw $C354, $8354, $4354, $0354 ; 12 dw $FFFF, $83B7, $FFFF, $03B7 ; 13 dw $C351, $8341, $4351, $0351 ; 14 dw $C374, $8340, $4341, $0340 ; 15 -dw $C3B5, $83A5, $436E, $036E ; 16 +dw $0361, $039A, $C3B2, $83B2 ; 16 - gross (add middle section if feasible) dw $C370, $8370, $4340, $0340 ; 17 dw $C3B5, $FFFF, $43B4, $FFFF ; 18 - useless fairy drop dw $FFFF, $8369, $FFFF, $035A ; 19 dw $C3AE, $83AF, $43AD, $0361 ; 1A dw $039B, $439C, $4361, $FFFF ; 1B -dw $C3B4, $83B4, $437E, $036E ; 1C +dw $038F, $038F, $037E, $C39B ; 1C dw $C3B2, $83A7, $FFFF, $FFFF ; 1D dw $FFFF, $43B8, $8399, $0366 ; 1E dw $FFFF, $FFFF, $4360, $C399 ; 1F dw $FFFF, $FFFF, $438F, $FFFF ; 20 -dw $C340, $8350, $4340, $0341 ; 21 +dw $4348, $0363, $C348, $8368 ; 21 dw $FFFF, $FFFF, $4368, $0348 ; 22 dw $FFFF, $FFFF, $FFFF, $039B ; 23 -dw $C350, $8350, $4341, $0350 ; 24 +dw $4365, $0365, $0364, $0365 ; 24 dw $FFFF, $FFFF, $FFFF, $FFFF ; 25 - unused -dw $C340, $837C, $4354, $0382 ; 26 +dw $039B, $037C, $4363, $0382 ; 26 dw $C370, $8370, $4340, $0340 ; 27 dw $C3A5, $FFFF, $4358, $0348 ; 28 dw $FFFF, $FFFF, $FFFF, $0396 ; 29 - Mothula @@ -59,13 +59,13 @@ dw $FFFF, $FFFF, $039B, $03A9 ; 39 dw $C3A4, $83A4, $4354, $0354 ; 3A - make bespoke if feasible dw $C3A5, $FFFF, $43B5, $FFFF ; 3B - inset stairs if feasible dw $C340, $8350, $4340, $0350 ; 3C - hookshot cave front -dw $C36E, $836E, $43B5, $03A5 ; 3D +dw $039B, $439B, $0361, $838E ; 3D dw $FFFF, $438F, $43B2, $0373 ; 3E dw $FFFF, $FFFF, $8399, $C399 ; 3F dw $C3A5, $FFFF, $4372, $C399 ; 40 - inset stairs if feasible dw $C340, $8370, $4354, $0354 ; 41 dw $C398, $8389, $FFFF, $FFFF ; 42 -dw $C3B2, $836E, $FFFF, $03B5 ; 43 +dw $C3B2, $03B2, $FFFF, $0361 ; 43 dw $038D, $839F, $838D, $039F ; 44 dw $C3AB, $438F, $4364, $C39B ; 45 dw $C375, $8375, $4373, $0373 ; 46 @@ -76,12 +76,12 @@ dw $0376, $0377, $0386, $4386 ; 4A dw $C361, $4391, $4373, $0373 ; 4B dw $FFFF, $83A5, $FFFF, $03B7 ; 4C dw $C350, $8370, $4341, $0340 ; 4D -dw $839B, $4399, $FFFF, $FFFF ; 4E +dw $839B, $439C, $FFFF, $FFFF ; 4E dw $FFFF, $8396, $838D, $FFFF ; 4F dw $FFFF, $83B7, $FFFF, $03B5 ; 50 dw $C354, $8354, $4384, $0384 ; 51 dw $C3B7, $FFFF, $4359, $0348 ; 52 -dw $C3A5, $83B5, $436E, $036E ; 53 +dw $039A, $83B5, $839B, $43B7 ; 53 dw $C390, $8390, $4380, $0340 ; 54 dw $C340, $8340, $4350, $0340 ; 55 dw $038F, $83B4, $4365, $039F ; 56 @@ -90,14 +90,14 @@ dw $C372, $439B, $0383, $0365 ; 58 - split dw $838A, $8372, $038A, $0372 ; 59 dw $FFFF, $FFFF, $FFFF, $038F ; 5A - Helmasaur King dw $FFFF, $83B7, $FFFF, $03B5 ; 5B -dw $C3B1, $83AA, $FFFF, $03B4 ; 5C -dw $C36E, $83A7, $43B5, $FFFF ; 5D +dw $C3B1, $83AA, $FFFF, $838F ; 5C +dw $039B, $C399, $0361, $FFFF ; 5D dw $FFFF, $43B8, $839C, $0366 ; 5E dw $FFFF, $FFFF, $43BB, $FFFF ; 5F dw $FFFF, $8379, $FFFF, $036A ; 60 dw $C387, $8385, $4356, $0356 ; 61 dw $C346, $8354, $4352, $0340 ; 62 -dw $C3A5, $FFFF, $43B5, $FFFF ; 63 +dw $039A, $FFFF, $0361, $FFFF ; 63 dw $FFFF, $FFFF, $8399, $C3B1 ; 64 dw $FFFF, $FFFF, $83B1, $03A9 ; 65 dw $038F, $039A, $0362, $83B2 ; 66 @@ -105,17 +105,17 @@ dw $83B4, $83B5, $03B7, $039F ; 67 dw $C340, $8350, $4341, $0340 ; 68 dw $FFFF, $FFFF, $FFFF, $FFFF ; 69 - unused dw $FFFF, $838C, $FFFF, $034E ; 6A -dw $C3A5, $83B5, $436E, $036E ; 6B -dw $C3A5, $FFFF, $436E, $03B1 ; 6C - Lanmolas 2 -dw $C3B5, $FFFF, $43B7, $FFFF ; 6D +dw $039A, $0361, $839B, $C39B ; 6B +dw $039A, $FFFF, $839B, $0360 ; 6C - Lanmolas 2 +dw $0361, $FFFF, $C39B, $FFFF ; 6D dw $FFFF, $838E, $FFFF, $FFFF ; 6E dw $FFFF, $FFFF, $FFFF, $FFFF ; 6F - unused dw $43BA, $FFFF, $FFFF, $FFFF ; 70 -dw $C3A5, $FFFF, $436D, $03B0 ; 71 -dw $C384, $8384, $4344, $0354 ; 72 - slight cheating I guess... -dw $C3B4, $83B4, $436E, $038B ; 73 -dw $C340, $8340, $4345, $0345 ; 74 -dw $C3B4, $83B4, $438A, $03B5 ; 75 +dw $039A, $FFFF, $4365, $438D ; 71 +dw $437A, $037A, $43A1, $0342 ; 72 - slight cheating I guess... +dw $038F, $038F, $839B, $0366 ; 73 +dw $43B2, $03B2, $43A8, $03A8 ; 74 +dw $038F, $83B4, $0365, $03B5 ; 75 dw $C36D, $83BC, $436E, $0397 ; 76 dw $C370, $8340, $43A0, $03A0 ; 77 dw $FFFF, $FFFF, $FFFF, $FFFF ; 78 - unused @@ -123,47 +123,47 @@ dw $FFFF, $FFFF, $FFFF, $FFFF ; 79 - unused dw $FFFF, $FFFF, $FFFF, $FFFF ; 7A - unused dw $C35E, $83B1, $438F, $038D ; 7B dw $C3B7, $83B4, $43B7, $03B7 ; 7C -dw $C36E, $83B0, $4392, $0391 ; 7D - warp tiles -dw $FFFF, $83B7, $839C, $C37A ; 7E +dw $43B2, $835E, $034C, $0391 ; 7D +dw $FFFF, $83B7, $4393, $438A ; 7E dw $439B, $FFFF, $838E, $FFFF ; 7F dw $C3A7, $83B0, $FFFF, $FFFF ; 80 dw $C350, $8341, $4340, $0341 ; 81 dw $C39D, $8354, $4341, $0340 ; 82 -dw $C3B4, $83B5, $436D, $036E ; 83 +dw $038F, $83B5, $4365, $43B7 ; 83 dw $C344, $8345, $4354, $0354 ; 84 -dw $C38B, $83B2, $436E, $03B2 ; 85 +dw $C38B, $C39B, $03B7, $439B ; 85 dw $FFFF, $FFFF, $FFFF, $FFFF ; 86 - unused -dw $C3A7, $836E, $4394, $03B4 ; 87 +dw $8399, $439B, $4394, $838F ; 87 dw $FFFF, $FFFF, $FFFF, $FFFF ; 88 - unused dw $C3B0, $83B0, $FFFF, $FFFF ; 89 dw $FFFF, $FFFF, $FFFF, $FFFF ; 8A - unused -dw $C36D, $83B1, $436D, $03B0 ; 8B +dw $838A, $0360, $038A, $438D ; 8B dw $83BE, $83BF, $03BD, $03B8 ; 8C -dw $C3B1, $836D, $43B0, $036D ; 8D +dw $0360, $C38A, $038D, $438A ; 8D dw $FFFF, $838E, $FFFF, $FFFF ; 8E dw $FFFF, $FFFF, $FFFF, $FFFF ; 8F - unused dw $FFFF, $FFFF, $438F, $FFFF ; 90 dw $FFFF, $83A5, $FFFF, $03B7 ; 91 -dw $C340, $8340, $4341, $0341 ; 92 - should it be split? idk -dw $C36C, $836C, $43B7, $03B4 ; 93 +dw $039B, $C3B7, $0364, $039F ; 92 - should it be split? idk +dw $C36C, $836C, $C39B, $838F ; 93 dw $FFFF, $FFFF, $FFFF, $FFFF ; 94 - unused dw $FFFF, $83B7, $FFFF, $03B5 ; 95 -dw $C3B7, $FFFF, $436E, $0397 ; 96 -dw $C3A5, $83B4, $436E, $036F ; 97 +dw $C3B7, $FFFF, $03B7, $C39C ; 96 +dw $039A, $83B4, $839B, $036F ; 97 dw $FFFF, $FFFF, $43B2, $0397 ; 98 dw $FFFF, $038F, $434A, $0363 ; 99 dw $FFFF, $FFFF, $FFFF, $FFFF ; 9A - unused -dw $C3B2, $835E, $435E, $0378 ; 9B +dw $839B, $0381, $435E, $0378 ; 9B dw $C350, $8350, $4341, $0341 ; 9C dw $C35E, $83B2, $43B1, $035E ; 9D dw $FFFF, $439A, $838D, $03B9 ; 9E dw $FFFF, $FFFF, $439B, $FFFF ; 9F -dw $839B, $439C, $FFFF, $FFFF ; A0 +dw $839B, $C39C, $FFFF, $FFFF ; A0 dw $C3B0, $835D, $FFFF, $036A ; A1 dw $C385, $8385, $4356, $0346 ; A2 - show paths somehow dw $C35A, $FFFF, $436A, $FFFF ; A3 dw $FFFF, $FFFF, $438E, $FFFF ; A4 -dw $C3A5, $83B5, $436E, $036E ; A5 +dw $039A, $0361, $C3B2, $83B2 ; A5 dw $C340, $8370, $4340, $0340 ; A6 dw $C396, $FFFF, $FFFF, $FFFF ; A7 - ToH fairy basement room dw $039B, $83B6, $839B, $03A3 ; A8 @@ -174,8 +174,8 @@ dw $FFFF, $FFFF, $FFFF, $038F ; AC - Blind dw $FFFF, $FFFF, $FFFF, $FFFF ; AD - unused dw $FFFF, $8399, $FFFF, $FFFF ; AE dw $C39B, $FFFF, $FFFF, $FFFF ; AF -dw $039B, $439C, $839B, $C399 ; B0 -dw $C34E, $83B5, $434C, $036D ; B1 +dw $039B, $C399, $839B, $C399 ; B0 +dw $0391, $83B5, $434C, $438A ; B1 dw $C35C, $83A2, $039B, $0366 ; B2 dw $0365, $FFFF, $0365, $FFFF ; B3 dw $C350, $8340, $4384, $0384 ; B4 @@ -185,12 +185,12 @@ dw $C3B4, $FFFF, $43B5, $FFFF ; B7 dw $FFFF, $838A, $FFFF, $03B4 ; B8 dw $C36B, $836B, $4354, $0354 ; B9 dw $0364, $438D, $FFFF, $FFFF ; BA -dw $037A, $8364, $4372, $0364 ; BB -dw $C3BF, $437A, $8364, $C37A ; BC - block off entrances? +dw $838A, $8364, $4372, $0364 ; BB +dw $C3BF, $C38A, $8364, $438A ; BC - block off entrances? dw $FFFF, $FFFF, $FFFF, $FFFF ; BD - unused dw $FFFF, $439A, $FFFF, $C365 ; BE dw $FFFF, $8396, $438D, $FFFF ; BF -dw $C372, $439C, $4372, $C399 ; C0 +dw $C372, $C399, $4372, $C399 ; C0 dw $039B, $0364, $4365, $8364 ; C1 dw $C351, $8353, $4341, $0353 ; C2 dw $C353, $8340, $4343, $0340 ; C3 - show layers @@ -206,7 +206,7 @@ dw $C353, $8350, $4347, $0354 ; CC dw $FFFF, $FFFF, $FFFF, $FFFF ; CD - unused dw $FFFF, $83B8, $FFFF, $FFFF ; CE - Kholdstare drop dw $FFFF, $FFFF, $FFFF, $FFFF ; CF - unused -dw $C372, $439C, $4372, $C399 ; D0 +dw $C372, $C399, $4372, $C399 ; D0 dw $C38E, $838F, $4381, $C38D ; D1 dw $FFFF, $83B5, $FFFF, $0395 ; D2 dw $FFFF, $FFFF, $FFFF, $FFFF ; D3 - unused @@ -222,7 +222,7 @@ dw $C346, $8354, $4343, $0340 ; DC dw $FFFF, $FFFF, $FFFF, $FFFF ; DD - unused dw $FFFF, $8396, $FFFF, $FFFF ; DE - Kholdstare dw $FFFF, $FFFF, $43A0, $0354 ; DF - paradox top -dw $C36E, $83A7, $43B5, $FFFF ; E0 +dw $039B, $C399, $0361, $FFFF ; E0 ; no more dungeon dw $C340, $8340, $4350, $0340 ; E1 - lost woods thieves hideout diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index e64b0f2..27c83d3 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -12,6 +12,7 @@ DrawDungeonMapRoom: LDX.w DungeonID LDA.l MapField AND.l DungeonMask, X + BEQ + LDA.l ShowRooms_have_map AND.w #$00FF CMP.b $0A @@ -22,6 +23,7 @@ DrawDungeonMapRoom: LDX.w DungeonID LDA.l CompassField AND.l DungeonMask, X + BEQ + LDA.l ShowRooms_have_compass AND.w #$00FF CMP.b $0A @@ -72,6 +74,7 @@ DrawDungeonMapRoom: ?.square PLA LDA.b $0C + EOR.w #(3-)<<14 BRA ?.write ?.shape @@ -93,6 +96,7 @@ DrawDungeonMapRoom: ?.full_square LDA.w #$174F + EOR.w #(3-)<<14 ?.write STA.l $7F0000+, X diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm index b0fab19..e0ea125 100644 --- a/dungeon_map/dungeon_switch.asm +++ b/dungeon_map/dungeon_switch.asm @@ -57,7 +57,13 @@ DungeonMapSwitch_Submodule: STA.b $A4 REP #$20 - JML $98BC8A + STZ.b $E0 + STZ.b $E2 + STZ.b $E4 + STZ.b $E6 + STZ.b $E8 + STZ.b $EA + JML $98BCA1 SkipMapSprites: STZ.b $00 diff --git a/dungeon_map/main.asm b/dungeon_map/main.asm index 07d0d4f..abff472 100644 --- a/dungeon_map/main.asm +++ b/dungeon_map/main.asm @@ -21,6 +21,9 @@ endmacro %WriteGFXSheetPointer($D5, DungeonMapIcons1) %WriteGFXSheetPointer($D6, DungeonMapIcons2) +; TR is such a problem child +%WriteGFXSheetPointer($A6, DungeonMapIcons2) + %WriteGFXSheetPointer($D4, MapSheetD4) pullpc diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index 5d5bf84..e3cc05e 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -31,30 +31,34 @@ struct DungeonMapData DungeonMapData .unused: skip 1 endstruct -; $B9F880 +warnpc $B9F880 +org $B9F880 + LootTypeIcons: dw $0B00, $0B00, $0B00, $0B00 ; 00 - nothing -dw $2B0E, $6B0E, $2B3E, $6B3E ; 01 - unknown - basic chest +dw $2F32, $6F32, $AF32, $EF32 ; 01 - unknown - dot dw $2B0D, $6B0D, $2B3D, $6B3D ; 02 - junk - pot dw $2B07, $6B07, $2B17, $2B18 ; 03 - small key dw $2B0B, $6B0B, $2B3B, $6B3B ; 04 - triforce piece dw $6B08, $2B08, $EB08, $AB08 ; 05 - safety - plus -dw $AB3A, $EB3A, $2B3A, $6B3A ; 06 - compass -dw $2B07, $6B07, $2B17, $2B18 ; 07 - small key -dw $2B05, $6B05, $2B15, $2B16 ; 08 - big key -dw $2B09, $2B0A, $2B39, $6B39 ; 09 - pendant -dw $2B0F, $6B0F, $2B3F, $6B3F ; 0A - inventory item - big chest -dw $2B09, $2B0A, $2B39, $6B39 ; 0B - also pendant -dw $6F02, $2B02, $EB02, $AF02 ; 0C - crystal -dw $2B0B, $6B0B, $2B3B, $6B3B ; 0D - triforce piece -dw $2B0C, $6B0C, $2B3C, $6B3C ; 0E - triforce -dw $0B00, $0B00, $0B00, $0B00 ; 0F - empty (reserved) +dw $2B0E, $6B0E, $2B3E, $6B3E ; 06 - less important item - small chest +dw $AB3A, $EB3A, $2B3A, $6B3A ; 07 - compass +dw $2B07, $6B07, $2B17, $2B18 ; 08 - small key +dw $2B05, $6B05, $2B15, $2B16 ; 09 - big key +dw $2B09, $2B0A, $2B39, $6B39 ; 0A - pendant +dw $2B0F, $6B0F, $2B3F, $6B3F ; 0B - important inventory item - big chest +dw $2B09, $2B0A, $2B39, $6B39 ; 0C - also pendant +dw $6F02, $2B02, $EB02, $AF02 ; 0D - crystal +dw $2B0B, $6B0B, $2B3B, $6B3B ; 0E - triforce piece +dw $2B0C, $6B0C, $2B3C, $6B3C ; 0F - triforce -; $B9F900 +warnpc $B9F900 +org $B9F900 LootTypeMapping: incsrc data/item_mapping.asm -; $B9FA00 +warnpc $B9FA00 +org $B9FA00 ; Room ID mappings to bit to check for presence and address of item drop MiscLocations: dw $00C8 : db $04 : dl HeartContainer_ArmosKnights @@ -82,16 +86,18 @@ dw $FFFF : db $FF : dl $FFFFFF ; Moldorm 2? ($004D) dw $FFFF : db $FF : dl $FFFFFF ; Aga 2? ($000D) dw $FFFF -; $B9FA9A +warnpc $B9FA9A +org $B9FA9A MapHUDPalette: dw $0000, $3ED8, $2E54 -; $B9FAA0 +warnpc $B9FAA0 +org $B9FAA0 PrizeLocations: -dw $00C8 : db $02 ; ArmosKnights +dw $00C8 : db $02 ; Armos Knights dw $0033 : db $03 ; Lanmolas dw $0006 : db $05 ; Arrghus -dw $005A : db $06 ; HelmasaurKing +dw $005A : db $06 ; Helmasaur King dw $0090 : db $07 ; Vitreous dw $0029 : db $08 ; Mothula dw $00DE : db $09 ; Kholdstare @@ -100,7 +106,8 @@ dw $00AC : db $0B ; Blind dw $00A4 : db $0C ; Trinexx dw $FFFF -; $B9FAC0 +warnpc $B9FAC0 +org $B9FAC0 SupertileEntrances: incsrc data/entrance_tiles.asm warnpc $B9FB00 @@ -109,8 +116,8 @@ pad $B9FB00 ; $B9FB00 DungeonLabels: -dw $2561, $256F ; Sewers -dw $2564, $255F ; Hyrule Castle +dw $2550, $2579 ; Sewers +dw $2550, $2578 ; Hyrule Castle dw $2561, $256C ; Eastern Palace dw $2560, $256C ; Desert Palace dw $255D, $2570 ; Agahnim's Tower @@ -140,15 +147,16 @@ org $B9FF00 ; $06 - show fully lit with stairs and holes/internal walls (palette 2) ShowRooms: .default - db $01 + db $02 .have_map - db $04 + db $05 .have_compass db $03 .visited_tile - db $05 + db $04 .reserved skip 4 +warnpc $B9FF08 org $B9FF08 ; $00 - do not show anything @@ -163,10 +171,9 @@ ShowItems: db $02 .visited_tile db $01 -.item_is_compass ; NYI - db $00 .reserved - skip 3 + skip 4 +warnpc $B9FF10 org $B9FF10 ; ---P bepc @@ -176,4 +183,4 @@ org $B9FF10 ; p - pots ; c - chests ItemSources: - db $1F + db $09 diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index ef4b9d3a7e1e86b6be007e25062434f0a9f69cac..17236f1288fc21aad4a09fc98350ba6321caa15d 100644 GIT binary patch delta 441 zcmZ8d%}T>S5T2yf+9DJL>(WcB1ka@xJp_r{x9CYq*;Aik67U7YeGD%`9-t+?^yDL` zCcKLp*3wEH9fU}wmmi!vD|2;cF=s#;#kSkL$rZo j5dLYVVgQDArh!FlhLYVX*jYI2w^p5s_urSkxBA{Md!LTD delta 441 zcmY*VF-`+P4D>mHkQ79UM6$XjLCOOV4HPLZn_r|tDXz*Jd?)e&qeZ0Sn(GD{`|EZw-q=?UO#OjG3QF8RPw9O{6}I1IPl`zr$+ zpE5$x{Vob_t)cw<_@XGm>J#8GhT2!X1E) z;ihU1qFY4Nw>#LwK75@mg&m#6H?M#g{P{sl|1DfdOkLQ7Y4174d0;W1Qoy*`Acwc! z^-v9}U2jFz@S>mm(^nncuSHq7=|5Q{;aJR;X+iY^%$QIV2ddMw*6pflEff9zfP=&M O)GV->omcOJS#kuQ!I!82 diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index 39a0b1087d5241f1c8808109c7bb5e89c871a88b..97c583d9b261e74a7ff6a92bf9d61546416076a9 100644 GIT binary patch delta 374 zcmWNNAxHyZ7>3{P|8CPTljRs=6P*Urm|{?oV}~+Dn86?n42Hw7ET+5RfB$WI8#*Uw zvWdxJ7sm}uLoh1_gJD5ItK50%g(p1lycfy4wo`r0<@z?3VIze3sUvj9DVeu| zbULs*x6=tZNo~=2sg7_Dr9hRsb5vYXGvp1RrPIPTS0z=XjS$dJQ&@}l%1^=D*F1;a11+`%G8;#rQP56w zc)q4)aam^BJrwh`M98|%;U*mQ$8yMI<=q}o?>s?*y={W7Qmpn!_AvTYd&YZw)QWtd qM0j4D{Freonx6rcg2s==Hk`uoJ5%0LLlzNa8ISG&aNHroi2ea4a(8C{ delta 364 zcmWlUJ4*vm6oluTvxy+V!a^1m6=Ez@6f6{9xMYb+u&}TY1PhB`;a~73=sRT)9m4KZ^3JdLbU90&9J{aaPd6m4V4<&Z@+M}aQSHTV8e%YoM$?Pi+ z4sv+;kV%*^@~z8{y&k;iS@PV*0?jR+Opw=t6+6n&OR)fQnzb%!88S~?Z!tr6kN{m9~np{Mu%oIhzDto_dwpo`YC{qmd zH69e`V#adqus%ik5U|fvSda6@PvK;QOiA=U>6+*P2^eNq>I10wmYKx$rs#X2V>@?@ zL=kIX)wt!%p%sd4iHjgAyGSMohlTyAf?o$zrf+OkmS)+QX2y9 z{s1>!rL>EvyUq%!IJmeK#xuMb>@|UOZ-?ZFu1>=mZRNTu*$-rA z$a$hRfs2;WT4qcb{R71O7lzPSs$L5Rv|%E0RPsvXC`?W=|AKcHnOtSbfxV8T2n)`T zsd~hLk9ti$l9i4F4V_!=8n7GOKMwQEoJ(r2Ux0t&eu5%>6UD?=^03Q}6#tHMf$)oE F{{X!RXnz0z delta 330 zcmWNLze@sf9ERV|=Z;JIL1062gP`eHK|@eD$Z1AF4Uu3%AvU!1H(bK^d#84uc$`6N ze}P*=M8r7;&CU^5R8wnkcH0Zj!^7)pjy6bVRWs1_K~K5{!#%$X>_ ztDL4{zB>gXQ3V3=01k8J9;W2oXXx0QtTu#3;uochlx2`=7^PZG9#A;~H=;{x7Ahic zHaj;Y>J-<-GFA-djjS)q8@)s7eUm+bt)Ls?Ivy|RCQ-QpQiC#e{>VM^o3xdeBZ^;G zkED!&v0OukpqQ;<6^5Ez;y1(NJUioO@Ze*WrecHIjEEHKuyqUSJ9I zGq5A>j1)2gD+v_(C;lcI>FzuYUm=&s`UHhJ_f{28YFj5a$?XLD9#?0acZh^a{tsvV E0S-xKY5)KL diff --git a/menu/map_sheet_d4.3bpp b/menu/map_sheet_d4.3bpp index 23bf78b2883a901d46e701fdba47822d2827380e..e9360cbc1c2eb83051f969a28127635fbc64c101 100644 GIT binary patch delta 33 ccmZqRY2ewgg++t`2ACO{piIWiCs-^P0aTg!MFI#^R3evy5HJhQkm1EY$HvILMYW@x_6 Date: Sun, 4 Jan 2026 09:15:10 -0600 Subject: [PATCH 13/73] AlwaysShowCompass setting --- dungeon_map/check_loot.asm | 36 +++++++++++++++++++++--------------- dungeon_map/settings.asm | 3 +++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index bce7e00..17bdc26 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -49,9 +49,7 @@ CheckLoot: CMP.b $0E BCC + STA.b $0E - -+ LDA.b $0E - BEQ .done ++ LDA.l ItemSources : BIT.w #$0001 : BEQ + JSR CheckChests @@ -73,16 +71,6 @@ CheckLoot: JSR CheckPrize + - LDA.b $0E - AND.w #$00FF - CMP.w #$0001 - BNE .done - - LDA.b $02 - BEQ .done - LDA.w #$0001 - STA.b $02 - .done PLA : STA.b $0E PLA : STA.b $06 @@ -367,10 +355,28 @@ CheckEnemies: GetLootClass: PHX TAX + CMP.w #$0025 : BEQ .compass + AND.w #$00F0 + CMP.w #$0080 : BNE .not_compass + +.compass + LDA.l AlwaysShowCompass : BNE .check_value + +.not_compass + LDA.b $0E + BEQ .done + CMP.w #$0001 + BEQ .value_set + +.check_value LDA.l LootTypeMapping, X AND.w #$00FF + +.value_set CMP.b $02 - BCC + + BCC .done STA.b $02 -+ PLX + +.done + PLX RTS diff --git a/dungeon_map/settings.asm b/dungeon_map/settings.asm index e3cc05e..7a87f52 100644 --- a/dungeon_map/settings.asm +++ b/dungeon_map/settings.asm @@ -184,3 +184,6 @@ org $B9FF10 ; c - chests ItemSources: db $09 + +AlwaysShowCompass: + db $01 -- 2.43.0 From 21c6d0acfdbb386df0c2c5cc48c4ab434072a1de Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 4 Jan 2026 12:23:56 -0600 Subject: [PATCH 14/73] Many more supertile tweaks --- LTTP_RND_GeneralBugfixes.asm | 2 + dungeon_map/data/analyze.rb | 4 +- dungeon_map/data/item_mapping.asm | 34 +++++++-------- dungeon_map/data/supertile_shapes.asm | 60 +++++++++++++------------- dungeon_map/hooks.asm | 25 +++++++++-- dungeon_map/main.asm | 6 +-- menu/map_icons.3bpp | Bin 3072 -> 4608 bytes menu/map_icons.pal | Bin 768 -> 768 bytes menu/map_icons_1.3bppc | Bin 813 -> 646 bytes menu/map_icons_2.3bppc | Bin 781 -> 625 bytes menu/map_icons_3.3bppc | Bin 0 -> 775 bytes 11 files changed, 76 insertions(+), 55 deletions(-) create mode 100644 menu/map_icons_3.3bppc diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 6600fab..c186f3a 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -315,6 +315,8 @@ DungeonMapIcons1: incbin "menu/map_icons_1.3bppc" DungeonMapIcons2: incbin "menu/map_icons_2.3bppc" +DungeonMapIcons3: +incbin "menu/map_icons_3.3bppc" MapSheetD4: incbin "menu/map_sheet_d4.3bppc" diff --git a/dungeon_map/data/analyze.rb b/dungeon_map/data/analyze.rb index 8963343..f6ca5c8 100644 --- a/dungeon_map/data/analyze.rb +++ b/dungeon_map/data/analyze.rb @@ -23,8 +23,8 @@ File.open("supertile_shapes.asm", "r") do |file| end puts - for row in 0...8 - printf("%Xx", row) + for row in 0...0xC + printf("%Xx", row + 4) for col in 0...16 printf("%4d", counts[row * 16 + col] || 0) end diff --git a/dungeon_map/data/item_mapping.asm b/dungeon_map/data/item_mapping.asm index 15d228f..c9bbd05 100644 --- a/dungeon_map/data/item_mapping.asm +++ b/dungeon_map/data/item_mapping.asm @@ -2,16 +2,16 @@ db $0B ; 00 - Fighter Sword and Shield db $0B ; 01 - Master Sword db $0B ; 02 - Tempered Sword db $0B ; 03 - Butter Sword -db $05 ; 04 - Fighter Shield -db $05 ; 05 - Fire Shield -db $05 ; 06 - Mirror Shield +db $06 ; 04 - Fighter Shield +db $06 ; 05 - Fire Shield +db $06 ; 06 - Mirror Shield db $0B ; 07 - Fire Rod db $0B ; 08 - Ice Rod db $0B ; 09 - Hammer db $0B ; 0A - Hookshot db $0B ; 0B - Bow db $06 ; 0C - Boomerang -db $0B ; 0D - Powder +db $06 ; 0D - Powder db $02 ; 0E - Bottle Refill (bee) db $0B ; 0F - Bombos db $0B ; 10 - Ether @@ -23,7 +23,7 @@ db $0B ; 15 - Somaria db $0B ; 16 - Bottle db $05 ; 17 - Heartpiece db $06 ; 18 - Byrna -db $0B ; 19 - Cape +db $06 ; 19 - Cape db $0B ; 1A - Mirror db $0B ; 1B - Glove db $0B ; 1C - Mitts @@ -32,8 +32,8 @@ db $0B ; 1E - Flippers db $0B ; 1F - Pearl db $0D ; 20 - Crystal db $06 ; 21 - Net -db $05 ; 22 - Blue Mail -db $05 ; 23 - Red Mail +db $06 ; 22 - Blue Mail +db $06 ; 23 - Red Mail db $03 ; 24 - Small Key db $07 ; 25 - Compass db $05 ; 26 - Heart Container from 4/4 @@ -75,15 +75,15 @@ db $0B ; 49 - Tossed fighter sword db $0B ; 4A - Active Flute db $0B ; 4B - Boots -db $05 ; 4C - Bomb capacity (50) -db $05 ; 4D - Arrow capacity (70) -db $0B ; 4E - 1/2 magic -db $0B ; 4F - 1/4 magic +db $06 ; 4C - Bomb capacity (50) +db $06 ; 4D - Arrow capacity (70) +db $06 ; 4E - 1/2 magic +db $06 ; 4F - 1/4 magic db $0B ; 50 - Safe master sword -db $05 ; 51 - Bomb capacity (+5) -db $05 ; 52 - Bomb capacity (+10) -db $05 ; 53 - Arrow capacity (+5) -db $05 ; 54 - Arrow capacity (+10) +db $06 ; 51 - Bomb capacity (+5) +db $06 ; 52 - Bomb capacity (+10) +db $06 ; 53 - Arrow capacity (+5) +db $06 ; 54 - Arrow capacity (+10) db $02 ; 55 - Programmable item 1 db $02 ; 56 - Programmable item 2 db $02 ; 57 - Programmable item 3 @@ -94,8 +94,8 @@ db $02 ; 5B - Red clock db $02 ; 5C - Blue clock db $02 ; 5D - Green clock db $0B ; 5E - Progressive sword -db $05 ; 5F - Progressive shield -db $05 ; 60 - Progressive armor +db $06 ; 5F - Progressive shield +db $06 ; 60 - Progressive armor db $0B ; 61 - Progressive glove db $02 ; 62 - RNG pool item (single) db $02 ; 63 - RNG pool item (multi) diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 3b0c706..26cb5ac 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -24,7 +24,7 @@ dw $0361, $039A, $C3B2, $83B2 ; 16 - gross (add middle section if feasible) dw $C370, $8370, $4340, $0340 ; 17 dw $C3B5, $FFFF, $43B4, $FFFF ; 18 - useless fairy drop dw $FFFF, $8369, $FFFF, $035A ; 19 -dw $C3AE, $83AF, $43AD, $0361 ; 1A +dw $03E7, $03E8, $03F7, $0361 ; 1A dw $039B, $439C, $4361, $FFFF ; 1B dw $038F, $038F, $037E, $C39B ; 1C dw $C3B2, $83A7, $FFFF, $FFFF ; 1D @@ -36,43 +36,43 @@ dw $FFFF, $FFFF, $4368, $0348 ; 22 dw $FFFF, $FFFF, $FFFF, $039B ; 23 dw $4365, $0365, $0364, $0365 ; 24 dw $FFFF, $FFFF, $FFFF, $FFFF ; 25 - unused -dw $039B, $037C, $4363, $0382 ; 26 +dw $039B, $03E4, $4363, $0382 ; 26 dw $C370, $8370, $4340, $0340 ; 27 dw $C3A5, $FFFF, $4358, $0348 ; 28 dw $FFFF, $FFFF, $FFFF, $0396 ; 29 - Mothula -dw $C350, $8352, $4350, $039E ; 2A -dw $C36A, $FFFF, $434D, $C38D ; 2B +dw $C350, $8352, $4350, $03F8 ; 2A +dw $C36A, $FFFF, $03F9, $C38D ; 2B dw $C340, $8340, $4350, $0350 ; 2C - hookshot cave back dw $FFFF, $FFFF, $FFFF, $FFFF ; 2D - unused dw $FFFF, $838F, $FFFF, $FFFF ; 2E dw $C3B4, $FFFF, $436E, $03B2 ; 2F - Kakariko well dw $C361, $FFFF, $839A, $FFFF ; 30 - inset stairs if possible dw $43B2, $0397, $839B, $C399 ; 31 -dw $C354, $8354, $4384, $0384 ; 32 +dw $43C5, $03C5, $43D5, $03D5 ; 32 dw $FFFF, $FFFF, $438F, $FFFF ; 33 dw $4348, $0368, $4349, $8368 ; 34 -dw $C38D, $83B7, $43B1, $037D ; 35 +dw $C38D, $039B, $43B1, $037D ; 35 dw $C355, $8355, $4355, $0355 ; 36 -dw $C3B7, $838D, $437D, $03B1 ; 37 +dw $439B, $838D, $437D, $03B1 ; 37 dw $C3AC, $FFFF, $43B7, $FFFF ; 38 dw $FFFF, $FFFF, $039B, $03A9 ; 39 -dw $C3A4, $83A4, $4354, $0354 ; 3A - make bespoke if feasible +dw $03C2, $03C3, $43D3, $03D3 ; 3A - make bespoke if feasible dw $C3A5, $FFFF, $43B5, $FFFF ; 3B - inset stairs if feasible dw $C340, $8350, $4340, $0350 ; 3C - hookshot cave front dw $039B, $439B, $0361, $838E ; 3D dw $FFFF, $438F, $43B2, $0373 ; 3E dw $FFFF, $FFFF, $8399, $C399 ; 3F dw $C3A5, $FFFF, $4372, $C399 ; 40 - inset stairs if feasible -dw $C340, $8370, $4354, $0354 ; 41 -dw $C398, $8389, $FFFF, $FFFF ; 42 +dw $03C6, $03C7, $03D6, $03D7 ; 41 +dw $03C8, $03C9, $FFFF, $FFFF ; 42 dw $C3B2, $03B2, $FFFF, $0361 ; 43 dw $038D, $839F, $838D, $039F ; 44 -dw $C3AB, $438F, $4364, $C39B ; 45 +dw $C3AB, $83B4, $4364, $43B7 ; 45 dw $C375, $8375, $4373, $0373 ; 46 dw $FFFF, $FFFF, $FFFF, $FFFF ; 47 - unused dw $FFFF, $FFFF, $FFFF, $FFFF ; 48 - unused dw $839B, $8372, $039B, $0372 ; 49 -dw $0376, $0377, $0386, $4386 ; 4A +dw $03E2, $03E3, $0386, $4386 ; 4A dw $C361, $4391, $4373, $0373 ; 4B dw $FFFF, $83A5, $FFFF, $03B7 ; 4C dw $C350, $8370, $4341, $0340 ; 4D @@ -83,11 +83,11 @@ dw $C354, $8354, $4384, $0384 ; 51 dw $C3B7, $FFFF, $4359, $0348 ; 52 dw $039A, $83B5, $839B, $43B7 ; 53 dw $C390, $8390, $4380, $0340 ; 54 -dw $C340, $8340, $4350, $0340 ; 55 +dw $C340, $8340, $4350, $0340 ; 55 - secret passage dw $038F, $83B4, $4365, $039F ; 56 dw $039B, $438D, $0365, $039B ; 57 dw $C372, $439B, $0383, $0365 ; 58 - split -dw $838A, $8372, $038A, $0372 ; 59 +dw $838A, $8372, $03D1, $0372 ; 59 dw $FFFF, $FFFF, $FFFF, $038F ; 5A - Helmasaur King dw $FFFF, $83B7, $FFFF, $03B5 ; 5B dw $C3B1, $83AA, $FFFF, $838F ; 5C @@ -104,7 +104,7 @@ dw $038F, $039A, $0362, $83B2 ; 66 dw $83B4, $83B5, $03B7, $039F ; 67 dw $C340, $8350, $4341, $0340 ; 68 dw $FFFF, $FFFF, $FFFF, $FFFF ; 69 - unused -dw $FFFF, $838C, $FFFF, $034E ; 6A +dw $FFFF, $03E1, $FFFF, $03F1 ; 6A dw $039A, $0361, $839B, $C39B ; 6B dw $039A, $FFFF, $839B, $0360 ; 6C - Lanmolas 2 dw $0361, $FFFF, $C39B, $FFFF ; 6D @@ -112,16 +112,16 @@ dw $FFFF, $838E, $FFFF, $FFFF ; 6E dw $FFFF, $FFFF, $FFFF, $FFFF ; 6F - unused dw $43BA, $FFFF, $FFFF, $FFFF ; 70 dw $039A, $FFFF, $4365, $438D ; 71 -dw $437A, $037A, $43A1, $0342 ; 72 - slight cheating I guess... +dw $437A, $037A, $8386, $0342 ; 72 - slight cheating I guess... dw $038F, $038F, $839B, $0366 ; 73 dw $43B2, $03B2, $43A8, $03A8 ; 74 dw $038F, $83B4, $0365, $03B5 ; 75 -dw $C36D, $83BC, $436E, $0397 ; 76 +dw $838A, $03F4, $03B7, $C399 ; 76 dw $C370, $8340, $43A0, $03A0 ; 77 dw $FFFF, $FFFF, $FFFF, $FFFF ; 78 - unused dw $FFFF, $FFFF, $FFFF, $FFFF ; 79 - unused dw $FFFF, $FFFF, $FFFF, $FFFF ; 7A - unused -dw $C35E, $83B1, $438F, $038D ; 7B +dw $C35E, $83B1, $438F, $4381 ; 7B dw $C3B7, $83B4, $43B7, $03B7 ; 7C dw $43B2, $835E, $034C, $0391 ; 7D dw $FFFF, $83B7, $4393, $438A ; 7E @@ -144,7 +144,7 @@ dw $FFFF, $838E, $FFFF, $FFFF ; 8E dw $FFFF, $FFFF, $FFFF, $FFFF ; 8F - unused dw $FFFF, $FFFF, $438F, $FFFF ; 90 dw $FFFF, $83A5, $FFFF, $03B7 ; 91 -dw $039B, $C3B7, $0364, $039F ; 92 - should it be split? idk +dw $03D2, $C3B7, $0364, $039F ; 92 dw $C36C, $836C, $C39B, $838F ; 93 dw $FFFF, $FFFF, $FFFF, $FFFF ; 94 - unused dw $FFFF, $83B7, $FFFF, $03B5 ; 95 @@ -160,15 +160,15 @@ dw $FFFF, $439A, $838D, $03B9 ; 9E dw $FFFF, $FFFF, $439B, $FFFF ; 9F dw $839B, $C39C, $FFFF, $FFFF ; A0 dw $C3B0, $835D, $FFFF, $036A ; A1 -dw $C385, $8385, $4356, $0346 ; A2 - show paths somehow +dw $03EE, $03EF, $03FE, $03FF ; A2 dw $C35A, $FFFF, $436A, $FFFF ; A3 dw $FFFF, $FFFF, $438E, $FFFF ; A4 dw $039A, $0361, $C3B2, $83B2 ; A5 dw $C340, $8370, $4340, $0340 ; A6 dw $C396, $FFFF, $FFFF, $FFFF ; A7 - ToH fairy basement room -dw $039B, $83B6, $839B, $03A3 ; A8 +dw $039B, $03E5, $839B, $03F5 ; A8 dw $C357, $8357, $4356, $0356 ; A9 -dw $C34B, $439B, $435B, $C39B ; AA +dw $03E6, $439B, $03F6, $C39B ; AA dw $FFFF, $FFFF, $439A, $FFFF ; AB dw $FFFF, $FFFF, $FFFF, $038F ; AC - Blind dw $FFFF, $FFFF, $FFFF, $FFFF ; AD - unused @@ -179,27 +179,27 @@ dw $0391, $83B5, $434C, $438A ; B1 dw $C35C, $83A2, $039B, $0366 ; B2 dw $0365, $FFFF, $0365, $FFFF ; B3 dw $C350, $8340, $4384, $0384 ; B4 -dw $C370, $8340, $4350, $0340 ; B5 +dw $03DD, $83CF, $83DE, $03CF ; B5 dw $C3A5, $83B4, $43B5, $03B5 ; B6 dw $C3B4, $FFFF, $43B5, $FFFF ; B7 dw $FFFF, $838A, $FFFF, $03B4 ; B8 -dw $C36B, $836B, $4354, $0354 ; B9 +dw $43F3, $03F3, $4354, $0354 ; B9 dw $0364, $438D, $FFFF, $FFFF ; BA dw $838A, $8364, $4372, $0364 ; BB -dw $C3BF, $C38A, $8364, $438A ; BC - block off entrances? +dw $83BE, $C38A, $03D0, $438A ; BC dw $FFFF, $FFFF, $FFFF, $FFFF ; BD - unused dw $FFFF, $439A, $FFFF, $C365 ; BE dw $FFFF, $8396, $438D, $FFFF ; BF dw $C372, $C399, $4372, $C399 ; C0 dw $039B, $0364, $4365, $8364 ; C1 dw $C351, $8353, $4341, $0353 ; C2 -dw $C353, $8340, $4343, $0340 ; C3 - show layers -dw $C384, $8384, $4340, $0341 ; C4 +dw $03E0, $C369, $03F0, $4369 ; C3 - show layers +dw $43C0, $03C0, $4340, $0341 ; C4 dw $C3B5, $FFFF, $438A, $FFFF ; C5 -dw $C350, $8351, $4350, $0351 ; C6 -dw $C351, $8340, $4341, $0340 ; C7 +dw $03DE, $03DF, $83DE, $83DF ; C6 +dw $43DF, $83CF, $03CE, $03CF ; C7 dw $FFFF, $FFFF, $FFFF, $038F ; C8 - Armos Knights -dw $0367, $4367, $0386, $4386 ; C9 +dw $03F2, $43F2, $0386, $4386 ; C9 dw $FFFF, $FFFF, $FFFF, $FFFF ; CA - unused dw $C340, $8343, $4354, $0347 ; CB dw $C353, $8350, $4347, $0354 ; CC diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index ff36c39..dc22336 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -3,15 +3,34 @@ org $8AEE75 db $08 ; change dungeon map subsheet gfx in TR -org $80DDC9 -db $57 +; org $80DDC9 +; db $57 + +; dungeon map sheets +org $80DD97 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 +db $61, $56, $57, $62 ; Dungeon Map Palettes 2-5 left half org $9BE544 dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7 org $9BE564 -dw $0000, $5565, $7FFF, $331C, $0000, $0000, $7EB5, $1CE7 +dw $0000, $5565, $7FFF, $331C, $0000, $0000, $7E27, $0C63 org $9BE584 dw $0000, $4100, $7FFF, $2656, $4100, $0000, $4100, $4100 diff --git a/dungeon_map/main.asm b/dungeon_map/main.asm index abff472..b7bd7eb 100644 --- a/dungeon_map/main.asm +++ b/dungeon_map/main.asm @@ -17,12 +17,12 @@ endmacro %WriteGFXSheetPointer($C9, DungeonMapIcons1) %WriteGFXSheetPointer($CA, DungeonMapIcons2) +%WriteGFXSheetPointer($D5, DungeonMapIcons3) -%WriteGFXSheetPointer($D5, DungeonMapIcons1) -%WriteGFXSheetPointer($D6, DungeonMapIcons2) +; %WriteGFXSheetPointer($D6, DungeonMapIcons2) ; TR is such a problem child -%WriteGFXSheetPointer($A6, DungeonMapIcons2) +; %WriteGFXSheetPointer($A6, DungeonMapIcons2) %WriteGFXSheetPointer($D4, MapSheetD4) diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index 17236f1288fc21aad4a09fc98350ba6321caa15d..8f3f12381c12e7fca2f29e2d7dbb5f92ce4506bb 100644 GIT binary patch literal 4608 zcmcIo!HOG45G_lK_mV^KsaczBFoX8G_!NWK9cB&w1!Et)IAV0kA@|rlO7aIe;mip7Aiq%GtrejNd*@QY3b5pWVcVk)LHoyqzy` z^0Uk~`58uj4DZ?-Kjx<$V;cSYeA7R1`nNoG?TvrpeW;DVyh~lHy(gcIPNkR`pPTqP z;^nB43Opu7Ud{^0$M~do<6p-Oy@LbPTZLHKap7mqabtcPd+@CG8~B93THME3)tX=N zbCJ0h=DpP+^3FKRY>4<<1wPIpW8iHxj5Avr5A>7r!dYfz>pwlg(NI^t-i-dc_QYvl zW(;||bn9e_d08IY7|AzzKFjknud#RMW&H2<-!W3Z9jJ!y^9}nSRJmxMJVt3nrf^PU#;$&ck;B z-x$yA$rIhDbX>$jCC+$Sj1WaZ{brU|?X_;3T7jX~EqS)c@frDNhKV=)#Cq=V6QjAx zPd6{dr||~d@t(zReuDgjivCSi&kw#jKmV5Jf$hTiwE5+HnP26snU$a96RS_I$L&($ zB*4{9UAl$y7dM@|>7Q=5?y#f$wEKI9W#xxiv3;<)6M0K`!?X6W#DD4ohjNHatkL)S z^5^I-ib%~t=4*nRdZ%I@{m;UW4-Jg5il+TC>;_iQGAPooco{{3}|MJ$}_1=dg8ZtzGzI*MiP``m@M+3;w(Gbr+pF9`pEoinFK^BW$elTuS%O+1z ze3!uHyrH%)5Ql$f{u!&R>3?spFV(eJpQuwklEP61-{?op&L%R2Z|h6DBKm*u>a;qo zPwPYIDdVZC`tY!>B&<6MJeZ)fmnkp!hCJH&Q!C^LF=bs9#r=Et?l=7qb3H>wQUBa` zsxrGJUuph~&8aNn`E%E-G}kEyld1GPXv^~{*-w1(JI^M}%R1S{>r*w)^IiTwKaMC* zt0VGFm1;b$AbLJOYVmBGaGVns^$Mz)$d;F@RUJZSy&w-#+j)Cl5Ao|&@k)|rmoHSv z&NKH+s1?>i&-V8L>P>!kzw;A+YrJn3MX#{;)3@1Mp`I{b;g=gX{vM!THR}<6&JXRq zXvG_m`yuzFNJyIOy8Hme=^n_50>F@sKf_A=bl8-y=Rh|GP%eyqr|f`UE6a z9uhz;B3y^3VH8I72zc?B4giR!hjb$*P0cB&6AMil98}S$TZu83b z6ND7DF<3`EoPQ|@WBkB(1Btp00=xsQKkY9J>)Nd>$O_Lf3; zZQj5=rLBVl5dK-2e_W7?-m&D6rFGlaV^d-}CJX;^6hbBp^;_yEHH-6&XNbuSPUt*K zy_Wu+OJ)yso$^lK0Zjju4j)X4cLPU*|z}nZT6sY49CMAqohrRJvAscDWI+TfGi(Gci7jnL(a5~hR_l~+ OBU77EJTmoSV(S|{4%UzW diff --git a/menu/map_icons.pal b/menu/map_icons.pal index 0becfb6c06288654d0fda8cd39c01c6af9573a82..730343a0a7a526b8b5905bfd5d77b4c2cfe7b130 100644 GIT binary patch delta 12 TcmZo*YhasT$mqY(=o}LO7vuxc delta 12 TcmZo*YhasT$hdT)(K#jn8IlAi diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index 97c583d9b261e74a7ff6a92bf9d61546416076a9..ec1a49011f3d9e8cda45726e0b195969003c4a7f 100644 GIT binary patch delta 307 zcmW;Gy-LGS7zW_?J73~Z1i?WLK@{66QY|P*T@*qNNJX(w5T%oYh`6949Bd7dX?`}TZs6ZRG~GN_Rh8FU_Y(eFD>KU}3@88^V) z33XoU+hLxP4UpG29@?(JIIaouPgQ_j4F+6Q@VXUJ8O##JFR&d)Xg9d-{9)Q8IaS4X zR3TdrfPs$Y(O2=<}HOJ;cJoLC#<>*tGV@}Sf z{6E0&AS_Yj3MI2>g~;>LBe8He!)<}fHLE2NCzdJUzRJUOgbviZjO(y7mXfo51ZK?P j2Zud2%U0(LN<;aQv^0|}yhh{Eh_K4ZET}k2b6ofVhIv@a delta 489 zcmWlW&ubGw9L3*vX19oqr(A}mG>|M2bE-Xf&`_5h`@^V2iiglZ4=U4x{t0HbbaqzT zC1}l|cTZmY6AU2%PvRd?LBvA}9=v!o%(}fj-r@22@G}3?(!0UFJP>ptwmA+W*Tj1ILNtxORKaLs%a2R^*top1(vmFBa$;{a$4fqlie zj3Q}oQNF_MA%n`!NTPVd7%K{H_W6!O`j^=rH!T_-k$uc)9$sRj#4fv3krXcLlU=8d z1H{`3wj4(PsG6)^YQJ9dP6V>tvn`zMaPyJVKx_`+C%6ly(-ue5tbvWi*xc~b7w{t; z$1JvEPyu-%vR(L&3&Gt(BzD2gZ%!&qC&1z97Z~vD2|?Hjw@<0`yYlDdH~c8C+Nhe( W*Xt;cshE<8vg-ZyN^@= diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index c797bffb31514645bd2645e4c4f9e0cba5e87935..a0eda2082e4b477b07c4519da06dae8c686aab54 100644 GIT binary patch delta 404 zcmWlVPfHt76vfYdlM%(PiqMB*f@IuE5KLMqGWY@s33gRdiBL+=!G(0uO*iF5xbrt* zM9D_!svn?Vpc{p_Dy6F~LRN)_bWsrNvW1K@o6G&d;huX=Joh(u<{brJumz=2>%w~p zQ`xq1tc;V4F?9Fw4E=lX6R;q*P}hLu4G?s3hx63bh+b25234Ac3!u%-Ut8$p96H8f|4%OZ^(f6I0}_bUR^ivsPYANxi+xrLxZcf~RK z8#%v4r=N)DbCjT(NVlk9TFy|)q5p!y_eMW242`Ze*rqLHGF^(^QfAvBf6sLHP5;1j Q{|lDr|1i@sy?-Kk0A_)Fg8%>k delta 481 zcmW-eO>5Lp7=_P!@6C*eF06=Gs|HCFK_~-4yAc@@JFSjgDy1S*q-44n?4~2wB%0dXbxA6&T*B@4g06p^k(ODgz*f(sc-(pxt#&+6fv^Zpjy(u3%5@(i^ccoc0S z8tEtIrQ{&7!YkBGAhlL$$5s-_AE@I{jFgROACPJc1mAMtg%fnG|LXJ!HaF))C87Xs zQ$`L6$8l$8;~DDzID5)Q-AD41;*W?qk__t_-XR%5Ef`#+O4BVc`46nXuDU}8FAGuL z?v+VBCv}p-x3os!e!JQ}$CzJzaRWKuMb)>M@D@CoP0O7lncSBC)~J-D{>r@Bl$mr( ze-Gujg3D;!-Wm=+pYJsWeL5pEs0t;F|qcEdQT``6s{~n3x@5bQr1(waCCumJhfz4t7^sIIf_>2vEZuRRvRCH gR`)6AKKx2@kI444eSJ~HN5y_biOzdNe@1h$2jz601ONa4 diff --git a/menu/map_icons_3.3bppc b/menu/map_icons_3.3bppc new file mode 100644 index 0000000000000000000000000000000000000000..60800b000c166f30109536a971290be6cc7fddcc GIT binary patch literal 775 zcmWlXziSjh7>3_(X5->dG}R)(!0mYVCq!YnTXy!co`|+W5G{_q!p2fD&Ya912#R28 zJ4vhl0V+!lI~y$%u?Wkh6S0s(ml-GB%*!|Myw5khMm?3kAX`X_uudPGUkgsK4Xh*> z;3^HTLS6xhUfd0Py#y^@PlvA|*L>E*V``cWjA{%mM9LLoxCu_+ml5mjoT)gYvTLSb zpQ2A@#LvKb>#52zmX%}khv=sm{sj8wBdyq-)z#nK>KzphfyTXcRIiBS-PuDf!zGUL zXc0oqm&=3wi_d-b1G8tG4m;*OkrjSxvk%1g7~3;%>DP9~^1de5H&1!2$hztevDR)& zJ3i~ip4lo@mJ Date: Sun, 4 Jan 2026 23:02:21 -0600 Subject: [PATCH 15/73] Supertile shapes, small fixes --- dungeon_map/data/supertile_shapes.asm | 14 ++++----- dungeon_map/draw_loot.asm | 14 +++++++++ dungeon_map/dungeon_switch.asm | 30 ++++++++++++++++++-- dungeon_map/hooks.asm | 11 ++++++++ hooks.asm | 6 ++-- menu/map_icons.3bpp | Bin 4608 -> 4608 bytes menu/map_icons_1.3bppc | Bin 646 -> 640 bytes menu/map_icons_2.3bppc | Bin 625 -> 623 bytes menu/map_icons_3.3bppc | Bin 775 -> 809 bytes newhud.asm | 39 ++++++++++++++++---------- 10 files changed, 87 insertions(+), 27 deletions(-) diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 26cb5ac..9ff9c2f 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -28,7 +28,7 @@ dw $03E7, $03E8, $03F7, $0361 ; 1A dw $039B, $439C, $4361, $FFFF ; 1B dw $038F, $038F, $037E, $C39B ; 1C dw $C3B2, $83A7, $FFFF, $FFFF ; 1D -dw $FFFF, $43B8, $8399, $0366 ; 1E +dw $FFFF, $4391, $8399, $0366 ; 1E dw $FFFF, $FFFF, $4360, $C399 ; 1F dw $FFFF, $FFFF, $438F, $FFFF ; 20 dw $4348, $0363, $C348, $8368 ; 21 @@ -55,7 +55,7 @@ dw $C38D, $039B, $43B1, $037D ; 35 dw $C355, $8355, $4355, $0355 ; 36 dw $439B, $838D, $437D, $03B1 ; 37 dw $C3AC, $FFFF, $43B7, $FFFF ; 38 -dw $FFFF, $FFFF, $039B, $03A9 ; 39 +dw $FFFF, $FFFF, $039B, $0381 ; 39 dw $03C2, $03C3, $43D3, $03D3 ; 3A - make bespoke if feasible dw $C3A5, $FFFF, $43B5, $FFFF ; 3B - inset stairs if feasible dw $C340, $8350, $4340, $0350 ; 3C - hookshot cave front @@ -92,14 +92,14 @@ dw $FFFF, $FFFF, $FFFF, $038F ; 5A - Helmasaur King dw $FFFF, $83B7, $FFFF, $03B5 ; 5B dw $C3B1, $83AA, $FFFF, $838F ; 5C dw $039B, $C399, $0361, $FFFF ; 5D -dw $FFFF, $43B8, $839C, $0366 ; 5E +dw $FFFF, $4391, $839C, $0366 ; 5E dw $FFFF, $FFFF, $43BB, $FFFF ; 5F dw $FFFF, $8379, $FFFF, $036A ; 60 dw $C387, $8385, $4356, $0356 ; 61 dw $C346, $8354, $4352, $0340 ; 62 dw $039A, $FFFF, $0361, $FFFF ; 63 dw $FFFF, $FFFF, $8399, $C3B1 ; 64 -dw $FFFF, $FFFF, $83B1, $03A9 ; 65 +dw $FFFF, $FFFF, $83B1, $0381 ; 65 dw $038F, $039A, $0362, $83B2 ; 66 dw $83B4, $83B5, $03B7, $039F ; 67 dw $C340, $8350, $4341, $0340 ; 68 @@ -138,7 +138,7 @@ dw $FFFF, $FFFF, $FFFF, $FFFF ; 88 - unused dw $C3B0, $83B0, $FFFF, $FFFF ; 89 dw $FFFF, $FFFF, $FFFF, $FFFF ; 8A - unused dw $838A, $0360, $038A, $438D ; 8B -dw $83BE, $83BF, $03BD, $03B8 ; 8C +dw $83BE, $83BF, $03BD, $0391 ; 8C dw $0360, $C38A, $038D, $438A ; 8D dw $FFFF, $838E, $FFFF, $FFFF ; 8E dw $FFFF, $FFFF, $FFFF, $FFFF ; 8F - unused @@ -178,7 +178,7 @@ dw $039B, $C399, $839B, $C399 ; B0 dw $0391, $83B5, $434C, $438A ; B1 dw $C35C, $83A2, $039B, $0366 ; B2 dw $0365, $FFFF, $0365, $FFFF ; B3 -dw $C350, $8340, $4384, $0384 ; B4 +dw $03DE, $83CF, $03CC, $03CD ; B4 dw $03DD, $83CF, $83DE, $03CF ; B5 dw $C3A5, $83B4, $43B5, $03B5 ; B6 dw $C3B4, $FFFF, $43B5, $FFFF ; B7 @@ -204,7 +204,7 @@ dw $FFFF, $FFFF, $FFFF, $FFFF ; CA - unused dw $C340, $8343, $4354, $0347 ; CB dw $C353, $8350, $4347, $0354 ; CC dw $FFFF, $FFFF, $FFFF, $FFFF ; CD - unused -dw $FFFF, $83B8, $FFFF, $FFFF ; CE - Kholdstare drop +dw $FFFF, $8391, $FFFF, $FFFF ; CE - Kholdstare drop dw $FFFF, $FFFF, $FFFF, $FFFF ; CF - unused dw $C372, $C399, $4372, $C399 ; D0 dw $C38E, $838F, $4381, $C38D ; D1 diff --git a/dungeon_map/draw_loot.asm b/dungeon_map/draw_loot.asm index 17975eb..73b2b6e 100644 --- a/dungeon_map/draw_loot.asm +++ b/dungeon_map/draw_loot.asm @@ -7,6 +7,20 @@ RedrawLoot: RTL FirstDrawLoot: + LDA.b #$FF + STA.w $0215 + LDA.b #$80 + STA.w $0216 + STA.w $0218 + LDA.l DRMode + BEQ + + LDA.w DungeonID + ASL A + TAX + LDA.l DungeonMapData.floor, X + STA.b $A4 ++ + ; what we wrote over LDA.b #$08 STA.b $17 diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm index e0ea125..c85998c 100644 --- a/dungeon_map/dungeon_switch.asm +++ b/dungeon_map/dungeon_switch.asm @@ -68,6 +68,8 @@ DungeonMapSwitch_Submodule: SkipMapSprites: STZ.b $00 + LDA.l DRMode + BNE + LDA.w $0200 CMP.b #$04 BEQ + @@ -81,7 +83,14 @@ SkipMapSprites: CMP.b #$04 BNE + JML $8AEAFC -+ LDA.l $7EC22A ++ + + LDA.l DRMode + BEQ + + JML $8AEAEE ++ + + LDA.l $7EC22A CMP.w DungeonID BEQ + JML $8AEAF3 @@ -103,7 +112,7 @@ RestoreCurrentDungeon: LDA.l $7EC22A STA.w DungeonID LDA.l $7EC22B - STA.b $4A + STA.b $A4 RTL RestoreDungeonMapFloorIndex: @@ -145,3 +154,20 @@ DrawDungeonLabel: INC.w $020D ; what we wrote over RTL + +CountFloors: + ADC.w $8AF605, Y + STA.b $04 + LDY.w #$0000 + RTL + +CheckIfRoomFound: + CPY.w #$0032 + BCS .not_found + LDA.b ($04), Y + INY + CMP.b $0E + JML $8AE877 + +.not_found + JML $8AE8CD diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index dc22336..e35c55f 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -25,6 +25,9 @@ db $61, $56, $57, $62 db $61, $56, $57, $62 db $61, $56, $57, $62 +org $81EAF8 +dw $00F0 ; mark the chest data in GT climb as being part of unused room + ; Dungeon Map Palettes 2-5 left half org $9BE544 dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7 @@ -96,6 +99,14 @@ org $8AE1EC PLB JML DrawDungeonLabel +org $8AE86A + JSL CountFloors + NOP #2 + +org $8AE872 + JML CheckIfRoomFound + NOP + ;================================================================================ ; Show indicators of what is left in each room ;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index bce99cf..c380407 100755 --- a/hooks.asm +++ b/hooks.asm @@ -840,10 +840,10 @@ JSL LoadModifiedIceFloorValue_a01 : NOP org $83FC16 ; <- 1FC16 ($A8, $B8, $3D, $D0, $B8, $3D) db $B1, $C6, $F9, $C9, $C6, $F9 ; data insert - 2 chests, fat fairy room -; unused item receipts +; unused item receipts - moved to pyramid fairy org $81E97E -dw $0116 : db $08 -dw $0116 : db $25 +dw $0116 : db $5E +dw $0116 : db $64 ;-------------------------------------------------------------------------------- org $86B489 ; <- 33489 - sprite_smithy_bros.asm : 473 (LDA $7EF359 : CMP.b #$03 : BCS .tempered_sword_or_better) JML GetSmithSword : NOP #4 diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index 8f3f12381c12e7fca2f29e2d7dbb5f92ce4506bb..898dec61c81681cbe8f6987749860be153a1f098 100644 GIT binary patch delta 106 zcmZorX;9ga$HM$f;@Rdx7GY-Qa|Y)ox3jx5&r6uM`69bDBg;RA0}Pu5IQ^KIpG!R7 zoXEYOadH4Ji%z{g5Gnv6BQrxi5F{kjG5`Amg*E?b{xuw6_y+`ab#(_e2k>rS0RWj} BFMR+2 delta 65 zcmV-H0KWf#B!DEaZUh7V82+!APzo@UAPoewR1K^IL#P+{ diff --git a/menu/map_icons_1.3bppc b/menu/map_icons_1.3bppc index ec1a49011f3d9e8cda45726e0b195969003c4a7f..a0b7e6118819a14fa4ba452387d59c8f45867ce1 100644 GIT binary patch delta 42 wcmZo;ZD8H-kWsEziILICsnv+l>mLJyL_ZIM8<3vS&BM@|!O~tgnU$##00ssOEdT%j delta 48 zcmZo*ZDZZ=kWr<@fyr6oUyC*)qmxss5u?{X1_p_K9tJlcJ)@h4p)G@@t$y-<#zp{W C)(=bo diff --git a/menu/map_icons_2.3bppc b/menu/map_icons_2.3bppc index a0eda2082e4b477b07c4519da06dae8c686aab54..6bce49614b891739f7c6d866c9b6f0961fd4d4c3 100644 GIT binary patch delta 109 zcmV-z0FwXl1n&fp%qK(s07K3&i3k7zGBSr000DjgLuMF=asdHaT7+c*nb-gY{s5j} zo{{r(3xgT}ivR!sz=jV1lXL-80{#M%$^l;nL+2QU@&c1D0x21VSOrA?0EQC;h57=6 P7yygZ1pxqlh57>j-5n(i delta 111 zcmV-#0FeLh1n~rr%qK+t07EeThzS4zGBSr000DjgLuMF=asdHaT7+c*nb-gY{s8`9 z{*m)^4TQ=8hyeftet$@k z0Uwhw0q+NcKLHSA{$!IV0>m8y00RL3gG&JgetrS~|Nlv3{saL00RLwsW&mXWv$`Pc delta 59 zcmV-B0L1^P28RZalLB1;k+z!wPm@vs?+60?{(M9JWDS!@0>m2x00RL3{v>__0s#O2 RNo4*60Q>;|XC!6-WdEmG7h3=T diff --git a/newhud.asm b/newhud.asm index 18be445..0db99c9 100644 --- a/newhud.asm +++ b/newhud.asm @@ -152,14 +152,23 @@ NewHUD_DrawDungeonCounters: ;================================================================================ NewHUD_DrawPrizeIcon: - REP #$10 - SEP #$20 + REP #$10 + SEP #$20 LDA.b GameMode - CMP.b #$12 : BEQ .no_prize - CMP.b #$0E : BEQ + - LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter - + - LDA.w DungeonID + CMP.b #$12 : BEQ .no_prize + CMP.b #$0E : BNE .check_hud_flag + LDA.b GameSubMode + CMP.b #$03 : BNE .check_dungeon + LDA.w SubModuleInterface + CMP.b #$06 : BNE .check_hud_flag + LDA.l $7EC22A + BRA .know_dungeon + +.check_hud_flag + LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter +.check_dungeon + LDA.w DungeonID +.know_dungeon CMP.b #$1A : BCS .no_prize CMP.b #$04 : BCC .no_prize CMP.b #$08 : BNE .dungeon @@ -176,19 +185,19 @@ NewHUD_DrawPrizeIcon: LDA.l MapMode REP #$30 - BEQ .prize + BEQ .prize LDA.w MapField AND.l DungeonItemMasks,X BEQ .no_prize - .prize - TYX - LDA.l CrystalPendantFlags_3,X : AND.w #$00FF - ASL : TAX - LDA.l PrizeIconTiles_Transparent,X : BEQ .no_icon - TAY - BRA .draw_prize + .prize + TYX + LDA.l CrystalPendantFlags_3,X : AND.w #$00FF + ASL : TAX + LDA.l PrizeIconTiles_Transparent,X : BEQ .no_icon + TAY + BRA .draw_prize .pendant LDY.w #!PTile -- 2.43.0 From d918e571ab4d8f314420c94b922b06881bbc9fb8 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Mon, 5 Jan 2026 06:06:02 -0600 Subject: [PATCH 16/73] Rearrange some tiles --- dungeon_map/data/supertile_shapes.asm | 10 +++++----- menu/map_icons.3bpp | Bin 4608 -> 4608 bytes menu/map_icons_3.3bppc | Bin 809 -> 807 bytes 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dungeon_map/data/supertile_shapes.asm b/dungeon_map/data/supertile_shapes.asm index 9ff9c2f..0fe27ef 100644 --- a/dungeon_map/data/supertile_shapes.asm +++ b/dungeon_map/data/supertile_shapes.asm @@ -64,7 +64,7 @@ dw $FFFF, $438F, $43B2, $0373 ; 3E dw $FFFF, $FFFF, $8399, $C399 ; 3F dw $C3A5, $FFFF, $4372, $C399 ; 40 - inset stairs if feasible dw $03C6, $03C7, $03D6, $03D7 ; 41 -dw $03C8, $03C9, $FFFF, $FFFF ; 42 +dw $03E9, $03EA, $FFFF, $FFFF ; 42 dw $C3B2, $03B2, $FFFF, $0361 ; 43 dw $038D, $839F, $838D, $039F ; 44 dw $C3AB, $83B4, $4364, $43B7 ; 45 @@ -178,8 +178,8 @@ dw $039B, $C399, $839B, $C399 ; B0 dw $0391, $83B5, $434C, $438A ; B1 dw $C35C, $83A2, $039B, $0366 ; B2 dw $0365, $FFFF, $0365, $FFFF ; B3 -dw $03DE, $83CF, $03CC, $03CD ; B4 -dw $03DD, $83CF, $83DE, $03CF ; B5 +dw $03FA, $83FD, $03EC, $03ED ; B4 +dw $03EB, $83FD, $83FA, $03FD ; B5 dw $C3A5, $83B4, $43B5, $03B5 ; B6 dw $C3B4, $FFFF, $43B5, $FFFF ; B7 dw $FFFF, $838A, $FFFF, $03B4 ; B8 @@ -196,8 +196,8 @@ dw $C351, $8353, $4341, $0353 ; C2 dw $03E0, $C369, $03F0, $4369 ; C3 - show layers dw $43C0, $03C0, $4340, $0341 ; C4 dw $C3B5, $FFFF, $438A, $FFFF ; C5 -dw $03DE, $03DF, $83DE, $83DF ; C6 -dw $43DF, $83CF, $03CE, $03CF ; C7 +dw $03FA, $03FB, $83FA, $83FB ; C6 +dw $43FB, $83FD, $03FC, $03FD ; C7 dw $FFFF, $FFFF, $FFFF, $038F ; C8 - Armos Knights dw $03F2, $43F2, $0386, $4386 ; C9 dw $FFFF, $FFFF, $FFFF, $FFFF ; CA - unused diff --git a/menu/map_icons.3bpp b/menu/map_icons.3bpp index 898dec61c81681cbe8f6987749860be153a1f098..4a9ef3355f1c725dfdeaad1ab0cb236dd4201609 100644 GIT binary patch delta 80 zcmZorX;9g4fM>EJU*+TgKKIQHyjF}rhTCKXMwZDe{8uI);4u=bXQ;QYR|jG+WT;P1 duLpw33cLoJ0|XQpCtu(*m>j@sF!_R@0RT7e8jt`0 delta 75 zcmZorX;9g4fM@azexu1Eta_6b1PmrG5H#4_z-z@QR?kpxU#||tV8~FPo?Z_GlM4h5 YCh^~xe2}MVbC7@>Bao3e`J$jc0M=?6mjD0& diff --git a/menu/map_icons_3.3bppc b/menu/map_icons_3.3bppc index 94dce33e03335ea0f08fb7959dcf91c810c63be3..1c4d1e752364809fd911c47af22d634c05e4909c 100644 GIT binary patch delta 267 zcmWlTy-LGS7>3{T)6`ypP6o`ey@`-hNH7G!!D}eV(7_v!e3er=IasO-mSdrH`vSRrzntn-16i9nnp7bt40IpD-2(ju8eC83 z->(gJ8}VQ#dnxy&Q6NzeB%sz4339_;`J>!J0ZkoA*Q*hMEX{JV!@H^s<(9Vh$A_B( zoh2kVaW^Weh3ECJa8~a!`FthII8H(7jLs~z`pZmEmjyB~4thYscu%}tQ|S8m-6-Cf1SCvYfT zTuT+eXMdFnoQAFf87Akbi%GBluVGzL3{TKL_G|3_;ZDOaHy;grql zjrRK)8xoUC2;;WcVU{oy#<_0>IPeZ40k!i}h9T#^-9cvX@GV=i%ND Date: Mon, 5 Jan 2026 19:30:49 -0600 Subject: [PATCH 17/73] WIP --- dungeon_map/draw_loot.asm | 115 +++++++++++++---- dungeon_map/draw_rooms.asm | 21 ++- dungeon_map/dungeon_switch.asm | 92 +++++++++++--- dungeon_map/hooks.asm | 43 +++++-- dungeon_map/main.asm | 1 + dungeon_map/map_bg3.asm | 155 ++++++++++++++++------ dungeon_map/mappable_doors.asm | 226 +++++++++++++++++++++++++++++++++ dungeon_map/settings.asm | 8 +- menu/map_icons.3bpp | Bin 4608 -> 4608 bytes menu/map_icons_3.3bppc | Bin 807 -> 947 bytes ram.asm | 5 + 11 files changed, 572 insertions(+), 94 deletions(-) create mode 100644 dungeon_map/mappable_doors.asm diff --git a/dungeon_map/draw_loot.asm b/dungeon_map/draw_loot.asm index 73b2b6e..0fcf018 100644 --- a/dungeon_map/draw_loot.asm +++ b/dungeon_map/draw_loot.asm @@ -54,7 +54,7 @@ DrawLoot: LDX.w GFXStripes LDA.b #$FF - STA.w GFXStripes+2, X + STA.w GFXStripes+$02, X LDA.b #$01 STA.b NMISTRIPES @@ -66,35 +66,68 @@ DrawLoot: DrawSingleFloorLoot: REP #$20 AND.w #$00FF + INC A + ASL A + CLC : ADC.l DungeonMapMode ASL A TAX - LDA.l DungeonMapFloorToDataOffset, X + LDA.l MapDrawingData_floor_data_offset, X + DEC A TAY - STZ.b $06 + + LDA.l DungeonMapMode + ASL A + TAX + + SEP #$20 + LDA.l MapDrawingData_column_count, X + DEC A + STA.b $06 + + LDA.l MapDrawingData_row_count, X + DEC A + STA.b $07 .next_row REP #$20 LDA.w GFXStripes TAX - CLC : ADC.w #$0030 + CLC : ADC.w #$0034 STA.w GFXStripes + PHX + LDA.l DungeonMapMode + ASL A + TAX + + SEP #$20 LDA.b $07 + CPX.w #$0002 + BNE + + ASL A ++ + CLC : ADC.b $07 + REP #$20 AND.w #$00FF - XBA - LSR A : LSR A - CLC : ADC.w #$1092 + ASL #5 + + CLC : ADC.l MapDrawingData_bg1_grid_start, X ADC.b $0E XBA - STA.w GFXStripes+2, X + PLX + STA.w GFXStripes+$02, X CLC : ADC.w #$2000 - STA.w GFXStripes+$1A, X - - LDA.w #$1300 - STA.w GFXStripes+$04, X STA.w GFXStripes+$1C, X + LDA.w #$1500 + STA.w GFXStripes+$04, X + STA.w GFXStripes+$1E, X + + TXA + CLC : ADC.w #$0018 + TAX + .next_room REP #$20 LDA.b ($0C), Y ; get room id @@ -115,29 +148,59 @@ DrawSingleFloorLoot: TAX LDA.l LootTypeIcons+0, X - STA.w GFXStripes+$06, Y + STA.w GFXStripes+$00, Y LDA.l LootTypeIcons+2, X - STA.w GFXStripes+$08, Y + STA.w GFXStripes+$02, Y LDA.l LootTypeIcons+4, X - STA.w GFXStripes+$1E, Y + STA.w GFXStripes+$1A, Y LDA.l LootTypeIcons+6, X - STA.w GFXStripes+$20, Y + STA.w GFXStripes+$1C, Y TYX PLY - INY : INX #4 + DEY : DEX #4 + + LDA.l DungeonMapMode + CMP.w #$0001 + BNE + + LDA.b $06 + AND.w #$00FF + BEQ + + + ; skip a column if in 4x3 mode and it's not the last column + LDA.w #$0300 + STA.w GFXStripes+$02, X + STA.w GFXStripes+$1C, X + DEX : DEX ++ SEP #$20 - INC.b $06 - LDA.b $06 - CMP.b #$05 - BCC .next_room + DEC.b $06 + BPL .next_room + + LDA.l DungeonMapMode + CMP.b #$01 + BEQ + + ; draw an extra empty tile at the end to make up for width differences between modes + LDA.b #$03 + STZ.w GFXStripes+$02, X + STA.w GFXStripes+$03, X + STZ.w GFXStripes+$1C, X + STA.w GFXStripes+$1D, X ++ + + DEC.b $07 + BMI .done + + LDA.b #$00 + XBA + LDA.l DungeonMapMode + ASL A + TAX + LDA.l MapDrawingData_column_count, X + DEC A + STA.b $06 - STZ.b $06 - INC.b $07 - LDA.b $07 - CMP.b #$05 - BCS .done JMP .next_row .done diff --git a/dungeon_map/draw_rooms.asm b/dungeon_map/draw_rooms.asm index 27c83d3..66285ac 100644 --- a/dungeon_map/draw_rooms.asm +++ b/dungeon_map/draw_rooms.asm @@ -1,5 +1,24 @@ +DrawNonexistentRoom: + REP #$20 + LDA.w #$0F00 + STA.l $7F0000, X + STA.l $7F0002, X + STA.l $7F0040, X + STA.l $7F0042, X + +FinishRoom: + PHX + LDA.l DungeonMapMode + ASL A + TAX + PLA + CLC : ADC.l MapDrawingData_column_spacing, X + TAX + JML $8AE7F6 + ; $CA has room_id DrawDungeonMapRoom: + REP #$20 PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank LDA.b $0A : PHA @@ -111,7 +130,7 @@ DrawDungeonMapRoom: .done PLA : STA.b $0A PLB - RTL + JMP FinishRoom DrawEntrances: REP #$30 diff --git a/dungeon_map/dungeon_switch.asm b/dungeon_map/dungeon_switch.asm index c85998c..1c50600 100644 --- a/dungeon_map/dungeon_switch.asm +++ b/dungeon_map/dungeon_switch.asm @@ -29,13 +29,8 @@ CheckSwitchMap: RTL DungeonMapSwitch_Submodule: -; LDA.b $9B -; STA.l $7EC229 - JSL $80893D JSL $80833F -; LDA.l $7EC229 -; STA.b $9B LDA.b #$09 STA.b $14 @@ -51,11 +46,20 @@ DungeonMapSwitch_Submodule: STZ.b $07 LDA.w DungeonID + CMP.l CachedDungeonID + BEQ .current_dungeon + ASL A TAX LDA.l DungeonMapData.floor, X - STA.b $A4 + STA.b CurrentFloor + BRA .continue +.current_dungeon + LDA.l CachedCurrentFloor + STA.b CurrentFloor + +.continue REP #$20 STZ.b $E0 STZ.b $E2 @@ -90,7 +94,7 @@ SkipMapSprites: JML $8AEAEE + - LDA.l $7EC22A + LDA.l CachedDungeonID CMP.w DungeonID BEQ + JML $8AEAF3 @@ -100,19 +104,19 @@ CacheCurrentDungeon: STA.l $7EC206 SEP #$20 LDA.w DungeonID - STA.l $7EC22A - LDA.b $A4 - STA.l $7EC22B + STA.l CachedDungeonID + LDA.b CurrentFloor + STA.l CachedCurrentFloor REP #$20 RTL RestoreCurrentDungeon: LDA.b #$F3 STA.w $012C ; what we wrote over - LDA.l $7EC22A + LDA.l CachedDungeonID STA.w DungeonID - LDA.l $7EC22B - STA.b $A4 + LDA.l CachedCurrentFloor + STA.b CurrentFloor RTL RestoreDungeonMapFloorIndex: @@ -155,19 +159,67 @@ DrawDungeonLabel: INC.w $020D ; what we wrote over RTL -CountFloors: - ADC.w $8AF605, Y - STA.b $04 - LDY.w #$0000 +StartCurrentRoomSearch: + LDA.w $8AF5E9, X ; dungeon map floor count data + LSR A : LSR A : LSR A : LSR A + STA.b $00 + LDA.w $8AF5E9, X + AND.b #$0F + CLC : ADC.b $00 + ASL A + TAY RTL -CheckIfRoomFound: - CPY.w #$0032 +FindCurrentRoom: + PHX + TYA + CLC : ADC.l DungeonMapMode + ASL A + TAX + LDA.l MapDrawingData_floor_data_offset, X + STA.b $0C + LDY.w #$0000 + + LDA.l DungeonMapMode + ASL A + TAX + + SEP #$20 + +.next_room_check + CPY.b $0C BCS .not_found + LDA.b ($04), Y INY CMP.b $0E - JML $8AE877 + BEQ .found + + LDA.b $00 + CMP.l MapDrawingData_floor_pixel_column_wrap, X + BCS .next_row + CLC : ADC.l MapDrawingData_supertile_pixel_spacing, X + STA.b $00 + BRA .next_room_check + +.next_row + STZ.b $00 + + LDA.b $02 + CMP.l MapDrawingData_floor_pixel_row_wrap, X + BCS .next_floor + CLC : ADC.l MapDrawingData_supertile_pixel_spacing, X + STA.b $02 + BRA .next_room_check + +.next_floor + STZ.b $02 + BRA .next_room_check + +.found + PLX + JML $8AE891 .not_found + PLX JML $8AE8CD diff --git a/dungeon_map/hooks.asm b/dungeon_map/hooks.asm index e35c55f..a84f4cf 100644 --- a/dungeon_map/hooks.asm +++ b/dungeon_map/hooks.asm @@ -55,14 +55,21 @@ org $8AEE2B ;================================================================================ ; Overhaul of Dungeon Map Screen ;-------------------------------------------------------------------------------- -org $8AE64F +org $8AE64D PLX - JSL DrawDungeonMapRoom - JMP.w $8AE7F2 + JML DrawDungeonMapRoom + +org $8AE606 + PLX + JML DrawNonexistentRoom org $8AE152 JSL LoadLastHUDPalette +org $808BD3 + JSL LoadStripes + BRA + : NOP #9 : + + org $8AEAE8 ; vanilla checks number of sprites drawn instead of... counting... LDA.b $0E CMP.b #$02 @@ -99,13 +106,27 @@ org $8AE1EC PLB JML DrawDungeonLabel -org $8AE86A - JSL CountFloors - NOP #2 +org $8AE83E + JSL StartCurrentRoomSearch + BRA + : NOP #6 : + -org $8AE872 - JML CheckIfRoomFound - NOP +org $8AE86C + JML FindCurrentRoom + padbyte $EA + pad $8AE891 + +org $8AEBF8 + LDA.w $0217 + SEC : SBC.b $0F + BMI + + CMP.b #$18 + BCS + + skip 7 + + + +org $8AEB9A + db -8, 8, -8, 8 + db -8, -8, 8, 8 ;================================================================================ ; Show indicators of what is left in each room @@ -141,3 +162,7 @@ org $8AE2E0 org $8AE21C JSL DrawMountain BRA + : NOP #9 : + + +;================================================================================ +; Custom Door Rando Maps +;-------------------------------------------------------------------------------- diff --git a/dungeon_map/main.asm b/dungeon_map/main.asm index b7bd7eb..2f5b408 100644 --- a/dungeon_map/main.asm +++ b/dungeon_map/main.asm @@ -34,3 +34,4 @@ incsrc dungeon_switch.asm incsrc draw_loot.asm incsrc check_loot.asm incsrc blink_loot.asm +incsrc mappable_doors.asm diff --git a/dungeon_map/map_bg3.asm b/dungeon_map/map_bg3.asm index acda9f3..26b2e2d 100644 --- a/dungeon_map/map_bg3.asm +++ b/dungeon_map/map_bg3.asm @@ -1,13 +1,37 @@ -pushpc -org $809383 -db BG3DungeonMapStripes>>0 +LoadStripes: + CPY.b #$09 + BEQ .dungeon_map +.not_dungeon_map + LDA.w $80937A, Y + STA.b $00 + LDA.w $809383,Y + STA.b $01 + LDA.w $80938C,Y + STA.b $02 + RTL -org $80938C -db BG3DungeonMapStripes>>8 +.dungeon_map + LDA.l DungeonMapMode + CMP.b #$01 + BEQ .doors -org $809395 -db BG3DungeonMapStripes>>16 -pullpc +.not_doors + LDA.b #BG3DungeonMapStripes>>0 + STA.b $00 + LDA.b #BG3DungeonMapStripes>>8 + STA.b $01 + LDA.b #BG3DungeonMapStripes>>16 + STA.b $02 + RTL + +.doors + LDA.b #BG3DungeonMapDoorStripes>>0 + STA.b $00 + LDA.b #BG3DungeonMapDoorStripes>>8 + STA.b $01 + LDA.b #BG3DungeonMapDoorStripes>>16 + STA.b $02 + RTL LoadLastHUDPalette: ; what we wrote over @@ -23,45 +47,49 @@ LoadLastHUDPalette: SEP #$20 RTL +macro VanillaCommonMapStripes() + dw $4260, $0100, $2100 + dw $4360, $0E40, $2101 + dw $4B60, $0100, $6100 + dw $6260, $2EC0, $2110 + dw $6B60, $2EC0, $6110 + dw $6263, $0100, $A100 + dw $6363, $0E40, $A101 + dw $6B63, $0100, $E100 + dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107 + dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117 + dw $5D60, $0100, $6100 + dw $7D60, $2EC0, $6110 + dw $7D63, $0100, $E100 + dw $0060, $7E40, $2111 + dw $8063, $3E41, $2111 + dw $0060, $3EC0, $2111 + dw $0160, $3EC0, $2111 + dw $0C60, $3EC0, $2111 + dw $0D60, $3EC0, $2111 + dw $1E60, $3EC0, $2111 + dw $1F60, $3EC0, $2111 +endmacro + + BG3DungeonMapStripes: -; boring stuff from vanilla -dw $4260, $0100, $2100 -dw $4360, $0E40, $2101 -dw $4B60, $0100, $6100 -dw $6260, $2EC0, $2110 -dw $6B60, $2EC0, $6110 -dw $6263, $0100, $A100 -dw $6363, $0E40, $A101 -dw $6B63, $0100, $E100 -dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107 -dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117 +%VanillaCommonMapStripes() +; left edge of map border, from vanilla dw $4E60, $0100, $2100 dw $4F60, $1A40, $2101 -dw $5D60, $0100, $6100 dw $6E60, $2EC0, $2110 -dw $7D60, $2EC0, $6110 dw $6E63, $0100, $A100 dw $6F63, $1A40, $A101 -dw $7D63, $0100, $E100 -dw $0060, $7E40, $2111 -dw $8063, $3E41, $2111 -dw $0060, $3EC0, $2111 -dw $0160, $3EC0, $2111 -dw $0C60, $3EC0, $2111 -dw $0D60, $3EC0, $2111 -dw $1E60, $3EC0, $2111 -dw $1F60, $3EC0, $2111 -; new stuff here: ; horizontal borders -dw $7260, $1340, $1D11 -dw $D261, $1340, $1D11 -dw $F261, $1340, $1D11 -dw $5263, $1340, $1D11 +dw $7260, $1240, $1D11 +dw $D261, $1240, $1D11 +dw $F261, $1240, $1D11 +dw $5263, $1240, $1D11 ; vertical borders -dw $7160, $2FC0, $1D11 -dw $7C60, $2FC0, $1D11 +dw $7160, $2EC0, $1D11 +dw $7C60, $2EC0, $1D11 macro TopOfSquares(start) ; silly Big Endian @@ -94,3 +122,56 @@ endmacro %FullRow($6312) db $FF + +BG3DungeonMapDoorStripes: +%VanillaCommonMapStripes() +; left edge of map border, adjusted from vanilla +dw $4D60, $0100, $2100 +dw $4E60, $1C40, $2101 +dw $6D60, $2EC0, $2110 +dw $6D63, $0100, $A100 +dw $6E63, $1C40, $A101 + +; horizontal borders +dw $B160, $1440, $1D11 +dw $1161, $1440, $1D11 +dw $7161, $1440, $1D11 +dw $D161, $1440, $1D11 +dw $3162, $1440, $1D11 +dw $9162, $1440, $1D11 +dw $F162, $1440, $1D11 +dw $5163, $1440, $1D11 + +; vertical borders +dw $B060, $12C0, $1D11 +dw $BC60, $12C0, $1D11 +dw $3062, $12C0, $1D11 +dw $3C62, $12C0, $1D11 + +macro TopOfDoorSquares(start) + ; silly Big Endian + db >>8, , $00, $15 + dw $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C, $1D11, $5D4C, $1D4C +endmacro + +macro BottomOfDoorSquares(start) + ; silly Big Endian + db >>8, , $00, $15 + dw $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C, $1D11, $DD4C, $9D4C +endmacro + +macro FullDoorRow(start) + %TopOfDoorSquares() + %BottomOfDoorSquares(+$20) +endmacro + +; top grid +%FullDoorRow($60D1) +%FullDoorRow($6131) +%FullDoorRow($6191) + +%FullDoorRow($6251) +%FullDoorRow($62B1) +%FullDoorRow($6311) + +db $FF diff --git a/dungeon_map/mappable_doors.asm b/dungeon_map/mappable_doors.asm new file mode 100644 index 0000000..e2a870d --- /dev/null +++ b/dungeon_map/mappable_doors.asm @@ -0,0 +1,226 @@ +MapDrawingData: +.floor_data_offset + dw $0000, $0000 + dw $0019, $000C + dw $0032, $0018 + dw $004B, $0024 + dw $0064, $0030 + dw $007D, $003C + dw $0096, $0048 + dw $00AF, $0054 + dw $00C8, $0060 + +.row_data_offset + dw $0000, $0000 + dw $0005, $0004 + dw $000A, $0008 + dw $000F, $000C + dw $0014, $0010 + +.corner_tile_address + dw $00E2, $0160 + dw $00F8, $0178 + dw $03A2, $03A0 + dw $03B8, $03B8 + +.row_tile_address + dw $00E4, $0162 + dw $03A4, $03A2 + +.row_tile_length + dw $0014, $0016 + +.column_tile_address + dw $0122, $01A0 + dw $0138, $01B8 + +.column_tile_length + dw $0280, $0200 + +.floor_label_address + dw $035E, $035C + +.row_start_address + dw $0124, $01A2 + dw $01A4, $0262 + dw $0224, $0322 + dw $02A4, $03D2 + dw $0324, $04A2 + +.column_count + dw $0005, $0004 + +.column_spacing + dw $0004, $0006 + +.row_count + dw $0005, $0003 + +.bg1_grid_start + dw $1091, $10D1 + +.sprite_offset_x_base + dw $0090, $0088 + +.sprite_offset_y_base + dw $001F, $002F + dw $007F, $008F + +.supertile_pixel_spacing + dw $0010, $0018 + +.floor_pixel_column_wrap + dw $0040, $0048 + +.floor_pixel_row_wrap + dw $0040, $0030 + +macro Map_LDA(addr, label) + pushpc + org + JSR LDA_