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

This commit is contained in:
Drew T
2026-08-15 08:06:22 -06:00
parent 3f31273793
commit ccf48cf090
4 changed files with 93 additions and 43 deletions
+7
View File
@@ -14992,3 +14992,10 @@ groups:
func: DEFINE_func_8018825C
vram: 0x8018825C
binaries: [ov_SC02_000, ov_SC02_003]
- id: E_func_80188790
tier: h_exact
hash: 61b78167872ccf36a8c67d03f5949eeb04714a92
source: src/shared/engine_core.h
func: DEFINE_func_80188790
vram: 0x80188790
binaries: [ov_SC02_000, ov_SC02_003]
+1 -42
View File
@@ -4891,48 +4891,7 @@ void func_80188754(void *a0) {
* gets shift 2 and is wrong).
*/
extern s32 rand(void);
extern u8 *func_8012913C(s32 a0);
extern s32 func_8012BEE8(s32 a0);
extern void func_8012C218(void *a0);
extern s32 D_80126B58;
void func_80188790(s32 a0) {
s32 kind;
register u16 *tp __asm__("$19");
s32 s4;
u8 *v1;
s32 r0;
s32 r2;
s32 r3;
s32 s1;
s32 fE;
r0 = rand();
tp = (u16 *)&D_80126B58;
__asm__ __volatile__("" : "=r"(tp) : "0"(tp));
s4 = *(s32 *)(a0 + 0x1C);
kind = (r0 & 1) ? 0xF : 0xE;
v1 = func_8012913C(kind);
if (v1 != 0) {
r2 = rand();
s1 = r2 - (r2 / 256) * 256;
r3 = rand();
fE = tp[7] + (r3 % 640) - 0x290;
*(u16 *)(v1 + 0xE) = fE;
if (s4 & 1) {
*(u16 *)(v1 + 0x6) = s1 + 0x7A;
*(u16 *)(v1 + 0xA) = tp[5] - 0xE0;
} else {
*(u16 *)(v1 + 0x6) = s1 - 0xF8;
*(u16 *)(v1 + 0xA) = tp[5] - 0xC0;
}
*(u16 *)(v1 + 0x36) = tp[5] - 0x50;
}
if (func_8012BEE8(a0) == 1) {
func_8012C218((void *)a0);
}
}
DEFINE_func_80188790() /* dedup: shared engine-core @0x80188790 (src/shared) */
extern void func_8012AD44(s32 *a0, s16 a1);
+1 -1
View File
@@ -3498,7 +3498,7 @@ void func_80188754(void *a0) {
}
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8018173C", func_80188790);
DEFINE_func_80188790() /* dedup: shared engine-core @0x80188790 (src/shared) */
extern void func_8012AD44(s32 *a0, s16 a1);
void func_801888CC(void *a0) {
+84
View File
@@ -61862,6 +61862,48 @@
} \
}
#define DEFINE_func_80188790() \
extern s32 rand(void); \
extern u8 *func_8012913C(s32 a0); \
extern s32 func_8012BEE8(s32 a0); \
extern void func_8012C218(void *a0); \
extern s32 D_80126B58; \
void func_80188790(s32 a0) { \
s32 kind; \
register u16 *tp __asm__("$19"); \
s32 s4; \
u8 *v1; \
s32 r0; \
s32 r2; \
s32 r3; \
s32 s1; \
s32 fE; \
r0 = rand(); \
tp = (u16 *)&D_80126B58; \
__asm__ __volatile__("" : "=r"(tp) : "0"(tp)); \
s4 = *(s32 *)(a0 + 0x1C); \
kind = (r0 & 1) ? 0xF : 0xE; \
v1 = func_8012913C(kind); \
if (v1 != 0) { \
r2 = rand(); \
s1 = r2 - (r2 / 256) * 256; \
r3 = rand(); \
fE = tp[7] + (r3 % 640) - 0x290; \
*(u16 *)(v1 + 0xE) = fE; \
if (s4 & 1) { \
*(u16 *)(v1 + 0x6) = s1 + 0x7A; \
*(u16 *)(v1 + 0xA) = tp[5] - 0xE0; \
} else { \
*(u16 *)(v1 + 0x6) = s1 - 0xF8; \
*(u16 *)(v1 + 0xA) = tp[5] - 0xC0; \
} \
*(u16 *)(v1 + 0x36) = tp[5] - 0x50; \
} \
if (func_8012BEE8(a0) == 1) { \
func_8012C218((void *)a0); \
} \
}
#endif
#define DEFINE_func_80128EA8() \
@@ -153129,4 +153171,46 @@
} \
}
#define DEFINE_func_80188790() \
extern s32 rand(void); \
extern u8 *func_8012913C(s32 a0); \
extern s32 func_8012BEE8(s32 a0); \
extern void func_8012C218(void *a0); \
extern s32 D_80126B58; \
void func_80188790(s32 a0) { \
s32 kind; \
register u16 *tp __asm__("$19"); \
s32 s4; \
u8 *v1; \
s32 r0; \
s32 r2; \
s32 r3; \
s32 s1; \
s32 fE; \
r0 = rand(); \
tp = (u16 *)&D_80126B58; \
__asm__ __volatile__("" : "=r"(tp) : "0"(tp)); \
s4 = *(s32 *)(a0 + 0x1C); \
kind = (r0 & 1) ? 0xF : 0xE; \
v1 = func_8012913C(kind); \
if (v1 != 0) { \
r2 = rand(); \
s1 = r2 - (r2 / 256) * 256; \
r3 = rand(); \
fE = tp[7] + (r3 % 640) - 0x290; \
*(u16 *)(v1 + 0xE) = fE; \
if (s4 & 1) { \
*(u16 *)(v1 + 0x6) = s1 + 0x7A; \
*(u16 *)(v1 + 0xA) = tp[5] - 0xE0; \
} else { \
*(u16 *)(v1 + 0x6) = s1 - 0xF8; \
*(u16 *)(v1 + 0xA) = tp[5] - 0xC0; \
} \
*(u16 *)(v1 + 0x36) = tp[5] - 0x50; \
} \
if (func_8012BEE8(a0) == 1) { \
func_8012C218((void *)a0); \
} \
}
#endif