* synonyms to new file, many added * handle singular rupee * remove redundant map and compass entries * automatic pluralization * add guardian acorn and piece of power * move phrases to ItemIconGuessing.py * organize, comment * fix tab spacing * fix * add tunic and noita synonyms * remove triangle instrument synonym * reorganize, add some matches * add tunic lucky up Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update worlds/ladx/ItemIconGuessing.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * handle camelCase and single rupee * add indicate_progression option Adds alternative system for foreign item icons that simply indicates whether or not the item is a progression item. * improve splitting drops some more characters, and also dont bother with rejoined stuff in name_cache because our splitting is better * the witness stuff * forbid more * remove boost and surge * Update worlds/ladx/ItemIconGuessing.py Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> * match by game name look at the name of the foreign game and only use game-specific entries for that game * show message for all key drops * updates from async test * vi suggestions * Adding FNAFW suggestions from @lolz1190 (#40) * Adding FNAFW suggestions from @lolz1190 * missing comma --------- Co-authored-by: threeandthreee <a.l.nordstrom@gmail.com> --------- Co-authored-by: Scipio Wright <scipiowright@gmail.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Co-authored-by: palex00 <32203971+palex00@users.noreply.github.com>
		
			
				
	
	
		
			1004 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			1004 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
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 Boots             ; 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
 | 
						|
 | 
						|
Boots:
 | 
						|
    ; We use DB6D to store which tunics we have available
 | 
						|
    ; ...and the boots
 | 
						|
    ld  a, [wCollectedTunics]
 | 
						|
    or  $04
 | 
						|
    ld  [wCollectedTunics], 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
 | 
						|
    db $AE, $14        ; Guardian Acorn
 | 
						|
 | 
						|
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
 | 
						|
    db $14, $42, $14, $62 ; Piece Of Power
 | 
						|
 | 
						|
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, $C9
 | 
						|
 | 
						|
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
 |