feat(phase-31): propagate func_80187DB8 (gate lane)

This commit is contained in:
Drew T
2026-08-15 08:08:00 -06:00
parent f59b0fdc75
commit 0b838da46c
4 changed files with 83 additions and 43 deletions
+7
View File
@@ -15048,3 +15048,10 @@ groups:
func: DEFINE_func_801884FC
vram: 0x801884FC
binaries: [ov_SC02_000, ov_SC02_003]
- id: E_func_80187DB8
tier: h_exact
hash: 2dfcb44952b0ef59cd8f9a6f45014dc41d7ca790
source: src/shared/engine_core.h
func: DEFINE_func_80187DB8
vram: 0x80187DB8
binaries: [ov_SC02_000, ov_SC02_003]
+1 -42
View File
@@ -4437,48 +4437,7 @@ INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80187B4
#include "common.h"
extern s32 func_80187F30(void*, s32);
extern s32 func_80143BDC(u16*);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012C218(void *a0);
extern u16 D_80126B66;
void func_80187DB8(s32 param_1) {
u16 sp10[3];
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) =
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100;
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) =
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40;
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) =
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58;
if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) {
s32 t0, t1, t2, t3;
sp10[0] = *(u16 *)(param_1 + 0x6);
sp10[1] = *(u16 *)(param_1 + 0xA);
sp10[2] = *(u16 *)(param_1 + 0xE);
((void (*)(u16 *))func_80143BDC)(sp10);
t0 = *(s32 *)(param_1 + 0xE0);
t1 = *(s32 *)(param_1 + 0xE4);
t2 = *(s32 *)(param_1 + 0xE8);
t3 = *(s32 *)(param_1 + 0xDC);
*(s32 *)(param_1 + 0x4C) = 0;
*(s32 *)(param_1 + 0x44) = 0;
*(s32 *)(param_1 + 0x10) = t0;
*(s32 *)(param_1 + 0x14) = t1;
*(s32 *)(param_1 + 0x18) = t2;
*(s32 *)(param_1 + 0x48) = t3;
}
if (func_8012BEE8(param_1) == 1 ||
(s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) {
func_8012C218((void *)param_1);
}
}
DEFINE_func_80187DB8() /* dedup: shared engine-core @0x80187DB8 (src/shared) */
extern void func_8012AD80(s32 a0);
+1 -1
View File
@@ -3420,7 +3420,7 @@ INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_8018798
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80187B40);
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80187DB8);
DEFINE_func_80187DB8() /* dedup: shared engine-core @0x80187DB8 (src/shared) */
extern void func_8012AD80(s32 a0);
extern void func_8012C218(void *a0);
+74
View File
@@ -62171,6 +62171,43 @@
return 0; \
}
#define DEFINE_func_80187DB8() \
extern s32 func_80187F30(void*, s32); \
extern s32 func_80143BDC(u16*); \
extern s32 func_8012BEE8(s32 a0); \
extern void func_8012C218(void *a0); \
extern u16 D_80126B66; \
void func_80187DB8(s32 param_1) { \
u16 sp10[3]; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58; \
if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) { \
s32 t0, t1, t2, t3; \
sp10[0] = *(u16 *)(param_1 + 0x6); \
sp10[1] = *(u16 *)(param_1 + 0xA); \
sp10[2] = *(u16 *)(param_1 + 0xE); \
((void (*)(u16 *))func_80143BDC)(sp10); \
t0 = *(s32 *)(param_1 + 0xE0); \
t1 = *(s32 *)(param_1 + 0xE4); \
t2 = *(s32 *)(param_1 + 0xE8); \
t3 = *(s32 *)(param_1 + 0xDC); \
*(s32 *)(param_1 + 0x4C) = 0; \
*(s32 *)(param_1 + 0x44) = 0; \
*(s32 *)(param_1 + 0x10) = t0; \
*(s32 *)(param_1 + 0x14) = t1; \
*(s32 *)(param_1 + 0x18) = t2; \
*(s32 *)(param_1 + 0x48) = t3; \
} \
if (func_8012BEE8(param_1) == 1 || \
(s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) { \
func_8012C218((void *)param_1); \
} \
}
#endif
#define DEFINE_func_80128EA8() \
@@ -153747,4 +153784,41 @@
return 0; \
}
#define DEFINE_func_80187DB8() \
extern s32 func_80187F30(void*, s32); \
extern s32 func_80143BDC(u16*); \
extern s32 func_8012BEE8(s32 a0); \
extern void func_8012C218(void *a0); \
extern u16 D_80126B66; \
void func_80187DB8(s32 param_1) { \
u16 sp10[3]; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = \
*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + 0x58; \
if (((s32 (*)(s32, s32))func_80187F30)(param_1, 1) != 0) { \
s32 t0, t1, t2, t3; \
sp10[0] = *(u16 *)(param_1 + 0x6); \
sp10[1] = *(u16 *)(param_1 + 0xA); \
sp10[2] = *(u16 *)(param_1 + 0xE); \
((void (*)(u16 *))func_80143BDC)(sp10); \
t0 = *(s32 *)(param_1 + 0xE0); \
t1 = *(s32 *)(param_1 + 0xE4); \
t2 = *(s32 *)(param_1 + 0xE8); \
t3 = *(s32 *)(param_1 + 0xDC); \
*(s32 *)(param_1 + 0x4C) = 0; \
*(s32 *)(param_1 + 0x44) = 0; \
*(s32 *)(param_1 + 0x10) = t0; \
*(s32 *)(param_1 + 0x14) = t1; \
*(s32 *)(param_1 + 0x18) = t2; \
*(s32 *)(param_1 + 0x48) = t3; \
} \
if (func_8012BEE8(param_1) == 1 || \
(s32)(s16)D_80126B66 - 0x200 < *(s16 *)(param_1 + 0x6)) { \
func_8012C218((void *)param_1); \
} \
}
#endif