ref: afc4ce2dc55ac8d303ea05188bf00cb55e3fb693
dir: /engine/events/hidden_items.asm/
HiddenItems: ld hl, HiddenItemCoords call FindHiddenItemOrCoinsIndex ld [wHiddenItemOrCoinsIndex], a ld hl, wObtainedHiddenItemsFlags ld a, [wHiddenItemOrCoinsIndex] ld c, a ld b, FLAG_TEST predef FlagActionPredef ld a, c and a ret nz call EnableAutoTextBoxDrawing ld a, 1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld a, [wHiddenObjectFunctionArgument] ; item ID ld [wd11e], a call GetItemName tx_pre_jump FoundHiddenItemText INCLUDE "data/events/hidden_item_coords.asm" FoundHiddenItemText:: text_far _FoundHiddenItemText text_asm ld a, [wHiddenObjectFunctionArgument] ; item ID ld b, a ld c, 1 call GiveItem jr nc, .bagFull ld hl, wObtainedHiddenItemsFlags ld a, [wHiddenItemOrCoinsIndex] ld c, a ld b, FLAG_SET predef FlagActionPredef ld a, SFX_GET_ITEM_2 call PlaySoundWaitForCurrent call WaitForSoundToFinish jp TextScriptEnd .bagFull call WaitForTextScrollButtonPress ; wait for button press xor a ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, HiddenItemBagFullText call PrintText jp TextScriptEnd HiddenItemBagFullText:: text_far _HiddenItemBagFullText text_end HiddenCoins: ld b, COIN_CASE predef GetQuantityOfItemInBag ld a, b and a ret z ld hl, HiddenCoinCoords call FindHiddenItemOrCoinsIndex ld [wHiddenItemOrCoinsIndex], a ld hl, wObtainedHiddenCoinsFlags ld a, [wHiddenItemOrCoinsIndex] ld c, a ld b, FLAG_TEST predef FlagActionPredef ld a, c and a ret nz xor a ldh [hUnusedCoinsByte], a ldh [hCoins], a ldh [hCoins + 1], a ld a, [wHiddenObjectFunctionArgument] sub COIN cp 10 jr z, .bcd10 cp 20 jr z, .bcd20 cp 40 jr z, .bcd20 ; should be bcd40 jr .bcd100 .bcd10 ld a, $10 ldh [hCoins + 1], a jr .bcdDone .bcd20 ld a, $20 ldh [hCoins + 1], a jr .bcdDone .bcd40 ; due to a typo, this is never used ld a, $40 ldh [hCoins + 1], a jr .bcdDone .bcd100 ld a, $1 ldh [hCoins], a .bcdDone ld de, wPlayerCoins + 1 ld hl, hCoins + 1 ld c, $2 predef AddBCDPredef ld hl, wObtainedHiddenCoinsFlags ld a, [wHiddenItemOrCoinsIndex] ld c, a ld b, FLAG_SET predef FlagActionPredef call EnableAutoTextBoxDrawing ld a, [wPlayerCoins] cp $99 jr nz, .roomInCoinCase ld a, [wPlayerCoins + 1] cp $99 jr nz, .roomInCoinCase tx_pre_id DroppedHiddenCoinsText jr .done .roomInCoinCase tx_pre_id FoundHiddenCoinsText .done jp PrintPredefTextID INCLUDE "data/events/hidden_coins.asm" FoundHiddenCoinsText:: text_far _FoundHiddenCoinsText sound_get_item_2 text_end DroppedHiddenCoinsText:: text_far _FoundHiddenCoins2Text sound_get_item_2 text_far _DroppedHiddenCoinsText text_end FindHiddenItemOrCoinsIndex: ld a, [wHiddenObjectY] ld d, a ld a, [wHiddenObjectX] ld e, a ld a, [wCurMap] ld b, a ld c, -1 .loop inc c ld a, [hli] cp -1 ; end of the list? ret z ; if so, we're done here cp b jr nz, .next1 ld a, [hli] cp d jr nz, .next2 ld a, [hli] cp e jr nz, .loop ld a, c ret .next1 inc hl .next2 inc hl jr .loop