Attempt to decompile liftTick

This commit is contained in:
Ryan Dwyer 2020-06-27 21:48:43 +10:00
parent 85cd1a1103
commit ce9c56ec7f
14 changed files with 284 additions and 139 deletions

View File

@ -3524,7 +3524,7 @@ u8 func1018_safe_switch[] = {
yield
open_door(OBJ_SAFEDOOR)
yield
set_object_flag(OBJ_SAFEDOOR, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_SAFEDOOR, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag2(OBJ_FLIGHTPLANS, OBJFLAG2_INVISIBLE)
unset_object_flag(OBJ_FLIGHTPLANS, OBJFLAG_UNCOLLECTABLE)

View File

@ -618,10 +618,10 @@ u8 func1003_laser_switch_1[] = {
open_door(OBJ_LASER_1C)
open_door(OBJ_LASER_1D)
yield
set_object_flag(OBJ_LASER_1A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1D, OBJFLAG_DOOR_KEEPOPEN)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH1, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_0)
@ -685,10 +685,10 @@ u8 func1004_laser_switch_2[] = {
open_door(OBJ_LASER_2C)
open_door(OBJ_LASER_2D)
yield
set_object_flag(OBJ_LASER_2A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2D, OBJFLAG_DOOR_KEEPOPEN)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH2, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_1)
@ -751,10 +751,10 @@ u8 func1005_laser_switch_3[] = {
open_door(OBJ_LASER_3C)
open_door(OBJ_LASER_3D)
yield
set_object_flag(OBJ_LASER_3A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3D, OBJFLAG_DOOR_KEEPOPEN)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH3, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_2)
@ -817,10 +817,10 @@ u8 func1006_laser_switch_4[] = {
open_door(OBJ_LASER_4C)
open_door(OBJ_LASER_4D)
yield
set_object_flag(OBJ_LASER_4A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4D, OBJFLAG_DOOR_KEEPOPEN)
assign_sound(0x043f, CHANNEL_7)
play_sound_from_entity(CHANNEL_7, OBJ_LASERSWITCH4, 0x012c, 0x0190, 0x00)
mute_channel(CHANNEL_3)
@ -921,22 +921,22 @@ u8 func1007_init_lasers[] = {
open_door(OBJ_LASER_3D)
open_door(OBJ_LASER_4D)
yield
set_object_flag(OBJ_LASER_1A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4A, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4B, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4C, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_2D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_3D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_4D, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_LASER_1A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4A, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4B, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4C, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_1D, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_2D, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_3D, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_LASER_4D, OBJFLAG_DOOR_KEEPOPEN)
set_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET3_DISABLED)

View File

@ -2780,7 +2780,7 @@ u8 func100e_training_unlockables[] = {
label(0x06) \
if_door_state(door, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2f) \
open_door(door) \
set_object_flag(door, OBJFLAG_DOORKEEPOPEN) \
set_object_flag(door, OBJFLAG_DOOR_KEEPOPEN) \
restart_timer \
\
beginloop(0x08) \
@ -2832,7 +2832,7 @@ u8 func1012_cloak_doorproxy[] = {
label(0x06)
if_door_state(0x40, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2f)
open_door(0x40)
set_object_flag(0x40, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x40, OBJFLAG_DOOR_KEEPOPEN)
restart_timer
beginloop(0x08)
@ -2860,7 +2860,7 @@ u8 func101b_ir_door[] = {
label(0x06)
if_door_state(0x37, (DOORSTATE_OPEN | DOORSTATE_OPENING), /*goto*/ 0x2f)
open_door(0x37)
set_object_flag(0x37, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x37, OBJFLAG_DOOR_KEEPOPEN)
restart_timer
beginloop(0x08)

View File

@ -903,7 +903,7 @@ u8 func0c01_outro[] = {
open_door(0x51)
restart_timer
yield
set_object_flag(0x51, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x51, OBJFLAG_DOOR_KEEPOPEN)
set_cutscene_weapon(CHR_P1P2, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_P1P2, WEAPON_AR34, WEAPON_NONE)

View File

@ -633,10 +633,10 @@ u8 func1004_check_hangar_doors_opened[] = {
open_door(OBJ_HANGARDOOR2)
open_door(OBJ_HANGARDOOR3)
open_door(OBJ_HANGARDOOR4)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOOR_KEEPOPEN)
restart_timer
beginloop(0x09)
@ -1296,8 +1296,8 @@ u8 func1008_hangar_lifts[] = {
// Deactivate lift and open door
label(0x66)
set_object_flag(0x39, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x3a, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x39, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x3a, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
open_door(0x39)
open_door(0x3a)
@ -1329,8 +1329,8 @@ u8 func1008_hangar_lifts[] = {
// hence the 5 second wait if entered as soon as the door opens.
label(0x2c)
set_chr_hiddenflag(CHR_BOND, CHRHFLAG_TRIGGER_BUDDY_WARP)
unset_object_flag(0x39, OBJFLAG_DOORKEEPOPEN)
unset_object_flag(0x3a, OBJFLAG_DOORKEEPOPEN)
unset_object_flag(0x39, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(0x3a, OBJFLAG_DOOR_KEEPOPEN)
unset_object_flag(OBJ_HANGARLIFT_JO, OBJFLAG_DEACTIVATED)
// Wait until Y coordinate >= 400
@ -2904,10 +2904,10 @@ u8 func0c01_outro[] = {
open_door(OBJ_HANGARDOOR2)
open_door(OBJ_HANGARDOOR3)
open_door(OBJ_HANGARDOOR4)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOORKEEPOPEN)
set_object_flag(OBJ_HANGARDOOR1, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_DOOR_KEEPOPEN)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)

View File

@ -2345,13 +2345,13 @@ u8 func1013_bunker_lasers[] = {
// SA and PA
label(0x03)
set_object_flag(0x1e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x1f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x20, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x21, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x22, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x23, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x24, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x1e, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x1f, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x20, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x21, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x22, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x23, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x24, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x1e)
open_door(0x1f)
open_door(0x20)
@ -2359,13 +2359,13 @@ u8 func1013_bunker_lasers[] = {
open_door(0x22)
open_door(0x23)
open_door(0x24)
set_object_flag(0x1e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x1f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x20, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x21, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x22, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x23, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x24, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x1e, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x1f, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x20, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x21, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x22, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x23, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x24, OBJFLAG_DOOR_KEEPOPEN)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_EXPLOSIVES_PLACED, TRUE, /*goto*/ 0x09)

View File

@ -1437,7 +1437,7 @@ u8 func1003_powernode1[] = {
set_object_health(OBJ_POWERNODE1, 0)
set_object_flag(OBJ_POWERNODE1, OBJFLAG_INVINCIBLE)
open_door(0x03)
set_object_flag(0x03, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x03, OBJFLAG_DOOR_KEEPOPEN)
goto_first(0x04)
label(0x2e)
@ -1457,7 +1457,7 @@ u8 func1004_powernode2[] = {
set_object_health(OBJ_POWERNODE2, 0)
set_object_flag(OBJ_POWERNODE2, OBJFLAG_INVINCIBLE)
open_door(0x04)
set_object_flag(0x04, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x04, OBJFLAG_DOOR_KEEPOPEN)
goto_first(0x04)
label(0x2e)
@ -1477,7 +1477,7 @@ u8 func1005_powernode3[] = {
set_object_flag(OBJ_POWERNODE3, OBJFLAG_INVINCIBLE)
set_object_health(OBJ_POWERNODE3, 0)
open_door(0x05)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x05, OBJFLAG_DOOR_KEEPOPEN)
goto_first(0x04)
label(0x2e)
@ -3973,7 +3973,7 @@ u8 func040a_check_pa_canisters_destroyed[] = {
// Both canisters destroyed
label(0x2e)
set_object_flag(0x0f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x0f, OBJFLAG_DOOR_KEEPOPEN)
set_lights_state(0x00bc, 0x03, 0xff, 0x0a, 0x78)
beginloop(0x08)
@ -4562,11 +4562,11 @@ u8 func102e_open_powernode_doors_on_agent[] = {
// Agent
label(0x08)
open_door(0x03)
set_object_flag(0x03, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x03, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x04)
set_object_flag(0x04, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x04, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x05)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x05, OBJFLAG_DOOR_KEEPOPEN)
label(0x2e)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist

View File

@ -1298,8 +1298,8 @@ u8 func0413_jonathan_hangar[] = {
set_stage_flag(STAGEFLAG_INNER_DOOR_OPENING)
open_door(0x2c)
open_door(0x2d)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
show_hudmsg(CHR_P1P2, L_TRA(39)) // "Inner hangar door is opening."
label(0x32)
@ -1324,8 +1324,8 @@ u8 func0413_jonathan_hangar[] = {
set_stage_flag(STAGEFLAG_OUTER_DOOR_OPENING)
open_door(0x2e)
open_door(0x2f)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
show_hudmsg(CHR_P1P2, L_TRA(37)) // "Outer hangar door is opening."
beginloop(0x20)
@ -2052,8 +2052,8 @@ u8 func100f_terminals[] = {
label(0x32)
open_door(0x2c)
open_door(0x2d)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
reloop(0x04)
// Terminal 2
@ -2073,8 +2073,8 @@ u8 func100f_terminals[] = {
label(0x32)
open_door(0x2e)
open_door(0x2f)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
reloop(0x04)
// Wait 2 seconds
@ -2240,7 +2240,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x0a, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x0a, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x0a)
reloop(0x04)
@ -2250,7 +2250,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x0b, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x0b, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x0b)
reloop(0x04)
@ -2260,8 +2260,8 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x08, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x09, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x08, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x09, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x08)
open_door(0x09)
reloop(0x04)
@ -2272,7 +2272,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x0c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x0c, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x0c)
reloop(0x04)
@ -2282,7 +2282,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x05, OBJFLAG_DOOR_KEEPOPEN)
open_door(0x05)
endloop(0x04)
@ -2996,8 +2996,8 @@ u8 func101b_gas_sound[] = {
u8 func0c02_outro[] = {
open_door(0x2c)
open_door(0x2e)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
label(0x32)
set_chr_chrflag(CHR_BOND, CHRCFLAG_HIDDEN)
set_chr_chrflag(CHR_COOP, CHRCFLAG_HIDDEN)
@ -3548,8 +3548,8 @@ u8 func102e_keep_hangar_doors_open[] = {
label(0x32)
open_door(0x2c)
open_door(0x2d)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2c, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOOR_KEEPOPEN)
reloop(0x04)
// Door 2 closing
@ -3560,8 +3560,8 @@ u8 func102e_keep_hangar_doors_open[] = {
label(0x32)
open_door(0x2e)
open_door(0x2f)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2e, OBJFLAG_DOOR_KEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOOR_KEEPOPEN)
endloop(0x04)
// Terminal destroyed

View File

@ -19798,7 +19798,7 @@ glabel var7f1aa43c
// // If door should autoclose this tick
// if (door->lastopen60 > 0
// && door->mode == DOORMODE_IDLE
// && (door->base.flags & OBJFLAG_DOORKEEPOPEN) == 0
// && (door->base.flags & OBJFLAG_DOOR_KEEPOPEN) == 0
// && door->lastopen60 < g_Vars.lvframe60 - door->autoclosetime) {
// // 004
// // Check if any sibling has DOORFLAG_0010
@ -20138,7 +20138,7 @@ glabel var7f1aa44c
);
GLOBAL_ASM(
glabel func0f07766c
glabel platformDisplaceProps
.late_rodata
glabel var7f1aa450
.word 0x3d3a5e30
@ -20579,7 +20579,7 @@ glabel liftTick
/* f077cd4: 24060100 */ addiu $a2,$zero,0x100
/* f077cd8: e7a40244 */ swc1 $f4,0x244($sp)
/* f077cdc: c6260010 */ lwc1 $f6,0x10($s1)
/* f077ce0: 0c0099c7 */ jal func0002671c
/* f077ce0: 0c0099c7 */ jal platformGetRidingProps
/* f077ce4: e7a60248 */ swc1 $f6,0x248($sp)
/* f077ce8: 44807000 */ mtc1 $zero,$f14
/* f077cec: c6080074 */ lwc1 $f8,0x74($s0)
@ -20790,7 +20790,7 @@ glabel liftTick
/* f077ffc: 02202025 */ or $a0,$s1,$zero
/* f078000: 27a5003c */ addiu $a1,$sp,0x3c
/* f078004: 27a60240 */ addiu $a2,$sp,0x240
/* f078008: 0fc1dd9b */ jal func0f07766c
/* f078008: 0fc1dd9b */ jal platformDisplaceProps
/* f07800c: 8fa70034 */ lw $a3,0x34($sp)
/* f078010: 1000001c */ b .L0f078084
/* f078014: 8fbf0024 */ lw $ra,0x24($sp)
@ -20833,6 +20833,150 @@ glabel liftTick
/* f078090: 27bd0340 */ addiu $sp,$sp,0x340
);
// Mismatch because goal loads xdiff earlier for multiply with frac.
//void liftTick(struct prop *prop)
//{
// struct liftobj *lift = (struct liftobj *)prop->obj;
// struct defaultobj *obj = prop->obj;
// struct doorobj *door; // sp820
// struct pad padcur; // sp736
// struct pad padaim; // sp652
// f32 segdist; // sp648
// f32 xdiff; // sp644
// f32 ydiff; // sp640
// f32 zdiff; // sp636
// struct coord curcentre; // sp624
// f32 frac;
// s32 move; // sp616
// struct coord newpos; // sp604
// s16 newrooms[8]; // sp588
// struct coord prevpos; // sp576
// f32 prevdist; // sp572
// s16 propnums[256]; // sp60
// s32 stop;
//
// lift->prevpos.x = prop->pos.x;
// lift->prevpos.y = prop->pos.y;
// lift->prevpos.z = prop->pos.z;
//
// // c50
// if (lift->levelaim != lift->levelcur) {
// // c58
// // Lift is not at the desired level. So try to move, but not if the lift
// // is disabled or if the door needs to be closed first.
// move = true;
//
// if (obj->flags & OBJFLAG_DEACTIVATED) {
// move = false;
// } else {
// // c84
// if (lift->doors[lift->levelcur] && !doorIsClosed(lift->doors[lift->levelcur])) {
// doorActivate(lift->doors[lift->levelcur], DOORMODE_CLOSING);
// move = false;
// }
// }
//
// // cb8
// if (move) {
// prevpos.x = prop->pos.x;
// prevpos.y = prop->pos.y;
// prevpos.z = prop->pos.z;
//
// platformGetRidingProps(prop, propnums, sizeof(propnums));
//
// if (lift->dist == 0 && lift->speed == 0) {
// // d18
// func0f08d784(lift->soundtype, lift->base.prop);
//
// if (obj->flags & OBJFLAG_LIFT_TRIGGERDISABLE) {
// obj->flags &= ~OBJFLAG_LIFT_TRIGGERDISABLE;
// obj->flags |= OBJFLAG_DEACTIVATED;
// }
// }
//
// padGetCentre(lift->pads[lift->levelcur], &curcentre);
// padUnpack(lift->pads[lift->levelcur], PADFIELD_POS, &padcur);
// padUnpack(lift->pads[lift->levelaim], PADFIELD_POS, &padaim);
//
// xdiff = padaim.pos.x - padcur.pos.x;
// ydiff = padaim.pos.y - padcur.pos.y;
// zdiff = padaim.pos.z - padcur.pos.z;
//
// segdist = sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff);
//
// prevdist = lift->dist;
//
// // e0c
// func0f06d90c(&lift->dist, segdist, &lift->speed, lift->accel, lift->accel, lift->maxspeed);
//
// // If arriving at the destination, set the distance explicitly
// if (lift->speed < 1 && lift->speed > -1) {
// if (prevdist < segdist && lift->dist >= segdist) {
// lift->dist = segdist;
// } else if (prevdist > 0 && lift->dist <= 0) {
// lift->dist = 0;
// }
// }
//
// // eb0
// frac = segdist == 0 ? 0 : lift->dist / segdist;
//
// newpos.x = curcentre.x + xdiff * frac;
// newpos.y = curcentre.y + ydiff * frac;
// newpos.z = curcentre.z + zdiff * frac;
//
// if (segdist == lift->dist) {
// // f18
// lift->dist = 0;
// lift->speed = 0;
// lift->levelcur = lift->levelaim;
//
// func0f08dd44(lift->soundtype, lift->base.prop);
//
// if (obj->flags & OBJFLAG_LIFT_TRIGGERDISABLE) {
// obj->flags &= ~OBJFLAG_LIFT_TRIGGERDISABLE;
// obj->flags |= OBJFLAG_DEACTIVATED;
// }
//
// door = lift->doors[lift->levelcur];
//
// if (door && door->keyflags == 0) {
// doorActivate(door, DOORMODE_OPENING);
// }
// }
//
// func0f065e74(&prop->pos, prop->rooms, &newpos, newrooms);
//
// prop->pos.x = newpos.x;
// prop->pos.y = newpos.y;
// prop->pos.z = newpos.z;
//
// func0f065c44(prop);
// roomsCopy(newrooms, prop->rooms);
// func0f069c70(obj, true, true);
// func0f070f08(lift, lift->levelcur == lift->levelaim);
// platformDisplaceProps(prop, propnums, &prevpos, &prop->pos);
// }
// } else {
// // 018
// // Lift is at the aim stop
// door = lift->doors[lift->levelcur];
//
// if (!door || (doorIsClosed(door) && door->keyflags == 0)) {
// // Find next stop
// // 040
// stop = lift->levelaim;
//
// do {
// // 048
// stop = (stop + 1) % 4;
// } while (lift->pads[stop] < 0);
//
// liftGoToStop(lift, stop);
// }
// }
//}
GLOBAL_ASM(
glabel escalatorTick
/* f078094: 27bdfda0 */ addiu $sp,$sp,-608
@ -20923,7 +21067,7 @@ glabel escalatorTick
/* f0781d4: c6040010 */ lwc1 $f4,0x10($s0)
/* f0781d8: afa90030 */ sw $t1,0x30($sp)
/* f0781dc: afa7025c */ sw $a3,0x25c($sp)
/* f0781e0: 0c0099c7 */ jal func0002671c
/* f0781e0: 0c0099c7 */ jal platformGetRidingProps
/* f0781e4: e7a4023c */ swc1 $f4,0x23c($sp)
/* f0781e8: 8fa7025c */ lw $a3,0x25c($sp)
/* f0781ec: c6080008 */ lwc1 $f8,0x8($s0)
@ -20970,7 +21114,7 @@ glabel escalatorTick
/* f078284: 27a50034 */ addiu $a1,$sp,0x34
/* f078288: 15200003 */ bnez $t1,.L0f078298
/* f07828c: 27a60234 */ addiu $a2,$sp,0x234
/* f078290: 0fc1dd9b */ jal func0f07766c
/* f078290: 0fc1dd9b */ jal platformDisplaceProps
/* f078294: 26070008 */ addiu $a3,$s0,0x8
.L0f078298:
/* f078298: 8fbf001c */ lw $ra,0x1c($sp)
@ -27584,7 +27728,7 @@ void hoverbikeTick(struct prop *prop, bool arg1)
func0f0714b8(&obj->base, &obj->hov);
}
if (obj->base.flags & OBJFLAG_DOORKEEPOPEN) {
if (obj->base.flags & OBJFLAG_DOOR_KEEPOPEN) {
func0f072adc(obj, 0, 0, 0);
}
}
@ -38011,7 +38155,7 @@ s32 weaponGetPickupAmmoQty(struct weaponobj *weapon)
return 1;
}
if (weapon->base.flags & OBJFLAG_DOORKEEPOPEN) {
if (weapon->base.flags & OBJFLAG_DOOR_KEEPOPEN) {
return 0;
}
@ -44580,7 +44724,7 @@ void func0f08df10(s32 soundtype, struct prop *prop)
void func0f08e0c4(struct doorobj *door)
{
door->base.flags &= ~OBJFLAG_DOORKEEPOPEN;
door->base.flags &= ~OBJFLAG_DOOR_KEEPOPEN;
door->base.hidden |= OBJHFLAG_00000200;
func0f08d784(door->soundtype, door->base.prop);
@ -44606,7 +44750,7 @@ void func0f08e0c4(struct doorobj *door)
void func0f08e1a0(struct doorobj *door)
{
door->base.flags &= ~OBJFLAG_DOORKEEPOPEN;
door->base.flags &= ~OBJFLAG_DOOR_KEEPOPEN;
func0f08daa8(door->soundtype, door->base.prop);

View File

@ -1909,38 +1909,39 @@
#define NUM_WEAPONS 94
// obj->flags
#define OBJFLAG_00000001 0x00000001 // Editor: "Fall to Ground"
#define OBJFLAG_00000002 0x00000002 // Editor: "In Air Rotated 90 Deg Upside-Down"
#define OBJFLAG_00000004 0x00000004 // Editor: "In Air Upside-Down"
#define OBJFLAG_00000008 0x00000008 // Editor: "In Air"
#define OBJFLAG_00000010 0x00000010 // Editor: "Scale to Pad Bounds"
#define OBJFLAG_00000020 0x00000020 // Editor: "X to Pad Bounds"
#define OBJFLAG_00000040 0x00000040 // Editor: "Y to Pad Bounds"
#define OBJFLAG_00000080 0x00000080 // Editor: "Z to Pad Bounds"
#define OBJFLAG_00000100 0x00000100 // G5 mines, Air Base brown door, AF1 grate and escape door, Defense shuttle, Ruins mines, MBR lift door. Editor suggests "Force Collisions" but this seems wrong
#define OBJFLAG_00000200 0x00000200 // Editor: "Special Environment Mapping"
#define OBJFLAG_ILLUMINATED 0x00000400
#define OBJFLAG_00000800 0x00000800 // Editor: "Free Standing Glass"
#define OBJFLAG_00001000 0x00001000 // Editor: "Absolute Position"
#define OBJFLAG_00002000 0x00002000 // AF1 commhubs. Editor suggests "Weapon Not Dropped"
#define OBJFLAG_00004000 0x00004000 // Editor: "Assigned to Actor"
#define OBJFLAG_00008000 0x00008000 // Editor: "Embedded Object"
#define OBJFLAG_00010000 0x00010000 // Not used in scripts
#define OBJFLAG_INVINCIBLE 0x00020000
#define OBJFLAG_COLLECTABLE 0x00040000
#define OBJFLAG_00080000 0x00080000 // Thrown laptop?
#define OBJFLAG_UNCOLLECTABLE 0x00100000
#define OBJFLAG_00200000 0x00200000 // Editor: "Bounce and Destroy If Shot"
#define OBJFLAG_00400000 0x00400000 // Not used in scripts
#define OBJFLAG_00800000 0x00800000 // Not used in scripts
#define OBJFLAG_01000000 0x01000000 // Editor: "Embedded Object"
#define OBJFLAG_CANNOT_ACTIVATE 0x02000000 // Makes it do nothing if player presses B on object. Used mostly for doors.
#define OBJFLAG_04000000 0x04000000 // Editor: "AI Sees Through Door/Object"
#define OBJFLAG_08000000 0x08000000 // Not used in scripts
#define OBJFLAG_DEACTIVATED 0x10000000
#define OBJFLAG_20000000 0x20000000 // Editor: "Door Opens Backwards/Special Function/Conceal Weapon"
#define OBJFLAG_DOORKEEPOPEN 0x40000000 // Editor: "Door open by default/Empty weapon"
#define OBJFLAG_CHOPPER_INACTIVE 0x80000000 // Or lift disabled
#define OBJFLAG_00000001 0x00000001 // Editor: "Fall to Ground"
#define OBJFLAG_00000002 0x00000002 // Editor: "In Air Rotated 90 Deg Upside-Down"
#define OBJFLAG_00000004 0x00000004 // Editor: "In Air Upside-Down"
#define OBJFLAG_00000008 0x00000008 // Editor: "In Air"
#define OBJFLAG_00000010 0x00000010 // Editor: "Scale to Pad Bounds"
#define OBJFLAG_00000020 0x00000020 // Editor: "X to Pad Bounds"
#define OBJFLAG_00000040 0x00000040 // Editor: "Y to Pad Bounds"
#define OBJFLAG_00000080 0x00000080 // Editor: "Z to Pad Bounds"
#define OBJFLAG_00000100 0x00000100 // G5 mines, Air Base brown door, AF1 grate and escape door, Defense shuttle, Ruins mines, MBR lift door. Editor suggests "Force Collisions" but this seems wrong
#define OBJFLAG_00000200 0x00000200 // Editor: "Special Environment Mapping"
#define OBJFLAG_ILLUMINATED 0x00000400
#define OBJFLAG_00000800 0x00000800 // Editor: "Free Standing Glass"
#define OBJFLAG_00001000 0x00001000 // Editor: "Absolute Position"
#define OBJFLAG_00002000 0x00002000 // AF1 commhubs. Editor suggests "Weapon Not Dropped"
#define OBJFLAG_00004000 0x00004000 // Editor: "Assigned to Actor"
#define OBJFLAG_00008000 0x00008000 // Editor: "Embedded Object"
#define OBJFLAG_00010000 0x00010000 // Not used in scripts
#define OBJFLAG_INVINCIBLE 0x00020000
#define OBJFLAG_COLLECTABLE 0x00040000
#define OBJFLAG_00080000 0x00080000 // Thrown laptop?
#define OBJFLAG_UNCOLLECTABLE 0x00100000
#define OBJFLAG_00200000 0x00200000 // Editor: "Bounce and Destroy If Shot"
#define OBJFLAG_00400000 0x00400000 // Not used in scripts
#define OBJFLAG_00800000 0x00800000 // Not used in scripts
#define OBJFLAG_01000000 0x01000000 // Editor: "Embedded Object"
#define OBJFLAG_CANNOT_ACTIVATE 0x02000000 // Makes it do nothing if player presses B on object. Used mostly for doors.
#define OBJFLAG_04000000 0x04000000 // Editor: "AI Sees Through Door/Object"
#define OBJFLAG_08000000 0x08000000 // Not used in scripts
#define OBJFLAG_DEACTIVATED 0x10000000
#define OBJFLAG_20000000 0x20000000 // Editor: "Door Opens Backwards/Special Function/Conceal Weapon"
#define OBJFLAG_DOOR_KEEPOPEN 0x40000000 // Editor: "Door open by default/Empty weapon"
#define OBJFLAG_LIFT_TRIGGERDISABLE 0x40000000
#define OBJFLAG_CHOPPER_INACTIVE 0x80000000 // Or lift disabled
// obj->flags2
#define OBJFLAG2_00000001 0x00000001 // Used only in CI Training

View File

@ -129,7 +129,7 @@ u32 func0f070ca0(void);
void liftActivate(struct prop *prop, u8 liftnum);
struct prop *liftFindByPad(s16 padnum);
u32 func0f070eac(void);
void func0f070f08(struct liftobj *lift, u32 arg0);
void func0f070f08(struct liftobj *lift, bool arg0);
void liftGoToStop(struct liftobj *lift, s32 stopnum);
u32 func0f071360(void);
void func0f0713e4(struct defaultobj *obj, struct hov *hov, struct coord *coord, s16 *rooms, f32 *matrix);
@ -150,7 +150,7 @@ u32 func0f073c6c(struct defaultobj *obj, bool *arg1);
void doorTick(struct prop *doorprop);
void func0f07731c(struct prop *door, s32 playercount);
u32 func0f077448(void);
u32 func0f07766c(void);
void platformDisplaceProps(struct prop *platform, s16 *propnums, struct coord *prevpos, struct coord *newpos);
void liftTick(struct prop *lift);
void escalatorTick(struct prop *escalator);
void cameraTick(struct prop *camera);

View File

@ -57,7 +57,7 @@ u32 func000263e4(void);
u32 func00026520(void);
u32 func00026654(void);
u32 func000266a4(void);
u32 func0002671c(void);
void platformGetRidingProps(struct prop *platform, s16 *propnums, u32 len);
u32 func00026a04(void);
u32 func00026e7c(void);
u32 func0002709c(void);

View File

@ -1196,9 +1196,9 @@ struct liftobj { // objtype 30
/*0x64*/ struct doorobj *doors[4];
/*0x74*/ f32 dist;
/*0x78*/ f32 speed;
/*0x7c*/ u32 accel;
/*0x80*/ u32 maxspeed;
/*0x84*/ u8 soundtype;
/*0x7c*/ f32 accel;
/*0x80*/ f32 maxspeed;
/*0x84*/ s8 soundtype;
/*0x85*/ s8 levelcur;
/*0x86*/ s8 levelaim;
/*0x88*/ struct coord prevpos;

View File

@ -3698,7 +3698,7 @@ glabel func000266a4
);
GLOBAL_ASM(
glabel func0002671c
glabel platformGetRidingProps
/* 2671c: 27bdfd88 */ addiu $sp,$sp,-632
/* 26720: afbf003c */ sw $ra,0x3c($sp)
/* 26724: afa5027c */ sw $a1,0x27c($sp)