From 3850f8aafbd673a4d5007f23affc4d32067e7f57 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Sat, 26 Feb 2022 23:46:19 +0100 Subject: [PATCH] [Maintenance] [th05] Declare laser symbols in C land, using current conventions Oh hey, these 2018 variable names weren't completely bad! Part of P0185, funded by [Anonymous], -Tom-, and Blue Bolt. --- th05/main/bullet/laser.hpp | 87 ++++++++++++++++++ th05/main/bullet/laser_render_hittest.asm | 16 ++-- th05/main/bullet/lasers[bss].asm | 46 +++------- th05/main/bullet/lasers_control.asm | 68 ++++++--------- th05/main/bullet/lasers_update_render.asm | 44 +++++----- th05_main.asm | 102 +++++++++++----------- 6 files changed, 200 insertions(+), 163 deletions(-) create mode 100644 th05/main/bullet/laser.hpp diff --git a/th05/main/bullet/laser.hpp b/th05/main/bullet/laser.hpp new file mode 100644 index 00000000..7a4a0240 --- /dev/null +++ b/th05/main/bullet/laser.hpp @@ -0,0 +1,87 @@ +enum laser_flag_t { + LF_FREE = 0, + LF_SHOOTOUT = 1, + LF_FIXED_WAIT_TO_GROW = 2, + LF_FIXED_GROW = 3, + + // Fixed laser has reached its target width and will now actually kill the + // player on contact. + LF_FIXED_ACTIVE = 4, + + LF_FIXED_SHRINK = 5, + LF_FIXED_SHRINK_AND_WAIT_TO_GROW = 6, + LF_DECAY = 7, +}; + +struct laser_coords_t { + PlayfieldPoint origin; + + // Start and end point on the infinite [angle]° line starting at [origin] + // that make up the actually rendered (and damaging) laser. + Subpixel starts_at_distance; + Subpixel ends_at_distance; + + unsigned char angle; + unsigned char width; // pixel_t +}; + +struct laser_t { + laser_flag_t flag; + uint4_t col; + laser_coords_t coords; + Subpixel shootout_speed; + int age; + union { + // [age] at which a fixed laser should transition from + // LF_FIXED_WAIT_TO_GROW to LF_FIXED_GROW. + int grow; + // [age] at which a shoot-out laser should stop growing and start + // moving along the infinite [angle]° line. + int moveout; + } active_at_age; + + // [age] at which a fixed laser should transition from LF_FIXED_ACTIVE to + // LF_FIXED_SHRINK. + int shrink_at_age; + // [width] (in pixels) at which a fixed laser should transition from + // LF_FIXED_GROW to LF_FIXED_ACTIVE. + uint8_t grow_to_width; + uint8_t padding[3]; +}; + +#define LASER_COUNT 32 + +extern laser_t lasers[LASER_COUNT]; +extern laser_t laser_template; + +/// Control +/// ------- +/// "Manual" lasers ignore any age fields from the laser template. + +// Spawns a new shoot-out laser based on the [laser_template]. +void near lasers_shootout_add(void); + +// Creates a new fixed laser based on the [laser_template] in the given [slot] +// if that one is currently empty. +void pascal near laser_fixed_spawn(int slot); + +// Creates a new fixed, manually controlled laser based on the [laser_template] +// in the given [slot] if that one is currently empty. +void pascal near laser_manual_fixed_spawn(int slot); + +// Starts the growing phase of the manually controlled fixed laser at [slot]. +void pascal near laser_manual_grow(int slot); + +// Transitions the laser at [slot] to a stopping phase appropriate for its +// current one. +void pascal near laser_stop(int slot); +/// ------- + +// Returns `true` if the laser is entirely off-screen. +bool16 pascal near laser_render_ray(laser_coords_t near *coords); + +// Processes any collision between the given [laser] and the player. +void pascal near laser_hittest(laser_t near &laser); + +void near lasers_update(void); +void near lasers_render(void); diff --git a/th05/main/bullet/laser_render_hittest.asm b/th05/main/bullet/laser_render_hittest.asm index 760388cf..03ddc2cb 100644 --- a/th05/main/bullet/laser_render_hittest.asm +++ b/th05/main/bullet/laser_render_hittest.asm @@ -49,11 +49,8 @@ build_line_in_pixels proc near build_line_in_pixels endp -; Returns 1 if the laser is entirely off-screen. - -; int pascal near laser_render_ray(laser_coords_t near *coords) -public LASER_RENDER_RAY -laser_render_ray proc near +public @LASER_RENDER_RAY$QP14LASER_COORDS_T +@laser_render_ray$qp14laser_coords_t proc near point0 = Point ptr -20h point1 = Point ptr -1Ch point2 = Point ptr -18h @@ -124,12 +121,11 @@ point7 = Point ptr -4 pop si leave retn 2 -laser_render_ray endp +@laser_render_ray$qp14laser_coords_t endp -; void pascal near laser_hittest(laser_t near *laser); -public LASER_HITTEST -laser_hittest proc near +public @LASER_HITTEST$QR7LASER_T +@laser_hittest$qr7laser_t proc near testrect_center = byte ptr -4 laser = word ptr 4 @@ -171,4 +167,4 @@ laser = word ptr 4 pop di leave ret 2 -laser_hittest endp +@laser_hittest$qr7laser_t endp diff --git a/th05/main/bullet/lasers[bss].asm b/th05/main/bullet/lasers[bss].asm index a7a4b4ff..9b45c6cf 100644 --- a/th05/main/bullet/lasers[bss].asm +++ b/th05/main/bullet/lasers[bss].asm @@ -1,63 +1,37 @@ -; Modes -; ----- -LM_NONE = 0 -LM_SHOOTOUT = 1 -LM_FIXED_WAIT_TO_GROW = 2 -LM_FIXED_GROW = 3 -; Fixed laser has reached its target width and will now actually kill the -; player on contact -LM_FIXED_ACTIVE = 4 -LM_FIXED_SHRINK = 5 -LM_FIXED_SHRINK_AND_WAIT_TO_GROW = 6 -LM_DECAY = 7 -; ----- +LF_FREE = 0 +LF_SHOOTOUT = 1 +LF_FIXED_WAIT_TO_GROW = 2 +LF_FIXED_GROW = 3 +LF_FIXED_ACTIVE = 4 +LF_FIXED_SHRINK = 5 +LF_FIXED_SHRINK_AND_WAIT_TO_GROW = 6 +LF_DECAY = 7 -; Structures -; ---------- -; TODO: Remove the anti-collision LASER_ prefixes once this gets decompiled. - -; [origin] and the two distances are stored in units of 1/16th of a pixel. laser_coords_t struc origin Point - - ; Start and end point on the infinite [angle]° line starting at [origin] - ; that make up the actually rendered (and damaging) laser. starts_at_distance dw ? ends_at_distance dw ? - angle db ? LASER_width db ? laser_coords_t ends laser_t struc - mode db ? - + flag db ? LASER_color db ? - coords laser_coords_t - - ; 1/16th pixel units per frame. shootout_speed dw ? LASER_age dw ? - ; [age] at which a fixed laser should transition from LM_FIXED_WAIT_TO_GROW - ; to LM_FIXED_GROW. grow_at_age label word - ; [age] at which a shoot-out laser should stop growing and start moving - ; along the infinite [angle]° line. moveout_at_age label word dw ? - ; [age] at which a fixed laser should transition from LM_FIXED_ACTIVE to - ; LM_FIXED_SHRINK. shrink_at_age dw ? - ; [width] at which a fixed laser should transition from LM_FIXED_GROW to - ; LM_FIXED_ACTIVE. grow_to_width db ? db 3 dup(?) laser_t ends -; ---------- LASER_COUNT = 32 +public _lasers, _laser_template _lasers laser_t LASER_COUNT dup() _laser_template laser_t diff --git a/th05/main/bullet/lasers_control.asm b/th05/main/bullet/lasers_control.asm index bce93dbb..99d81a38 100644 --- a/th05/main/bullet/lasers_control.asm +++ b/th05/main/bullet/lasers_control.asm @@ -1,7 +1,4 @@ -; Adds a new shoot-out laser based on the [laser_template]. - -; void near lasers_add_shoutout(void); -lasers_add_shoutout proc near +@lasers_shootout_add$qv proc near @@speed = word ptr -2 push bp @@ -18,9 +15,9 @@ lasers_add_shoutout proc near jmp short @@more? @@loop: - cmp [si+laser_t.mode], LM_NONE + cmp [si+laser_t.flag], LF_FREE jnz short @@next - mov [si+laser_t.mode], LM_SHOOTOUT + mov [si+laser_t.flag], LF_SHOOTOUT mov [si+laser_t.coords.starts_at_distance], (16 shl 4) mov [si+laser_t.coords.ends_at_distance], (16 shl 4) mov [si+laser_t.LASER_age], 0 @@ -59,14 +56,10 @@ lasers_add_shoutout proc near pop si leave ret -lasers_add_shoutout endp +@lasers_shootout_add$qv endp -; Creates a new fixed laser based on the [laser_template] in the given [slot] -; if that one is currently empty. - -; void pascal near lasers_new_fixed_in_slot(unsigned int slot); -lasers_new_fixed_in_slot proc near +@laser_fixed_spawn$qi proc near @@slot = word ptr 4 push bp @@ -76,9 +69,9 @@ lasers_new_fixed_in_slot proc near imul ax, size laser_t add ax, offset _lasers mov si, ax - cmp [si+laser_t.mode], LM_NONE + cmp [si+laser_t.flag], LF_FREE jnz short @@ret - mov [si+laser_t.mode], LM_FIXED_WAIT_TO_GROW + mov [si+laser_t.flag], LF_FIXED_WAIT_TO_GROW mov eax, _laser_template.coords.origin mov dword ptr [si+laser_t.coords.origin], eax mov [si+laser_t.coords.starts_at_distance], (16 shl 4) @@ -101,14 +94,10 @@ lasers_new_fixed_in_slot proc near pop si pop bp ret 2 -lasers_new_fixed_in_slot endp +@laser_fixed_spawn$qi endp -; Creates a new fixed, manually controlled laser based on the [laser_template] -; in the given [slot] if that one is currently empty. - -; void pascal near lasers_new_fixed_and_manual_in_slot(unsigned int slot); -lasers_new_fixed_and_manual_in_slot proc near +@laser_manual_fixed_spawn$qi proc near @@slot = word ptr 4 push bp @@ -118,9 +107,9 @@ lasers_new_fixed_and_manual_in_slot proc near imul ax, size laser_t add ax, offset _lasers mov si, ax - cmp [si+laser_t.mode], LM_NONE + cmp [si+laser_t.flag], LF_FREE jnz short @@ret - mov [si+laser_t.mode], LM_FIXED_WAIT_TO_GROW + mov [si+laser_t.flag], LF_FIXED_WAIT_TO_GROW mov eax, _laser_template.coords.origin mov dword ptr [si+laser_t.coords.origin], eax mov [si+laser_t.coords.starts_at_distance], (16 shl 4) @@ -141,13 +130,10 @@ lasers_new_fixed_and_manual_in_slot proc near pop si pop bp ret 2 -lasers_new_fixed_and_manual_in_slot endp +@laser_manual_fixed_spawn$qi endp -; Starts the growing phase of the manually controlled fixed laser at [slot]. - -; void pascal near lasers_grow_manual_in_slot(unsigned int slot); -lasers_grow_manual_in_slot proc near +@laser_manual_grow$qi proc near @@slot = word ptr 4 push bp @@ -156,25 +142,21 @@ lasers_grow_manual_in_slot proc near mov si, [bp+@@slot] mov bx, si imul bx, size laser_t - cmp _lasers[bx].mode, LM_FIXED_WAIT_TO_GROW + cmp _lasers[bx].flag, LF_FIXED_WAIT_TO_GROW jnz short @@ret mov bx, si imul bx, size laser_t - mov _lasers[bx].mode, LM_FIXED_GROW + mov _lasers[bx].flag, LF_FIXED_GROW call snd_se_play pascal, 6 @@ret: pop si pop bp ret 2 -lasers_grow_manual_in_slot endp +@laser_manual_grow$qi endp -; Transitions the laser at [slot] to a stopping phase appropriate for its -; current one. - -; void pascal lasers_stop_in_slot(unsigned int slot); -lasers_stop_in_slot proc near +@laser_stop$qi proc near @@slot = word ptr 4 push bp @@ -182,39 +164,39 @@ lasers_stop_in_slot proc near mov ax, [bp+@@slot] mov bx, ax imul bx, size laser_t - cmp _lasers[bx].mode, LM_FIXED_ACTIVE + cmp _lasers[bx].flag, LF_FIXED_ACTIVE jnz short @@shootout? mov bx, ax imul bx, size laser_t - mov _lasers[bx].mode, LM_FIXED_SHRINK + mov _lasers[bx].flag, LF_FIXED_SHRINK pop bp ret 2 @@shootout?: mov bx, ax imul bx, size laser_t - cmp _lasers[bx].mode, LM_SHOOTOUT + cmp _lasers[bx].flag, LF_SHOOTOUT jnz short @@fixed_shrink? mov bx, ax imul bx, size laser_t - mov _lasers[bx].mode, LM_DECAY + mov _lasers[bx].flag, LF_DECAY pop bp ret 2 @@fixed_shrink?: mov bx, ax imul bx, size laser_t - cmp _lasers[bx].mode, LM_FIXED_SHRINK + cmp _lasers[bx].flag, LF_FIXED_SHRINK jz short @@ret mov bx, ax imul bx, size laser_t - cmp _lasers[bx].mode, LM_DECAY + cmp _lasers[bx].flag, LF_DECAY jz short @@ret mov bx, ax imul bx, size laser_t - mov _lasers[bx].mode, LM_NONE + mov _lasers[bx].flag, LF_FREE @@ret: pop bp ret 2 -lasers_stop_in_slot endp +@laser_stop$qi endp diff --git a/th05/main/bullet/lasers_update_render.asm b/th05/main/bullet/lasers_update_render.asm index 0e1f3d6d..f0da3dfc 100644 --- a/th05/main/bullet/lasers_update_render.asm +++ b/th05/main/bullet/lasers_update_render.asm @@ -1,6 +1,5 @@ -; void pascal near lasers_update(void); -public LASERS_UPDATE -lasers_update proc near +public @lasers_update$qv +@lasers_update$qv proc near push bp mov bp, sp push si @@ -10,7 +9,7 @@ lasers_update proc near jmp @@more? @@loop: - cmp [si+laser_t.mode], LM_NONE + cmp [si+laser_t.flag], LF_FREE jz @@next cmp _bullet_clear_time, 0 jnz short @@shootout @@ -18,9 +17,9 @@ lasers_update proc near jz short @@switch @@shootout: - cmp [si+laser_t.mode], LM_SHOOTOUT + cmp [si+laser_t.flag], LF_SHOOTOUT jnz short @@switch - mov [si+laser_t.mode], LM_DECAY + mov [si+laser_t.flag], LF_DECAY mov ax, [si+laser_t.shootout_speed] cwd sub ax, dx @@ -28,7 +27,7 @@ lasers_update proc near mov [si+laser_t.shootout_speed], ax @@switch: - mov al, [si+laser_t.mode] + mov al, [si+laser_t.flag] mov ah, 0 dec ax mov bx, ax @@ -51,7 +50,7 @@ loc_FC52: add [si+laser_t.coords.starts_at_distance], ax loc_FC60: - call laser_hittest pascal, si + call @laser_hittest$qr7laser_t pascal, si jmp @@age_inc ; --------------------------------------------------------------------------- @@ -61,7 +60,7 @@ laser_update_fixed_wait_to_grow: mov ax, [si+laser_t.LASER_age] cmp ax, [si+laser_t.grow_at_age] jl @@age_inc - inc [si+laser_t.mode] + inc [si+laser_t.flag] call snd_se_play pascal, 6 jmp @@age_inc ; --------------------------------------------------------------------------- @@ -81,7 +80,7 @@ laser_update_fixed_grow: ; --------------------------------------------------------------------------- laser_update_fixed_active: - call laser_hittest pascal, si + call @laser_hittest$qr7laser_t pascal, si cmp [si+laser_t.shrink_at_age], 0 jle short @@age_inc mov ax, [si+laser_t.LASER_age] @@ -89,7 +88,7 @@ laser_update_fixed_active: jl short @@age_inc @@next_mode: - inc [si+laser_t.mode] + inc [si+laser_t.flag] jmp short @@age_inc ; --------------------------------------------------------------------------- @@ -116,7 +115,7 @@ laser_update_fixed_shrink_and_wait_to_grow: @@shrink_and_wait_to_grow_step: cmp [si+laser_t.coords.LASER_width], 1 jg short @@age_inc - mov [si+laser_t.mode], LM_FIXED_WAIT_TO_GROW + mov [si+laser_t.flag], LF_FIXED_WAIT_TO_GROW mov [si+laser_t.LASER_age], 0 jmp short @@age_inc ; --------------------------------------------------------------------------- @@ -142,7 +141,7 @@ loc_FD02: jb short @@age_inc @@delete: - mov [si+laser_t.mode], LM_NONE + mov [si+laser_t.flag], LF_FREE @@age_inc: inc [si+laser_t.LASER_age] @@ -158,7 +157,7 @@ loc_FD02: pop si pop bp retn -lasers_update endp +@lasers_update$qv endp ; --------------------------------------------------------------------------- lasers_update_switch label word @@ -171,9 +170,8 @@ lasers_update_switch label word dw offset laser_update_decay ; --------------------------------------------------------------------------- -; void pascal near lasers_render(void); -public LASERS_RENDER -lasers_render proc near +public @lasers_render$qv +@lasers_render$qv proc near @@radius = byte ptr -0Ah @@width_orig = byte ptr -9 @@ -193,7 +191,7 @@ lasers_render proc near ; --------------------------------------------------------------------------- @@laser_loop: - cmp [si+laser_t.mode], LM_NONE + cmp [si+laser_t.flag], LF_FREE jz @@next_laser mov al, [si+laser_t.coords.LASER_width] mov [bp+@@width_orig], al @@ -214,7 +212,7 @@ lasers_render proc near sar ax, 4 add ax, 16 mov [bp+@@draw_y], ax - cmp [si+laser_t.mode], LM_DECAY + cmp [si+laser_t.flag], LF_DECAY jz @@decay cmp [bp+@@radius], 2 jnb short @@draw_outer_circle? @@ -244,7 +242,7 @@ lasers_render proc near mov [bp+@@end_distance_orig], ax sub [si+laser_t.coords.ends_at_distance], (2 shl 4) lea ax, [si+laser_t.coords] - call laser_render_ray pascal, ax + call @laser_render_ray$qp14laser_coords_t pascal, ax mov ax, [bp+@@end_distance_orig] mov [si+laser_t.coords.ends_at_distance], ax @@ -320,10 +318,10 @@ lasers_render proc near @@draw_inner_ray: lea ax, [si+laser_t.coords] - call laser_render_ray pascal, ax + call @laser_render_ray$qp14laser_coords_t pascal, ax or ax, ax jz @@width_reset - mov [si+laser_t.mode], LM_NONE + mov [si+laser_t.flag], LF_FREE jmp @@width_reset ; --------------------------------------------------------------------------- @@ -416,4 +414,4 @@ lasers_render proc near pop si leave retn -lasers_render endp +@lasers_render$qv endp diff --git a/th05_main.asm b/th05_main.asm index 2fcc49ee..f9b43697 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -415,7 +415,7 @@ loc_AED7: call _sparks_update call sub_1214A call sub_1240B - call lasers_update + call @lasers_update$qv call _bullets_update call enemies_update call _midboss_update @@ -435,7 +435,7 @@ loc_AF2D: call player_render call _grcg_setmode_rmw_seg1 call _boss_custombullets_render - call lasers_render + call @lasers_render$qv call _gather_render call _sparks_render call items_render @@ -12059,9 +12059,9 @@ loc_1859F: mov _laser_template.coords.angle, -32 mov _laser_template.LASER_color, 8 mov _laser_template.coords.LASER_width, 8 - call lasers_new_fixed_and_manual_in_slot pascal, 0 + call @laser_manual_fixed_spawn$qi pascal, 0 mov _laser_template.coords.angle, -96 - call lasers_new_fixed_and_manual_in_slot pascal, 1 + call @laser_manual_fixed_spawn$qi pascal, 1 mov angle_2D085, 0 mov angle_2D084, 1 mov byte_2D083, 1 @@ -12074,8 +12074,8 @@ loc_185DD: jle loc_186B4 cmp _boss_phase_frame, 64 jnz short loc_185F7 - call lasers_grow_manual_in_slot pascal, 0 - call lasers_grow_manual_in_slot pascal, 1 + call @laser_manual_grow$qi pascal, 0 + call @laser_manual_grow$qi pascal, 1 loc_185F7: mov al, byte_2D083 @@ -12363,8 +12363,8 @@ loc_188C6: mov _boss_mode_change, 1 loc_188D2: - call lasers_stop_in_slot pascal, 0 - call lasers_stop_in_slot pascal, 1 + call @laser_stop$qi pascal, 0 + call @laser_stop$qi pascal, 1 mov _boss_phase_frame, 0 mov _boss_phase, PHASE_BOSS_EXPLODE_SMALL jmp short loc_188EE @@ -13060,7 +13060,7 @@ loc_18F12: jnz short loc_18F5A cmp angle_2D085, 0 jz short loc_18F2B - call lasers_add_shoutout + call @lasers_shootout_add$qv jmp short loc_18F40 ; --------------------------------------------------------------------------- @@ -13068,7 +13068,7 @@ loc_18F2B: mov al, 128 sub al, _laser_template.coords.angle mov _laser_template.coords.angle, al - call lasers_add_shoutout + call @lasers_shootout_add$qv mov al, 128 sub al, _laser_template.coords.angle mov _laser_template.coords.angle, al @@ -14802,15 +14802,15 @@ loc_19E43: push ax call iatan2 mov _laser_template.coords.angle, al - call lasers_add_shoutout + call @lasers_shootout_add$qv mov al, _laser_template.coords.angle add al, 16 mov _laser_template.coords.angle, al - call lasers_add_shoutout + call @lasers_shootout_add$qv mov al, _laser_template.coords.angle add al, -32 mov _laser_template.coords.angle, al - call lasers_add_shoutout + call @lasers_shootout_add$qv mov _bullet_template.spawn_type, BST_CLOUD_FORWARDS or BST_NO_SLOWDOWN mov _bullet_template.BT_group, BG_RANDOM_ANGLE_AND_SPEED mov _bullet_template.patnum, PAT_BULLET16_N_BLUE @@ -15641,12 +15641,12 @@ var_1 = byte ptr -1 mov _laser_template.coords.angle, al mov _laser_template.LASER_color, 8 mov _laser_template.coords.LASER_width, 8 - call lasers_new_fixed_and_manual_in_slot pascal, 0 + call @laser_manual_fixed_spawn$qi pascal, 0 loc_1A7AF: cmp _boss_phase_frame, 80 jnz short loc_1A7BB - call lasers_grow_manual_in_slot pascal, 0 + call @laser_manual_grow$qi pascal, 0 loc_1A7BB: mov ax, _boss_phase_frame @@ -15697,7 +15697,7 @@ loc_1A817: loc_1A81A: cmp _boss_phase_frame, 160 jnz short loc_1A82B - call lasers_stop_in_slot pascal, 0 + call @laser_stop$qi pascal, 0 mov al, 1 leave retn @@ -16383,9 +16383,9 @@ loc_1AE2C: mov _boss2_mode_change, al mov _boss_phase, PHASE_BOSS_EXPLODE_SMALL mov _boss_phase_frame, 0 - cmp _lasers[0 * size laser_t].mode, LM_NONE + cmp _lasers[0 * size laser_t].flag, LF_FREE jz loc_1AFA7 ; default - call lasers_stop_in_slot pascal, 0 + call @laser_stop$qi pascal, 0 jmp short loc_1AE69 ; --------------------------------------------------------------------------- @@ -18502,19 +18502,19 @@ var_2 = word ptr -2 sub dl, byte ptr [bp+var_2] sub dl, al mov _laser_template.coords.angle, dl - call lasers_new_fixed_in_slot pascal, 0 + call @laser_fixed_spawn$qi pascal, 0 mov al, _laser_template.coords.angle add al, byte ptr [bp+var_2] mov _laser_template.coords.angle, al - call lasers_new_fixed_in_slot pascal, 1 + call @laser_fixed_spawn$qi pascal, 1 mov al, _laser_template.coords.angle add al, byte ptr [bp+var_2] mov _laser_template.coords.angle, al - call lasers_new_fixed_in_slot pascal, 2 + call @laser_fixed_spawn$qi pascal, 2 mov al, _laser_template.coords.angle add al, byte ptr [bp+var_2] mov _laser_template.coords.angle, al - call lasers_new_fixed_in_slot pascal, 3 + call @laser_fixed_spawn$qi pascal, 3 mov byte_2D083, -8 jmp loc_1C347 ; --------------------------------------------------------------------------- @@ -18609,7 +18609,7 @@ loc_1C376: idiv word_2CE3C add al, byte ptr [bp+var_2] mov _laser_template.coords.angle, al - call lasers_new_fixed_and_manual_in_slot pascal, si + call @laser_manual_fixed_spawn$qi pascal, si inc si loc_1C38B: @@ -18653,7 +18653,7 @@ loc_1C3DB: ; --------------------------------------------------------------------------- loc_1C3EC: - call lasers_grow_manual_in_slot pascal, si + call @laser_manual_grow$qi pascal, si inc si loc_1C3F1: @@ -18672,7 +18672,7 @@ loc_1C3F9: loc_1C404: mov bx, si imul bx, size laser_t - mov _lasers[bx].mode, LM_FIXED_SHRINK_AND_WAIT_TO_GROW + mov _lasers[bx].flag, LF_FIXED_SHRINK_AND_WAIT_TO_GROW inc si loc_1C40F: @@ -18945,7 +18945,7 @@ loc_1C6CB: ; --------------------------------------------------------------------------- loc_1C6CF: - call lasers_stop_in_slot pascal, si + call @laser_stop$qi pascal, si inc si loc_1C6D4: @@ -19683,7 +19683,7 @@ loc_1CFC3: mov _laser_template.coords.origin.x, ax call player_angle_from pascal, ax, _laser_template.coords.origin.y, 0 mov _laser_template.coords.angle, al - call lasers_add_shoutout + call @lasers_shootout_add$qv xor si, si jmp short loc_1D02B ; --------------------------------------------------------------------------- @@ -20448,17 +20448,17 @@ sub_1D89A proc near cmp _boss_phase_frame, 16 jnz short loc_1D8F7 mov _laser_template.coords.angle, 80 - call lasers_new_fixed_and_manual_in_slot pascal, 0 + call @laser_manual_fixed_spawn$qi pascal, 0 mov _laser_template.coords.angle, 72 - call lasers_new_fixed_and_manual_in_slot pascal, 1 + call @laser_manual_fixed_spawn$qi pascal, 1 mov _laser_template.coords.angle, 64 - call lasers_new_fixed_and_manual_in_slot pascal, 2 + call @laser_manual_fixed_spawn$qi pascal, 2 mov _laser_template.coords.angle, 64 - call lasers_new_fixed_and_manual_in_slot pascal, 3 + call @laser_manual_fixed_spawn$qi pascal, 3 mov _laser_template.coords.angle, 56 - call lasers_new_fixed_and_manual_in_slot pascal, 4 + call @laser_manual_fixed_spawn$qi pascal, 4 mov _laser_template.coords.angle, 48 - call lasers_new_fixed_and_manual_in_slot pascal, 5 + call @laser_manual_fixed_spawn$qi pascal, 5 call snd_se_play pascal, 8 mov _boss_sprite, 181 mov angle_2D085, 0 @@ -20536,7 +20536,7 @@ loc_1D9AE: ; --------------------------------------------------------------------------- loc_1D9BC: - call lasers_grow_manual_in_slot pascal, si + call @laser_manual_grow$qi pascal, si inc si loc_1D9C1: @@ -20568,7 +20568,7 @@ loc_1D9EA: ; --------------------------------------------------------------------------- loc_1DA05: - call lasers_stop_in_slot pascal, si + call @laser_stop$qi pascal, si inc si loc_1DA0A: @@ -20909,13 +20909,13 @@ loc_1DD27: mov _laser_template.coords.angle, 64 mov _laser_template.LASER_color, 14 add _laser_template.coords.origin.x, (96 shl 4) - call lasers_new_fixed_and_manual_in_slot pascal, 0 + call @laser_manual_fixed_spawn$qi pascal, 0 sub _laser_template.coords.origin.x, (64 shl 4) - call lasers_new_fixed_and_manual_in_slot pascal, 1 + call @laser_manual_fixed_spawn$qi pascal, 1 sub _laser_template.coords.origin.x, (64 shl 4) - call lasers_new_fixed_and_manual_in_slot pascal, 2 + call @laser_manual_fixed_spawn$qi pascal, 2 sub _laser_template.coords.origin.x, (64 shl 4) - call lasers_new_fixed_and_manual_in_slot pascal, 3 + call @laser_manual_fixed_spawn$qi pascal, 3 inc word_22852 call boss_explode_small pascal, 0 @@ -21077,10 +21077,10 @@ loc_1DF48: jl short loc_1DF73 cmp word_22852, 40h jnz short loc_1DF79 - call lasers_grow_manual_in_slot pascal, 0 - call lasers_grow_manual_in_slot pascal, 1 - call lasers_grow_manual_in_slot pascal, 2 - call lasers_grow_manual_in_slot pascal, 3 + call @laser_manual_grow$qi pascal, 0 + call @laser_manual_grow$qi pascal, 1 + call @laser_manual_grow$qi pascal, 2 + call @laser_manual_grow$qi pascal, 3 loc_1DF73: inc word_22852 @@ -21588,10 +21588,10 @@ loc_1E481: loc_1E488: call boss_phase_end pascal, (ET_HORIZONTAL shl 16) or 0 mov word_2CE06, 10h - call lasers_stop_in_slot pascal, 0 - call lasers_stop_in_slot pascal, 1 - call lasers_stop_in_slot pascal, 2 - call lasers_stop_in_slot pascal, 3 + call @laser_stop$qi pascal, 0 + call @laser_stop$qi pascal, 1 + call @laser_stop$qi pascal, 2 + call @laser_stop$qi pascal, 3 jmp short loc_1E527 ; --------------------------------------------------------------------------- @@ -22533,7 +22533,7 @@ sub_1ECD4 proc near mov _laser_template.coords.angle, al mov ax, word_22870 inc word_22870 - call lasers_new_fixed_in_slot pascal, ax + call @laser_fixed_spawn$qi pascal, ax mov _bullet_template.spawn_type, BST_NO_SLOWDOWN mov _bullet_template.patnum, PAT_BULLET16_D_GREEN mov _bullet_template.BT_group, BG_RING @@ -22552,7 +22552,7 @@ loc_1ED46: mov _laser_template.coords.angle, al mov ax, word_22870 inc word_22870 - call lasers_new_fixed_in_slot pascal, ax + call @laser_fixed_spawn$qi pascal, ax loc_1ED67: and word_22870, 0Fh @@ -22563,7 +22563,7 @@ loc_1ED67: loc_1ED70: mov bx, si imul bx, size laser_t - cmp _lasers[bx].mode, LM_FIXED_WAIT_TO_GROW + cmp _lasers[bx].flag, LF_FIXED_WAIT_TO_GROW jnz short loc_1EDA3 test si, 1 jz short loc_1ED8F @@ -22701,7 +22701,7 @@ loc_1EE83: mov angle_2D085, 0 loc_1EE9E: - call lasers_add_shoutout + call @lasers_shootout_add$qv loc_1EEA1: cmp _boss_phase_frame, 256