mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-03-24 19:15:01 -05:00
Addresses of sections will now be added to the linkerscript via `org`, and the section name will be the path/to/file. If there is more than one section in the file, then add a @SectionName after the path/to/file to describe the section.
72 lines
838 B
NASM
Executable File
72 lines
838 B
NASM
Executable File
SECTION "engine/smallflag.asm", ROMX
|
|
|
|
SmallFarFlagAction: ; 03:4d33
|
|
; Perform action b on bit c in flag array hl.
|
|
; If checking a flag, check flag array d:hl unless d is 0.
|
|
|
|
; For longer flag arrays, see FlagAction.
|
|
|
|
push hl
|
|
push bc
|
|
|
|
; Divide by 8 to get the byte we want.
|
|
push bc
|
|
srl c
|
|
srl c
|
|
srl c
|
|
ld b, 0
|
|
add hl, bc
|
|
pop bc
|
|
|
|
; Which bit we want from the byte
|
|
ld a, c
|
|
and 7
|
|
ld c, a
|
|
|
|
; Shift left until we can mask the bit
|
|
ld a, 1
|
|
jr z, .shifted
|
|
.shift
|
|
add a
|
|
dec c
|
|
jr nz, .shift
|
|
.shifted
|
|
ld c, a
|
|
|
|
; What are we doing to this flag?
|
|
dec b
|
|
jr z, .set ; 1
|
|
dec b
|
|
jr z, .check ; 2
|
|
|
|
.reset
|
|
ld a, c
|
|
cpl
|
|
and [hl]
|
|
ld [hl], a
|
|
jr .done
|
|
|
|
.set
|
|
ld a, [hl]
|
|
or c
|
|
ld [hl], a
|
|
jr .done
|
|
|
|
.check
|
|
ld a, d
|
|
cp 0
|
|
jr nz, .farcheck
|
|
|
|
ld a, [hl]
|
|
and c
|
|
jr .done
|
|
|
|
.farcheck
|
|
call GetFarByte
|
|
and c
|
|
|
|
.done
|
|
pop bc
|
|
pop hl
|
|
ld c, a
|
|
ret |