feat(decomp): propagate func_8017D4F0 (gate lane)

This commit is contained in:
Drew T
2026-08-18 04:19:26 -06:00
parent 6f2c053372
commit b6992adeab
4 changed files with 57 additions and 48 deletions
+7
View File
@@ -15244,3 +15244,10 @@ groups:
func: DEFINE_func_8017ED5C
vram: 0x8017ED5C
binaries: [ov_SC01_005, ov_SC01_006]
- id: E_func_8017D4F0
tier: h_exact
hash: 233ab6ca39239be7aa7a5baeebfb2da70b468452
source: src/shared/engine_core.h
func: DEFINE_func_8017D4F0
vram: 0x8017D4F0
binaries: [ov_SC05_001, ov_SC05_006]
+1 -24
View File
@@ -3483,30 +3483,7 @@ void func_8017D480(void *a0) {
* counter unconditionally (gcc puts that store in the beqz delay slot),
* then either slide @0x2A down by 0x10 or run the 3-call teardown. */
extern void func_80147324(s32 arg0);
extern void func_80147084(s32 *a0);
extern void func_801472B4(void *a0);
extern void func_8017D0F8(int);
void func_8017D4F0(void *a0)
{
s32 t;
s32 *sub;
t = *(s32 *)((s32)a0 + 0x1C);
sub = *(s32 **)((s32)a0 + 0x34);
*(s32 *)((s32)a0 + 0x1C) = t + 1;
if (t < 0x20) {
*(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10;
} else {
func_80147324(*(u16 *)((s32)a0 + 0x2C));
func_80147084(sub);
func_801472B4(sub);
*(s32 *)((s32)a0 + 0x1C) = 0;
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1;
}
((void (*)(void *))func_8017D0F8)(a0);
}
DEFINE_func_8017D4F0() /* dedup: shared engine-core @0x8017D4F0 (src/shared) */
+1 -24
View File
@@ -3480,30 +3480,7 @@ void func_8017D480(void *a0) {
* counter unconditionally (gcc puts that store in the beqz delay slot),
* then either slide @0x2A down by 0x10 or run the 3-call teardown. */
extern void func_80147324(s32 arg0);
extern void func_80147084(s32 *a0);
extern void func_801472B4(void *a0);
extern void func_8017D0F8(int);
void func_8017D4F0(void *a0)
{
s32 t;
s32 *sub;
t = *(s32 *)((s32)a0 + 0x1C);
sub = *(s32 **)((s32)a0 + 0x34);
*(s32 *)((s32)a0 + 0x1C) = t + 1;
if (t < 0x20) {
*(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10;
} else {
func_80147324(*(u16 *)((s32)a0 + 0x2C));
func_80147084(sub);
func_801472B4(sub);
*(s32 *)((s32)a0 + 0x1C) = 0;
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1;
}
((void (*)(void *))func_8017D0F8)(a0);
}
DEFINE_func_8017D4F0() /* dedup: shared engine-core @0x8017D4F0 (src/shared) */
+48
View File
@@ -65900,6 +65900,30 @@
return result; \
}
#define DEFINE_func_8017D4F0() \
extern void func_80147324(s32 arg0); \
extern void func_80147084(s32 *a0); \
extern void func_801472B4(void *a0); \
extern void func_8017D0F8(int); \
void func_8017D4F0(void *a0) \
{ \
s32 t; \
s32 *sub; \
t = *(s32 *)((s32)a0 + 0x1C); \
sub = *(s32 **)((s32)a0 + 0x34); \
*(s32 *)((s32)a0 + 0x1C) = t + 1; \
if (t < 0x20) { \
*(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; \
} else { \
func_80147324(*(u16 *)((s32)a0 + 0x2C)); \
func_80147084(sub); \
func_801472B4(sub); \
*(s32 *)((s32)a0 + 0x1C) = 0; \
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \
} \
((void (*)(void *))func_8017D0F8)(a0); \
}
#endif
#define DEFINE_func_80128EA8() \
@@ -161205,4 +161229,28 @@
return result; \
}
#define DEFINE_func_8017D4F0() \
extern void func_80147324(s32 arg0); \
extern void func_80147084(s32 *a0); \
extern void func_801472B4(void *a0); \
extern void func_8017D0F8(int); \
void func_8017D4F0(void *a0) \
{ \
s32 t; \
s32 *sub; \
t = *(s32 *)((s32)a0 + 0x1C); \
sub = *(s32 **)((s32)a0 + 0x34); \
*(s32 *)((s32)a0 + 0x1C) = t + 1; \
if (t < 0x20) { \
*(u16 *)((s32)a0 + 0x2A) = *(u16 *)((s32)a0 + 0x2A) - 0x10; \
} else { \
func_80147324(*(u16 *)((s32)a0 + 0x2C)); \
func_80147084(sub); \
func_801472B4(sub); \
*(s32 *)((s32)a0 + 0x1C) = 0; \
*(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; \
} \
((void (*)(void *))func_8017D0F8)(a0); \
}
#endif