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
|
Initialize_Objects:
LD A, $mem_map_loading_flags
OR $01
LD $mem_map_loading_flags, A
LD HL, $mem_object_list
LD A, $60
LD (HL+), A
LD A, $mem_number_of_rooms
CALL =RNG_Bound
SLA A
SLA A
ADD $80
LD C, A
LD B, $c8
LD A, (BC)
LD D, A
INC BC
LD A, (BC)
INC A
CALL =RNG_Bound
ADD D
LD (HL+), A
INC BC
LD A, (BC)
LD D, A
INC BC
LD A, (BC)
INC A
CALL =RNG_Bound
ADD D
LD (HL+), A
LD BC, =Stairs_action
LD A, B
LD (HL+), A
LD A, C
LD (HL+), A
RET
Stairs_action:
LD A, $00
LD $mem_bunny_x, A
LD A, $00
LD $mem_bunny_y, A
CALL =Fix_Bunny_screen
RET
Display_Objects:
LD A, $mem_map_loading_flags
BIT 0, A
JR Z, =Display_Objects.End
LD HL, $mem_object_list
Display_Objects.loop:
LD A, (HL+)
CP $00
JR Z, =Display_Objects.next
LD C, A
LD A, (HL+)
LD D, A
LD A, $mem_viewport_x
SUB $03
CP D
JR NC, =Display_Objects.next
ADD $10
CP D
JR C, =Display_Objects.next
LD A, (HL+)
LD B, A
LD A, $mem_viewport_y
SUB $03
CP B
JR NC, =Display_Objects.next
ADD $10
CP B
JR C, =Display_Objects.next
LD A, D
CALL =Construct_Tile_Address
LD A, C
LD (DE), A
INC E
INC C
LD A, C
LD (DE), A
INC C
LD A, E
XOR $21
LD E, A
LD A, C
LD (DE), A
INC C
INC E
LD A, C
LD (DE), A
Display_Objects.next:
LD A, L
AND $f8
ADD $08
LD L, A
CP $80
JR NZ, =Display_Objects.loop
Display_Objects.End:
RET
|