Attempt to decompile doorTick

This commit is contained in:
Ryan Dwyer
2020-06-06 17:45:28 +10:00
parent d16796d5d6
commit d5aaeaf5d8
15 changed files with 253 additions and 135 deletions
+1 -1
View File
@@ -3524,7 +3524,7 @@ u8 func1018_safe_switch[] = {
yield
open_door(OBJ_SAFEDOOR)
yield
set_object_flag(OBJ_SAFEDOOR, OBJFLAG_40000000)
set_object_flag(OBJ_SAFEDOOR, OBJFLAG_DOORKEEPOPEN)
unset_object_flag2(OBJ_FLIGHTPLANS, OBJFLAG2_INVISIBLE)
unset_object_flag(OBJ_FLIGHTPLANS, OBJFLAG_UNCOLLECTABLE)
+32 -32
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_40000000)
set_object_flag(OBJ_LASER_1B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1D, OBJFLAG_40000000)
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)
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_40000000)
set_object_flag(OBJ_LASER_2B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2D, OBJFLAG_40000000)
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)
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_40000000)
set_object_flag(OBJ_LASER_3B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3D, OBJFLAG_40000000)
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)
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_40000000)
set_object_flag(OBJ_LASER_4B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4D, OBJFLAG_40000000)
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)
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_40000000)
set_object_flag(OBJ_LASER_2A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4A, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4B, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4C, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_1D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_2D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_3D, OBJFLAG_40000000)
set_object_flag(OBJ_LASER_4D, OBJFLAG_40000000)
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_stage_flag(STAGEFLAG_LASERSET1_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET2_DISABLED)
set_stage_flag(STAGEFLAG_LASERSET3_DISABLED)
+3 -3
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_40000000) \
set_object_flag(door, OBJFLAG_DOORKEEPOPEN) \
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_40000000)
set_object_flag(0x40, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x37, OBJFLAG_DOORKEEPOPEN)
restart_timer
beginloop(0x08)
+1 -1
View File
@@ -903,7 +903,7 @@ u8 func0c01_outro[] = {
open_door(0x51)
restart_timer
yield
set_object_flag(0x51, OBJFLAG_40000000)
set_object_flag(0x51, OBJFLAG_DOORKEEPOPEN)
set_cutscene_weapon(CHR_P1P2, WEAPON_NONE, WEAPON_NONE)
yield
set_cutscene_weapon(CHR_P1P2, WEAPON_AR34, WEAPON_NONE)
+12 -12
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_40000000)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_40000000)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_40000000)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_40000000)
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)
restart_timer
beginloop(0x09)
@@ -1296,8 +1296,8 @@ u8 func1008_hangar_lifts[] = {
// Deactivate lift and open door
label(0x66)
set_object_flag(0x39, OBJFLAG_40000000)
set_object_flag(0x3a, OBJFLAG_40000000)
set_object_flag(0x39, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x3a, OBJFLAG_DOORKEEPOPEN)
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_40000000)
unset_object_flag(0x3a, OBJFLAG_40000000)
unset_object_flag(0x39, OBJFLAG_DOORKEEPOPEN)
unset_object_flag(0x3a, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(OBJ_HANGARDOOR2, OBJFLAG_40000000)
set_object_flag(OBJ_HANGARDOOR3, OBJFLAG_40000000)
set_object_flag(OBJ_HANGARDOOR4, OBJFLAG_40000000)
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)
beginloop(0x08)
if_camera_animating(/*goto*/ 0x2c)
+14 -14
View File
@@ -2345,13 +2345,13 @@ u8 func1013_bunker_lasers[] = {
// SA and PA
label(0x03)
set_object_flag(0x1e, OBJFLAG_40000000)
set_object_flag(0x1f, OBJFLAG_40000000)
set_object_flag(0x20, OBJFLAG_40000000)
set_object_flag(0x21, OBJFLAG_40000000)
set_object_flag(0x22, OBJFLAG_40000000)
set_object_flag(0x23, OBJFLAG_40000000)
set_object_flag(0x24, OBJFLAG_40000000)
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)
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_40000000)
set_object_flag(0x1f, OBJFLAG_40000000)
set_object_flag(0x20, OBJFLAG_40000000)
set_object_flag(0x21, OBJFLAG_40000000)
set_object_flag(0x22, OBJFLAG_40000000)
set_object_flag(0x23, OBJFLAG_40000000)
set_object_flag(0x24, OBJFLAG_40000000)
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)
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_EXPLOSIVES_PLACED, TRUE, /*goto*/ 0x09)
+7 -7
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_40000000)
set_object_flag(0x03, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x04, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x0f, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x03, OBJFLAG_DOORKEEPOPEN)
open_door(0x04)
set_object_flag(0x04, OBJFLAG_40000000)
set_object_flag(0x04, OBJFLAG_DOORKEEPOPEN)
open_door(0x05)
set_object_flag(0x05, OBJFLAG_40000000)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
label(0x2e)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
+20 -20
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_40000000)
set_object_flag(0x2d, OBJFLAG_40000000)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x2f, OBJFLAG_40000000)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x2d, OBJFLAG_40000000)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
reloop(0x04)
// Terminal 2
@@ -2073,8 +2073,8 @@ u8 func100f_terminals[] = {
label(0x32)
open_door(0x2e)
open_door(0x2f)
set_object_flag(0x2e, OBJFLAG_40000000)
set_object_flag(0x2f, OBJFLAG_40000000)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
reloop(0x04)
// Wait 2 seconds
@@ -2240,7 +2240,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x0a, OBJFLAG_40000000)
set_object_flag(0x0a, OBJFLAG_DOORKEEPOPEN)
open_door(0x0a)
reloop(0x04)
@@ -2250,7 +2250,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x0b, OBJFLAG_40000000)
set_object_flag(0x0b, OBJFLAG_DOORKEEPOPEN)
open_door(0x0b)
reloop(0x04)
@@ -2260,8 +2260,8 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x08, OBJFLAG_40000000)
set_object_flag(0x09, OBJFLAG_40000000)
set_object_flag(0x08, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x09, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x0c, OBJFLAG_DOORKEEPOPEN)
open_door(0x0c)
reloop(0x04)
@@ -2282,7 +2282,7 @@ u8 func1012_hoverbike_auto_doors[] = {
reloop(0x04)
label(0x06)
set_object_flag(0x05, OBJFLAG_40000000)
set_object_flag(0x05, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x2d, OBJFLAG_40000000)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x2d, OBJFLAG_40000000)
set_object_flag(0x2c, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2d, OBJFLAG_DOORKEEPOPEN)
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_40000000)
set_object_flag(0x2f, OBJFLAG_40000000)
set_object_flag(0x2e, OBJFLAG_DOORKEEPOPEN)
set_object_flag(0x2f, OBJFLAG_DOORKEEPOPEN)
endloop(0x04)
// Terminal destroyed
+1 -1
View File
@@ -2571,7 +2571,7 @@ bool aiIfDoorState(void)
} else {
pass = (cmd[3] & DOORSTATE_OPEN) != 0;
}
} else if (door->mode == DOORMODE_OPENING || door->mode == DOORMODE_3) {
} else if (door->mode == DOORMODE_OPENING || door->mode == DOORMODE_WAITING) {
pass = (cmd[3] & DOORSTATE_OPENING) != 0;
} else if (door->mode == DOORMODE_CLOSING) {
pass = (cmd[3] & DOORSTATE_CLOSING) != 0;
+1 -1
View File
@@ -199,7 +199,7 @@ u32 var80069bc4 = 0x00000000;
u32 var80069bc8 = 0x00000003;
u32 var80069bcc = 0x00000014;
u32 var80069bd0 = 0x00000078;
u32 var80069bd4 = 0x00000000;
u32 g_DebugDoor = 0;
u32 var80069bd8 = 0x00000000;
u32 var80069bdc = 0xc4bfff5c;
u32 var80069be0 = 0xc3ff8000;
+142 -25
View File
@@ -97,13 +97,6 @@ const char var7f1a9fc4[] = "propobj.c";
const char var7f1a9fd0[] = "kkg";
const char var7f1a9fd4[] = "kkd";
const char var7f1a9fd8[] = "kkp";
const char var7f1a9fdc[] = "debugdoor";
const char var7f1a9fe8[] = "************** RWI : Door Stuck Mate -> Sort it out\n";
const char var7f1aa020[] = "propobj.c";
const char var7f1aa02c[] = "propobj.c";
const char var7f1aa038[] = "propobj.c";
const char var7f1aa044[] = "propobj.c";
const char var7f1aa050[] = "HC: %x - visible\n";
GLOBAL_ASM(
glabel func0f066310
@@ -19235,8 +19228,10 @@ glabel var7f1aa438
/* f076f2c: 27bd0608 */ addiu $sp,$sp,0x608
);
const char var7f1a9fdc[] = "debugdoor";
GLOBAL_ASM(
glabel func0f076f30
glabel doorTick
.late_rodata
glabel var7f1aa43c
.word 0x3e99999a
@@ -19247,16 +19242,16 @@ glabel var7f1aa43c
/* f076f3c: afa40078 */ sw $a0,0x78($sp)
/* f076f40: 8c900004 */ lw $s0,0x4($a0)
/* f076f44: 3c047f1b */ lui $a0,%hi(var7f1a9fdc)
/* f076f48: 3c058007 */ lui $a1,%hi(var80069bd4)
/* f076f48: 3c058007 */ lui $a1,%hi(g_DebugDoor)
/* f076f4c: 8e0f0018 */ lw $t7,0x18($s0)
/* f076f50: 24a59bd4 */ addiu $a1,$a1,%lo(var80069bd4)
/* f076f50: 24a59bd4 */ addiu $a1,$a1,%lo(g_DebugDoor)
/* f076f54: 24849fdc */ addiu $a0,$a0,%lo(var7f1a9fdc)
/* f076f58: afaf0070 */ sw $t7,0x70($sp)
/* f076f5c: c604007c */ lwc1 $f4,0x7c($s0)
/* f076f60: 0c0036cc */ jal func0000db30
/* f076f64: e7a4006c */ swc1 $f4,0x6c($sp)
/* f076f68: 3c028007 */ lui $v0,%hi(var80069bd4)
/* f076f6c: 8c429bd4 */ lw $v0,%lo(var80069bd4)($v0)
/* f076f68: 3c028007 */ lui $v0,%hi(g_DebugDoor)
/* f076f6c: 8c429bd4 */ lw $v0,%lo(g_DebugDoor)($v0)
/* f076f70: 24010001 */ addiu $at,$zero,0x1
/* f076f74: 50400013 */ beqzl $v0,.L0f076fc4
/* f076f78: 8e0200c0 */ lw $v0,0xc0($s0)
@@ -19439,7 +19434,7 @@ glabel var7f1aa43c
/* f0771f0: 55e00004 */ bnezl $t7,.L0f077204
/* f0771f4: 8fb90070 */ lw $t9,0x70($sp)
.L0f0771f8:
/* f0771f8: 0fc23c47 */ jal func0f08f11c
/* f0771f8: 0fc23c47 */ jal doorDoCalc
/* f0771fc: 02002025 */ or $a0,$s0,$zero
/* f077200: 8fb90070 */ lw $t9,0x70($sp)
.L0f077204:
@@ -19518,6 +19513,128 @@ glabel var7f1aa43c
/* f077318: 00000000 */ sll $zero,$zero,0x0
);
// Mismatch because `g_DebugDoor == (u32)doorprop` is swapped,
// and regalloc near 004.
//void doorTick(struct prop *doorprop)
//{
// struct doorobj *door = (struct doorobj *)doorprop->obj;
// struct model *model = door->base.model;
// f32 prevfrac = door->frac;
//
// func0000db30("debugdoor", &g_DebugDoor);
//
// // If g_DebugDoor is set to 1 or to the address of this door,
// // print the distance to the door to console
// if (g_DebugDoor) {
// if (g_DebugDoor == 1 || g_DebugDoor == (u32)doorprop) {
// f32 xdiff = doorprop->pos.x - g_Vars.players[0]->cam_pos.x;
// f32 zdiff = doorprop->pos.z - g_Vars.players[0]->cam_pos.z;
//
// sqrtf(xdiff * xdiff + zdiff * zdiff);
// }
// }
//
// // If door should autoclose this tick
// if (door->lastopen60 > 0
// && door->mode == DOORMODE_IDLE
// && (door->base.flags & OBJFLAG_DOORKEEPOPEN) == 0
// && door->lastopen60 < g_Vars.lvframe60 - door->autoclosetime) {
// // 004
// // Check if any sibling has DOORFLAG_0010
// struct doorobj *loopdoor = door->sibling;
// s32 hasflag = door->doorflags & DOORFLAG_0010;
//
// while (loopdoor && loopdoor != door && !hasflag) {
// hasflag = loopdoor->doorflags & DOORFLAG_0010;
// loopdoor = loopdoor->sibling;
// }
//
// if (hasflag == false) {
// doorActivate(door, DOORMODE_CLOSING);
// } else if (door->doorflags & DOORFLAG_0010) {
// // Check if any sibling has a false return value
// s32 pass = func0f08c040(door) == false;
// struct doorobj *loopdoor = door->sibling;
//
// while (loopdoor && loopdoor != door && !pass) {
// pass = func0f08c040(loopdoor) == false;
// loopdoor = loopdoor->sibling;
// }
//
// if (pass) {
// // One or all siblings is set to keep open?
// struct doorobj *loopdoor = door->sibling;
// door->lastopen60 = g_Vars.lvframe60;
//
// while (loopdoor && loopdoor != door) {
// loopdoor->lastopen60 = g_Vars.lvframe60;
// loopdoor = loopdoor->sibling;
// }
// } else {
// doorActivate(door, DOORMODE_CLOSING);
// }
// }
// }
//
// // If waiting for sibling to close, check for that
// if (door->mode == DOORMODE_WAITING) {
// s32 shouldopen = true;
// struct doorobj *loopdoor = door->sibling;
//
// while (loopdoor && loopdoor != door) {
// if (loopdoor->mode != DOORMODE_IDLE || loopdoor->frac > 0) {
// shouldopen = false;
// }
//
// loopdoor = loopdoor->sibling;
// }
//
// if (shouldopen) {
// doorSetMode(door, DOORMODE_OPENING);
// }
// }
//
// // DOORTYPE_8 is unused - not sure what this does
// if (door->doortype == DOORTYPE_8
// && doorIsClosed(door)
// && func0f0665ac(door)) {
// doorActivateWrapper(doorprop, false);
// }
//
// // Update frac
// if (door->lastcalc60 < g_Vars.lvframe60 || g_Vars.lvupdate240 == 0) {
// doorDoCalc(door);
// }
//
// // Consider playing a sound effect
// if (model->unk08->unk04 == &stagethinglist_20ec8) {
// f32 soundpoint = door->maxfrac * 0.3f;
//
// if (door->frac > soundpoint) {
// if (prevfrac <= soundpoint) {
// // frac increased past the soundpoint
// // Sounds like a door closing?
// func0f0939f8(NULL, doorprop, 0x8014, -1,
// -1, 0, 0, 12, 0, -1, 0, -1, -1, -1, -1);
// }
// } else {
// if (prevfrac > soundpoint) {
// // frac decreased past the soundpoint
// // Also sounds like a door closing
// func0f0939f8(NULL, doorprop, 0x8015, -1,
// -1, 0, 0, 12, 0, -1, 0, -1, -1, -1, -1);
// }
// }
// }
//}
const char var7f1a9fe8[] = "************** RWI : Door Stuck Mate -> Sort it out\n";
const char var7f1aa020[] = "propobj.c";
const char var7f1aa02c[] = "propobj.c";
const char var7f1aa038[] = "propobj.c";
const char var7f1aa044[] = "propobj.c";
const char var7f1aa050[] = "HC: %x - visible\n";
GLOBAL_ASM(
glabel func0f07731c
/* f07731c: 27bdffd0 */ addiu $sp,$sp,-48
@@ -28581,7 +28698,7 @@ glabel var7f1aa6ec
/* f07f1dc: 24010001 */ addiu $at,$zero,0x1
/* f07f1e0: 54410006 */ bnel $v0,$at,.L0f07f1fc
/* f07f1e4: 24010006 */ addiu $at,$zero,0x6
/* f07f1e8: 0fc1dbcc */ jal func0f076f30
/* f07f1e8: 0fc1dbcc */ jal doorTick
/* f07f1ec: 02202025 */ or $a0,$s1,$zero
/* f07f1f0: 10000067 */ beqz $zero,.L0f07f390
/* f07f1f4: 92020003 */ lbu $v0,0x3($s0)
@@ -38557,7 +38674,7 @@ s32 weaponGetPickupAmmoQty(struct weaponobj *weapon)
return 1;
}
if (weapon->base.flags & OBJFLAG_40000000) {
if (weapon->base.flags & OBJFLAG_DOORKEEPOPEN) {
return 0;
}
@@ -45126,7 +45243,7 @@ void func0f08df10(s32 soundtype, struct prop *prop)
void func0f08e0c4(struct doorobj *door)
{
door->base.flags &= ~OBJFLAG_40000000;
door->base.flags &= ~OBJFLAG_DOORKEEPOPEN;
door->base.hidden |= OBJHFLAG_00000200;
func0f08d784(door->soundtype, door->base.prop);
@@ -45152,7 +45269,7 @@ void func0f08e0c4(struct doorobj *door)
void func0f08e1a0(struct doorobj *door)
{
door->base.flags &= ~OBJFLAG_40000000;
door->base.flags &= ~OBJFLAG_DOORKEEPOPEN;
func0f08daa8(door->soundtype, door->base.prop);
@@ -45232,7 +45349,7 @@ void func0f08e2ac(struct doorobj *door)
void doorSetMode(struct doorobj *door, s32 newmode)
{
if (newmode == DOORMODE_OPENING) {
if (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_3) {
if (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_WAITING) {
func0f08e0c4(door);
}
@@ -45242,9 +45359,9 @@ void doorSetMode(struct doorobj *door, s32 newmode)
func0f08e1a0(door);
}
if ((door->mode != DOORMODE_IDLE && door->mode != DOORMODE_3) || door->frac > 0) {
if ((door->mode != DOORMODE_IDLE && door->mode != DOORMODE_WAITING) || door->frac > 0) {
door->mode = newmode;
} else if (door->mode == DOORMODE_3) {
} else if (door->mode == DOORMODE_WAITING) {
door->mode = DOORMODE_IDLE;
}
} else {
@@ -45262,7 +45379,7 @@ void doorActivate(struct doorobj *door, s32 newmode)
siblingmode = DOORMODE_CLOSING;
if (door->mode == DOORMODE_IDLE) {
newmode = DOORMODE_3;
newmode = DOORMODE_WAITING;
}
}
@@ -45278,12 +45395,12 @@ void doorActivate(struct doorobj *door, s32 newmode)
s32 doorIsClosed(struct doorobj *door)
{
return (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_3) && door->frac <= 0;
return (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_WAITING) && door->frac <= 0;
}
s32 doorIsOpen(struct doorobj *door)
{
return (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_3) && door->frac >= door->maxfrac;
return (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_WAITING) && door->frac >= door->maxfrac;
}
GLOBAL_ASM(
@@ -46203,7 +46320,7 @@ glabel func0f08ed74
//}
GLOBAL_ASM(
glabel func0f08f11c
glabel doorDoCalc
/* f08f11c: 27bdffc8 */ addiu $sp,$sp,-56
/* f08f120: afb30028 */ sw $s3,0x28($sp)
/* f08f124: afb20024 */ sw $s2,0x24($sp)
@@ -47212,7 +47329,7 @@ void doorActivateWrapper(struct prop *doorprop, bool arg1)
struct doorobj *door = doorprop->door;
if (func0f066310(doorprop, arg1) == 0) {
if (door->mode == DOORMODE_OPENING || door->mode == DOORMODE_3) {
if (door->mode == DOORMODE_OPENING || door->mode == DOORMODE_WAITING) {
doorActivate(door, DOORMODE_CLOSING);
} else if (door->mode == DOORMODE_CLOSING) {
doorActivate(door, DOORMODE_OPENING);
+5 -5
View File
@@ -516,10 +516,10 @@
#define DOORFLAG_0800 0x0800 // Non-CI lasers, and floor grates
#define DOORFLAG_4000 0x4000 // Two Investigation vertical doors after lasers
#define DOORMODE_IDLE 0
#define DOORMODE_OPENING 1
#define DOORMODE_CLOSING 2
#define DOORMODE_3 3
#define DOORMODE_IDLE 0
#define DOORMODE_OPENING 1
#define DOORMODE_CLOSING 2
#define DOORMODE_WAITING 3 // Waiting for sibling door to close. Eg. Dam gates in GE
// For AI commands - bitwise ORable
#define DOORSTATE_CLOSED 1
@@ -1902,7 +1902,7 @@
#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_40000000 0x40000000 // Editor: "Door open by default/Empty weapon"
#define OBJFLAG_DOORKEEPOPEN 0x40000000 // Editor: "Door open by default/Empty weapon"
#define OBJFLAG_INTERCEPTOR_DISABLED 0x80000000 // Or lift disabled
// obj->flags2
+1 -1
View File
@@ -68,7 +68,7 @@ extern u32 var80069bbc;
extern u32 var80069bc8;
extern u32 var80069bcc;
extern u32 var80069bd0;
extern u32 var80069bd4;
extern u32 g_DebugDoor;
extern u32 var80069bd8;
extern u32 var80069c48;
extern u32 var80069cc4;
+4 -4
View File
@@ -15,7 +15,7 @@ void countdownTimerSetValue(f32 frames);
void countdownTimerSetVisible(u32 flag, bool show);
void countdownTimerTick(void);
bool func0f066310(struct prop *doorprop, bool arg1);
u32 func0f0665ac(void);
bool func0f0665ac(struct doorobj *door);
u32 func0f066640(void);
u32 func0f0666cc(void);
u32 func0f0667ac(void);
@@ -147,7 +147,7 @@ u32 func0f0732d4(void);
u32 func0f073478(void);
u32 func0f073ae8(void);
u32 func0f073c6c(void);
u32 func0f076f30(void);
void doorTick(struct prop *doorprop);
u32 func0f07731c(void);
u32 func0f077448(void);
u32 func0f07766c(void);
@@ -286,7 +286,7 @@ bool func0f08bd00(struct prop *playerprop, struct prop *doorprop);
u32 func0f08bdd4(void);
u32 func0f08be80(void);
u32 func0f08bf78(void);
u32 func0f08c040(void);
s32 func0f08c040(struct doorobj *door);
void func0f08c190(void);
u32 func0f08c424(void);
u32 func0f08c484(void);
@@ -317,7 +317,7 @@ u32 func0f08e8ac(void);
bool func0f08e9e4(struct coord *arg);
void func0f08ea50(struct doorobj *door);
bool func0f08ed74(struct doorobj *door);
u32 func0f08f11c(void);
void doorDoCalc(struct doorobj *door);
u32 func0f08f538(void);
u32 func0f08f604(void);
u32 func0f08f968(void);
+9 -8
View File
@@ -125,12 +125,19 @@ struct anim {
/*0x88*/ u32 animscale;
};
struct stagethinglist {
u16 stage;
u16 numthings;
u16 *things;
};
struct model08_00 {
u16 unk00;
};
struct model08 {
struct model08_00 *unk00;
struct stagethinglist *unk04;
};
struct model10 {
@@ -887,7 +894,7 @@ struct doorobj { // objtype 0x01
/*0x70*/ u16 doorflags;
/*0x72*/ u16 doortype;
/*0x74*/ u32 keyflags;
/*0x78*/ u32 autoclosetime;
/*0x78*/ s32 autoclosetime;
/*0x7c*/ f32 frac;
/*0x80*/ f32 fracspeed;
/*0x84*/ s8 mode;
@@ -906,7 +913,7 @@ struct doorobj { // objtype 0x01
/*0xb4*/ u32 unkb4;
/*0xb8*/ u32 unkb8;
/*0xbc*/ struct doorobj *sibling;
/*0xc0*/ u32 lastopen60;
/*0xc0*/ s32 lastopen60;
/*0xc4*/ s16 portal;
/*0xc6*/ s8 soundtype;
/*0xc7*/ s8 fadetime60;
@@ -2970,12 +2977,6 @@ struct menu_dialog {
struct menu_dialog *nextsibling;
};
struct stagethinglist {
u16 stage;
u16 numthings;
u16 *things;
};
struct twowords {
u32 unk00;
u32 unk04;