forked from KatDevsGames/z3randomizer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompasses.asm
144 lines (137 loc) · 4.45 KB
/
compasses.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
;--------------------------------------------------------------------------------
; $7F5010 - Scratch Space (Callee Preserved)
;--------------------------------------------------------------------------------
!GOAL_COUNTER = "$7EF460"
DrawDungeonCompassCounts:
LDA.l CompassMode : AND.w #$00FF : BNE + : RTL : + ; Item Counts
LDA $1B : AND.w #$00FF : BNE + : RTL : + ; Skip if outdoors
LDA $040C : CMP.w #$00FF : BNE + : RTL : + ; Skip if not in a dungeon
PHX
LDX $040C ; Load dungeon ID to X
LDA $7EF364 : AND .item_masks, X ; Load compass values to A, mask with dungeon item masks
BNE + : BRL .done : + ; skip if we don't have compass
LDA $040C
CMP.w #$0000 : BNE + ; Sewer Passage
+ : CMP.w #$0002 : BNE + ; Hyrule Castle
LDA $7EF434 : AND.w #$00F0 : LSR #4
BRL ++
+ : CMP.w #$0004 : BNE + ; Eastern Palace
LDA $7EF436 : AND.w #$0007
BRL ++
+ : CMP.w #$0006 : BNE + ; Desert Palace
LDA $7EF435 : AND.w #$00E0 : LSR #5
BRL ++
+ : CMP.w #$0008 : BNE + ; Agahnim's Tower
LDA $7EF435 : AND.w #$0002
BRL ++
+ : CMP.w #$000A : BNE + ; Swamp Palace
LDA $7EF439 : AND.w #$000F
BRL ++
+ : CMP.w #$000C : BNE + ; Dark Palace
LDA $7EF434 : AND.w #$000F
BRA ++
+ : CMP.w #$000E : BNE + ; Misery Mire
LDA $7EF438 : AND.w #$000F
BRA ++
+ : CMP.w #$0010 : BNE + ; Skull Woods
LDA $7EF437 : AND.w #$00F0 : LSR #4
BRA ++
+ : CMP.w #$0012 : BNE + ; Ice Palace
LDA $7EF438 : AND.w #$00F0 : LSR #4
BRA ++
+ : CMP.w #$0014 : BNE + ; Tower of Hera
LDA $7EF435 : AND.w #$001C : LSR #5
BRA ++
+ : CMP.w #$0016 : BNE + ; Thieves' Town
LDA $7EF437 : AND.w #$000F
BRA ++
+ : CMP.w #$0018 : BNE + ; Turtle Rock
LDA $7EF439 : AND.w #$00F0 : LSR #4
BRA ++
+ : CMP.w #$001A : BNE + ; Ganon's Tower
LDA $7EF436 : AND.w #$00F8 : LSR #5
BRA ++
+ : ++
JSL.l HexToDec
;LDX.b #$00 ; check the width on this
LDA $7F5006 : AND.w #$00FF : ORA #$2400 : STA $7EC794
LDA $7F5007 : AND.w #$00FF : ORA #$2400 : STA $7EC796
LDA.w #$2830 : STA $7EC798
LDA $040C
CMP.w #$0000 : BNE + ; Sewer Passage
+ : CMP.w #$0002 : BNE + ; Hyrule Castle
LDA.w #$0008
BRL ++
+ : CMP.w #$0004 : BNE + ; Eastern Palace
LDA.w #$0006
BRL ++
+ : CMP.w #$0006 : BNE + ; Desert Palace
LDA.w #$0006
BRL ++
+ : CMP.w #$0008 : BNE + ; Agahnim's Tower
LDA.w #$0002
BRL ++
+ : CMP.w #$000A : BNE + ; Swamp Palace
LDA.w #$000A
BRL ++
+ : CMP.w #$000C : BNE + ; Dark Palace
LDA.w #$000E
BRA ++
+ : CMP.w #$000E : BNE + ; Misery Mire
LDA.w #$0008
BRA ++
+ : CMP.w #$0010 : BNE + ; Skull Woods
LDA.w #$0008
BRA ++
+ : CMP.w #$0012 : BNE + ; Ice Palace
LDA.w #$0008
BRA ++
+ : CMP.w #$0014 : BNE + ; Tower of Hera
LDA.w #$0006
BRA ++
+ : CMP.w #$0016 : BNE + ; Thieves' Town
LDA.w #$0008
BRA ++
+ : CMP.w #$0018 : BNE + ; Turtle Rock
LDA.w #$000C
BRA ++
+ : CMP.w #$001A : BNE + ; Ganon's Tower
LDA.w #$001B
BRA ++
+ : ++
JSL.l HexToDec
LDA $7F5006 : AND.w #$00FF : ORA #$2400 : STA $7EC79A
LDA $7F5007 : AND.w #$00FF : ORA #$2400 : STA $7EC79C
.done
PLX
RTL
.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc
dw $8000, $4000, $2000, $1000, $0800, $0400, $0200, $0100
dw $0080, $0040, $0020, $0010, $0008, $0004
}
;--------------------------------------------------------------------------------
; $7EF434 - hhhhdddd - item locations checked
; h - hyrule castle
; d - palace of darkness
;--------------------------------------------------------------------------------
; $7EF435 - dddhhhaa - item locations checked
; d - desert palace
; h - tower of hera
; a - agahnim's tower
;--------------------------------------------------------------------------------
; $7EF436 - gggggeee - item locations checked
; g - ganon's tower
; e - eastern palace
;--------------------------------------------------------------------------------
; $7EF437 - sssstttt - item locations checked
; s - skull woods
; t - thieves town
;--------------------------------------------------------------------------------
; $7EF438 - iiiimmmm - item locations checked
; i - ice palace
; m - misery mire
;--------------------------------------------------------------------------------
; $7EF439 - ttttssss - item locations checked
; t - turtle rock
; s - swamp palace
;--------------------------------------------------------------------------------