diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 5ca2e04..4491366 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -82,7 +82,6 @@ incsrc tablets.asm incsrc fairyfixes.asm incsrc rngfixes.asm incsrc medallions.asm -incsrc inventory.asm incsrc zelda.asm incsrc maidencrystals.asm incsrc flute.asm @@ -155,7 +154,6 @@ incsrc hudtext.asm incsrc servicerequest.asm incsrc elder.asm incsrc toast.asm -incsrc darkroomitems.asm incsrc fastcredits.asm incsrc msu.asm incsrc dungeonmap.asm @@ -166,9 +164,17 @@ endif warnpc $A58000 org $A28000 +ItemReceiptGraphicsROM: +; we need some empty space here so that 0000 can mean nothing +fillbyte $00 : fill 32 +incbin "data/customitems.4bpp" +warnpc $A2B000 +org $A2B000 +incsrc itemdatatables.asm ; Statically mapped incsrc decompresseditemgraphics.asm incsrc newitems.asm incsrc utilities.asm +incsrc inventory.asm org $A38000 incsrc stats/main.asm @@ -270,6 +276,10 @@ org $919100 ; PC 0x89100 incbin "data/map_icons.gfx" warnpc $919401 ;================================================================================ +org $9BB1E0 +incsrc custompalettes.asm +warnpc $9BB880 +;================================================================================ org $AF8000 ; PC 0x178000 Static_RNG: ; each line below is 512 bytes of rng incsrc staticrng.asm diff --git a/bookofmudora.asm b/bookofmudora.asm index 399b98a..afebf4f 100644 --- a/bookofmudora.asm +++ b/bookofmudora.asm @@ -3,8 +3,9 @@ ;-------------------------------------------------------------------------------- LoadLibraryItemGFX: %GetPossiblyEncryptedItem(LibraryItem, SpriteItemValues) + JSL.l ResolveLootIDLong STA.w SpriteItemType, X ; Store item type - JSL.l PrepDynamicTile + JSL.l PrepDynamicTile_loot_resolved RTL ;-------------------------------------------------------------------------------- DrawLibraryItemGFX: diff --git a/bugfixes.asm b/bugfixes.asm index e8a6b88..93c995a 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -64,7 +64,7 @@ FixBunnyOnExitToLightWorld: STZ.b LinkState ; set player mode to Normal STZ.w BunnyFlag : STZ.b BunnyFlagDP ; return player graphics to normal + -RTS +RTL ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- diff --git a/custompalettes.asm b/custompalettes.asm new file mode 100644 index 0000000..4699ef1 --- /dev/null +++ b/custompalettes.asm @@ -0,0 +1,17 @@ +PalettesCustom: +.master_sword +dw $0000, $7E4E, $6FF4, $1CF5, $7FFF, $1CE7, $7A10, $64A5 +.tempered_sword +dw $0000, $093B, $169F, $7E8D, $7FFF, $1CE7, $7A10, $64A5 +.golden_sword +dw $0000, $033F, $7FFF, $2640, $7FFF, $1CE7, $7A10, $64A5 +.fighter_shield +dw $0000, $7FFF, $27FF, $5E2D, $7FFF, $1CE7, $7A10, $64A5 +.red_shield +dw $0000, $7FFF, $27FF, $5E2D, $4F5F, $1CE7, $2E9C, $14B6 +.mirror_shield +dw $0000, $7FFF, $27FF, $5E2D, $7399, $1CE7, $02F9, $0233 +.crystal +dw $7FFF, $7FFF, $5F9F, $000A, $7E15, $2C24, $75D0, $612B +.off_black +dw $0000, $14A5, $14A5, $14A5, $14A5, $14A5, $14A5, $14A5 diff --git a/decompresseditemgraphics.asm b/decompresseditemgraphics.asm index 76fc129..374f148 100644 --- a/decompresseditemgraphics.asm +++ b/decompresseditemgraphics.asm @@ -1,11 +1,3 @@ -;=================================================================================================== -; Up here at the top of ROM for easy viewing -;=================================================================================================== -ItemReceiptGraphicsROM: - ; we need some empty space here so that 0000 can mean nothing - fillbyte $00 : fill 32 - incbin "data/customitems.4bpp" - ;=================================================================================================== ; Get the item's graphic from WRAM/ROM ; Bit 7 set indicates an explicit WRAM address @@ -544,538 +536,4 @@ Unrolled3BPPConvert: ;=================================================================================================== -ItemReceiptGraphicsOffsets: - dw $0860 ; 00 - Fighter Sword and Shield - dw BigDecompressionBuffer+$11C0 ; 01 - Master Sword - dw BigDecompressionBuffer+$11C0 ; 01 - Tempered Sword - dw BigDecompressionBuffer+$11C0 ; 03 - Butter Sword - dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield - dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield - dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield - dw BigDecompressionBuffer+$1C80 ; 07 - Fire Rod - dw BigDecompressionBuffer+$1C80 ; 08 - Ice Rod - dw BigDecompressionBuffer+$1CA0 ; 09 - Hammer - dw BigDecompressionBuffer+$1C60 ; 0A - Hookshot - dw BigDecompressionBuffer+$1C00 ; 0B - Bow - dw BigDecompressionBuffer+$1DE0 ; 0C - Boomerang - dw BigDecompressionBuffer+$1CC0 ; 0D - Powder - dw BigDecompressionBuffer+$09A0 ; 0E - Bottle Refill (bee) - dw BigDecompressionBuffer+$1440 ; 0F - Bombos - dw BigDecompressionBuffer+$1400 ; 10 - Ether - dw BigDecompressionBuffer+$1480 ; 11 - Quake - dw BigDecompressionBuffer+$10C0 ; 12 - Lamp - dw BigDecompressionBuffer+$11E0 ; 13 - Shovel - dw BigDecompressionBuffer+$0C40 ; 14 - Flute - dw BigDecompressionBuffer+$1C40 ; 15 - Somaria - dw BigDecompressionBuffer+$14C0 ; 16 - Bottle - dw BigDecompressionBuffer+$0C00 ; 17 - Heartpiece - dw BigDecompressionBuffer+$1C40 ; 18 - Byrna - dw BigDecompressionBuffer+$1100 ; 19 - Cape - dw BigDecompressionBuffer+$1040 ; 1A - Mirror - dw BigDecompressionBuffer+$1D40 ; 1B - Glove - dw BigDecompressionBuffer+$1D40 ; 1C - Mitts - dw BigDecompressionBuffer+$1D80 ; 1D - Book - dw BigDecompressionBuffer+$1000 ; 1E - Flippers - dw BigDecompressionBuffer+$1180 ; 1F - Pearl - dw BigDecompressionBuffer+$08A0 ; 20 - Crystal - dw BigDecompressionBuffer+$0860 ; 21 - Net - dw BigDecompressionBuffer+$1900 ; 22 - Blue Mail - dw BigDecompressionBuffer+$1900 ; 23 - Red Mail - dw BigDecompressionBuffer+$1DC0 ; 24 - Small Key - dw BigDecompressionBuffer+$1140 ; 25 - Compbutt - dw BigDecompressionBuffer+$18C0 ; 26 - Heart Container from 4/4 - dw BigDecompressionBuffer+$1080 ; 27 - Bomb - dw BigDecompressionBuffer+$1840 ; 28 - 3 bombs - dw BigDecompressionBuffer+$1540 ; 29 - Mushroom - dw BigDecompressionBuffer+$1DE0 ; 2A - Red boomerang - dw BigDecompressionBuffer+$1500 ; 2B - Full bottle (red) - dw BigDecompressionBuffer+$1500 ; 2C - Full bottle (green) - dw BigDecompressionBuffer+$1500 ; 2D - Full bottle (blue) - dw BigDecompressionBuffer+$1500 ; 2E - Potion refill (red) - dw BigDecompressionBuffer+$1500 ; 2F - Potion refill (green) - dw BigDecompressionBuffer+$1500 ; 30 - Potion refill (blue) - dw BigDecompressionBuffer+$1D00 ; 31 - 10 bombs - dw BigDecompressionBuffer+$15C0 ; 32 - Big key - dw BigDecompressionBuffer+$1580 ; 33 - Map - dw BigDecompressionBuffer+$0800 ; 34 - 1 rupee - dw BigDecompressionBuffer+$0800 ; 35 - 5 rupees - dw BigDecompressionBuffer+$0800 ; 36 - 20 rupees - dw BigDecompressionBuffer+$0080 ; 37 - Green pendant - dw BigDecompressionBuffer+$0080 ; 38 - Blue pendant - dw BigDecompressionBuffer+$0080 ; 39 - Red pendant - dw BigDecompressionBuffer+$0920 ; 3A - Tossed bow - dw BigDecompressionBuffer+$08E0 ; 3B - Silvers - dw BigDecompressionBuffer+$09A0 ; 3C - Full bottle (bee) - dw BigDecompressionBuffer+$0960 ; 3D - Full bottle (fairy) - dw BigDecompressionBuffer+$18C0 ; 3E - Boss heart - dw BigDecompressionBuffer+$18C0 ; 3F - Sanc heart - dw BigDecompressionBuffer+$0D20 ; 40 - 100 rupees - dw BigDecompressionBuffer+$0D60 ; 41 - 50 rupees - dw BigDecompressionBuffer+$0CC0 ; 42 - Heart - dw BigDecompressionBuffer+$0DD0 ; 43 - Arrow - dw BigDecompressionBuffer+$1880 ; 44 - 10 arrows - dw BigDecompressionBuffer+$0CE0 ; 45 - Small magic - dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees - dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green - dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee) - dw BigDecompressionBuffer+$1C20 ; 49 - Tossed fighter sword - dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee) - dw BigDecompressionBuffer+$0040 ; 4B - Boots - ; Rando items - dw $04A0 ; 4C - Bomb capacity (50) - dw $05A0 ; 4D - Arrow capacity (70) - dw $01A0 ; 4E - 1/2 magic - dw $01E0 ; 4F - 1/4 magic - dw $0 ; 50 - Safe master sword - dw $0420 ; 51 - Bomb capacity (+5) - dw $0460 ; 52 - Bomb capacity (+10) - dw $0520 ; 53 - Arrow capacity (+5) - dw $0560 ; 54 - Arrow capacity (+10) - dw $0 ; 55 - Programmable item 1 - dw $0 ; 56 - Programmable item 2 - dw $0 ; 57 - Programmable item 3 - dw $05E0 ; 58 - Upgrade-only silver arrows - dw $0 ; 59 - Rupoor - dw $0020 ; 5A - Nothing - dw $0DE0 ; 5B - Red clock - dw $0DE0 ; 5C - Blue clock - dw $0DE0 ; 5D - Green clock - dw $0 ; 5E - Progressive sword - dw $0 ; 5F - Progressive shield - dw $0 ; 60 - Progressive armor - dw $0 ; 61 - Progressive glove - dw $0 ; 62 - RNG pool item (single) - dw $0 ; 63 - RNG pool item (multi) - dw $0 ; 64 - Progressive bow - dw $0 ; 65 - Progressive bow - dw $0 ; 66 - - dw $0 ; 67 - - dw $0 ; 68 - - dw $0 ; 69 - - dw $0060 ; 6A - Triforce - dw $11E0 ; 6B - Power star - dw $0 ; 6C - - dw $0 ; 6D - Server request item - dw $0 ; 6E - Server request item (dungeon drop) - dw $0 ; 6F - - - dw BigDecompressionBuffer+$1580 ; 70 - Map of Light World - dw BigDecompressionBuffer+$1580 ; 71 - Map of Dark World - dw BigDecompressionBuffer+$1580 ; 72 - Map of Ganon's Tower - dw BigDecompressionBuffer+$1580 ; 73 - Map of Turtle Rock - dw BigDecompressionBuffer+$1580 ; 74 - Map of Thieves' Town - dw BigDecompressionBuffer+$1580 ; 75 - Map of Tower of Hera - dw BigDecompressionBuffer+$1580 ; 76 - Map of Ice Palace - dw BigDecompressionBuffer+$1580 ; 77 - Map of Skull Woods - dw BigDecompressionBuffer+$1580 ; 78 - Map of Misery Mire - dw BigDecompressionBuffer+$1580 ; 79 - Map of Dark Palace - dw BigDecompressionBuffer+$1580 ; 7A - Map of Swamp Palace - dw BigDecompressionBuffer+$1580 ; 7B - Map of Agahnim's Tower - dw BigDecompressionBuffer+$1580 ; 7C - Map of Desert Palace - dw BigDecompressionBuffer+$1580 ; 7D - Map of Eastern Palace - dw BigDecompressionBuffer+$1580 ; 7E - Map of Hyrule Castle - dw BigDecompressionBuffer+$1580 ; 7F - Map of Sewers - - dw BigDecompressionBuffer+$1140 ; 80 - Compass of Light World - dw BigDecompressionBuffer+$1140 ; 81 - Compass of Dark World - dw BigDecompressionBuffer+$1140 ; 82 - Compass of Ganon's Tower - dw BigDecompressionBuffer+$1140 ; 83 - Compass of Turtle Rock - dw BigDecompressionBuffer+$1140 ; 84 - Compass of Thieves' Town - dw BigDecompressionBuffer+$1140 ; 85 - Compass of Tower of Hera - dw BigDecompressionBuffer+$1140 ; 86 - Compass of Ice Palace - dw BigDecompressionBuffer+$1140 ; 87 - Compass of Skull Woods - dw BigDecompressionBuffer+$1140 ; 88 - Compass of Misery Mire - dw BigDecompressionBuffer+$1140 ; 89 - Compass of Dark Palace - dw BigDecompressionBuffer+$1140 ; 8A - Compass of Swamp Palace - dw BigDecompressionBuffer+$1140 ; 8B - Compass of Agahnim's Tower - dw BigDecompressionBuffer+$1140 ; 8C - Compass of Desert Palace - dw BigDecompressionBuffer+$1140 ; 8D - Compass of Eastern Palace - dw BigDecompressionBuffer+$1140 ; 8E - Compass of Hyrule Castle - dw BigDecompressionBuffer+$1140 ; 8F - Compass of Sewers - dw $0 ; 90 - Skull key - dw $0 ; 91 - Reserved - - dw BigDecompressionBuffer+$15C0 ; 92 - Big key of Ganon's Tower - dw BigDecompressionBuffer+$15C0 ; 93 - Big key of Turtle Rock - dw BigDecompressionBuffer+$15C0 ; 94 - Big key of Thieves' Town - dw BigDecompressionBuffer+$15C0 ; 95 - Big key of Tower of Hera - dw BigDecompressionBuffer+$15C0 ; 96 - Big key of Ice Palace - dw BigDecompressionBuffer+$15C0 ; 97 - Big key of Skull Woods - dw BigDecompressionBuffer+$15C0 ; 98 - Big key of Misery Mire - dw BigDecompressionBuffer+$15C0 ; 99 - Big key of Dark Palace - dw BigDecompressionBuffer+$15C0 ; 9A - Big key of Swamp Palace - dw BigDecompressionBuffer+$15C0 ; 9B - Big key of Agahnim's Tower - dw BigDecompressionBuffer+$15C0 ; 9C - Big key of Desert Palace - dw BigDecompressionBuffer+$15C0 ; 9D - Big key of Eastern Palace - dw BigDecompressionBuffer+$15C0 ; 9E - Big key of Hyrule Castle - dw BigDecompressionBuffer+$15C0 ; 9F - Big key of Sewers - - dw BigDecompressionBuffer+$1DC0 ; A0 - Small key of Sewers - dw BigDecompressionBuffer+$1DC0 ; A1 - Small key of Hyrule Castle - dw BigDecompressionBuffer+$1DC0 ; A2 - Small key of Eastern Palace - dw BigDecompressionBuffer+$1DC0 ; A3 - Small key of Desert Palace - dw BigDecompressionBuffer+$1DC0 ; A4 - Small key of Agahnim's Tower - dw BigDecompressionBuffer+$1DC0 ; A5 - Small key of Swamp Palace - dw BigDecompressionBuffer+$1DC0 ; A6 - Small key of Dark Palace - dw BigDecompressionBuffer+$1DC0 ; A7 - Small key of Misery Mire - dw BigDecompressionBuffer+$1DC0 ; A8 - Small key of Skull Woods - dw BigDecompressionBuffer+$1DC0 ; A9 - Small key of Ice Palace - dw BigDecompressionBuffer+$1DC0 ; AA - Small key of Tower of Hera - dw BigDecompressionBuffer+$1DC0 ; AB - Small key of Thieves' Town - dw BigDecompressionBuffer+$1DC0 ; AC - Small key of Turtle Rock - dw BigDecompressionBuffer+$1DC0 ; AD - Small key of Ganon's Tower - dw $0 ; AE - Reserved - dw BigDecompressionBuffer+$1DC0 ; AF - Generic small key - - dw $0 ; B0 - - dw $0 ; B1 - - dw $0 ; B2 - - dw $0 ; B3 - - dw $0 ; B4 - - dw $0 ; B5 - - dw $0 ; B6 - - dw $0 ; B7 - - dw $0 ; B8 - - dw $0 ; B9 - - dw $0 ; BA - - dw $0 ; BB - - dw $0 ; BC - - dw $0 ; BD - - dw $0 ; BE - - dw $0 ; BF - - dw $0 ; C0 - - dw $0 ; C1 - - dw $0 ; C2 - - dw $0 ; C3 - - dw $0 ; C4 - - dw $0 ; C5 - - dw $0 ; C6 - - dw $0 ; C7 - - dw $0 ; C8 - - dw $0 ; C9 - - dw $0 ; CA - - dw $0 ; CB - - dw $0 ; CC - - dw $0 ; CD - - dw $0 ; CE - - dw $0 ; CF - - dw $0 ; D0 - - dw $0 ; D1 - - dw $0 ; D2 - - dw $0 ; D3 - - dw $0 ; D4 - - dw $0 ; D5 - - dw $0 ; D6 - - dw $0 ; D7 - - dw $0 ; D8 - - dw $0 ; D9 - - dw $0 ; DA - - dw $0 ; DB - - dw $0 ; DC - - dw $0 ; DD - - dw $0 ; DE - - dw $0 ; DF - - dw $0 ; E0 - - dw $0 ; E1 - - dw $0 ; E2 - - dw $0 ; E3 - - dw $0 ; E4 - - dw $0 ; E5 - - dw $0 ; E6 - - dw $0 ; E7 - - dw $0 ; E8 - - dw $0 ; E9 - - dw $0 ; EA - - dw $0 ; EB - - dw $0 ; EC - - dw $0 ; ED - - dw $0 ; EE - - dw $0 ; EF - - dw $0 ; F0 - - dw $0 ; F1 - - dw $0 ; F2 - - dw $0 ; F3 - - dw $0 ; F4 - - dw $0 ; F5 - - dw $0 ; F6 - - dw $0 ; F7 - - dw $0 ; F8 - - dw $0 ; F9 - - dw $0 ; FA - - dw $0 ; FB - - dw $0 ; FC - - dw $0 ; FD - - dw $0 ; FE - Server request (async) - dw $0 ; FF - - -;=================================================================================================== -; The table below is for "standing" items, either in heart piece locations, boss heart locations -; or shops etc. Generally we do not and shouldn't use different gfx for this purpose, so this is -; mostly a copy of the previous table. However some items, such as swords, use a separate sprite -; for receipt and non-receipt drawing. -;=================================================================================================== -StandingItemGraphicsOffsets: - dw $0860 ; 00 - Fighter Sword and Shield - dw $00E0 ; 01 - Master Sword - dw $0120 ; 02 - Tempered Sword - dw $0160 ; 03 - Butter Sword - dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield - dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield - dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield - dw BigDecompressionBuffer+$1C80 ; 07 - Fire Rod - dw BigDecompressionBuffer+$1C80 ; 08 - Ice Rod - dw BigDecompressionBuffer+$1CA0 ; 09 - Hammer - dw BigDecompressionBuffer+$1C60 ; 0A - Hookshot - dw BigDecompressionBuffer+$1C00 ; 0B - Bow - dw BigDecompressionBuffer+$1DE0 ; 0C - Boomerang - dw BigDecompressionBuffer+$1CC0 ; 0D - Powder - dw BigDecompressionBuffer+$09A0 ; 0E - Bottle Refill (bee) - dw BigDecompressionBuffer+$1440 ; 0F - Bombos - dw BigDecompressionBuffer+$1400 ; 10 - Ether - dw BigDecompressionBuffer+$1480 ; 11 - Quake - dw BigDecompressionBuffer+$10C0 ; 12 - Lamp - dw BigDecompressionBuffer+$11E0 ; 13 - Shovel - dw BigDecompressionBuffer+$0C40 ; 14 - Flute - dw BigDecompressionBuffer+$1C40 ; 15 - Somaria - dw BigDecompressionBuffer+$14C0 ; 16 - Bottle - dw BigDecompressionBuffer+$0C00 ; 17 - Heartpiece - dw BigDecompressionBuffer+$1C40 ; 18 - Byrna - dw BigDecompressionBuffer+$1100 ; 19 - Cape - dw BigDecompressionBuffer+$1040 ; 1A - Mirror - dw BigDecompressionBuffer+$1D40 ; 1B - Glove - dw BigDecompressionBuffer+$1D40 ; 1C - Mitts - dw BigDecompressionBuffer+$1D80 ; 1D - Book - dw BigDecompressionBuffer+$1000 ; 1E - Flippers - dw BigDecompressionBuffer+$1180 ; 1F - Pearl - dw BigDecompressionBuffer+$08A0 ; 20 - Crystal - dw BigDecompressionBuffer+$0860 ; 21 - Net - dw BigDecompressionBuffer+$1900 ; 22 - Blue Mail - dw BigDecompressionBuffer+$1900 ; 23 - Red Mail - dw BigDecompressionBuffer+$1DC0 ; 24 - Small Key - dw BigDecompressionBuffer+$1140 ; 25 - Compbutt - dw BigDecompressionBuffer+$18C0 ; 26 - Heart Container from 4/4 - dw BigDecompressionBuffer+$1080 ; 27 - Bomb - dw BigDecompressionBuffer+$1840 ; 28 - 3 bombs - dw BigDecompressionBuffer+$1540 ; 29 - Mushroom - dw BigDecompressionBuffer+$1DE0 ; 2A - Red boomerang - dw BigDecompressionBuffer+$1500 ; 2B - Full bottle (red) - dw BigDecompressionBuffer+$1500 ; 2C - Full bottle (green) - dw BigDecompressionBuffer+$1500 ; 2D - Full bottle (blue) - dw BigDecompressionBuffer+$1500 ; 2E - Potion refill (red) - dw BigDecompressionBuffer+$1500 ; 2F - Potion refill (green) - dw BigDecompressionBuffer+$1500 ; 30 - Potion refill (blue) - dw BigDecompressionBuffer+$1D00 ; 31 - 10 bombs - dw BigDecompressionBuffer+$15C0 ; 32 - Big key - dw BigDecompressionBuffer+$1580 ; 33 - Map - dw BigDecompressionBuffer+$0800 ; 34 - 1 rupee - dw BigDecompressionBuffer+$0800 ; 35 - 5 rupees - dw BigDecompressionBuffer+$0800 ; 36 - 20 rupees - dw BigDecompressionBuffer+$0080 ; 37 - Green pendant - dw BigDecompressionBuffer+$0080 ; 38 - Blue pendant - dw BigDecompressionBuffer+$0080 ; 39 - Red pendant - dw BigDecompressionBuffer+$0920 ; 3A - Tossed bow - dw BigDecompressionBuffer+$08E0 ; 3B - Silvers - dw BigDecompressionBuffer+$09A0 ; 3C - Full bottle (bee) - dw BigDecompressionBuffer+$0960 ; 3D - Full bottle (fairy) - dw BigDecompressionBuffer+$18C0 ; 3E - Boss heart - dw BigDecompressionBuffer+$18C0 ; 3F - Sanc heart - dw BigDecompressionBuffer+$0D20 ; 40 - 100 rupees - dw BigDecompressionBuffer+$0D60 ; 41 - 50 rupees - dw BigDecompressionBuffer+$0CC0 ; 42 - Heart - dw BigDecompressionBuffer+$0DD0 ; 43 - Arrow - dw BigDecompressionBuffer+$1880 ; 44 - 10 arrows - dw BigDecompressionBuffer+$0CE0 ; 45 - Small magic - dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees - dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green - dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee) - dw $00A0 ; 49 - Tossed fighter sword - dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee) - dw BigDecompressionBuffer+$0040 ; 4B - Boots - - ; Rando items - dw $04A0 ; 4C - Bomb capacity (50) - dw $05A0 ; 4D - Arrow capacity (70) - dw $01A0 ; 4E - 1/2 magic - dw $01E0 ; 4F - 1/4 magic - dw $00E0 ; 50 - Safe master sword - dw $0420 ; 51 - Bomb capacity (+5) - dw $0460 ; 52 - Bomb capacity (+10) - dw $0520 ; 53 - Arrow capacity (+5) - dw $0560 ; 54 - Arrow capacity (+10) - dw $0 ; 55 - Programmable item 1 - dw $0 ; 56 - Programmable item 2 - dw $0 ; 57 - Programmable item 3 - dw $05E0 ; 58 - Upgrade-only silver arrows - dw $0 ; 59 - Rupoor - dw $0020 ; 5A - Nothing - dw $0DE0 ; 5B - Red clock - dw $0DE0 ; 5C - Blue clock - dw $0DE0 ; 5D - Green clock - dw $0 ; 5E - Progressive sword - dw $0 ; 5F - Progressive shield - dw $0 ; 60 - Progressive armor - dw $0 ; 61 - Progressive glove - dw $0 ; 62 - RNG pool item (single) - dw $0 ; 63 - RNG pool item (multi) - dw $0 ; 64 - Progressive bow - dw $0 ; 65 - Progressive bow - dw $0 ; 66 - - dw $0 ; 67 - - dw $0 ; 68 - - dw $0 ; 69 - - dw $0060 ; 6A - Triforce - dw $11E0 ; 6B - Power star - dw $0 ; 6C - - dw $0 ; 6D - Server request item - dw $0 ; 6E - Server request item (dungeon drop) - dw $0 ; 6F - - - dw BigDecompressionBuffer+$1580 ; 70 - Map of Light World - dw BigDecompressionBuffer+$1580 ; 71 - Map of Dark World - dw BigDecompressionBuffer+$1580 ; 72 - Map of Ganon's Tower - dw BigDecompressionBuffer+$1580 ; 73 - Map of Turtle Rock - dw BigDecompressionBuffer+$1580 ; 74 - Map of Thieves' Town - dw BigDecompressionBuffer+$1580 ; 75 - Map of Tower of Hera - dw BigDecompressionBuffer+$1580 ; 76 - Map of Ice Palace - dw BigDecompressionBuffer+$1580 ; 77 - Map of Skull Woods - dw BigDecompressionBuffer+$1580 ; 78 - Map of Misery Mire - dw BigDecompressionBuffer+$1580 ; 79 - Map of Dark Palace - dw BigDecompressionBuffer+$1580 ; 7A - Map of Swamp Palace - dw BigDecompressionBuffer+$1580 ; 7B - Map of Agahnim's Tower - dw BigDecompressionBuffer+$1580 ; 7C - Map of Desert Palace - dw BigDecompressionBuffer+$1580 ; 7D - Map of Eastern Palace - dw BigDecompressionBuffer+$1580 ; 7E - Map of Hyrule Castle - dw BigDecompressionBuffer+$1580 ; 7F - Map of Sewers - - dw BigDecompressionBuffer+$1140 ; 80 - Compass of Light World - dw BigDecompressionBuffer+$1140 ; 81 - Compass of Dark World - dw BigDecompressionBuffer+$1140 ; 82 - Compass of Ganon's Tower - dw BigDecompressionBuffer+$1140 ; 83 - Compass of Turtle Rock - dw BigDecompressionBuffer+$1140 ; 84 - Compass of Thieves' Town - dw BigDecompressionBuffer+$1140 ; 85 - Compass of Tower of Hera - dw BigDecompressionBuffer+$1140 ; 86 - Compass of Ice Palace - dw BigDecompressionBuffer+$1140 ; 87 - Compass of Skull Woods - dw BigDecompressionBuffer+$1140 ; 88 - Compass of Misery Mire - dw BigDecompressionBuffer+$1140 ; 89 - Compass of Dark Palace - dw BigDecompressionBuffer+$1140 ; 8A - Compass of Swamp Palace - dw BigDecompressionBuffer+$1140 ; 8B - Compass of Agahnim's Tower - dw BigDecompressionBuffer+$1140 ; 8C - Compass of Desert Palace - dw BigDecompressionBuffer+$1140 ; 8D - Compass of Eastern Palace - dw BigDecompressionBuffer+$1140 ; 8E - Compass of Hyrule Castle - dw BigDecompressionBuffer+$1140 ; 8F - Compass of Sewers - dw $0 ; 90 - Skull key - dw $0 ; 91 - Reserved - - dw BigDecompressionBuffer+$15C0 ; 92 - Big key of Ganon's Tower - dw BigDecompressionBuffer+$15C0 ; 93 - Big key of Turtle Rock - dw BigDecompressionBuffer+$15C0 ; 94 - Big key of Thieves' Town - dw BigDecompressionBuffer+$15C0 ; 95 - Big key of Tower of Hera - dw BigDecompressionBuffer+$15C0 ; 96 - Big key of Ice Palace - dw BigDecompressionBuffer+$15C0 ; 97 - Big key of Skull Woods - dw BigDecompressionBuffer+$15C0 ; 98 - Big key of Misery Mire - dw BigDecompressionBuffer+$15C0 ; 99 - Big key of Dark Palace - dw BigDecompressionBuffer+$15C0 ; 9A - Big key of Swamp Palace - dw BigDecompressionBuffer+$15C0 ; 9B - Big key of Agahnim's Tower - dw BigDecompressionBuffer+$15C0 ; 9C - Big key of Desert Palace - dw BigDecompressionBuffer+$15C0 ; 9D - Big key of Eastern Palace - dw BigDecompressionBuffer+$15C0 ; 9E - Big key of Hyrule Castle - dw BigDecompressionBuffer+$15C0 ; 9F - Big key of Sewers - - dw BigDecompressionBuffer+$1DC0 ; A0 - Small key of Sewers - dw BigDecompressionBuffer+$1DC0 ; A1 - Small key of Hyrule Castle - dw BigDecompressionBuffer+$1DC0 ; A2 - Small key of Eastern Palace - dw BigDecompressionBuffer+$1DC0 ; A3 - Small key of Desert Palace - dw BigDecompressionBuffer+$1DC0 ; A4 - Small key of Agahnim's Tower - dw BigDecompressionBuffer+$1DC0 ; A5 - Small key of Swamp Palace - dw BigDecompressionBuffer+$1DC0 ; A6 - Small key of Dark Palace - dw BigDecompressionBuffer+$1DC0 ; A7 - Small key of Misery Mire - dw BigDecompressionBuffer+$1DC0 ; A8 - Small key of Skull Woods - dw BigDecompressionBuffer+$1DC0 ; A9 - Small key of Ice Palace - dw BigDecompressionBuffer+$1DC0 ; AA - Small key of Tower of Hera - dw BigDecompressionBuffer+$1DC0 ; AB - Small key of Thieves' Town - dw BigDecompressionBuffer+$1DC0 ; AC - Small key of Turtle Rock - dw BigDecompressionBuffer+$1DC0 ; AD - Small key of Ganon's Tower - dw $0 ; AE - Reserved - dw BigDecompressionBuffer+$1DC0 ; AF - Generic small key - - dw $0 ; B0 - - dw $0 ; B1 - - dw $0 ; B2 - - dw $0 ; B3 - - dw $0 ; B4 - - dw $0 ; B5 - - dw $0 ; B6 - - dw $0 ; B7 - - dw $0 ; B8 - - dw $0 ; B9 - - dw $0 ; BA - - dw $0 ; BB - - dw $0 ; BC - - dw $0 ; BD - - dw $0 ; BE - - dw $0 ; BF - - dw $0 ; C0 - - dw $0 ; C1 - - dw $0 ; C2 - - dw $0 ; C3 - - dw $0 ; C4 - - dw $0 ; C5 - - dw $0 ; C6 - - dw $0 ; C7 - - dw $0 ; C8 - - dw $0 ; C9 - - dw $0 ; CA - - dw $0 ; CB - - dw $0 ; CC - - dw $0 ; CD - - dw $0 ; CE - - dw $0 ; CF - - dw $0 ; D0 - - dw $0 ; D1 - - dw $0 ; D2 - - dw $0 ; D3 - - dw $0 ; D4 - - dw $0 ; D5 - - dw $0 ; D6 - - dw $0 ; D7 - - dw $0 ; D8 - - dw $0 ; D9 - - dw $0 ; DA - - dw $0 ; DB - - dw $0 ; DC - - dw $0 ; DD - - dw $0 ; DE - - dw $0 ; DF - - dw $0 ; E0 - - dw $0 ; E1 - - dw $0 ; E2 - - dw $0 ; E3 - - dw $0 ; E4 - - dw $0 ; E5 - - dw $0 ; E6 - - dw $0 ; E7 - - dw $0 ; E8 - - dw $0 ; E9 - - dw $0 ; EA - - dw $0 ; EB - - dw $0 ; EC - - dw $0 ; ED - - dw $0 ; EE - - dw $0 ; EF - - dw $0 ; F0 - - dw $0 ; F1 - - dw $0 ; F2 - - dw $0 ; F3 - - dw $0 ; F4 - - dw $0 ; F5 - - dw $0 ; F6 - - dw $0 ; F7 - - dw $0 ; F8 - - dw $0 ; F9 - - dw $0 ; FA - - dw $0 ; FB - - dw $0 ; FC - - dw $0 ; FD - - dw $0 ; FE - Server request (async) - dw $0 ; FF - diff --git a/dialog.asm b/dialog.asm index 35d1098..c056e24 100644 --- a/dialog.asm +++ b/dialog.asm @@ -127,13 +127,22 @@ FreeDungeonItemNotice: .dungeon LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer LDA.w ScratchBufferV - AND.b #$0F ; looking at low bits only + AND.b #$0F STA.w ScratchBufferNV+1 LDA.w ScratchBufferNV : BEQ + LDA.w ScratchBufferNV LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys + LDA.w ScratchBufferNV+1 + ASL : TAX + REP #$20 + LDA.l DungeonItemIDMap,X : CMP.w DungeonID : BNE + + SEP #$20 + %CopyDialog(Notice_Self) + JMP.w .done + + + SEP #$20 + LDA.w ScratchBufferNV+1 CMP.b #$00 : BNE + ; ...light world %CopyDialog(Notice_LightWorld) : JMP .done + : CMP.b #$01 : BNE + ; ...dark world diff --git a/events.asm b/events.asm index 0380d1c..3809a55 100644 --- a/events.asm +++ b/events.asm @@ -105,13 +105,14 @@ OnFileCreation: ; Set validity value and do some cleanup. Jump to checksum. LDA.w #$55AA : STA.l FileValiditySRAM + JSL.l WriteSaveChecksumAndBackup_from_sram STZ.b Scrap00 STZ.b Scrap01 LDX.b Scrap00 LDY.w #$0000 TYA -JML.l InitializeSaveFile_build_checksum +JML.l InitializeSaveFile_checksum_done ;-------------------------------------------------------------------------------- OnFileLoad: REP #$10 ; set 16 bit index registers diff --git a/heartpieces.asm b/heartpieces.asm index 6264ca9..b8446b7 100644 --- a/heartpieces.asm +++ b/heartpieces.asm @@ -29,32 +29,30 @@ HeartContainerGet: BRA HeartPieceGet_skipLoad ;-------------------------------------------------------------------------------- DrawHeartPieceGFX: - PHP - JSL.l Sprite_IsOnscreen : BCC .offscreen - - PHA : PHY - LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready - JSL.l HeartPieceSpritePrep - JMP .done ; don't draw on the init frame - - .skipInit - LDA.w SpriteItemType, X ; Retrieve stored item type - - .skipLoad - - PHA - JSL.l IsNarrowSprite : BCC + - LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X - + - PLA - - JSL.l DrawDynamicTile - JSL.l Sprite_DrawShadowLong - - .done - PLY : PLA - .offscreen - PLP + PHP + JSL.l Sprite_IsOnscreen : BCC .offscreen + PHA : PHY + LDA.l RedrawFlag : BEQ .skipInit ; skip init if already ready + JSL.l HeartPieceSpritePrep + JMP .done ; don't draw on the init frame + .skipInit + LDA.w SpriteItemType, X ; Retrieve stored item type + .skipLoad + PHA : PHX + TAX + LDA.l SpriteProperties_standing_width,X : BNE + + LDA.w SpriteControl, X : ORA.b #$20 : STA.w SpriteControl, X + PLX : PLA + BRA .draw + + + PLX : PLA + .draw + JSL.l DrawDynamicTile + JSL.l Sprite_DrawShadowLong + .done + PLY : PLA + .offscreen + PLP RTL ;-------------------------------------------------------------------------------- DrawHeartContainerGFX: @@ -109,9 +107,10 @@ HeartPieceSpritePrep: LDA.b LinkState : CMP.b #$14 : BEQ .skip ; skip if we're mid-mirror LDA.b #$00 : STA.l RedrawFlag - JSL.l LoadHeartPieceRoomValue ; load item type - STA.w SpriteItemType, X ; Store item type - JSL.l PrepDynamicTile + JSL.l LoadHeartPieceRoomValue + JSL.l ResolveLootIDLong + STA.w SpriteItemType, X + JSL.l PrepDynamicTile_loot_resolved .skip PLA @@ -122,8 +121,9 @@ HeartContainerSpritePrep: LDA.b #$00 : STA.l RedrawFlag JSL.l LoadHeartContainerRoomValue ; load item type + JSL.l ResolveLootIDLong STA.w SpriteItemType, X ; Store item type - JSL.l PrepDynamicTile + JSL.l PrepDynamicTile_loot_resolved PLA RTL diff --git a/hooks.asm b/hooks.asm index 460cf50..c81855c 100755 --- a/hooks.asm +++ b/hooks.asm @@ -887,7 +887,6 @@ JSL GetAnimatedSpriteBufferPointer : NOP org $8799F7 ; 399F7 - Bank07.asm:4107 (JSL AddReceivedItem) JSL AddReceivedItemLong -;JSL AddReceivedItemExpanded org $898611 ; 48611 - ancilla_init.asm:720 (LDA .item_target_addr+0, X) LDA.w ItemReceipts_target+0, X @@ -915,7 +914,7 @@ org $89885B ; 4885B - ancilla_init.asm:1139 (LDA .x_offsets, X) - I think the di LDA.w ItemReceipts_offset_x, Y org $8988B7 ; 488B7 - ancilla_init.asm:1199 (LDA .wide_item_flag, Y) -LDA.w ItemReceipts_width, Y +LDA.w SpriteProperties_chest_width, Y org $8988EF ; 488EF - ancilla_init.asm:1248 (LDA $836C, Y) LDA.w ItemReceipts_offset_y, Y @@ -926,7 +925,7 @@ org $88C6C8 ; 446C8 - ancilla_receive_item.asm:538 (LDA AddReceiveItem.propertie JSL CheckReceivedItemPropertiesBeforeLoad org $88C6DE ; 446DE - ancilla_receive_item.asm:550 (LDA .wide_item_flag, X) -LDA.l ItemReceipts_width, X +LDA.l SpriteProperties_chest_width, X org $88C6F9 ; 446F9 - ancilla_receive_item.asm:570 (LDA AddReceiveItem.properties, X) JSL CheckReceivedItemPropertiesBeforeLoad @@ -938,7 +937,7 @@ org $8985ED ; 485ED - ancilla_init.asm:693 (LDA $02E9 : CMP.b #$01) JSL AddReceivedItemExpandedGetItem : NOP org $87B57D ; 3B57D - Bank07.asm:8527 (LDA Link_ReceiveItemAlternates, Y : STA $03) -JSL Link_ReceiveItemAlternatesExpanded_loadAlternate : NOP +BRA Link_PerformOpenChest_no_replacement ;-------------------------------------------------------------------------------- org $89892E ; 4892E - ancilla_init.asm:1307 (LDA BottleList, X) LDA.w BottleListExpanded, X @@ -1931,7 +1930,7 @@ JSL HeartPieceGet JSL DynamicDrawCleanup JSL IsMedallion BCS + : BRA Sprite_EB_HeartPiece_handle_flags : + ; Don't change OW flags if we're -STZ.w SpriteAITable, X : RTS ; getting a tablet item +STZ.w SpriteAITable, X : RTS ; getting a tablet item ;-------------------------------------------------------------------------------- org $86C0B0 ; <- 340B0 - sprite prep JSL HeartPieceSpritePrep diff --git a/inventory.asm b/inventory.asm index 8fc3366..4976080 100644 --- a/inventory.asm +++ b/inventory.asm @@ -265,280 +265,6 @@ IncrementByOne: .skip RTS -; Properties: - - w o a y s t -; t = Count for total item counter | s = Count for total in shops -; y = Y item | a = A item -; o = Bomb item | w = Bow item -InventoryTable: - .properties : fillbyte $00 : fill 256 ; See above - .stamp : fillword $0000 : fill 256*2 ; Address to stamp with 32-bit time (bank $7E) - .stat : fillword $0000 : fill 256*2 ; Address to increment by one (bank $7E) - -macro InventoryItem(id, props, stamp, stat) - pushpc - org InventoryTable_properties+ : db - org InventoryTable_stamp+(*2) : dw - org InventoryTable_stat+(*2) : dw - pullpc -endmacro - -%InventoryItem($00, $01, SwordTime, $0000) ; 00 - Fighter sword & Shield -%InventoryItem($01, $01, SwordTime, $0000) ; 01 - Master sword -%InventoryItem($02, $01, SwordTime, $0000) ; 02 - Tempered sword -%InventoryItem($03, $01, SwordTime, $0000) ; 03 - Butter sword -%InventoryItem($04, $01, $0000, $0000) ; 04 - Fighter shield -%InventoryItem($05, $01, $0000, $0000) ; 05 - Fire shield -%InventoryItem($06, $01, $0000, $0000) ; 06 - Mirror shield -%InventoryItem($07, $05, $0000, $0000) ; 07 - Fire rod -%InventoryItem($08, $05, $0000, $0000) ; 08 - Ice rod -%InventoryItem($09, $05, $0000, $0000) ; 09 - Hammer -%InventoryItem($0A, $05, $0000, $0000) ; 0A - Hookshot -%InventoryItem($0B, $25, $0000, $0000) ; 0B - Bow -%InventoryItem($0C, $05, $0000, $0000) ; 0C - Blue Boomerang -%InventoryItem($0D, $05, $0000, $0000) ; 0D - Powder -%InventoryItem($0E, $01, $0000, $0000) ; 0E - Bottle refill (bee) -%InventoryItem($0F, $05, $0000, $0000) ; 0F - Bombos -%InventoryItem($10, $05, $0000, $0000) ; 10 - Ether -%InventoryItem($11, $05, $0000, $0000) ; 11 - Quake -%InventoryItem($12, $05, $0000, $0000) ; 12 - Lamp -%InventoryItem($13, $05, $0000, $0000) ; 13 - Shovel -%InventoryItem($14, $05, FluteTime, $0000) ; 14 - Flute (inactive) -%InventoryItem($15, $05, $0000, $0000) ; 15 - Somaria -%InventoryItem($16, $05, $0000, $0000) ; 16 - Bottle -%InventoryItem($17, $01, $0000, HeartPieceCounter) ; 17 - Heart piece -%InventoryItem($18, $05, $0000, $0000) ; 18 - Byrna -%InventoryItem($19, $05, $0000, $0000) ; 19 - Cape -%InventoryItem($1A, $05, MirrorTime, $0000) ; 1A - Mirror -%InventoryItem($1B, $09, $0000, $0000) ; 1B - Glove -%InventoryItem($1C, $09, $0000, $0000) ; 1C - Mitts -%InventoryItem($1D, $05, $0000, $0000) ; 1D - Book -%InventoryItem($1E, $09, $0000, $0000) ; 1E - Flippers -%InventoryItem($1F, $01, $0000, $0000) ; 1F - Pearl -%InventoryItem($20, $00, $0000, CrystalCounter) ; 20 - Crystal -%InventoryItem($21, $05, $0000, $0000) ; 21 - Net -%InventoryItem($22, $01, $0000, $0000) ; 22 - Blue mail -%InventoryItem($23, $01, $0000, $0000) ; 23 - Red mail -%InventoryItem($24, $01, $0000, SmallKeyCounter) ; 24 - Small key -%InventoryItem($25, $01, $0000, $0000) ; 25 - Compass -%InventoryItem($26, $00, $0000, $0000) ; 26 - Heart container from 4/4 -%InventoryItem($27, $15, $0000, $0000) ; 27 - Bomb -%InventoryItem($28, $15, $0000, $0000) ; 28 - 3 bombs -%InventoryItem($29, $05, $0000, $0000) ; 29 - Mushroom -%InventoryItem($2A, $05, $0000, $0000) ; 2A - Red boomerang -%InventoryItem($2B, $05, $0000, $0000) ; 2B - Full bottle (red) -%InventoryItem($2C, $05, $0000, $0000) ; 2C - Full bottle (green) -%InventoryItem($2D, $05, $0000, $0000) ; 2D - Full bottle (blue) -%InventoryItem($2E, $00, $0000, $0000) ; 2E - Potion refill (red) -%InventoryItem($2F, $00, $0000, $0000) ; 2F - Potion refill (green) -%InventoryItem($30, $00, $0000, $0000) ; 30 - Potion refill (blue) -%InventoryItem($31, $11, $0000, $0000) ; 31 - 10 bombs -%InventoryItem($32, $01, $0000, $0000) ; 32 - Big key -%InventoryItem($33, $01, $0000, $0000) ; 33 - Map -%InventoryItem($34, $01, $0000, $0000) ; 34 - 1 rupee -%InventoryItem($35, $01, $0000, $0000) ; 35 - 5 rupees -%InventoryItem($36, $01, $0000, $0000) ; 36 - 20 rupees -%InventoryItem($37, $00, $0000, PendantCounter) ; 37 - Green pendant -%InventoryItem($38, $00, $0000, PendantCounter) ; 38 - Blue pendant -%InventoryItem($39, $00, $0000, PendantCounter) ; 39 - Red pendant -%InventoryItem($3A, $25, $0000, $0000) ; 3A - Bow And Arrows -%InventoryItem($3B, $25, $0000, $0000) ; 3B - Silver Bow -%InventoryItem($3C, $05, $0000, $0000) ; 3C - Full bottle (bee) -%InventoryItem($3D, $05, $0000, $0000) ; 3D - Full bottle (fairy) -%InventoryItem($3E, $01, $0000, HeartContainerCounter) ; 3E - Boss heart -%InventoryItem($3F, $01, $0000, HeartContainerCounter) ; 3F - Sanc heart -%InventoryItem($40, $01, $0000, $0000) ; 40 - 100 rupees -%InventoryItem($41, $01, $0000, $0000) ; 41 - 50 rupees -%InventoryItem($42, $01, $0000, $0000) ; 42 - Heart -%InventoryItem($43, $01, $0000, $0000) ; 43 - Arrow -%InventoryItem($44, $01, $0000, $0000) ; 44 - 10 arrows -%InventoryItem($45, $01, $0000, $0000) ; 45 - Small magic -%InventoryItem($46, $01, $0000, $0000) ; 46 - 300 rupees -%InventoryItem($47, $01, $0000, $0000) ; 47 - 20 rupees green -%InventoryItem($48, $05, $0000, $0000) ; 48 - Full bottle (good bee) -%InventoryItem($49, $01, $0000, $0000) ; 49 - Tossed fighter sword -%InventoryItem($4A, $05, FluteTime, $0000) ; 4A - Active Flute -%InventoryItem($4B, $09, BootsTime, $0000) ; 4B - Boots -%InventoryItem($4C, $15, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50) -%InventoryItem($4D, $01, $0000, CapacityUpgrades) ; 4D - Arrow capacity (70) -%InventoryItem($4E, $01, $0000, CapacityUpgrades) ; 4E - 1/2 magic -%InventoryItem($4F, $01, $0000, CapacityUpgrades) ; 4F - 1/4 magic -%InventoryItem($50, $01, SwordTime, $0000) ; 50 - Master Sword (safe) -%InventoryItem($51, $15, $0000, CapacityUpgrades) ; 51 - Bomb capacity (+5) -%InventoryItem($52, $15, $0000, CapacityUpgrades) ; 52 - Bomb capacity (+10) -%InventoryItem($53, $01, $0000, CapacityUpgrades) ; 53 - Arrow capacity (+5) -%InventoryItem($54, $01, $0000, CapacityUpgrades) ; 54 - Arrow capacity (+10) -%InventoryItem($55, $01, $0000, $0000) ; 55 - Programmable item 1 -%InventoryItem($56, $01, $0000, $0000) ; 56 - Programmable item 2 -%InventoryItem($57, $01, $0000, $0000) ; 57 - Programmable item 3 -%InventoryItem($58, $01, $0000, $0000) ; 58 - Upgrade-only Silver Arrows -%InventoryItem($59, $01, $0000, $0000) ; 59 - Rupoor -%InventoryItem($5A, $01, $0000, $0000) ; 5A - Nothing -%InventoryItem($5B, $01, $0000, $0000) ; 5B - Red clock -%InventoryItem($5C, $01, $0000, $0000) ; 5C - Blue clock -%InventoryItem($5D, $01, $0000, $0000) ; 5D - Green clock -%InventoryItem($5E, $01, $0000, $0000) ; 5E - Progressive sword -%InventoryItem($5F, $01, $0000, $0000) ; 5F - Progressive shield -%InventoryItem($60, $01, $0000, $0000) ; 60 - Progressive armor -%InventoryItem($61, $09, $0000, $0000) ; 61 - Progressive glove -%InventoryItem($62, $01, $0000, $0000) ; 62 - RNG pool item (single) -%InventoryItem($63, $01, $0000, $0000) ; 63 - RNG pool item (multi) -%InventoryItem($64, $25, $0000, $0000) ; 64 - Progressive bow -%InventoryItem($65, $25, $0000, $0000) ; 65 - Progressive bow -%InventoryItem($66, $01, $0000, $0000) ; 66 - -%InventoryItem($67, $01, $0000, $0000) ; 67 - -%InventoryItem($68, $01, $0000, $0000) ; 68 - -%InventoryItem($69, $01, $0000, $0000) ; 69 - -%InventoryItem($6A, $01, $0000, $0000) ; 6A - Triforce -%InventoryItem($6B, $01, $0000, $0000) ; 6B - Power star -%InventoryItem($6C, $01, $0000, $0000) ; 6C - Triforce Piece -%InventoryItem($6D, $01, $0000, $0000) ; 6D - Server request item -%InventoryItem($6E, $01, $0000, $0000) ; 6E - Server request item (dungeon drop) -%InventoryItem($6F, $01, $0000, $0000) ; 6F - -%InventoryItem($70, $01, $0000, $0000) ; 70 - Map of Light World -%InventoryItem($71, $01, $0000, $0000) ; 71 - Map of Dark World -%InventoryItem($72, $01, $0000, $0000) ; 72 - Map of Ganon's Tower -%InventoryItem($73, $01, $0000, $0000) ; 73 - Map of Turtle Rock -%InventoryItem($74, $01, $0000, $0000) ; 74 - Map of Thieves' Town -%InventoryItem($75, $01, $0000, $0000) ; 75 - Map of Tower of Hera -%InventoryItem($76, $01, $0000, $0000) ; 76 - Map of Ice Palace -%InventoryItem($77, $01, $0000, $0000) ; 77 - Map of Skull Woods -%InventoryItem($78, $01, $0000, $0000) ; 78 - Map of Misery Mire -%InventoryItem($79, $01, $0000, $0000) ; 79 - Map of Dark Palace -%InventoryItem($7A, $01, $0000, $0000) ; 7A - Map of Swamp Palace -%InventoryItem($7B, $01, $0000, $0000) ; 7B - Map of Agahnim's Tower -%InventoryItem($7C, $01, $0000, $0000) ; 7C - Map of Desert Palace -%InventoryItem($7D, $01, $0000, $0000) ; 7D - Map of Eastern Palace -%InventoryItem($7E, $01, $0000, $0000) ; 7E - Map of Hyrule Castle -%InventoryItem($7F, $01, $0000, $0000) ; 7F - Map of Sewers -%InventoryItem($80, $01, $0000, $0000) ; 80 - Compass of Light World -%InventoryItem($81, $01, $0000, $0000) ; 81 - Compass of Dark World -%InventoryItem($82, $01, $0000, $0000) ; 82 - Compass of Ganon's Tower -%InventoryItem($83, $01, $0000, $0000) ; 83 - Compass of Turtle Rock -%InventoryItem($84, $01, $0000, $0000) ; 84 - Compass of Thieves' Town -%InventoryItem($85, $01, $0000, $0000) ; 85 - Compass of Tower of Hera -%InventoryItem($86, $01, $0000, $0000) ; 86 - Compass of Ice Palace -%InventoryItem($87, $01, $0000, $0000) ; 87 - Compass of Skull Woods -%InventoryItem($88, $01, $0000, $0000) ; 88 - Compass of Misery Mire -%InventoryItem($89, $01, $0000, $0000) ; 89 - Compass of Dark Palace -%InventoryItem($8A, $01, $0000, $0000) ; 8A - Compass of4Swamp Palace -%InventoryItem($8B, $01, $0000, $0000) ; 8B - Compass of Agahnim's Tower -%InventoryItem($8C, $01, $0000, $0000) ; 8C - Compass of Desert Palace -%InventoryItem($8D, $01, $0000, $0000) ; 8D - Compass of Eastern Palace -%InventoryItem($8E, $01, $0000, $0000) ; 8E - Compass of Hyrule Castle -%InventoryItem($8F, $01, $0000, $0000) ; 8F - Compass of Sewers -%InventoryItem($90, $01, $0000, $0000) ; 90 - Skull key -%InventoryItem($91, $01, $0000, $0000) ; 91 - Reserved -%InventoryItem($92, $01, $0000, $0000) ; 92 - Big key of Ganon's Tower -%InventoryItem($93, $01, $0000, $0000) ; 93 - Big key of Turtle Rock -%InventoryItem($94, $01, $0000, $0000) ; 94 - Big key of Thieves' Town -%InventoryItem($95, $01, $0000, $0000) ; 95 - Big key of Tower of Hera -%InventoryItem($96, $01, $0000, $0000) ; 96 - Big key of Ice Palace -%InventoryItem($97, $01, $0000, $0000) ; 97 - Big key of Skull Woods -%InventoryItem($98, $01, $0000, $0000) ; 98 - Big key of Misery Mire -%InventoryItem($99, $01, $0000, $0000) ; 99 - Big key of Dark Palace -%InventoryItem($9A, $01, $0000, $0000) ; 9A - Big key of Swamp Palace -%InventoryItem($9B, $01, $0000, $0000) ; 9B - Big key of Agahnim's Tower -%InventoryItem($9C, $01, $0000, $0000) ; 9C - Big key of Desert Palace -%InventoryItem($9D, $01, $0000, $0000) ; 9D - Big key of Eastern Palace -%InventoryItem($9E, $01, $0000, $0000) ; 9E - Big key of Hyrule Castle -%InventoryItem($9F, $01, $0000, $0000) ; 9F - Big key of Sewers -%InventoryItem($A0, $01, $0000, SmallKeyCounter) ; A0 - Small key of Sewers -%InventoryItem($A1, $01, $0000, SmallKeyCounter) ; A1 - Small key of Hyrule Castle -%InventoryItem($A2, $01, $0000, SmallKeyCounter) ; A2 - Small key of Eastern Palace -%InventoryItem($A3, $01, $0000, SmallKeyCounter) ; A3 - Small key of Desert Palace -%InventoryItem($A4, $01, $0000, SmallKeyCounter) ; A4 - Small key of Agahnim's Tower -%InventoryItem($A5, $01, $0000, SmallKeyCounter) ; A5 - Small key of Swamp Palace -%InventoryItem($A6, $01, $0000, SmallKeyCounter) ; A6 - Small key of Dark Palace -%InventoryItem($A7, $01, $0000, SmallKeyCounter) ; A7 - Small key of Misery Mire -%InventoryItem($A8, $01, $0000, SmallKeyCounter) ; A8 - Small key of Skull Woods -%InventoryItem($A9, $01, $0000, SmallKeyCounter) ; A9 - Small key of Ice Palace -%InventoryItem($AA, $01, $0000, SmallKeyCounter) ; AA - Small key of Tower of Hera -%InventoryItem($AB, $01, $0000, SmallKeyCounter) ; AB - Small key of Thieves' Town -%InventoryItem($AC, $01, $0000, SmallKeyCounter) ; AC - Small key of Turtle Rock -%InventoryItem($AD, $01, $0000, SmallKeyCounter) ; AD - Small key of Ganon's Tower -%InventoryItem($AE, $01, $0000, $0000) ; AE - Reserved -%InventoryItem($AF, $01, $0000, SmallKeyCounter) ; AF - Generic small key -%InventoryItem($B0, $01, $0000, $0000) ; B0 - -%InventoryItem($B1, $01, $0000, $0000) ; B1 - -%InventoryItem($B2, $01, $0000, $0000) ; B2 - -%InventoryItem($B3, $01, $0000, $0000) ; B3 - -%InventoryItem($B4, $01, $0000, $0000) ; B4 - -%InventoryItem($B5, $01, $0000, $0000) ; B5 - -%InventoryItem($B6, $01, $0000, $0000) ; B6 - -%InventoryItem($B7, $01, $0000, $0000) ; B7 - -%InventoryItem($B8, $01, $0000, $0000) ; B8 - -%InventoryItem($B9, $01, $0000, $0000) ; B9 - -%InventoryItem($BA, $01, $0000, $0000) ; BA - -%InventoryItem($BB, $01, $0000, $0000) ; BB - -%InventoryItem($BC, $01, $0000, $0000) ; BC - -%InventoryItem($BD, $01, $0000, $0000) ; BD - -%InventoryItem($BE, $01, $0000, $0000) ; BE - -%InventoryItem($BF, $01, $0000, $0000) ; BF - -%InventoryItem($C0, $01, $0000, $0000) ; C0 - -%InventoryItem($C1, $01, $0000, $0000) ; C1 - -%InventoryItem($C2, $01, $0000, $0000) ; C2 - -%InventoryItem($C3, $01, $0000, $0000) ; C3 - -%InventoryItem($C4, $01, $0000, $0000) ; C4 - -%InventoryItem($C5, $01, $0000, $0000) ; C5 - -%InventoryItem($C6, $01, $0000, $0000) ; C6 - -%InventoryItem($C7, $01, $0000, $0000) ; C7 - -%InventoryItem($C8, $01, $0000, $0000) ; C8 - -%InventoryItem($C9, $01, $0000, $0000) ; C9 - -%InventoryItem($CA, $01, $0000, $0000) ; CA - -%InventoryItem($CB, $01, $0000, $0000) ; CB - -%InventoryItem($CC, $01, $0000, $0000) ; CC - -%InventoryItem($CD, $01, $0000, $0000) ; CD - -%InventoryItem($CE, $01, $0000, $0000) ; CE - -%InventoryItem($CF, $01, $0000, $0000) ; CF - -%InventoryItem($D0, $01, $0000, $0000) ; D0 - -%InventoryItem($D1, $01, $0000, $0000) ; D1 - -%InventoryItem($D2, $01, $0000, $0000) ; D2 - -%InventoryItem($D3, $01, $0000, $0000) ; D3 - -%InventoryItem($D4, $01, $0000, $0000) ; D4 - -%InventoryItem($D5, $01, $0000, $0000) ; D5 - -%InventoryItem($D6, $01, $0000, $0000) ; D6 - -%InventoryItem($D7, $01, $0000, $0000) ; D7 - -%InventoryItem($D8, $01, $0000, $0000) ; D8 - -%InventoryItem($D9, $01, $0000, $0000) ; D9 - -%InventoryItem($DA, $01, $0000, $0000) ; DA - -%InventoryItem($DB, $01, $0000, $0000) ; DB - -%InventoryItem($DC, $01, $0000, $0000) ; DC - -%InventoryItem($DD, $01, $0000, $0000) ; DD - -%InventoryItem($DE, $01, $0000, $0000) ; DE - -%InventoryItem($DF, $01, $0000, $0000) ; DF - -%InventoryItem($E0, $01, $0000, $0000) ; E0 - -%InventoryItem($E1, $01, $0000, $0000) ; E1 - -%InventoryItem($E2, $01, $0000, $0000) ; E2 - -%InventoryItem($E3, $01, $0000, $0000) ; E3 - -%InventoryItem($E4, $01, $0000, $0000) ; E4 - -%InventoryItem($E5, $01, $0000, $0000) ; E5 - -%InventoryItem($E6, $01, $0000, $0000) ; E6 - -%InventoryItem($E7, $01, $0000, $0000) ; E7 - -%InventoryItem($E8, $01, $0000, $0000) ; E8 - -%InventoryItem($E9, $01, $0000, $0000) ; E9 - -%InventoryItem($EA, $01, $0000, $0000) ; EA - -%InventoryItem($EB, $01, $0000, $0000) ; EB - -%InventoryItem($EC, $01, $0000, $0000) ; EC - -%InventoryItem($ED, $01, $0000, $0000) ; ED - -%InventoryItem($EE, $01, $0000, $0000) ; EE - -%InventoryItem($EF, $01, $0000, $0000) ; EF - -%InventoryItem($F0, $01, $0000, $0000) ; F0 - -%InventoryItem($F1, $01, $0000, $0000) ; F1 - -%InventoryItem($F2, $01, $0000, $0000) ; F2 - -%InventoryItem($F3, $01, $0000, $0000) ; F3 - -%InventoryItem($F4, $01, $0000, $0000) ; F4 - -%InventoryItem($F5, $01, $0000, $0000) ; F5 - -%InventoryItem($F6, $01, $0000, $0000) ; F6 - -%InventoryItem($F7, $01, $0000, $0000) ; F7 - -%InventoryItem($F8, $01, $0000, $0000) ; F8 - -%InventoryItem($F9, $01, $0000, $0000) ; F9 - -%InventoryItem($FA, $01, $0000, $0000) ; FA - -%InventoryItem($FB, $01, $0000, $0000) ; FB - -%InventoryItem($FC, $01, $0000, $0000) ; FC - -%InventoryItem($FD, $01, $0000, $0000) ; FD - -%InventoryItem($FE, $01, $0000, $0000) ; FE - Server request (async) -%InventoryItem($FF, $01, $0000, $0000) ; FF - - IncrementBossSword: PHX LDA.l SwordEquipment : CMP.b #$FF : BNE + @@ -741,7 +467,7 @@ ClearOWKeys: JSL.l TurtleRockEntranceFix JSL.l FakeWorldFix - JSR.w FixBunnyOnExitToLightWorld + JSL.l FixBunnyOnExitToLightWorld LDA.l GenericKeys : BEQ + PLA : LDA.l CurrentGenericKeys : STA.l CurrentSmallKeys RTL diff --git a/itemdatatables.asm b/itemdatatables.asm new file mode 100644 index 0000000..b228022 --- /dev/null +++ b/itemdatatables.asm @@ -0,0 +1,1371 @@ +ItemReceipts: + .offset_y : fillbyte $00 : fill 256 + .offset_x : fillbyte $00 : fill 256 + .graphics : fillbyte $00 : fill 256 ; item_graphics_indices + .width : fillbyte $00 : fill 256 ; wide_item_flag + .target : fillword $0000 : fill 256*2 ; item_target_addr + .value : fillbyte $00 : fill 256 ; item_values + .behavior : fillword $0000 : fill 256*2 ; ItemBehavior + .resolution : fillword $0000 : fill 256*2 ; ReceiptResolution + + +macro ReceiptProps(id, y, x, gfx, sram, value, behavior, res) + pushpc + + org ItemReceipts_offset_y+ : db + org ItemReceipts_offset_x+ : db + org ItemReceipts_graphics+ : db + org ItemReceipts_target++ : dw + org ItemReceipts_value+ : db + org ItemReceipts_behavior++ : dw ItemBehavior_ + org ItemReceipts_resolution++ : dw ResolveLootID_ + + pullpc +endmacro + +%ReceiptProps($00, -5, 0, $06, $F359, $01, sword_shield, skip) ; 00 - Fighter sword & Shield +%ReceiptProps($01, -5, 4, $18, $F359, $02, master_sword, skip) ; 01 - Master sword +%ReceiptProps($02, -5, 4, $18, $F359, $03, tempered_sword, skip) ; 02 - Tempered sword +%ReceiptProps($03, -5, 4, $18, $F359, $04, gold_sword, skip) ; 03 - Golden sword +%ReceiptProps($04, -5, 4, $2D, $F35A, $01, fighter_shield, skip) ; 04 - Fighter shield +%ReceiptProps($05, -4, 0, $20, $F35A, $02, red_shield, skip) ; 05 - Fire shield +%ReceiptProps($06, -4, 0, $2E, $F35A, $03, mirror_shield, skip) ; 06 - Mirror shield +%ReceiptProps($07, -5, 4, $09, $F345, $01, skip, skip) ; 07 - Fire rod +%ReceiptProps($08, -5, 4, $09, $F346, $01, skip, skip) ; 08 - Ice rod +%ReceiptProps($09, -4, 4, $0A, $F34B, $01, skip, skip) ; 09 - Hammer +%ReceiptProps($0A, -4, 4, $08, $F342, $01, skip, skip) ; 0A - Hookshot +%ReceiptProps($0B, -4, 4, $05, $F340, $01, bow, skip) ; 0B - Bow +%ReceiptProps($0C, -2, 5, $10, $F341, $01, blue_boomerang, skip) ; 0C - Blue Boomerang +%ReceiptProps($0D, -4, 0, $0B, $F344, $02, powder, skip) ; 0D - Powder +%ReceiptProps($0E, -4, 0, $2C, $F35C, $FF, skip, skip) ; 0E - Bottle refill (bee) +%ReceiptProps($0F, -4, 0, $1B, $F347, $01, skip, skip) ; 0F - Bombos +%ReceiptProps($10, -4, 0, $1A, $F348, $01, skip, skip) ; 10 - Ether +%ReceiptProps($11, -4, 0, $1C, $F349, $01, skip, skip) ; 11 - Quake +%ReceiptProps($12, -4, 0, $14, $F34A, $01, skip, skip) ; 12 - Lamp +%ReceiptProps($13, -4, 4, $19, $F34C, $01, skip, skip) ; 13 - Shovel +%ReceiptProps($14, -4, 0, $0C, $F34C, $02, flute_inactive, skip) ; 14 - Flute +%ReceiptProps($15, -4, 4, $07, $F350, $01, skip, skip) ; 15 - Somaria +%ReceiptProps($16, -4, 0, $1D, $F35C, $FF, skip, bottles) ; 16 - Bottle +%ReceiptProps($17, -4, 0, $2F, $F36B, $FF, skip, skip) ; 17 - Heart piece +%ReceiptProps($18, -4, 4, $07, $F351, $01, skip, skip) ; 18 - Byrna +%ReceiptProps($19, -4, 0, $15, $F352, $01, skip, skip) ; 19 - Cape +%ReceiptProps($1A, -4, 0, $12, $F353, $02, skip, skip) ; 1A - Mirror +%ReceiptProps($1B, -4, 0, $0D, $F354, $01, skip, skip) ; 1B - Glove +%ReceiptProps($1C, -4, 0, $0D, $F354, $02, skip, skip) ; 1C - Mitts +%ReceiptProps($1D, -4, 0, $0E, $F34E, $01, skip, skip) ; 1D - Book +%ReceiptProps($1E, -4, 0, $11, $F356, $01, skip, skip) ; 1E - Flippers +%ReceiptProps($1F, -4, 0, $17, $F357, $01, skip, skip) ; 1F - Pearl +%ReceiptProps($20, -4, 0, $28, $F37A, $FF, skip, skip) ; 20 - Crystal +%ReceiptProps($21, -4, 0, $27, $F34D, $01, skip, skip) ; 21 - Net +%ReceiptProps($22, -4, 0, $04, $F35B, $FF, blue_mail, skip) ; 22 - Blue mail +%ReceiptProps($23, -5, 0, $04, $F35B, $02, red_mail, skip) ; 23 - Red mail +%ReceiptProps($24, -4, 4, $0F, $F36F, $FF, skip, skip) ; 24 - Small key +%ReceiptProps($25, -4, 0, $16, $F364, $FF, dungeon_compass, skip) ; 25 - Compass +%ReceiptProps($26, -4, 0, $03, $F36C, $FF, skip, skip) ; 26 - Heart container from 4/4 +%ReceiptProps($27, -4, 0, $13, $F375, $FF, skip, skip) ; 27 - Bomb +%ReceiptProps($28, -4, 0, $01, $F375, $FF, skip, skip) ; 28 - 3 bombs +%ReceiptProps($29, -4, 0, $1E, $F344, $FF, mushroom, skip) ; 29 - Mushroom +%ReceiptProps($2A, -2, 5, $10, $F341, $02, red_boomerang, skip) ; 2A - Red boomerang +%ReceiptProps($2B, -4, 0, $00, $F35C, $FF, skip, bottles) ; 2B - Full bottle (red) +%ReceiptProps($2C, -4, 0, $00, $F35C, $FF, skip, bottles) ; 2C - Full bottle (green) +%ReceiptProps($2D, -4, 0, $00, $F35C, $FF, skip, bottles) ; 2D - Full bottle (blue) +%ReceiptProps($2E, -4, 0, $00, $F36D, $FF, skip, bottles) ; 2E - Potion refill (red) +%ReceiptProps($2F, -4, 0, $00, $F36E, $FF, skip, bottles) ; 2F - Potion refill (green) +%ReceiptProps($30, -4, 0, $00, $F36E, $FF, skip, bottles) ; 30 - Potion refill (blue) +%ReceiptProps($31, -4, 0, $30, $F375, $FF, skip, skip) ; 31 - 10 bombs +%ReceiptProps($32, -4, 0, $22, $F366, $FF, dungeon_bigkey, skip) ; 32 - Big key +%ReceiptProps($33, -4, 0, $21, $F368, $FF, dungeon_map, skip) ; 33 - Map +%ReceiptProps($34, -2, 4, $24, $F360, $FF, skip, skip) ; 34 - 1 rupee +%ReceiptProps($35, -2, 4, $24, $F360, $FF, skip, skip) ; 35 - 5 rupees +%ReceiptProps($36, -2, 4, $24, $F360, $EC, skip, skip) ; 36 - 20 rupees +%ReceiptProps($37, -4, 0, $23, $F374, $FF, skip, skip) ; 37 - Green pendant +%ReceiptProps($38, -4, 0, $23, $F374, $FF, skip, skip) ; 38 - Red pendant +%ReceiptProps($39, -4, 0, $23, $F374, $FF, skip, skip) ; 39 - Blue pendant +%ReceiptProps($3A, -4, 0, $29, $F340, $01, bow_and_arrows, skip) ; 3A - Bow And Arrows +%ReceiptProps($3B, -4, 0, $2A, $F340, $03, silver_bow, skip) ; 3B - Silver Bow +%ReceiptProps($3C, -4, 0, $2C, $F35C, $FF, skip, skip) ; 3C - Full bottle (bee) +%ReceiptProps($3D, -4, 0, $2B, $F35C, $FF, skip, skip) ; 3D - Full bottle (fairy) +%ReceiptProps($3E, -4, 0, $03, $F36C, $FF, skip, skip) ; 3E - Boss heart +%ReceiptProps($3F, -4, 0, $03, $F36C, $FF, skip, skip) ; 3F - Sanc heart +%ReceiptProps($40, -4, 0, $34, $F360, $9C, skip, skip) ; 40 - 100 rupees +%ReceiptProps($41, -4, 0, $35, $F360, $CE, skip, skip) ; 41 - 50 rupees +%ReceiptProps($42, -2, 4, $31, $F372, $FF, skip, skip) ; 42 - Heart +%ReceiptProps($43, -2, 4, $33, $F376, $01, skip, skip) ; 43 - Arrow +%ReceiptProps($44, -4, 0, $02, $F376, $0A, skip, skip) ; 44 - 10 arrows +%ReceiptProps($45, -2, 4, $32, $F373, $FF, skip, skip) ; 45 - Small magic +%ReceiptProps($46, -4, 0, $36, $F360, $FF, skip, skip) ; 46 - 300 rupees +%ReceiptProps($47, -4, 0, $37, $F360, $FF, skip, skip) ; 47 - 20 rupees green +%ReceiptProps($48, -4, 0, $2C, $F35C, $FF, skip, skip) ; 48 - Full bottle (good bee) +%ReceiptProps($49, -5, 4, $06, $F359, $01, fighter_sword, skip) ; 49 - Tossed fighter sword +%ReceiptProps($4A, -4, 0, $0C, $F34C, $03, flute_active, skip) ; 4A - Active Flute +%ReceiptProps($4B, -4, 0, $38, $F355, $01, skip, skip) ; 4B - Boots +%ReceiptProps($4C, -4, 0, $39, $F375, $32, bombs_50, skip) ; 4C - Bomb capacity (50) +%ReceiptProps($4D, -4, 0, $3A, $F376, $46, arrows_70, skip) ; 4D - Arrow capacity (70) +%ReceiptProps($4E, -4, 0, $3B, $F373, $80, magic_2, magic) ; 4E - 1/2 magic +%ReceiptProps($4F, -4, 0, $3C, $F373, $80, magic_4, magic) ; 4F - 1/4 magic +%ReceiptProps($50, -5, 4, $18, $F359, $02, master_sword_safe, skip) ; 50 - Safe master sword +%ReceiptProps($51, -4, 0, $42, $F375, $FF, bombs_5, skip) ; 51 - Bomb capacity (+5) +%ReceiptProps($52, -4, 0, $3E, $F375, $FF, bombs_10, skip) ; 52 - Bomb capacity (+10) +%ReceiptProps($53, -4, 0, $3F, $F376, $FF, arrows_5, skip) ; 53 - Arrow capacity (+5) +%ReceiptProps($54, -4, 0, $40, $F376, $FF, arrows_10, skip) ; 54 - Arrow capacity (+10) +%ReceiptProps($55, -4, 0, $00, $F41A, $FF, programmable_1, skip) ; 55 - Programmable item 1 +%ReceiptProps($56, -4, 0, $00, $F41C, $FF, programmable_2, skip) ; 56 - Programmable item 2 +%ReceiptProps($57, -4, 0, $00, $F41E, $FF, programmable_3, skip) ; 57 - Programmable item 3 +%ReceiptProps($58, -4, 0, $41, $F340, $FF, silver_arrows, skip) ; 58 - Upgrade-only Silver Arrows +%ReceiptProps($59, -4, 4, $24, $F360, $FF, rupoor, skip) ; 59 - Rupoor +%ReceiptProps($5A, -4, 0, $47, $F36A, $FF, skip, skip) ; 5A - Nothing +%ReceiptProps($5B, -4, 0, $4B, $F454, $FF, red_clock, skip) ; 5B - Red clock +%ReceiptProps($5C, -4, 0, $4B, $F454, $FF, blue_clock, skip) ; 5C - Blue clock +%ReceiptProps($5D, -4, 0, $4B, $F454, $FF, green_clock, skip) ; 5D - Green clock +%ReceiptProps($5E, -4, 0, $FE, $F359, $FF, prog_sword, prog_sword) ; 5E - Progressive sword +%ReceiptProps($5F, -4, 0, $FF, $F35A, $FF, prog_shield, shields) ; 5F - Progressive shield +%ReceiptProps($60, -4, 0, $FD, $F35B, $FF, prog_mail, armor) ; 60 - Progressive armor +%ReceiptProps($61, -4, 0, $0D, $F354, $FF, skip, gloves) ; 61 - Progressive glove +%ReceiptProps($62, -4, 0, $FF, $F36A, $FF, skip, rng_single) ; 62 - RNG pool item (single) +%ReceiptProps($63, -4, 0, $FF, $F36A, $FF, skip, rng_multi) ; 63 - RNG pool item (multi) +%ReceiptProps($64, -4, 0, $FF, $F340, $FF, skip, progressive_bow) ; 64 - Progressive bow +%ReceiptProps($65, -4, 0, $FF, $F340, $FF, skip, progressive_bow_2) ; 65 - Progressive bow +%ReceiptProps($66, -4, 0, $FF, $F36A, $FF, skip, skip) ; 66 - +%ReceiptProps($67, -4, 0, $FF, $F36A, $FF, skip, skip) ; 67 - +%ReceiptProps($68, -4, 0, $FF, $F36A, $FF, skip, skip) ; 68 - +%ReceiptProps($69, -4, 0, $FF, $F36A, $FF, skip, skip) ; 69 - +%ReceiptProps($6A, -4, 0, $49, $F36A, $FF, triforce, skip) ; 6A - Triforce +%ReceiptProps($6B, -4, 0, $50, $F36A, $FF, goal_item, skip) ; 6B - Power star +%ReceiptProps($6C, -4, 0, $49, $F36A, $FF, goal_item, skip) ; 6C - Triforce Piece +%ReceiptProps($6D, -4, 0, $FF, $F36A, $FF, request_F0, skip) ; 6D - Server request item +%ReceiptProps($6E, -4, 0, $FF, $F36A, $FF, request_F1, skip) ; 6E - Server request item (dungeon drop) +%ReceiptProps($6F, -4, 0, $FF, $F36A, $FF, request_F2, skip) ; 6F - +%ReceiptProps($70, -4, 0, $21, $F36A, $FF, free_map, skip) ; 70 - Map of Light World +%ReceiptProps($71, -4, 0, $21, $F36A, $FF, free_map, skip) ; 71 - Map of Dark World +%ReceiptProps($72, -4, 0, $21, $F36A, $FF, free_map, skip) ; 72 - Map of Ganon's Tower +%ReceiptProps($73, -4, 0, $21, $F36A, $FF, free_map, skip) ; 73 - Map of Turtle Rock +%ReceiptProps($74, -4, 0, $21, $F36A, $FF, free_map, skip) ; 74 - Map of Thieves' Town +%ReceiptProps($75, -4, 0, $21, $F36A, $FF, free_map, skip) ; 75 - Map of Tower of Hera +%ReceiptProps($76, -4, 0, $21, $F36A, $FF, free_map, skip) ; 76 - Map of Ice Palace +%ReceiptProps($77, -4, 0, $21, $F36A, $FF, free_map, skip) ; 77 - Map of Skull Woods +%ReceiptProps($78, -4, 0, $21, $F36A, $FF, free_map, skip) ; 78 - Map of Misery Mire +%ReceiptProps($79, -4, 0, $21, $F36A, $FF, free_map, skip) ; 79 - Map of Dark Palace +%ReceiptProps($7A, -4, 0, $21, $F36A, $FF, free_map, skip) ; 7A - Map of Swamp Palace +%ReceiptProps($7B, -4, 0, $21, $F36A, $FF, free_map, skip) ; 7B - Map of Agahnim's Tower +%ReceiptProps($7C, -4, 0, $21, $F36A, $FF, free_map, skip) ; 7C - Map of Desert Palace +%ReceiptProps($7D, -4, 0, $21, $F36A, $FF, free_map, skip) ; 7D - Map of Eastern Palace +%ReceiptProps($7E, -4, 0, $21, $F36A, $FF, hc_map, skip) ; 7E - Map of Hyrule Castle +%ReceiptProps($7F, -4, 0, $21, $F36A, $FF, hc_map, skip) ; 7F - Map of Sewers +%ReceiptProps($80, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 80 - Compass of Light World +%ReceiptProps($81, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 81 - Compass of Dark World +%ReceiptProps($82, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 82 - Compass of Ganon's Tower +%ReceiptProps($83, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 83 - Compass of Turtle Rock +%ReceiptProps($84, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 84 - Compass of Thieves' Town +%ReceiptProps($85, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 85 - Compass of Tower of Hera +%ReceiptProps($86, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 86 - Compass of Ice Palace +%ReceiptProps($87, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 87 - Compass of Skull Woods +%ReceiptProps($88, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 88 - Compass of Misery Mire +%ReceiptProps($89, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 89 - Compass of Dark Palace +%ReceiptProps($8A, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 8A - Compass of Swamp Palace +%ReceiptProps($8B, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 8B - Compass of Agahnim's Tower +%ReceiptProps($8C, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 8C - Compass of Desert Palace +%ReceiptProps($8D, -4, 0, $16, $F36A, $FF, free_compass, skip) ; 8D - Compass of Eastern Palace +%ReceiptProps($8E, -4, 0, $16, $F36A, $FF, hc_compass, skip) ; 8E - Compass of Hyrule Castle +%ReceiptProps($8F, -4, 0, $16, $F36A, $FF, hc_compass, skip) ; 8F - Compass of Sewers +%ReceiptProps($90, -4, 0, $22, $F36A, $FF, skip, skip) ; 90 - Skull key +%ReceiptProps($91, -4, 0, $22, $F36A, $FF, skip, skip) ; 91 - Reserved +%ReceiptProps($92, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 92 - Big key of Ganon's Tower +%ReceiptProps($93, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 93 - Big key of Turtle Rock +%ReceiptProps($94, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 94 - Big key of Thieves' Town +%ReceiptProps($95, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 95 - Big key of Tower of Hera +%ReceiptProps($96, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 96 - Big key of Ice Palace +%ReceiptProps($97, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 97 - Big key of Skull Woods +%ReceiptProps($98, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 98 - Big key of Misery Mire +%ReceiptProps($99, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 99 - Big key of Dark Palace +%ReceiptProps($9A, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 9A - Big key of Swamp Palace +%ReceiptProps($9B, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 9B - Big key of Agahnim's Tower +%ReceiptProps($9C, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 9C - Big key of Desert Palace +%ReceiptProps($9D, -4, 0, $22, $F36A, $FF, free_bigkey, skip) ; 9D - Big key of Eastern Palace +%ReceiptProps($9E, -4, 0, $22, $F36A, $FF, hc_bigkey, skip) ; 9E - Big key of Hyrule Castle +%ReceiptProps($9F, -4, 0, $22, $F36A, $FF, hc_bigkey, skip) ; 9F - Big key of Sewers +%ReceiptProps($A0, -4, 4, $0F, $F36A, $FF, hc_smallkey, skip) ; A0 - Small key of Sewers +%ReceiptProps($A1, -4, 4, $0F, $F36A, $FF, hc_smallkey, skip) ; A1 - Small key of Hyrule Castle +%ReceiptProps($A2, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A2 - Small key of Eastern Palace +%ReceiptProps($A3, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A3 - Small key of Desert Palace +%ReceiptProps($A4, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A4 - Small key of Agahnim's Tower +%ReceiptProps($A5, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A5 - Small key of Swamp Palace +%ReceiptProps($A6, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A6 - Small key of Dark Palace +%ReceiptProps($A7, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A7 - Small key of Misery Mire +%ReceiptProps($A8, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A8 - Small key of Skull Woods +%ReceiptProps($A9, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; A9 - Small key of Ice Palace +%ReceiptProps($AA, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; AA - Small key of Tower of Hera +%ReceiptProps($AB, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; AB - Small key of Thieves' Town +%ReceiptProps($AC, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; AC - Small key of Turtle Rock +%ReceiptProps($AD, -4, 4, $0F, $F36A, $FF, free_smallkey, skip) ; AD - Small key of Ganon's Tower +%ReceiptProps($AE, -4, 4, $0F, $F36A, $FF, skip, skip) ; AE - Reserved +%ReceiptProps($AF, -4, 4, $0F, $F36A, $FF, generic_smallkey, skip) ; AF - Generic small key +%ReceiptProps($B0, -4, 0, $49, $F36A, $FF, skip, skip) ; B0 - +%ReceiptProps($B1, -4, 0, $49, $F36A, $FF, skip, skip) ; B1 - +%ReceiptProps($B2, -4, 0, $49, $F36A, $FF, skip, skip) ; B2 - +%ReceiptProps($B3, -4, 0, $49, $F36A, $FF, skip, skip) ; B3 - +%ReceiptProps($B4, -4, 0, $49, $F36A, $FF, skip, skip) ; B4 - +%ReceiptProps($B5, -4, 0, $49, $F36A, $FF, skip, skip) ; B5 - +%ReceiptProps($B6, -4, 0, $49, $F36A, $FF, skip, skip) ; B6 - +%ReceiptProps($B7, -4, 0, $49, $F36A, $FF, skip, skip) ; B7 - +%ReceiptProps($B8, -4, 0, $49, $F36A, $FF, skip, skip) ; B8 - +%ReceiptProps($B9, -4, 0, $49, $F36A, $FF, skip, skip) ; B9 - +%ReceiptProps($BA, -4, 0, $49, $F36A, $FF, skip, skip) ; BA - +%ReceiptProps($BB, -4, 0, $49, $F36A, $FF, skip, skip) ; BB - +%ReceiptProps($BC, -4, 0, $49, $F36A, $FF, skip, skip) ; BC - +%ReceiptProps($BD, -4, 0, $49, $F36A, $FF, skip, skip) ; BD - +%ReceiptProps($BE, -4, 0, $49, $F36A, $FF, skip, skip) ; BE - +%ReceiptProps($BF, -4, 0, $49, $F36A, $FF, skip, skip) ; BF - +%ReceiptProps($C0, -4, 0, $49, $F36A, $FF, skip, skip) ; C0 - +%ReceiptProps($C1, -4, 0, $49, $F36A, $FF, skip, skip) ; C1 - +%ReceiptProps($C2, -4, 0, $49, $F36A, $FF, skip, skip) ; C2 - +%ReceiptProps($C3, -4, 0, $49, $F36A, $FF, skip, skip) ; C3 - +%ReceiptProps($C4, -4, 0, $49, $F36A, $FF, skip, skip) ; C4 - +%ReceiptProps($C5, -4, 0, $49, $F36A, $FF, skip, skip) ; C5 - +%ReceiptProps($C6, -4, 0, $49, $F36A, $FF, skip, skip) ; C6 - +%ReceiptProps($C7, -4, 0, $49, $F36A, $FF, skip, skip) ; C7 - +%ReceiptProps($C8, -4, 0, $49, $F36A, $FF, skip, skip) ; C8 - +%ReceiptProps($C9, -4, 0, $49, $F36A, $FF, skip, skip) ; C9 - +%ReceiptProps($CA, -4, 0, $49, $F36A, $FF, skip, skip) ; CA - +%ReceiptProps($CB, -4, 0, $49, $F36A, $FF, skip, skip) ; CB - +%ReceiptProps($CC, -4, 0, $49, $F36A, $FF, skip, skip) ; CC - +%ReceiptProps($CD, -4, 0, $49, $F36A, $FF, skip, skip) ; CD - +%ReceiptProps($CE, -4, 0, $49, $F36A, $FF, skip, skip) ; CE - +%ReceiptProps($CF, -4, 0, $49, $F36A, $FF, skip, skip) ; CF - +%ReceiptProps($D0, -4, 0, $49, $F36A, $FF, skip, skip) ; D0 - +%ReceiptProps($D1, -4, 0, $49, $F36A, $FF, skip, skip) ; D1 - +%ReceiptProps($D2, -4, 0, $49, $F36A, $FF, skip, skip) ; D2 - +%ReceiptProps($D3, -4, 0, $49, $F36A, $FF, skip, skip) ; D3 - +%ReceiptProps($D4, -4, 0, $49, $F36A, $FF, skip, skip) ; D4 - +%ReceiptProps($D5, -4, 0, $49, $F36A, $FF, skip, skip) ; D5 - +%ReceiptProps($D6, -4, 0, $49, $F36A, $FF, skip, skip) ; D6 - +%ReceiptProps($D7, -4, 0, $49, $F36A, $FF, skip, skip) ; D7 - +%ReceiptProps($D8, -4, 0, $49, $F36A, $FF, skip, skip) ; D8 - +%ReceiptProps($D9, -4, 0, $49, $F36A, $FF, skip, skip) ; D9 - +%ReceiptProps($DA, -4, 0, $49, $F36A, $FF, skip, skip) ; DA - +%ReceiptProps($DB, -4, 0, $49, $F36A, $FF, skip, skip) ; DB - +%ReceiptProps($DC, -4, 0, $49, $F36A, $FF, skip, skip) ; DC - +%ReceiptProps($DD, -4, 0, $49, $F36A, $FF, skip, skip) ; DD - +%ReceiptProps($DE, -4, 0, $49, $F36A, $FF, skip, skip) ; DE - +%ReceiptProps($DF, -4, 0, $49, $F36A, $FF, skip, skip) ; DF - +%ReceiptProps($E0, -4, 0, $49, $F36A, $FF, skip, skip) ; E0 - +%ReceiptProps($E1, -4, 0, $49, $F36A, $FF, skip, skip) ; E1 - +%ReceiptProps($E2, -4, 0, $49, $F36A, $FF, skip, skip) ; E2 - +%ReceiptProps($E3, -4, 0, $49, $F36A, $FF, skip, skip) ; E3 - +%ReceiptProps($E4, -4, 0, $49, $F36A, $FF, skip, skip) ; E4 - +%ReceiptProps($E5, -4, 0, $49, $F36A, $FF, skip, skip) ; E5 - +%ReceiptProps($E6, -4, 0, $49, $F36A, $FF, skip, skip) ; E6 - +%ReceiptProps($E7, -4, 0, $49, $F36A, $FF, skip, skip) ; E7 - +%ReceiptProps($E8, -4, 0, $49, $F36A, $FF, skip, skip) ; E8 - +%ReceiptProps($E9, -4, 0, $49, $F36A, $FF, skip, skip) ; E9 - +%ReceiptProps($EA, -4, 0, $49, $F36A, $FF, skip, skip) ; EA - +%ReceiptProps($EB, -4, 0, $49, $F36A, $FF, skip, skip) ; EB - +%ReceiptProps($EC, -4, 0, $49, $F36A, $FF, skip, skip) ; EC - +%ReceiptProps($ED, -4, 0, $49, $F36A, $FF, skip, skip) ; ED - +%ReceiptProps($EE, -4, 0, $49, $F36A, $FF, skip, skip) ; EE - +%ReceiptProps($EF, -4, 0, $49, $F36A, $FF, skip, skip) ; EF - +%ReceiptProps($F0, -4, 0, $49, $F36A, $FF, skip, skip) ; F0 - +%ReceiptProps($F1, -4, 0, $49, $F36A, $FF, skip, skip) ; F1 - +%ReceiptProps($F2, -4, 0, $49, $F36A, $FF, skip, skip) ; F2 - +%ReceiptProps($F3, -4, 0, $49, $F36A, $FF, skip, skip) ; F3 - +%ReceiptProps($F4, -4, 0, $49, $F36A, $FF, skip, skip) ; F4 - +%ReceiptProps($F5, -4, 0, $49, $F36A, $FF, skip, skip) ; F5 - +%ReceiptProps($F6, -4, 0, $49, $F36A, $FF, skip, skip) ; F6 - +%ReceiptProps($F7, -4, 0, $49, $F36A, $FF, skip, skip) ; F7 - +%ReceiptProps($F8, -4, 0, $49, $F36A, $FF, skip, skip) ; F8 - +%ReceiptProps($F9, -4, 0, $49, $F36A, $FF, skip, skip) ; F9 - +%ReceiptProps($FA, -4, 0, $49, $F36A, $FF, skip, skip) ; FA - +%ReceiptProps($FB, -4, 0, $49, $F36A, $FF, skip, skip) ; FB - +%ReceiptProps($FC, -4, 0, $49, $F36A, $FF, skip, skip) ; FC - +%ReceiptProps($FD, -4, 0, $49, $F36A, $FF, skip, skip) ; FD - +%ReceiptProps($FE, -4, 0, $49, $F36A, $FF, skip, skip) ; FE - Server request (async) +%ReceiptProps($FF, -4, 0, $49, $F36A, $FF, skip, skip) ; FF - + +;------------------------------------------------------------------------------ +; Palettes: l - - - - c c c +; c = Color Index | l = Load palette data from ROM +SpriteProperties: + .chest_width : fillbyte $00 : fill 256 + .standing_width : fillbyte $00 : fill 256 + .chest_palette : fillbyte $00 : fill 256 + .standing_palette : fillbyte $00 : fill 256 + .palette_addr : fillword $0000 : fill 256*2 ; bank $9B + +macro SpriteProps(id, chest_width, standing_width, chest_pal, standing_pal, addr) + pushpc + + org SpriteProperties_chest_width+ : db + org SpriteProperties_standing_width+ : db + org SpriteProperties_chest_palette+ : db + org SpriteProperties_standing_palette+ : db + org SpriteProperties_palette_addr++ : dw + + pullpc +endmacro + +%SpriteProps($00, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 00 - Fighter sword & Shield +%SpriteProps($01, 0, 2, $05, $05, PalettesCustom_master_sword) ; 01 - Master sword +%SpriteProps($02, 0, 2, $05, $01, PalettesCustom_tempered_sword) ; 02 - Tempered sword +%SpriteProps($03, 0, 2, $05, $05, PalettesCustom_golden_sword) ; 03 - Golden sword +%SpriteProps($04, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 04 - Fighter shield +%SpriteProps($05, 2, 2, $05, $80, PalettesCustom_red_shield) ; 05 - Fire shield +%SpriteProps($06, 2, 2, $05, $80, PalettesCustom_mirror_shield) ; 06 - Mirror shield +%SpriteProps($07, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 07 - Fire rod +%SpriteProps($08, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 08 - Ice rod +%SpriteProps($09, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 09 - Hammer +%SpriteProps($0A, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 0A - Hookshot +%SpriteProps($0B, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 0B - Bow +%SpriteProps($0C, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 0C - Blue Boomerang +%SpriteProps($0D, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 0D - Powder +%SpriteProps($0E, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 0E - Bottle refill (bee) +%SpriteProps($0F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 0F - Bombos +%SpriteProps($10, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 10 - Ether +%SpriteProps($11, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 11 - Quake +%SpriteProps($12, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 12 - Lamp +%SpriteProps($13, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 13 - Shovel +%SpriteProps($14, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 14 - Flute +%SpriteProps($15, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 15 - Somaria +%SpriteProps($16, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 16 - Bottle +%SpriteProps($17, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 17 - Heart piece +%SpriteProps($18, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 18 - Byrna +%SpriteProps($19, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 19 - Cape +%SpriteProps($1A, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 1A - Mirror +%SpriteProps($1B, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 1B - Glove +%SpriteProps($1C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 1C - Mitts +%SpriteProps($1D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 1D - Book +%SpriteProps($1E, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 1E - Flippers +%SpriteProps($1F, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 1F - Pearl +%SpriteProps($20, 2, 2, $06, $06, PalettesCustom_crystal) ; 20 - Crystal +%SpriteProps($21, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 21 - Net +%SpriteProps($22, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 22 - Blue mail +%SpriteProps($23, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 23 - Red mail +%SpriteProps($24, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 24 - Small key +%SpriteProps($25, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 25 - Compass +%SpriteProps($26, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 26 - Heart container from 4/4 +%SpriteProps($27, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 27 - Bomb +%SpriteProps($28, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 28 - 3 bombs +%SpriteProps($29, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 29 - Mushroom +%SpriteProps($2A, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 2A - Red boomerang +%SpriteProps($2B, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 2B - Full bottle (red) +%SpriteProps($2C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 2C - Full bottle (green) +%SpriteProps($2D, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 2D - Full bottle (blue) +%SpriteProps($2E, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 2E - Potion refill (red) +%SpriteProps($2F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 2F - Potion refill (green) +%SpriteProps($30, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 30 - Potion refill (blue) +%SpriteProps($31, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 31 - 10 bombs +%SpriteProps($32, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 32 - Big key +%SpriteProps($33, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 33 - Map +%SpriteProps($34, 0, 0, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 34 - 1 rupee +%SpriteProps($35, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 35 - 5 rupees +%SpriteProps($36, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 36 - 20 rupees +%SpriteProps($37, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 37 - Green pendant +%SpriteProps($38, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 38 - Red pendant +%SpriteProps($39, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 39 - Blue pendant +%SpriteProps($3A, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 3A - Bow And Arrows +%SpriteProps($3B, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 3B - Silver Bow +%SpriteProps($3C, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 3C - Full bottle (bee) +%SpriteProps($3D, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 3D - Full bottle (fairy) +%SpriteProps($3E, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 3E - Boss heart +%SpriteProps($3F, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 3F - Sanc heart +%SpriteProps($40, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 40 - 100 rupees +%SpriteProps($41, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 41 - 50 rupees +%SpriteProps($42, 0, 0, $01, $01, PalettesVanilla_red_melon+$0E) ; 42 - Heart +%SpriteProps($43, 0, 0, $02, $02, PalettesVanilla_blue_ice+$0E) ; 43 - Arrow +%SpriteProps($44, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 44 - 10 arrows +%SpriteProps($45, 0, 0, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 45 - Small magic +%SpriteProps($46, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 46 - 300 rupees +%SpriteProps($47, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 47 - 20 rupees green +%SpriteProps($48, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 48 - Full bottle (good bee) +%SpriteProps($49, 0, 2, $05, $02, PalettesCustom_fighter_shield) ; 49 - Tossed fighter sword +%SpriteProps($4A, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 4A - Active Flute +%SpriteProps($4B, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 4B - Boots +%SpriteProps($4C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4C - Bomb capacity (50) +%SpriteProps($4D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4D - Arrow capacity (70) +%SpriteProps($4E, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4E - 1/2 magic +%SpriteProps($4F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 4F - 1/4 magic +%SpriteProps($50, 0, 2, $05, $02, PalettesCustom_master_sword) ; 50 - Safe master sword +%SpriteProps($51, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 51 - Bomb capacity (+5) +%SpriteProps($52, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 52 - Bomb capacity (+10) +%SpriteProps($53, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 53 - Arrow capacity (+5) +%SpriteProps($54, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 54 - Arrow capacity (+10) +%SpriteProps($55, 2, 2, $04, $04, $0000) ; 55 - Programmable item 1 +%SpriteProps($56, 2, 2, $04, $04, $0000) ; 56 - Programmable item 2 +%SpriteProps($57, 2, 2, $04, $04, $0000) ; 57 - Programmable item 3 +%SpriteProps($58, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 58 - Upgrade-only Silver Arrows +%SpriteProps($59, 0, 0, $03, $03, PalettesCustom_off_black) ; 59 - Rupoor +%SpriteProps($5A, 2, 2, $01, $01, $0000) ; 5A - Nothing +%SpriteProps($5B, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 5B - Red clock +%SpriteProps($5C, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 5C - Blue clock +%SpriteProps($5D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 5D - Green clock +%SpriteProps($5E, 2, 2, $FF, $FF, $0000) ; 5E - Progressive sword +%SpriteProps($5F, 2, 2, $FF, $FF, $0000) ; 5F - Progressive shield +%SpriteProps($60, 2, 2, $FF, $FF, $0000) ; 60 - Progressive armor +%SpriteProps($61, 2, 2, $FF, $FF, $0000) ; 61 - Progressive glove +%SpriteProps($62, 2, 2, $FF, $FF, $0000) ; 62 - RNG pool item (single) +%SpriteProps($63, 2, 2, $FF, $FF, $0000) ; 63 - RNG pool item (multi) +%SpriteProps($64, 2, 2, $FF, $FF, $0000) ; 64 - Progressive bow +%SpriteProps($65, 2, 2, $FF, $FF, $0000) ; 65 - Progressive bow +%SpriteProps($66, 2, 2, $00, $00, $0000) ; 66 - +%SpriteProps($67, 2, 2, $00, $00, $0000) ; 67 - +%SpriteProps($68, 2, 2, $00, $00, $0000) ; 68 - +%SpriteProps($69, 2, 2, $00, $00, $0000) ; 69 - +%SpriteProps($6A, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 6A - Triforce +%SpriteProps($6B, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 6B - Power star +%SpriteProps($6C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 6C - Triforce Piece +%SpriteProps($6D, 2, 2, $FF, $FF, $0000) ; 6D - Server request item +%SpriteProps($6E, 2, 2, $FF, $FF, $0000) ; 6E - Server request item (dungeon drop) +%SpriteProps($6F, 2, 2, $FF, $FF, $0000) ; 6F - +%SpriteProps($70, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 70 - Map of Light World +%SpriteProps($71, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 71 - Map of Dark World +%SpriteProps($72, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 72 - Map of Ganon's Tower +%SpriteProps($73, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 73 - Map of Turtle Rock +%SpriteProps($74, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 74 - Map of Thieves' Town +%SpriteProps($75, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 75 - Map of Tower of Hera +%SpriteProps($76, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 76 - Map of Ice Palace +%SpriteProps($77, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 77 - Map of Skull Woods +%SpriteProps($78, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 78 - Map of Misery Mire +%SpriteProps($79, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 79 - Map of Dark Palace +%SpriteProps($7A, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7A - Map of Swamp Palace +%SpriteProps($7B, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7B - Map of Agahnim's Tower +%SpriteProps($7C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7C - Map of Desert Palace +%SpriteProps($7D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7D - Map of Eastern Palace +%SpriteProps($7E, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7E - Map of Hyrule Castle +%SpriteProps($7F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 7F - Map of Sewers +%SpriteProps($80, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 80 - Compass of Light World +%SpriteProps($81, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 81 - Compass of Dark World +%SpriteProps($82, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 82 - Compass of Ganon's Tower +%SpriteProps($83, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 83 - Compass of Turtle Rock +%SpriteProps($84, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 84 - Compass of Thieves' Town +%SpriteProps($85, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 85 - Compass of Tower of Hera +%SpriteProps($86, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 86 - Compass of Ice Palace +%SpriteProps($87, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 87 - Compass of Skull Woods +%SpriteProps($88, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 88 - Compass of Misery Mire +%SpriteProps($89, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 89 - Compass of Dark Palace +%SpriteProps($8A, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8A - Compass of Swamp Palace +%SpriteProps($8B, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8B - Compass of Agahnim's Tower +%SpriteProps($8C, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8C - Compass of Desert Palace +%SpriteProps($8D, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8D - Compass of Eastern Palace +%SpriteProps($8E, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8E - Compass of Hyrule Castle +%SpriteProps($8F, 2, 2, $02, $02, PalettesVanilla_blue_ice+$0E) ; 8F - Compass of Sewers +%SpriteProps($90, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 90 - Skull key +%SpriteProps($91, 2, 2, $04, $04, $0000) ; 91 - Reserved +%SpriteProps($92, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 92 - Big key of Ganon's Tower +%SpriteProps($93, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 93 - Big key of Turtle Rock +%SpriteProps($94, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 94 - Big key of Thieves' Town +%SpriteProps($95, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 95 - Big key of Tower of Hera +%SpriteProps($96, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 96 - Big key of Ice Palace +%SpriteProps($97, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 97 - Big key of Skull Woods +%SpriteProps($98, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 98 - Big key of Misery Mire +%SpriteProps($99, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 99 - Big key of Dark Palace +%SpriteProps($9A, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9A - Big key of Swamp Palace +%SpriteProps($9B, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9B - Big key of Agahnim's Tower +%SpriteProps($9C, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9C - Big key of Desert Palace +%SpriteProps($9D, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9D - Big key of Eastern Palace +%SpriteProps($9E, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9E - Big key of Hyrule Castle +%SpriteProps($9F, 2, 2, $04, $04, PalettesVanilla_green_blue_guard+$0E) ; 9F - Big key of Sewers +%SpriteProps($A0, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A0 - Small key of Sewers +%SpriteProps($A1, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A1 - Small key of Hyrule Castle +%SpriteProps($A2, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A2 - Small key of Eastern Palace +%SpriteProps($A3, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A3 - Small key of Desert Palace +%SpriteProps($A4, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A4 - Small key of Agahnim's Tower +%SpriteProps($A5, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A5 - Small key of Swamp Palace +%SpriteProps($A6, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A6 - Small key of Dark Palace +%SpriteProps($A7, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A7 - Small key of Misery Mire +%SpriteProps($A8, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A8 - Small key of Skull Woods +%SpriteProps($A9, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; A9 - Small key of Ice Palace +%SpriteProps($AA, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AA - Small key of Tower of Hera +%SpriteProps($AB, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AB - Small key of Thieves' Town +%SpriteProps($AC, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AC - Small key of Turtle Rock +%SpriteProps($AD, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AD - Small key of Ganon's Tower +%SpriteProps($AE, 2, 2, $04, $04, $0000) ; AE - Reserved +%SpriteProps($AF, 0, 0, $04, $04, PalettesVanilla_blue_ice+$0E) ; AF - Generic small key +%SpriteProps($B0, 2, 2, $80, $80, PalettesCustom_crystal) ; B0 - Crystal 6 +%SpriteProps($B1, 2, 2, $80, $80, PalettesCustom_crystal) ; B1 - Crystal 1 +%SpriteProps($B2, 2, 2, $80, $80, PalettesCustom_crystal) ; B2 - Crystal 5 +%SpriteProps($B3, 2, 2, $80, $80, PalettesCustom_crystal) ; B3 - Crystal 7 +%SpriteProps($B4, 2, 2, $80, $80, PalettesCustom_crystal) ; B4 - Crystal 2 +%SpriteProps($B5, 2, 2, $80, $80, PalettesCustom_crystal) ; B5 - Crystal 4 +%SpriteProps($B6, 2, 2, $80, $80, PalettesCustom_crystal) ; B6 - Crystal 3 +%SpriteProps($B7, 2, 2, $80, $80, $0000) ; B7 - Reserved +%SpriteProps($B8, 2, 2, $04, $04, $0000) ; B8 - +%SpriteProps($B9, 2, 2, $04, $04, $0000) ; B9 - +%SpriteProps($BA, 2, 2, $04, $04, $0000) ; BA - +%SpriteProps($BB, 2, 2, $04, $04, $0000) ; BB - +%SpriteProps($BC, 2, 2, $04, $04, $0000) ; BC - +%SpriteProps($BD, 2, 2, $04, $04, $0000) ; BD - +%SpriteProps($BE, 2, 2, $04, $04, $0000) ; BE - +%SpriteProps($BF, 2, 2, $04, $04, $0000) ; BF - +%SpriteProps($C0, 2, 2, $04, $04, $0000) ; C0 - +%SpriteProps($C1, 2, 2, $04, $04, $0000) ; C1 - +%SpriteProps($C2, 2, 2, $04, $04, $0000) ; C2 - +%SpriteProps($C3, 2, 2, $04, $04, $0000) ; C3 - +%SpriteProps($C4, 2, 2, $04, $04, $0000) ; C4 - +%SpriteProps($C5, 2, 2, $04, $04, $0000) ; C5 - +%SpriteProps($C6, 2, 2, $04, $04, $0000) ; C6 - +%SpriteProps($C7, 2, 2, $04, $04, $0000) ; C7 - +%SpriteProps($C8, 2, 2, $04, $04, $0000) ; C8 - +%SpriteProps($C9, 2, 2, $04, $04, $0000) ; C9 - +%SpriteProps($CA, 2, 2, $04, $04, $0000) ; CA - +%SpriteProps($CB, 2, 2, $04, $04, $0000) ; CB - +%SpriteProps($CC, 2, 2, $04, $04, $0000) ; CC - +%SpriteProps($CD, 2, 2, $04, $04, $0000) ; CD - +%SpriteProps($CE, 2, 2, $04, $04, $0000) ; CE - +%SpriteProps($CF, 2, 2, $04, $04, $0000) ; CF - +%SpriteProps($D0, 2, 2, $04, $04, $0000) ; D0 - +%SpriteProps($D1, 2, 2, $04, $04, $0000) ; D1 - +%SpriteProps($D2, 2, 2, $04, $04, $0000) ; D2 - +%SpriteProps($D3, 2, 2, $04, $04, $0000) ; D3 - +%SpriteProps($D4, 2, 2, $04, $04, $0000) ; D4 - +%SpriteProps($D5, 2, 2, $04, $04, $0000) ; D5 - +%SpriteProps($D6, 2, 2, $04, $04, $0000) ; D6 - +%SpriteProps($D7, 2, 2, $04, $04, $0000) ; D7 - +%SpriteProps($D8, 2, 2, $04, $04, $0000) ; D8 - +%SpriteProps($D9, 2, 2, $04, $04, $0000) ; D9 - +%SpriteProps($DA, 2, 2, $04, $04, $0000) ; DA - +%SpriteProps($DB, 2, 2, $04, $04, $0000) ; DB - +%SpriteProps($DC, 2, 2, $04, $04, $0000) ; DC - +%SpriteProps($DD, 2, 2, $04, $04, $0000) ; DD - +%SpriteProps($DE, 2, 2, $04, $04, $0000) ; DE - +%SpriteProps($DF, 2, 2, $04, $04, $0000) ; DF - +%SpriteProps($E0, 2, 2, $04, $04, $0000) ; E0 - +%SpriteProps($E1, 2, 2, $04, $04, $0000) ; E1 - +%SpriteProps($E2, 2, 2, $04, $04, $0000) ; E2 - +%SpriteProps($E3, 2, 2, $04, $04, $0000) ; E3 - +%SpriteProps($E4, 2, 2, $04, $04, $0000) ; E4 - +%SpriteProps($E5, 2, 2, $04, $04, $0000) ; E5 - +%SpriteProps($E6, 2, 2, $04, $04, $0000) ; E6 - +%SpriteProps($E7, 2, 2, $04, $04, $0000) ; E7 - +%SpriteProps($E8, 2, 2, $04, $04, $0000) ; E8 - +%SpriteProps($E9, 2, 2, $04, $04, $0000) ; E9 - +%SpriteProps($EA, 2, 2, $04, $04, $0000) ; EA - +%SpriteProps($EB, 2, 2, $04, $04, $0000) ; EB - +%SpriteProps($EC, 2, 2, $04, $04, $0000) ; EC - +%SpriteProps($ED, 2, 2, $04, $04, $0000) ; ED - +%SpriteProps($EE, 2, 2, $04, $04, $0000) ; EE - +%SpriteProps($EF, 2, 2, $04, $04, $0000) ; EF - +%SpriteProps($F0, 2, 2, $04, $04, $0000) ; F0 - +%SpriteProps($F1, 2, 2, $04, $04, $0000) ; F1 - +%SpriteProps($F2, 2, 2, $04, $04, $0000) ; F2 - +%SpriteProps($F3, 2, 2, $04, $04, $0000) ; F3 - +%SpriteProps($F4, 2, 2, $04, $04, $0000) ; F4 - +%SpriteProps($F5, 2, 2, $04, $04, $0000) ; F5 - +%SpriteProps($F6, 2, 2, $04, $04, $0000) ; F6 - +%SpriteProps($F7, 2, 2, $04, $04, $0000) ; F7 - +%SpriteProps($F8, 2, 2, $04, $04, $0000) ; F8 - +%SpriteProps($F9, 2, 2, $04, $04, $0000) ; F9 - +%SpriteProps($FA, 2, 2, $04, $04, $0000) ; FA - +%SpriteProps($FB, 2, 2, $04, $04, $0000) ; FB - +%SpriteProps($FC, 2, 2, $04, $04, $0000) ; FC - +%SpriteProps($FD, 2, 2, $04, $04, $0000) ; FD - +%SpriteProps($FE, 2, 2, $FF, $FF, $0000) ; FE - Server request (async) +%SpriteProps($FF, 2, 2, $04, $04, $0000) ; FF - + +;------------------------------------------------------------------------------ +; Properties: - - w o a y s t +; t = Count for total item counter | s = Count for total in shops +; y = Y item | a = A item +; o = Bomb item | w = Bow item +InventoryTable: + .properties : fillbyte $00 : fill 256 ; See above + .stamp : fillword $0000 : fill 256*2 ; Address to stamp with 32-bit time (bank $7E) + .stat : fillword $0000 : fill 256*2 ; Address to increment by one (bank $7E) + +macro InventoryItem(id, props, stamp, stat) + pushpc + org InventoryTable_properties+ : db + org InventoryTable_stamp++ : dw + org InventoryTable_stat++ : dw + pullpc +endmacro + +%InventoryItem($00, $01, SwordTime, $0000) ; 00 - Fighter sword & Shield +%InventoryItem($01, $01, SwordTime, $0000) ; 01 - Master sword +%InventoryItem($02, $01, SwordTime, $0000) ; 02 - Tempered sword +%InventoryItem($03, $01, SwordTime, $0000) ; 03 - Butter sword +%InventoryItem($04, $01, $0000, $0000) ; 04 - Fighter shield +%InventoryItem($05, $01, $0000, $0000) ; 05 - Fire shield +%InventoryItem($06, $01, $0000, $0000) ; 06 - Mirror shield +%InventoryItem($07, $05, $0000, $0000) ; 07 - Fire rod +%InventoryItem($08, $05, $0000, $0000) ; 08 - Ice rod +%InventoryItem($09, $05, $0000, $0000) ; 09 - Hammer +%InventoryItem($0A, $05, $0000, $0000) ; 0A - Hookshot +%InventoryItem($0B, $25, $0000, $0000) ; 0B - Bow +%InventoryItem($0C, $05, $0000, $0000) ; 0C - Blue Boomerang +%InventoryItem($0D, $05, $0000, $0000) ; 0D - Powder +%InventoryItem($0E, $01, $0000, $0000) ; 0E - Bottle refill (bee) +%InventoryItem($0F, $05, $0000, $0000) ; 0F - Bombos +%InventoryItem($10, $05, $0000, $0000) ; 10 - Ether +%InventoryItem($11, $05, $0000, $0000) ; 11 - Quake +%InventoryItem($12, $05, $0000, $0000) ; 12 - Lamp +%InventoryItem($13, $05, $0000, $0000) ; 13 - Shovel +%InventoryItem($14, $05, FluteTime, $0000) ; 14 - Flute (inactive) +%InventoryItem($15, $05, $0000, $0000) ; 15 - Somaria +%InventoryItem($16, $05, $0000, $0000) ; 16 - Bottle +%InventoryItem($17, $01, $0000, HeartPieceCounter) ; 17 - Heart piece +%InventoryItem($18, $05, $0000, $0000) ; 18 - Byrna +%InventoryItem($19, $05, $0000, $0000) ; 19 - Cape +%InventoryItem($1A, $05, MirrorTime, $0000) ; 1A - Mirror +%InventoryItem($1B, $09, $0000, $0000) ; 1B - Glove +%InventoryItem($1C, $09, $0000, $0000) ; 1C - Mitts +%InventoryItem($1D, $05, $0000, $0000) ; 1D - Book +%InventoryItem($1E, $09, $0000, $0000) ; 1E - Flippers +%InventoryItem($1F, $01, $0000, $0000) ; 1F - Pearl +%InventoryItem($20, $00, $0000, CrystalCounter) ; 20 - Crystal +%InventoryItem($21, $05, $0000, $0000) ; 21 - Net +%InventoryItem($22, $01, $0000, $0000) ; 22 - Blue mail +%InventoryItem($23, $01, $0000, $0000) ; 23 - Red mail +%InventoryItem($24, $01, $0000, SmallKeyCounter) ; 24 - Small key +%InventoryItem($25, $01, $0000, $0000) ; 25 - Compass +%InventoryItem($26, $00, $0000, $0000) ; 26 - Heart container from 4/4 +%InventoryItem($27, $15, $0000, $0000) ; 27 - Bomb +%InventoryItem($28, $15, $0000, $0000) ; 28 - 3 bombs +%InventoryItem($29, $05, $0000, $0000) ; 29 - Mushroom +%InventoryItem($2A, $05, $0000, $0000) ; 2A - Red boomerang +%InventoryItem($2B, $05, $0000, $0000) ; 2B - Full bottle (red) +%InventoryItem($2C, $05, $0000, $0000) ; 2C - Full bottle (green) +%InventoryItem($2D, $05, $0000, $0000) ; 2D - Full bottle (blue) +%InventoryItem($2E, $00, $0000, $0000) ; 2E - Potion refill (red) +%InventoryItem($2F, $00, $0000, $0000) ; 2F - Potion refill (green) +%InventoryItem($30, $00, $0000, $0000) ; 30 - Potion refill (blue) +%InventoryItem($31, $11, $0000, $0000) ; 31 - 10 bombs +%InventoryItem($32, $01, $0000, $0000) ; 32 - Big key +%InventoryItem($33, $01, $0000, $0000) ; 33 - Map +%InventoryItem($34, $01, $0000, $0000) ; 34 - 1 rupee +%InventoryItem($35, $01, $0000, $0000) ; 35 - 5 rupees +%InventoryItem($36, $01, $0000, $0000) ; 36 - 20 rupees +%InventoryItem($37, $00, $0000, PendantCounter) ; 37 - Green pendant +%InventoryItem($38, $00, $0000, PendantCounter) ; 38 - Red pendant +%InventoryItem($39, $00, $0000, PendantCounter) ; 39 - Blue pendant +%InventoryItem($3A, $25, $0000, $0000) ; 3A - Bow And Arrows +%InventoryItem($3B, $25, $0000, $0000) ; 3B - Silver Bow +%InventoryItem($3C, $05, $0000, $0000) ; 3C - Full bottle (bee) +%InventoryItem($3D, $05, $0000, $0000) ; 3D - Full bottle (fairy) +%InventoryItem($3E, $01, $0000, HeartContainerCounter) ; 3E - Boss heart +%InventoryItem($3F, $01, $0000, HeartContainerCounter) ; 3F - Sanc heart +%InventoryItem($40, $01, $0000, $0000) ; 40 - 100 rupees +%InventoryItem($41, $01, $0000, $0000) ; 41 - 50 rupees +%InventoryItem($42, $01, $0000, $0000) ; 42 - Heart +%InventoryItem($43, $01, $0000, $0000) ; 43 - Arrow +%InventoryItem($44, $01, $0000, $0000) ; 44 - 10 arrows +%InventoryItem($45, $01, $0000, $0000) ; 45 - Small magic +%InventoryItem($46, $01, $0000, $0000) ; 46 - 300 rupees +%InventoryItem($47, $01, $0000, $0000) ; 47 - 20 rupees green +%InventoryItem($48, $05, $0000, $0000) ; 48 - Full bottle (good bee) +%InventoryItem($49, $01, $0000, $0000) ; 49 - Tossed fighter sword +%InventoryItem($4A, $05, FluteTime, $0000) ; 4A - Active Flute +%InventoryItem($4B, $09, BootsTime, $0000) ; 4B - Boots +%InventoryItem($4C, $15, $0000, CapacityUpgrades) ; 4C - Bomb capacity (50) +%InventoryItem($4D, $01, $0000, CapacityUpgrades) ; 4D - Arrow capacity (70) +%InventoryItem($4E, $01, $0000, CapacityUpgrades) ; 4E - 1/2 magic +%InventoryItem($4F, $01, $0000, CapacityUpgrades) ; 4F - 1/4 magic +%InventoryItem($50, $01, SwordTime, $0000) ; 50 - Master Sword (safe) +%InventoryItem($51, $15, $0000, CapacityUpgrades) ; 51 - Bomb capacity (+5) +%InventoryItem($52, $15, $0000, CapacityUpgrades) ; 52 - Bomb capacity (+10) +%InventoryItem($53, $01, $0000, CapacityUpgrades) ; 53 - Arrow capacity (+5) +%InventoryItem($54, $01, $0000, CapacityUpgrades) ; 54 - Arrow capacity (+10) +%InventoryItem($55, $01, $0000, $0000) ; 55 - Programmable item 1 +%InventoryItem($56, $01, $0000, $0000) ; 56 - Programmable item 2 +%InventoryItem($57, $01, $0000, $0000) ; 57 - Programmable item 3 +%InventoryItem($58, $01, $0000, $0000) ; 58 - Upgrade-only Silver Arrows +%InventoryItem($59, $01, $0000, $0000) ; 59 - Rupoor +%InventoryItem($5A, $01, $0000, $0000) ; 5A - Nothing +%InventoryItem($5B, $01, $0000, $0000) ; 5B - Red clock +%InventoryItem($5C, $01, $0000, $0000) ; 5C - Blue clock +%InventoryItem($5D, $01, $0000, $0000) ; 5D - Green clock +%InventoryItem($5E, $01, $0000, $0000) ; 5E - Progressive sword +%InventoryItem($5F, $01, $0000, $0000) ; 5F - Progressive shield +%InventoryItem($60, $01, $0000, $0000) ; 60 - Progressive armor +%InventoryItem($61, $09, $0000, $0000) ; 61 - Progressive glove +%InventoryItem($62, $01, $0000, $0000) ; 62 - RNG pool item (single) +%InventoryItem($63, $01, $0000, $0000) ; 63 - RNG pool item (multi) +%InventoryItem($64, $25, $0000, $0000) ; 64 - Progressive bow +%InventoryItem($65, $25, $0000, $0000) ; 65 - Progressive bow +%InventoryItem($66, $01, $0000, $0000) ; 66 - +%InventoryItem($67, $01, $0000, $0000) ; 67 - +%InventoryItem($68, $01, $0000, $0000) ; 68 - +%InventoryItem($69, $01, $0000, $0000) ; 69 - +%InventoryItem($6A, $01, $0000, $0000) ; 6A - Triforce +%InventoryItem($6B, $01, $0000, $0000) ; 6B - Power star +%InventoryItem($6C, $01, $0000, $0000) ; 6C - Triforce Piece +%InventoryItem($6D, $01, $0000, $0000) ; 6D - Server request item +%InventoryItem($6E, $01, $0000, $0000) ; 6E - Server request item (dungeon drop) +%InventoryItem($6F, $01, $0000, $0000) ; 6F - +%InventoryItem($70, $01, $0000, $0000) ; 70 - Map of Light World +%InventoryItem($71, $01, $0000, $0000) ; 71 - Map of Dark World +%InventoryItem($72, $01, $0000, $0000) ; 72 - Map of Ganon's Tower +%InventoryItem($73, $01, $0000, $0000) ; 73 - Map of Turtle Rock +%InventoryItem($74, $01, $0000, $0000) ; 74 - Map of Thieves' Town +%InventoryItem($75, $01, $0000, $0000) ; 75 - Map of Tower of Hera +%InventoryItem($76, $01, $0000, $0000) ; 76 - Map of Ice Palace +%InventoryItem($77, $01, $0000, $0000) ; 77 - Map of Skull Woods +%InventoryItem($78, $01, $0000, $0000) ; 78 - Map of Misery Mire +%InventoryItem($79, $01, $0000, $0000) ; 79 - Map of Dark Palace +%InventoryItem($7A, $01, $0000, $0000) ; 7A - Map of Swamp Palace +%InventoryItem($7B, $01, $0000, $0000) ; 7B - Map of Agahnim's Tower +%InventoryItem($7C, $01, $0000, $0000) ; 7C - Map of Desert Palace +%InventoryItem($7D, $01, $0000, $0000) ; 7D - Map of Eastern Palace +%InventoryItem($7E, $01, $0000, $0000) ; 7E - Map of Hyrule Castle +%InventoryItem($7F, $01, $0000, $0000) ; 7F - Map of Sewers +%InventoryItem($80, $01, $0000, $0000) ; 80 - Compass of Light World +%InventoryItem($81, $01, $0000, $0000) ; 81 - Compass of Dark World +%InventoryItem($82, $01, $0000, $0000) ; 82 - Compass of Ganon's Tower +%InventoryItem($83, $01, $0000, $0000) ; 83 - Compass of Turtle Rock +%InventoryItem($84, $01, $0000, $0000) ; 84 - Compass of Thieves' Town +%InventoryItem($85, $01, $0000, $0000) ; 85 - Compass of Tower of Hera +%InventoryItem($86, $01, $0000, $0000) ; 86 - Compass of Ice Palace +%InventoryItem($87, $01, $0000, $0000) ; 87 - Compass of Skull Woods +%InventoryItem($88, $01, $0000, $0000) ; 88 - Compass of Misery Mire +%InventoryItem($89, $01, $0000, $0000) ; 89 - Compass of Dark Palace +%InventoryItem($8A, $01, $0000, $0000) ; 8A - Compass of Swamp Palace +%InventoryItem($8B, $01, $0000, $0000) ; 8B - Compass of Agahnim's Tower +%InventoryItem($8C, $01, $0000, $0000) ; 8C - Compass of Desert Palace +%InventoryItem($8D, $01, $0000, $0000) ; 8D - Compass of Eastern Palace +%InventoryItem($8E, $01, $0000, $0000) ; 8E - Compass of Hyrule Castle +%InventoryItem($8F, $01, $0000, $0000) ; 8F - Compass of Sewers +%InventoryItem($90, $01, $0000, $0000) ; 90 - Skull key +%InventoryItem($91, $01, $0000, $0000) ; 91 - Reserved +%InventoryItem($92, $01, $0000, $0000) ; 92 - Big key of Ganon's Tower +%InventoryItem($93, $01, $0000, $0000) ; 93 - Big key of Turtle Rock +%InventoryItem($94, $01, $0000, $0000) ; 94 - Big key of Thieves' Town +%InventoryItem($95, $01, $0000, $0000) ; 95 - Big key of Tower of Hera +%InventoryItem($96, $01, $0000, $0000) ; 96 - Big key of Ice Palace +%InventoryItem($97, $01, $0000, $0000) ; 97 - Big key of Skull Woods +%InventoryItem($98, $01, $0000, $0000) ; 98 - Big key of Misery Mire +%InventoryItem($99, $01, $0000, $0000) ; 99 - Big key of Dark Palace +%InventoryItem($9A, $01, $0000, $0000) ; 9A - Big key of Swamp Palace +%InventoryItem($9B, $01, $0000, $0000) ; 9B - Big key of Agahnim's Tower +%InventoryItem($9C, $01, $0000, $0000) ; 9C - Big key of Desert Palace +%InventoryItem($9D, $01, $0000, $0000) ; 9D - Big key of Eastern Palace +%InventoryItem($9E, $01, $0000, $0000) ; 9E - Big key of Hyrule Castle +%InventoryItem($9F, $01, $0000, $0000) ; 9F - Big key of Sewers +%InventoryItem($A0, $01, $0000, SmallKeyCounter) ; A0 - Small key of Sewers +%InventoryItem($A1, $01, $0000, SmallKeyCounter) ; A1 - Small key of Hyrule Castle +%InventoryItem($A2, $01, $0000, SmallKeyCounter) ; A2 - Small key of Eastern Palace +%InventoryItem($A3, $01, $0000, SmallKeyCounter) ; A3 - Small key of Desert Palace +%InventoryItem($A4, $01, $0000, SmallKeyCounter) ; A4 - Small key of Agahnim's Tower +%InventoryItem($A5, $01, $0000, SmallKeyCounter) ; A5 - Small key of Swamp Palace +%InventoryItem($A6, $01, $0000, SmallKeyCounter) ; A6 - Small key of Dark Palace +%InventoryItem($A7, $01, $0000, SmallKeyCounter) ; A7 - Small key of Misery Mire +%InventoryItem($A8, $01, $0000, SmallKeyCounter) ; A8 - Small key of Skull Woods +%InventoryItem($A9, $01, $0000, SmallKeyCounter) ; A9 - Small key of Ice Palace +%InventoryItem($AA, $01, $0000, SmallKeyCounter) ; AA - Small key of Tower of Hera +%InventoryItem($AB, $01, $0000, SmallKeyCounter) ; AB - Small key of Thieves' Town +%InventoryItem($AC, $01, $0000, SmallKeyCounter) ; AC - Small key of Turtle Rock +%InventoryItem($AD, $01, $0000, SmallKeyCounter) ; AD - Small key of Ganon's Tower +%InventoryItem($AE, $01, $0000, $0000) ; AE - Reserved +%InventoryItem($AF, $01, $0000, SmallKeyCounter) ; AF - Generic small key +%InventoryItem($B0, $01, $0000, $0000) ; B0 - +%InventoryItem($B1, $01, $0000, $0000) ; B1 - +%InventoryItem($B2, $01, $0000, $0000) ; B2 - +%InventoryItem($B3, $01, $0000, $0000) ; B3 - +%InventoryItem($B4, $01, $0000, $0000) ; B4 - +%InventoryItem($B5, $01, $0000, $0000) ; B5 - +%InventoryItem($B6, $01, $0000, $0000) ; B6 - +%InventoryItem($B7, $01, $0000, $0000) ; B7 - +%InventoryItem($B8, $01, $0000, $0000) ; B8 - +%InventoryItem($B9, $01, $0000, $0000) ; B9 - +%InventoryItem($BA, $01, $0000, $0000) ; BA - +%InventoryItem($BB, $01, $0000, $0000) ; BB - +%InventoryItem($BC, $01, $0000, $0000) ; BC - +%InventoryItem($BD, $01, $0000, $0000) ; BD - +%InventoryItem($BE, $01, $0000, $0000) ; BE - +%InventoryItem($BF, $01, $0000, $0000) ; BF - +%InventoryItem($C0, $01, $0000, $0000) ; C0 - +%InventoryItem($C1, $01, $0000, $0000) ; C1 - +%InventoryItem($C2, $01, $0000, $0000) ; C2 - +%InventoryItem($C3, $01, $0000, $0000) ; C3 - +%InventoryItem($C4, $01, $0000, $0000) ; C4 - +%InventoryItem($C5, $01, $0000, $0000) ; C5 - +%InventoryItem($C6, $01, $0000, $0000) ; C6 - +%InventoryItem($C7, $01, $0000, $0000) ; C7 - +%InventoryItem($C8, $01, $0000, $0000) ; C8 - +%InventoryItem($C9, $01, $0000, $0000) ; C9 - +%InventoryItem($CA, $01, $0000, $0000) ; CA - +%InventoryItem($CB, $01, $0000, $0000) ; CB - +%InventoryItem($CC, $01, $0000, $0000) ; CC - +%InventoryItem($CD, $01, $0000, $0000) ; CD - +%InventoryItem($CE, $01, $0000, $0000) ; CE - +%InventoryItem($CF, $01, $0000, $0000) ; CF - +%InventoryItem($D0, $01, $0000, $0000) ; D0 - +%InventoryItem($D1, $01, $0000, $0000) ; D1 - +%InventoryItem($D2, $01, $0000, $0000) ; D2 - +%InventoryItem($D3, $01, $0000, $0000) ; D3 - +%InventoryItem($D4, $01, $0000, $0000) ; D4 - +%InventoryItem($D5, $01, $0000, $0000) ; D5 - +%InventoryItem($D6, $01, $0000, $0000) ; D6 - +%InventoryItem($D7, $01, $0000, $0000) ; D7 - +%InventoryItem($D8, $01, $0000, $0000) ; D8 - +%InventoryItem($D9, $01, $0000, $0000) ; D9 - +%InventoryItem($DA, $01, $0000, $0000) ; DA - +%InventoryItem($DB, $01, $0000, $0000) ; DB - +%InventoryItem($DC, $01, $0000, $0000) ; DC - +%InventoryItem($DD, $01, $0000, $0000) ; DD - +%InventoryItem($DE, $01, $0000, $0000) ; DE - +%InventoryItem($DF, $01, $0000, $0000) ; DF - +%InventoryItem($E0, $01, $0000, $0000) ; E0 - +%InventoryItem($E1, $01, $0000, $0000) ; E1 - +%InventoryItem($E2, $01, $0000, $0000) ; E2 - +%InventoryItem($E3, $01, $0000, $0000) ; E3 - +%InventoryItem($E4, $01, $0000, $0000) ; E4 - +%InventoryItem($E5, $01, $0000, $0000) ; E5 - +%InventoryItem($E6, $01, $0000, $0000) ; E6 - +%InventoryItem($E7, $01, $0000, $0000) ; E7 - +%InventoryItem($E8, $01, $0000, $0000) ; E8 - +%InventoryItem($E9, $01, $0000, $0000) ; E9 - +%InventoryItem($EA, $01, $0000, $0000) ; EA - +%InventoryItem($EB, $01, $0000, $0000) ; EB - +%InventoryItem($EC, $01, $0000, $0000) ; EC - +%InventoryItem($ED, $01, $0000, $0000) ; ED - +%InventoryItem($EE, $01, $0000, $0000) ; EE - +%InventoryItem($EF, $01, $0000, $0000) ; EF - +%InventoryItem($F0, $01, $0000, $0000) ; F0 - +%InventoryItem($F1, $01, $0000, $0000) ; F1 - +%InventoryItem($F2, $01, $0000, $0000) ; F2 - +%InventoryItem($F3, $01, $0000, $0000) ; F3 - +%InventoryItem($F4, $01, $0000, $0000) ; F4 - +%InventoryItem($F5, $01, $0000, $0000) ; F5 - +%InventoryItem($F6, $01, $0000, $0000) ; F6 - +%InventoryItem($F7, $01, $0000, $0000) ; F7 - +%InventoryItem($F8, $01, $0000, $0000) ; F8 - +%InventoryItem($F9, $01, $0000, $0000) ; F9 - +%InventoryItem($FA, $01, $0000, $0000) ; FA - +%InventoryItem($FB, $01, $0000, $0000) ; FB - +%InventoryItem($FC, $01, $0000, $0000) ; FC - +%InventoryItem($FD, $01, $0000, $0000) ; FD - +%InventoryItem($FE, $01, $0000, $0000) ; FE - Server request (async) +%InventoryItem($FF, $01, $0000, $0000) ; FF - + +ItemReceiptGraphicsOffsets: + dw $0860 ; 00 - Fighter Sword and Shield + dw BigDecompressionBuffer+$11C0 ; 01 - Master Sword + dw BigDecompressionBuffer+$11C0 ; 01 - Tempered Sword + dw BigDecompressionBuffer+$11C0 ; 03 - Butter Sword + dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield + dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield + dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield + dw BigDecompressionBuffer+$1C80 ; 07 - Fire Rod + dw BigDecompressionBuffer+$1C80 ; 08 - Ice Rod + dw BigDecompressionBuffer+$1CA0 ; 09 - Hammer + dw BigDecompressionBuffer+$1C60 ; 0A - Hookshot + dw BigDecompressionBuffer+$1C00 ; 0B - Bow + dw BigDecompressionBuffer+$1DE0 ; 0C - Boomerang + dw BigDecompressionBuffer+$1CC0 ; 0D - Powder + dw BigDecompressionBuffer+$09A0 ; 0E - Bottle Refill (bee) + dw BigDecompressionBuffer+$1440 ; 0F - Bombos + dw BigDecompressionBuffer+$1400 ; 10 - Ether + dw BigDecompressionBuffer+$1480 ; 11 - Quake + dw BigDecompressionBuffer+$10C0 ; 12 - Lamp + dw BigDecompressionBuffer+$11E0 ; 13 - Shovel + dw BigDecompressionBuffer+$0C40 ; 14 - Flute + dw BigDecompressionBuffer+$1C40 ; 15 - Somaria + dw BigDecompressionBuffer+$14C0 ; 16 - Bottle + dw BigDecompressionBuffer+$0C00 ; 17 - Heartpiece + dw BigDecompressionBuffer+$1C40 ; 18 - Byrna + dw BigDecompressionBuffer+$1100 ; 19 - Cape + dw BigDecompressionBuffer+$1040 ; 1A - Mirror + dw BigDecompressionBuffer+$1D40 ; 1B - Glove + dw BigDecompressionBuffer+$1D40 ; 1C - Mitts + dw BigDecompressionBuffer+$1D80 ; 1D - Book + dw BigDecompressionBuffer+$1000 ; 1E - Flippers + dw BigDecompressionBuffer+$1180 ; 1F - Pearl + dw BigDecompressionBuffer+$08A0 ; 20 - Crystal + dw BigDecompressionBuffer+$0860 ; 21 - Net + dw BigDecompressionBuffer+$1900 ; 22 - Blue Mail + dw BigDecompressionBuffer+$1900 ; 23 - Red Mail + dw BigDecompressionBuffer+$1DC0 ; 24 - Small Key + dw BigDecompressionBuffer+$1140 ; 25 - Compbutt + dw BigDecompressionBuffer+$18C0 ; 26 - Heart Container from 4/4 + dw BigDecompressionBuffer+$1080 ; 27 - Bomb + dw BigDecompressionBuffer+$1840 ; 28 - 3 bombs + dw BigDecompressionBuffer+$1540 ; 29 - Mushroom + dw BigDecompressionBuffer+$1DE0 ; 2A - Red boomerang + dw BigDecompressionBuffer+$1500 ; 2B - Full bottle (red) + dw BigDecompressionBuffer+$1500 ; 2C - Full bottle (green) + dw BigDecompressionBuffer+$1500 ; 2D - Full bottle (blue) + dw BigDecompressionBuffer+$1500 ; 2E - Potion refill (red) + dw BigDecompressionBuffer+$1500 ; 2F - Potion refill (green) + dw BigDecompressionBuffer+$1500 ; 30 - Potion refill (blue) + dw BigDecompressionBuffer+$1D00 ; 31 - 10 bombs + dw BigDecompressionBuffer+$15C0 ; 32 - Big key + dw BigDecompressionBuffer+$1580 ; 33 - Map + dw BigDecompressionBuffer+$0800 ; 34 - 1 rupee + dw BigDecompressionBuffer+$0800 ; 35 - 5 rupees + dw BigDecompressionBuffer+$0800 ; 36 - 20 rupees + dw BigDecompressionBuffer+$0080 ; 37 - Green pendant + dw BigDecompressionBuffer+$0080 ; 38 - Blue pendant + dw BigDecompressionBuffer+$0080 ; 39 - Red pendant + dw BigDecompressionBuffer+$0920 ; 3A - Tossed bow + dw BigDecompressionBuffer+$08E0 ; 3B - Silvers + dw BigDecompressionBuffer+$09A0 ; 3C - Full bottle (bee) + dw BigDecompressionBuffer+$0960 ; 3D - Full bottle (fairy) + dw BigDecompressionBuffer+$18C0 ; 3E - Boss heart + dw BigDecompressionBuffer+$18C0 ; 3F - Sanc heart + dw BigDecompressionBuffer+$0D20 ; 40 - 100 rupees + dw BigDecompressionBuffer+$0D60 ; 41 - 50 rupees + dw BigDecompressionBuffer+$0CC0 ; 42 - Heart + dw BigDecompressionBuffer+$0D00 ; 43 - Arrow + dw BigDecompressionBuffer+$1880 ; 44 - 10 arrows + dw BigDecompressionBuffer+$0CE0 ; 45 - Small magic + dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees + dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green + dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee) + dw BigDecompressionBuffer+$1C20 ; 49 - Tossed fighter sword + dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee) + dw BigDecompressionBuffer+$0040 ; 4B - Boots + + ; Rando items + dw $04A0 ; 4C - Bomb capacity (50) + dw $05A0 ; 4D - Arrow capacity (70) + dw $01A0 ; 4E - 1/2 magic + dw $01E0 ; 4F - 1/4 magic + dw $0 ; 50 - Safe master sword + dw $0420 ; 51 - Bomb capacity (+5) + dw $0460 ; 52 - Bomb capacity (+10) + dw $0520 ; 53 - Arrow capacity (+5) + dw $0560 ; 54 - Arrow capacity (+10) + dw $0 ; 55 - Programmable item 1 + dw $0 ; 56 - Programmable item 2 + dw $0 ; 57 - Programmable item 3 + dw $05E0 ; 58 - Upgrade-only silver arrows + dw $0 ; 59 - Rupoor + dw $0020 ; 5A - Nothing + dw $0DE0 ; 5B - Red clock + dw $0DE0 ; 5C - Blue clock + dw $0DE0 ; 5D - Green clock + dw $0 ; 5E - Progressive sword + dw $0 ; 5F - Progressive shield + dw $0 ; 60 - Progressive armor + dw $0 ; 61 - Progressive glove + dw $0 ; 62 - RNG pool item (single) + dw $0 ; 63 - RNG pool item (multi) + dw $0 ; 64 - Progressive bow + dw $0 ; 65 - Progressive bow + dw $0 ; 66 - + dw $0 ; 67 - + dw $0 ; 68 - + dw $0 ; 69 - + dw $0060 ; 6A - Triforce + dw $11E0 ; 6B - Power star + dw $0 ; 6C - + dw $0 ; 6D - Server request item + dw $0 ; 6E - Server request item (dungeon drop) + dw $0 ; 6F - + + dw BigDecompressionBuffer+$1580 ; 70 - Map of Light World + dw BigDecompressionBuffer+$1580 ; 71 - Map of Dark World + dw BigDecompressionBuffer+$1580 ; 72 - Map of Ganon's Tower + dw BigDecompressionBuffer+$1580 ; 73 - Map of Turtle Rock + dw BigDecompressionBuffer+$1580 ; 74 - Map of Thieves' Town + dw BigDecompressionBuffer+$1580 ; 75 - Map of Tower of Hera + dw BigDecompressionBuffer+$1580 ; 76 - Map of Ice Palace + dw BigDecompressionBuffer+$1580 ; 77 - Map of Skull Woods + dw BigDecompressionBuffer+$1580 ; 78 - Map of Misery Mire + dw BigDecompressionBuffer+$1580 ; 79 - Map of Dark Palace + dw BigDecompressionBuffer+$1580 ; 7A - Map of Swamp Palace + dw BigDecompressionBuffer+$1580 ; 7B - Map of Agahnim's Tower + dw BigDecompressionBuffer+$1580 ; 7C - Map of Desert Palace + dw BigDecompressionBuffer+$1580 ; 7D - Map of Eastern Palace + dw BigDecompressionBuffer+$1580 ; 7E - Map of Hyrule Castle + dw BigDecompressionBuffer+$1580 ; 7F - Map of Sewers + + dw BigDecompressionBuffer+$1140 ; 80 - Compass of Light World + dw BigDecompressionBuffer+$1140 ; 81 - Compass of Dark World + dw BigDecompressionBuffer+$1140 ; 82 - Compass of Ganon's Tower + dw BigDecompressionBuffer+$1140 ; 83 - Compass of Turtle Rock + dw BigDecompressionBuffer+$1140 ; 84 - Compass of Thieves' Town + dw BigDecompressionBuffer+$1140 ; 85 - Compass of Tower of Hera + dw BigDecompressionBuffer+$1140 ; 86 - Compass of Ice Palace + dw BigDecompressionBuffer+$1140 ; 87 - Compass of Skull Woods + dw BigDecompressionBuffer+$1140 ; 88 - Compass of Misery Mire + dw BigDecompressionBuffer+$1140 ; 89 - Compass of Dark Palace + dw BigDecompressionBuffer+$1140 ; 8A - Compass of Swamp Palace + dw BigDecompressionBuffer+$1140 ; 8B - Compass of Agahnim's Tower + dw BigDecompressionBuffer+$1140 ; 8C - Compass of Desert Palace + dw BigDecompressionBuffer+$1140 ; 8D - Compass of Eastern Palace + dw BigDecompressionBuffer+$1140 ; 8E - Compass of Hyrule Castle + dw BigDecompressionBuffer+$1140 ; 8F - Compass of Sewers + dw $0 ; 90 - Skull key + dw $0 ; 91 - Reserved + + dw BigDecompressionBuffer+$15C0 ; 92 - Big key of Ganon's Tower + dw BigDecompressionBuffer+$15C0 ; 93 - Big key of Turtle Rock + dw BigDecompressionBuffer+$15C0 ; 94 - Big key of Thieves' Town + dw BigDecompressionBuffer+$15C0 ; 95 - Big key of Tower of Hera + dw BigDecompressionBuffer+$15C0 ; 96 - Big key of Ice Palace + dw BigDecompressionBuffer+$15C0 ; 97 - Big key of Skull Woods + dw BigDecompressionBuffer+$15C0 ; 98 - Big key of Misery Mire + dw BigDecompressionBuffer+$15C0 ; 99 - Big key of Dark Palace + dw BigDecompressionBuffer+$15C0 ; 9A - Big key of Swamp Palace + dw BigDecompressionBuffer+$15C0 ; 9B - Big key of Agahnim's Tower + dw BigDecompressionBuffer+$15C0 ; 9C - Big key of Desert Palace + dw BigDecompressionBuffer+$15C0 ; 9D - Big key of Eastern Palace + dw BigDecompressionBuffer+$15C0 ; 9E - Big key of Hyrule Castle + dw BigDecompressionBuffer+$15C0 ; 9F - Big key of Sewers + + dw BigDecompressionBuffer+$1DC0 ; A0 - Small key of Sewers + dw BigDecompressionBuffer+$1DC0 ; A1 - Small key of Hyrule Castle + dw BigDecompressionBuffer+$1DC0 ; A2 - Small key of Eastern Palace + dw BigDecompressionBuffer+$1DC0 ; A3 - Small key of Desert Palace + dw BigDecompressionBuffer+$1DC0 ; A4 - Small key of Agahnim's Tower + dw BigDecompressionBuffer+$1DC0 ; A5 - Small key of Swamp Palace + dw BigDecompressionBuffer+$1DC0 ; A6 - Small key of Dark Palace + dw BigDecompressionBuffer+$1DC0 ; A7 - Small key of Misery Mire + dw BigDecompressionBuffer+$1DC0 ; A8 - Small key of Skull Woods + dw BigDecompressionBuffer+$1DC0 ; A9 - Small key of Ice Palace + dw BigDecompressionBuffer+$1DC0 ; AA - Small key of Tower of Hera + dw BigDecompressionBuffer+$1DC0 ; AB - Small key of Thieves' Town + dw BigDecompressionBuffer+$1DC0 ; AC - Small key of Turtle Rock + dw BigDecompressionBuffer+$1DC0 ; AD - Small key of Ganon's Tower + dw $0 ; AE - Reserved + dw BigDecompressionBuffer+$1DC0 ; AF - Generic small key + + dw $0 ; B0 - + dw $0 ; B1 - + dw $0 ; B2 - + dw $0 ; B3 - + dw $0 ; B4 - + dw $0 ; B5 - + dw $0 ; B6 - + dw $0 ; B7 - + dw $0 ; B8 - + dw $0 ; B9 - + dw $0 ; BA - + dw $0 ; BB - + dw $0 ; BC - + dw $0 ; BD - + dw $0 ; BE - + dw $0 ; BF - + dw $0 ; C0 - + dw $0 ; C1 - + dw $0 ; C2 - + dw $0 ; C3 - + dw $0 ; C4 - + dw $0 ; C5 - + dw $0 ; C6 - + dw $0 ; C7 - + dw $0 ; C8 - + dw $0 ; C9 - + dw $0 ; CA - + dw $0 ; CB - + dw $0 ; CC - + dw $0 ; CD - + dw $0 ; CE - + dw $0 ; CF - + dw $0 ; D0 - + dw $0 ; D1 - + dw $0 ; D2 - + dw $0 ; D3 - + dw $0 ; D4 - + dw $0 ; D5 - + dw $0 ; D6 - + dw $0 ; D7 - + dw $0 ; D8 - + dw $0 ; D9 - + dw $0 ; DA - + dw $0 ; DB - + dw $0 ; DC - + dw $0 ; DD - + dw $0 ; DE - + dw $0 ; DF - + dw $0 ; E0 - + dw $0 ; E1 - + dw $0 ; E2 - + dw $0 ; E3 - + dw $0 ; E4 - + dw $0 ; E5 - + dw $0 ; E6 - + dw $0 ; E7 - + dw $0 ; E8 - + dw $0 ; E9 - + dw $0 ; EA - + dw $0 ; EB - + dw $0 ; EC - + dw $0 ; ED - + dw $0 ; EE - + dw $0 ; EF - + dw $0 ; F0 - + dw $0 ; F1 - + dw $0 ; F2 - + dw $0 ; F3 - + dw $0 ; F4 - + dw $0 ; F5 - + dw $0 ; F6 - + dw $0 ; F7 - + dw $0 ; F8 - + dw $0 ; F9 - + dw $0 ; FA - + dw $0 ; FB - + dw $0 ; FC - + dw $0 ; FD - + dw $0 ; FE - Server request (async) + dw $0 ; FF - + +;=================================================================================================== +; The table below is for "standing" items, either in heart piece locations, boss heart locations +; or shops etc. Generally we do not and shouldn't use different gfx for this purpose, so this is +; mostly a copy of the previous table. However some items, such as swords, use a separate sprite +; for receipt and non-receipt drawing. +;=================================================================================================== +StandingItemGraphicsOffsets: + dw $0860 ; 00 - Fighter Sword and Shield + dw $00E0 ; 01 - Master Sword + dw $0120 ; 02 - Tempered Sword + dw $0160 ; 03 - Butter Sword + dw BigDecompressionBuffer+$09E0 ; 04 - Fighter Shield + dw BigDecompressionBuffer+$1940 ; 05 - Fire Shield + dw BigDecompressionBuffer+$0C80 ; 06 - Mirror Shield + dw BigDecompressionBuffer+$1C80 ; 07 - Fire Rod + dw BigDecompressionBuffer+$1C80 ; 08 - Ice Rod + dw BigDecompressionBuffer+$1CA0 ; 09 - Hammer + dw BigDecompressionBuffer+$1C60 ; 0A - Hookshot + dw BigDecompressionBuffer+$1C00 ; 0B - Bow + dw BigDecompressionBuffer+$1DE0 ; 0C - Boomerang + dw BigDecompressionBuffer+$1CC0 ; 0D - Powder + dw BigDecompressionBuffer+$09A0 ; 0E - Bottle Refill (bee) + dw BigDecompressionBuffer+$1440 ; 0F - Bombos + dw BigDecompressionBuffer+$1400 ; 10 - Ether + dw BigDecompressionBuffer+$1480 ; 11 - Quake + dw BigDecompressionBuffer+$10C0 ; 12 - Lamp + dw BigDecompressionBuffer+$11E0 ; 13 - Shovel + dw BigDecompressionBuffer+$0C40 ; 14 - Flute + dw BigDecompressionBuffer+$1C40 ; 15 - Somaria + dw BigDecompressionBuffer+$14C0 ; 16 - Bottle + dw BigDecompressionBuffer+$0C00 ; 17 - Heartpiece + dw BigDecompressionBuffer+$1C40 ; 18 - Byrna + dw BigDecompressionBuffer+$1100 ; 19 - Cape + dw BigDecompressionBuffer+$1040 ; 1A - Mirror + dw BigDecompressionBuffer+$1D40 ; 1B - Glove + dw BigDecompressionBuffer+$1D40 ; 1C - Mitts + dw BigDecompressionBuffer+$1D80 ; 1D - Book + dw BigDecompressionBuffer+$1000 ; 1E - Flippers + dw BigDecompressionBuffer+$1180 ; 1F - Pearl + dw BigDecompressionBuffer+$08A0 ; 20 - Crystal + dw BigDecompressionBuffer+$0860 ; 21 - Net + dw BigDecompressionBuffer+$1900 ; 22 - Blue Mail + dw BigDecompressionBuffer+$1900 ; 23 - Red Mail + dw BigDecompressionBuffer+$1DC0 ; 24 - Small Key + dw BigDecompressionBuffer+$1140 ; 25 - Compbutt + dw BigDecompressionBuffer+$18C0 ; 26 - Heart Container from 4/4 + dw BigDecompressionBuffer+$1080 ; 27 - Bomb + dw BigDecompressionBuffer+$1840 ; 28 - 3 bombs + dw BigDecompressionBuffer+$1540 ; 29 - Mushroom + dw BigDecompressionBuffer+$1DE0 ; 2A - Red boomerang + dw BigDecompressionBuffer+$1500 ; 2B - Full bottle (red) + dw BigDecompressionBuffer+$1500 ; 2C - Full bottle (green) + dw BigDecompressionBuffer+$1500 ; 2D - Full bottle (blue) + dw BigDecompressionBuffer+$1500 ; 2E - Potion refill (red) + dw BigDecompressionBuffer+$1500 ; 2F - Potion refill (green) + dw BigDecompressionBuffer+$1500 ; 30 - Potion refill (blue) + dw BigDecompressionBuffer+$1D00 ; 31 - 10 bombs + dw BigDecompressionBuffer+$15C0 ; 32 - Big key + dw BigDecompressionBuffer+$1580 ; 33 - Map + dw BigDecompressionBuffer+$0800 ; 34 - 1 rupee + dw BigDecompressionBuffer+$0800 ; 35 - 5 rupees + dw BigDecompressionBuffer+$0800 ; 36 - 20 rupees + dw BigDecompressionBuffer+$0080 ; 37 - Green pendant + dw BigDecompressionBuffer+$0080 ; 38 - Blue pendant + dw BigDecompressionBuffer+$0080 ; 39 - Red pendant + dw BigDecompressionBuffer+$0920 ; 3A - Tossed bow + dw BigDecompressionBuffer+$08E0 ; 3B - Silvers + dw BigDecompressionBuffer+$09A0 ; 3C - Full bottle (bee) + dw BigDecompressionBuffer+$0960 ; 3D - Full bottle (fairy) + dw BigDecompressionBuffer+$18C0 ; 3E - Boss heart + dw BigDecompressionBuffer+$18C0 ; 3F - Sanc heart + dw BigDecompressionBuffer+$0D20 ; 40 - 100 rupees + dw BigDecompressionBuffer+$0D60 ; 41 - 50 rupees + dw BigDecompressionBuffer+$0CC0 ; 42 - Heart + dw BigDecompressionBuffer+$0D00 ; 43 - Arrow + dw BigDecompressionBuffer+$1880 ; 44 - 10 arrows + dw BigDecompressionBuffer+$0CE0 ; 45 - Small magic + dw BigDecompressionBuffer+$0DA0 ; 46 - 300 rupees + dw BigDecompressionBuffer+$0000 ; 47 - 20 rupees green + dw BigDecompressionBuffer+$09A0 ; 48 - Full bottle (good bee) + dw $00A0 ; 49 - Tossed fighter sword + dw BigDecompressionBuffer+$09A0 ; 4A - Bottle refill (good bee) + dw BigDecompressionBuffer+$0040 ; 4B - Boots + + ; Rando items + dw $04A0 ; 4C - Bomb capacity (50) + dw $05A0 ; 4D - Arrow capacity (70) + dw $01A0 ; 4E - 1/2 magic + dw $01E0 ; 4F - 1/4 magic + dw $00E0 ; 50 - Safe master sword + dw $0420 ; 51 - Bomb capacity (+5) + dw $0460 ; 52 - Bomb capacity (+10) + dw $0520 ; 53 - Arrow capacity (+5) + dw $0560 ; 54 - Arrow capacity (+10) + dw $0 ; 55 - Programmable item 1 + dw $0 ; 56 - Programmable item 2 + dw $0 ; 57 - Programmable item 3 + dw $05E0 ; 58 - Upgrade-only silver arrows + dw $0 ; 59 - Rupoor + dw $0020 ; 5A - Nothing + dw $0DE0 ; 5B - Red clock + dw $0DE0 ; 5C - Blue clock + dw $0DE0 ; 5D - Green clock + dw $0 ; 5E - Progressive sword + dw $0 ; 5F - Progressive shield + dw $0 ; 60 - Progressive armor + dw $0 ; 61 - Progressive glove + dw $0 ; 62 - RNG pool item (single) + dw $0 ; 63 - RNG pool item (multi) + dw $0 ; 64 - Progressive bow + dw $0 ; 65 - Progressive bow + dw $0 ; 66 - + dw $0 ; 67 - + dw $0 ; 68 - + dw $0 ; 69 - + dw $0060 ; 6A - Triforce + dw $11E0 ; 6B - Power star + dw $0 ; 6C - + dw $0 ; 6D - Server request item + dw $0 ; 6E - Server request item (dungeon drop) + dw $0 ; 6F - + + dw BigDecompressionBuffer+$1580 ; 70 - Map of Light World + dw BigDecompressionBuffer+$1580 ; 71 - Map of Dark World + dw BigDecompressionBuffer+$1580 ; 72 - Map of Ganon's Tower + dw BigDecompressionBuffer+$1580 ; 73 - Map of Turtle Rock + dw BigDecompressionBuffer+$1580 ; 74 - Map of Thieves' Town + dw BigDecompressionBuffer+$1580 ; 75 - Map of Tower of Hera + dw BigDecompressionBuffer+$1580 ; 76 - Map of Ice Palace + dw BigDecompressionBuffer+$1580 ; 77 - Map of Skull Woods + dw BigDecompressionBuffer+$1580 ; 78 - Map of Misery Mire + dw BigDecompressionBuffer+$1580 ; 79 - Map of Dark Palace + dw BigDecompressionBuffer+$1580 ; 7A - Map of Swamp Palace + dw BigDecompressionBuffer+$1580 ; 7B - Map of Agahnim's Tower + dw BigDecompressionBuffer+$1580 ; 7C - Map of Desert Palace + dw BigDecompressionBuffer+$1580 ; 7D - Map of Eastern Palace + dw BigDecompressionBuffer+$1580 ; 7E - Map of Hyrule Castle + dw BigDecompressionBuffer+$1580 ; 7F - Map of Sewers + + dw BigDecompressionBuffer+$1140 ; 80 - Compass of Light World + dw BigDecompressionBuffer+$1140 ; 81 - Compass of Dark World + dw BigDecompressionBuffer+$1140 ; 82 - Compass of Ganon's Tower + dw BigDecompressionBuffer+$1140 ; 83 - Compass of Turtle Rock + dw BigDecompressionBuffer+$1140 ; 84 - Compass of Thieves' Town + dw BigDecompressionBuffer+$1140 ; 85 - Compass of Tower of Hera + dw BigDecompressionBuffer+$1140 ; 86 - Compass of Ice Palace + dw BigDecompressionBuffer+$1140 ; 87 - Compass of Skull Woods + dw BigDecompressionBuffer+$1140 ; 88 - Compass of Misery Mire + dw BigDecompressionBuffer+$1140 ; 89 - Compass of Dark Palace + dw BigDecompressionBuffer+$1140 ; 8A - Compass of Swamp Palace + dw BigDecompressionBuffer+$1140 ; 8B - Compass of Agahnim's Tower + dw BigDecompressionBuffer+$1140 ; 8C - Compass of Desert Palace + dw BigDecompressionBuffer+$1140 ; 8D - Compass of Eastern Palace + dw BigDecompressionBuffer+$1140 ; 8E - Compass of Hyrule Castle + dw BigDecompressionBuffer+$1140 ; 8F - Compass of Sewers + dw $0 ; 90 - Skull key + dw $0 ; 91 - Reserved + + dw BigDecompressionBuffer+$15C0 ; 92 - Big key of Ganon's Tower + dw BigDecompressionBuffer+$15C0 ; 93 - Big key of Turtle Rock + dw BigDecompressionBuffer+$15C0 ; 94 - Big key of Thieves' Town + dw BigDecompressionBuffer+$15C0 ; 95 - Big key of Tower of Hera + dw BigDecompressionBuffer+$15C0 ; 96 - Big key of Ice Palace + dw BigDecompressionBuffer+$15C0 ; 97 - Big key of Skull Woods + dw BigDecompressionBuffer+$15C0 ; 98 - Big key of Misery Mire + dw BigDecompressionBuffer+$15C0 ; 99 - Big key of Dark Palace + dw BigDecompressionBuffer+$15C0 ; 9A - Big key of Swamp Palace + dw BigDecompressionBuffer+$15C0 ; 9B - Big key of Agahnim's Tower + dw BigDecompressionBuffer+$15C0 ; 9C - Big key of Desert Palace + dw BigDecompressionBuffer+$15C0 ; 9D - Big key of Eastern Palace + dw BigDecompressionBuffer+$15C0 ; 9E - Big key of Hyrule Castle + dw BigDecompressionBuffer+$15C0 ; 9F - Big key of Sewers + + dw BigDecompressionBuffer+$1DC0 ; A0 - Small key of Sewers + dw BigDecompressionBuffer+$1DC0 ; A1 - Small key of Hyrule Castle + dw BigDecompressionBuffer+$1DC0 ; A2 - Small key of Eastern Palace + dw BigDecompressionBuffer+$1DC0 ; A3 - Small key of Desert Palace + dw BigDecompressionBuffer+$1DC0 ; A4 - Small key of Agahnim's Tower + dw BigDecompressionBuffer+$1DC0 ; A5 - Small key of Swamp Palace + dw BigDecompressionBuffer+$1DC0 ; A6 - Small key of Dark Palace + dw BigDecompressionBuffer+$1DC0 ; A7 - Small key of Misery Mire + dw BigDecompressionBuffer+$1DC0 ; A8 - Small key of Skull Woods + dw BigDecompressionBuffer+$1DC0 ; A9 - Small key of Ice Palace + dw BigDecompressionBuffer+$1DC0 ; AA - Small key of Tower of Hera + dw BigDecompressionBuffer+$1DC0 ; AB - Small key of Thieves' Town + dw BigDecompressionBuffer+$1DC0 ; AC - Small key of Turtle Rock + dw BigDecompressionBuffer+$1DC0 ; AD - Small key of Ganon's Tower + dw $0 ; AE - Reserved + dw BigDecompressionBuffer+$1DC0 ; AF - Generic small key + + dw $0 ; B0 - + dw $0 ; B1 - + dw $0 ; B2 - + dw $0 ; B3 - + dw $0 ; B4 - + dw $0 ; B5 - + dw $0 ; B6 - + dw $0 ; B7 - + dw $0 ; B8 - + dw $0 ; B9 - + dw $0 ; BA - + dw $0 ; BB - + dw $0 ; BC - + dw $0 ; BD - + dw $0 ; BE - + dw $0 ; BF - + dw $0 ; C0 - + dw $0 ; C1 - + dw $0 ; C2 - + dw $0 ; C3 - + dw $0 ; C4 - + dw $0 ; C5 - + dw $0 ; C6 - + dw $0 ; C7 - + dw $0 ; C8 - + dw $0 ; C9 - + dw $0 ; CA - + dw $0 ; CB - + dw $0 ; CC - + dw $0 ; CD - + dw $0 ; CE - + dw $0 ; CF - + dw $0 ; D0 - + dw $0 ; D1 - + dw $0 ; D2 - + dw $0 ; D3 - + dw $0 ; D4 - + dw $0 ; D5 - + dw $0 ; D6 - + dw $0 ; D7 - + dw $0 ; D8 - + dw $0 ; D9 - + dw $0 ; DA - + dw $0 ; DB - + dw $0 ; DC - + dw $0 ; DD - + dw $0 ; DE - + dw $0 ; DF - + dw $0 ; E0 - + dw $0 ; E1 - + dw $0 ; E2 - + dw $0 ; E3 - + dw $0 ; E4 - + dw $0 ; E5 - + dw $0 ; E6 - + dw $0 ; E7 - + dw $0 ; E8 - + dw $0 ; E9 - + dw $0 ; EA - + dw $0 ; EB - + dw $0 ; EC - + dw $0 ; ED - + dw $0 ; EE - + dw $0 ; EF - + dw $0 ; F0 - + dw $0 ; F1 - + dw $0 ; F2 - + dw $0 ; F3 - + dw $0 ; F4 - + dw $0 ; F5 - + dw $0 ; F6 - + dw $0 ; F7 - + dw $0 ; F8 - + dw $0 ; F9 - + dw $0 ; FA - + dw $0 ; FB - + dw $0 ; FC - + dw $0 ; FD - + dw $0 ; FE - Server request (async) + dw $0 ; FF - diff --git a/newitems.asm b/newitems.asm index a3a2857..e0eab42 100755 --- a/newitems.asm +++ b/newitems.asm @@ -1,47 +1,6 @@ ;================================================================================ ; New Item Handlers ;-------------------------------------------------------------------------------- -; REMEMBER TO UPDATE THE TABLES IN UTILITIES.ASM! -;-------------------------------------------------------------------------------- -; #$4C - Bomb Capacity (50) -; #$4D - Arrow Capacity (70) -; #$4E - 1/2 Magic -; #$4F - 1/4 Magic -; #$50 - Safe Master Sword -; #$51 - Bomb Capacity (+5) -; #$52 - Bomb Capacity (+10) -; #$53 - Arrow Capacity (+5) -; #$54 - Arrow Capacity (+10) -; #$55 - Programmable Item 1 -; #$56 - Programmable Item 2 -; #$57 - Programmable Item 3 -; #$58 - Upgrade-Only Silver Arrows -; #$59 - Rupoor -; #$5A - Null Item -; #$5B - Red Clock -; #$5C - Blue Clock -; #$5D - Green Clock -; #$5E - Progressive Sword -; #$5F - Progressive Shield -; #$60 - Progressive Armor -; #$61 - Progressive Lifting Glove -; #$62 - RNG Pool Item (Single) -; #$63 - RNG Pool Item (Multi) -; #$64 - Progressive Bow -; #$65 - Progressive Bow -; #$6A - Goal Item (Single/Triforce) -; #$6B - Goal Item (Multi/Power Star) -; #$6C - Goal Item (Multi/Triforce Piece) -; #$6D - Server Request F0 (Hearts / Powder / Mushroom / Bonkable) -; #$6E - Server Request F1 (NPC) -; #$6F - Server Request F2 (Tablets / Pedestal) -; #$70 - Maps -; #$80 - Compasses -; #$90 - Big Keys -; #$A0 - Small Keys -; #$B0-B6 - Crystals -; #$FE - Server Request (Asynchronous Chest) -; #$FF - Null Chest ;-------------------------------------------------------------------------------- ; Service Indexes ; 0x00 - 0x04 - chests @@ -220,7 +179,7 @@ ItemBehavior: STA.l InventoryTracking RTS - .fighter_sword_shield + .sword_shield SEP #$10 LDX.b #$01 JSR .increment_sword @@ -634,6 +593,10 @@ ResolveReceipt: PLX : PLA RTS +ResolveLootIDLong: + JSR.w ResolveLootID +RTL + ResolveLootID: ; In: A - Loot ID ; Out: A - Resolved Loot ID @@ -753,9 +716,7 @@ ResolveLootID: LDA.w ScratchBufferV+6 : JMP.w .get_item ;-------------------------------------------------------------------------------- -;DATA AddReceivedItemExpanded -{ -ItemMasks: +DungeonItemMasks: ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc ; sewers and castle get 2 bits active so that they can share their items elegantly dw $C000, $C000, $2000, $1000, $0800, $0400, $0200, $0100 @@ -777,296 +738,7 @@ ItemMasks: dw $040C, $20C2, $C6BD, $0785, $8700, $E200, $8220, $00B0 dw $3EC0, $0AD0, $082C, $1003, $A905, $8D02, $0309, $20C0 dw $44D0 -} -ItemReceipts: - .offset_y : fillbyte $00 : fill 256 - .offset_x : fillbyte $00 : fill 256 - .graphics : fillbyte $00 : fill 256 ; item_graphics_indices - .width : fillbyte $00 : fill 256 ; wide_item_flag - .palette : fillbyte $00 : fill 256 ; properties - .target : fillword $0000 : fill 256*2 ; item_target_addr - .value : fillbyte $00 : fill 256 ; item_values - .pal_override : fillbyte $00 : fill 256 ; PaletteOverride - .behavior : fillword $0000 : fill 256*2 ; ItemBehavior - .resolution : fillword $0000 : fill 256*2 ; ReceiptResolution - - -macro ReceiptProps(id, y, x, gfx, width, pal, sram, value, pal_override, behavior, res) - pushpc - - org ItemReceipts_offset_y+ : db - org ItemReceipts_offset_x+ : db - org ItemReceipts_graphics+ : db - org ItemReceipts_width+ : db - org ItemReceipts_palette+ : db - org ItemReceipts_target++ : dw - org ItemReceipts_value+ : db - org ItemReceipts_pal_override+ : db - org ItemReceipts_behavior++ : dw ItemBehavior_ - org ItemReceipts_resolution++ : dw ResolveLootID_ - - pullpc - -endmacro - -%ReceiptProps($00, -5, 0, $06, 2, $02, $F359, $01, $00, fighter_sword_shield, skip) ; 00 - Fighter sword & Shield -%ReceiptProps($01, -5, 4, $18, 0, $FF, $F359, $02, $00, master_sword, skip) ; 01 - Master sword -%ReceiptProps($02, -5, 4, $18, 0, $05, $F359, $03, $00, tempered_sword, skip) ; 02 - Tempered sword -%ReceiptProps($03, -5, 4, $18, 0, $05, $F359, $04, $00, gold_sword, skip) ; 03 - Golden sword -%ReceiptProps($04, -5, 4, $2D, 0, $05, $F35A, $01, $01, fighter_shield, skip) ; 04 - Fighter shield -%ReceiptProps($05, -4, 0, $20, 2, $05, $F35A, $02, $01, red_shield, skip) ; 05 - Fire shield -%ReceiptProps($06, -4, 0, $2E, 2, $05, $F35A, $03, $01, mirror_shield, skip) ; 06 - Mirror shield -%ReceiptProps($07, -5, 4, $09, 0, $01, $F345, $01, $00, skip, skip) ; 07 - Fire rod -%ReceiptProps($08, -5, 4, $09, 0, $02, $F346, $01, $00, skip, skip) ; 08 - Ice rod -%ReceiptProps($09, -4, 4, $0A, 0, $01, $F34B, $01, $00, skip, skip) ; 09 - Hammer -%ReceiptProps($0A, -4, 4, $08, 0, $01, $F342, $01, $00, skip, skip) ; 0A - Hookshot -%ReceiptProps($0B, -4, 4, $05, 0, $01, $F340, $01, $00, bow, skip) ; 0B - Bow -%ReceiptProps($0C, -2, 5, $10, 0, $02, $F341, $01, $00, blue_boomerang, skip) ; 0C - Blue Boomerang -%ReceiptProps($0D, -4, 0, $0B, 2, $02, $F344, $02, $00, powder, skip) ; 0D - Powder -%ReceiptProps($0E, -4, 0, $2C, 2, $02, $F35C, $FF, $00, skip, skip) ; 0E - Bottle refill (bee) -%ReceiptProps($0F, -4, 0, $1B, 2, $04, $F347, $01, $00, skip, skip) ; 0F - Bombos -%ReceiptProps($10, -4, 0, $1A, 2, $04, $F348, $01, $00, skip, skip) ; 10 - Ether -%ReceiptProps($11, -4, 0, $1C, 2, $04, $F349, $01, $00, skip, skip) ; 11 - Quake -%ReceiptProps($12, -4, 0, $14, 2, $01, $F34A, $01, $00, skip, skip) ; 12 - Lamp -%ReceiptProps($13, -4, 4, $19, 0, $01, $F34C, $01, $00, skip, skip) ; 13 - Shovel -%ReceiptProps($14, -4, 0, $0C, 2, $02, $F34C, $02, $00, flute_inactive, skip) ; 14 - Flute -%ReceiptProps($15, -4, 4, $07, 0, $01, $F350, $01, $00, skip, skip) ; 15 - Somaria -%ReceiptProps($16, -4, 0, $1D, 2, $01, $F35C, $FF, $00, skip, bottles) ; 16 - Bottle -%ReceiptProps($17, -4, 0, $2F, 2, $01, $F36B, $FF, $00, skip, skip) ; 17 - Heart piece -%ReceiptProps($18, -4, 4, $07, 0, $02, $F351, $01, $00, skip, skip) ; 18 - Byrna -%ReceiptProps($19, -4, 0, $15, 2, $01, $F352, $01, $00, skip, skip) ; 19 - Cape -%ReceiptProps($1A, -4, 0, $12, 2, $02, $F353, $02, $00, skip, skip) ; 1A - Mirror -%ReceiptProps($1B, -4, 0, $0D, 2, $01, $F354, $01, $00, skip, skip) ; 1B - Glove -%ReceiptProps($1C, -4, 0, $0D, 2, $04, $F354, $02, $00, skip, skip) ; 1C - Mitts -%ReceiptProps($1D, -4, 0, $0E, 2, $04, $F34E, $01, $00, skip, skip) ; 1D - Book -%ReceiptProps($1E, -4, 0, $11, 2, $02, $F356, $01, $00, skip, skip) ; 1E - Flippers -%ReceiptProps($1F, -4, 0, $17, 2, $01, $F357, $01, $00, skip, skip) ; 1F - Pearl -%ReceiptProps($20, -4, 0, $28, 2, $06, $F37A, $FF, $01, skip, skip) ; 20 - Crystal -%ReceiptProps($21, -4, 0, $27, 2, $01, $F34D, $01, $00, skip, skip) ; 21 - Net -%ReceiptProps($22, -4, 0, $04, 2, $02, $F35B, $FF, $00, blue_mail, skip) ; 22 - Blue mail -%ReceiptProps($23, -5, 0, $04, 2, $01, $F35B, $02, $00, red_mail, skip) ; 23 - Red mail -%ReceiptProps($24, -4, 4, $0F, 0, $02, $F36F, $FF, $00, skip, skip) ; 24 - Small key -%ReceiptProps($25, -4, 0, $16, 2, $02, $F364, $FF, $00, dungeon_compass, skip) ; 25 - Compass -%ReceiptProps($26, -4, 0, $03, 2, $01, $F36C, $FF, $00, skip, skip) ; 26 - Heart container from 4/4 -%ReceiptProps($27, -4, 0, $13, 2, $02, $F375, $FF, $00, skip, skip) ; 27 - Bomb -%ReceiptProps($28, -4, 0, $01, 2, $02, $F375, $FF, $00, skip, skip) ; 28 - 3 bombs -%ReceiptProps($29, -4, 0, $1E, 2, $04, $F344, $FF, $00, mushroom, skip) ; 29 - Mushroom -%ReceiptProps($2A, -2, 5, $10, 0, $01, $F341, $02, $00, red_boomerang, skip) ; 2A - Red boomerang -%ReceiptProps($2B, -4, 0, $00, 2, $01, $F35C, $FF, $00, skip, bottles) ; 2B - Full bottle (red) -%ReceiptProps($2C, -4, 0, $00, 2, $04, $F35C, $FF, $00, skip, bottles) ; 2C - Full bottle (green) -%ReceiptProps($2D, -4, 0, $00, 2, $02, $F35C, $FF, $00, skip, bottles) ; 2D - Full bottle (blue) -%ReceiptProps($2E, -4, 0, $00, 2, $01, $F36D, $FF, $00, skip, bottles) ; 2E - Potion refill (red) -%ReceiptProps($2F, -4, 0, $00, 2, $04, $F36E, $FF, $00, skip, bottles) ; 2F - Potion refill (green) -%ReceiptProps($30, -4, 0, $00, 2, $02, $F36E, $FF, $00, skip, bottles) ; 30 - Potion refill (blue) -%ReceiptProps($31, -4, 0, $30, 2, $02, $F375, $FF, $00, skip, skip) ; 31 - 10 bombs -%ReceiptProps($32, -4, 0, $22, 2, $04, $F366, $FF, $00, dungeon_bigkey, skip) ; 32 - Big key -%ReceiptProps($33, -4, 0, $21, 2, $04, $F368, $FF, $00, dungeon_map, skip) ; 33 - Map -%ReceiptProps($34, -2, 4, $24, 0, $04, $F360, $FF, $00, skip, skip) ; 34 - 1 rupee -%ReceiptProps($35, -2, 4, $24, 0, $02, $F360, $FB, $00, skip, skip) ; 35 - 5 rupees -%ReceiptProps($36, -2, 4, $24, 0, $01, $F360, $EC, $00, skip, skip) ; 36 - 20 rupees -%ReceiptProps($37, -4, 0, $23, 2, $04, $F374, $FF, $00, skip, skip) ; 37 - Green pendant -%ReceiptProps($38, -4, 0, $23, 2, $01, $F374, $FF, $00, skip, skip) ; 38 - Blue pendant -%ReceiptProps($39, -4, 0, $23, 2, $02, $F374, $FF, $00, skip, skip) ; 39 - Red pendant -%ReceiptProps($3A, -4, 0, $29, 2, $02, $F340, $01, $00, bow_and_arrows, skip) ; 3A - Bow And Arrows -%ReceiptProps($3B, -4, 0, $2A, 2, $01, $F340, $03, $00, silver_bow, skip) ; 3B - Silver Bow -%ReceiptProps($3C, -4, 0, $2C, 2, $02, $F35C, $FF, $00, skip, skip) ; 3C - Full bottle (bee) -%ReceiptProps($3D, -4, 0, $2B, 2, $02, $F35C, $FF, $00, skip, skip) ; 3D - Full bottle (fairy) -%ReceiptProps($3E, -4, 0, $03, 2, $01, $F36C, $FF, $00, skip, skip) ; 3E - Boss heart -%ReceiptProps($3F, -4, 0, $03, 2, $01, $F36C, $FF, $00, skip, skip) ; 3F - Sanc heart -%ReceiptProps($40, -4, 0, $34, 2, $04, $F360, $9C, $00, skip, skip) ; 40 - 100 rupees -%ReceiptProps($41, -4, 0, $35, 2, $04, $F360, $CE, $00, skip, skip) ; 41 - 50 rupees -%ReceiptProps($42, -2, 4, $31, 0, $01, $F372, $FF, $00, skip, skip) ; 42 - Heart -%ReceiptProps($43, -2, 4, $33, 0, $02, $F376, $01, $00, skip, skip) ; 43 - Arrow -%ReceiptProps($44, -4, 0, $02, 2, $02, $F376, $0A, $00, skip, skip) ; 44 - 10 arrows -%ReceiptProps($45, -2, 4, $32, 0, $04, $F373, $FF, $00, skip, skip) ; 45 - Small magic -%ReceiptProps($46, -4, 0, $36, 2, $04, $F360, $FF, $00, skip, skip) ; 46 - 300 rupees -%ReceiptProps($47, -4, 0, $37, 2, $04, $F360, $FF, $00, skip, skip) ; 47 - 20 rupees green -%ReceiptProps($48, -4, 0, $2C, 2, $02, $F35C, $FF, $00, skip, skip) ; 48 - Full bottle (good bee) -%ReceiptProps($49, -5, 4, $06, 0, $05, $F359, $01, $00, fighter_sword, skip) ; 49 - Tossed fighter sword -%ReceiptProps($50, -5, 4, $06, 0, $05, $F359, $01, $00, skip, skip) ; 50 - Master Sword (safe) -%ReceiptProps($4A, -4, 0, $0C, 2, $02, $F34C, $03, $00, flute_active, skip) ; 4A - Active Flute -%ReceiptProps($4B, -4, 0, $38, 2, $01, $F355, $01, $00, skip, skip) ; 4B - Boots -%ReceiptProps($4C, -4, 0, $39, 2, $04, $F375, $32, $00, bombs_50, skip) ; 4C - Bomb capacity (50) -%ReceiptProps($4D, -4, 0, $3A, 2, $04, $F376, $46, $00, arrows_70, skip) ; 4D - Arrow capacity (70) -%ReceiptProps($4E, -4, 0, $3B, 2, $04, $F373, $80, $00, magic_2, magic) ; 4E - 1/2 magic -%ReceiptProps($4F, -4, 0, $3C, 2, $04, $F373, $80, $00, magic_4, magic) ; 4F - 1/4 magic -%ReceiptProps($50, -5, 4, $18, 0, $05, $F359, $02, $00, master_sword_safe, skip) ; 50 - Safe master sword -%ReceiptProps($51, -4, 0, $42, 2, $04, $F375, $FF, $00, bombs_5, skip) ; 51 - Bomb capacity (+5) -%ReceiptProps($52, -4, 0, $3E, 2, $04, $F375, $FF, $00, bombs_10, skip) ; 52 - Bomb capacity (+10) -%ReceiptProps($53, -4, 0, $3F, 2, $04, $F376, $FF, $00, arrows_5, skip) ; 53 - Arrow capacity (+5) -%ReceiptProps($54, -4, 0, $40, 2, $04, $F376, $FF, $00, arrows_10, skip) ; 54 - Arrow capacity (+10) -%ReceiptProps($55, -4, 0, $00, 2, $04, $F41A, $FF, $00, programmable_1, skip) ; 55 - Programmable item 1 -%ReceiptProps($56, -4, 0, $00, 2, $04, $F41C, $FF, $00, programmable_2, skip) ; 56 - Programmable item 2 -%ReceiptProps($57, -4, 0, $00, 2, $04, $F41E, $FF, $00, programmable_3, skip) ; 57 - Programmable item 3 -%ReceiptProps($58, -4, 0, $41, 2, $01, $F340, $FF, $00, silver_arrows, skip) ; 58 - Upgrade-only Silver Arrows -%ReceiptProps($59, -4, 4, $24, 0, $03, $F360, $FF, $00, rupoor, skip) ; 59 - Rupoor -%ReceiptProps($5A, -4, 0, $47, 2, $01, $F36A, $FF, $00, skip, skip) ; 5A - Nothing -%ReceiptProps($5B, -4, 0, $4B, 2, $01, $F454, $FF, $00, red_clock, skip) ; 5B - Red clock -%ReceiptProps($5C, -4, 0, $4B, 2, $02, $F454, $FF, $00, blue_clock, skip) ; 5C - Blue clock -%ReceiptProps($5D, -4, 0, $4B, 2, $04, $F454, $FF, $00, green_clock, skip) ; 5D - Green clock -%ReceiptProps($5E, -4, 0, $FE, 2, $FF, $F359, $FF, $00, prog_sword, prog_sword) ; 5E - Progressive sword -%ReceiptProps($5F, -4, 0, $FF, 2, $FF, $F35A, $FF, $01, prog_shield, shields) ; 5F - Progressive shield -%ReceiptProps($60, -4, 0, $FD, 2, $FF, $F35B, $FF, $00, prog_mail, armor) ; 60 - Progressive armor -%ReceiptProps($61, -4, 0, $0D, 2, $FF, $F354, $FF, $00, skip, gloves) ; 61 - Progressive glove -%ReceiptProps($62, -4, 0, $FF, 2, $FF, $F36A, $FF, $00, skip, rng_single) ; 62 - RNG pool item (single) -%ReceiptProps($63, -4, 0, $FF, 2, $FF, $F36A, $FF, $00, skip, rng_multi) ; 63 - RNG pool item (multi) -%ReceiptProps($64, -4, 0, $FF, 2, $00, $F340, $FF, $00, skip, progressive_bow) ; 64 - Progressive bow -%ReceiptProps($65, -4, 0, $FF, 2, $00, $F340, $FF, $00, skip, progressive_bow_2) ; 65 - Progressive bow -%ReceiptProps($66, -4, 0, $FF, 2, $00, $F36A, $FF, $00, skip, skip) ; 66 - -%ReceiptProps($67, -4, 0, $FF, 2, $00, $F36A, $FF, $00, skip, skip) ; 67 - -%ReceiptProps($68, -4, 0, $FF, 2, $00, $F36A, $FF, $00, skip, skip) ; 68 - -%ReceiptProps($69, -4, 0, $FF, 2, $00, $F36A, $FF, $00, skip, skip) ; 69 - -%ReceiptProps($6A, -4, 0, $49, 2, $04, $F36A, $FF, $00, triforce, skip) ; 6A - Triforce -%ReceiptProps($6B, -4, 0, $50, 2, $04, $F36A, $FF, $00, goal_item, skip) ; 6B - Power star -%ReceiptProps($6C, -4, 0, $49, 2, $04, $F36A, $FF, $00, goal_item, skip) ; 6C - Triforce Piece -%ReceiptProps($6D, -4, 0, $FF, 2, $00, $F36A, $FF, $00, request_F0, skip) ; 6D - Server request item -%ReceiptProps($6E, -4, 0, $FF, 2, $00, $F36A, $FF, $00, request_F1, skip) ; 6E - Server request item (dungeon drop) -%ReceiptProps($6F, -4, 0, $FF, 2, $00, $F36A, $FF, $00, request_F2, skip) ; 6F - -%ReceiptProps($70, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 70 - Map of Light World -%ReceiptProps($71, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 71 - Map of Dark World -%ReceiptProps($72, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 72 - Map of Ganon's Tower -%ReceiptProps($73, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 73 - Map of Turtle Rock -%ReceiptProps($74, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 74 - Map of Thieves' Town -%ReceiptProps($75, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 75 - Map of Tower of Hera -%ReceiptProps($76, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 76 - Map of Ice Palace -%ReceiptProps($77, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 77 - Map of Skull Woods -%ReceiptProps($78, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 78 - Map of Misery Mire -%ReceiptProps($79, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 79 - Map of Dark Palace -%ReceiptProps($7A, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 7A - Map of Swamp Palace -%ReceiptProps($7B, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 7B - Map of Agahnim's Tower -%ReceiptProps($7C, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 7C - Map of Desert Palace -%ReceiptProps($7D, -4, 0, $21, 2, $04, $F36A, $FF, $00, free_map, skip) ; 7D - Map of Eastern Palace -%ReceiptProps($7E, -4, 0, $21, 2, $04, $F36A, $FF, $00, hc_map, skip) ; 7E - Map of Hyrule Castle -%ReceiptProps($7F, -4, 0, $21, 2, $04, $F36A, $FF, $00, hc_map, skip) ; 7F - Map of Sewers -%ReceiptProps($80, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 80 - Compass of Light World -%ReceiptProps($81, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 81 - Compass of Dark World -%ReceiptProps($82, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 82 - Compass of Ganon's Tower -%ReceiptProps($83, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 83 - Compass of Turtle Rock -%ReceiptProps($84, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 84 - Compass of Thieves' Town -%ReceiptProps($85, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 85 - Compass of Tower of Hera -%ReceiptProps($86, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 86 - Compass of Ice Palace -%ReceiptProps($87, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 87 - Compass of Skull Woods -%ReceiptProps($88, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 88 - Compass of Misery Mire -%ReceiptProps($89, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 89 - Compass of Dark Palace -%ReceiptProps($8A, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 8A - Compass of4Swamp Palace -%ReceiptProps($8B, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 8B - Compass of Agahnim's Tower -%ReceiptProps($8C, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 8C - Compass of Desert Palace -%ReceiptProps($8D, -4, 0, $16, 2, $02, $F36A, $FF, $00, free_compass, skip) ; 8D - Compass of Eastern Palace -%ReceiptProps($8E, -4, 0, $16, 2, $02, $F36A, $FF, $00, hc_compass, skip) ; 8E - Compass of Hyrule Castle -%ReceiptProps($8F, -4, 0, $16, 2, $02, $F36A, $FF, $00, hc_compass, skip) ; 8F - Compass of Sewers -%ReceiptProps($90, -4, 0, $22, 2, $04, $F36A, $FF, $00, skip, skip) ; 90 - Skull key -%ReceiptProps($91, -4, 0, $22, 2, $04, $F36A, $FF, $00, skip, skip) ; 91 - Reserved -%ReceiptProps($92, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 92 - Big key of Ganon's Tower -%ReceiptProps($93, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 93 - Big key of Turtle Rock -%ReceiptProps($94, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 94 - Big key of Thieves' Town -%ReceiptProps($95, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 95 - Big key of Tower of Hera -%ReceiptProps($96, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 96 - Big key of Ice Palace -%ReceiptProps($97, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 97 - Big key of Skull Woods -%ReceiptProps($98, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 98 - Big key of Misery Mire -%ReceiptProps($99, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 99 - Big key of Dark Palace -%ReceiptProps($9A, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 9A - Big key of Swamp Palace -%ReceiptProps($9B, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 9B - Big key of Agahnim's Tower -%ReceiptProps($9C, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 9C - Big key of Desert Palace -%ReceiptProps($9D, -4, 0, $22, 2, $04, $F36A, $FF, $00, free_bigkey, skip) ; 9D - Big key of Eastern Palace -%ReceiptProps($9E, -4, 0, $22, 2, $04, $F36A, $FF, $00, hc_bigkey, skip) ; 9E - Big key of Hyrule Castle -%ReceiptProps($9F, -4, 0, $22, 2, $04, $F36A, $FF, $00, hc_bigkey, skip) ; 9F - Big key of Sewers -%ReceiptProps($A0, -4, 4, $0F, 0, $04, $F36A, $FF, $00, hc_smallkey, skip) ; A0 - Small key of Sewers -%ReceiptProps($A1, -4, 4, $0F, 0, $04, $F36A, $FF, $00, hc_smallkey, skip) ; A1 - Small key of Hyrule Castle -%ReceiptProps($A2, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A2 - Small key of Eastern Palace -%ReceiptProps($A3, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A3 - Small key of Desert Palace -%ReceiptProps($A4, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A4 - Small key of Agahnim's Tower -%ReceiptProps($A5, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A5 - Small key of Swamp Palace -%ReceiptProps($A6, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A6 - Small key of Dark Palace -%ReceiptProps($A7, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A7 - Small key of Misery Mire -%ReceiptProps($A8, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A8 - Small key of Skull Woods -%ReceiptProps($A9, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; A9 - Small key of Ice Palace -%ReceiptProps($AA, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; AA - Small key of Tower of Hera -%ReceiptProps($AB, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; AB - Small key of Thieves' Town -%ReceiptProps($AC, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; AC - Small key of Turtle Rock -%ReceiptProps($AD, -4, 4, $0F, 0, $04, $F36A, $FF, $00, free_smallkey, skip) ; AD - Small key of Ganon's Tower -%ReceiptProps($AE, -4, 4, $0F, 0, $04, $F36A, $FF, $00, skip, skip) ; AE - Reserved -%ReceiptProps($AF, -4, 4, $0F, 0, $04, $F36A, $FF, $00, generic_smallkey, skip) ; AF - Generic small key -%ReceiptProps($B0, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B0 - -%ReceiptProps($B1, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B1 - -%ReceiptProps($B2, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B2 - -%ReceiptProps($B3, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B3 - -%ReceiptProps($B4, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B4 - -%ReceiptProps($B5, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B5 - -%ReceiptProps($B6, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B6 - -%ReceiptProps($B7, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B7 - -%ReceiptProps($B8, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B8 - -%ReceiptProps($B9, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; B9 - -%ReceiptProps($BA, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BA - -%ReceiptProps($BB, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BB - -%ReceiptProps($BC, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BC - -%ReceiptProps($BD, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BD - -%ReceiptProps($BE, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BE - -%ReceiptProps($BF, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; BF - -%ReceiptProps($C0, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C0 - -%ReceiptProps($C1, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C1 - -%ReceiptProps($C2, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C2 - -%ReceiptProps($C3, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C3 - -%ReceiptProps($C4, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C4 - -%ReceiptProps($C5, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C5 - -%ReceiptProps($C6, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C6 - -%ReceiptProps($C7, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C7 - -%ReceiptProps($C8, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C8 - -%ReceiptProps($C9, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; C9 - -%ReceiptProps($CA, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CA - -%ReceiptProps($CB, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CB - -%ReceiptProps($CC, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CC - -%ReceiptProps($CD, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CD - -%ReceiptProps($CE, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CE - -%ReceiptProps($CF, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; CF - -%ReceiptProps($D0, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D0 - -%ReceiptProps($D1, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D1 - -%ReceiptProps($D2, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D2 - -%ReceiptProps($D3, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D3 - -%ReceiptProps($D4, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D4 - -%ReceiptProps($D5, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D5 - -%ReceiptProps($D6, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D6 - -%ReceiptProps($D7, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D7 - -%ReceiptProps($D8, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D8 - -%ReceiptProps($D9, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; D9 - -%ReceiptProps($DA, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DA - -%ReceiptProps($DB, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DB - -%ReceiptProps($DC, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DC - -%ReceiptProps($DD, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DD - -%ReceiptProps($DE, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DE - -%ReceiptProps($DF, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; DF - -%ReceiptProps($E0, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E0 - -%ReceiptProps($E1, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E1 - -%ReceiptProps($E2, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E2 - -%ReceiptProps($E3, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E3 - -%ReceiptProps($E4, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E4 - -%ReceiptProps($E5, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E5 - -%ReceiptProps($E6, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E6 - -%ReceiptProps($E7, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E7 - -%ReceiptProps($E8, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E8 - -%ReceiptProps($E9, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; E9 - -%ReceiptProps($EA, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; EA - -%ReceiptProps($EB, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; EB - -%ReceiptProps($EC, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; EC - -%ReceiptProps($ED, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; ED - -%ReceiptProps($EE, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; EE - -%ReceiptProps($EF, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; EF - -%ReceiptProps($F0, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F0 - -%ReceiptProps($F1, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F1 - -%ReceiptProps($F2, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F2 - -%ReceiptProps($F3, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F3 - -%ReceiptProps($F4, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F4 - -%ReceiptProps($F5, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F5 - -%ReceiptProps($F6, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F6 - -%ReceiptProps($F7, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F7 - -%ReceiptProps($F8, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F8 - -%ReceiptProps($F9, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; F9 - -%ReceiptProps($FA, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FA - -%ReceiptProps($FB, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FB - -%ReceiptProps($FC, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FC - -%ReceiptProps($FD, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FD - -%ReceiptProps($FE, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FE - Server request (async) -%ReceiptProps($FF, -4, 0, $49, 2, $04, $F36A, $FF, $00, skip, skip) ; FF - ;-------------------------------------------------------------------------------- BottleListExpanded: @@ -1075,55 +747,6 @@ BottleListExpanded: PotionListExpanded: db $2E, $2F, $30, $FF, $0E ;-------------------------------------------------------------------------------- -Link_ReceiveItemAlternatesExpanded: -{ - db -1, -1, -1, -1, -1, -1, -1, -1 - db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, -1, -1, $44, -1, -1, -1 - - db -1, -1, $35, -1, -1, -1, -1, -1 - db -1, -1, -1, -1, -1, -1, -1, -1 - - db -1, -1, -1, -1, -1, -1, -1, -1 - db -1, -1, -1, -1, -1, -1, -1, -1 ; db -1, -1, $46, -1, -1, -1, -1, -1 - - db -1, -1, -1, -1, -1, -1, -1, -1 - db -1, -1, -1, -1, -1, -1, -1, -1 - - db -1, -1, -1, -1, -1, -1, -1, -1 - db -1, -1, -1, -1 - - db -1, -1, -1, -1 - db -1 ; Master Sword (Safe) - db -1, -1, -1, -1 ; +5/+10 Bomb Arrows - db -1, -1, -1 ; 3x Programmable Item - db -1 ; Upgrade-Only Silver Arrows - db -1 ; 1 Rupoor - db -1 ; Null Item - db -1, -1, -1 ; Red, Blue & Green Clocks - db -1, -1, -1, -1 ; Progressive Sword, Shield, Armor & Gloves - db -1, -1 ; RNG Single & Multi - db -1, -1 ; Progressive Bow - db -1, -1, -1, -1 ; Unused - db -1, -1 ; Goal Item Single, Multi & Alt Multi - db -1, -1, -1, -1 ; Unused - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Map - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Compass - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Big Key - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Free Small Key - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused - db -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ; Unused -} -;-------------------------------------------------------------------------------- -.loadAlternate - PHB : PHK : PLB - TYA : JSR AttemptItemSubstitution : STA.b Scrap03 - CPY.b Scrap03 : BNE + : LDA.b #$FF : STA.b Scrap03 : + - PLB -RTL -;-------------------------------------------------------------------------------- HandleBowTracking: ; In: A - Item Receipt ID CMP.b #$64 : BEQ .prog_one @@ -1379,20 +1002,20 @@ MaybeFlagCompassTotalEntrance: RTL ;-------------------------------------------------------------------------------- DungeonItemIDMap: ; Maps lower four bits of our new dungeon items to DungeonID -db $FFFF -db $FFFF -db $001A ; GT -db $0018 ; TR -db $0016 ; TT -db $0014 ; TH -db $0012 ; IP -db $0010 ; SW -db $000E ; MM -db $000C ; PD -db $000A ; SP -db $0008 ; CT -db $0006 ; DP -db $0004 ; EP -db $0002 ; HC -db $0000 ; SW +dw $FFFF +dw $FFFF +dw $001A ; GT +dw $0018 ; TR +dw $0016 ; TT +dw $0014 ; TH +dw $0012 ; IP +dw $0010 ; SW +dw $000E ; MM +dw $000C ; PD +dw $000A ; SP +dw $0008 ; CT +dw $0006 ; DP +dw $0004 ; EP +dw $0002 ; HC +dw $0000 ; SW diff --git a/ram.asm b/ram.asm index b7fa837..0dad924 100644 --- a/ram.asm +++ b/ram.asm @@ -267,6 +267,8 @@ OWScreenSize = $7E0712 ; Flags overworld screen size. OAMBuffer = $7E0800 ; Main OAM buffer sent to OAM. $200 bytes. OAMBuffer2 = $7E0A00 ; ; +TransparencyFlag = $7E0ABD ; Flags transparency effects e.g. in Thieves Town Hellway + ; OWTransitionFlag = $7E0ABF ; Used for certain transitions like smith, witch, etc. ; ItemGFXPtr = $7E0AFA ; Pointer for item receipt graphics transfers @@ -742,6 +744,7 @@ endmacro %assertRAM(OWScreenSize, $7E0712) %assertRAM(OAMBuffer, $7E0800) %assertRAM(OAMBuffer2, $7E0A00) +%assertRAM(TransparencyFlag, $7E0ABD) %assertRAM(OWTransitionFlag, $7E0ABF) %assertRAM(TreePullKills, $7E0CFB) %assertRAM(TreePullHits, $7E0CFC) diff --git a/save.asm b/save.asm index 15499fc..d6ba313 100644 --- a/save.asm +++ b/save.asm @@ -1,18 +1,42 @@ ;-------------------------------------------------------------------------------- WriteSaveChecksumAndBackup: - LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes - CLC : ADC.l SaveDataWRAM, X - INX #2 - CPX.w #$04FE : BNE - - LDX.w #$0000 : - ; Checksum extended save data - CLC : ADC.l ExtendedFileNameWRAM, X - INX #2 - CPX.w #$0FFE : BNE - + TDC + CLC + LDX.w #$004FC + - + ADC.l SaveDataWRAM, X + DEX #2 + BPL - + LDX.w #$0FFE + - + ADC.l ExtendedFileNameWRAM, X + DEX #2 + BPL - STA.b Scrap00 LDA.w #$5A5A SEC : SBC.b Scrap00 STA.l InverseChecksumSRAM + BRA .backup_save + .from_sram + TDC + CLC + LDX.w #$004FC + - + ADC.l CartridgeSRAM, X + DEX #2 + BPL - + LDX.w #$0FFE + - + ADC.l ExtendedFileNameSRAM, X + DEX #2 + BPL - + STA.b Scrap00 + LDA.w #$5A5A + SEC : SBC.b Scrap00 + STA.l InverseChecksumSRAM + + .backup_save PHB LDA.w #$14FF ; \ LDX.w #CartridgeSRAM ; | Copies $1500 bytes from beginning of cart SRAM to @@ -21,31 +45,37 @@ WriteSaveChecksumAndBackup: PLB TDC TAX - RTL ;-------------------------------------------------------------------------------- ValidateSRAM: REP #$30 - LDX.w #$0000 : TXA : - ; Checksum first $04FE bytes - CLC : ADC.l CartridgeSRAM, X - INX #2 - CPX.w #$04FE : BNE - - LDX.w #$0000 : - ; Checksum extended save data - CLC : ADC.l ExtendedFileNameSRAM, X - INX #2 - CPX.w #$0FFE : BNE - + TDC + CLC + LDX.w #$04FC + - + ADC.l CartridgeSRAM, X + DEX #2 + BPL - + LDX.w #$0FFE + - + ADC.l ExtendedFileNameSRAM, X + DEX #2 + BPL - STA.b Scrap00 LDA.w #$5A5A SEC : SBC.b Scrap00 CMP.l InverseChecksumSRAM : BEQ .goodchecksum - LDX.w #$0000 : TXA : - ; Do the same for the backup save - CLC : ADC.l SaveBackupSRAM, X - INX #2 - CPX.w #$04FE : BNE - - LDX.w #$0000 : - - CLC : ADC.l SaveBackupSRAM+$500, X - INX #2 - CPX.w #$0FFE : BNE - + TDC + LDX.w #$04FC + - + ADC.l SaveBackupSRAM, X + DEX #2 + BPL - + LDX.w #$0FFE + - + ADC.l SaveBackupSRAM+$500, X + DEX #2 + BPL - STA.b Scrap00 LDA.w #$5A5A SEC : SBC.b Scrap00 diff --git a/shopkeeper.asm b/shopkeeper.asm index 5f3169c..b06c045 100644 --- a/shopkeeper.asm +++ b/shopkeeper.asm @@ -1,40 +1,6 @@ -;-------------------------------------------------------------------------------- -; 291 - Moldorm Cave -; 286 - Northeast Dark Swamp Cave -;-------------------------------------------------------------------------------- !FREE_TILE_BUFFER = $1180 !FREE_TILE = $5A40 -; A = Tile ID -macro UploadOAM(dest) - PHA : PHP - PHA - REP #$20 ; set 16-bit accumulator - LDA.w #$0000 : STA.l SpriteOAM - STA.l SpriteOAM+2 - LDA.w #$0200 : STA.l SpriteOAM+6 - SEP #$20 ; set 8-bit accumulator - LDA.b : STA.l SpriteOAM+4 - - LDA.b $01,s - - JSL.l GetSpritePalette_resolved - STA.l SpriteOAM+5 : STA.l SpriteOAM+13 - PLA - JSL.l IsNarrowSprite : BCS .narrow - - BRA .done - - .narrow - REP #$20 ; set 16-bit accumulator - LDA.w #$0000 : STA.l SpriteOAM+7 - STA.l SpriteOAM+14 - LDA.w #$0800 : STA.l SpriteOAM+9 - LDA.w #$3400 : STA.l SpriteOAM+11 - - .done - PLP : PLA -endmacro ;-------------------------------------------------------------------------------- ; $0A : Digit Offset ; $0C-$0D : Value to Display @@ -593,19 +559,25 @@ Shopkeeper_DrawNextItem: STA.l SpriteOAM+4 - LDA.l ShopInventory, X ; get item palette + LDA.l ShopInventory, X + PHX JSL.l GetSpritePalette_resolved : STA.l SpriteOAM+5 + PLX LDA.b #$00 : STA.l SpriteOAM+6 - LDA.l ShopInventory, X ; get item palette - JSL.l IsNarrowSprite : BCS .narrow + LDA.l ShopInventory, X + PHX + TAX + LDA.l SpriteProperties_standing_width,X : BEQ .narrow .full + PLX LDA.b #$02 STA.l SpriteOAM+7 LDA.b #$01 BRA ++ .narrow + PLX LDA.b #$00 STA.l SpriteOAM+7 JSR.w PrepNarrowLower diff --git a/tables.asm b/tables.asm index 0dee045..ed585d7 100644 --- a/tables.asm +++ b/tables.asm @@ -1033,12 +1033,8 @@ dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, $00, $00 dw $0000 : db $00 : dw $0000, $0000, $0000, $0000, $0000, $0000, $0000 : db $00, $00, $00 ;-------------------------------------------------------------------------------- -; 0x1802A0 - 0x1802BF +; 0x1802A0 - 0x1802BF (unused) ;--------------------------------------------------------------------------------- -; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc -DungeonItemMasks: - dw $8000, $4000, $2000, $1000, $0800, $0400, $0200, $0100 - dw $0080, $0040, $0020, $0010, $0008, $0004 ;-------------------------------------------------------------------------------- ; 0x1802C0 - 0x1802FF (unused) @@ -1070,12 +1066,9 @@ org $B08358 AllowAccidentalMajorGlitch: db $00 ;-------------------------------------------------------------------------------- -; GFX pointers (0x180359 - 0x18035B) +; GFX pointers (0x180359 - 0x18035E) ; For 3rd party sprite stuff ;-------------------------------------------------------------------------------- -org $B08359 -dl GfxPalettes - org $B0835C dl ItemReceiptGraphicsOffsets diff --git a/tablets.asm b/tablets.asm index fa41579..bbf1b22 100644 --- a/tablets.asm +++ b/tablets.asm @@ -30,14 +30,15 @@ RTS ;-------------------------------------------------------------------------------- SpawnTabletItem: JSL.l LoadOutdoorValue - PHA - JSL.l PrepDynamicTile + JSL.l ResolveLootIDLong + STA.w SpriteItemType, Y + JSL.l PrepDynamicTile_loot_resolved LDA.b #$EB STA.l MiniGameTime JSL Sprite_SpawnDynamically - PLA : STA.w SpriteItemType, Y ; Store item type + LDA.w SpriteItemType, Y ; Store item type LDA.b LinkPosX : STA.w SpritePosXLow, Y LDA.b LinkPosX+1 : STA.w SpritePosXHigh, Y @@ -90,7 +91,7 @@ IsMedallion: RTL ;-------------------------------------------------------------------------------- LoadNarrowObject: - LDA.l ItemReceipts_width, X : STA.b ($92), Y ; AddReceiveItem.wide_item_flag? + LDA.l SpriteProperties_standing_width, X : STA.b ($92), Y ; AddReceiveItem.wide_item_flag? RTL ;-------------------------------------------------------------------------------- CheckTabletItem: diff --git a/utilities.asm b/utilities.asm index b3bc7a2..4c4a991 100644 --- a/utilities.asm +++ b/utilities.asm @@ -8,33 +8,19 @@ GetSpriteID: JSR.w AttemptItemSubstitution JSR.w ResolveLootID - CMP.b #$16 : BEQ .bottle ; Bottle - CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle - CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle - CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle - CMP.b #$3C : BEQ .bottle ; Bee w/bottle - CMP.b #$3D : BEQ .bottle ; Fairy w/bottle - CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle - CMP.b #$6D : BEQ .server_F0 ; Server Request F0 - CMP.b #$6E : BEQ .server_F1 ; Server Request F1 - CMP.b #$6F : BEQ .server_F2 ; Server Request F2 + CMP.b #$6D : BEQ .server_F0 ; Server Request F0 + CMP.b #$6E : BEQ .server_F1 ; Server Request F1 + CMP.b #$6F : BEQ .server_F2 ; Server Request F2 BRA .normal - .bottle - PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + - PLA : LDA.l BottleLimitReplacement - JMP GetSpriteID - + - PLA : BRA .normal - .server_F0 - JSL.l ItemVisualServiceRequest_F0 - BRA .normal - .server_F1 - JSL.l ItemVisualServiceRequest_F1 - BRA .normal + .server_F0 + JSL.l ItemVisualServiceRequest_F0 + BRA .normal + .server_F1 + JSL.l ItemVisualServiceRequest_F1 + BRA .normal .server_F2 - JSL.l ItemVisualServiceRequest_F2 + JSL.l ItemVisualServiceRequest_F2 .normal - PHX TAX : LDA.l ItemReceipts_graphics, X ; look up item gfx PLX @@ -46,163 +32,18 @@ RTL ; out: A - Palette ;-------------------------------------------------------------------------------- GetSpritePalette: - JSR AttemptItemSubstitution - JSR.w ResolveLootID + JSR AttemptItemSubstitution + JSR.w ResolveLootID .resolved - CMP.b #$16 : BEQ .bottle ; Bottle - CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle - CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle - CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle - CMP.b #$3C : BEQ .bottle ; Bee w/bottle - CMP.b #$3D : BEQ .bottle ; Fairy w/bottle - CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle - BRA .notBottle - .bottle - PHA : JSR.w CountBottles : CMP.l BottleLimit : !BLT + - PLA : LDA.l BottleLimitReplacement - JMP GetSpritePalette - + - PLA : .notBottle - PHX - TAX : LDA.l GfxPalettes, X ; look up item gfx - PLX + TAX + LDA.l SpriteProperties_standing_palette, X : BIT #$80 : BNE .load_palette + ASL RTL - -;--------------------------------------------------------------------------------------------------- - -;DATA - Loot Identifier to Sprite Palette -{ -GfxPalettes: - db $00, $04, $02, $08, $04, $02, $08, $02 - db $04, $02, $02, $02, $04, $04, $04, $08 - - db $08, $08, $02, $02, $04, $02, $02, $02 - db $04, $02, $04, $02, $08, $08, $04, $02 - - db $0A, $02, $04, $02, $04, $04, $00, $04 - db $04, $08, $02, $02, $08, $04, $02, $08 - - db $04, $04, $08, $08, $08, $04, $02, $08 - db $02, $04, $08, $02, $04, $04, $02, $02 - - db $08, $08, $02, $04, $04, $08, $08, $08 - db $04, $04, $04, $02, $08, $08, $08, $08 - ; db $04, $0A, $04, $02, $FF, $FF, $FF, $FF - - db $04 ; Safe Master Sword - db $08, $08, $08, $08 ; Bomb & Arrow +5/+10 - db $04, $00, $00 ; Programmable Items 1-3 - db $02 ; Upgrade-Only Silver Arrows - db $06 ; 1 Rupoor - db $02 ; Null Item - db $02, $04, $08 ; Red, Blue & Green Clocks - db $FD, $FE, $FF, $FC ; Progressive Sword, Shield, Armor & Gloves - db $FA, $FB ; RNG Single & Multi - db $F8, $F8 ; Progressive Bow - db $00, $00, $00, $00 ; Unused - db $08, $08, $08 ; Goal Item Single, Multi & Alt Multi - db $04, $04, $04 ; Server Request F0, F1, F2 - - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Map - db $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04, $04 ; Free Compass - ;db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; *EVENT* - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Big Key - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Free Small Key - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused - db $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08 ; Unused -} -;-------------------------------------------------------------------------------- - -;-------------------------------------------------------------------------------- -; IsNarrowSprite -; in: A - Loot ID -; out: Carry - 0 = Full, 1 = Narrow -;-------------------------------------------------------------------------------- -IsNarrowSprite: - PHA : PHX - PHB : PHK : PLB - JSR AttemptItemSubstitution - ;-------- - CMP.b #$16 : BEQ .bottle ; Bottle - CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle - CMP.b #$2C : BEQ .bottle ; Green Potion w/bottle - CMP.b #$2D : BEQ .bottle ; Blue Potion w/bottle - CMP.b #$3C : BEQ .bottle ; Bee w/bottle - CMP.b #$3D : BEQ .bottle ; Fairy w/bottle - CMP.b #$48 : BEQ .bottle ; Gold Bee w/bottle - BRA .notBottle - .bottle - JSR.w CountBottles : CMP.l BottleLimit : !BLT + - LDA.l BottleLimitReplacement - JSL.l IsNarrowSprite - JMP .done - + : JMP .continue - .notBottle - CMP.b #$5E : BNE ++ ; Progressive Sword - LDA.l HighestSword : CMP.l ProgressiveSwordLimit : !BLT + ; Progressive Sword Limit - LDA.l ProgressiveSwordReplacement - JSL.l IsNarrowSprite - JMP .done - + : JMP .continue - ++ CMP.b #$5F : BNE ++ ; Progressive Shield - LDA.l HighestShield : BNE + : JMP .done ; No Shield - + : CMP.l ProgressiveShieldLimit : !BLT .continue - LDA.l ProgressiveShieldReplacement - JSL.l IsNarrowSprite - JMP .done - ++ CMP.b #$60 : BNE ++ ; Progressive Armor - LDA.l HighestMail : CMP.l ProgressiveArmorLimit : !BLT .continue - LDA.l ProgressiveArmorReplacement - JSL.l IsNarrowSprite - JMP .done - + - ++ CMP.b #$62 : BNE ++ ; RNG Item (Single) - JSL.l GetRNGItemSingle : JMP .continue - ++ CMP.b #$63 : BNE ++ ; RNG Item (Multi) - JSL.l GetRNGItemMulti - ++ CMP.b #$64 : BEQ + ; Progressive Bow - CMP.b #$65 : BNE .continue ; Progressive Bow (alt) - + : LDA.l BowEquipment : INC : LSR - CMP.l ProgressiveBowLimit : !BLT + - LDA.l ProgressiveBowReplacement - JSL.l IsNarrowSprite - JMP .done - .continue - ;-------- - - LDX.b #$00 ; set index counter to 0 - ;---- - - - CPX.b #$24 : !BGE .false ; finish if we've done the whole list - CMP.l .smallSprites, X : BNE + ; skip to next if we don't match - ;-- - SEC ; set true state - BRA .done ; we're done - ;-- - + - INX ; increment index - BRA - ; go back to beginning of loop - ;---- - .false - CLC - .done - PLB : PLX : PLA + .load_palette + JSL.l LoadItemPalette + ASL RTL -;DATA - Half-Size Sprite Markers -{ - .smallSprites - db $04, $07, $08, $09, $0A, $0B, $0C, $13 - db $15, $18, $24, $2A, $34, $35, $36, $42 - db $43, $45, $59, $A0, $A1, $A2, $A3, $A4 - db $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC - db $AD, $AE, $AF, $FF, $FF, $FF, $FF, $FF -} -;-------------------------------------------------------------------------------- - ;-------------------------------------------------------------------------------- ; PrepDynamicTile ; in: A - Loot ID @@ -210,11 +51,15 @@ RTL PrepDynamicTile: PHA : PHX : PHY : PHB JSR.w ResolveLootID + - JSR.w LoadDynamicTileOAMTable JSL TransferItemReceiptToBuffer_using_ReceiptID SEP #$30 PLB : PLY : PLX : PLA RTL + .loot_resolved + PHA : PHX : PHY : PHB + BRA - ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- @@ -222,34 +67,31 @@ RTL ; in: A - Loot ID ;-------------------------------------------------------------------------------- 20/847B LoadDynamicTileOAMTable: - PHA : PHP + PHA : PHP + REP #$20 + LDA.w #$0000 : STA.l SpriteOAM : STA.l SpriteOAM+2 + LDA.w #$0200 : STA.l SpriteOAM+6 + SEP #$20 + LDA.b #$24 : STA.l SpriteOAM+4 - PHA - REP #$20 ; set 16-bit accumulator - LDA.w #$0000 : STA.l SpriteOAM - STA.l SpriteOAM+2 - LDA.w #$0200 : STA.l SpriteOAM+6 - SEP #$20 ; set 8-bit accumulator - LDA.b #$24 : STA.l SpriteOAM+4 + LDA.w SpriteItemType,X + JSL.l GetSpritePalette_resolved + STA.l SpriteOAM+5 : STA.l SpriteOAM+13 + PHX + LDA.l SpriteProperties_standing_width,X : BEQ .narrow + BRA .done - LDA.b $01,s + .narrow + REP #$20 + LDA.w #$0400 : STA.l SpriteOAM+7 : STA.l SpriteOAM+14 + LDA.w #$0800 : STA.l SpriteOAM+9 + LDA.w #$3400 : STA.l SpriteOAM+11 + SEP #$20 + LDA.b #$04 : STA.l SpriteOAM - JSL.l GetSpritePalette_resolved - STA.l SpriteOAM+5 : STA.l SpriteOAM+13 - PLA - JSL.l IsNarrowSprite : BCS .narrow - - BRA .done - - .narrow - REP #$20 ; set 16-bit accumulator - LDA.w #$0000 : STA.l SpriteOAM+7 - STA.l SpriteOAM+14 - LDA.w #$0800 : STA.l SpriteOAM+9 - LDA.w #$3400 : STA.l SpriteOAM+11 - - .done - PLP : PLA + .done + PLX + PLP : PLA RTS ;-------------------------------------------------------------------------------- @@ -261,58 +103,66 @@ RTS ; This wastes two OAM slots if you don't want a shadow - fix later - I wrote "fix later" over a year ago and it's still not fixed (Aug 6, 2017) - lol (May 25th, 2019) ;-------------------------------------------------------------------------------- 2084B8 DrawDynamicTile: - JSL.l IsNarrowSprite : BCS .narrow + PHX + TAX + LDA.l SpriteProperties_standing_width,X : BEQ .narrow - .full - LDA.b #$01 : STA.b Scrap06 - LDA.b #$0C : JSL.l OAM_AllocateFromRegionC - LDA.b #$02 : PHA - BRA .draw + .full + PLX + LDA.b #$01 : STA.b Scrap06 + LDA.b #$0C : JSL.l OAM_AllocateFromRegionC + LDA.b #$02 : PHA + BRA .draw - .narrow - LDA.b #$02 : STA.b Scrap06 - LDA.b #$10 : JSL.l OAM_AllocateFromRegionC - LDA.b #$03 : PHA + .narrow + PLX + LDA.b #$02 : STA.b Scrap06 + LDA.b #$10 : JSL.l OAM_AllocateFromRegionC + LDA.b #$03 : PHA - .draw - LDA.b #SpriteOAM>>0 : STA.b Scrap08 - LDA.b #SpriteOAM>>8 : STA.b Scrap09 - STZ.b Scrap07 - LDA.b #$7E : PHB : PHA : PLB - LDA.b #$01 : STA.l SpriteSkipEOR - JSL Sprite_DrawMultiple_quantity_preset - LDA.b #$00 : STA.l SpriteSkipEOR - PLB + .draw + LDA.b #SpriteOAM>>0 : STA.b Scrap08 + LDA.b #SpriteOAM>>8 : STA.b Scrap09 + STZ.b Scrap07 + LDA.b #$7E : PHB : PHA : PLB + LDA.b #$01 : STA.l SpriteSkipEOR + JSL Sprite_DrawMultiple_quantity_preset + LDA.b #$00 : STA.l SpriteSkipEOR + PLB - LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired - LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2 - PLA + LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr ; leave the pointer in the right spot to draw the shadow, if desired + LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2 + PLA RTL ;-------------------------------------------------------------------------------- DrawDynamicTileNoShadow: - JSL.l IsNarrowSprite : BCS .narrow + PHX + TAX + LDA.l SpriteProperties_standing_width,X : BEQ .narrow - .full - LDA.b #$01 : STA.b Scrap06 - LDA.b #$04 : JSL.l OAM_AllocateFromRegionC - BRA .draw + .full + PLX + LDA.b #$01 : STA.b Scrap06 + LDA.b #$04 : JSL.l OAM_AllocateFromRegionC + BRA .draw - .narrow - LDA.b #$02 : STA.b Scrap06 - LDA.b #$08 : JSL.l OAM_AllocateFromRegionC + .narrow + PLX + LDA.b #$02 : STA.b Scrap06 + LDA.b #$08 : JSL.l OAM_AllocateFromRegionC - .draw - LDA.b #SpriteOAM>>0 : STA.b Scrap08 - LDA.b #SpriteOAM>>8 : STA.b Scrap09 - STZ.b Scrap07 - LDA.b #$7E : PHB : PHA : PLB - LDA.b #$01 : STA.l SpriteSkipEOR - JSL Sprite_DrawMultiple_quantity_preset - LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional - PLB + .draw + LDA.b #SpriteOAM>>0 : STA.b Scrap08 + LDA.b #SpriteOAM>>8 : STA.b Scrap09 + STZ.b Scrap07 + LDA.b #$7E : PHB : PHA : PLB + LDA.b #$01 : STA.l SpriteSkipEOR + JSL Sprite_DrawMultiple_quantity_preset + LDA.l Bob : BNE + : LDA.b #$00 : STA.l SpriteSkipEOR : + ; Bob fix is conditional + PLB - LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr - LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2 + LDA.b OAMPtr : !ADD.b #$08 : STA.b OAMPtr + LDA.b OAMPtr+2 : INC #2 : STA.b OAMPtr+2 RTL ;-------------------------------------------------------------------------------- @@ -400,70 +250,10 @@ SkipDrawEOR: LDA.b ($08), Y : EOR.w Scrap04 ; thing we wrote over RTL ;-------------------------------------------------------------------------------- - - -;-------------------------------------------------------------------------------- -; CountBits -; in: A(b) - Byte to count bits in -; out: A(b) - sum of bits -; caller is responsible for setting 8-bit mode and preserving X and Y -;-------------------------------------------------------------------------------- -;CountBits: -; PHX -; TAX ; Save a copy of value -; LSR #4 ; Shift down hi nybble, Leave <3> in C -; PHA ; And save <7:4> in Stack -; TXA ; Recover value -; AND.b #$07 ; Put out <2:0> in X -; TAX ; And save in X -; LDA.l NybbleBitCounts, X ; Fetch count for <2:0> -; PLX ; get <7:4> -; ADC.l NybbleBitCounts, X ; Add count for S & C -; PLX -;RTL - ; Look up table of bit counts in the values $00-$0F NybbleBitCounts: db #00, #01, #01, #02, #01, #02, #02, #03, #01, #02, #02, #03, #02, #03, #03, #04 -;-------------------------------------------------------------------------------- - -;-------------------------------------------------------------------------------- -; HexToDec -; in: A(w) - Word to Convert -; out: HexToDecDigit1 - HexToDecDigit5 (high - low) -;-------------------------------------------------------------------------------- -;HexToDec: -; PHA -; PHA -; LDA.w #$9090 -; STA.l HexToDecDigit1 : STA.l HexToDecDigit3 : STA.l HexToDecDigit4 ; clear digit storage -; PLA -; - -; CMP.w #10000 : !BLT + -; PHA : SEP #$20 : LDA.l HexToDecDigit1 : INC : STA.l HexToDecDigit1 : REP #$20 : PLA -; !SUB.w #10000 : BRA - -; + - -; CMP.w #1000 : !BLT + -; PHA : SEP #$20 : LDA.l HexToDecDigit2 : INC : STA.l HexToDecDigit2 : REP #$20 : PLA -; !SUB.w #1000 : BRA - -; + - -; CMP.w #100 : !BLT + -; PHA : SEP #$20 : LDA.l HexToDecDigit3 : INC : STA.l HexToDecDigit3 : REP #$20 : PLA -; !SUB.w #100 : BRA - -; + - -; CMP.w #10 : !BLT + -; PHA : SEP #$20 : LDA.l HexToDecDigit4 : INC : STA.l HexToDecDigit4 : REP #$20 : PLA -; !SUB.w #10 : BRA - -; + - -; CMP.w #1 : !BLT + -; PHA : SEP #$20 : LDA.l HexToDecDigit5 : INC : STA.l HexToDecDigit5 : REP #$20 : PLA -; !SUB.w #1 : BRA - -; + -; PLA -;RTL -;-------------------------------------------------------------------------------- - ;-------------------------------------------------------------------------------- ; WriteVRAMStripe ; in: A(w) - VRAM Destination @@ -530,7 +320,6 @@ RTL ;It is followed by a single tile (word). Combining this this with the D bit makes it easy to draw large horizontal or vertical runs of a tile without using much space. Geat for erasing or drawing horizontal or verical box edges. ;================================================================================ - DynamicDrawCleanup: PHA REP #$20 @@ -547,3 +336,45 @@ DynamicDrawCleanup: PLA RTL +;------------------------------------------------------------------------------ +CheckReceivedItemPropertiesBeforeLoad: + LDA.b RoomIndex : BEQ .normalCode + LDA.l RoomFade : BNE .load_palette + LDA.l SpriteProperties_chest_palette,X : BIT #$80 : BNE .load_palette + .normalCode +RTL + .load_palette + JSL.l LoadItemPalette +RTL + +;------------------------------------------------------------------------------ +LoadItemPalette: +; In: X - Loot ID +; Out: A - Sprite palette index + PHX : PHY : PHB + LDA.b #PalettesVanillaBank>>16 : STA.b Scrap0C + LDA.b #$7E + PHA : PLB + REP #$30 + + TXA : ASL : TAX + LDA.l SpriteProperties_palette_addr,X : STA.b Scrap0A + LDY.w #$000E + LDA.w TransparencyFlag : BNE .SP05 + - + LDA.b [Scrap0A], Y : STA.w PaletteBuffer+$0170,Y + DEY #2 + BPL - + LDA.w #$0003 + BRA .done + .SP05 + - + LDA.b [Scrap0A], Y : STA.w PaletteBuffer+$01B0,Y + DEY #2 + BPL - + LDA.w #$0005 + .done + SEP #$30 + PLB : PLY : PLX + INC.b NMICGRAM +RTL diff --git a/vanillalabels.asm b/vanillalabels.asm index e030d98..ac5e4bc 100644 --- a/vanillalabels.asm +++ b/vanillalabels.asm @@ -77,6 +77,7 @@ OverworldMap_LoadSprGfx = $8ABAB9 NameFile_MakeScreenVisible = $8CD7D1 InitializeSaveFile = $8CDB3E InitializeSaveFile_build_checksum = $8CDBC0 +InitializeSaveFile_checksum_done = $8CDBDB GetRandomInt = $8DBA71 OAM_AllocateFromRegionA = $8DBA80 OAM_AllocateFromRegionB = $8DBA84 @@ -114,15 +115,22 @@ DiggingGameGuy_AttemptPrizeSpawn = $9DFD4B Sprite_GetEmptyBottleIndex = $9EDE28 Sprite_PlayerCantPassThrough = $9EF4E7 -;=================================================================================================== -;--------------------------------------------------------------------------------------------------- ;=================================================================================================== ; Local routines (use JSR) ;=================================================================================================== -;--------------------------------------------------------------------------------------------------- -;=================================================================================================== Chicken_SpawnAvengerChicken = $86A7DB +Link_PerformOpenChest_no_replacement = $87B59F DrawProgressIcons = $8DE9C8 DrawEquipment = $8DED29 ;=================================================================================================== +; Palettes +;=================================================================================================== +PalettesVanillaBank = $9B0000 +PalettesVanilla_none = $9B0000 +PalettesVanilla_red_melon = $9BD218 +PalettesVanilla_blue_ice = $9BD236 +PalettesVanilla_green_blue_guard = $9BD272 +PalettesVanilla_dark_world_melon = $9BD290 +PalettesVanilla_blue_dark_ice = $9BD2BC +PalettesVanilla_spraux09 = $9BD47E