mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-04 00:20:10 -04:00
feat(decomp): worker gate — +1 fns x0 propagated (fleet 95.2%)
This commit is contained in:
@@ -3488,7 +3488,56 @@ extern s32 func_8012AD50(void *a0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8017BE9C", func_8017E07C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8017BE9C", func_8017E158);
|
||||
#include "common.h"
|
||||
|
||||
/* identical layout to SVECTOR_8016E7C8 (src/shared/engine_types.h);
|
||||
own tag so this draft compiles standalone via match_one (no shared TU). */
|
||||
typedef struct { short vx, vy, vz, pad; } SVEC_8017E158;
|
||||
|
||||
void func_8017E158(SVEC_8017E158 *p0, SVEC_8017E158 *p1) {
|
||||
/* conform to the sibling TU's canon (`extern void func_8012EF70(s32, s32);`)
|
||||
and read the GTE flag through a cast at the call. */
|
||||
extern void func_8012EF70(s32 a0, s32 a1);
|
||||
extern void func_8017E3E0(void *a0, void *a1, void *a2, void *a3);
|
||||
|
||||
SVEC_8017E158 prev;
|
||||
SVEC_8017E158 cur;
|
||||
SVEC_8017E158 lo0;
|
||||
SVEC_8017E158 lo1;
|
||||
SVEC_8017E158 sv0;
|
||||
SVEC_8017E158 sv1;
|
||||
SVEC_8017E158 sv2;
|
||||
SVEC_8017E158 sv3;
|
||||
s32 more;
|
||||
|
||||
more = 1;
|
||||
cur = *p0;
|
||||
do {
|
||||
prev = cur;
|
||||
cur.vz += 0x40;
|
||||
cur.vy = p0->vy + (p1->vy - p0->vy) * (cur.vz - p0->vz) / (p1->vz - p0->vz);
|
||||
if (cur.vz >= p1->vz) {
|
||||
cur.vz = p1->vz;
|
||||
more = 0;
|
||||
}
|
||||
lo0 = prev;
|
||||
lo0.vy -= 4;
|
||||
lo1 = cur;
|
||||
lo1.vy -= 4;
|
||||
if ((((s32 (*)(void *, void *))func_8012EF70)(&lo0, &sv0) & ~0x1000) == 0 &&
|
||||
(((s32 (*)(void *, void *))func_8012EF70)(&lo1, &sv1) & ~0x1000) == 0) {
|
||||
lo0 = prev;
|
||||
lo0.vy += 4;
|
||||
lo1 = cur;
|
||||
lo1.vy += 4;
|
||||
if ((((s32 (*)(void *, void *))func_8012EF70)(&lo0, &sv2) & ~0x1000) == 0 &&
|
||||
(((s32 (*)(void *, void *))func_8012EF70)(&lo1, &sv3) & ~0x1000) == 0) {
|
||||
func_8017E3E0(&sv0, &sv1, &sv2, &sv3);
|
||||
}
|
||||
}
|
||||
} while (more);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user