mirror of https://github.com/nmlgc/ReC98.git
[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.
This commit is contained in:
parent
96ed07f31e
commit
3850f8aafb
|
@ -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);
|
|
@ -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
|
||||
|
|
|
@ -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 <?>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
102
th05_main.asm
102
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
|
||||
|
|
Loading…
Reference in New Issue