RenderChestItem: ldh a, [$F1] ; active sprite and $80 jr nz, .renderLargeItem ld de, ItemSpriteTable call $3C77 ; RenderActiveEntitySprite ret .renderLargeItem: ld de, LargeItemSpriteTable dec d dec d call $3BC0 ; RenderActiveEntitySpritePair ; If we are an instrument ldh a, [$F1] cp $8E ret c cp $96 ret nc ; But check if we are not state >3 before that, else the fade-out at the instrument room breaks. ldh a, [$F0] ; hActiveEntityState cp $03 ret nc ; Call the color cycling code xor a ld [$DC82], a ld [$DC83], a ld a, $3e call $0AD2 ret GiveItemFromChestMultiworld: call IncreaseCheckCounter ; Check our "item is for other player" flag ld hl, $7300 call OffsetPointerByRoomNumber ld a, [hl] ld hl, $0055 cp [hl] ret nz GiveItemFromChest: ldh a, [$F1] ; Load active sprite variant rst 0 ; JUMP TABLE dw ChestPowerBracelet; CHEST_POWER_BRACELET dw ChestShield ; CHEST_SHIELD dw ChestBow ; CHEST_BOW dw ChestWithItem ; CHEST_HOOKSHOT dw ChestWithItem ; CHEST_MAGIC_ROD dw ChestWithItem ; CHEST_PEGASUS_BOOTS dw ChestWithItem ; CHEST_OCARINA dw ChestWithItem ; CHEST_FEATHER dw ChestWithItem ; CHEST_SHOVEL dw ChestMagicPowder ; CHEST_MAGIC_POWDER_BAG dw ChestBomb ; CHEST_BOMB dw ChestSword ; CHEST_SWORD dw Flippers ; CHEST_FLIPPERS dw NoItem ; CHEST_MAGNIFYING_LENS dw ChestWithItem ; Boomerang (used to be unused) dw SlimeKey ; ?? right side of your trade quest item dw Medicine ; CHEST_MEDICINE dw TailKey ; CHEST_TAIL_KEY dw AnglerKey ; CHEST_ANGLER_KEY dw FaceKey ; CHEST_FACE_KEY dw BirdKey ; CHEST_BIRD_KEY dw GoldenLeaf ; CHEST_GOLD_LEAF dw ChestWithCurrentDungeonItem ; CHEST_MAP dw ChestWithCurrentDungeonItem ; CHEST_COMPASS dw ChestWithCurrentDungeonItem ; CHEST_STONE_BEAK dw ChestWithCurrentDungeonItem ; CHEST_NIGHTMARE_KEY dw ChestWithCurrentDungeonItem ; CHEST_SMALL_KEY dw AddRupees50 ; CHEST_RUPEES_50 dw AddRupees20 ; CHEST_RUPEES_20 dw AddRupees100 ; CHEST_RUPEES_100 dw AddRupees200 ; CHEST_RUPEES_200 dw AddRupees500 ; CHEST_RUPEES_500 dw AddSeashell ; CHEST_SEASHELL dw NoItem ; CHEST_MESSAGE dw NoItem ; CHEST_GEL dw AddKey ; KEY1 dw AddKey ; KEY2 dw AddKey ; KEY3 dw AddKey ; KEY4 dw AddKey ; KEY5 dw AddKey ; KEY6 dw AddKey ; KEY7 dw AddKey ; KEY8 dw AddKey ; KEY9 dw AddMap ; MAP1 dw AddMap ; MAP2 dw AddMap ; MAP3 dw AddMap ; MAP4 dw AddMap ; MAP5 dw AddMap ; MAP6 dw AddMap ; MAP7 dw AddMap ; MAP8 dw AddMap ; MAP9 dw AddCompass ; COMPASS1 dw AddCompass ; COMPASS2 dw AddCompass ; COMPASS3 dw AddCompass ; COMPASS4 dw AddCompass ; COMPASS5 dw AddCompass ; COMPASS6 dw AddCompass ; COMPASS7 dw AddCompass ; COMPASS8 dw AddCompass ; COMPASS9 dw AddStoneBeak ; STONE_BEAK1 dw AddStoneBeak ; STONE_BEAK2 dw AddStoneBeak ; STONE_BEAK3 dw AddStoneBeak ; STONE_BEAK4 dw AddStoneBeak ; STONE_BEAK5 dw AddStoneBeak ; STONE_BEAK6 dw AddStoneBeak ; STONE_BEAK7 dw AddStoneBeak ; STONE_BEAK8 dw AddStoneBeak ; STONE_BEAK9 dw AddNightmareKey ; NIGHTMARE_KEY1 dw AddNightmareKey ; NIGHTMARE_KEY2 dw AddNightmareKey ; NIGHTMARE_KEY3 dw AddNightmareKey ; NIGHTMARE_KEY4 dw AddNightmareKey ; NIGHTMARE_KEY5 dw AddNightmareKey ; NIGHTMARE_KEY6 dw AddNightmareKey ; NIGHTMARE_KEY7 dw AddNightmareKey ; NIGHTMARE_KEY8 dw AddNightmareKey ; NIGHTMARE_KEY9 dw AddToadstool ; Toadstool dw NoItem ; $51 dw NoItem ; $52 dw NoItem ; $53 dw NoItem ; $54 dw NoItem ; $55 dw NoItem ; $56 dw NoItem ; $57 dw NoItem ; $58 dw NoItem ; $59 dw NoItem ; $5A dw NoItem ; $5B dw NoItem ; $5C dw NoItem ; $5D dw NoItem ; $5E dw NoItem ; $5F dw NoItem ; $60 dw NoItem ; $61 dw NoItem ; $62 dw NoItem ; $63 dw NoItem ; $64 dw NoItem ; $65 dw NoItem ; $66 dw NoItem ; $67 dw NoItem ; $68 dw NoItem ; $69 dw NoItem ; $6A dw NoItem ; $6B dw NoItem ; $6C dw NoItem ; $6D dw NoItem ; $6E dw NoItem ; $6F dw NoItem ; $70 dw NoItem ; $71 dw NoItem ; $72 dw NoItem ; $73 dw NoItem ; $74 dw NoItem ; $75 dw NoItem ; $76 dw NoItem ; $77 dw NoItem ; $78 dw NoItem ; $79 dw NoItem ; $7A dw NoItem ; $7B dw NoItem ; $7C dw NoItem ; $7D dw NoItem ; $7E dw NoItem ; $7F dw PieceOfHeart ; Heart piece dw GiveBowwow dw Give10Arrows dw Give1Arrow dw UpgradeMaxPowder dw UpgradeMaxBombs dw UpgradeMaxArrows dw GiveRedTunic dw GiveBlueTunic dw GiveExtraHeart dw TakeHeart dw GiveSong1 dw GiveSong2 dw GiveSong3 dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveInstrument dw GiveRooster dw GiveTradeItem1 dw GiveTradeItem2 dw GiveTradeItem3 dw GiveTradeItem4 dw GiveTradeItem5 dw GiveTradeItem6 dw GiveTradeItem7 dw GiveTradeItem8 dw GiveTradeItem9 dw GiveTradeItem10 dw GiveTradeItem11 dw GiveTradeItem12 dw GiveTradeItem13 dw GiveTradeItem14 NoItem: ret ChestPowerBracelet: ld hl, $DB43 ; power bracelet level jr ChestIncreaseItemLevel ChestShield: ld hl, $DB44 ; shield level jr ChestIncreaseItemLevel ChestSword: ld hl, $DB4E ; sword level jr ChestIncreaseItemLevel ChestIncreaseItemLevel: ld a, [hl] cp $02 jr z, DoNotIncreaseItemLevel inc [hl] DoNotIncreaseItemLevel: jp ChestWithItem ChestBomb: ld a, [$DB4D] ; bomb count add a, $10 daa ld hl, $DB77 ; max bombs cp [hl] jr c, .bombsNotFull ld a, [hl] .bombsNotFull: ld [$DB4D], a jp ChestWithItem ChestBow: ld a, [$DB45] cp $20 jp nc, ChestWithItem ld a, $20 ld [$DB45], a jp ChestWithItem ChestMagicPowder: ; Reset the toadstool state ld a, $0B ldh [$A5], a xor a ld [$DB4B], a ; has toadstool ld a, [$DB4C] ; powder count add a, $10 daa ld hl, $DB76 ; max powder cp [hl] jr c, .magicPowderNotFull ld a, [hl] .magicPowderNotFull: ld [$DB4C], a jp ChestWithItem Flippers: ld a, $01 ld [wHasFlippers], a ret Medicine: ld a, $01 ld [wHasMedicine], a ret TailKey: ld a, $01 ld [$DB11], a ret AnglerKey: ld a, $01 ld [$DB12], a ret FaceKey: ld a, $01 ld [$DB13], a ret BirdKey: ld a, $01 ld [$DB14], a ret SlimeKey: ld a, $01 ld [$DB15], a ret GoldenLeaf: ld hl, wGoldenLeaves inc [hl] ret AddSeaShell: ld a, [wSeashellsCount] inc a daa ld [wSeashellsCount], a ret PieceOfHeart: #IF HARD_MODE ld a, $FF ld [$DB93], a #ENDIF ld a, [$DB5C] inc a cp $04 jr z, .FullHeart ld [$DB5C], a ret .FullHeart: xor a ld [$DB5C], a jp GiveExtraHeart GiveBowwow: ld a, $01 ld [$DB56], a ret ChestInventoryTable: db $03 ; CHEST_POWER_BRACELET db $04 ; CHEST_SHIELD db $05 ; CHEST_BOW db $06 ; CHEST_HOOKSHOT db $07 ; CHEST_MAGIC_ROD db $08 ; CHEST_PEGASUS_BOOTS db $09 ; CHEST_OCARINA db $0A ; CHEST_FEATHER db $0B ; CHEST_SHOVEL db $0C ; CHEST_MAGIC_POWDER_BAG db $02 ; CHEST_BOMB db $01 ; CHEST_SWORD db $00 ; - (flippers slot) db $00 ; - (magnifier lens slot) db $0D ; Boomerang ChestWithItem: ldh a, [$F1] ; Load active sprite variant ld d, $00 ld e, a ld hl, ChestInventoryTable add hl, de ld d, [hl] call $3E6B ; Give Inventory ret ChestWithCurrentDungeonItem: sub $16 ; a -= CHEST_MAP ld e, a ld d, $00 ld hl, $DBCC ; hasDungeonMap add hl, de inc [hl] call $2802 ; Sync current dungeon items with dungeon specific table ret AddToadstool: ld d, $0E call $3E6B ; Give Inventory ret AddKey: sub $23 ; Make 'A' target dungeon index ld de, $0004 jr AddDungeonItem AddMap: sub $2C ; Make 'A' target dungeon index ld de, $0000 jr AddDungeonItem AddCompass: sub $35 ; Make 'A' target dungeon index ld de, $0001 jr AddDungeonItem AddStoneBeak: sub $3E ; Make 'A' target dungeon index ld de, $0002 jr AddDungeonItem AddNightmareKey: sub $47 ; Make 'A' target dungeon index ld de, $0003 jr AddDungeonItem AddDungeonItem: cp $08 jr z, .colorDungeon ; hl = dungeonitems + type_type + dungeon * 8 ld hl, $DB16 add hl, de push de ld e, a add hl, de add hl, de add hl, de add hl, de add hl, de pop de inc [hl] ; Check if we are in this specific dungeon, and then increase the copied counters as well. ld hl, $FFF7 ; is current map == target map cp [hl] ret nz ld a, [$DBA5] ; is indoor and a ret z ld hl, $DBCC add hl, de inc [hl] ret .colorDungeon: ; Special case for the color dungeon, which is in a different location in memory. ld hl, $DDDA add hl, de inc [hl] ldh a, [$F7] ; is current map == color dungeon cp $ff ret nz ld hl, $DBCC add hl, de inc [hl] ret AddRupees20: ld hl, $0014 jr AddRupees AddRupees50: ld hl, $0032 jr AddRupees AddRupees100: ld hl, $0064 jr AddRupees AddRupees200: ld hl, $00C8 jr AddRupees AddRupees500: ld hl, $01F4 jr AddRupees AddRupees: ld a, [$DB8F] ld d, a ld a, [$DB90] ld e, a add hl, de ld a, h ld [$DB8F], a ld a, l ld [$DB90], a ld a, $18 ld [$C3CE], a ret Give1Arrow: ld a, [$DB45] inc a jp FinishGivingArrows Give10Arrows: ld a, [$DB45] add a, $0A FinishGivingArrows: daa ld [$DB45], a ld hl, $DB78 cp [hl] ret c ld a, [hl] ld [$DB45], a ret UpgradeMaxPowder: ld a, $40 ld [$DB76], a ; If we have no powder, we should not increase the current amount, as that would prevent ; The toadstool from showing up. ld a, [$DB4C] and a ret z ld a, $40 ld [$DB4C], a ret UpgradeMaxBombs: ld a, $60 ld [$DB77], a ld [$DB4D], a ret UpgradeMaxArrows: ld a, $60 ld [$DB78], a ld [$DB45], a ret GiveRedTunic: ld a, $01 ld [$DC0F], a ; We use DB6D to store which tunics we have available. ld a, [wCollectedTunics] or $01 ld [wCollectedTunics], a ret GiveBlueTunic: ld a, $02 ld [$DC0F], a ; We use DB6D to store which tunics we have available. ld a, [wCollectedTunics] or $02 ld [wCollectedTunics], a ret GiveExtraHeart: ; Regen all health ld hl, $DB93 ld [hl], $FF ; Increase max health if health is lower then 14 hearts ld hl, $DB5B ld a, $0E cp [hl] ret z inc [hl] ret TakeHeart: ; First, reduce the max HP ld hl, $DB5B ld a, [hl] cp $01 ret z dec a ld [$DB5B], a ; Next, check if we need to reduce our actual HP to keep it below the maximum. rlca rlca rlca sub $01 ld hl, $DB5A cp [hl] jr nc, .noNeedToReduceHp ld [hl], a .noNeedToReduceHp: ; Finally, give all health back. ld hl, $DB93 ld [hl], $FF ret GiveSong1: ld hl, $DB49 set 2, [hl] ld a, $00 ld [$DB4A], a ret GiveSong2: ld hl, $DB49 set 1, [hl] ld a, $01 ld [$DB4A], a ret GiveSong3: ld hl, $DB49 set 0, [hl] ld a, $02 ld [$DB4A], a ret GiveInstrument: ldh a, [$F1] ; Load active sprite variant sub $8E ld d, $00 ld e, a ld hl, $db65 ; has instrument table add hl, de set 1, [hl] ret GiveRooster: ld d, $0F call $3E6B ; Give Inventory (rooster item) ;ld a, $01 ;ld [$DB7B], a ; has rooster ldh a, [$F9] ; do not spawn rooster in sidescroller and a ret z ld a, $D5 ; ENTITY_ROOSTER call $3B86 ; SpawnNewEntity_trampoline ldh a, [$98] ; LinkX ld hl, $C200 ; wEntitiesPosXTable add hl, de ld [hl], a ldh a, [$99] ; LinkY ld hl, $C210 ; wEntitiesPosYTable add hl, de ld [hl], a ret GiveTradeItem1: ld hl, wTradeSequenceItem set 0, [hl] ret GiveTradeItem2: ld hl, wTradeSequenceItem set 1, [hl] ret GiveTradeItem3: ld hl, wTradeSequenceItem set 2, [hl] ret GiveTradeItem4: ld hl, wTradeSequenceItem set 3, [hl] ret GiveTradeItem5: ld hl, wTradeSequenceItem set 4, [hl] ret GiveTradeItem6: ld hl, wTradeSequenceItem set 5, [hl] ret GiveTradeItem7: ld hl, wTradeSequenceItem set 6, [hl] ret GiveTradeItem8: ld hl, wTradeSequenceItem set 7, [hl] ret GiveTradeItem9: ld hl, wTradeSequenceItem2 set 0, [hl] ret GiveTradeItem10: ld hl, wTradeSequenceItem2 set 1, [hl] ret GiveTradeItem11: ld hl, wTradeSequenceItem2 set 2, [hl] ret GiveTradeItem12: ld hl, wTradeSequenceItem2 set 3, [hl] ret GiveTradeItem13: ld hl, wTradeSequenceItem2 set 4, [hl] ret GiveTradeItem14: ld hl, wTradeSequenceItem2 set 5, [hl] ret ItemMessageMultiworld: ; Check our "item is for other player" flag ld hl, $7300 call OffsetPointerByRoomNumber ld a, [hl] ld hl, $0055 cp [hl] jr nz, ItemMessageForOtherPlayer ItemMessage: ; Fill the custom message slot with this item message. call BuildItemMessage ldh a, [$F1] ld d, $00 ld e, a ld hl, ItemMessageTable add hl, de ld a, [hl] cp $90 jr z, .powerBracelet cp $3D jr z, .shield jp $2385 ; Opendialog in $000-$0FF range .powerBracelet: ; Check the power bracelet level, and give a different message when we get the lv2 bracelet ld hl, $DB43 ; power bracelet level bit 1, [hl] jp z, $2385 ; Opendialog in $000-$0FF range ld a, $EE jp $2385 ; Opendialog in $000-$0FF range .shield: ; Check the shield level, and give a different message when we get the lv2 shield ld hl, $DB44 ; shield level bit 1, [hl] jp z, $2385 ; Opendialog in $000-$0FF range ld a, $ED jp $2385 ; Opendialog in $000-$0FF range ItemMessageForOtherPlayer: push bc push hl push af call BuildRemoteItemMessage ld hl, SpaceFor call MessageCopyString pop af call MessageAddPlayerName pop hl pop bc ;dec de ld a, $C9 jp $2385 ; Opendialog in $000-$0FF range ItemSpriteTable: db $82, $15 ; CHEST_POWER_BRACELET db $86, $15 ; CHEST_SHIELD db $88, $14 ; CHEST_BOW db $8A, $14 ; CHEST_HOOKSHOT db $8C, $14 ; CHEST_MAGIC_ROD db $98, $16 ; CHEST_PEGASUS_BOOTS db $10, $1F ; CHEST_OCARINA db $12, $1D ; CHEST_FEATHER db $96, $17 ; CHEST_SHOVEL db $0E, $1C ; CHEST_MAGIC_POWDER_BAG db $80, $15 ; CHEST_BOMB db $84, $15 ; CHEST_SWORD db $94, $15 ; CHEST_FLIPPERS db $9A, $10 ; CHEST_MAGNIFYING_LENS db $24, $1C ; Boomerang db $4E, $1C ; Slime key db $A0, $14 ; CHEST_MEDICINE db $30, $1C ; CHEST_TAIL_KEY db $32, $1C ; CHEST_ANGLER_KEY db $34, $1C ; CHEST_FACE_KEY db $36, $1C ; CHEST_BIRD_KEY db $3A, $1C ; CHEST_GOLD_LEAF db $40, $1C ; CHEST_MAP db $42, $1D ; CHEST_COMPASS db $44, $1C ; CHEST_STONE_BEAK db $46, $1C ; CHEST_NIGHTMARE_KEY db $4A, $1F ; CHEST_SMALL_KEY db $A6, $15 ; CHEST_RUPEES_50 (normal blue) db $38, $19 ; CHEST_RUPEES_20 (red) db $38, $18 ; CHEST_RUPEES_100 (green) db $38, $1A ; CHEST_RUPEES_200 (yellow) db $38, $1A ; CHEST_RUPEES_500 (yellow) db $9E, $14 ; CHEST_SEASHELL db $8A, $14 ; CHEST_MESSAGE db $A0, $14 ; CHEST_GEL db $4A, $1D ; KEY1 db $4A, $1D ; KEY2 db $4A, $1D ; KEY3 db $4A, $1D ; KEY4 db $4A, $1D ; KEY5 db $4A, $1D ; KEY6 db $4A, $1D ; KEY7 db $4A, $1D ; KEY8 db $4A, $1D ; KEY9 db $40, $1C ; MAP1 db $40, $1C ; MAP2 db $40, $1C ; MAP3 db $40, $1C ; MAP4 db $40, $1C ; MAP5 db $40, $1C ; MAP6 db $40, $1C ; MAP7 db $40, $1C ; MAP8 db $40, $1C ; MAP9 db $42, $1D ; COMPASS1 db $42, $1D ; COMPASS2 db $42, $1D ; COMPASS3 db $42, $1D ; COMPASS4 db $42, $1D ; COMPASS5 db $42, $1D ; COMPASS6 db $42, $1D ; COMPASS7 db $42, $1D ; COMPASS8 db $42, $1D ; COMPASS9 db $44, $1C ; STONE_BEAK1 db $44, $1C ; STONE_BEAK2 db $44, $1C ; STONE_BEAK3 db $44, $1C ; STONE_BEAK4 db $44, $1C ; STONE_BEAK5 db $44, $1C ; STONE_BEAK6 db $44, $1C ; STONE_BEAK7 db $44, $1C ; STONE_BEAK8 db $44, $1C ; STONE_BEAK9 db $46, $1C ; NIGHTMARE_KEY1 db $46, $1C ; NIGHTMARE_KEY2 db $46, $1C ; NIGHTMARE_KEY3 db $46, $1C ; NIGHTMARE_KEY4 db $46, $1C ; NIGHTMARE_KEY5 db $46, $1C ; NIGHTMARE_KEY6 db $46, $1C ; NIGHTMARE_KEY7 db $46, $1C ; NIGHTMARE_KEY8 db $46, $1C ; NIGHTMARE_KEY9 db $4C, $1C ; Toadstool LargeItemSpriteTable: db $AC, $02, $AC, $22 ; heart piece db $54, $0A, $56, $0A ; bowwow db $2A, $41, $2A, $61 ; 10 arrows db $2A, $41, $2A, $61 ; single arrow db $0E, $1C, $22, $0C ; powder upgrade db $00, $0D, $22, $0C ; bomb upgrade db $08, $1C, $22, $0C ; arrow upgrade db $48, $0A, $48, $2A ; red tunic db $48, $0B, $48, $2B ; blue tunic db $2A, $0C, $2A, $2C ; heart container db $2A, $0F, $2A, $2F ; bad heart container db $70, $09, $70, $29 ; song 1 db $72, $0B, $72, $2B ; song 2 db $74, $08, $74, $28 ; song 3 db $80, $0E, $82, $0E ; Instrument1 db $84, $0E, $86, $0E ; Instrument2 db $88, $0E, $8A, $0E ; Instrument3 db $8C, $0E, $8E, $0E ; Instrument4 db $90, $0E, $92, $0E ; Instrument5 db $94, $0E, $96, $0E ; Instrument6 db $98, $0E, $9A, $0E ; Instrument7 db $9C, $0E, $9E, $0E ; Instrument8 db $A6, $2B, $A4, $2B ; Rooster db $1A, $0E, $1C, $0E ; TradeItem1 db $B0, $0C, $B2, $0C ; TradeItem2 db $B4, $0C, $B6, $0C ; TradeItem3 db $B8, $0C, $BA, $0C ; TradeItem4 db $BC, $0C, $BE, $0C ; TradeItem5 db $C0, $0C, $C2, $0C ; TradeItem6 db $C4, $0C, $C6, $0C ; TradeItem7 db $C8, $0C, $CA, $0C ; TradeItem8 db $CC, $0C, $CE, $0C ; TradeItem9 db $D0, $0C, $D2, $0C ; TradeItem10 db $D4, $0D, $D6, $0D ; TradeItem11 db $D8, $0D, $DA, $0D ; TradeItem12 db $DC, $0D, $DE, $0D ; TradeItem13 db $E0, $0D, $E2, $0D ; TradeItem14 ItemMessageTable: db $90, $3D, $89, $93, $94, $95, $96, $97, $98, $99, $9A, $9B, $9C, $9D, $D9, $A2 db $A0, $A1, $A3, $A4, $A5, $E8, $A6, $A7, $A8, $A9, $AA, $AC, $AB, $AD, $AE, $C9 db $EF, $BE, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9 db $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9 ; $40 db $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9 db $0F, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; $80 db $4F, $C8, $CA, $CB, $E2, $E3, $E4, $CC, $CD, $2A, $2B, $C9, $C9, $C9, $C9, $C9 db $C9, $C9, $C9, $C9, $C9, $C9, $B8, $44, $C9, $C9, $C9, $C9, $C9, $C9, $C9, $C9 db $C9, $C9, $C9, $C9, $9D RenderDroppedKey: ;TODO: See EntityInitKeyDropPoint for a few special cases to unload. RenderHeartPiece: ; Check if our chest type is already loaded ld hl, $C2C0 add hl, bc ld a, [hl] and a jr nz, .droppedKeyTypeLoaded inc [hl] ;Load the chest type from the chest table. ld hl, $7800 call OffsetPointerByRoomNumber ld a, [hl] ldh [$F1], a ; set currentEntitySpriteVariant call $3B0C ; SetEntitySpriteVariant and $80 ld hl, $C340 add hl, bc ld a, [hl] jr z, .singleSprite ; We potentially need to fix the physics flags table to allocate 2 sprites for us and $F8 or $02 ld [hl], a jr .droppedKeyTypeLoaded .singleSprite: and $F8 or $01 ld [hl], a .droppedKeyTypeLoaded: jp RenderChestItem OffsetPointerByRoomNumber: ldh a, [$F6] ; map room ld e, a ld a, [$DBA5] ; is indoor ld d, a ldh a, [$F7] ; mapId cp $FF jr nz, .notColorDungeon ld d, $03 jr .notCavesA .notColorDungeon: cp $1A jr nc, .notCavesA cp $06 jr c, .notCavesA inc d .notCavesA: add hl, de ret GiveItemAndMessageForRoom: ;Load the chest type from the chest table. ld hl, $7800 call OffsetPointerByRoomNumber ld a, [hl] ldh [$F1], a call GiveItemFromChest jp ItemMessage GiveItemAndMessageForRoomMultiworld: ;Load the chest type from the chest table. ld hl, $7800 call OffsetPointerByRoomNumber ld a, [hl] ldh [$F1], a call GiveItemFromChestMultiworld jp ItemMessageMultiworld RenderItemForRoom: ;Load the chest type from the chest table. ld hl, $7800 call OffsetPointerByRoomNumber ld a, [hl] ldh [$F1], a jp RenderChestItem ; Increase the amount of checks we completed, unless we are on the multichest room. IncreaseCheckCounter: ldh a, [$F6] ; map room cp $F2 jr nz, .noMultiChest ld a, [$DBA5] ; is indoor and a jr z, .noMultiChest ldh a, [$F7] ; mapId cp $0A ret z .noMultiChest: call $27D0 ; Enable SRAM ld hl, $B010 .loop: ld a, [hl] and a ; clear carry flag inc a daa ldi [hl], a ret nc jr .loop