feat(decomp): propagate func_801860C0 (gate lane)

This commit is contained in:
Drew T
2026-08-17 14:07:04 -06:00
parent a6541fd87e
commit cbf9c3faae
4 changed files with 57 additions and 53 deletions
+7
View File
@@ -15160,3 +15160,10 @@ groups:
func: DEFINE_func_8018655C
vram: 0x8018655C
binaries: [ov_SC03_014, ov_SC03_015]
- id: E_func_801860C0
tier: h_exact
hash: e5cac5b36df8b42b6858b4f2d80a3c9a171b1cb6
source: src/shared/engine_core.h
func: DEFINE_func_801860C0
vram: 0x801860C0
binaries: [ov_SC04_018, ov_SC04_019]
+1 -26
View File
@@ -3220,32 +3220,7 @@ void func_8018602C(s32 a0, s32 a1) {
DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32, s32);
extern s32 D_801B8A2C;
void func_801860C0(void *a0)
{
s32 v0;
u16 v0_2;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((u8 *)a0 + 0x20) = v0;
if (v0 == 0) {
((void (*)(void *))func_8012CAE4)(a0);
} else {
((void (*)(s32, s32))func_8001C214)(v0, 0);
*(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000;
v0_2 = *(u16 *)((u8 *)a0 + 0x2);
*(u16 *)((u8 *)a0 + 0x34) = 0;
*(s32 *)((u8 *)a0 + 0x1C) = 0;
*(u16 *)((u8 *)a0 + 0x5C) = 0x800;
*(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1;
}
}
DEFINE_func_801860C0() /* dedup: shared engine-core @0x801860C0 (src/shared) */
/* func_8018613C — scan the 96-entry / 0x10C-stride D_801202A0 actor table for
+1 -27
View File
@@ -3182,33 +3182,7 @@ DEFINE_func_80186084() /* dedup: shared engine-core @0x80186084 (src/shared) */
extern void func_8012C1B8(void);
extern void func_8012CAE4(void *a0);
extern void func_8001C214(s32, s32);
void func_801860C0(void *a0)
{
extern s32 D_801B8A2C;
s32 v0;
u16 v0_2;
v0 = ((s32 (*)(void))func_8012C1B8)();
*(s32 *)((u8 *)a0 + 0x20) = v0;
if (v0 == 0) {
((void (*)(void *))func_8012CAE4)(a0);
} else {
((void (*)(s32, s32))func_8001C214)(v0, 0);
*(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000;
v0_2 = *(u16 *)((u8 *)a0 + 0x2);
*(u16 *)((u8 *)a0 + 0x34) = 0;
*(s32 *)((u8 *)a0 + 0x1C) = 0;
*(u16 *)((u8 *)a0 + 0x5C) = 0x800;
*(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1;
}
}
DEFINE_func_801860C0() /* dedup: shared engine-core @0x801860C0 (src/shared) */
+48
View File
@@ -65565,6 +65565,30 @@
} \
}
#define DEFINE_func_801860C0() \
extern void func_8012C1B8(void); \
extern void func_8012CAE4(void *a0); \
extern void func_8001C214(s32, s32); \
extern s32 D_801B8A2C; \
void func_801860C0(void *a0) \
{ \
s32 v0; \
u16 v0_2; \
v0 = ((s32 (*)(void))func_8012C1B8)(); \
*(s32 *)((u8 *)a0 + 0x20) = v0; \
if (v0 == 0) { \
((void (*)(void *))func_8012CAE4)(a0); \
} else { \
((void (*)(s32, s32))func_8001C214)(v0, 0); \
*(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; \
v0_2 = *(u16 *)((u8 *)a0 + 0x2); \
*(u16 *)((u8 *)a0 + 0x34) = 0; \
*(s32 *)((u8 *)a0 + 0x1C) = 0; \
*(u16 *)((u8 *)a0 + 0x5C) = 0x800; \
*(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; \
} \
}
#endif
#define DEFINE_func_80128EA8() \
@@ -160535,4 +160559,28 @@
} \
}
#define DEFINE_func_801860C0() \
extern void func_8012C1B8(void); \
extern void func_8012CAE4(void *a0); \
extern void func_8001C214(s32, s32); \
extern s32 D_801B8A2C; \
void func_801860C0(void *a0) \
{ \
s32 v0; \
u16 v0_2; \
v0 = ((s32 (*)(void))func_8012C1B8)(); \
*(s32 *)((u8 *)a0 + 0x20) = v0; \
if (v0 == 0) { \
((void (*)(void *))func_8012CAE4)(a0); \
} else { \
((void (*)(s32, s32))func_8001C214)(v0, 0); \
*(s32 *)((u8 *)a0 + 0x58) = (s32)&D_801B8A2C | 0x40000000; \
v0_2 = *(u16 *)((u8 *)a0 + 0x2); \
*(u16 *)((u8 *)a0 + 0x34) = 0; \
*(s32 *)((u8 *)a0 + 0x1C) = 0; \
*(u16 *)((u8 *)a0 + 0x5C) = 0x800; \
*(u16 *)((u8 *)a0 + 0x2) = v0_2 + 1; \
} \
}
#endif