jep-hack/home/flag.asm
Llinos Evans 093bda0253 Strong Arm, Water Sport, and more HMs.
This adds Rock Climb functionality to Strong Arm and Dive functionality to Water Sport, as discussed in the server. HMs have been added, but we need 16bit Items to add Wind Ride, and I haven't finished their functionality.

The Rock Climb tile is a bit terrible, it's not easy to notice. Maybe change so that it works well with yellow or another colour?

This does not build due to issues with effect_commands.asm, but since Zeta is meant to be working on the mapping and Water Sport anyway, it seems to be up his alley.

I ported over much of the underwater assets Rangi was using as they looked very pretty. I imagine it'll be fun to utilise going forward. May as well, right?

I shall now lay down in a dark room.

Review: c21561ea71 (diff-5508f3b794fc68821ba35e94b6a293b2aaaa16c02a1b34fac70d03fd2f74c4b2R113)
2024-12-28 06:26:01 +00:00

120 lines
1.4 KiB
NASM

ResetMapBufferEventFlags::
xor a
ld hl, wEventFlags
ld [hli], a
ret
ResetBikeFlags::
xor a
ld hl, wBikeFlags
ld [hli], a
ld [hl], a
ret
ResetFlashIfOutOfCave::
ld a, [wEnvironment]
cp ROUTE
jr z, .outdoors
cp TOWN
jr z, .outdoors
ret
.outdoors
ld hl, wStatusFlags
res STATUSFLAGS_FLASH_F, [hl]
ret
EventFlagAction::
ld hl, wEventFlags
call FlagAction
ret
ResetDiveMap::
xor a
ld [wDiveMapGroup], a
ld [wDiveMapNumber], a
ret
FlagAction::
; Perform action b on bit de in flag array hl.
; inputs:
; b: function
; 0 RESET_FLAG clear bit
; 1 SET_FLAG set bit
; 2 CHECK_FLAG check bit
; de: bit number
; hl: pointer to the flag array
; get index within the byte
ld a, e
and 7
; shift de right by three bits (get the index within memory)
rept 3
srl d
rr e
endr
add hl, de
; implement a decoder
ld c, 1
rrca
jr nc, .one
rlc c
.one
rrca
jr nc, .two
rlc c
rlc c
.two
rrca
jr nc, .three
swap c
.three
; check b's value: 0, 1, 2
ld a, b
cp SET_FLAG
jr c, .clearbit ; RESET_FLAG
jr z, .setbit ; SET_FLAG
; check bit
ld a, [hl]
and c
ld c, a
ret
.setbit
; set bit
ld a, [hl]
or c
ld [hl], a
ret
.clearbit
; clear bit
ld a, c
cpl
and [hl]
ld [hl], a
ret
CheckReceivedDex::
ld de, ENGINE_POKEDEX
ld b, CHECK_FLAG
farcall EngineFlagAction
ld a, c
and a
ret
xor_a::
xor a
ret
xor_a_dec_a::
xor a
dec a
ret