From f6c0de88fb9f9cd64939f31af8bdf23235c4bd1f Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sun, 1 Feb 2026 23:16:30 -0600 Subject: [PATCH] Make valuable items all look like shields, implement a few NPCs --- initsramtable.asm | 3 +- itemdatatables.asm | 164 ++++++++++++++++++++++----------------------- npcitems.asm | 90 +++++++++++++++++++++---- pikit.asm | 7 ++ sram.asm | 5 +- 5 files changed, 171 insertions(+), 98 deletions(-) diff --git a/initsramtable.asm b/initsramtable.asm index a0316b6..cdf32e8 100644 --- a/initsramtable.asm +++ b/initsramtable.asm @@ -114,7 +114,8 @@ StartingGenericKeys: skip 1 ; PC 0x18338B InitInventoryTracking: skip 2 ; PC 0x18338C \ Need to set bits here for silver arrows, InitBowTracking: skip 2 ; PC 0x18338E / boomerangs, powder/mushroom, etc InitItemLimitCounts: skip 16 ; PC 0x183390 -skip 34 ; +skip 32 ; +InitPikitItem: dw $0004 ; InitFluteBitfield: db $00 ; InitSpecialWeaponLevel: db $00 ; InitItemOnB: db $00 ; diff --git a/itemdatatables.asm b/itemdatatables.asm index db404d6..c6a3f71 100644 --- a/itemdatatables.asm +++ b/itemdatatables.asm @@ -423,33 +423,33 @@ endmacro %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($07, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 07 - Fire rod +%SpriteProps($08, 0, 0, $02, $80, PalettesCustom_fighter_shield) ; 08 - Ice rod +%SpriteProps($09, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 09 - Hammer +%SpriteProps($0A, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 0A - Hookshot +%SpriteProps($0B, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 0B - Bow +%SpriteProps($0C, 0, 0, $02, $80, PalettesCustom_fighter_shield) ; 0C - Blue Boomerang +%SpriteProps($0D, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 0D - Powder %SpriteProps($0E, 2, 0, $02, $03, 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($0F, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 0F - Bombos +%SpriteProps($10, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 10 - Ether +%SpriteProps($11, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 11 - Quake +%SpriteProps($12, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 12 - Lamp +%SpriteProps($13, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 13 - Shovel +%SpriteProps($14, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 14 - Flute +%SpriteProps($15, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 15 - Somaria +%SpriteProps($16, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 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($18, 0, 0, $02, $80, PalettesCustom_fighter_shield) ; 18 - Byrna +%SpriteProps($19, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 19 - Cape +%SpriteProps($1A, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 1A - Mirror +%SpriteProps($1B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 1B - Glove +%SpriteProps($1C, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 1C - Mitts +%SpriteProps($1D, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 1D - Book +%SpriteProps($1E, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 1E - Flippers +%SpriteProps($1F, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 1F - Pearl %SpriteProps($20, 2, 2, $86, $86, PalettesCustom_crystal) ; 20 - Crystal -%SpriteProps($21, 2, 2, $01, $01, PalettesVanilla_red_melon+$0E) ; 21 - Net +%SpriteProps($21, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 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, $04, PalettesVanilla_blue_ice+$0E) ; 24 - Small key @@ -457,11 +457,11 @@ endmacro %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($29, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 29 - Mushroom +%SpriteProps($2A, 0, 0, $01, $80, PalettesCustom_fighter_shield) ; 2A - Red boomerang +%SpriteProps($2B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 2B - Full bottle (red) +%SpriteProps($2C, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 2C - Full bottle (green) +%SpriteProps($2D, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 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) @@ -474,10 +474,10 @@ endmacro %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($3A, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 3A - Bow And Arrows +%SpriteProps($3B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 3B - Silver Bow +%SpriteProps($3C, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 3C - Full bottle (bee) +%SpriteProps($3D, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 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 @@ -488,23 +488,23 @@ endmacro %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($48, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 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($4A, 2, 0, $02, $80, PalettesCustom_fighter_shield) ; 4A - Active Flute +%SpriteProps($4B, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 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($4E, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 4E - 1/2 magic +%SpriteProps($4F, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 4F - 1/4 magic +%SpriteProps($50, 0, 0, $05, $80, PalettesCustom_fighter_shield) ; 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($52, 2, 0, $04, $80, PalettesCustom_fighter_shield) ; 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($58, 2, 0, $01, $80, PalettesCustom_fighter_shield) ; 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 @@ -1227,33 +1227,33 @@ StandingItemGraphicsOffsets: 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+$09E0 ; 07 - Fire Rod + dw BigDecompressionBuffer+$09E0 ; 08 - Ice Rod + dw BigDecompressionBuffer+$09E0 ; 09 - Hammer + dw BigDecompressionBuffer+$09E0 ; 0A - Hookshot + dw BigDecompressionBuffer+$09E0 ; 0B - Bow + dw BigDecompressionBuffer+$09E0 ; 0C - Boomerang + dw BigDecompressionBuffer+$09E0 ; 0D - Powder dw 0 ; 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+$09E0 ; 0F - Bombos + dw BigDecompressionBuffer+$09E0 ; 10 - Ether + dw BigDecompressionBuffer+$09E0 ; 11 - Quake + dw BigDecompressionBuffer+$09E0 ; 12 - Lamp + dw BigDecompressionBuffer+$09E0 ; 13 - Shovel + dw BigDecompressionBuffer+$09E0 ; 14 - Flute + dw BigDecompressionBuffer+$09E0 ; 15 - Somaria + dw BigDecompressionBuffer+$09E0 ; 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+$09E0 ; 18 - Byrna + dw BigDecompressionBuffer+$09E0 ; 19 - Cape + dw BigDecompressionBuffer+$09E0 ; 1A - Mirror + dw BigDecompressionBuffer+$09E0 ; 1B - Glove + dw BigDecompressionBuffer+$09E0 ; 1C - Mitts + dw BigDecompressionBuffer+$09E0 ; 1D - Book + dw BigDecompressionBuffer+$09E0 ; 1E - Flippers + dw BigDecompressionBuffer+$09E0 ; 1F - Pearl dw BigDecompressionBuffer+$08A0 ; 20 - Crystal - dw BigDecompressionBuffer+$0860 ; 21 - Net + dw BigDecompressionBuffer+$09E0 ; 21 - Net dw BigDecompressionBuffer+$1900 ; 22 - Blue Mail dw BigDecompressionBuffer+$1900 ; 23 - Red Mail dw BigDecompressionBuffer+$1DC0 ; 24 - Small Key @@ -1261,11 +1261,11 @@ StandingItemGraphicsOffsets: 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+$09E0 ; 29 - Mushroom + dw BigDecompressionBuffer+$09E0 ; 2A - Red boomerang + dw BigDecompressionBuffer+$09E0 ; 2B - Full bottle (red) + dw BigDecompressionBuffer+$09E0 ; 2C - Full bottle (green) + dw BigDecompressionBuffer+$09E0 ; 2D - Full bottle (blue) dw $0920 ; 2E - Potion refill (red) dw $08A0 ; 2F - Potion refill (green) dw $08E0 ; 30 - Potion refill (blue) @@ -1278,10 +1278,10 @@ StandingItemGraphicsOffsets: dw $0820 ; 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+$09E0 ; 3A - Tossed bow + dw BigDecompressionBuffer+$09E0 ; 3B - Silvers + dw BigDecompressionBuffer+$09E0 ; 3C - Full bottle (bee) + dw BigDecompressionBuffer+$09E0 ; 3D - Full bottle (fairy) dw BigDecompressionBuffer+$18C0 ; 3E - Boss heart dw BigDecompressionBuffer+$18C0 ; 3F - Sanc heart dw BigDecompressionBuffer+$0D20 ; 40 - 100 rupees @@ -1292,25 +1292,25 @@ StandingItemGraphicsOffsets: 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+$09E0 ; 48 - Full bottle (good bee) dw $00A0 ; 49 - Tossed fighter sword - dw BigDecompressionBuffer+$0C40 ; 4A - Active Flute - dw BigDecompressionBuffer+$0040 ; 4B - Boots + dw BigDecompressionBuffer+$09E0 ; 4A - Active Flute + dw BigDecompressionBuffer+$09E0 ; 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 BigDecompressionBuffer+$09E0 ; 4E - 1/2 magic + dw BigDecompressionBuffer+$09E0 ; 4F - 1/4 magic + dw BigDecompressionBuffer+$09E0 ; 50 - Safe master sword dw $0420 ; 51 - Bomb capacity (+5) - dw $0460 ; 52 - Bomb capacity (+10) + dw BigDecompressionBuffer+$09E0 ; 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 BigDecompressionBuffer+$09E0 ; 58 - Upgrade-only silver arrows dw $0 ; 59 - Rupoor dw $0020 ; 5A - Nothing dw $0DE0 ; 5B - Red clock diff --git a/npcitems.asm b/npcitems.asm index 449769d..3263a0f 100644 --- a/npcitems.asm +++ b/npcitems.asm @@ -98,9 +98,19 @@ ItemSet_MagicBat: RTL ItemSet_OldMan: - PHA : LDA.l OldManItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA + PHA + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + LDA.l OldManItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID + PLA JSL Link_ReceiveItem ; thing we wrote over - PHA : LDA.l NpcFlags : ORA.b #$01 : STA.l NpcFlags : PLA + PHA + LDA.l NpcFlags : ORA.b #$01 : STA.l NpcFlags +.skip + PLA RTL ItemSet_ZoraKing: @@ -108,21 +118,51 @@ ItemSet_ZoraKing: RTL ItemSet_SickKid: - PHA : LDA.l SickKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA + PHA + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + LDA.l SickKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID + PLA JSL Link_ReceiveItem ; thing we wrote over - PHA : LDA.l NpcFlags : ORA.b #$04 : STA.l NpcFlags : PLA + PHA + LDA.l NpcFlags : ORA.b #$04 : STA.l NpcFlags +.skip + PLA RTL ItemSet_TreeKid: - PHA : LDA.l TreeKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA + PHA + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + LDA.l TreeKidItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID + PLA JSL Link_ReceiveItem ; thing we wrote over - PHA : LDA.l NpcFlags : ORA.b #$08 : STA.l NpcFlags : PLA + PHA + LDA.l NpcFlags : ORA.b #$08 : STA.l NpcFlags +.skip + PLA RTL ItemSet_Sahasrala: - PHA : LDA.l SahasralaItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA + PHA + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + LDA.l SahasralaItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID + PLA JSL Link_ReceiveItem ; thing we wrote over - PHA : LDA.l NpcFlags : ORA.b #$10 : STA.l NpcFlags : PLA + PHA + LDA.l NpcFlags : ORA.b #$10 : STA.l NpcFlags +.skip + PLA RTL ItemSet_Catfish: @@ -130,9 +170,19 @@ ItemSet_Catfish: RTL ItemSet_Library: - PHA : LDA.l LibraryItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID : PLA + PHA + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + LDA.l LibraryItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID + PLA JSL Link_ReceiveItem ; thing we wrote over - PHA : LDA.l NpcFlags : ORA.b #$80 : STA.l NpcFlags : PLA + PHA + LDA.l NpcFlags : ORA.b #$80 : STA.l NpcFlags +.skip + PLA RTL ItemSet_Mushroom: @@ -223,16 +273,30 @@ MarkThrownItem: LDA.b OverworldIndex : CMP.b #$81 : BNE .catfish .zora - JSL ItemSet_ZoraKing + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + + JSL ItemSet_ZoraKing LDA.l ZoraItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID BRA .done .catfish - JSL ItemSet_Catfish + TYA : STA.b $0C + JSL ShieldCheck + BCC .skip + LDA.b $0C : TAY + JSL ItemSet_Catfish + LDA.l CatfishItem_Player : STA.l !MULTIWORLD_ITEM_PLAYER_ID .done PLA JSL Link_ReceiveItem ; thing we wrote over -RTL + RTL + + .skip + PLA + RTL ;-------------------------------------------------------------------------------- diff --git a/pikit.asm b/pikit.asm index e858e38..e6d9a81 100644 --- a/pikit.asm +++ b/pikit.asm @@ -90,6 +90,8 @@ SmallChest_ShieldCheck: RTL ShieldCheck: + PHP + REP #$30 PHX LDA.b $0C AND.w #$00FF @@ -98,6 +100,7 @@ ShieldCheck: AND.w #$00FF BNE .replace PLX + PLP SEC RTL @@ -110,6 +113,7 @@ ShieldCheck: LDA.w #$0004 STA.b $0C PLX + PLP SEC RTL @@ -118,13 +122,16 @@ ShieldCheck: LDA.b #$3C STA.w $012E + PHY LDA.b #$98 LDY.b #$01 JSL Sprite_ShowMessageUnconditional + PLY REP #$30 PLX + PLP CLC RTL diff --git a/sram.asm b/sram.asm index 69e6aa9..64f9057 100644 --- a/sram.asm +++ b/sram.asm @@ -190,7 +190,8 @@ ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items s ; See: ItemSubstitutionRules in tables.asm ; Right now this is only used for three items but extra space is ; reserved -skip 34 ; Unused +skip 32 ; Unused +PikitItem: skip 2 ; Item stored in shield player is carrying FluteBitfield: skip 1 ; SpecialWeaponLevel: skip 1 ; keeps track of level in special weapon modes ItemOnB: skip 1 ; NYI @@ -251,7 +252,7 @@ NpcFlags: skip 2 ; l - c s t k z o (bitfield) ; b = Magic Bat | p = Potion Shop (Powder) | m = Lost Woods (Mushroom) ; f = Fairy (unused) | s = Smith | b = Bombos Tablet ; e = Ether Tablet -PikitItem: skip 2 ; Item stored in shield player is carrying +skip 2 ; Unused MapOverlay: skip 2 ; Used to reveal dungeon prizes on the map in modes where maps, ; Saha, and the bomb shop guy reveal dungeon prizes (bitfield) ; \ - - g r t h i s