diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 41cf33f9b..5fecb6991 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -532,102 +532,6 @@ const u32 var7f1a93d4[] = {0x7f049b30}; const u32 var7f1a93d8[] = {0x7f049a14}; // -const u32 var7f1a93dc[] = {0x3c888889}; -const u32 var7f1a93e0[] = {0x3f4ccccd}; -const u32 var7f1a93e4[] = {0x40c907a9}; -const u32 var7f1a93e8[] = {0x3fc907a9}; -const u32 var7f1a93ec[] = {0x4096c5bf}; -const u32 var7f1a93f0[] = {0x404907a9}; -const u32 var7f1a93f4[] = {0x3fc907a9}; -const u32 var7f1a93f8[] = {0x4096c5bf}; -const u32 var7f1a93fc[] = {0x40c907a9}; -const u32 var7f1a9400[] = {0x40c907a9}; -const u32 var7f1a9404[] = {0x40c907a9}; -const u32 var7f1a9408[] = {0x3f4907a9}; -const u32 var7f1a940c[] = {0xc7c35000}; -const u32 var7f1a9410[] = {0x40c907a9}; -const u32 var7f1a9414[] = {0xc7c35000}; -const u32 var7f1a9418[] = {0xc7c35000}; -const u32 var7f1a941c[] = {0x3f4907a9}; -const u32 var7f1a9420[] = {0x411ffffe}; -const u32 var7f1a9424[] = {0x40c907a9}; -const u32 var7f1a9428[] = {0x40c907a9}; -const u32 var7f1a942c[] = {0x3c8ef461}; -const u32 var7f1a9430[] = {0x40c907a9}; -const u32 var7f1a9434[] = {0x40490fdb}; -const u32 var7f1a9438[] = {0x439d8000}; -const u32 var7f1a943c[] = {0x40490fdb}; -const u32 var7f1a9440[] = {0x3fc90fdb}; -const u32 var7f1a9444[] = {0x3fc90fdb}; -const u32 var7f1a9448[] = {0x3f19999a}; -const u32 var7f1a944c[] = {0x00000000}; - -const char var7f1a9450[] = " (%d)\n"; -const char var7f1a9458[] = " (%d)\n"; -const char var7f1a9460[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.truck!\n"; -const char var7f1a94a0[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.heli!\n"; -const char var7f1a94e0[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.hovercar!\n"; -const char var7f1a9524[] = "BOND IN ROOM \n"; -const char var7f1a9534[] = "bond not in room \n"; -const char var7f1a9548[] = "aTimer%s%s: %f\n"; -const char var7f1a9558[] = ""; -const char var7f1a955c[] = ""; -const char var7f1a9560[] = "bTimer:%s%s %f\n"; -const char var7f1a9570[] = ""; -const char var7f1a9574[] = ""; -const char var7f1a9578[] = "ai_ifbondintank: tank code has been removed.\n"; -const char var7f1a95a8[] = "AI_BONDENABLECONTROL\n"; -const char var7f1a95c0[] = "ai(void) enery tune on (%d, %d, %d)\n"; -const char var7f1a95e8[] = "ai(void) enery tune off (%d)\n"; -const char var7f1a9608[] = "%s%sAI_PRINT(void) height = %f ptop = %f \n\n"; -const char var7f1a9638[] = ""; -const char var7f1a963c[] = ""; -const char var7f1a9640[] = "Preset character = %d, my target = %d \n"; -const char var7f1a9668[] = "characters target is %d \n"; -const char var7f1a9684[] = "(DGD)chrai.c(void) aiIfChrsTargetIsChr does not support CHR_BOND as chr1!\n"; -const char var7f1a96d0[] = "(DGD)chrai.c(void) aiIfChrsTargetIsChr does not support CHR_BOND as chr1!\n"; -const char var7f1a971c[] = "DGD(void) (chrai.c) WARNING! attempt to use invalid CHR_PRESET1 - defaulting to JO\n"; -const char var7f1a9770[] = "RISK CHECK = %d \n"; -const char var7f1a9784[] = "aiIfOpportunityFireJumpF() called with no botdata!\n"; -const char var7f1a97b8[] = "TARGET %d PASSED THE DISTANCE 2 TESTS \n"; -const char var7f1a97e0[] = "%d I NOTICE THE TARGET %d\n"; -const char var7f1a97fc[] = "%d I NOTICE THE TARGET %d\n"; -const char var7f1a9818[] = "%d OPPORTUNITY FIRE A CHARACTER = %d \n"; -const char var7f1a9840[] = "%d CANNOT OPPORTUNITY FIRE A TARGET \n"; -const char var7f1a9868[] = " RISK CHECK = %d \n"; -const char var7f1a987c[] = "dist = %d \n"; -const char var7f1a9888[] = "USING VOICE NUMBER %d \n"; -const char var7f1a98a0[] = "SETORDERS COMMAND \n"; -const char var7f1a98b8[] = "SQUADRON MEMBER CHR NUMBER = %d \n"; -const char var7f1a98dc[] = "DOING DIST CHECK \n"; -const char var7f1a98f0[] = "%d SYNCHED WITH A CHARACTER %d \n"; -const char var7f1a9914[] = "synched = %d \n"; -const char var7f1a9924[] = "LEADER'S GOING TO COVER \n"; -const char var7f1a9940[] = "LEADER IS BREAKING COVER \n"; -const char var7f1a995c[] = " I AM SAFE TO BREAK COVER \n"; -const char var7f1a9978[] = "not safe to break cover \n"; -const char var7f1a9994[] = "LEADER IS COVER SEEN \n"; -const char var7f1a99ac[] = "LEADER IS FLANKING LEFT \n"; -const char var7f1a99c8[] = "LEADER IS FLANKING RIGHT \n"; -const char var7f1a99e4[] = "LEADER IS DODGING \n"; -const char var7f1a99f8[] = "LEADER IS THROWING GRENADE \n"; -const char var7f1a9a18[] = "LEADER HAS SEEN FROM WAIT \n"; -const char var7f1a9a34[] = "UNKNOWN LEADER ACTION \n"; -const char var7f1a9a4c[] = "ORDERS CARRIED OUT "; -const char var7f1a9a64[] = "WITHDRAWING!!!!!!!!!!!\n"; -const char var7f1a9a7c[] = "CHECKING MY ORDERS "; -const char var7f1a9a94[] = "ACTING ON MY ORDERS "; -const char var7f1a9aac[] = "DOING DIST CHECK VS CHAR %d\n"; -const char var7f1a9acc[] = "I'm just carrying out my ORDERS \n"; -const char var7f1a9af0[] = "SQUAD IS DOING THAT ACTION\n"; -const char var7f1a9b0c[] = "SQUAD NOT DOING ACTION\n"; -const char var7f1a9b24[] = "g_Vars.CommandInfo.chrdata ->soundtimer = %d, g_Vars.CommandInfo.chrdata->talkgap = %d , soundgap = %d\n"; -const char var7f1a9b8c[] = "RESETTING THE LISTENING \n"; -const char var7f1a9ba8[] = "couldn't go to cover from danger !\n"; -const char var7f1a9bcc[] = "couldn't find cover from danger !\n"; -const char var7f1a9bf0[] = "Randnum = %d, Alarmrandnum = %d \n"; -const char var7f1a9c18[] = "IVE FOUND MY PAD %d \n"; - GLOBAL_ASM( glabel func0f02dff0 /* f02dff0: 00043400 */ sll $a2,$a0,0x10 @@ -31177,21 +31081,17 @@ void chrRestartTimer(struct chrdata *chr) chr->hidden |= CHRHFLAG_TIMER_RUNNING; } -GLOBAL_ASM( -glabel chrGetTimer -/* f049fa8: 8c8e011c */ lw $t6,0x11c($a0) -/* f049fac: 3c017f1b */ lui $at,%hi(var7f1a93dc) -/* f049fb0: c42893dc */ lwc1 $f8,%lo(var7f1a93dc)($at) -/* f049fb4: 448e2000 */ mtc1 $t6,$f4 -/* f049fb8: 00000000 */ sll $zero,$zero,0x0 -/* f049fbc: 468021a0 */ cvt.s.w $f6,$f4 -/* f049fc0: 46083002 */ mul.s $f0,$f6,$f8 -/* f049fc4: 03e00008 */ jr $ra -/* f049fc8: 00000000 */ sll $zero,$zero,0x0 -); +f32 chrGetTimer(struct chrdata *chr) +{ + return chr->timer60 * FRAMEDURATION; +} GLOBAL_ASM( glabel func0f049fcc +.late_rodata +glabel var7f1a93e0 +.word 0x3f4ccccd +.text /* f049fcc: 27bdffa8 */ addiu $sp,$sp,-88 /* f049fd0: afbf001c */ sw $ra,0x1c($sp) /* f049fd4: 0fc0a221 */ jal chrGetTargetProp @@ -31355,6 +31255,14 @@ bool func0f04a2b4(struct chrdata *chr) GLOBAL_ASM( glabel func0f04a2d4 +.late_rodata +glabel var7f1a93e4 +.word 0x40c907a9 +glabel var7f1a93e8 +.word 0x3fc907a9 +glabel var7f1a93ec +.word 0x4096c5bf +.text /* f04a2d4: 27bdff80 */ addiu $sp,$sp,-128 /* f04a2d8: afbf0014 */ sw $ra,0x14($sp) /* f04a2dc: afa50084 */ sw $a1,0x84($sp) @@ -31404,6 +31312,16 @@ glabel func0f04a2d4 GLOBAL_ASM( glabel func0f04a37c +.late_rodata +glabel var7f1a93f0 +.word 0x404907a9 +glabel var7f1a93f4 +.word 0x3fc907a9 +glabel var7f1a93f8 +.word 0x4096c5bf +glabel var7f1a93fc +.word 0x40c907a9 +.text /* f04a37c: 27bdffc8 */ addiu $sp,$sp,-56 /* f04a380: f7b40018 */ sdc1 $f20,0x18($sp) /* f04a384: 4486a000 */ mtc1 $a2,$f20 @@ -31618,6 +31536,10 @@ glabel func0f04a4ec GLOBAL_ASM( glabel func0f04a674 +.late_rodata +glabel var7f1a9400 +.word 0x40c907a9 +.text /* f04a674: 27bdffd8 */ addiu $sp,$sp,-40 /* f04a678: afa5002c */ sw $a1,0x2c($sp) /* f04a67c: 30ae00ff */ andi $t6,$a1,0xff @@ -32151,6 +32073,22 @@ glabel func0f04aeb0 GLOBAL_ASM( glabel func0f04af84 +.late_rodata +glabel var7f1a9404 +.word 0x40c907a9 +glabel var7f1a9408 +.word 0x3f4907a9 +glabel var7f1a940c +.word 0xc7c35000 +glabel var7f1a9410 +.word 0x40c907a9 +glabel var7f1a9414 +.word 0xc7c35000 +glabel var7f1a9418 +.word 0xc7c35000 +glabel var7f1a941c +.word 0x3f4907a9 +.text /* f04af84: 27bdff58 */ addiu $sp,$sp,-168 /* f04af88: 8fae00bc */ lw $t6,0xbc($sp) /* f04af8c: 44877000 */ mtc1 $a3,$f14 @@ -32663,6 +32601,12 @@ glabel func0f04b658 GLOBAL_ASM( glabel chrMoveToPos +.late_rodata +glabel var7f1a9420 +.word 0x411ffffe +glabel var7f1a9424 +.word 0x40c907a9 +.text /* f04b748: 27bdff88 */ addiu $sp,$sp,-120 /* f04b74c: afbf0034 */ sw $ra,0x34($sp) /* f04b750: afb00030 */ sw $s0,0x30($sp) @@ -33616,6 +33560,10 @@ bool func0f04c71c(struct chrdata *chr, u32 distance) GLOBAL_ASM( glabel func0f04c784 +.late_rodata +glabel var7f1a9428 +.word 0x40c907a9 +.text /* f04c784: 44808000 */ mtc1 $zero,$f16 /* f04c788: 27bdffd8 */ addiu $sp,$sp,-40 /* f04c78c: afbf0014 */ sw $ra,0x14($sp) @@ -33683,6 +33631,10 @@ glabel func0f04c784 GLOBAL_ASM( glabel func0f04c874 +.late_rodata +glabel var7f1a942c +.word 0x3c8ef461 +.text /* f04c874: 27bdff18 */ addiu $sp,$sp,-232 /* f04c878: afbf007c */ sw $ra,0x7c($sp) /* f04c87c: afb40068 */ sw $s4,0x68($sp) @@ -34150,6 +34102,22 @@ void func0f04cf90(struct chrdata *chr, s32 arg1) GLOBAL_ASM( glabel func0f04d000 +.late_rodata +glabel var7f1a9430 +.word 0x40c907a9 +glabel var7f1a9434 +.word 0x40490fdb +glabel var7f1a9438 +.word 0x439d8000 +glabel var7f1a943c +.word 0x40490fdb +glabel var7f1a9440 +.word 0x3fc90fdb +glabel var7f1a9444 +.word 0x3fc90fdb +glabel var7f1a9448 +.word 0x3f19999a +.text /* f04d000: 27bdff58 */ addiu $sp,$sp,-168 /* f04d004: 3c0f8007 */ lui $t7,%hi(var8006846c) /* f04d008: afbf002c */ sw $ra,0x2c($sp) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 16367e961..d0640e9a8 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -55,6 +55,72 @@ #include "library/library_4ae00.h" #include "types.h" +const char var7f1a9450[] = " (%d)\n"; +const char var7f1a9458[] = " (%d)\n"; +const char var7f1a9460[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.truck!\n"; +const char var7f1a94a0[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.heli!\n"; +const char var7f1a94e0[] = "set shot list(void) doesn't work for g_Vars.CommandInfo.hovercar!\n"; +const char var7f1a9524[] = "BOND IN ROOM \n"; +const char var7f1a9534[] = "bond not in room \n"; +const char var7f1a9548[] = "aTimer%s%s: %f\n"; +const char var7f1a9558[] = ""; +const char var7f1a955c[] = ""; +const char var7f1a9560[] = "bTimer:%s%s %f\n"; +const char var7f1a9570[] = ""; +const char var7f1a9574[] = ""; +const char var7f1a9578[] = "ai_ifbondintank: tank code has been removed.\n"; +const char var7f1a95a8[] = "AI_BONDENABLECONTROL\n"; +const char var7f1a95c0[] = "ai(void) enery tune on (%d, %d, %d)\n"; +const char var7f1a95e8[] = "ai(void) enery tune off (%d)\n"; +const char var7f1a9608[] = "%s%sAI_PRINT(void) height = %f ptop = %f \n\n"; +const char var7f1a9638[] = ""; +const char var7f1a963c[] = ""; +const char var7f1a9640[] = "Preset character = %d, my target = %d \n"; +const char var7f1a9668[] = "characters target is %d \n"; +const char var7f1a9684[] = "(DGD)chrai.c(void) aiIfChrsTargetIsChr does not support CHR_BOND as chr1!\n"; +const char var7f1a96d0[] = "(DGD)chrai.c(void) aiIfChrsTargetIsChr does not support CHR_BOND as chr1!\n"; +const char var7f1a971c[] = "DGD(void) (chrai.c) WARNING! attempt to use invalid CHR_PRESET1 - defaulting to JO\n"; +const char var7f1a9770[] = "RISK CHECK = %d \n"; +const char var7f1a9784[] = "aiIfOpportunityFireJumpF() called with no botdata!\n"; +const char var7f1a97b8[] = "TARGET %d PASSED THE DISTANCE 2 TESTS \n"; +const char var7f1a97e0[] = "%d I NOTICE THE TARGET %d\n"; +const char var7f1a97fc[] = "%d I NOTICE THE TARGET %d\n"; +const char var7f1a9818[] = "%d OPPORTUNITY FIRE A CHARACTER = %d \n"; +const char var7f1a9840[] = "%d CANNOT OPPORTUNITY FIRE A TARGET \n"; +const char var7f1a9868[] = " RISK CHECK = %d \n"; +const char var7f1a987c[] = "dist = %d \n"; +const char var7f1a9888[] = "USING VOICE NUMBER %d \n"; +const char var7f1a98a0[] = "SETORDERS COMMAND \n"; +const char var7f1a98b8[] = "SQUADRON MEMBER CHR NUMBER = %d \n"; +const char var7f1a98dc[] = "DOING DIST CHECK \n"; +const char var7f1a98f0[] = "%d SYNCHED WITH A CHARACTER %d \n"; +const char var7f1a9914[] = "synched = %d \n"; +const char var7f1a9924[] = "LEADER'S GOING TO COVER \n"; +const char var7f1a9940[] = "LEADER IS BREAKING COVER \n"; +const char var7f1a995c[] = " I AM SAFE TO BREAK COVER \n"; +const char var7f1a9978[] = "not safe to break cover \n"; +const char var7f1a9994[] = "LEADER IS COVER SEEN \n"; +const char var7f1a99ac[] = "LEADER IS FLANKING LEFT \n"; +const char var7f1a99c8[] = "LEADER IS FLANKING RIGHT \n"; +const char var7f1a99e4[] = "LEADER IS DODGING \n"; +const char var7f1a99f8[] = "LEADER IS THROWING GRENADE \n"; +const char var7f1a9a18[] = "LEADER HAS SEEN FROM WAIT \n"; +const char var7f1a9a34[] = "UNKNOWN LEADER ACTION \n"; +const char var7f1a9a4c[] = "ORDERS CARRIED OUT "; +const char var7f1a9a64[] = "WITHDRAWING!!!!!!!!!!!\n"; +const char var7f1a9a7c[] = "CHECKING MY ORDERS "; +const char var7f1a9a94[] = "ACTING ON MY ORDERS "; +const char var7f1a9aac[] = "DOING DIST CHECK VS CHAR %d\n"; +const char var7f1a9acc[] = "I'm just carrying out my ORDERS \n"; +const char var7f1a9af0[] = "SQUAD IS DOING THAT ACTION\n"; +const char var7f1a9b0c[] = "SQUAD NOT DOING ACTION\n"; +const char var7f1a9b24[] = "g_Vars.CommandInfo.chrdata ->soundtimer = %d, g_Vars.CommandInfo.chrdata->talkgap = %d , soundgap = %d\n"; +const char var7f1a9b8c[] = "RESETTING THE LISTENING \n"; +const char var7f1a9ba8[] = "couldn't go to cover from danger !\n"; +const char var7f1a9bcc[] = "couldn't find cover from danger !\n"; +const char var7f1a9bf0[] = "Randnum = %d, Alarmrandnum = %d \n"; +const char var7f1a9c18[] = "IVE FOUND MY PAD %d \n"; + /** * @cmd 0000 */ diff --git a/src/include/constants.h b/src/include/constants.h index 996b74fe0..17aec3bb6 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -6,11 +6,11 @@ #define false 0 #define true 1 -#define ABS(val) (val > 0 ? val : -val) -#define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN) -#define PLAYERCOUNT() ((g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0)) -#define PLAYERCOUNT3012() ((g_Vars.players[3] ? 1 : 0) + (g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0)) - +#define ABS(val) (val > 0 ? val : -val) +#define CHRRACE(chr) (chr ? chr->race : RACE_HUMAN) +#define FRAMEDURATION (1 / 60.0f) +#define PLAYERCOUNT() ((g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0)) +#define PLAYERCOUNT3012() ((g_Vars.players[3] ? 1 : 0) + (g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0)) #define SECSTOFRAMES240(secs) (secs * 240) // These actions are assigned to chr->actiontype diff --git a/src/include/types.h b/src/include/types.h index b8eb87bab..190f4828b 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -542,7 +542,7 @@ struct chrdata { /*0x113*/ u8 alertness; /*0x114*/ u32 flags; /*0x118*/ u32 flags2; - /*0x11c*/ u32 timer60; + /*0x11c*/ s32 timer60; /*0x120*/ s32 soundtimer; /*0x124*/ u8 random; /*0x125*/ u8 team;