-
Notifications
You must be signed in to change notification settings - Fork 2
/
GAME.8
236 lines (201 loc) · 7.06 KB
/
GAME.8
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ lumberjacks ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
;³ ³
;³ copyright (C) 2017 jeff panici ³
;³ https://nybbles.io ³
;³ ³
;³ ³
;³ ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
code segment
jmp start
include constant.8
include macro.8
include string.8
include file.8
include control.8
include memory.8
include io.8
include input.8
include bank.8
include timer.8
include vga.8
include video.8
include sound.8
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ variables ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
even
state db ?
fps db ?
exit_code db ?
temp_ptr dw ?
frame_rate: s$_def '00'
game_title: s$_def 'LUMBERJACKS'
game_copyright: s$_def '(C) 2017 NYBBLES.IO'
input_events:
quit_key_evt: in_evt T_INPUT_KEY, K_ESC
p1_left_key_evt: in_evt T_INPUT_KEY, K_LEFT
p1_left_joy_evt: in_evt T_INPUT_JOY, 1
p1_right_key_evt: in_evt T_INPUT_KEY, K_RIGHT
p1_right_joy_evt: in_evt T_INPUT_JOY, 1
p1_up_key_evt: in_evt T_INPUT_KEY, K_UP
p1_up_joy_evt: in_evt T_INPUT_JOY, 1
p1_down_key_evt: in_evt T_INPUT_KEY, K_DOWN
p1_down_joy_evt: in_evt T_INPUT_JOY, 1
in_evt 0, 0
input_bindings:
quit_bind: in_bind B_QUIT, 'QUIT ', exit, quit_key_evt, 0, 0, 0
p1_left_bind: in_bind B_P1_LEFT, 'P1 LEFT ', _p1_left, p1_left_key_evt, p1_left_joy_evt, 0, 0
p1_right_bind: in_bind B_P1_RIGHT, 'P1 RIGHT ', _p1_right, p1_right_key_evt, p1_right_joy_evt, 0, 0
p1_up_bind: in_bind B_P1_UP, 'P1 UP ', _p1_up, p1_up_key_evt, p1_up_joy_evt, 0, 0
p1_down_bind: in_bind B_P1_DOWN, 'P1 DOWN ', _p1_down, p1_down_key_evt, p1_down_joy_evt, 0, 0
in_bind 0, ' ', 0, 0, 0, 0, 0
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _p1_right ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_p1_right:
vg_lspr 0
es add s_x, 4
es cmp s_x, 230
jb >l0
es mov s_x, 230
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _p1_down ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_p1_down:
vg_lspr 0
es add s_y, 4
es cmp s_y, 230
jb >l0
es mov s_y, 230
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _p1_left ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_p1_left:
vg_lspr 0
es sub s_x, 4
es cmp s_x, 10
ja >l0
es mov s_x, 10
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _p1_up ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_p1_up:
vg_lspr 0
es sub s_y, 4
es cmp s_y, 10
ja >l0
es mov s_y, 10
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _fps_timer ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
fps_timer:
tm_clr
s$_dec2 frame_rate, fps
cs mov fps, 0
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ allocate ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
allocate:
mm_resv SZ_CTRL_RAM / 16, offset ctrl_ram_ptr
mm_set ctrl_ram_ptr, 0, SZ_CTRL_RAM, 0
mov es, ctrl_ram_ptr
mov bp, 0
mm_resv SZ_TILE_BANK / 16, offset temp_ptr
mm_set temp_ptr, 0, SZ_TILE_BANK, 024h
es_movm c_bg_tiles, temp_ptr
mm_resv SZ_TILE_BANK / 16, offset temp_ptr
mm_set temp_ptr, 0, SZ_TILE_BANK, 07fh
mm_set temp_ptr, 0, 128, 07ah
mm_set temp_ptr, 128, 128, 08ah
mm_set temp_ptr, 256, 256, 09ah
mm_set temp_ptr, 512, 256, 0abh
mm_set temp_ptr, 768, 256, 0bah
es_movm c_spr_tiles, temp_ptr
mm_resv SZ_VRAM / 16, offset back_buffer_ptr
mm_set back_buffer_ptr, 0, SZ_VRAM, 0
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ init ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
init:
mm_init
call allocate
call vg_init
call io_init
call tm_init
sn_init
vg_lspr 0
vg_sspr 0, 0, 100, 10, F_SPR_ENABLED, 0
tm_new fps_timer, 60
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ draw_title ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
draw_title:
vg_fbox 50 by 33, 150 by 85, 8 by 0
vg_box 50 by 33, 150 by 85, 0 by 0
vg_str offset large_font, game_title, 80 by 45, 1 by 0, 0
vg_str offset large_font, game_title, 81 by 46, 7 by 0, 0
vg_str offset micro_font, game_title, 90 by 74, 1 by 0, 1
vg_str offset micro_font, game_title, 91 by 75, 7 by 0, 1
vg_str offset micro_font, game_copyright, 62 by 90, 1 by 0, 1
vg_str offset micro_font, game_copyright, 63 by 91, 7 by 0, 1
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ draw ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
draw:
vg_bg1
vg_fg
vg_bg2
call draw_title
#if DEBUG
vg_str offset micro_font, frame_rate, 244 by 251, 0 by 0, 1
#endif
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ show ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
show:
vg_flip
cs inc fps
cs cmp fps, 99
ja >l1
ret
l1: cs mov fps, 99
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ start ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
start:
call init
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ game_loop ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
game_loop:
tm_fire
in_upd input_events
in_fire input_bindings
cs call draw
cs call show
jmp game_loop
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ exit ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
exit:
sn_shut
call tm_shutdown
call io_shutdown
call vg_shutdown
mov ah, 04ch
mov al, exit_code
int 21h
ret