mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(phase-31): propagate func_80188790 (gate lane)
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user