Identify chrGoToPos, chrGoToProp, chrGoToCover and rename cmd0124 to go_to_cover

This commit is contained in:
Ryan Dwyer
2020-01-27 17:34:12 +10:00
parent dc3a5ecd02
commit 10943af728
10 changed files with 60 additions and 54 deletions
+17 -17
View File
@@ -28671,7 +28671,7 @@ glabel func0f037224
/* f0372bc: 10000007 */ beqz $zero,.L0f0372dc
/* f0372c0: 8fbf0014 */ lw $ra,0x14($sp)
.L0f0372c4:
/* f0372c4: 0fc0e10f */ jal func0f03843c
/* f0372c4: 0fc0e10f */ jal chrGoToPos
/* f0372c8: 90870065 */ lbu $a3,0x65($a0)
/* f0372cc: 10000003 */ beqz $zero,.L0f0372dc
/* f0372d0: 8fbf0014 */ lw $ra,0x14($sp)
@@ -29935,7 +29935,7 @@ glabel func0f037b70
);
GLOBAL_ASM(
glabel func0f03843c
glabel chrGoToPos
/* f03843c: 27bdff70 */ addiu $sp,$sp,-144
/* f038440: afbf001c */ sw $ra,0x1c($sp)
/* f038444: afb00018 */ sw $s0,0x18($sp)
@@ -30678,7 +30678,7 @@ glabel func0f038b9c
/* f038ef8: 02602025 */ or $a0,$s3,$zero
/* f038efc: 27a500a8 */ addiu $a1,$sp,0xa8
/* f038f00: 27a60060 */ addiu $a2,$sp,0x60
/* f038f04: 0fc0e10f */ jal func0f03843c
/* f038f04: 0fc0e10f */ jal chrGoToPos
/* f038f08: 24070008 */ addiu $a3,$zero,0x8
.L0f038f0c:
/* f038f0c: 8fbf0044 */ lw $ra,0x44($sp)
@@ -32448,7 +32448,7 @@ glabel func0f03a894
/* f03a920: 27a50020 */ addiu $a1,$sp,0x20
/* f03a924: 27a60074 */ addiu $a2,$sp,0x74
/* f03a928: 8fa70080 */ lw $a3,0x80($sp)
/* f03a92c: 0fc0e10f */ jal func0f03843c
/* f03a92c: 0fc0e10f */ jal chrGoToPos
/* f03a930: a7a90074 */ sh $t1,0x74($sp)
/* f03a934: 50400004 */ beqzl $v0,.L0f03a948
/* f03a938: 00001025 */ or $v0,$zero,$zero
@@ -32510,7 +32510,7 @@ bool chrGoToTarget(struct chrdata *chr, u32 speed)
(chr->flags & CHRFLAG0_CAN_RUN_FOR_ALARM)) {
struct prop *prop = chrGetTargetProp(chr);
if (func0f03843c(chr, &prop->pos, &prop->rooms[0], speed)) {
if (chrGoToPos(chr, &prop->pos, &prop->rooms[0], speed)) {
return true;
}
}
@@ -32527,7 +32527,7 @@ bool chrGoToChr(struct chrdata *chr, u32 dst_chrnum, u32 speed)
(chr->flags & CHRFLAG0_CAN_RUN_FOR_ALARM)) {
struct chrdata *dstchr = chrFindById(chr, dst_chrnum);
if (dstchr && dstchr->prop && func0f03843c(chr, &dstchr->prop->pos, &dstchr->prop->rooms[0], speed)) {
if (dstchr && dstchr->prop && chrGoToPos(chr, &dstchr->prop->pos, &dstchr->prop->rooms[0], speed)) {
return true;
}
}
@@ -32536,10 +32536,10 @@ bool chrGoToChr(struct chrdata *chr, u32 dst_chrnum, u32 speed)
return false;
}
bool func0f03ab74(struct chrdata *chr, struct prop *prop, s32 arg2)
bool chrGoToProp(struct chrdata *chr, struct prop *prop, s32 speed)
{
if (func0f039a18(chr) && prop) {
if (func0f03843c(chr, &prop->pos, &prop->rooms[0], arg2)) {
if (chrGoToPos(chr, &prop->pos, &prop->rooms[0], speed)) {
return true;
}
}
@@ -32593,7 +32593,7 @@ glabel func0f03abd0
/* f03ac64: 12000008 */ beqz $s0,.L0f03ac88
/* f03ac68: 8fa5008c */ lw $a1,0x8c($sp)
/* f03ac6c: 02003025 */ or $a2,$s0,$zero
/* f03ac70: 0fc0e10f */ jal func0f03843c
/* f03ac70: 0fc0e10f */ jal chrGoToPos
/* f03ac74: 8fa70090 */ lw $a3,0x90($sp)
/* f03ac78: 50400004 */ beqzl $v0,.L0f03ac8c
/* f03ac7c: 00001025 */ or $v0,$zero,$zero
@@ -32636,7 +32636,7 @@ glabel func0f03aca0
/* f03acf4: 0fc12e8d */ jal func0f04ba34
/* f03acf8: 8c84a3e4 */ lw $a0,-0x5c1c($a0)
/* f03acfc: 02002025 */ or $a0,$s0,$zero
/* f03ad00: 0fc1309a */ jal func0f04c268
/* f03ad00: 0fc1309a */ jal chrGoToCover
/* f03ad04: 24050002 */ addiu $a1,$zero,0x2
/* f03ad08: 1000001c */ beqz $zero,.L0f03ad7c
/* f03ad0c: 8fbf001c */ lw $ra,0x1c($sp)
@@ -32667,7 +32667,7 @@ glabel func0f03aca0
/* f03ad68: 00003025 */ or $a2,$zero,$zero
.L0f03ad6c:
/* f03ad6c: 02002025 */ or $a0,$s0,$zero
/* f03ad70: 0fc1309a */ jal func0f04c268
/* f03ad70: 0fc1309a */ jal chrGoToCover
/* f03ad74: 24050002 */ addiu $a1,$zero,0x2
/* f03ad78: 8fbf001c */ lw $ra,0x1c($sp)
.L0f03ad7c:
@@ -32891,7 +32891,7 @@ glabel func0f03afac
/* f03b1ac: 8fa40088 */ lw $a0,0x88($sp)
/* f03b1b0: 27a50068 */ addiu $a1,$sp,0x68
/* f03b1b4: 27a60058 */ addiu $a2,$sp,0x58
/* f03b1b8: 0fc0e10f */ jal func0f03843c
/* f03b1b8: 0fc0e10f */ jal chrGoToPos
/* f03b1bc: 02003825 */ or $a3,$s0,$zero
/* f03b1c0: 10000002 */ beqz $zero,.L0f03b1cc
/* f03b1c4: 24020001 */ addiu $v0,$zero,0x1
@@ -33141,7 +33141,7 @@ glabel func0f03b1e0
/* f03b54c: 8fa402b8 */ lw $a0,0x2b8($sp)
/* f03b550: 27a50068 */ addiu $a1,$sp,0x68
/* f03b554: 02403025 */ or $a2,$s2,$zero
/* f03b558: 0fc0e10f */ jal func0f03843c
/* f03b558: 0fc0e10f */ jal chrGoToPos
/* f03b55c: 02203825 */ or $a3,$s1,$zero
/* f03b560: 3c0e800a */ lui $t6,0x800a
/* f03b564: 8dcea2f8 */ lw $t6,-0x5d08($t6)
@@ -45547,7 +45547,7 @@ glabel func0f046a8c
/* f046b70: 10000211 */ beqz $zero,.L0f0473b8
/* f046b74: ae0b00d8 */ sw $t3,0xd8($s0)
.L0f046b78:
/* f046b78: 0fc0e10f */ jal func0f03843c
/* f046b78: 0fc0e10f */ jal chrGoToPos
/* f046b7c: 92070065 */ lbu $a3,0x65($s0)
.L0f046b80:
/* f046b80: 0fc0dc89 */ jal func0f037224
@@ -51411,7 +51411,7 @@ glabel func0f04bffc
/* f04c264: 27bd00a8 */ addiu $sp,$sp,0xa8
);
s16 func0f04c268(struct chrdata *chr, u8 speed)
s16 chrGoToCover(struct chrdata *chr, u8 speed)
{
struct cover cover;
@@ -51420,7 +51420,7 @@ s16 func0f04c268(struct chrdata *chr, u8 speed)
}
if (func0f039a18(chr) && chr->cover != -1 && coverLoad(chr->cover, &cover)) {
func0f03843c(chr, cover.pos, &cover.room, speed);
chrGoToPos(chr, cover.pos, &cover.room, speed);
return chr->cover;
}
@@ -51509,7 +51509,7 @@ glabel func0f04c2e8
/* f04c410: 02002025 */ or $a0,$s0,$zero
/* f04c414: 27a50040 */ addiu $a1,$sp,0x40
/* f04c418: 27a60030 */ addiu $a2,$sp,0x30
/* f04c41c: 0fc0e10f */ jal func0f03843c
/* f04c41c: 0fc0e10f */ jal chrGoToPos
/* f04c420: 8fa70054 */ lw $a3,0x54($sp)
/* f04c424: 10000003 */ beqz $zero,.L0f04c434
/* f04c428: 8fbf0024 */ lw $ra,0x24($sp)
+6 -6
View File
@@ -8726,10 +8726,10 @@ bool ai0123(void)
/**
* @cmd 0124
*/
bool ai0124(void)
bool aiGoToCover(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
func0f04c268(g_Vars.chrdata, cmd[2]);
chrGoToCover(g_Vars.chrdata, cmd[2]);
g_Vars.aioffset += 3;
return false;
@@ -10537,7 +10537,7 @@ glabel ai0136
/* f05b3ac: afa30024 */ sw $v1,0x24($sp)
/* f05b3b0: 8fa30024 */ lw $v1,0x24($sp)
/* f05b3b4: 8e040424 */ lw $a0,0x424($s0)
/* f05b3b8: 0fc1309a */ jal func0f04c268
/* f05b3b8: 0fc1309a */ jal chrGoToCover
/* f05b3bc: 90650002 */ lbu $a1,0x2($v1)
/* f05b3c0: 8e190438 */ lw $t9,0x438($s0)
.L0f05b3c4:
@@ -10810,7 +10810,7 @@ bool aiIfDangerousObjectNearby(void)
bool ai013e(void)
{
if (func0f03aca0(g_Vars.chrdata, 0x43c80000, 1) == 0 && func0f04bffc(g_Vars.chrdata, 1000, 12000) != -1) {
func0f04c268(g_Vars.chrdata, 2);
chrGoToCover(g_Vars.chrdata, SPEED_RUN);
}
g_Vars.aioffset += 2;
@@ -11787,14 +11787,14 @@ bool aiIfChrHasGun(void)
/**
* @cmd 0170
*/
bool ai0170(void)
bool aiDoGunCommand(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
struct weaponobj *weapon = g_Vars.chrdata->gunprop->weapon;
if (cmd[2] == 0 || ((weapon->hidden & OBJHFLAG_00000080) == 0 && cmd[2] == 1)) {
if (cmd[2] == 0) {
func0f03ab74(g_Vars.chrdata, g_Vars.chrdata->gunprop, 1);
chrGoToProp(g_Vars.chrdata, g_Vars.chrdata->gunprop, SPEED_JOG);
}
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[3]);
+1 -1
View File
@@ -47332,7 +47332,7 @@ glabel func0f08f11c
/* f08f2d0: 02202025 */ or $a0,$s1,$zero
/* f08f2d4: 24450008 */ addiu $a1,$v0,0x8
/* f08f2d8: 24460028 */ addiu $a2,$v0,0x28
/* f08f2dc: 0fc0e10f */ jal func0f03843c
/* f08f2dc: 0fc0e10f */ jal chrGoToPos
/* f08f2e0: 00003825 */ or $a3,$zero,$zero
/* f08f2e4: 10400013 */ beqz $v0,.L0f08f334
/* f08f2e8: 24090258 */ addiu $t1,$zero,0x258
+6 -6
View File
@@ -16741,7 +16741,7 @@ glabel func0f194b40
/* f1963d8: 02802025 */ or $a0,$s4,$zero
/* f1963dc: 50a00079 */ beqzl $a1,.L0f1965c4
/* f1963e0: 928202a0 */ lbu $v0,0x2a0($s4)
/* f1963e4: 0fc0eadd */ jal func0f03ab74
/* f1963e4: 0fc0eadd */ jal chrGoToProp
/* f1963e8: 24060002 */ addiu $a2,$zero,0x2
/* f1963ec: 10000074 */ beqz $zero,.L0f1965c0
/* f1963f0: a29502a0 */ sb $s5,0x2a0($s4)
@@ -16786,7 +16786,7 @@ glabel func0f194b40
.L0f196480:
/* f196480: 2645008c */ addiu $a1,$s2,0x8c
/* f196484: 2646007a */ addiu $a2,$s2,0x7a
/* f196488: 0fc0e10f */ jal func0f03843c
/* f196488: 0fc0e10f */ jal chrGoToPos
/* f19648c: 24070002 */ addiu $a3,$zero,0x2
/* f196490: 1000004c */ beqz $zero,.L0f1965c4
/* f196494: 928202a0 */ lbu $v0,0x2a0($s4)
@@ -16843,7 +16843,7 @@ glabel func0f194b40
/* f196550: 05800005 */ bltz $t4,.L0f196568
/* f196554: 00000000 */ sll $zero,$zero,0x0
.L0f196558:
/* f196558: 0fc0e10f */ jal func0f03843c
/* f196558: 0fc0e10f */ jal chrGoToPos
/* f19655c: a29502a0 */ sb $s5,0x2a0($s4)
/* f196560: 10000018 */ beqz $zero,.L0f1965c4
/* f196564: 928202a0 */ lbu $v0,0x2a0($s4)
@@ -16862,7 +16862,7 @@ glabel func0f194b40
/* f196590: 5300000c */ beqzl $t8,.L0f1965c4
/* f196594: 928202a0 */ lbu $v0,0x2a0($s4)
/* f196598: a29502a0 */ sb $s5,0x2a0($s4)
/* f19659c: 0fc0eadd */ jal func0f03ab74
/* f19659c: 0fc0eadd */ jal chrGoToProp
/* f1965a0: 8e450010 */ lw $a1,0x10($s2)
/* f1965a4: 10000007 */ beqz $zero,.L0f1965c4
/* f1965a8: 928202a0 */ lbu $v0,0x2a0($s4)
@@ -17115,7 +17115,7 @@ glabel func0f194b40
/* f19692c: 2645008c */ addiu $a1,$s2,0x8c
/* f196930: 1d60001e */ bgtz $t3,.L0f1969ac
/* f196934: 2646007a */ addiu $a2,$s2,0x7a
/* f196938: 0fc0e10f */ jal func0f03843c
/* f196938: 0fc0e10f */ jal chrGoToPos
/* f19693c: 24070002 */ addiu $a3,$zero,0x2
/* f196940: 1000001b */ beqz $zero,.L0f1969b0
/* f196944: 8e4900dc */ lw $t1,0xdc($s2)
@@ -17974,6 +17974,6 @@ void func0f197544(struct chrdata *chr)
}
if (!pass) {
func0f03843c(chr, &chr->act_aibotgetitem.pos, &chr->act_aibotgetitem.rooms[0], chr->speed);
chrGoToPos(chr, &chr->act_aibotgetitem.pos, &chr->act_aibotgetitem.rooms[0], chr->speed);
}
}
+2 -2
View File
@@ -402,14 +402,14 @@ glabel func0f197600
.L0f197ab0:
/* f197ab0: 00e02825 */ or $a1,$a3,$zero
/* f197ab4: 24060002 */ addiu $a2,$zero,0x2
/* f197ab8: 0fc0eadd */ jal func0f03ab74
/* f197ab8: 0fc0eadd */ jal chrGoToProp
/* f197abc: afa80054 */ sw $t0,0x54($sp)
/* f197ac0: 10000006 */ beqz $zero,.L0f197adc
/* f197ac4: 8fa80054 */ lw $t0,0x54($sp)
.L0f197ac8:
/* f197ac8: 00e02825 */ or $a1,$a3,$zero
/* f197acc: 24060002 */ addiu $a2,$zero,0x2
/* f197ad0: 0fc0eadd */ jal func0f03ab74
/* f197ad0: 0fc0eadd */ jal chrGoToProp
/* f197ad4: afa80054 */ sw $t0,0x54($sp)
/* f197ad8: 8fa80054 */ lw $t0,0x54($sp)
.L0f197adc:
+16 -8
View File
@@ -2463,9 +2463,9 @@
mkword(flags), \
label,
#define cmd0124_run_for_cover_maybe(action) \
#define go_to_cover(speed) \
mkshort(0x0124), \
action,
speed,
// Related to command 012f
// globals.c only
@@ -2945,13 +2945,19 @@
0x00, \
label,
// If bool is false, run some function on the chr and their gun ground
// prop, then follow the label.
// If bool is true, don't call the function, and only follow the label if the
// gun prop has OBJHFLAG_00000080.
#define if_gun_landed(bool, label) \
/**
* If operation is 1, checks if the chr's dropped gun can be run to and follow
* the label if so.
*
* If operation is 0, makes the chr run to the dropped gun. No check is done,
* and the label is followed.
*
* Don't use this directly. Use convenience macros if_gun_landed and go_to_gun
* instead.
*/
#define do_gun_command(operation, label) \
mkshort(0x0170), \
bool, \
operation, \
label,
/**
@@ -3800,3 +3806,5 @@
#define if_stage_is_not(stage, label) if_stage_lt(stage, label) if_stage_gt(stage, label)
#define go_to_gun(label) do_gun_command(0, label)
#define if_gun_landed(label) do_gun_command(1, label)
+3 -3
View File
@@ -218,7 +218,7 @@ u32 func0f0375b0(void);
u32 func0f0375e8(void);
u32 func0f0379b0(void);
u32 func0f037b70(void);
u32 func0f03843c(struct chrdata *chr, struct coord *pos, s16 *room_id, u32 speed);
u32 chrGoToPos(struct chrdata *chr, struct coord *pos, s16 *room_id, u32 speed);
struct path *pathFindById(u32 path_id);
u32 func0f038868(void);
void func0f038b9c(struct chrdata *chr, struct path *path);
@@ -254,7 +254,7 @@ u32 chrTrySurrender(struct chrdata *chr);
bool chrFadeOut(struct chrdata *chr);
bool chrGoToTarget(struct chrdata *chr, u32 speed);
bool chrGoToChr(struct chrdata *chr, u32 dst_chrnum, u32 speed);
bool func0f03ab74(struct chrdata *chr, struct prop *prop, s32 arg2);
bool chrGoToProp(struct chrdata *chr, struct prop *prop, s32 speed);
u32 func0f03abd0(void);
u32 func0f03aca0(struct chrdata *chr, u32 arg1, u32 arg2);
bool chrTryStop(struct chrdata *chr);
@@ -393,7 +393,7 @@ u32 func0f04b748(void);
u32 func0f04b950(struct chrdata *chr, u32 cover, u32 arg2);
u32 func0f04ba34(struct chrdata *chr, u16 arg1, u32 arg2);
u32 func0f04bffc(struct chrdata *chr, u32 arg1, u32 arg2);
s16 func0f04c268(struct chrdata *chr, u8 speed);
s16 chrGoToCover(struct chrdata *chr, u8 speed);
u32 func0f04c2e8(void);
void chrAddTargetToBdlist(struct chrdata *chr);
s32 chrGetDistanceLostToTargetInLastSecond(struct chrdata *chr);
+2 -2
View File
@@ -292,7 +292,7 @@
/*0x0121*/ bool ai0121(void);
/*0x0122*/ bool ai0122(void);
/*0x0123*/ bool ai0123(void);
/*0x0124*/ bool ai0124(void);
/*0x0124*/ bool aiGoToCover(void);
/*0x0125*/ bool ai0125(void);
/*0x0126*/ bool aiIfPlayerUsingCmpOrAr34(void);
/*0x0127*/ bool ai0127(void);
@@ -345,7 +345,7 @@
/*0x016d*/ bool aiChrAdjustMotionBlur(void);
/*0x016e*/ bool ai016e(void);
/*0x016f*/ bool aiIfChrHasGun(void);
/*0x0170*/ bool ai0170(void);
/*0x0170*/ bool aiDoGunCommand(void);
/*0x0171*/ bool aiIfDistanceToGunLessThan(void);
/*0x0172*/ bool ai0172(void);
/*0x0173*/ bool aiChrCopyProperties(void);
+5 -7
View File
@@ -964,15 +964,13 @@ u8 func0007_alerted[] = {
goto_next(LABEL_GETGUN_FAILED)
label(0x13)
if_gun_landed(TRUE, /*goto*/ 0xb1)
if_gun_landed(/*goto*/ 0xb1)
if_timer_gt(300, /*goto*/ LABEL_GETGUN_FAILED)
goto_first(0xb0)
// Note: When if_gun_landed param is FALSE, it's not actually an if
// statement, but does some task.
label(0xb1)
restart_timer
if_gun_landed(FALSE, /*goto*/ 0xad)
go_to_gun(/*goto*/ 0xad)
beginloop(0xad)
dprint 'G','O',' ','F','O','R',' ','G','U','N','\n',0,
@@ -1252,7 +1250,7 @@ u8 func0007_alerted[] = {
unset_self_flag_bankx(CHRFLAG1_00040000, BANK_1)
unset_self_flag_bankx(CHRFLAG1_00020000, BANK_1)
label(0x16)
cmd0124_run_for_cover_maybe(2)
go_to_cover(SPEED_RUN)
beginloop(0xa6)
if_chr_stopped(/*goto*/ 0xa7)
@@ -1493,7 +1491,7 @@ u8 func0007_alerted[] = {
label(0x16)
say_quip(CHR_BOND, 0x02, 0xff, 0x02, 0x01, BANK_0, 0x00, 0x00)
restart_timer
cmd0124_run_for_cover_maybe(MA_COVERWAIT)
go_to_cover(SPEED_RUN)
beginloop(0x55)
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
@@ -3292,7 +3290,7 @@ u8 func000c_combat_with_target_chr[] = {
label(0x53)
dprint 'G','O',' ','T','O',' ','C','O','V','E','R','\n',0,
say_quip(CHR_BOND, 0x02, 0xff, 0x02, 0x01, BANK_0, 0x00, 0x00)
cmd0124_run_for_cover_maybe(MA_COVERWAIT)
go_to_cover(SPEED_RUN)
restart_timer
beginloop(0xc7)
+2 -2
View File
@@ -14426,7 +14426,7 @@ bool (*g_CommandPointers[])(void) = {
/*0x0121*/ ai0121,
/*0x0122*/ ai0122,
/*0x0123*/ ai0123,
/*0x0124*/ ai0124,
/*0x0124*/ aiGoToCover,
/*0x0125*/ ai0125,
/*0x0126*/ aiIfPlayerUsingCmpOrAr34,
/*0x0127*/ ai0127,
@@ -14502,7 +14502,7 @@ bool (*g_CommandPointers[])(void) = {
/*0x016d*/ aiChrAdjustMotionBlur,
/*0x016e*/ ai016e,
/*0x016f*/ aiIfChrHasGun,
/*0x0170*/ ai0170,
/*0x0170*/ aiDoGunCommand,
/*0x0171*/ aiIfDistanceToGunLessThan,
/*0x0172*/ ai0172,
/*0x0173*/ aiChrCopyProperties,