mirror of
https://github.com/pret/pokegold.git
synced 2026-08-28 11:34:52 -05:00
Itemfinder routines and labels.
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -35,6 +35,10 @@ pokesilver.txt
|
||||
.*.swp
|
||||
# swap files for gedit
|
||||
*~
|
||||
# for vscode
|
||||
.vscode
|
||||
# osx files
|
||||
.DS_STORE
|
||||
|
||||
# compiled graphics
|
||||
*.2bpp
|
||||
|
||||
@@ -217,13 +217,13 @@ UnknownText_0x1c0a4e::
|
||||
line "out!"
|
||||
done
|
||||
|
||||
UnknownText_0x1c0a77::
|
||||
_ItemfinderItemNearbyText::
|
||||
text "Yes! ITEMFINDER"
|
||||
line "indicates there's"
|
||||
cont "an item nearby."
|
||||
prompt
|
||||
|
||||
UnknownText_0x1c0aa9::
|
||||
_ItemfinderNopeText::
|
||||
text "Nope! ITEMFINDER"
|
||||
line "isn't responding."
|
||||
prompt
|
||||
|
||||
83
engine/events/checkforhiddenitems.asm
Normal file
83
engine/events/checkforhiddenitems.asm
Normal file
@@ -0,0 +1,83 @@
|
||||
CheckForHiddenItems:
|
||||
; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry.
|
||||
call GetMapScriptsBank
|
||||
ld [wBuffer1], a
|
||||
; Get the coordinate of the bottom right corner of the screen, and load it in wBuffer3/wBuffer4.
|
||||
ld a, [wXCoord]
|
||||
add SCREEN_WIDTH / 4
|
||||
ld [wBuffer4], a
|
||||
ld a, [wYCoord]
|
||||
add SCREEN_HEIGHT / 4
|
||||
ld [wBuffer3], a
|
||||
; Get the pointer for the first bg_event in the map...
|
||||
ld hl, wCurMapBGEventsPointer
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
; ... before even checking to see if there are any BG events on this map.
|
||||
ld a, [wCurMapBGEventCount]
|
||||
and a
|
||||
jr z, .nobgeventitems
|
||||
; For i = 1:wCurMapBGEventCount...
|
||||
.loop
|
||||
; Store the counter in wBuffer2, and store the bg_event pointer in the stack.
|
||||
ld [wBuffer2], a
|
||||
push hl
|
||||
; Get the Y coordinate of the BG event.
|
||||
call .GetFarByte
|
||||
ld e, a
|
||||
; Is the Y coordinate of the BG event on the screen? If not, go to the next BG event.
|
||||
ld a, [wBuffer3]
|
||||
sub e
|
||||
jr c, .next
|
||||
cp SCREEN_HEIGHT / 2
|
||||
jr nc, .next
|
||||
; Is the X coordinate of the BG event on the screen? If not, go to the next BG event.
|
||||
call .GetFarByte
|
||||
ld d, a
|
||||
ld a, [wBuffer4]
|
||||
sub d
|
||||
jr c, .next
|
||||
cp SCREEN_WIDTH / 2
|
||||
jr nc, .next
|
||||
; Is this BG event a hidden item? If not, go to the next BG event.
|
||||
call .GetFarByte
|
||||
cp BGEVENT_ITEM
|
||||
jr nz, .next
|
||||
; Has this item already been found? If not, set off the Itemfinder.
|
||||
ld a, [wBuffer1]
|
||||
call GetFarHalfword
|
||||
ld a, [wBuffer1]
|
||||
call GetFarHalfword
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld b, CHECK_FLAG
|
||||
call EventFlagAction
|
||||
ld a, c
|
||||
and a
|
||||
jr z, .itemnearby
|
||||
|
||||
.next
|
||||
; Restore the bg_event pointer and increment it by the length of a bg_event.
|
||||
pop hl
|
||||
ld bc, BG_EVENT_SIZE
|
||||
add hl, bc
|
||||
; Restore the BG event counter and decrement it. If it hits zero, there are no hidden items in range.
|
||||
ld a, [wBuffer2]
|
||||
dec a
|
||||
jr nz, .loop
|
||||
|
||||
.nobgeventitems
|
||||
xor a
|
||||
ret
|
||||
|
||||
.itemnearby
|
||||
pop hl
|
||||
scf
|
||||
ret
|
||||
|
||||
.GetFarByte:
|
||||
ld a, [wBuffer1]
|
||||
call GetFarByte
|
||||
inc hl
|
||||
ret
|
||||
50
engine/events/itemfinder.asm
Normal file
50
engine/events/itemfinder.asm
Normal file
@@ -0,0 +1,50 @@
|
||||
ItemFinder:
|
||||
farcall CheckForHiddenItems
|
||||
jr c, .found_something
|
||||
ld hl, .Script_FoundNothing
|
||||
jr .resume
|
||||
|
||||
.found_something
|
||||
ld hl, .Script_FoundSomething
|
||||
|
||||
.resume
|
||||
call QueueScript
|
||||
ld a, $1
|
||||
ld [wItemEffectSucceeded], a
|
||||
ret
|
||||
|
||||
.ItemfinderSound:
|
||||
ld c, 4
|
||||
.sfx_loop
|
||||
push bc
|
||||
ld de, SFX_SECOND_PART_OF_ITEMFINDER
|
||||
call WaitPlaySFX
|
||||
ld de, SFX_TRANSACTION
|
||||
call WaitPlaySFX
|
||||
pop bc
|
||||
dec c
|
||||
jr nz, .sfx_loop
|
||||
ret
|
||||
|
||||
.Script_FoundSomething:
|
||||
reloadmappart
|
||||
special UpdateTimePals
|
||||
callasm .ItemfinderSound
|
||||
writetext .ItemfinderItemNearbyText
|
||||
closetext
|
||||
end
|
||||
|
||||
.Script_FoundNothing:
|
||||
reloadmappart
|
||||
special UpdateTimePals
|
||||
writetext .ItemfinderNopeText
|
||||
closetext
|
||||
end
|
||||
|
||||
.ItemfinderItemNearbyText:
|
||||
text_far _ItemfinderItemNearbyText
|
||||
text_end
|
||||
|
||||
.ItemfinderNopeText:
|
||||
text_far _ItemfinderNopeText
|
||||
text_end
|
||||
10
home/map.asm
10
home/map.asm
@@ -859,11 +859,11 @@ ReadCoordEvents:: ; 24d0 (0:24d0)
|
||||
ReadSignposts:: ; 24e7 (0:24e7)
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld [wd94b], a
|
||||
ld [wCurMapBGEventCount], a
|
||||
ld a, l
|
||||
ld [wd94c], a
|
||||
ld [wCurMapBGEventsPointer], a
|
||||
ld a, h
|
||||
ld [wd94d], a
|
||||
ld [wCurMapBGEventsPointer + 1], a
|
||||
ld a, c
|
||||
and a
|
||||
ret z
|
||||
@@ -1981,7 +1981,7 @@ CheckFacingSign::
|
||||
ld a, e
|
||||
sub $4
|
||||
ld e, a
|
||||
ld a, [wd94b]
|
||||
ld a, [wCurMapBGEventCount]
|
||||
and a
|
||||
ret z
|
||||
ld c, a
|
||||
@@ -1995,7 +1995,7 @@ CheckFacingSign::
|
||||
ret
|
||||
|
||||
CheckIfFacingTileCoordIsSign:: ; 2b8f (0:2b8f)
|
||||
ld hl, wd94c
|
||||
ld hl, wCurMapBGEventsPointer
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
|
||||
@@ -66,7 +66,7 @@ _DoItemEffect:: ; e7a6 (3:67a6)
|
||||
dw XSpeed
|
||||
dw XSpecial
|
||||
dw CoinCase
|
||||
dw Itemfinder
|
||||
dw ItemfinderEffect
|
||||
dw PokeFlute
|
||||
dw ExpShare
|
||||
dw OldRod
|
||||
@@ -2138,8 +2138,8 @@ UseRod:
|
||||
farcall FishingRodFunction ; same bank
|
||||
ret
|
||||
|
||||
Itemfinder: ; f5ff (3:75ff)
|
||||
farcall ItemfinderFunction
|
||||
ItemfinderEffect: ; f5ff (3:75ff)
|
||||
farcall ItemFinder
|
||||
ret
|
||||
|
||||
Elixer: ; f606
|
||||
|
||||
9
main.asm
9
main.asm
@@ -626,8 +626,9 @@ INCLUDE "engine/events/misc_scripts.asm"
|
||||
INCLUDE "engine/events/heal_machine_anim.asm"
|
||||
INCLUDE "engine/events/whiteout.asm"
|
||||
INCLUDE "engine/events/forced_movement.asm"
|
||||
ItemfinderFunction:
|
||||
dr $12947, $12e33
|
||||
INCLUDE "engine/events/itemfinder.asm"
|
||||
StartMenu:
|
||||
dr $12994, $12e33
|
||||
|
||||
PartyMonItemName::
|
||||
dr $12e33, $12fa0
|
||||
@@ -1313,7 +1314,9 @@ SECTION "bank2d", ROMX, BANK[$2d]
|
||||
dr $b4000, $b8000
|
||||
|
||||
SECTION "bank2e", ROMX, BANK[$2e]
|
||||
dr $b8000, $ba378
|
||||
dr $b8000, $ba300
|
||||
|
||||
INCLUDE "engine/events/checkforhiddenitems.asm"
|
||||
|
||||
TreeMonEncounter:
|
||||
dr $ba378, $ba3a1
|
||||
|
||||
11
wram.asm
11
wram.asm
@@ -2437,7 +2437,11 @@ wPredefAddress:: dw ; cfde
|
||||
wFarCallBCBuffer:: dw ; cfe0
|
||||
wcfe2:: ds 1 ; cfe2
|
||||
wcfe3:: ds 1 ; cfe3
|
||||
wFieldMoveSucceeded:: ds 1 ; cfe4
|
||||
|
||||
wFieldMoveSucceeded::
|
||||
wItemEffectSucceeded::
|
||||
db ; cfe4
|
||||
|
||||
wVramState:: ds 1
|
||||
wcfe6:: ds 1 ; cfe6
|
||||
wcfe7:: ds 1 ; cfe7
|
||||
@@ -3394,9 +3398,8 @@ wCurMapWarpsPointer:: dw ; d946
|
||||
wd948:: ds 1 ; d948
|
||||
wd949:: ds 1 ; d949
|
||||
wd94a:: ds 1 ; d94a
|
||||
wd94b:: ds 1 ; d94b
|
||||
wd94c:: ds 1 ; d94c
|
||||
wd94d:: ds 1 ; d94d
|
||||
wCurMapBGEventCount:: db ; d94b
|
||||
wCurMapBGEventsPointer:: dw ; d94c
|
||||
wd94e:: ds 1 ; d94e
|
||||
wd94f:: ds 1 ; d94f
|
||||
wd950:: ds 1 ; d950
|
||||
|
||||
Reference in New Issue
Block a user