Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/engine/flag_action.asm
1270 views
1
FlagActionPredef:
2
call GetPredefRegisters
3
4
FlagAction:
5
; Perform action b on bit c
6
; in the bitfield at hl.
7
; 0: reset
8
; 1: set
9
; 2: read
10
; Return the result in c.
11
12
push hl
13
push de
14
push bc
15
16
; bit
17
ld a, c
18
ld d, a
19
and 7
20
ld e, a
21
22
; byte
23
ld a, d
24
srl a
25
srl a
26
srl a
27
add l
28
ld l, a
29
jr nc, .ok
30
inc h
31
.ok
32
33
; d = 1 << e (bitmask)
34
inc e
35
ld d, 1
36
.shift
37
dec e
38
jr z, .shifted
39
sla d
40
jr .shift
41
.shifted
42
43
ld a, b
44
and a
45
jr z, .reset
46
cp 2
47
jr z, .read
48
49
.set
50
ld b, [hl]
51
ld a, d
52
or b
53
ld [hl], a
54
jr .done
55
56
.reset
57
ld b, [hl]
58
ld a, d
59
xor $ff
60
and b
61
ld [hl], a
62
jr .done
63
64
.read
65
ld b, [hl]
66
ld a, d
67
and b
68
.done
69
pop bc
70
pop de
71
pop hl
72
ld c, a
73
ret
74
75