forked from KatDevsGames/z3randomizer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpotions.asm
77 lines (73 loc) · 2 KB
/
potions.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
;--------------------------------------------------------------------------------
; $7F5092 - Potion Animation Busy Flags (Health)
; $7F5093 - Potion Animation Busy Flags (Magic)
;--------------------------------------------------------------------------------
!BUSY_HEALTH = $7F5092
RefillHealth:
;STA $FFFFFF
LDA.l PotionHealthRefill : CMP.b #$A0 : !BGE +
LDA !BUSY_HEALTH : BNE ++
LDA.l PotionHealthRefill ; load refill amount
!ADD $7EF36D ; add to current health
CMP $7EF36C : !BLT +++ : LDA $7EF36C : +++
STA !BUSY_HEALTH
++
LDA $7EF36D : CMP.l !BUSY_HEALTH : !BLT ++
LDA.b #$00 : STA $7EF372
LDA $020A : BNE .notDone
LDA.b #$00 : STA !BUSY_HEALTH
SEC
RTL
++
LDA.b #$08 : STA $7EF372 ; refill some health
.notDone
CLC
RTL
+
; Check goal health versus actual health.
; if(actual < goal) then branch.
LDA $7EF36D : CMP $7EF36C : BCC .refillAllHealth
LDA $7EF36C : STA $7EF36D
LDA.b #$00 : STA $7EF372
; ??? not sure what purpose this branch serves.
LDA $020A : BNE .beta
SEC
RTL
.refillAllHealth
; Fill up ze health.
LDA.b #$A0 : STA $7EF372
.beta
CLC
RTL
;--------------------------------------------------------------------------------
!BUSY_MAGIC = $7F5093
RefillMagic:
LDA.l PotionMagicRefill : CMP.b #$80 : !BGE +
LDA !BUSY_MAGIC : BNE ++
LDA.l PotionMagicRefill ; load refill amount
!ADD $7EF36E ; add to current magic
CMP.b #$80 : !BLT +++ : LDA.b #$80 : +++
STA !BUSY_MAGIC
++
LDA $7EF36E : CMP.l !BUSY_MAGIC : !BLT ++
LDA.b #$00 : STA !BUSY_MAGIC
SEC
RTL
++
LDA.b #$01 : STA $7EF373 ; refill some magic
CLC
RTL
+
SEP #$30
; Check if Link's magic meter is full
LDA $7EF36E : CMP.b #$80
BCS .itsFull
; Tell the magic meter to fill up until it's full.
LDA.b #$80 : STA $7EF373
SEP #$30
RTL
.itsFull
; Set the carry, signifying we're done filling it.
SEP #$31
RTL
;--------------------------------------------------------------------------------