diff --git a/th02/spark_render.asm b/th02/spark_render.asm new file mode 100644 index 00000000..82307a21 --- /dev/null +++ b/th02/spark_render.asm @@ -0,0 +1,51 @@ +; Draws the hardcoded spark sprite with the given ID, with ([x], [vram_y]) +; pointing to the top-left point. Assumptions: +; • The GRCG is active, and set to the intended color +; • [sprite_id] ≤ SPARK_SPRITES + +; void pascal near spark_render(int x, int vram_y, int sprite_id); +spark_render proc near +@@sprite_id = word ptr 4 +@@vram_y = word ptr 6 +@@x = word ptr 8 + + push bp + mov bp, sp + push si + push di + mov ax, GRAM_400 + mov es, ax + mov bx, [bp+@@x] + mov ax, bx + sar ax, 3 ; x /= 8 + mov dx, [bp+@@vram_y] + shl dx, 6 ; [vram_y] * 64 + add ax, dx + shr dx, 2 ; (([vram_y] * 64) / 4) = [vram_y] * 16 + add ax, dx + mov di, ax ; ([vram_y] * 64) + ([vram_y] * 16) = [vram_y * ROW_SIZE] + mov ax, bx + and ax, 7 ; [x] & 7 + shl ax, 7 ; *= SPARK_SIZE * SPARK_SPRITES (offset of X-shifted sprite) + mov dx, [bp+@@sprite_id] + shl dx, 4 ; sprite_ptr = [sprite_id] * SPARK_SIZE + add ax, dx + add ax, offset sSPARKS + mov si, ax + mov cx, SPARK_H + +@@blit_loop: + movsw + add di, (ROW_SIZE - SPARK_VRAM_W) + cmp di, (ROW_SIZE * RES_Y) + jl short @@next_row + sub di, (ROW_SIZE * RES_Y) + +@@next_row: + loop @@blit_loop + pop di + pop si + pop bp + retn 6 +spark_render endp + even diff --git a/th02/sprites/sparks.asm b/th02/sprites/sparks.asm new file mode 100644 index 00000000..f8d5a010 --- /dev/null +++ b/th02/sprites/sparks.asm @@ -0,0 +1,529 @@ +; 1bpp spark sprites, pre-shifted for all 8 possible X positions within a +; single VRAM byte. +SPARK_H = 8 +SPARK_VRAM_W = (16 / 8) +SPARK_SIZE = (SPARK_VRAM_W * SPARK_H) +SPARK_SPRITES = 8 + +public sSPARKS +label sSPARKS byte + ; x + 0 + db 10000b, 0b + db 10000b, 0b + db 10000b, 0b + db 11111b, 0b + db 11111000b, 0b + db 1000b, 0b + db 1000b, 0b + db 1000b, 0b + db 1000000b, 0b + db 100001b, 0b + db 10010b, 0b + db 11100b, 0b + db 111000b, 0b + db 1001000b, 0b + db 10000100b, 0b + db 10b, 0b + db 0b, 0b + db 1000010b, 0b + db 100100b, 0b + db 11000b, 0b + db 11000b, 0b + db 100100b, 0b + db 1000010b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 100100b, 0b + db 11000b, 0b + db 11000b, 0b + db 100100b, 0b + db 0b, 0b + db 0b, 0b + db 1000000b, 0b + db 100001b, 0b + db 10010b, 0b + db 11100b, 0b + db 111000b, 0b + db 1001000b, 0b + db 10000100b, 0b + db 10b, 0b + db 0b, 0b + db 1000010b, 0b + db 100100b, 0b + db 11000b, 0b + db 11000b, 0b + db 100100b, 0b + db 1000010b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 100100b, 0b + db 11000b, 0b + db 11000b, 0b + db 100100b, 0b + db 0b, 0b + db 0b, 0b + db 111100b, 0b + db 1000010b, 0b + db 10000001b, 0b + db 10011001b, 0b + db 10011001b, 0b + db 10000001b, 0b + db 1000010b, 0b + db 111100b, 0b + ; x + 1 + db 1000b, 0b + db 1000b, 0b + db 1000b, 0b + db 1111b,10000000b + db 1111100b, 0b + db 100b, 0b + db 100b, 0b + db 100b, 0b + db 100000b, 0b + db 10000b,10000000b + db 1001b, 0b + db 1110b, 0b + db 11100b, 0b + db 100100b, 0b + db 1000010b, 0b + db 1b, 0b + db 0b, 0b + db 100001b, 0b + db 10010b, 0b + db 1100b, 0b + db 1100b, 0b + db 10010b, 0b + db 100001b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 10010b, 0b + db 1100b, 0b + db 1100b, 0b + db 10010b, 0b + db 0b, 0b + db 0b, 0b + db 100000b, 0b + db 10000b,10000000b + db 1001b, 0b + db 1110b, 0b + db 11100b, 0b + db 100100b, 0b + db 1000010b, 0b + db 1b, 0b + db 0b, 0b + db 100001b, 0b + db 10010b, 0b + db 1100b, 0b + db 1100b, 0b + db 10010b, 0b + db 100001b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 10010b, 0b + db 1100b, 0b + db 1100b, 0b + db 10010b, 0b + db 0b, 0b + db 0b, 0b + db 11110b, 0b + db 100001b, 0b + db 1000000b,10000000b + db 1001100b,10000000b + db 1001100b,10000000b + db 1000000b,10000000b + db 100001b, 0b + db 11110b, 0b + ; x + 2 + db 100b, 0b + db 100b, 0b + db 100b, 0b + db 111b,11000000b + db 111110b, 0b + db 10b, 0b + db 10b, 0b + db 10b, 0b + db 10000b, 0b + db 1000b, 1000000b + db 100b,10000000b + db 111b, 0b + db 1110b, 0b + db 10010b, 0b + db 100001b, 0b + db 0b,10000000b + db 0b, 0b + db 10000b,10000000b + db 1001b, 0b + db 110b, 0b + db 110b, 0b + db 1001b, 0b + db 10000b,10000000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 1001b, 0b + db 110b, 0b + db 110b, 0b + db 1001b, 0b + db 0b, 0b + db 0b, 0b + db 10000b, 0b + db 1000b, 1000000b + db 100b,10000000b + db 111b, 0b + db 1110b, 0b + db 10010b, 0b + db 100001b, 0b + db 0b,10000000b + db 0b, 0b + db 10000b,10000000b + db 1001b, 0b + db 110b, 0b + db 110b, 0b + db 1001b, 0b + db 10000b,10000000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 1001b, 0b + db 110b, 0b + db 110b, 0b + db 1001b, 0b + db 0b, 0b + db 0b, 0b + db 1111b, 0b + db 10000b,10000000b + db 100000b, 1000000b + db 100110b, 1000000b + db 100110b, 1000000b + db 100000b, 1000000b + db 10000b,10000000b + db 1111b, 0b + ; x + 3 + db 10b, 0b + db 10b, 0b + db 10b, 0b + db 11b,11100000b + db 11111b, 0b + db 1b, 0b + db 1b, 0b + db 1b, 0b + db 1000b, 0b + db 100b, 100000b + db 10b, 1000000b + db 11b,10000000b + db 111b, 0b + db 1001b, 0b + db 10000b,10000000b + db 0b, 1000000b + db 0b, 0b + db 1000b, 1000000b + db 100b,10000000b + db 11b, 0b + db 11b, 0b + db 100b,10000000b + db 1000b, 1000000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 100b,10000000b + db 11b, 0b + db 11b, 0b + db 100b,10000000b + db 0b, 0b + db 0b, 0b + db 1000b, 0b + db 100b, 100000b + db 10b, 1000000b + db 11b,10000000b + db 111b, 0b + db 1001b, 0b + db 10000b,10000000b + db 0b, 1000000b + db 0b, 0b + db 1000b, 1000000b + db 100b,10000000b + db 11b, 0b + db 11b, 0b + db 100b,10000000b + db 1000b, 1000000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 100b,10000000b + db 11b, 0b + db 11b, 0b + db 100b,10000000b + db 0b, 0b + db 0b, 0b + db 111b,10000000b + db 1000b, 1000000b + db 10000b, 100000b + db 10011b, 100000b + db 10011b, 100000b + db 10000b, 100000b + db 1000b, 1000000b + db 111b,10000000b + ; x + 4 + db 1b, 0b + db 1b, 0b + db 1b, 0b + db 1b,11110000b + db 1111b,10000000b + db 0b,10000000b + db 0b,10000000b + db 0b,10000000b + db 100b, 0b + db 10b, 10000b + db 1b, 100000b + db 1b,11000000b + db 11b,10000000b + db 100b,10000000b + db 1000b, 1000000b + db 0b, 100000b + db 0b, 0b + db 100b, 100000b + db 10b, 1000000b + db 1b,10000000b + db 1b,10000000b + db 10b, 1000000b + db 100b, 100000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 10b, 1000000b + db 1b,10000000b + db 1b,10000000b + db 10b, 1000000b + db 0b, 0b + db 0b, 0b + db 100b, 0b + db 10b, 10000b + db 1b, 100000b + db 1b,11000000b + db 11b,10000000b + db 100b,10000000b + db 1000b, 1000000b + db 0b, 100000b + db 0b, 0b + db 100b, 100000b + db 10b, 1000000b + db 1b,10000000b + db 1b,10000000b + db 10b, 1000000b + db 100b, 100000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 10b, 1000000b + db 1b,10000000b + db 1b,10000000b + db 10b, 1000000b + db 0b, 0b + db 0b, 0b + db 11b,11000000b + db 100b, 100000b + db 1000b, 10000b + db 1001b,10010000b + db 1001b,10010000b + db 1000b, 10000b + db 100b, 100000b + db 11b,11000000b + ; x + 5 + db 0b,10000000b + db 0b,10000000b + db 0b,10000000b + db 0b,11111000b + db 111b,11000000b + db 0b, 1000000b + db 0b, 1000000b + db 0b, 1000000b + db 10b, 0b + db 1b, 1000b + db 0b,10010000b + db 0b,11100000b + db 1b,11000000b + db 10b, 1000000b + db 100b, 100000b + db 0b, 10000b + db 0b, 0b + db 10b, 10000b + db 1b, 100000b + db 0b,11000000b + db 0b,11000000b + db 1b, 100000b + db 10b, 10000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 1b, 100000b + db 0b,11000000b + db 0b,11000000b + db 1b, 100000b + db 0b, 0b + db 0b, 0b + db 10b, 0b + db 1b, 1000b + db 0b,10010000b + db 0b,11100000b + db 1b,11000000b + db 10b, 1000000b + db 100b, 100000b + db 0b, 10000b + db 0b, 0b + db 10b, 10000b + db 1b, 100000b + db 0b,11000000b + db 0b,11000000b + db 1b, 100000b + db 10b, 10000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 1b, 100000b + db 0b,11000000b + db 0b,11000000b + db 1b, 100000b + db 0b, 0b + db 0b, 0b + db 1b,11100000b + db 10b, 10000b + db 100b, 1000b + db 100b,11001000b + db 100b,11001000b + db 100b, 1000b + db 10b, 10000b + db 1b,11100000b + ; x + 6 + db 0b, 1000000b + db 0b, 1000000b + db 0b, 1000000b + db 0b, 1111100b + db 11b,11100000b + db 0b, 100000b + db 0b, 100000b + db 0b, 100000b + db 1b, 0b + db 0b,10000100b + db 0b, 1001000b + db 0b, 1110000b + db 0b,11100000b + db 1b, 100000b + db 10b, 10000b + db 0b, 1000b + db 0b, 0b + db 1b, 1000b + db 0b,10010000b + db 0b, 1100000b + db 0b, 1100000b + db 0b,10010000b + db 1b, 1000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 0b,10010000b + db 0b, 1100000b + db 0b, 1100000b + db 0b,10010000b + db 0b, 0b + db 0b, 0b + db 1b, 0b + db 0b,10000100b + db 0b, 1001000b + db 0b, 1110000b + db 0b,11100000b + db 1b, 100000b + db 10b, 10000b + db 0b, 1000b + db 0b, 0b + db 1b, 1000b + db 0b,10010000b + db 0b, 1100000b + db 0b, 1100000b + db 0b,10010000b + db 1b, 1000b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 0b,10010000b + db 0b, 1100000b + db 0b, 1100000b + db 0b,10010000b + db 0b, 0b + db 0b, 0b + db 0b,11110000b + db 1b, 1000b + db 10b, 100b + db 10b, 1100100b + db 10b, 1100100b + db 10b, 100b + db 1b, 1000b + db 0b,11110000b + ; x + 7 + db 0b, 100000b + db 0b, 100000b + db 0b, 100000b + db 0b, 111110b + db 1b,11110000b + db 0b, 10000b + db 0b, 10000b + db 0b, 10000b + db 0b,10000000b + db 0b, 1000010b + db 0b, 100100b + db 0b, 111000b + db 0b, 1110000b + db 0b,10010000b + db 1b, 1000b + db 0b, 100b + db 0b, 0b + db 0b,10000100b + db 0b, 1001000b + db 0b, 110000b + db 0b, 110000b + db 0b, 1001000b + db 0b,10000100b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 1001000b + db 0b, 110000b + db 0b, 110000b + db 0b, 1001000b + db 0b, 0b + db 0b, 0b + db 0b,10000000b + db 0b, 1000010b + db 0b, 100100b + db 0b, 111000b + db 0b, 1110000b + db 0b,10010000b + db 1b, 1000b + db 0b, 100b + db 0b, 0b + db 0b,10000100b + db 0b, 1001000b + db 0b, 110000b + db 0b, 110000b + db 0b, 1001000b + db 0b,10000100b + db 0b, 0b + db 0b, 0b + db 0b, 0b + db 0b, 1001000b + db 0b, 110000b + db 0b, 110000b + db 0b, 1001000b + db 0b, 0b + db 0b, 0b + db 0b, 1111000b + db 0b,10000100b + db 1b, 10b + db 1b, 110010b + db 1b, 110010b + db 1b, 10b + db 0b,10000100b + db 0b, 1111000b diff --git a/th02_main.asm b/th02_main.asm index 6dfa0ea1..7bb8ecbf 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -724,58 +724,7 @@ sub_4090 endp ; --------------------------------------------------------------------------- nop -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_415A proc near - -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 - - push bp - mov bp, sp - push si - push di - mov ax, 0A800h - mov es, ax - mov bx, [bp+arg_4] - mov ax, bx - sar ax, 3 - mov dx, [bp+arg_2] - shl dx, 6 - add ax, dx - shr dx, 2 - add ax, dx - mov di, ax - mov ax, bx - and ax, 7 - shl ax, 7 - mov dx, [bp+arg_0] - shl dx, 4 - add ax, dx - add ax, 0C9Ah - mov si, ax - mov cx, 8 - -loc_4193: - movsw - add di, 4Eh ; 'N' - cmp di, 7D00h - jl short loc_41A1 - sub di, 7D00h - -loc_41A1: - loop loc_4193 - pop di - pop si - pop bp - retn 6 -sub_415A endp - -; --------------------------------------------------------------------------- - nop +include th02/spark_render.asm ; =============== S U B R O U T I N E ======================================= @@ -874,7 +823,7 @@ loc_4264: mov ah, 0 and ax, 7 push ax - call sub_415A + call spark_render loc_4270: inc [bp+var_2] @@ -34804,1030 +34753,7 @@ asc_1E6DF db ' ',0 db 0FFh db 7Eh ; ~ db 3Ch ; < - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 1Fh - db 0 - db 0F8h - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 3Ch ; < - db 0 - db 42h ; B - db 0 - db 81h - db 0 - db 99h - db 0 - db 99h - db 0 - db 81h - db 0 - db 42h ; B - db 0 - db 3Ch ; < - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 0Fh - db 80h - db 7Ch ; | - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 1Eh - db 0 - db 21h ; ! - db 0 - db 40h - db 80h - db 4Ch ; L - db 80h - db 4Ch ; L - db 80h - db 40h - db 80h - db 21h ; ! - db 0 - db 1Eh - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 7 - db 0C0h - db 3Eh ; > - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0Fh - db 0 - db 10h - db 80h - db 20h - db 40h - db 26h ; & - db 40h - db 26h ; & - db 40h - db 20h - db 40h - db 10h - db 80h - db 0Fh - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 3 - db 0E0h - db 1Fh - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 7 - db 80h - db 8 - db 40h - db 10h - db 20h - db 13h - db 20h - db 13h - db 20h - db 10h - db 20h - db 8 - db 40h - db 7 - db 80h - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0F0h - db 0Fh - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 3 - db 0C0h - db 4 - db 20h - db 8 - db 10h - db 9 - db 90h - db 9 - db 90h - db 8 - db 10h - db 4 - db 20h - db 3 - db 0C0h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 0F8h - db 7 - db 0C0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0E0h - db 2 - db 10h - db 4 - db 8 - db 4 - db 0C8h - db 4 - db 0C8h - db 4 - db 8 - db 2 - db 10h - db 1 - db 0E0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 0 - db 7Ch ; | - db 3 - db 0E0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0F0h - db 1 - db 8 - db 2 - db 4 - db 2 - db 64h ; d - db 2 - db 64h ; d - db 2 - db 4 - db 1 - db 8 - db 0 - db 0F0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 0 - db 3Eh ; > - db 1 - db 0F0h - db 0 - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 78h ; x - db 0 - db 84h - db 1 - db 2 - db 1 - db 32h ; 2 - db 1 - db 32h ; 2 - db 1 - db 2 - db 0 - db 84h - db 0 - db 78h ; x +include th02/sprites/sparks.asm word_1EB0A dw 0 byte_1EB0C db 0 byte_1EB0D db 0FFh diff --git a/th04/spark_render.asm b/th04/spark_render.asm new file mode 100644 index 00000000..7dcf8f6b --- /dev/null +++ b/th04/spark_render.asm @@ -0,0 +1,64 @@ +; Draws the hardcoded spark sprite with the given ID, with ([x], [vram_y]) +; pointing to the top-left point. Assumptions: +; • ES is already be set to the beginning of a VRAM segment +; • The GRCG is active, and set to the intended color + +; void near fastcall spark_render(int x, int vram_y, int sprite_id); +public @spark_render +@spark_render proc near + push si + push di + mov si, ax ; SI = [x] + mov bx, dx ; BX = [vram_y] + sar ax, 3 ; x / 8 + shl dx, 6 ; [vram_y] * 64 + add ax, dx + shr dx, 2 ; (([vram_y] * 64) / 4) = [vram_y] * 16 + add ax, dx + mov di, ax ; ([vram_y] * 64) + ([vram_y] * 16) = [vram_y * ROW_SIZE] + and si, 7 ; [x] & 7 + mov ax, si + shl si, 7 ; *= SPARK_SIZE * SPARK_SPRITES (offset of X-shifted sprite) + add si, offset sSPARKS + and cx, 7 ; & (SPARK_SPRITES - 1) + shl cx, 4 ; * SPARK_SIZE + add si, cx + cmp bx, RES_Y - SPARK_H + ja short @@ywrap_needed + mov cx, SPARK_H ; CX = # of rows copied *before* Y wrap + xor bx, bx ; BX = # of rows copied *after* Y wrap + jmp short @@blit_loop + +@@ywrap_needed: + mov cx, RES_Y + sub cx, bx + mov bx, SPARK_H + sub bx, cx + +@@blit_loop: + lodsw + or ah, ah + jz short @@8px + mov es:[di], ax + jmp short @@next_row + +@@8px: + or al, al + jz short @@next_row + mov es:[di], al + +@@next_row: + add di, ROW_SIZE + loop @@blit_loop + or bx, bx + jz short @@ret + sub di, (ROW_SIZE * RES_Y) + xchg cx, bx + jmp short @@blit_loop + +@@ret: + pop di + pop si + retn +@spark_render endp + even diff --git a/th04_main.asm b/th04_main.asm index 190c78a6..af54f288 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -2672,71 +2672,7 @@ sub_C17C endp ; --------------------------------------------------------------------------- db 0 -; =============== S U B R O U T I N E ======================================= - - -sub_C200 proc near - push si - push di - mov si, ax - mov bx, dx - sar ax, 3 - shl dx, 6 - add ax, dx - shr dx, 2 - add ax, dx - mov di, ax - and si, 7 - mov ax, si - shl si, 7 - add si, 0F90h - and cx, 7 - shl cx, 4 - add si, cx - cmp bx, 188h - ja short loc_C236 - mov cx, 8 - xor bx, bx - jmp short loc_C240 -; --------------------------------------------------------------------------- - -loc_C236: - mov cx, 190h - sub cx, bx - mov bx, 8 - sub bx, cx - -loc_C240: - lodsw - or ah, ah - jz short loc_C24A - mov es:[di], ax - jmp short loc_C251 -; --------------------------------------------------------------------------- - -loc_C24A: - or al, al - jz short loc_C251 - mov es:[di], al - -loc_C251: - add di, 50h ; 'P' - loop loc_C240 - or bx, bx - jz short loc_C262 - sub di, 7D00h - xchg cx, bx - jmp short loc_C240 -; --------------------------------------------------------------------------- - -loc_C262: - pop di - pop si - retn -sub_C200 endp - -; --------------------------------------------------------------------------- - nop +include th04/spark_render.asm ; =============== S U B R O U T I N E ======================================= @@ -2814,7 +2750,7 @@ loc_C2C4: add ax, (28 shl 4) sar ax, 4 mov cl, [si+1] - call sub_C200 + call @spark_render loc_C2E4: add si, 10h @@ -41384,1030 +41320,7 @@ NUMERALS db 0, 0, 38h, 0, 44h, 0, 82h, 0, 82h, 0, 82h, 0, 44h, 0 db 0BDh db 0FFh db 0 - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 1Fh - db 0 - db 0F8h - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 3Ch ; < - db 0 - db 42h ; B - db 0 - db 81h - db 0 - db 99h - db 0 - db 99h - db 0 - db 81h - db 0 - db 42h ; B - db 0 - db 3Ch ; < - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 0Fh - db 80h - db 7Ch ; | - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 1Eh - db 0 - db 21h ; ! - db 0 - db 40h - db 80h - db 4Ch ; L - db 80h - db 4Ch ; L - db 80h - db 40h - db 80h - db 21h ; ! - db 0 - db 1Eh - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 7 - db 0C0h - db 3Eh ; > - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0Fh - db 0 - db 10h - db 80h - db 20h - db 40h - db 26h ; & - db 40h - db 26h ; & - db 40h - db 20h - db 40h - db 10h - db 80h - db 0Fh - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 3 - db 0E0h - db 1Fh - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 7 - db 80h - db 8 - db 40h - db 10h - db 20h - db 13h - db 20h - db 13h - db 20h - db 10h - db 20h - db 8 - db 40h - db 7 - db 80h - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0F0h - db 0Fh - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 3 - db 0C0h - db 4 - db 20h - db 8 - db 10h - db 9 - db 90h - db 9 - db 90h - db 8 - db 10h - db 4 - db 20h - db 3 - db 0C0h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 0F8h - db 7 - db 0C0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0E0h - db 2 - db 10h - db 4 - db 8 - db 4 - db 0C8h - db 4 - db 0C8h - db 4 - db 8 - db 2 - db 10h - db 1 - db 0E0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 0 - db 7Ch ; | - db 3 - db 0E0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0F0h - db 1 - db 8 - db 2 - db 4 - db 2 - db 64h ; d - db 2 - db 64h ; d - db 2 - db 4 - db 1 - db 8 - db 0 - db 0F0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 0 - db 3Eh ; > - db 1 - db 0F0h - db 0 - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 78h ; x - db 0 - db 84h - db 1 - db 2 - db 1 - db 32h ; 2 - db 1 - db 32h ; 2 - db 1 - db 2 - db 0 - db 84h - db 0 - db 78h ; x +include th02/sprites/sparks.asm include th04/shot_velocity[data].asm db 18h db 68h ; h diff --git a/th05_main.asm b/th05_main.asm index bfc388e2..7acbd40f 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -2288,72 +2288,7 @@ loc_C146: retn sub_C0E6 endp - -; =============== S U B R O U T I N E ======================================= - - -sub_C150 proc near - push si - push di - mov si, ax - mov bx, dx - sar ax, 3 - shl dx, 6 - add ax, dx - shr dx, 2 - add ax, dx - mov di, ax - and si, 7 - mov ax, si - shl si, 7 - add si, 982h - and cx, 7 - shl cx, 4 - add si, cx - cmp bx, 188h - ja short loc_C186 - mov cx, 8 - xor bx, bx - jmp short loc_C190 -; --------------------------------------------------------------------------- - -loc_C186: - mov cx, 190h - sub cx, bx - mov bx, 8 - sub bx, cx - -loc_C190: - lodsw - or ah, ah - jz short loc_C19A - mov es:[di], ax - jmp short loc_C1A1 -; --------------------------------------------------------------------------- - -loc_C19A: - or al, al - jz short loc_C1A1 - mov es:[di], al - -loc_C1A1: - add di, 50h ; 'P' - loop loc_C190 - or bx, bx - jz short loc_C1B2 - sub di, 7D00h - xchg cx, bx - jmp short loc_C190 -; --------------------------------------------------------------------------- - -loc_C1B2: - pop di - pop si - retn -sub_C150 endp - -; --------------------------------------------------------------------------- - nop +include th04/spark_render.asm ; =============== S U B R O U T I N E ======================================= @@ -2430,7 +2365,7 @@ loc_C214: add ax, 1C0h sar ax, 4 mov cl, [si+1] - call sub_C150 + call @spark_render loc_C234: add si, 10h @@ -39393,1030 +39328,7 @@ off_2129C dw offset sub_15A5C db 0FCh db 0 db 78h ; x - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 1Fh - db 0 - db 0F8h - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 40h - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 1Ch - db 0 - db 38h ; 8 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 2 - db 0 - db 0 - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 24h ; $ - db 0 - db 18h - db 0 - db 18h - db 0 - db 24h ; $ - db 0 - db 0 - db 0 - db 0 - db 0 - db 3Ch ; < - db 0 - db 42h ; B - db 0 - db 81h - db 0 - db 99h - db 0 - db 99h - db 0 - db 81h - db 0 - db 42h ; B - db 0 - db 3Ch ; < - db 0 - db 8 - db 0 - db 8 - db 0 - db 8 - db 0 - db 0Fh - db 80h - db 7Ch ; | - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 20h - db 0 - db 10h - db 80h - db 9 - db 0 - db 0Eh - db 0 - db 1Ch - db 0 - db 24h ; $ - db 0 - db 42h ; B - db 0 - db 1 - db 0 - db 0 - db 0 - db 21h ; ! - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 12h - db 0 - db 0Ch - db 0 - db 0Ch - db 0 - db 12h - db 0 - db 0 - db 0 - db 0 - db 0 - db 1Eh - db 0 - db 21h ; ! - db 0 - db 40h - db 80h - db 4Ch ; L - db 80h - db 4Ch ; L - db 80h - db 40h - db 80h - db 21h ; ! - db 0 - db 1Eh - db 0 - db 4 - db 0 - db 4 - db 0 - db 4 - db 0 - db 7 - db 0C0h - db 3Eh ; > - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 10h - db 0 - db 8 - db 40h - db 4 - db 80h - db 7 - db 0 - db 0Eh - db 0 - db 12h - db 0 - db 21h ; ! - db 0 - db 0 - db 80h - db 0 - db 0 - db 10h - db 80h - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 9 - db 0 - db 6 - db 0 - db 6 - db 0 - db 9 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0Fh - db 0 - db 10h - db 80h - db 20h - db 40h - db 26h ; & - db 40h - db 26h ; & - db 40h - db 20h - db 40h - db 10h - db 80h - db 0Fh - db 0 - db 2 - db 0 - db 2 - db 0 - db 2 - db 0 - db 3 - db 0E0h - db 1Fh - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 8 - db 0 - db 4 - db 20h - db 2 - db 40h - db 3 - db 80h - db 7 - db 0 - db 9 - db 0 - db 10h - db 80h - db 0 - db 40h - db 0 - db 0 - db 8 - db 40h - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 8 - db 40h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 4 - db 80h - db 3 - db 0 - db 3 - db 0 - db 4 - db 80h - db 0 - db 0 - db 0 - db 0 - db 7 - db 80h - db 8 - db 40h - db 10h - db 20h - db 13h - db 20h - db 13h - db 20h - db 10h - db 20h - db 8 - db 40h - db 7 - db 80h - db 1 - db 0 - db 1 - db 0 - db 1 - db 0 - db 1 - db 0F0h - db 0Fh - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 4 - db 0 - db 2 - db 10h - db 1 - db 20h - db 1 - db 0C0h - db 3 - db 80h - db 4 - db 80h - db 8 - db 40h - db 0 - db 20h - db 0 - db 0 - db 4 - db 20h - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 4 - db 20h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 2 - db 40h - db 1 - db 80h - db 1 - db 80h - db 2 - db 40h - db 0 - db 0 - db 0 - db 0 - db 3 - db 0C0h - db 4 - db 20h - db 8 - db 10h - db 9 - db 90h - db 9 - db 90h - db 8 - db 10h - db 4 - db 20h - db 3 - db 0C0h - db 0 - db 80h - db 0 - db 80h - db 0 - db 80h - db 0 - db 0F8h - db 7 - db 0C0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 2 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 0E0h - db 1 - db 0C0h - db 2 - db 40h - db 4 - db 20h - db 0 - db 10h - db 0 - db 0 - db 2 - db 10h - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 1 - db 20h - db 0 - db 0C0h - db 0 - db 0C0h - db 1 - db 20h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0E0h - db 2 - db 10h - db 4 - db 8 - db 4 - db 0C8h - db 4 - db 0C8h - db 4 - db 8 - db 2 - db 10h - db 1 - db 0E0h - db 0 - db 40h - db 0 - db 40h - db 0 - db 40h - db 0 - db 7Ch ; | - db 3 - db 0E0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 1 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 70h ; p - db 0 - db 0E0h - db 1 - db 20h - db 2 - db 10h - db 0 - db 8 - db 0 - db 0 - db 1 - db 8 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 1 - db 8 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 90h - db 0 - db 60h - db 0 - db 60h - db 0 - db 90h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0F0h - db 1 - db 8 - db 2 - db 4 - db 2 - db 64h ; d - db 2 - db 64h ; d - db 2 - db 4 - db 1 - db 8 - db 0 - db 0F0h - db 0 - db 20h - db 0 - db 20h - db 0 - db 20h - db 0 - db 3Eh ; > - db 1 - db 0F0h - db 0 - db 10h - db 0 - db 10h - db 0 - db 10h - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 80h - db 0 - db 42h ; B - db 0 - db 24h ; $ - db 0 - db 38h ; 8 - db 0 - db 70h ; p - db 0 - db 90h - db 1 - db 8 - db 0 - db 4 - db 0 - db 0 - db 0 - db 84h - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 84h - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 0 - db 48h ; H - db 0 - db 30h ; 0 - db 0 - db 30h ; 0 - db 0 - db 48h ; H - db 0 - db 0 - db 0 - db 0 - db 0 - db 78h ; x - db 0 - db 84h - db 1 - db 2 - db 1 - db 32h ; 2 - db 1 - db 32h ; 2 - db 1 - db 2 - db 0 - db 84h - db 0 - db 78h ; x +include th02/sprites/sparks.asm byte_21762 db 0 db 0 ; 0