diff --git a/th02/bullet/bullet.hpp b/th02/bullet/bullet.hpp new file mode 100644 index 00000000..3abc0978 --- /dev/null +++ b/th02/bullet/bullet.hpp @@ -0,0 +1,2 @@ +// Renders a pellet at the given position. +void pascal near pellet_render(int left, int top); diff --git a/th02/bullet/pellet_r.cpp b/th02/bullet/pellet_r.cpp new file mode 100644 index 00000000..9a6c0fd5 --- /dev/null +++ b/th02/bullet/pellet_r.cpp @@ -0,0 +1,25 @@ +#include "th02/sprites/pellet.h" + +void pascal near pellet_render(int left, int top) +{ + _ES = SEG_PLANE_B; + _BX = _BX; // Keeps any parameters from being put into BX + + _AX = (left >> 3); + _DX = top; + _DX <<= 6; + _AX += _DX; + _DX >>= 2; + _DI = _AX + _DX; + + _SI = reinterpret_cast(sPELLET[left & 7]); + _CX = 8; + put_loop: { + asm movsw + _DI += (ROW_SIZE - sizeof(dots16_t)); + if(static_cast(_DI) >= PLANE_SIZE) { + _DI -= PLANE_SIZE; + } + } + asm loop put_loop; +} diff --git a/th02/main_03.cpp b/th02/main_03.cpp index 01524ed4..20c9f0eb 100644 --- a/th02/main_03.cpp +++ b/th02/main_03.cpp @@ -4,11 +4,11 @@ */ extern "C" { -#include -#include "platform.h" +#include "ReC98.h" #include "th02/math/randring.h" #define RANDRING_INSTANCE 2 #include "th02/math/randring.cpp" +#include "th02/bullet/pellet_r.cpp" } diff --git a/th02_main.asm b/th02_main.asm index 13e3d948..b4b4d7c4 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -9416,53 +9416,8 @@ main_03__TEXT segment byte public 'CODE' use16 RANDRING2_NEXT8_AND procdesc pascal near \ mask:byte RANDRING2_NEXT16 procdesc pascal near - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_FAFC proc near - -arg_0 = word ptr 4 -arg_2 = word ptr 6 - - push bp - mov bp, sp - push si - push di - mov ax, 0A800h - mov es, ax - assume es:nothing - mov ax, [bp+arg_2] - sar ax, 3 - mov dx, [bp+arg_0] - shl dx, 6 - add ax, dx - shr dx, 2 - add ax, dx - mov di, ax - mov ax, [bp+arg_2] - and ax, 7 - shl ax, 4 - add ax, offset _sPELLET - mov si, ax - mov cx, 8 - -loc_FB2C: - movsw - add di, 4Eh ; 'N' - cmp di, 7D00h - jl short loc_FB3A - sub di, 7D00h - -loc_FB3A: - loop loc_FB2C - pop di - pop si - pop bp - retn 4 -sub_FAFC endp - + PELLET_RENDER procdesc pascal near \ + left:word, top:word ; =============== S U B R O U T I N E ======================================= @@ -11499,17 +11454,17 @@ loc_10C37: mov bx, word_2174E mov ax, [bx] sar ax, 4 - mov word_21740, ax + mov _bullet_left, ax mov bx, word_21750 mov ax, [bx] sar ax, 4 mov word_21742, ax mov di, word_21742 - cmp word_21740, 14h + cmp _bullet_left, 20 jle short loc_10C6C - cmp word_21740, 1A0h + cmp _bullet_left, PLAYFIELD_RIGHT jge short loc_10C6C - cmp di, 180h + cmp di, PLAYFIELD_BOTTOM jge short loc_10C6C or di, di jg short loc_10C72 @@ -11526,11 +11481,11 @@ loc_10C72: jnz short loc_10CA9 mov ax, point_205F6.x add ax, 7 - cmp ax, word_21740 + cmp ax, _bullet_left jg short loc_10CDC mov ax, point_205F6.x add ax, 17 - cmp ax, word_21740 + cmp ax, _bullet_left jle short loc_10CDC mov ax, point_205F6.y add ax, 12 @@ -11546,11 +11501,11 @@ loc_10C72: loc_10CA9: mov ax, point_205F6.x add ax, -3 - cmp ax, word_21740 + cmp ax, _bullet_left jg short loc_10CDC mov ax, point_205F6.x add ax, 19 - cmp ax, word_21740 + cmp ax, _bullet_left jle short loc_10CDC mov ax, point_205F6.y add ax, 4 @@ -11583,15 +11538,13 @@ loc_10CEA: mov [bp+var_4], 0 loc_10D09: - push word_21740 - push di - call sub_FAFC + call pellet_render pascal, _bullet_left, di jmp short loc_10D2D ; --------------------------------------------------------------------------- loc_10D13: call grcg_off - push word_21740 + push _bullet_left push di mov al, [si+0Eh] mov ah, 0 @@ -34970,7 +34923,8 @@ byte_20672 db ? dword_20682 dd ? word_20686 dw ? db 4280 dup(?) -word_21740 dw ? +public _bullet_left +_bullet_left dw ? word_21742 dw ? word_21744 dw ? word_21746 dw ? diff --git a/th04/bullet/bullet.hpp b/th04/bullet/bullet.hpp index c9bdf1ec..f60eae87 100644 --- a/th04/bullet/bullet.hpp +++ b/th04/bullet/bullet.hpp @@ -115,6 +115,31 @@ extern bullet_t bullets[BULLET_COUNT]; #define pellets (&bullets[0]) #define bullets16 (&bullets[PELLET_COUNT]) +/// Rendering +/// --------- +union pellet_render_t { + struct { + int left; + int top; + } top; + struct { + uint16_t vram_offset; + uint16_t sprite_offset; + } bottom; +}; + +extern int pellets_alive; +extern pellet_render_t pellets_render[PELLET_COUNT]; + +// Renders the top and bottom part of all pellets, as per [pellets_render] and +// [pellets_alive]. Assumptions: +// • ES is already be set to the beginning of a VRAM segment +// • The GRCG is active, and set to the intended color +// • pellets_render_top() is called before pellets_render_bottom() +void near pellets_render_top(); +void near pellets_render_bottom(); +/// --------- + struct bullet_template_t { uint8_t spawn_type; unsigned char patnum; // TH05: 0 = pellet diff --git a/th04/bullet/bullets[bss].asm b/th04/bullet/bullets[bss].asm index 2aee5b71..d2c6a68b 100644 --- a/th04/bullet/bullets[bss].asm +++ b/th04/bullet/bullets[bss].asm @@ -45,6 +45,15 @@ bullet_t struc endif bullet_t ends +pellet_render_t struc + PRT_left label word + PRB_vram_offset label word + dw ? + PRT_top label word + PRB_sprite_offset label word + dw ? +pellet_render_t ends + PELLET_W = 8 PELLET_H = 8 BULLET16_W = 16 @@ -60,7 +69,8 @@ endif BULLET_COUNT = (PELLET_COUNT + BULLET16_COUNT) -public _bullets, _pellets, _bullets16 +public _bullets, _pellets, _bullets16, _pellets_render _bullets label bullet_t _pellets bullet_t PELLET_COUNT dup() _bullets16 bullet_t BULLET16_COUNT dup() +_pellets_render pellet_render_t PELLET_COUNT dup() diff --git a/th04/bullet/pellet_r.asm b/th04/bullet/pellet_r.asm new file mode 100644 index 00000000..da2cbcb6 --- /dev/null +++ b/th04/bullet/pellet_r.asm @@ -0,0 +1,175 @@ +PELLET_TOP_H = 6 +PELLET_BOTTOM_Y = (PELLET_H - PELLET_BOTTOM_H) + +public _pellets_render_top +_pellets_render_top proc near + mov ax, _pellets_alive + or ax, ax + jnz short @@at_least_one_alive + retn +; --------------------------------------------------------------------------- + +@@at_least_one_alive: + push bp + push si + push di + mov bp, ax + mov bx, offset _pellets_render + +@@pellet_loop: + mov di, [bx+pellet_render_t.PRT_left] + mov ax, di + sar di, 3 + mov cx, [bx+pellet_render_t.PRT_top] + shl cx, 6 + add di, cx + shr cx, 2 + add di, cx + and ax, 7 + mov si, ax + shl si, 4 + add si, offset _sPELLET + shl ax, 3 + mov cx, PELLET_TOP_H + or ax, ax + jz short @@BYTEALIGNED + cmp di, ((RES_Y - PELLET_TOP_H + 1) * ROW_SIZE) + jb short @@SHIFTED_YLOOP2 + +@@SHIFTED_YLOOP1: + movsw + add di, (ROW_SIZE - word) + dec cx + cmp di, PLANE_SIZE + jb short @@SHIFTED_YLOOP1 + sub di, PLANE_SIZE + +@@SHIFTED_YLOOP2: + movsw + add di, (ROW_SIZE - word) + loop @@SHIFTED_YLOOP2 + jmp short @@pellet_next +; --------------------------------------------------------------------------- + even + +@@BYTEALIGNED: + cmp di, ((RES_Y - PELLET_TOP_H + 1) * ROW_SIZE) + jb short @@BYTEALIGNED_YLOOP2 + +@@BYTEALIGNED_YLOOP1: + movsb + inc si + add di, (ROW_SIZE - byte) + dec cx + cmp di, PLANE_SIZE + jb short @@BYTEALIGNED_YLOOP1 + sub di, PLANE_SIZE + +@@BYTEALIGNED_YLOOP2: + movsb + inc si + add di, (ROW_SIZE - byte) + loop @@BYTEALIGNED_YLOOP2 + +@@pellet_next: + sub di, (((PELLET_TOP_H + 1) - PELLET_BOTTOM_Y) * ROW_SIZE) + jns short @@set_bottom_data + add di, PLANE_SIZE + +@@set_bottom_data: + add ax, offset _sPELLET_BOTTOM + mov [bx+pellet_render_t.PRB_vram_offset], di + mov [bx+pellet_render_t.PRB_sprite_offset], ax + add bx, size pellet_render_t + dec bp + jnz short @@pellet_loop + pop di + pop si + pop bp + retn +_pellets_render_top endp + even + + +public _pellets_render_bottom +_pellets_render_bottom proc near + +@@rows_after_roll equ + + mov ax, _pellets_alive + or ax, ax + jnz short @@at_least_one_alive + retn +; --------------------------------------------------------------------------- + +@@at_least_one_alive: + push bp + push si + push di + mov bp, ax + mov bx, offset _pellets_render + +@@pellet_loop: + mov di, [bx+pellet_render_t.PRB_vram_offset] + mov si, [bx+pellet_render_t.PRB_sprite_offset] + xor @@rows_after_roll, @@rows_after_roll + cmp di, ((RES_Y - PELLET_BOTTOM_H - 1) * ROW_SIZE) + jnb short @@roll_needed + even + mov cx, (PELLET_BOTTOM_H + 1) + jmp short @@no_roll +; --------------------------------------------------------------------------- + +@@roll_needed: + mov ax, (PLANE_SIZE + (ROW_SIZE - 1)) + sub ax, di + mov cx, ROW_SIZE + div cx + mov cx, ax + mov @@rows_after_roll, (PELLET_BOTTOM_H + 1) + sub @@rows_after_roll, cx + +@@no_roll: + mov ax, [si] ; lol, it's also just a LODSW? + jmp short @@put +; --------------------------------------------------------------------------- + +@@row_loop: + lodsw + +@@put: + or al, al + jz short @@only_byte_2 + or ah, ah + jz short @@only_byte_1 + mov es:[di], ax + jmp short @@row_next +; --------------------------------------------------------------------------- + +@@only_byte_1: + mov es:[di], al + jmp short @@row_next +; --------------------------------------------------------------------------- + +@@only_byte_2: + mov es:[di+1], ah + +@@row_next: + add di, ROW_SIZE + loop @@row_loop + or @@rows_after_roll, @@rows_after_roll + jz short @@pellet_next + sub di, PLANE_SIZE + xchg cx, @@rows_after_roll + jmp short @@row_loop +; --------------------------------------------------------------------------- + +@@pellet_next: + add bx, size pellet_render_t + dec bp + jnz short @@pellet_loop + pop di + pop si + pop bp + retn +_pellets_render_bottom endp diff --git a/th04/bullet/pellet_r[bss].asm b/th04/bullet/pellet_r[bss].asm new file mode 100644 index 00000000..230a8817 --- /dev/null +++ b/th04/bullet/pellet_r[bss].asm @@ -0,0 +1,2 @@ +public _pellets_alive +_pellets_alive dw ? diff --git a/th04/sprites/pelletbt.asm b/th04/sprites/pelletbt.asm index b8f2a0ca..8a3d0e4a 100644 --- a/th04/sprites/pelletbt.asm +++ b/th04/sprites/pelletbt.asm @@ -1,3 +1,5 @@ +PELLET_BOTTOM_H = 4 + public _sPELLET_BOTTOM label _sPELLET_BOTTOM byte ; x + 0 diff --git a/th04_main.asm b/th04_main.asm index 4381fc93..22355f83 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -2710,182 +2710,7 @@ midbossx_render endp ; --------------------------------------------------------------------------- db 0 - -; =============== S U B R O U T I N E ======================================= - - -sub_C99C proc near - mov ax, word_2D006 - or ax, ax - jnz short loc_C9A4 - retn -; --------------------------------------------------------------------------- - -loc_C9A4: - push bp - push si - push di - mov bp, ax - mov bx, 86D2h - -loc_C9AC: - mov di, [bx] - mov ax, di - sar di, 3 - mov cx, [bx+2] - shl cx, 6 - add di, cx - shr cx, 2 - add di, cx - and ax, 7 - mov si, ax - shl si, 4 - add si, offset _sPELLET - shl ax, 3 - mov cx, 6 - or ax, ax - jz short loc_C9F4 - cmp di, 7B70h - jb short loc_C9EB - -loc_C9DC: - movsw - add di, 4Eh ; 'N' - dec cx - cmp di, 7D00h - jb short loc_C9DC - sub di, 7D00h - -loc_C9EB: - movsw - add di, 4Eh ; 'N' - loop loc_C9EB - jmp short loc_CA11 -; --------------------------------------------------------------------------- - nop - -loc_C9F4: - cmp di, 7B70h - jb short loc_CA0A - -loc_C9FA: - movsb - inc si - add di, 4Fh ; 'O' - dec cx - cmp di, 7D00h - jb short loc_C9FA - sub di, 7D00h - -loc_CA0A: - movsb - inc si - add di, 4Fh ; 'O' - loop loc_CA0A - -loc_CA11: - sub di, 0F0h - jns short loc_CA1B - add di, 7D00h - -loc_CA1B: - add ax, offset _sPELLET_BOTTOM - mov [bx], di - mov [bx+2], ax - add bx, 4 - dec bp - jnz short loc_C9AC - pop di - pop si - pop bp - retn -sub_C99C endp - -; --------------------------------------------------------------------------- - nop - -; =============== S U B R O U T I N E ======================================= - - -sub_CA2E proc near - mov ax, word_2D006 - or ax, ax - jnz short loc_CA36 - retn -; --------------------------------------------------------------------------- - -loc_CA36: - push bp - push si - push di - mov bp, ax - mov bx, 86D2h - -loc_CA3E: - mov di, [bx] - mov si, [bx+2] - xor dx, dx - cmp di, 7B70h - jnb short loc_CA51 - nop - mov cx, 5 - jmp short loc_CA62 -; --------------------------------------------------------------------------- - -loc_CA51: - mov ax, 7D4Fh - sub ax, di - mov cx, 50h ; 'P' - div cx - mov cx, ax - mov dx, 5 - sub dx, cx - -loc_CA62: - mov ax, [si] - jmp short loc_CA67 -; --------------------------------------------------------------------------- - -loc_CA66: - lodsw - -loc_CA67: - or al, al - jz short loc_CA79 - or ah, ah - jz short loc_CA74 - mov es:[di], ax - jmp short loc_CA7D -; --------------------------------------------------------------------------- - -loc_CA74: - mov es:[di], al - jmp short loc_CA7D -; --------------------------------------------------------------------------- - -loc_CA79: - mov es:[di+1], ah - -loc_CA7D: - add di, 50h ; 'P' - loop loc_CA66 - or dx, dx - jz short loc_CA8E - sub di, 7D00h - xchg cx, dx - jmp short loc_CA66 -; --------------------------------------------------------------------------- - -loc_CA8E: - add bx, 4 - dec bp - jnz short loc_CA3E - pop di - pop si - pop bp - retn -sub_CA2E endp - +include th04/bullet/pellet_r.asm ; =============== S U B R O U T I N E ======================================= @@ -14055,10 +13880,10 @@ loc_12D6D: jnz short loc_12DBE mov ah, 0Fh call main_01:grcg_setcolor_direct_noint_1 - call main_01:sub_C99C + call main_01:_pellets_render_top mov ah, GC_RG call main_01:grcg_setcolor_direct_noint_1 - call main_01:sub_CA2E + call main_01:_pellets_render_bottom jmp short @@ret ; --------------------------------------------------------------------------- @@ -30896,7 +30721,7 @@ var_2 = word ptr -2 push si push di mov [bp+var_2], 0 - mov word_2D006, 0 + mov _pellets_alive, 0 mov si, offset _bullets[(BULLET_COUNT - 1) * size bullet_t] cmp _bullet_clear_trigger, 0 jnz loc_1CB44 @@ -31113,17 +30938,17 @@ loc_1CAC5: jl short loc_1CAF8 mov ax, [si+bullet_t.pos.cur.x] sar ax, 4 - add ax, 28 - mov bx, word_2D006 + add ax, (PLAYFIELD_X - (PELLET_W / 2)) + mov bx, _pellets_alive shl bx, 2 - mov [bx-792Eh], ax + mov _pellets_render[bx].PRT_left, ax mov ax, [si+bullet_t.pos.cur.y] - add ax, (12 shl 4) + add ax, ((PLAYFIELD_Y - (PELLET_H / 2)) shl 4) call scroll_subpixel_y_to_vram_seg3 pascal, ax - mov bx, word_2D006 + mov bx, _pellets_alive shl bx, 2 - mov [bx-792Ch], ax - inc word_2D006 + mov _pellets_render[bx].PRT_top, ax + inc _pellets_alive loc_1CAF8: inc di @@ -38968,7 +38793,7 @@ include th04/midboss/vars[bss].asm include th04/boss/vars[bss].asm include th04/sparks[bss].asm include th04/bullet/bullets[bss].asm - db 1884 dup(?) + db 924 dup(?) byte_2A16E db ? db 1879 dup(?) point_2A8C6 Point @@ -39010,7 +38835,7 @@ score_2CFFE dw ? fp_2D000 dw ? fp_2D002 dw ? fp_2D004 dw ? -word_2D006 dw ? +include th04/bullet/pellet_r[bss].asm angle_2D008 db ? evendata byte_2D00A db ? diff --git a/th05_main.asm b/th05_main.asm index 8de97a9f..33b99c07 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -904,7 +904,7 @@ loc_B3C5: loc_B3CA: nopcall sub_BF27 - mov grcgcolor_2CC8E, GC_RG + mov _pellet_bottom_col, GC_RG mov al, stage_id mov ah, 0 mov bx, ax @@ -1964,181 +1964,7 @@ nullsub_1 proc far nullsub_1 endp nop -; =============== S U B R O U T I N E ======================================= - - -sub_C054 proc near - mov ax, word_2C97E - or ax, ax - jnz short loc_C05C - retn -; --------------------------------------------------------------------------- - -loc_C05C: - push bp - push si - push di - mov bp, ax - mov bx, 8FC6h - -loc_C064: - mov di, [bx] - mov ax, di - sar di, 3 - mov cx, [bx+2] - shl cx, 6 - add di, cx - shr cx, 2 - add di, cx - and ax, 7 - mov si, ax - shl si, 4 - add si, offset _sPELLET - shl ax, 3 - mov cx, 6 - or ax, ax - jz short loc_C0AC - cmp di, 7B70h - jb short loc_C0A3 - -loc_C094: - movsw - add di, 4Eh ; 'N' - dec cx - cmp di, 7D00h - jb short loc_C094 - sub di, 7D00h - -loc_C0A3: - movsw - add di, 4Eh ; 'N' - loop loc_C0A3 - jmp short loc_C0C9 -; --------------------------------------------------------------------------- - nop - -loc_C0AC: - cmp di, 7B70h - jb short loc_C0C2 - -loc_C0B2: - movsb - inc si - add di, 4Fh ; 'O' - dec cx - cmp di, 7D00h - jb short loc_C0B2 - sub di, 7D00h - -loc_C0C2: - movsb - inc si - add di, 4Fh ; 'O' - loop loc_C0C2 - -loc_C0C9: - sub di, 0F0h - jns short loc_C0D3 - add di, 7D00h - -loc_C0D3: - add ax, offset _sPELLET_BOTTOM - mov [bx], di - mov [bx+2], ax - add bx, 4 - dec bp - jnz short loc_C064 - pop di - pop si - pop bp - retn -sub_C054 endp - -; --------------------------------------------------------------------------- - nop - -; =============== S U B R O U T I N E ======================================= - - -sub_C0E6 proc near - mov ax, word_2C97E - or ax, ax - jnz short loc_C0EE - retn -; --------------------------------------------------------------------------- - -loc_C0EE: - push bp - push si - push di - mov bp, ax - mov bx, 8FC6h - -loc_C0F6: - mov di, [bx] - mov si, [bx+2] - xor dx, dx - cmp di, 7B70h - jnb short loc_C109 - nop - mov cx, 5 - jmp short loc_C11A -; --------------------------------------------------------------------------- - -loc_C109: - mov ax, 7D4Fh - sub ax, di - mov cx, 50h ; 'P' - div cx - mov cx, ax - mov dx, 5 - sub dx, cx - -loc_C11A: - mov ax, [si] - jmp short loc_C11F -; --------------------------------------------------------------------------- - -loc_C11E: - lodsw - -loc_C11F: - or al, al - jz short loc_C131 - or ah, ah - jz short loc_C12C - mov es:[di], ax - jmp short loc_C135 -; --------------------------------------------------------------------------- - -loc_C12C: - mov es:[di], al - jmp short loc_C135 -; --------------------------------------------------------------------------- - -loc_C131: - mov es:[di+1], ah - -loc_C135: - add di, 50h ; 'P' - loop loc_C11E - or dx, dx - jz short loc_C146 - sub di, 7D00h - xchg cx, dx - jmp short loc_C11E -; --------------------------------------------------------------------------- - -loc_C146: - add bx, 4 - dec bp - jnz short loc_C0F6 - pop di - pop si - pop bp - retn -sub_C0E6 endp - +include th04/bullet/pellet_r.asm include th04/spark_render.asm include th04/sparks.asm include th04/item/splash_dot_render.asm @@ -8334,10 +8160,10 @@ loc_101BD: jnz short loc_1018A mov ah, 0Fh call grcg_setcolor_direct_noint_1 - call sub_C054 - mov ah, byte ptr grcgcolor_2CC8E + call _pellets_render_top + mov ah, byte ptr _pellet_bottom_col call grcg_setcolor_direct_noint_1 - call sub_C0E6 + call _pellets_render_bottom jmp short @@ret ; --------------------------------------------------------------------------- @@ -17170,7 +16996,7 @@ var_2 = word ptr -2 push di mov [bp+var_2], 0 mov word_2CDF8, 0 - mov word_2C97E, 0 + mov _pellets_alive, 0 mov si, offset _bullets[(BULLET_COUNT - 1) * size bullet_t] cmp _bullet_clear_trigger, 0 jnz loc_17EC3 @@ -17412,17 +17238,17 @@ loc_17E41: jl short loc_17E74 mov ax, [si+bullet_t.pos.cur.x] sar ax, 4 - add ax, 28 - mov bx, word_2C97E + add ax, (PLAYFIELD_X - (PELLET_W / 2)) + mov bx, _pellets_alive shl bx, 2 - mov [bx-703Ah], ax + mov _pellets_render[bx].PRT_left, ax mov ax, [si+bullet_t.pos.cur.y] - add ax, (12 shl 4) + add ax, ((PLAYFIELD_Y - (PELLET_H / 2)) shl 4) call scroll_subpixel_y_to_vram_seg3 pascal, ax - mov bx, word_2C97E + mov bx, _pellets_alive shl bx, 2 - mov [bx-7038h], ax - inc word_2C97E + mov _pellets_render[bx].PRT_top, ax + inc _pellets_alive loc_17E74: inc di @@ -28815,7 +28641,7 @@ sub_1EA14 proc near jnz short loc_1EA2E mov byte_2D084, 40h mov byte_2D083, 0 - mov grcgcolor_2CC8E, GC_I + mov _pellet_bottom_col, GC_I loc_1EA2E: mov ax, _boss_phase_frame @@ -29999,7 +29825,7 @@ loc_1F51A: call sub_1F23B loc_1F523: - mov grcgcolor_2CC8E, GC_RG + mov _pellet_bottom_col, GC_RG mov patnum_2CE64, 200 inc byte_2D07F jmp loc_1F666 @@ -31729,7 +31555,7 @@ include th04/boss/vars[bss].asm include th05/boss/vars2[bss].asm include th04/sparks[bss].asm include th04/bullet/bullets[bss].asm - db 3452 dup(?) + db 2732 dup(?) point_2A722 Point dword_2A726 dd ? word_2A72A dw ? @@ -31766,7 +31592,7 @@ include th04/bullet_clear[bss].asm public _stage_graze _stage_graze dw ? score_2C97C dw ? -word_2C97E dw ? +include th04/bullet/pellet_r[bss].asm db 6 dup(?) word_2C986 dw ? word_2C988 dw ? @@ -31778,7 +31604,8 @@ byte_2C99C db ? include th05/lasers_render[bss].asm include th05/bullet/curve[bss].asm include th04/item/splashes[bss].asm -grcgcolor_2CC8E dw ? +public _pellet_bottom_col +_pellet_bottom_col dw ? db 360 dup(?) word_2CDF8 dw ? include th04/scroll[bss].asm