-
Notifications
You must be signed in to change notification settings - Fork 2
/
TILED.8
328 lines (308 loc) · 7.9 KB
/
TILED.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
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ banked ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
;³ ³
;³ copyright (C) 2017 jeff panici ³
;³ https://nybbles.io ³
;³ ³
;³ ³
;³ ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ constants ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ variables ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
tiled_fat_sz db 0
tiled_fat_w db 0
tiled_fat_h db 0
tiled_fat_idx db 0
tiled_fat_max db 0
tiled_fat_flag db 0
tiled_pal_idx db 0
tiled_pal_color db 0
palette_label:
s$_def 'PAL:'
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _grid_select ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_grid_select:
struc [bp]
dw ?
gs_pos dw ?
gs_sz dw ?
gs_w db ?
gs_cols db ?
gs_max db ?
gs_pad1 db ?
gs_var dw ?
ends
mov bp, mouse_data
mov ax, ms_btn
mov bx, ms_pos
test al, F_LEFT_MOUSE_BTN
jnz >l0
mov ax, 0
ret
l0: mov bp, sp
mov ax, gs_pos
mov cx, gs_sz
mov dx, ax
add dx, cx
cmp bh, al
jb >l1
cmp bh, dl
ja >l1
cmp bl, ah
jb >l1
cmp bl, dh
ja >l1
mov dx, gs_pos
xor ch, ch
mov cl, gs_w
xor ax, ax
mov al, bl
sub al, dh
div cl
mov dh, al
s$_hex2 temp_number1, dh
xor ax, ax
mov al, bh
mov bx, gs_pos
sub al, bl
div cl
mov dl, al
s$_hex2 temp_number2, dl
mov al, dl
mov cl, gs_cols
mul cl
mov dl, al
add dl, dh
s$_hex2 temp_number3, dl
mov al, gs_max
cmp dl, al
ja >l1
mov bx, gs_var
mov b[bx], dl
mov ax, 1
ret
l1: mov ax, 0
ret
te_grid macro
push bp, bx, cx, dx
push #5, #4, #3, #2, #1
call _grid_select
add sp, 10
pop dx, cx, bx, bp
#em
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ btn_pal_prev_cb ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
btn_pal_prev_cb:
cmp tiled_pal_idx, 0
je >l0
dec tiled_pal_idx
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ btn_pal_next_cb ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
btn_pal_next_cb:
cmp tiled_pal_idx, 15
je >l0
inc tiled_pal_idx
l0: ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ tile_draw ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
tile_draw:
struc [bp]
dw ?
tv_pos dw ?
tv_h db ?
tv_w db ?
ends
mov bp, sp
cs mov bx, tv_pos
xchg bh, bl
cs mov dl, tiled_pal_idx
shl dl, 4
mov ch, tv_h
mov cl, tv_w
cs mov es, back_buffer_ptr
l1: ds mov al, [si]
aam 16
add ah, dl
es mov [bx], ah
inc bl
add al, dl
es mov [bx], al
inc bl
inc si
dec cl
jnz l1
mov cl, tv_w
inc bh
sub bl, tv_w
sub bl, tv_w
dec ch
jnz l1
ret
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _tiled_shell ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_tiled_shell:
vg_str micro_font, palette_label, 150 by 2, 7 by 0, 1
s$_dec2 palette_number, tiled_pal_idx
vg_str micro_font, palette_number, 154 by 10, 7 by 0, 1
vg_fbox 43 by 20, 128 by 128, 8 by 0
vg_box 42 by 20, 128 by 128, 0 by 0
mov bh, 245
mov bl, 6
mov dl, tiled_pal_idx
mov dh, 0
mov cx, 16
l0: vg_fbox bx, 8 by 8, dx
vg_box bx, 7 by 7, 0 by 0
push bx
sub bh, 12
add bl, 2
s$_dec2 palette_number, dh
vg_str micro_font, palette_number, bx, 7 by 0, 1
pop bx
cmp dh, tiled_pal_color
jne >l1
vg_box bx, 7 by 7, 7 by 0
l1: inc dh
add bl, 9
dec cx
cmp cx, 0
je >l2
jmp l0
l2: ret
te_shell macro
push ax, bx, cx, dx
call _tiled_shell
pop dx, cx, bx, ax
#em
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _tiled_draw ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_tiled_draw:
cs cmp tiled_fat_flag, 1
jne >l2
cs mov tiled_fat_flag, 0
xor ah, ah
cs mov al, tiled_fat_idx
shr al, 1
mov di, si
add di, ax
ds mov al, b[di]
cs mov bl, tiled_pal_color
cs mov ah, tiled_fat_idx
test ah, 1
jnz >l3
shl bl, 4
and al, 0fh
or al, bl
jmp >l4
l3: and al, 0f0h
or al, bl
l4: ds mov b[di], al
l2: mov bh, 43
mov bl, 21
cs mov dh, tiled_fat_sz
mov dl, dh
cs mov ch, tiled_fat_h
l0: cs mov cl, tiled_fat_w
l1: ds mov al, [si]
aam 16
push cx
cs mov cl, tiled_pal_idx
mov ch, ah
vg_fbox bx, dx, cx
add bh, dh
inc bh
mov ch, al
vg_fbox bx, dx, cx
add bh, dh
inc bh
pop cx
inc si
sub cl, 2
cmp cl, 0
jne l1
add bl, dl
inc bl
mov bh, 43
dec ch
cmp ch, 0
jnz l0
ret
te_draw macro
push ax, bx, cx, dx
call _tiled_draw
pop dx, cx, bx, ax
#em
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _tiled_cfg ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_tiled_cfg:
struc [bp]
dw ?
tg_sz dw ?
tg_max dw ?
ends
mov bp, sp
mov ax, tg_sz
mov tiled_fat_sz, al
mov tiled_fat_w, ah
mov tiled_fat_h, ah
mov bx, tg_max
mov tiled_fat_max, bl
ret
te_cfg macro
push bp, ax, bx
push #2, #1
call _tiled_cfg
add sp, 4
pop bx, ax, bp
#em
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
;³ _tiled_upd ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
_tiled_upd:
struc [bp]
dw ?
te_sz dw ?
te_max dw ?
te_var dw ?
ends
mov bp, sp
mov ax, te_sz
mov bx, te_max
mov cx, te_var
te_grid 42 by 186, 198 by 54, ax, bx, cx
mov ah, 1
mov al, 9
mov bx, 15
mov cx, offset tiled_pal_color
te_grid 245 by 6, 9 by 160, ax, bx, cx
mov ah, tiled_fat_w
mov al, tiled_fat_sz
inc al
xor bh, bh
mov bl, tiled_fat_max
mov cx, offset tiled_fat_idx
te_grid 43 by 20, 128 by 128, ax, bx, cx
cmp al, 0
je >l0
mov tiled_fat_flag, 1
l0: ret
te_upd macro
push bp, ax, bx, cx, dx
push #3, #2, #1
call _tiled_upd
add sp, 6
pop dx, cx, bx, ax, bp
#em