diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8013FFD8.c b/src/ov_SC01_001/ov_SC01_001_jr_8013FFD8.c index 33a8ee1c1..79434ea67 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_8013FFD8.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80184BD0; +extern s16 D_80184BD2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80184870; + extern u8 D_80184888; + extern u8 D_801848FC; + extern u8 D_80184904; + extern void *D_801EC7B0; + extern void *D_801EC7B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801EC7B0 = &D_80184870; + D_801EC7B4 = &D_801848FC; + } else { + D_801EC7B0 = &D_80184888; + D_801EC7B4 = &D_80184904; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80184BD0 = 0xE; + D_80184BD2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8016AB6C.c b/src/ov_SC01_001/ov_SC01_001_jr_8016AB6C.c index a97256c3c..f2a22a284 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_8016AB6C.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801ED4A8; + extern s16 D_801ED4AC; + extern u8 D_80186B5C[]; + extern u8 D_80186B68[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801ED4A8 != *(s16 *)(iVar4 + 6)) || (D_801ED4AC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80186B5C, 0x18), iVar2 != 0)) { + D_801ED4A8 = *(u16 *)(iVar4 + 6); + D_801ED4AC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80186B68); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80186B88[])(void); diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8013FFD8.c b/src/ov_SC01_004/ov_SC01_004_jr_8013FFD8.c index edadac72c..2c90af2e0 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_8013FFD8.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180594; +extern s16 D_80180596; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180234; + extern u8 D_8018024C; + extern u8 D_801802C0; + extern u8 D_801802C8; + extern void *D_8018EF18; + extern void *D_8018EF1C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018EF18 = &D_80180234; + D_8018EF1C = &D_801802C0; + } else { + D_8018EF18 = &D_8018024C; + D_8018EF1C = &D_801802C8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180594 = 0xE; + D_80180596 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8016AB6C.c b/src/ov_SC01_004/ov_SC01_004_jr_8016AB6C.c index 2c74079f9..a6290c1c8 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_8016AB6C.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018FC10; + extern s16 D_8018FC14; + extern u8 D_80182520[]; + extern u8 D_8018252C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018FC10 != *(s16 *)(iVar4 + 6)) || (D_8018FC14 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182520, 0x18), iVar2 != 0)) { + D_8018FC10 = *(u16 *)(iVar4 + 6); + D_8018FC14 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018252C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018254C[])(void); diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8013FFD8.c b/src/ov_SC01_005/ov_SC01_005_jr_8013FFD8.c index b0bfd7ab8..8c82608a1 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_8013FFD8.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183728; +extern s16 D_8018372A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801833C8; + extern u8 D_801833E0; + extern u8 D_80183454; + extern u8 D_8018345C; + extern void *D_801CC678; + extern void *D_801CC67C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CC678 = &D_801833C8; + D_801CC67C = &D_80183454; + } else { + D_801CC678 = &D_801833E0; + D_801CC67C = &D_8018345C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183728 = 0xE; + D_8018372A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8016AB6C.c b/src/ov_SC01_005/ov_SC01_005_jr_8016AB6C.c index e1c052797..f09e75b9d 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_8016AB6C.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_8016AB6C.c @@ -3230,7 +3230,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CD370; + extern s16 D_801CD374; + extern u8 D_801856B4[]; + extern u8 D_801856C0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CD370 != *(s16 *)(iVar4 + 6)) || (D_801CD374 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801856B4, 0x18), iVar2 != 0)) { + D_801CD370 = *(u16 *)(iVar4 + 6); + D_801CD374 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801856C0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801856E0[])(void); diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8013FFD8.c b/src/ov_SC01_006/ov_SC01_006_jr_8013FFD8.c index 8f8bb72ed..be8fa8fee 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8013FFD8.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183728; +extern s16 D_8018372A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801833C8; + extern u8 D_801833E0; + extern u8 D_80183454; + extern u8 D_8018345C; + extern void *D_801CC678; + extern void *D_801CC67C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CC678 = &D_801833C8; + D_801CC67C = &D_80183454; + } else { + D_801CC678 = &D_801833E0; + D_801CC67C = &D_8018345C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183728 = 0xE; + D_8018372A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.c b/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.c index 21088a156..636d72a9a 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.c @@ -3230,7 +3230,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CD370; + extern s16 D_801CD374; + extern u8 D_801856B4[]; + extern u8 D_801856C0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CD370 != *(s16 *)(iVar4 + 6)) || (D_801CD374 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801856B4, 0x18), iVar2 != 0)) { + D_801CD370 = *(u16 *)(iVar4 + 6); + D_801CD374 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801856C0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801856E0[])(void); diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8013FFD8.c b/src/ov_SC01_008/ov_SC01_008_jr_8013FFD8.c index 05c92582b..196f02525 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8013FFD8.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180B08; +extern s16 D_80180B0A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801807A8; + extern u8 D_801807C0; + extern u8 D_80180834; + extern u8 D_8018083C; + extern void *D_801A2128; + extern void *D_801A212C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A2128 = &D_801807A8; + D_801A212C = &D_80180834; + } else { + D_801A2128 = &D_801807C0; + D_801A212C = &D_8018083C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180B08 = 0xE; + D_80180B0A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8016AB6C.c b/src/ov_SC01_008/ov_SC01_008_jr_8016AB6C.c index 614172b04..1724bd4f2 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8016AB6C.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A2E20; + extern s16 D_801A2E24; + extern u8 D_80182A94[]; + extern u8 D_80182AA0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A2E20 != *(s16 *)(iVar4 + 6)) || (D_801A2E24 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182A94, 0x18), iVar2 != 0)) { + D_801A2E20 = *(u16 *)(iVar4 + 6); + D_801A2E24 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182AA0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80182AC0[])(void); diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8013FFD8.c b/src/ov_SC01_009/ov_SC01_009_jr_8013FFD8.c index a367db0cb..4c2690da7 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8013FFD8.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183CF0; +extern s16 D_80183CF2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183990; + extern u8 D_801839A8; + extern u8 D_80183A1C; + extern u8 D_80183A24; + extern void *D_801F1F88; + extern void *D_801F1F8C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801F1F88 = &D_80183990; + D_801F1F8C = &D_80183A1C; + } else { + D_801F1F88 = &D_801839A8; + D_801F1F8C = &D_80183A24; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183CF0 = 0xE; + D_80183CF2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8016AB6C.c b/src/ov_SC01_009/ov_SC01_009_jr_8016AB6C.c index 35231d7aa..fdd4ee1e9 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8016AB6C.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801F2C80; + extern s16 D_801F2C84; + extern u8 D_80185C7C[]; + extern u8 D_80185C88[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801F2C80 != *(s16 *)(iVar4 + 6)) || (D_801F2C84 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185C7C, 0x18), iVar2 != 0)) { + D_801F2C80 = *(u16 *)(iVar4 + 6); + D_801F2C84 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185C88); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185CA8[])(void); diff --git a/src/ov_SC01_074/ov_SC01_074_jr_8013FFD8.c b/src/ov_SC01_074/ov_SC01_074_jr_8013FFD8.c index 651d9904b..8f539a2ee 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_8013FFD8.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F970; +extern s16 D_8017F972; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F610; + extern u8 D_8017F628; + extern u8 D_8017F69C; + extern u8 D_8017F6A4; + extern void *D_8019AA08; + extern void *D_8019AA0C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019AA08 = &D_8017F610; + D_8019AA0C = &D_8017F69C; + } else { + D_8019AA08 = &D_8017F628; + D_8019AA0C = &D_8017F6A4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F970 = 0xE; + D_8017F972 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_074/ov_SC01_074_jr_8016AB6C.c b/src/ov_SC01_074/ov_SC01_074_jr_8016AB6C.c index 3614bb04d..f469f4546 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_8016AB6C.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019B700; + extern s16 D_8019B704; + extern u8 D_801818FC[]; + extern u8 D_80181908[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019B700 != *(s16 *)(iVar4 + 6)) || (D_8019B704 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801818FC, 0x18), iVar2 != 0)) { + D_8019B700 = *(u16 *)(iVar4 + 6); + D_8019B704 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181908); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181928[])(void); diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8013FFD8.c b/src/ov_SC01_080/ov_SC01_080_jr_8013FFD8.c index 404dbe63e..595990a9b 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_8013FFD8.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801848D0; +extern s16 D_801848D2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80184570; + extern u8 D_80184588; + extern u8 D_801845FC; + extern u8 D_80184604; + extern void *D_801C4838; + extern void *D_801C483C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C4838 = &D_80184570; + D_801C483C = &D_801845FC; + } else { + D_801C4838 = &D_80184588; + D_801C483C = &D_80184604; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801848D0 = 0xE; + D_801848D2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8016AB6C.c b/src/ov_SC01_080/ov_SC01_080_jr_8016AB6C.c index d14b6e2de..f6f4b4a4e 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_8016AB6C.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C5530; + extern s16 D_801C5534; + extern u8 D_8018685C[]; + extern u8 D_80186868[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C5530 != *(s16 *)(iVar4 + 6)) || (D_801C5534 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018685C, 0x18), iVar2 != 0)) { + D_801C5530 = *(u16 *)(iVar4 + 6); + D_801C5534 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80186868); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80186888[])(void); diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8013FFD8.c b/src/ov_SC01_084/ov_SC01_084_jr_8013FFD8.c index fce100b10..4a0b0fda1 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8013FFD8.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80187BC4; +extern s16 D_80187BC6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80187864; + extern u8 D_8018787C; + extern u8 D_801878F0; + extern u8 D_801878F8; + extern void *D_801C62E0; + extern void *D_801C62E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C62E0 = &D_80187864; + D_801C62E4 = &D_801878F0; + } else { + D_801C62E0 = &D_8018787C; + D_801C62E4 = &D_801878F8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80187BC4 = 0xE; + D_80187BC6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8016AB6C.c b/src/ov_SC01_084/ov_SC01_084_jr_8016AB6C.c index fb4d4aff1..d17d66c92 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8016AB6C.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8016AB6C.c @@ -3230,7 +3230,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C6FD8; + extern s16 D_801C6FDC; + extern u8 D_80189B50[]; + extern u8 D_80189B5C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C6FD8 != *(s16 *)(iVar4 + 6)) || (D_801C6FDC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189B50, 0x18), iVar2 != 0)) { + D_801C6FD8 = *(u16 *)(iVar4 + 6); + D_801C6FDC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80189B5C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80189B7C[])(void); diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8013FFD8.c b/src/ov_SC02_000/ov_SC02_000_jr_8013FFD8.c index ba59a5b9f..1a1efd99d 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8013FFD8.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018BF74; +extern s16 D_8018BF76; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018BC14; + extern u8 D_8018BC2C; + extern u8 D_8018BCA0; + extern u8 D_8018BCA8; + extern void *D_801E6E10; + extern void *D_801E6E14; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E6E10 = &D_8018BC14; + D_801E6E14 = &D_8018BCA0; + } else { + D_801E6E10 = &D_8018BC2C; + D_801E6E14 = &D_8018BCA8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018BF74 = 0xE; + D_8018BF76 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8016AB6C.c b/src/ov_SC02_000/ov_SC02_000_jr_8016AB6C.c index 63bfe17a3..4abd57a0f 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8016AB6C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8016AB6C.c @@ -3227,7 +3227,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E7B08; + extern s16 D_801E7B0C; + extern u8 D_8018DF00[]; + extern u8 D_8018DF0C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E7B08 != *(s16 *)(iVar4 + 6)) || (D_801E7B0C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018DF00, 0x18), iVar2 != 0)) { + D_801E7B08 = *(u16 *)(iVar4 + 6); + D_801E7B0C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018DF0C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018DF2C[])(void); diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c b/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c index 72e97ef57..f3d8f58e6 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018BF74; +extern s16 D_8018BF76; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018BC14; + extern u8 D_8018BC2C; + extern u8 D_8018BCA0; + extern u8 D_8018BCA8; + extern void *D_801E6E10; + extern void *D_801E6E14; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E6E10 = &D_8018BC14; + D_801E6E14 = &D_8018BCA0; + } else { + D_801E6E10 = &D_8018BC2C; + D_801E6E14 = &D_8018BCA8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018BF74 = 0xE; + D_8018BF76 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c b/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c index 814f85eae..6f5e3140e 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c @@ -3227,7 +3227,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E7B08; + extern s16 D_801E7B0C; + extern u8 D_8018DF00[]; + extern u8 D_8018DF0C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E7B08 != *(s16 *)(iVar4 + 6)) || (D_801E7B0C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018DF00, 0x18), iVar2 != 0)) { + D_801E7B08 = *(u16 *)(iVar4 + 6); + D_801E7B0C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018DF0C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018DF2C[])(void); diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8013FFD8.c b/src/ov_SC02_004/ov_SC02_004_jr_8013FFD8.c index 173cca58a..55cbb3217 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_8013FFD8.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F054; +extern s16 D_8017F056; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017ECF4; + extern u8 D_8017ED0C; + extern u8 D_8017ED80; + extern u8 D_8017ED88; + extern void *D_80195060; + extern void *D_80195064; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80195060 = &D_8017ECF4; + D_80195064 = &D_8017ED80; + } else { + D_80195060 = &D_8017ED0C; + D_80195064 = &D_8017ED88; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F054 = 0xE; + D_8017F056 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8016AB6C.c b/src/ov_SC02_004/ov_SC02_004_jr_8016AB6C.c index 9026c4846..88400cc1c 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_8016AB6C.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80195D58; + extern s16 D_80195D5C; + extern u8 D_80180FE0[]; + extern u8 D_80180FEC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80195D58 != *(s16 *)(iVar4 + 6)) || (D_80195D5C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80180FE0, 0x18), iVar2 != 0)) { + D_80195D58 = *(u16 *)(iVar4 + 6); + D_80195D5C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80180FEC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018100C[])(void); diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.c b/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.c index 1b69a5aad..250fbd8ac 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80191C58; +extern s16 D_80191C5A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801918F8; + extern u8 D_80191910; + extern u8 D_80191984; + extern u8 D_8019198C; + extern void *D_801E30D8; + extern void *D_801E30DC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E30D8 = &D_801918F8; + D_801E30DC = &D_80191984; + } else { + D_801E30D8 = &D_80191910; + D_801E30DC = &D_8019198C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80191C58 = 0xE; + D_80191C5A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.c b/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.c index 396d0d1b2..d460e1767 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.c @@ -3231,7 +3231,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E3DD0; + extern s16 D_801E3DD4; + extern u8 D_80193BE4[]; + extern u8 D_80193BF0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E3DD0 != *(s16 *)(iVar4 + 6)) || (D_801E3DD4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80193BE4, 0x18), iVar2 != 0)) { + D_801E3DD0 = *(u16 *)(iVar4 + 6); + D_801E3DD4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80193BF0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80193C10[])(void); diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8013FFD8.c b/src/ov_SC02_011/ov_SC02_011_jr_8013FFD8.c index 7583d3a32..91636c0ee 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8013FFD8.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801920A8; +extern s16 D_801920AA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80191D48; + extern u8 D_80191D60; + extern u8 D_80191DD4; + extern u8 D_80191DDC; + extern void *D_801E9FB8; + extern void *D_801E9FBC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E9FB8 = &D_80191D48; + D_801E9FBC = &D_80191DD4; + } else { + D_801E9FB8 = &D_80191D60; + D_801E9FBC = &D_80191DDC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801920A8 = 0xE; + D_801920AA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.c b/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.c index 6a29cd797..6492237c0 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EACB0; + extern s16 D_801EACB4; + extern u8 D_80194034[]; + extern u8 D_80194040[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EACB0 != *(s16 *)(iVar4 + 6)) || (D_801EACB4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80194034, 0x18), iVar2 != 0)) { + D_801EACB0 = *(u16 *)(iVar4 + 6); + D_801EACB4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80194040); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80194060[])(void); diff --git a/src/ov_SC02_015/ov_SC02_015_jr_8013FFD8.c b/src/ov_SC02_015/ov_SC02_015_jr_8013FFD8.c index ed0a71b84..f2ad1a77d 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_8013FFD8.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F5BC; +extern s16 D_8017F5BE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F25C; + extern u8 D_8017F274; + extern u8 D_8017F2E8; + extern u8 D_8017F2F0; + extern void *D_8018F138; + extern void *D_8018F13C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018F138 = &D_8017F25C; + D_8018F13C = &D_8017F2E8; + } else { + D_8018F138 = &D_8017F274; + D_8018F13C = &D_8017F2F0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F5BC = 0xE; + D_8017F5BE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_015/ov_SC02_015_jr_8016AB6C.c b/src/ov_SC02_015/ov_SC02_015_jr_8016AB6C.c index 8a651b748..466e326fc 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_8016AB6C.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_8016AB6C.c @@ -3227,7 +3227,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018FE30; + extern s16 D_8018FE34; + extern u8 D_80181548[]; + extern u8 D_80181554[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018FE30 != *(s16 *)(iVar4 + 6)) || (D_8018FE34 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181548, 0x18), iVar2 != 0)) { + D_8018FE30 = *(u16 *)(iVar4 + 6); + D_8018FE34 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181554); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181574[])(void); diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8013FFD8.c b/src/ov_SC02_016/ov_SC02_016_jr_8013FFD8.c index 313919f6e..667949f08 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8013FFD8.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801857F4; +extern s16 D_801857F6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185494; + extern u8 D_801854AC; + extern u8 D_80185520; + extern u8 D_80185528; + extern void *D_801B2D50; + extern void *D_801B2D54; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B2D50 = &D_80185494; + D_801B2D54 = &D_80185520; + } else { + D_801B2D50 = &D_801854AC; + D_801B2D54 = &D_80185528; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801857F4 = 0xE; + D_801857F6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8016AB6C.c b/src/ov_SC02_016/ov_SC02_016_jr_8016AB6C.c index f4f0692ac..75614497f 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8016AB6C.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B3A48; + extern s16 D_801B3A4C; + extern u8 D_80187780[]; + extern u8 D_8018778C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B3A48 != *(s16 *)(iVar4 + 6)) || (D_801B3A4C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187780, 0x18), iVar2 != 0)) { + D_801B3A48 = *(u16 *)(iVar4 + 6); + D_801B3A4C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018778C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801877AC[])(void); diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8013FFD8.c b/src/ov_SC02_017/ov_SC02_017_jr_8013FFD8.c index 04d543434..05aa8c3f1 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8013FFD8.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018B84C; +extern s16 D_8018B84E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018B4EC; + extern u8 D_8018B504; + extern u8 D_8018B578; + extern u8 D_8018B580; + extern void *D_801EE578; + extern void *D_801EE57C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801EE578 = &D_8018B4EC; + D_801EE57C = &D_8018B578; + } else { + D_801EE578 = &D_8018B504; + D_801EE57C = &D_8018B580; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018B84C = 0xE; + D_8018B84E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8016AB6C.c b/src/ov_SC02_017/ov_SC02_017_jr_8016AB6C.c index c262d3260..77777e441 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8016AB6C.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EF270; + extern s16 D_801EF274; + extern u8 D_8018D7D8[]; + extern u8 D_8018D7E4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EF270 != *(s16 *)(iVar4 + 6)) || (D_801EF274 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018D7D8, 0x18), iVar2 != 0)) { + D_801EF270 = *(u16 *)(iVar4 + 6); + D_801EF274 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018D7E4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018D804[])(void); diff --git a/src/ov_SC02_021/ov_SC02_021_jr_8013FFD8.c b/src/ov_SC02_021/ov_SC02_021_jr_8013FFD8.c index 65410fd79..b9da84a78 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_8013FFD8.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180E40; +extern s16 D_80180E42; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180AE0; + extern u8 D_80180AF8; + extern u8 D_80180B6C; + extern u8 D_80180B74; + extern void *D_80191AE8; + extern void *D_80191AEC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80191AE8 = &D_80180AE0; + D_80191AEC = &D_80180B6C; + } else { + D_80191AE8 = &D_80180AF8; + D_80191AEC = &D_80180B74; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180E40 = 0xE; + D_80180E42 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_021/ov_SC02_021_jr_8016AB6C.c b/src/ov_SC02_021/ov_SC02_021_jr_8016AB6C.c index 01515bacf..a16c16d19 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_8016AB6C.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801927E0; + extern s16 D_801927E4; + extern u8 D_80182DCC[]; + extern u8 D_80182DD8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801927E0 != *(s16 *)(iVar4 + 6)) || (D_801927E4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182DCC, 0x18), iVar2 != 0)) { + D_801927E0 = *(u16 *)(iVar4 + 6); + D_801927E4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182DD8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80182DF8[])(void); diff --git a/src/ov_SC02_026/ov_SC02_026_jr_8013FFD8.c b/src/ov_SC02_026/ov_SC02_026_jr_8013FFD8.c index c983a6e9f..5ba723dd1 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_8013FFD8.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80187494; +extern s16 D_80187496; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80187134; + extern u8 D_8018714C; + extern u8 D_801871C0; + extern u8 D_801871C8; + extern void *D_801CEF28; + extern void *D_801CEF2C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CEF28 = &D_80187134; + D_801CEF2C = &D_801871C0; + } else { + D_801CEF28 = &D_8018714C; + D_801CEF2C = &D_801871C8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80187494 = 0xE; + D_80187496 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_026/ov_SC02_026_jr_8016AB6C.c b/src/ov_SC02_026/ov_SC02_026_jr_8016AB6C.c index 13b91f6f3..3c3816e8b 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_8016AB6C.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CFC20; + extern s16 D_801CFC24; + extern u8 D_80189420[]; + extern u8 D_8018942C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CFC20 != *(s16 *)(iVar4 + 6)) || (D_801CFC24 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189420, 0x18), iVar2 != 0)) { + D_801CFC20 = *(u16 *)(iVar4 + 6); + D_801CFC24 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018942C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018944C[])(void); diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8013FFD8.c b/src/ov_SC02_027/ov_SC02_027_jr_8013FFD8.c index 3d53986ce..ccafe9f50 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8013FFD8.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018C5B8; +extern s16 D_8018C5BA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018C258; + extern u8 D_8018C270; + extern u8 D_8018C2E4; + extern u8 D_8018C2EC; + extern void *D_801D8C98; + extern void *D_801D8C9C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D8C98 = &D_8018C258; + D_801D8C9C = &D_8018C2E4; + } else { + D_801D8C98 = &D_8018C270; + D_801D8C9C = &D_8018C2EC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018C5B8 = 0xE; + D_8018C5BA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8016AB6C.c b/src/ov_SC02_027/ov_SC02_027_jr_8016AB6C.c index e034bf877..c8f5547ad 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8016AB6C.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D9990; + extern s16 D_801D9994; + extern u8 D_8018E544[]; + extern u8 D_8018E550[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D9990 != *(s16 *)(iVar4 + 6)) || (D_801D9994 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018E544, 0x18), iVar2 != 0)) { + D_801D9990 = *(u16 *)(iVar4 + 6); + D_801D9994 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018E550); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018E570[])(void); diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8013FFD8.c b/src/ov_SC02_028/ov_SC02_028_jr_8013FFD8.c index 691b48510..44bf928d9 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_8013FFD8.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018C7BC; +extern s16 D_8018C7BE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018C45C; + extern u8 D_8018C474; + extern u8 D_8018C4E8; + extern u8 D_8018C4F0; + extern void *D_801D1C38; + extern void *D_801D1C3C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D1C38 = &D_8018C45C; + D_801D1C3C = &D_8018C4E8; + } else { + D_801D1C38 = &D_8018C474; + D_801D1C3C = &D_8018C4F0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018C7BC = 0xE; + D_8018C7BE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8016AB6C.c b/src/ov_SC02_028/ov_SC02_028_jr_8016AB6C.c index c56200e03..81ec0fa1c 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_8016AB6C.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D2930; + extern s16 D_801D2934; + extern u8 D_8018E748[]; + extern u8 D_8018E754[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D2930 != *(s16 *)(iVar4 + 6)) || (D_801D2934 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018E748, 0x18), iVar2 != 0)) { + D_801D2930 = *(u16 *)(iVar4 + 6); + D_801D2934 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018E754); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018E774[])(void); diff --git a/src/ov_SC02_031/ov_SC02_031_jr_8013FFD8.c b/src/ov_SC02_031/ov_SC02_031_jr_8013FFD8.c index 6a2b1e139..484a115c5 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_8013FFD8.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185FE8; +extern s16 D_80185FEA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185C88; + extern u8 D_80185CA0; + extern u8 D_80185D14; + extern u8 D_80185D1C; + extern void *D_801B63B0; + extern void *D_801B63B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B63B0 = &D_80185C88; + D_801B63B4 = &D_80185D14; + } else { + D_801B63B0 = &D_80185CA0; + D_801B63B4 = &D_80185D1C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185FE8 = 0xE; + D_80185FEA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_031/ov_SC02_031_jr_8016AB6C.c b/src/ov_SC02_031/ov_SC02_031_jr_8016AB6C.c index 837f270d7..48e57bd25 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_8016AB6C.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B70A8; + extern s16 D_801B70AC; + extern u8 D_80187F74[]; + extern u8 D_80187F80[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B70A8 != *(s16 *)(iVar4 + 6)) || (D_801B70AC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187F74, 0x18), iVar2 != 0)) { + D_801B70A8 = *(u16 *)(iVar4 + 6); + D_801B70AC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187F80); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187FA0[])(void); diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8013FFD8.c b/src/ov_SC02_035/ov_SC02_035_jr_8013FFD8.c index 33c30c836..6ee751a1e 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8013FFD8.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8013FFD8.c @@ -1345,7 +1345,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185848; +extern s16 D_8018584A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801854E8; + extern u8 D_80185500; + extern u8 D_80185574; + extern u8 D_8018557C; + extern void *D_801BD6E0; + extern void *D_801BD6E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BD6E0 = &D_801854E8; + D_801BD6E4 = &D_80185574; + } else { + D_801BD6E0 = &D_80185500; + D_801BD6E4 = &D_8018557C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185848 = 0xE; + D_8018584A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8016AB6C.c b/src/ov_SC02_035/ov_SC02_035_jr_8016AB6C.c index 2095ad047..9833a6958 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8016AB6C.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801BE3D8; + extern s16 D_801BE3DC; + extern u8 D_801877D4[]; + extern u8 D_801877E0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801BE3D8 != *(s16 *)(iVar4 + 6)) || (D_801BE3DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801877D4, 0x18), iVar2 != 0)) { + D_801BE3D8 = *(u16 *)(iVar4 + 6); + D_801BE3DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801877E0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187800[])(void); diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8013FFD8.c b/src/ov_SC02_039/ov_SC02_039_jr_8013FFD8.c index 0165faa9e..08aa0e275 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8013FFD8.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180474; +extern s16 D_80180476; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180114; + extern u8 D_8018012C; + extern u8 D_801801A0; + extern u8 D_801801A8; + extern void *D_8019FA90; + extern void *D_8019FA94; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019FA90 = &D_80180114; + D_8019FA94 = &D_801801A0; + } else { + D_8019FA90 = &D_8018012C; + D_8019FA94 = &D_801801A8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180474 = 0xE; + D_80180476 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8016AB6C.c b/src/ov_SC02_039/ov_SC02_039_jr_8016AB6C.c index b5171a6ee..aa67485b8 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8016AB6C.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A0788; + extern s16 D_801A078C; + extern u8 D_80182400[]; + extern u8 D_8018240C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A0788 != *(s16 *)(iVar4 + 6)) || (D_801A078C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182400, 0x18), iVar2 != 0)) { + D_801A0788 = *(u16 *)(iVar4 + 6); + D_801A078C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018240C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018242C[])(void); diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8013FFD8.c b/src/ov_SC02_041/ov_SC02_041_jr_8013FFD8.c index 4123d285f..8e0938bac 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8013FFD8.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186144; +extern s16 D_80186146; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185DE4; + extern u8 D_80185DFC; + extern u8 D_80185E70; + extern u8 D_80185E78; + extern void *D_801B7E08; + extern void *D_801B7E0C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B7E08 = &D_80185DE4; + D_801B7E0C = &D_80185E70; + } else { + D_801B7E08 = &D_80185DFC; + D_801B7E0C = &D_80185E78; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186144 = 0xE; + D_80186146 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8016AB6C.c b/src/ov_SC02_041/ov_SC02_041_jr_8016AB6C.c index 894b1012c..9618674d5 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8016AB6C.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B8B00; + extern s16 D_801B8B04; + extern u8 D_801880D0[]; + extern u8 D_801880DC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B8B00 != *(s16 *)(iVar4 + 6)) || (D_801B8B04 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801880D0, 0x18), iVar2 != 0)) { + D_801B8B00 = *(u16 *)(iVar4 + 6); + D_801B8B04 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801880DC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801880FC[])(void); diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8013FFD8.c b/src/ov_SC03_001/ov_SC03_001_jr_8013FFD8.c index fd5ddda9e..29f8b2d2e 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_8013FFD8.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018E884; +extern s16 D_8018E886; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018E524; + extern u8 D_8018E53C; + extern u8 D_8018E5B0; + extern u8 D_8018E5B8; + extern void *D_801ED488; + extern void *D_801ED48C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801ED488 = &D_8018E524; + D_801ED48C = &D_8018E5B0; + } else { + D_801ED488 = &D_8018E53C; + D_801ED48C = &D_8018E5B8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018E884 = 0xE; + D_8018E886 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8016AB6C.c b/src/ov_SC03_001/ov_SC03_001_jr_8016AB6C.c index 4cb792757..5dfa5b59e 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_8016AB6C.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EE180; + extern s16 D_801EE184; + extern u8 D_80190810[]; + extern u8 D_8019081C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EE180 != *(s16 *)(iVar4 + 6)) || (D_801EE184 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80190810, 0x18), iVar2 != 0)) { + D_801EE180 = *(u16 *)(iVar4 + 6); + D_801EE184 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8019081C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8019083C[])(void); diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8013FFD8.c b/src/ov_SC03_002/ov_SC03_002_jr_8013FFD8.c index bb4255322..f576503d7 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_8013FFD8.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186874; +extern s16 D_80186876; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186514; + extern u8 D_8018652C; + extern u8 D_801865A0; + extern u8 D_801865A8; + extern void *D_801CA508; + extern void *D_801CA50C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CA508 = &D_80186514; + D_801CA50C = &D_801865A0; + } else { + D_801CA508 = &D_8018652C; + D_801CA50C = &D_801865A8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186874 = 0xE; + D_80186876 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8016AB6C.c b/src/ov_SC03_002/ov_SC03_002_jr_8016AB6C.c index f2fbe4580..df1f3f885 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_8016AB6C.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CB200; + extern s16 D_801CB204; + extern u8 D_80188800[]; + extern u8 D_8018880C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CB200 != *(s16 *)(iVar4 + 6)) || (D_801CB204 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188800, 0x18), iVar2 != 0)) { + D_801CB200 = *(u16 *)(iVar4 + 6); + D_801CB204 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018880C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018882C[])(void); diff --git a/src/ov_SC03_003/ov_SC03_003_jr_8013FFD8.c b/src/ov_SC03_003/ov_SC03_003_jr_8013FFD8.c index 9878411a2..9e1766830 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_8013FFD8.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018063C; +extern s16 D_8018063E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801802DC; + extern u8 D_801802F4; + extern u8 D_80180368; + extern u8 D_80180370; + extern void *D_8018E810; + extern void *D_8018E814; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018E810 = &D_801802DC; + D_8018E814 = &D_80180368; + } else { + D_8018E810 = &D_801802F4; + D_8018E814 = &D_80180370; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018063C = 0xE; + D_8018063E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_003/ov_SC03_003_jr_8016AB6C.c b/src/ov_SC03_003/ov_SC03_003_jr_8016AB6C.c index 8c37b0380..65716b3a6 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_8016AB6C.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F508; + extern s16 D_8018F50C; + extern u8 D_801825C8[]; + extern u8 D_801825D4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F508 != *(s16 *)(iVar4 + 6)) || (D_8018F50C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801825C8, 0x18), iVar2 != 0)) { + D_8018F508 = *(u16 *)(iVar4 + 6); + D_8018F50C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801825D4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801825F4[])(void); diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8013FFD8.c b/src/ov_SC03_006/ov_SC03_006_jr_8013FFD8.c index 8d85f8ec5..0ff96bc2b 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8013FFD8.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018D958; +extern s16 D_8018D95A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018D5F8; + extern u8 D_8018D610; + extern u8 D_8018D684; + extern u8 D_8018D68C; + extern void *D_801F6188; + extern void *D_801F618C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801F6188 = &D_8018D5F8; + D_801F618C = &D_8018D684; + } else { + D_801F6188 = &D_8018D610; + D_801F618C = &D_8018D68C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018D958 = 0xE; + D_8018D95A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8016AB6C.c b/src/ov_SC03_006/ov_SC03_006_jr_8016AB6C.c index 3841a2f8b..d70568f6a 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8016AB6C.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801F6E80; + extern s16 D_801F6E84; + extern u8 D_8018F8E4[]; + extern u8 D_8018F8F0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801F6E80 != *(s16 *)(iVar4 + 6)) || (D_801F6E84 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018F8E4, 0x18), iVar2 != 0)) { + D_801F6E80 = *(u16 *)(iVar4 + 6); + D_801F6E84 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018F8F0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018F910[])(void); diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8013FFD8.c b/src/ov_SC03_007/ov_SC03_007_jr_8013FFD8.c index e1a9d40b2..80572294a 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8013FFD8.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80188750; +extern s16 D_80188752; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801883F0; + extern u8 D_80188408; + extern u8 D_8018847C; + extern u8 D_80188484; + extern void *D_801E8AE0; + extern void *D_801E8AE4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E8AE0 = &D_801883F0; + D_801E8AE4 = &D_8018847C; + } else { + D_801E8AE0 = &D_80188408; + D_801E8AE4 = &D_80188484; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80188750 = 0xE; + D_80188752 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8016AB6C.c b/src/ov_SC03_007/ov_SC03_007_jr_8016AB6C.c index 80886db9c..e61e314a1 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8016AB6C.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E97D8; + extern s16 D_801E97DC; + extern u8 D_8018A6DC[]; + extern u8 D_8018A6E8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E97D8 != *(s16 *)(iVar4 + 6)) || (D_801E97DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018A6DC, 0x18), iVar2 != 0)) { + D_801E97D8 = *(u16 *)(iVar4 + 6); + D_801E97DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018A6E8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018A708[])(void); diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8013FFD8.c b/src/ov_SC03_010/ov_SC03_010_jr_8013FFD8.c index 8cd677069..d5cc238b0 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_8013FFD8.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80181270; +extern s16 D_80181272; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180F10; + extern u8 D_80180F28; + extern u8 D_80180F9C; + extern u8 D_80180FA4; + extern void *D_8019ED40; + extern void *D_8019ED44; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019ED40 = &D_80180F10; + D_8019ED44 = &D_80180F9C; + } else { + D_8019ED40 = &D_80180F28; + D_8019ED44 = &D_80180FA4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80181270 = 0xE; + D_80181272 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8016AB6C.c b/src/ov_SC03_010/ov_SC03_010_jr_8016AB6C.c index adfa12f4d..ff4466133 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_8016AB6C.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019FA38; + extern s16 D_8019FA3C; + extern u8 D_801831FC[]; + extern u8 D_80183208[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019FA38 != *(s16 *)(iVar4 + 6)) || (D_8019FA3C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801831FC, 0x18), iVar2 != 0)) { + D_8019FA38 = *(u16 *)(iVar4 + 6); + D_8019FA3C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183208); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183228[])(void); diff --git a/src/ov_SC03_011/ov_SC03_011_jr_8016AB6C.c b/src/ov_SC03_011/ov_SC03_011_jr_8016AB6C.c index 6cbae7270..4b1305c89 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_8016AB6C.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A1CD0; + extern s16 D_801A1CD4; + extern u8 D_8018456C[]; + extern u8 D_80184578[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A1CD0 != *(s16 *)(iVar4 + 6)) || (D_801A1CD4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018456C, 0x18), iVar2 != 0)) { + D_801A1CD0 = *(u16 *)(iVar4 + 6); + D_801A1CD4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80184578); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80184598[])(void); diff --git a/src/ov_SC03_012/ov_SC03_012_jr_8013FFD8.c b/src/ov_SC03_012/ov_SC03_012_jr_8013FFD8.c index 462020d7f..aeb535aa5 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_8013FFD8.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F4C0; +extern s16 D_8017F4C2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F160; + extern u8 D_8017F178; + extern u8 D_8017F1EC; + extern u8 D_8017F1F4; + extern void *D_80193DF8; + extern void *D_80193DFC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80193DF8 = &D_8017F160; + D_80193DFC = &D_8017F1EC; + } else { + D_80193DF8 = &D_8017F178; + D_80193DFC = &D_8017F1F4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F4C0 = 0xE; + D_8017F4C2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_012/ov_SC03_012_jr_8016AB6C.c b/src/ov_SC03_012/ov_SC03_012_jr_8016AB6C.c index 64e6013ab..05bee1ff1 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_8016AB6C.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80194AF0; + extern s16 D_80194AF4; + extern u8 D_8018144C[]; + extern u8 D_80181458[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80194AF0 != *(s16 *)(iVar4 + 6)) || (D_80194AF4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018144C, 0x18), iVar2 != 0)) { + D_80194AF0 = *(u16 *)(iVar4 + 6); + D_80194AF4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181458); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181478[])(void); diff --git a/src/ov_SC03_013/ov_SC03_013_jr_8013FFD8.c b/src/ov_SC03_013/ov_SC03_013_jr_8013FFD8.c index 6501e6e27..1d319cca1 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_8013FFD8.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801822A8; +extern s16 D_801822AA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181F48; + extern u8 D_80181F60; + extern u8 D_80181FD4; + extern u8 D_80181FDC; + extern void *D_801AC0C8; + extern void *D_801AC0CC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801AC0C8 = &D_80181F48; + D_801AC0CC = &D_80181FD4; + } else { + D_801AC0C8 = &D_80181F60; + D_801AC0CC = &D_80181FDC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801822A8 = 0xE; + D_801822AA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_013/ov_SC03_013_jr_8016AB6C.c b/src/ov_SC03_013/ov_SC03_013_jr_8016AB6C.c index 191056798..49ed6c9aa 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_8016AB6C.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801ACDC0; + extern s16 D_801ACDC4; + extern u8 D_80184234[]; + extern u8 D_80184240[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801ACDC0 != *(s16 *)(iVar4 + 6)) || (D_801ACDC4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80184234, 0x18), iVar2 != 0)) { + D_801ACDC0 = *(u16 *)(iVar4 + 6); + D_801ACDC4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80184240); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80184260[])(void); diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.c b/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.c index f97710f46..39f5aa833 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018C8E4; +extern s16 D_8018C8E6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018C584; + extern u8 D_8018C59C; + extern u8 D_8018C610; + extern u8 D_8018C618; + extern void *D_801E9648; + extern void *D_801E964C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E9648 = &D_8018C584; + D_801E964C = &D_8018C610; + } else { + D_801E9648 = &D_8018C59C; + D_801E964C = &D_8018C618; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018C8E4 = 0xE; + D_8018C8E6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.c b/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.c index 1199851d3..f96087c30 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EA340; + extern s16 D_801EA344; + extern u8 D_8018E870[]; + extern u8 D_8018E87C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EA340 != *(s16 *)(iVar4 + 6)) || (D_801EA344 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018E870, 0x18), iVar2 != 0)) { + D_801EA340 = *(u16 *)(iVar4 + 6); + D_801EA344 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018E87C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018E89C[])(void); diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c b/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c index 97ae3f013..7f5610c75 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018C8E4; +extern s16 D_8018C8E6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018C584; + extern u8 D_8018C59C; + extern u8 D_8018C610; + extern u8 D_8018C618; + extern void *D_801E9648; + extern void *D_801E964C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E9648 = &D_8018C584; + D_801E964C = &D_8018C610; + } else { + D_801E9648 = &D_8018C59C; + D_801E964C = &D_8018C618; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018C8E4 = 0xE; + D_8018C8E6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c b/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c index 6b7217a3b..4a0b15305 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EA340; + extern s16 D_801EA344; + extern u8 D_8018E870[]; + extern u8 D_8018E87C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EA340 != *(s16 *)(iVar4 + 6)) || (D_801EA344 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018E870, 0x18), iVar2 != 0)) { + D_801EA340 = *(u16 *)(iVar4 + 6); + D_801EA344 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018E87C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018E89C[])(void); diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8013FFD8.c b/src/ov_SC03_023/ov_SC03_023_jr_8013FFD8.c index 45451d33d..c9eedb924 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_8013FFD8.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180260; +extern s16 D_80180262; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FF00; + extern u8 D_8017FF18; + extern u8 D_8017FF8C; + extern u8 D_8017FF94; + extern void *D_80197A20; + extern void *D_80197A24; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80197A20 = &D_8017FF00; + D_80197A24 = &D_8017FF8C; + } else { + D_80197A20 = &D_8017FF18; + D_80197A24 = &D_8017FF94; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180260 = 0xE; + D_80180262 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8016AB6C.c b/src/ov_SC03_023/ov_SC03_023_jr_8016AB6C.c index dde0f5cd3..1cac12746 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_8016AB6C.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80198718; + extern s16 D_8019871C; + extern u8 D_801821EC[]; + extern u8 D_801821F8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80198718 != *(s16 *)(iVar4 + 6)) || (D_8019871C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801821EC, 0x18), iVar2 != 0)) { + D_80198718 = *(u16 *)(iVar4 + 6); + D_8019871C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801821F8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80182218[])(void); diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8013FFD8.c b/src/ov_SC03_024/ov_SC03_024_jr_8013FFD8.c index 528e6bbe0..1ef19154c 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8013FFD8.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80188284; +extern s16 D_80188286; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80187F24; + extern u8 D_80187F3C; + extern u8 D_80187FB0; + extern u8 D_80187FB8; + extern void *D_801BFFB8; + extern void *D_801BFFBC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BFFB8 = &D_80187F24; + D_801BFFBC = &D_80187FB0; + } else { + D_801BFFB8 = &D_80187F3C; + D_801BFFBC = &D_80187FB8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80188284 = 0xE; + D_80188286 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8016AB6C.c b/src/ov_SC03_024/ov_SC03_024_jr_8016AB6C.c index b4bc07029..9708111e5 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8016AB6C.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C0CB0; + extern s16 D_801C0CB4; + extern u8 D_8018A210[]; + extern u8 D_8018A21C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C0CB0 != *(s16 *)(iVar4 + 6)) || (D_801C0CB4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018A210, 0x18), iVar2 != 0)) { + D_801C0CB0 = *(u16 *)(iVar4 + 6); + D_801C0CB4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018A21C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018A23C[])(void); diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8013FFD8.c b/src/ov_SC03_028/ov_SC03_028_jr_8013FFD8.c index 5ab15115c..29d0a4d14 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8013FFD8.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018CD50; +extern s16 D_8018CD52; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018C9F0; + extern u8 D_8018CA08; + extern u8 D_8018CA7C; + extern u8 D_8018CA84; + extern void *D_801EA2F0; + extern void *D_801EA2F4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801EA2F0 = &D_8018C9F0; + D_801EA2F4 = &D_8018CA7C; + } else { + D_801EA2F0 = &D_8018CA08; + D_801EA2F4 = &D_8018CA84; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018CD50 = 0xE; + D_8018CD52 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.c b/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.c index 0a7b39a03..94db79819 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EAFE8; + extern s16 D_801EAFEC; + extern u8 D_8018ECDC[]; + extern u8 D_8018ECE8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EAFE8 != *(s16 *)(iVar4 + 6)) || (D_801EAFEC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018ECDC, 0x18), iVar2 != 0)) { + D_801EAFE8 = *(u16 *)(iVar4 + 6); + D_801EAFEC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018ECE8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018ED08[])(void); diff --git a/src/ov_SC03_029/ov_SC03_029_jr_8013FFD8.c b/src/ov_SC03_029/ov_SC03_029_jr_8013FFD8.c index 9d63ebee2..f23df5561 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_8013FFD8.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80188B88; +extern s16 D_80188B8A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80188828; + extern u8 D_80188840; + extern u8 D_801888B4; + extern u8 D_801888BC; + extern void *D_801D82C8; + extern void *D_801D82CC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D82C8 = &D_80188828; + D_801D82CC = &D_801888B4; + } else { + D_801D82C8 = &D_80188840; + D_801D82CC = &D_801888BC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80188B88 = 0xE; + D_80188B8A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_029/ov_SC03_029_jr_8016AB6C.c b/src/ov_SC03_029/ov_SC03_029_jr_8016AB6C.c index 769efaba6..a80d9195d 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_8016AB6C.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D8FC0; + extern s16 D_801D8FC4; + extern u8 D_8018AB14[]; + extern u8 D_8018AB20[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D8FC0 != *(s16 *)(iVar4 + 6)) || (D_801D8FC4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018AB14, 0x18), iVar2 != 0)) { + D_801D8FC0 = *(u16 *)(iVar4 + 6); + D_801D8FC4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018AB20); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018AB40[])(void); diff --git a/src/ov_SC03_030/ov_SC03_030_jr_8016AB6C.c b/src/ov_SC03_030/ov_SC03_030_jr_8016AB6C.c index b83c3b6e9..d6945ef15 100644 --- a/src/ov_SC03_030/ov_SC03_030_jr_8016AB6C.c +++ b/src/ov_SC03_030/ov_SC03_030_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E15B8; + extern s16 D_801E15BC; + extern u8 D_80185150[]; + extern u8 D_8018515C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E15B8 != *(s16 *)(iVar4 + 6)) || (D_801E15BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185150, 0x18), iVar2 != 0)) { + D_801E15B8 = *(u16 *)(iVar4 + 6); + D_801E15BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018515C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018517C[])(void); diff --git a/src/ov_SC03_031/ov_SC03_031_jr_8013FFD8.c b/src/ov_SC03_031/ov_SC03_031_jr_8013FFD8.c index 29b8d20ae..5d99c5155 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_8013FFD8.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801836E0; +extern s16 D_801836E2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183380; + extern u8 D_80183398; + extern u8 D_8018340C; + extern u8 D_80183414; + extern void *D_801C4CC0; + extern void *D_801C4CC4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C4CC0 = &D_80183380; + D_801C4CC4 = &D_8018340C; + } else { + D_801C4CC0 = &D_80183398; + D_801C4CC4 = &D_80183414; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801836E0 = 0xE; + D_801836E2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_031/ov_SC03_031_jr_8016AB6C.c b/src/ov_SC03_031/ov_SC03_031_jr_8016AB6C.c index 04afbb8ac..7ee6e75d2 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_8016AB6C.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C59B8; + extern s16 D_801C59BC; + extern u8 D_8018566C[]; + extern u8 D_80185678[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C59B8 != *(s16 *)(iVar4 + 6)) || (D_801C59BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018566C, 0x18), iVar2 != 0)) { + D_801C59B8 = *(u16 *)(iVar4 + 6); + D_801C59BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185678); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185698[])(void); diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8013FFD8.c b/src/ov_SC03_089/ov_SC03_089_jr_8013FFD8.c index 96befcbc1..2b1f96ce3 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8013FFD8.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018A9DC; +extern s16 D_8018A9DE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018A67C; + extern u8 D_8018A694; + extern u8 D_8018A708; + extern u8 D_8018A710; + extern void *D_801C5578; + extern void *D_801C557C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C5578 = &D_8018A67C; + D_801C557C = &D_8018A708; + } else { + D_801C5578 = &D_8018A694; + D_801C557C = &D_8018A710; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018A9DC = 0xE; + D_8018A9DE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8016AB6C.c b/src/ov_SC03_089/ov_SC03_089_jr_8016AB6C.c index c1abb6190..2913cbc32 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8016AB6C.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C6270; + extern s16 D_801C6274; + extern u8 D_8018C968[]; + extern u8 D_8018C974[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C6270 != *(s16 *)(iVar4 + 6)) || (D_801C6274 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018C968, 0x18), iVar2 != 0)) { + D_801C6270 = *(u16 *)(iVar4 + 6); + D_801C6274 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018C974); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018C994[])(void); diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8013FFD8.c b/src/ov_SC03_090/ov_SC03_090_jr_8013FFD8.c index 531080749..244adc48a 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8013FFD8.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018CE00; +extern s16 D_8018CE02; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018CAA0; + extern u8 D_8018CAB8; + extern u8 D_8018CB2C; + extern u8 D_8018CB34; + extern void *D_801CA9E0; + extern void *D_801CA9E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CA9E0 = &D_8018CAA0; + D_801CA9E4 = &D_8018CB2C; + } else { + D_801CA9E0 = &D_8018CAB8; + D_801CA9E4 = &D_8018CB34; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018CE00 = 0xE; + D_8018CE02 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8016AB6C.c b/src/ov_SC03_090/ov_SC03_090_jr_8016AB6C.c index 3e29c7686..1fd67f282 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8016AB6C.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CB6D8; + extern s16 D_801CB6DC; + extern u8 D_8018ED8C[]; + extern u8 D_8018ED98[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CB6D8 != *(s16 *)(iVar4 + 6)) || (D_801CB6DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018ED8C, 0x18), iVar2 != 0)) { + D_801CB6D8 = *(u16 *)(iVar4 + 6); + D_801CB6DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018ED98); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018EDB8[])(void); diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8013FFD8.c b/src/ov_SC03_091/ov_SC03_091_jr_8013FFD8.c index ea7c9ad9b..389171228 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8013FFD8.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018DCA8; +extern s16 D_8018DCAA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018D948; + extern u8 D_8018D960; + extern u8 D_8018D9D4; + extern u8 D_8018D9DC; + extern void *D_801D10B0; + extern void *D_801D10B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D10B0 = &D_8018D948; + D_801D10B4 = &D_8018D9D4; + } else { + D_801D10B0 = &D_8018D960; + D_801D10B4 = &D_8018D9DC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018DCA8 = 0xE; + D_8018DCAA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8016AB6C.c b/src/ov_SC03_091/ov_SC03_091_jr_8016AB6C.c index b67f97e71..78f9692ba 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8016AB6C.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D1DA8; + extern s16 D_801D1DAC; + extern u8 D_8018FC34[]; + extern u8 D_8018FC40[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D1DA8 != *(s16 *)(iVar4 + 6)) || (D_801D1DAC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018FC34, 0x18), iVar2 != 0)) { + D_801D1DA8 = *(u16 *)(iVar4 + 6); + D_801D1DAC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018FC40); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018FC60[])(void); diff --git a/src/ov_SC03_092/ov_SC03_092_jr_8013FFD8.c b/src/ov_SC03_092/ov_SC03_092_jr_8013FFD8.c index d2bf723ad..f575f77d9 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_8013FFD8.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186078; +extern s16 D_8018607A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185D18; + extern u8 D_80185D30; + extern u8 D_80185DA4; + extern u8 D_80185DAC; + extern void *D_801B1C78; + extern void *D_801B1C7C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B1C78 = &D_80185D18; + D_801B1C7C = &D_80185DA4; + } else { + D_801B1C78 = &D_80185D30; + D_801B1C7C = &D_80185DAC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186078 = 0xE; + D_8018607A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_092/ov_SC03_092_jr_8016AB6C.c b/src/ov_SC03_092/ov_SC03_092_jr_8016AB6C.c index 42ac6d80b..a4ef1c959 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_8016AB6C.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B2970; + extern s16 D_801B2974; + extern u8 D_80188004[]; + extern u8 D_80188010[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B2970 != *(s16 *)(iVar4 + 6)) || (D_801B2974 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188004, 0x18), iVar2 != 0)) { + D_801B2970 = *(u16 *)(iVar4 + 6); + D_801B2974 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188010); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188030[])(void); diff --git a/src/ov_SC03_093/ov_SC03_093_jr_8013FFD8.c b/src/ov_SC03_093/ov_SC03_093_jr_8013FFD8.c index c35db8063..5a686793e 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_8013FFD8.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80187250; +extern s16 D_80187252; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186EF0; + extern u8 D_80186F08; + extern u8 D_80186F7C; + extern u8 D_80186F84; + extern void *D_801CB0E8; + extern void *D_801CB0EC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CB0E8 = &D_80186EF0; + D_801CB0EC = &D_80186F7C; + } else { + D_801CB0E8 = &D_80186F08; + D_801CB0EC = &D_80186F84; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80187250 = 0xE; + D_80187252 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_093/ov_SC03_093_jr_8016AB6C.c b/src/ov_SC03_093/ov_SC03_093_jr_8016AB6C.c index 96d696f54..1ea8e66be 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_8016AB6C.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CBDE0; + extern s16 D_801CBDE4; + extern u8 D_801891DC[]; + extern u8 D_801891E8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CBDE0 != *(s16 *)(iVar4 + 6)) || (D_801CBDE4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801891DC, 0x18), iVar2 != 0)) { + D_801CBDE0 = *(u16 *)(iVar4 + 6); + D_801CBDE4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801891E8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80189208[])(void); diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8013FFD8.c b/src/ov_SC03_094/ov_SC03_094_jr_8013FFD8.c index 03963d5a4..5832508fd 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8013FFD8.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80188C4C; +extern s16 D_80188C4E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801888EC; + extern u8 D_80188904; + extern u8 D_80188978; + extern u8 D_80188980; + extern void *D_801D1F28; + extern void *D_801D1F2C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D1F28 = &D_801888EC; + D_801D1F2C = &D_80188978; + } else { + D_801D1F28 = &D_80188904; + D_801D1F2C = &D_80188980; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80188C4C = 0xE; + D_80188C4E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8016AB6C.c b/src/ov_SC03_094/ov_SC03_094_jr_8016AB6C.c index a6a271366..0c9d06a24 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8016AB6C.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D2C20; + extern s16 D_801D2C24; + extern u8 D_8018ABD8[]; + extern u8 D_8018ABE4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D2C20 != *(s16 *)(iVar4 + 6)) || (D_801D2C24 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018ABD8, 0x18), iVar2 != 0)) { + D_801D2C20 = *(u16 *)(iVar4 + 6); + D_801D2C24 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018ABE4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018AC04[])(void); diff --git a/src/ov_SC03_095/ov_SC03_095_jr_8013FFD8.c b/src/ov_SC03_095/ov_SC03_095_jr_8013FFD8.c index ee695607c..2c1ac0fd8 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_8013FFD8.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801822AC; +extern s16 D_801822AE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181F4C; + extern u8 D_80181F64; + extern u8 D_80181FD8; + extern u8 D_80181FE0; + extern void *D_8019AB20; + extern void *D_8019AB24; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019AB20 = &D_80181F4C; + D_8019AB24 = &D_80181FD8; + } else { + D_8019AB20 = &D_80181F64; + D_8019AB24 = &D_80181FE0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801822AC = 0xE; + D_801822AE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_095/ov_SC03_095_jr_8016AB6C.c b/src/ov_SC03_095/ov_SC03_095_jr_8016AB6C.c index d066bdc59..41ade8442 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_8016AB6C.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019B818; + extern s16 D_8019B81C; + extern u8 D_80184238[]; + extern u8 D_80184244[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019B818 != *(s16 *)(iVar4 + 6)) || (D_8019B81C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80184238, 0x18), iVar2 != 0)) { + D_8019B818 = *(u16 *)(iVar4 + 6); + D_8019B81C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80184244); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80184264[])(void); diff --git a/src/ov_SC03_096/ov_SC03_096_jr_8013FFD8.c b/src/ov_SC03_096/ov_SC03_096_jr_8013FFD8.c index d736058cb..00071441a 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_8013FFD8.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80181E2C; +extern s16 D_80181E2E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181ACC; + extern u8 D_80181AE4; + extern u8 D_80181B58; + extern u8 D_80181B60; + extern void *D_801995D8; + extern void *D_801995DC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801995D8 = &D_80181ACC; + D_801995DC = &D_80181B58; + } else { + D_801995D8 = &D_80181AE4; + D_801995DC = &D_80181B60; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80181E2C = 0xE; + D_80181E2E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_096/ov_SC03_096_jr_8016AB6C.c b/src/ov_SC03_096/ov_SC03_096_jr_8016AB6C.c index 7a8c79602..805fef80f 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_8016AB6C.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019A2D0; + extern s16 D_8019A2D4; + extern u8 D_80183DB8[]; + extern u8 D_80183DC4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019A2D0 != *(s16 *)(iVar4 + 6)) || (D_8019A2D4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183DB8, 0x18), iVar2 != 0)) { + D_8019A2D0 = *(u16 *)(iVar4 + 6); + D_8019A2D4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183DC4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183DE4[])(void); diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8013FFD8.c b/src/ov_SC03_097/ov_SC03_097_jr_8013FFD8.c index 74299afcd..ad77abb3d 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8013FFD8.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018720C; +extern s16 D_8018720E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186EAC; + extern u8 D_80186EC4; + extern u8 D_80186F38; + extern u8 D_80186F40; + extern void *D_801A9660; + extern void *D_801A9664; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A9660 = &D_80186EAC; + D_801A9664 = &D_80186F38; + } else { + D_801A9660 = &D_80186EC4; + D_801A9664 = &D_80186F40; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018720C = 0xE; + D_8018720E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8016AB6C.c b/src/ov_SC03_097/ov_SC03_097_jr_8016AB6C.c index bf8ac2280..b40d576b0 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8016AB6C.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AA358; + extern s16 D_801AA35C; + extern u8 D_80189198[]; + extern u8 D_801891A4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AA358 != *(s16 *)(iVar4 + 6)) || (D_801AA35C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189198, 0x18), iVar2 != 0)) { + D_801AA358 = *(u16 *)(iVar4 + 6); + D_801AA35C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801891A4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801891C4[])(void); diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8013FFD8.c b/src/ov_SC03_098/ov_SC03_098_jr_8013FFD8.c index ba3eba9a4..74a620a62 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_8013FFD8.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186698; +extern s16 D_8018669A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186338; + extern u8 D_80186350; + extern u8 D_801863C4; + extern u8 D_801863CC; + extern void *D_801C42D0; + extern void *D_801C42D4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C42D0 = &D_80186338; + D_801C42D4 = &D_801863C4; + } else { + D_801C42D0 = &D_80186350; + D_801C42D4 = &D_801863CC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186698 = 0xE; + D_8018669A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8016AB6C.c b/src/ov_SC03_098/ov_SC03_098_jr_8016AB6C.c index 15b9dd172..c478dc0c6 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_8016AB6C.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C4FC8; + extern s16 D_801C4FCC; + extern u8 D_80188624[]; + extern u8 D_80188630[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C4FC8 != *(s16 *)(iVar4 + 6)) || (D_801C4FCC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188624, 0x18), iVar2 != 0)) { + D_801C4FC8 = *(u16 *)(iVar4 + 6); + D_801C4FCC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188630); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188650[])(void); diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8013FFD8.c b/src/ov_SC03_099/ov_SC03_099_jr_8013FFD8.c index c5b5c9dc0..58f6eb9a3 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_8013FFD8.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80184798; +extern s16 D_8018479A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80184438; + extern u8 D_80184450; + extern u8 D_801844C4; + extern u8 D_801844CC; + extern void *D_801BDFA0; + extern void *D_801BDFA4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BDFA0 = &D_80184438; + D_801BDFA4 = &D_801844C4; + } else { + D_801BDFA0 = &D_80184450; + D_801BDFA4 = &D_801844CC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80184798 = 0xE; + D_8018479A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c b/src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c index df5dba6a4..0b1ece2ef 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801BEC98; + extern s16 D_801BEC9C; + extern u8 D_80186724[]; + extern u8 D_80186730[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801BEC98 != *(s16 *)(iVar4 + 6)) || (D_801BEC9C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80186724, 0x18), iVar2 != 0)) { + D_801BEC98 = *(u16 *)(iVar4 + 6); + D_801BEC9C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80186730); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80186750[])(void); diff --git a/src/ov_SC03_100/ov_SC03_100_jr_8013FFD8.c b/src/ov_SC03_100/ov_SC03_100_jr_8013FFD8.c index d33237cd4..13fc1a8a7 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_8013FFD8.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185C64; +extern s16 D_80185C66; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185904; + extern u8 D_8018591C; + extern u8 D_80185990; + extern u8 D_80185998; + extern void *D_801C7228; + extern void *D_801C722C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C7228 = &D_80185904; + D_801C722C = &D_80185990; + } else { + D_801C7228 = &D_8018591C; + D_801C722C = &D_80185998; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185C64 = 0xE; + D_80185C66 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_100/ov_SC03_100_jr_8016AB6C.c b/src/ov_SC03_100/ov_SC03_100_jr_8016AB6C.c index b1023fb3e..2a4a8ec9e 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_8016AB6C.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C7F20; + extern s16 D_801C7F24; + extern u8 D_80187BF0[]; + extern u8 D_80187BFC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C7F20 != *(s16 *)(iVar4 + 6)) || (D_801C7F24 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187BF0, 0x18), iVar2 != 0)) { + D_801C7F20 = *(u16 *)(iVar4 + 6); + D_801C7F24 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187BFC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187C1C[])(void); diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8013FFD8.c b/src/ov_SC03_101/ov_SC03_101_jr_8013FFD8.c index d11026533..4eb9b2cfe 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8013FFD8.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80184C40; +extern s16 D_80184C42; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801848E0; + extern u8 D_801848F8; + extern u8 D_8018496C; + extern u8 D_80184974; + extern void *D_8019CAF0; + extern void *D_8019CAF4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019CAF0 = &D_801848E0; + D_8019CAF4 = &D_8018496C; + } else { + D_8019CAF0 = &D_801848F8; + D_8019CAF4 = &D_80184974; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80184C40 = 0xE; + D_80184C42 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8016AB6C.c b/src/ov_SC03_101/ov_SC03_101_jr_8016AB6C.c index f0ba60537..9fece531a 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8016AB6C.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019D7E8; + extern s16 D_8019D7EC; + extern u8 D_80186BCC[]; + extern u8 D_80186BD8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019D7E8 != *(s16 *)(iVar4 + 6)) || (D_8019D7EC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80186BCC, 0x18), iVar2 != 0)) { + D_8019D7E8 = *(u16 *)(iVar4 + 6); + D_8019D7EC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80186BD8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80186BF8[])(void); diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8013FFD8.c b/src/ov_SC03_102/ov_SC03_102_jr_8013FFD8.c index 05532d6d4..f0e1380cf 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_8013FFD8.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801874F8; +extern s16 D_801874FA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80187198; + extern u8 D_801871B0; + extern u8 D_80187224; + extern u8 D_8018722C; + extern void *D_801B8768; + extern void *D_801B876C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B8768 = &D_80187198; + D_801B876C = &D_80187224; + } else { + D_801B8768 = &D_801871B0; + D_801B876C = &D_8018722C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801874F8 = 0xE; + D_801874FA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8016AB6C.c b/src/ov_SC03_102/ov_SC03_102_jr_8016AB6C.c index 124b51e13..539a93c05 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_8016AB6C.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B9460; + extern s16 D_801B9464; + extern u8 D_80189484[]; + extern u8 D_80189490[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B9460 != *(s16 *)(iVar4 + 6)) || (D_801B9464 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189484, 0x18), iVar2 != 0)) { + D_801B9460 = *(u16 *)(iVar4 + 6); + D_801B9464 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80189490); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801894B0[])(void); diff --git a/src/ov_SC03_103/ov_SC03_103_jr_8016AB6C.c b/src/ov_SC03_103/ov_SC03_103_jr_8016AB6C.c index 916c04188..09f98be29 100644 --- a/src/ov_SC03_103/ov_SC03_103_jr_8016AB6C.c +++ b/src/ov_SC03_103/ov_SC03_103_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C4618; + extern s16 D_801C461C; + extern u8 D_80187434[]; + extern u8 D_80187440[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C4618 != *(s16 *)(iVar4 + 6)) || (D_801C461C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187434, 0x18), iVar2 != 0)) { + D_801C4618 = *(u16 *)(iVar4 + 6); + D_801C461C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187440); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187460[])(void); diff --git a/src/ov_SC03_104/ov_SC03_104_jr_8013FFD8.c b/src/ov_SC03_104/ov_SC03_104_jr_8013FFD8.c index 8b4a417b9..994ce13ca 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_8013FFD8.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018C038; +extern s16 D_8018C03A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018BCD8; + extern u8 D_8018BCF0; + extern u8 D_8018BD64; + extern u8 D_8018BD6C; + extern void *D_801BEEB8; + extern void *D_801BEEBC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BEEB8 = &D_8018BCD8; + D_801BEEBC = &D_8018BD64; + } else { + D_801BEEB8 = &D_8018BCF0; + D_801BEEBC = &D_8018BD6C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018C038 = 0xE; + D_8018C03A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_104/ov_SC03_104_jr_8016AB6C.c b/src/ov_SC03_104/ov_SC03_104_jr_8016AB6C.c index 51460d322..337fb7b06 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_8016AB6C.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801BFBB0; + extern s16 D_801BFBB4; + extern u8 D_8018DFC4[]; + extern u8 D_8018DFD0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801BFBB0 != *(s16 *)(iVar4 + 6)) || (D_801BFBB4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018DFC4, 0x18), iVar2 != 0)) { + D_801BFBB0 = *(u16 *)(iVar4 + 6); + D_801BFBB4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018DFD0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018DFF0[])(void); diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8013FFD8.c b/src/ov_SC03_105/ov_SC03_105_jr_8013FFD8.c index c567713b1..350e7501c 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8013FFD8.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018B6C0; +extern s16 D_8018B6C2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018B360; + extern u8 D_8018B378; + extern u8 D_8018B3EC; + extern u8 D_8018B3F4; + extern void *D_801B8448; + extern void *D_801B844C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B8448 = &D_8018B360; + D_801B844C = &D_8018B3EC; + } else { + D_801B8448 = &D_8018B378; + D_801B844C = &D_8018B3F4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018B6C0 = 0xE; + D_8018B6C2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8016AB6C.c b/src/ov_SC03_105/ov_SC03_105_jr_8016AB6C.c index 277ee4e3b..8cee26724 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8016AB6C.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B9140; + extern s16 D_801B9144; + extern u8 D_8018D64C[]; + extern u8 D_8018D658[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B9140 != *(s16 *)(iVar4 + 6)) || (D_801B9144 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018D64C, 0x18), iVar2 != 0)) { + D_801B9140 = *(u16 *)(iVar4 + 6); + D_801B9144 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018D658); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018D678[])(void); diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8013FFD8.c b/src/ov_SC03_108/ov_SC03_108_jr_8013FFD8.c index b1a26dfb9..627aea035 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_8013FFD8.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80182018; +extern s16 D_8018201A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181CB8; + extern u8 D_80181CD0; + extern u8 D_80181D44; + extern u8 D_80181D4C; + extern void *D_801A0738; + extern void *D_801A073C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A0738 = &D_80181CB8; + D_801A073C = &D_80181D44; + } else { + D_801A0738 = &D_80181CD0; + D_801A073C = &D_80181D4C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80182018 = 0xE; + D_8018201A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.c b/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.c index 703597ae2..686056813 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A1430; + extern s16 D_801A1434; + extern u8 D_80183FA4[]; + extern u8 D_80183FB0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A1430 != *(s16 *)(iVar4 + 6)) || (D_801A1434 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183FA4, 0x18), iVar2 != 0)) { + D_801A1430 = *(u16 *)(iVar4 + 6); + D_801A1434 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183FB0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183FD0[])(void); diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8013FFD8.c b/src/ov_SC03_109/ov_SC03_109_jr_8013FFD8.c index 504399025..5858820aa 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_8013FFD8.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F6C4; +extern s16 D_8017F6C6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F364; + extern u8 D_8017F37C; + extern u8 D_8017F3F0; + extern u8 D_8017F3F8; + extern void *D_80199148; + extern void *D_8019914C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80199148 = &D_8017F364; + D_8019914C = &D_8017F3F0; + } else { + D_80199148 = &D_8017F37C; + D_8019914C = &D_8017F3F8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F6C4 = 0xE; + D_8017F6C6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8016AB6C.c b/src/ov_SC03_109/ov_SC03_109_jr_8016AB6C.c index ba98123e3..7f2d0696f 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_8016AB6C.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80199E40; + extern s16 D_80199E44; + extern u8 D_80181650[]; + extern u8 D_8018165C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80199E40 != *(s16 *)(iVar4 + 6)) || (D_80199E44 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181650, 0x18), iVar2 != 0)) { + D_80199E40 = *(u16 *)(iVar4 + 6); + D_80199E44 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018165C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018167C[])(void); diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8013FFD8.c b/src/ov_SC03_110/ov_SC03_110_jr_8013FFD8.c index 35a55cad9..747af3796 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_8013FFD8.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801830E4; +extern s16 D_801830E6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80182D84; + extern u8 D_80182D9C; + extern u8 D_80182E10; + extern u8 D_80182E18; + extern void *D_801A0EF0; + extern void *D_801A0EF4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A0EF0 = &D_80182D84; + D_801A0EF4 = &D_80182E10; + } else { + D_801A0EF0 = &D_80182D9C; + D_801A0EF4 = &D_80182E18; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801830E4 = 0xE; + D_801830E6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8016AB6C.c b/src/ov_SC03_110/ov_SC03_110_jr_8016AB6C.c index 2e722270e..3f0e5db9a 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_8016AB6C.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A1BE8; + extern s16 D_801A1BEC; + extern u8 D_80185070[]; + extern u8 D_8018507C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A1BE8 != *(s16 *)(iVar4 + 6)) || (D_801A1BEC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185070, 0x18), iVar2 != 0)) { + D_801A1BE8 = *(u16 *)(iVar4 + 6); + D_801A1BEC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018507C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018509C[])(void); diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8013FFD8.c b/src/ov_SC03_111/ov_SC03_111_jr_8013FFD8.c index 6b6807fe9..322c2d1f5 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8013FFD8.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185C98; +extern s16 D_80185C9A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185938; + extern u8 D_80185950; + extern u8 D_801859C4; + extern u8 D_801859CC; + extern void *D_801B83F8; + extern void *D_801B83FC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B83F8 = &D_80185938; + D_801B83FC = &D_801859C4; + } else { + D_801B83F8 = &D_80185950; + D_801B83FC = &D_801859CC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185C98 = 0xE; + D_80185C9A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8016AB6C.c b/src/ov_SC03_111/ov_SC03_111_jr_8016AB6C.c index 7b6752af3..cb721a298 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8016AB6C.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8016AB6C.c @@ -3229,7 +3229,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B90F0; + extern s16 D_801B90F4; + extern u8 D_80187C24[]; + extern u8 D_80187C30[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B90F0 != *(s16 *)(iVar4 + 6)) || (D_801B90F4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187C24, 0x18), iVar2 != 0)) { + D_801B90F0 = *(u16 *)(iVar4 + 6); + D_801B90F4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187C30); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187C50[])(void); diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8013FFD8.c b/src/ov_SC03_112/ov_SC03_112_jr_8013FFD8.c index f3636816c..3166df53d 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_8013FFD8.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186AA0; +extern s16 D_80186AA2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186740; + extern u8 D_80186758; + extern u8 D_801867CC; + extern u8 D_801867D4; + extern void *D_801ABC58; + extern void *D_801ABC5C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801ABC58 = &D_80186740; + D_801ABC5C = &D_801867CC; + } else { + D_801ABC58 = &D_80186758; + D_801ABC5C = &D_801867D4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186AA0 = 0xE; + D_80186AA2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8016AB6C.c b/src/ov_SC03_112/ov_SC03_112_jr_8016AB6C.c index 8febc99a6..2008cd4cb 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_8016AB6C.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AC950; + extern s16 D_801AC954; + extern u8 D_80188A2C[]; + extern u8 D_80188A38[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AC950 != *(s16 *)(iVar4 + 6)) || (D_801AC954 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188A2C, 0x18), iVar2 != 0)) { + D_801AC950 = *(u16 *)(iVar4 + 6); + D_801AC954 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188A38); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188A58[])(void); diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8013FFD8.c b/src/ov_SC03_113/ov_SC03_113_jr_8013FFD8.c index 38e7e6e0d..baa194b86 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8013FFD8.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80184150; +extern s16 D_80184152; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183DF0; + extern u8 D_80183E08; + extern u8 D_80183E7C; + extern u8 D_80183E84; + extern void *D_801A47E8; + extern void *D_801A47EC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A47E8 = &D_80183DF0; + D_801A47EC = &D_80183E7C; + } else { + D_801A47E8 = &D_80183E08; + D_801A47EC = &D_80183E84; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80184150 = 0xE; + D_80184152 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8016AB6C.c b/src/ov_SC03_113/ov_SC03_113_jr_8016AB6C.c index 202885668..dad3476e2 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8016AB6C.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A54E0; + extern s16 D_801A54E4; + extern u8 D_801860DC[]; + extern u8 D_801860E8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A54E0 != *(s16 *)(iVar4 + 6)) || (D_801A54E4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801860DC, 0x18), iVar2 != 0)) { + D_801A54E0 = *(u16 *)(iVar4 + 6); + D_801A54E4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801860E8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80186108[])(void); diff --git a/src/ov_SC03_114/ov_SC03_114_jr_8013FFD8.c b/src/ov_SC03_114/ov_SC03_114_jr_8013FFD8.c index 1cb9f6575..772238302 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_8013FFD8.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FDB8; +extern s16 D_8017FDBA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FA58; + extern u8 D_8017FA70; + extern u8 D_8017FAE4; + extern u8 D_8017FAEC; + extern void *D_801A8480; + extern void *D_801A8484; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A8480 = &D_8017FA58; + D_801A8484 = &D_8017FAE4; + } else { + D_801A8480 = &D_8017FA70; + D_801A8484 = &D_8017FAEC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FDB8 = 0xE; + D_8017FDBA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_114/ov_SC03_114_jr_8016AB6C.c b/src/ov_SC03_114/ov_SC03_114_jr_8016AB6C.c index ba4c87168..2a1b90970 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_8016AB6C.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A9178; + extern s16 D_801A917C; + extern u8 D_80181D44[]; + extern u8 D_80181D50[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A9178 != *(s16 *)(iVar4 + 6)) || (D_801A917C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181D44, 0x18), iVar2 != 0)) { + D_801A9178 = *(u16 *)(iVar4 + 6); + D_801A917C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181D50); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181D70[])(void); diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8013FFD8.c b/src/ov_SC03_115/ov_SC03_115_jr_8013FFD8.c index ea288bdc0..42a2aeb56 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8013FFD8.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80181824; +extern s16 D_80181826; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801814C4; + extern u8 D_801814DC; + extern u8 D_80181550; + extern u8 D_80181558; + extern void *D_80193DD8; + extern void *D_80193DDC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80193DD8 = &D_801814C4; + D_80193DDC = &D_80181550; + } else { + D_80193DD8 = &D_801814DC; + D_80193DDC = &D_80181558; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80181824 = 0xE; + D_80181826 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8016AB6C.c b/src/ov_SC03_115/ov_SC03_115_jr_8016AB6C.c index dd880ab65..a7e20f1c3 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8016AB6C.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80194AD0; + extern s16 D_80194AD4; + extern u8 D_801837B0[]; + extern u8 D_801837BC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80194AD0 != *(s16 *)(iVar4 + 6)) || (D_80194AD4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801837B0, 0x18), iVar2 != 0)) { + D_80194AD0 = *(u16 *)(iVar4 + 6); + D_80194AD4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801837BC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801837DC[])(void); diff --git a/src/ov_SC03_116/ov_SC03_116_jr_8013FFD8.c b/src/ov_SC03_116/ov_SC03_116_jr_8013FFD8.c index 0088b05ab..7967b990c 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_8013FFD8.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183C28; +extern s16 D_80183C2A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801838C8; + extern u8 D_801838E0; + extern u8 D_80183954; + extern u8 D_8018395C; + extern void *D_80196968; + extern void *D_8019696C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80196968 = &D_801838C8; + D_8019696C = &D_80183954; + } else { + D_80196968 = &D_801838E0; + D_8019696C = &D_8018395C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183C28 = 0xE; + D_80183C2A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_116/ov_SC03_116_jr_8016AB6C.c b/src/ov_SC03_116/ov_SC03_116_jr_8016AB6C.c index 868e8db54..749ccc2f2 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_8016AB6C.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80197660; + extern s16 D_80197664; + extern u8 D_80185BB4[]; + extern u8 D_80185BC0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80197660 != *(s16 *)(iVar4 + 6)) || (D_80197664 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185BB4, 0x18), iVar2 != 0)) { + D_80197660 = *(u16 *)(iVar4 + 6); + D_80197664 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185BC0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185BE0[])(void); diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8013FFD8.c b/src/ov_SC03_117/ov_SC03_117_jr_8013FFD8.c index cadc943ad..9efb19ec3 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_8013FFD8.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185C34; +extern s16 D_80185C36; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801858D4; + extern u8 D_801858EC; + extern u8 D_80185960; + extern u8 D_80185968; + extern void *D_801CD0E0; + extern void *D_801CD0E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CD0E0 = &D_801858D4; + D_801CD0E4 = &D_80185960; + } else { + D_801CD0E0 = &D_801858EC; + D_801CD0E4 = &D_80185968; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185C34 = 0xE; + D_80185C36 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8016AB6C.c b/src/ov_SC03_117/ov_SC03_117_jr_8016AB6C.c index 11b4e18fc..6afe09600 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_8016AB6C.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CDDD8; + extern s16 D_801CDDDC; + extern u8 D_80187BC0[]; + extern u8 D_80187BCC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CDDD8 != *(s16 *)(iVar4 + 6)) || (D_801CDDDC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187BC0, 0x18), iVar2 != 0)) { + D_801CDDD8 = *(u16 *)(iVar4 + 6); + D_801CDDDC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187BCC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187BEC[])(void); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8013FFD8.c b/src/ov_SC03_118/ov_SC03_118_jr_8013FFD8.c index 8913ec3e0..30788a9d3 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8013FFD8.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018ACE0; +extern s16 D_8018ACE2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018A980; + extern u8 D_8018A998; + extern u8 D_8018AA0C; + extern u8 D_8018AA14; + extern void *D_801D3030; + extern void *D_801D3034; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D3030 = &D_8018A980; + D_801D3034 = &D_8018AA0C; + } else { + D_801D3030 = &D_8018A998; + D_801D3034 = &D_8018AA14; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018ACE0 = 0xE; + D_8018ACE2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8016AB6C.c b/src/ov_SC03_118/ov_SC03_118_jr_8016AB6C.c index b97aff8a6..55ce042d1 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8016AB6C.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D3D28; + extern s16 D_801D3D2C; + extern u8 D_8018CC6C[]; + extern u8 D_8018CC78[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D3D28 != *(s16 *)(iVar4 + 6)) || (D_801D3D2C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018CC6C, 0x18), iVar2 != 0)) { + D_801D3D28 = *(u16 *)(iVar4 + 6); + D_801D3D2C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018CC78); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018CC98[])(void); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c b/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c index 851a89e82..8ec73c9e0 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018ACE0; +extern s16 D_8018ACE2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018A980; + extern u8 D_8018A998; + extern u8 D_8018AA0C; + extern u8 D_8018AA14; + extern void *D_801D3030; + extern void *D_801D3034; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D3030 = &D_8018A980; + D_801D3034 = &D_8018AA0C; + } else { + D_801D3030 = &D_8018A998; + D_801D3034 = &D_8018AA14; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018ACE0 = 0xE; + D_8018ACE2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c b/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c index 086417b49..fc2474d72 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D3D28; + extern s16 D_801D3D2C; + extern u8 D_8018CC6C[]; + extern u8 D_8018CC78[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D3D28 != *(s16 *)(iVar4 + 6)) || (D_801D3D2C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018CC6C, 0x18), iVar2 != 0)) { + D_801D3D28 = *(u16 *)(iVar4 + 6); + D_801D3D2C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018CC78); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018CC98[])(void); diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8013FFD8.c b/src/ov_SC03_121/ov_SC03_121_jr_8013FFD8.c index ecdb2ebd6..ca282eb11 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8013FFD8.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801834FC; +extern s16 D_801834FE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018319C; + extern u8 D_801831B4; + extern u8 D_80183228; + extern u8 D_80183230; + extern void *D_801ADAD8; + extern void *D_801ADADC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801ADAD8 = &D_8018319C; + D_801ADADC = &D_80183228; + } else { + D_801ADAD8 = &D_801831B4; + D_801ADADC = &D_80183230; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801834FC = 0xE; + D_801834FE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8016AB6C.c b/src/ov_SC03_121/ov_SC03_121_jr_8016AB6C.c index aa545e4ca..28ad579cf 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8016AB6C.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AE7D0; + extern s16 D_801AE7D4; + extern u8 D_80185488[]; + extern u8 D_80185494[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AE7D0 != *(s16 *)(iVar4 + 6)) || (D_801AE7D4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185488, 0x18), iVar2 != 0)) { + D_801AE7D0 = *(u16 *)(iVar4 + 6); + D_801AE7D4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185494); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801854B4[])(void); diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8013FFD8.c b/src/ov_SC03_124/ov_SC03_124_jr_8013FFD8.c index ce7b729f3..8d2d62807 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8013FFD8.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018BF28; +extern s16 D_8018BF2A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018BBC8; + extern u8 D_8018BBE0; + extern u8 D_8018BC54; + extern u8 D_8018BC5C; + extern void *D_801E0600; + extern void *D_801E0604; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E0600 = &D_8018BBC8; + D_801E0604 = &D_8018BC54; + } else { + D_801E0600 = &D_8018BBE0; + D_801E0604 = &D_8018BC5C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018BF28 = 0xE; + D_8018BF2A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8016AB6C.c b/src/ov_SC03_124/ov_SC03_124_jr_8016AB6C.c index 3a4736dc4..eb4d3134c 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8016AB6C.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E12F8; + extern s16 D_801E12FC; + extern u8 D_8018DEB4[]; + extern u8 D_8018DEC0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E12F8 != *(s16 *)(iVar4 + 6)) || (D_801E12FC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018DEB4, 0x18), iVar2 != 0)) { + D_801E12F8 = *(u16 *)(iVar4 + 6); + D_801E12FC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018DEC0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018DEE0[])(void); diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8013FFD8.c b/src/ov_SC03_125/ov_SC03_125_jr_8013FFD8.c index 97b4cc921..af33b079e 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8013FFD8.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801850F8; +extern s16 D_801850FA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80184D98; + extern u8 D_80184DB0; + extern u8 D_80184E24; + extern u8 D_80184E2C; + extern void *D_801C2EF8; + extern void *D_801C2EFC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C2EF8 = &D_80184D98; + D_801C2EFC = &D_80184E24; + } else { + D_801C2EF8 = &D_80184DB0; + D_801C2EFC = &D_80184E2C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801850F8 = 0xE; + D_801850FA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8016AB6C.c b/src/ov_SC03_125/ov_SC03_125_jr_8016AB6C.c index afc8d245d..f6f106c89 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8016AB6C.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C3BF0; + extern s16 D_801C3BF4; + extern u8 D_80187084[]; + extern u8 D_80187090[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C3BF0 != *(s16 *)(iVar4 + 6)) || (D_801C3BF4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187084, 0x18), iVar2 != 0)) { + D_801C3BF0 = *(u16 *)(iVar4 + 6); + D_801C3BF4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187090); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801870B0[])(void); diff --git a/src/ov_SC03_126/ov_SC03_126_jr_8013FFD8.c b/src/ov_SC03_126/ov_SC03_126_jr_8013FFD8.c index 37e671171..ac0d63ac1 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_8013FFD8.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801805F0; +extern s16 D_801805F2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180290; + extern u8 D_801802A8; + extern u8 D_8018031C; + extern u8 D_80180324; + extern void *D_8018E7C0; + extern void *D_8018E7C4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018E7C0 = &D_80180290; + D_8018E7C4 = &D_8018031C; + } else { + D_8018E7C0 = &D_801802A8; + D_8018E7C4 = &D_80180324; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801805F0 = 0xE; + D_801805F2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC03_126/ov_SC03_126_jr_8016AB6C.c b/src/ov_SC03_126/ov_SC03_126_jr_8016AB6C.c index 356fa1a14..b09b44805 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_8016AB6C.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F4B8; + extern s16 D_8018F4BC; + extern u8 D_8018257C[]; + extern u8 D_80182588[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F4B8 != *(s16 *)(iVar4 + 6)) || (D_8018F4BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018257C, 0x18), iVar2 != 0)) { + D_8018F4B8 = *(u16 *)(iVar4 + 6); + D_8018F4BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182588); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801825A8[])(void); diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8013FFD8.c b/src/ov_SC04_000/ov_SC04_000_jr_8013FFD8.c index c53c63e1f..75e469c8e 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_8013FFD8.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801845FC; +extern s16 D_801845FE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018429C; + extern u8 D_801842B4; + extern u8 D_80184328; + extern u8 D_80184330; + extern void *D_801A8870; + extern void *D_801A8874; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A8870 = &D_8018429C; + D_801A8874 = &D_80184328; + } else { + D_801A8870 = &D_801842B4; + D_801A8874 = &D_80184330; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801845FC = 0xE; + D_801845FE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8016AB6C.c b/src/ov_SC04_000/ov_SC04_000_jr_8016AB6C.c index 55f7514c3..2746e68af 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_8016AB6C.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A9568; + extern s16 D_801A956C; + extern u8 D_80186588[]; + extern u8 D_80186594[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A9568 != *(s16 *)(iVar4 + 6)) || (D_801A956C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80186588, 0x18), iVar2 != 0)) { + D_801A9568 = *(u16 *)(iVar4 + 6); + D_801A956C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80186594); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801865B4[])(void); diff --git a/src/ov_SC04_002/ov_SC04_002_jr_8013FFD8.c b/src/ov_SC04_002/ov_SC04_002_jr_8013FFD8.c index c12f78be5..baa27900f 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_8013FFD8.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80189768; +extern s16 D_8018976A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80189408; + extern u8 D_80189420; + extern u8 D_80189494; + extern u8 D_8018949C; + extern void *D_801BFB80; + extern void *D_801BFB84; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BFB80 = &D_80189408; + D_801BFB84 = &D_80189494; + } else { + D_801BFB80 = &D_80189420; + D_801BFB84 = &D_8018949C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80189768 = 0xE; + D_8018976A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_002/ov_SC04_002_jr_8016AB6C.c b/src/ov_SC04_002/ov_SC04_002_jr_8016AB6C.c index 3691b22b2..f316e63bc 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_8016AB6C.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C0878; + extern s16 D_801C087C; + extern u8 D_8018B6F4[]; + extern u8 D_8018B700[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C0878 != *(s16 *)(iVar4 + 6)) || (D_801C087C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018B6F4, 0x18), iVar2 != 0)) { + D_801C0878 = *(u16 *)(iVar4 + 6); + D_801C087C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018B700); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018B720[])(void); diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8013FFD8.c b/src/ov_SC04_003/ov_SC04_003_jr_8013FFD8.c index 840a83e43..aefbde007 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8013FFD8.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183504; +extern s16 D_80183506; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801831A4; + extern u8 D_801831BC; + extern u8 D_80183230; + extern u8 D_80183238; + extern void *D_8019A7E8; + extern void *D_8019A7EC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019A7E8 = &D_801831A4; + D_8019A7EC = &D_80183230; + } else { + D_8019A7E8 = &D_801831BC; + D_8019A7EC = &D_80183238; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183504 = 0xE; + D_80183506 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8016AB6C.c b/src/ov_SC04_003/ov_SC04_003_jr_8016AB6C.c index e738894e7..694aef3a7 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8016AB6C.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019B4E0; + extern s16 D_8019B4E4; + extern u8 D_80185490[]; + extern u8 D_8018549C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019B4E0 != *(s16 *)(iVar4 + 6)) || (D_8019B4E4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185490, 0x18), iVar2 != 0)) { + D_8019B4E0 = *(u16 *)(iVar4 + 6); + D_8019B4E4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018549C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801854BC[])(void); diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8013FFD8.c b/src/ov_SC04_004/ov_SC04_004_jr_8013FFD8.c index e6750fc26..bdb7f7161 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8013FFD8.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80185A38; +extern s16 D_80185A3A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801856D8; + extern u8 D_801856F0; + extern u8 D_80185764; + extern u8 D_8018576C; + extern void *D_801B25E8; + extern void *D_801B25EC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B25E8 = &D_801856D8; + D_801B25EC = &D_80185764; + } else { + D_801B25E8 = &D_801856F0; + D_801B25EC = &D_8018576C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80185A38 = 0xE; + D_80185A3A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8016AB6C.c b/src/ov_SC04_004/ov_SC04_004_jr_8016AB6C.c index e79db8999..674ffb845 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8016AB6C.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B32E0; + extern s16 D_801B32E4; + extern u8 D_801879C4[]; + extern u8 D_801879D0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B32E0 != *(s16 *)(iVar4 + 6)) || (D_801B32E4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801879C4, 0x18), iVar2 != 0)) { + D_801B32E0 = *(u16 *)(iVar4 + 6); + D_801B32E4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801879D0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801879F0[])(void); diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8013FFD8.c b/src/ov_SC04_005/ov_SC04_005_jr_8013FFD8.c index 419929ccf..f4f891a89 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8013FFD8.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80188E6C; +extern s16 D_80188E6E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80188B0C; + extern u8 D_80188B24; + extern u8 D_80188B98; + extern u8 D_80188BA0; + extern void *D_801C07C0; + extern void *D_801C07C4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C07C0 = &D_80188B0C; + D_801C07C4 = &D_80188B98; + } else { + D_801C07C0 = &D_80188B24; + D_801C07C4 = &D_80188BA0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80188E6C = 0xE; + D_80188E6E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8016AB6C.c b/src/ov_SC04_005/ov_SC04_005_jr_8016AB6C.c index 25f59c3bd..3bc1f13af 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8016AB6C.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C14B8; + extern s16 D_801C14BC; + extern u8 D_8018ADF8[]; + extern u8 D_8018AE04[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C14B8 != *(s16 *)(iVar4 + 6)) || (D_801C14BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018ADF8, 0x18), iVar2 != 0)) { + D_801C14B8 = *(u16 *)(iVar4 + 6); + D_801C14BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018AE04); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018AE24[])(void); diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8013FFD8.c b/src/ov_SC04_006/ov_SC04_006_jr_8013FFD8.c index 59e18c0a0..21b6cd193 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8013FFD8.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80180F4C; +extern s16 D_80180F4E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180BEC; + extern u8 D_80180C04; + extern u8 D_80180C78; + extern u8 D_80180C80; + extern void *D_8019CA68; + extern void *D_8019CA6C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019CA68 = &D_80180BEC; + D_8019CA6C = &D_80180C78; + } else { + D_8019CA68 = &D_80180C04; + D_8019CA6C = &D_80180C80; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80180F4C = 0xE; + D_80180F4E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8016AB6C.c b/src/ov_SC04_006/ov_SC04_006_jr_8016AB6C.c index 7b357c90d..8f8f079fd 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8016AB6C.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019D760; + extern s16 D_8019D764; + extern u8 D_80182ED8[]; + extern u8 D_80182EE4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019D760 != *(s16 *)(iVar4 + 6)) || (D_8019D764 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182ED8, 0x18), iVar2 != 0)) { + D_8019D760 = *(u16 *)(iVar4 + 6); + D_8019D764 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182EE4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80182F04[])(void); diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8013FFD8.c b/src/ov_SC04_007/ov_SC04_007_jr_8013FFD8.c index 187ef6dc2..340d25c85 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_8013FFD8.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186F04; +extern s16 D_80186F06; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186BA4; + extern u8 D_80186BBC; + extern u8 D_80186C30; + extern u8 D_80186C38; + extern void *D_801B4020; + extern void *D_801B4024; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B4020 = &D_80186BA4; + D_801B4024 = &D_80186C30; + } else { + D_801B4020 = &D_80186BBC; + D_801B4024 = &D_80186C38; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186F04 = 0xE; + D_80186F06 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8016AB6C.c b/src/ov_SC04_007/ov_SC04_007_jr_8016AB6C.c index 71166b6a5..7b34e627e 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_8016AB6C.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B4D18; + extern s16 D_801B4D1C; + extern u8 D_80188E90[]; + extern u8 D_80188E9C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B4D18 != *(s16 *)(iVar4 + 6)) || (D_801B4D1C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188E90, 0x18), iVar2 != 0)) { + D_801B4D18 = *(u16 *)(iVar4 + 6); + D_801B4D1C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188E9C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188EBC[])(void); diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8013FFD8.c b/src/ov_SC04_008/ov_SC04_008_jr_8013FFD8.c index 6544f95ad..5b800d9c4 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_8013FFD8.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FE3C; +extern s16 D_8017FE3E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FADC; + extern u8 D_8017FAF4; + extern u8 D_8017FB68; + extern u8 D_8017FB70; + extern void *D_80190CF8; + extern void *D_80190CFC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80190CF8 = &D_8017FADC; + D_80190CFC = &D_8017FB68; + } else { + D_80190CF8 = &D_8017FAF4; + D_80190CFC = &D_8017FB70; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FE3C = 0xE; + D_8017FE3E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8016AB6C.c b/src/ov_SC04_008/ov_SC04_008_jr_8016AB6C.c index a20975edf..d02397f49 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_8016AB6C.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801919F0; + extern s16 D_801919F4; + extern u8 D_80181DC8[]; + extern u8 D_80181DD4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801919F0 != *(s16 *)(iVar4 + 6)) || (D_801919F4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181DC8, 0x18), iVar2 != 0)) { + D_801919F0 = *(u16 *)(iVar4 + 6); + D_801919F4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181DD4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181DF4[])(void); diff --git a/src/ov_SC04_009/ov_SC04_009_jr_8013FFD8.c b/src/ov_SC04_009/ov_SC04_009_jr_8013FFD8.c index 7ba84b1ab..afdeebeef 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_8013FFD8.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FE68; +extern s16 D_8017FE6A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FB08; + extern u8 D_8017FB20; + extern u8 D_8017FB94; + extern u8 D_8017FB9C; + extern void *D_80196F08; + extern void *D_80196F0C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80196F08 = &D_8017FB08; + D_80196F0C = &D_8017FB94; + } else { + D_80196F08 = &D_8017FB20; + D_80196F0C = &D_8017FB9C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FE68 = 0xE; + D_8017FE6A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_009/ov_SC04_009_jr_8016AB6C.c b/src/ov_SC04_009/ov_SC04_009_jr_8016AB6C.c index d50648ff2..5acd2e675 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_8016AB6C.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80197C00; + extern s16 D_80197C04; + extern u8 D_80181DF4[]; + extern u8 D_80181E00[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80197C00 != *(s16 *)(iVar4 + 6)) || (D_80197C04 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181DF4, 0x18), iVar2 != 0)) { + D_80197C00 = *(u16 *)(iVar4 + 6); + D_80197C04 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181E00); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181E20[])(void); diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8013FFD8.c b/src/ov_SC04_010/ov_SC04_010_jr_8013FFD8.c index 0830e6ba4..bfd3939f1 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_8013FFD8.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F514; +extern s16 D_8017F516; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F1B4; + extern u8 D_8017F1CC; + extern u8 D_8017F240; + extern u8 D_8017F248; + extern void *D_8018E3A0; + extern void *D_8018E3A4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018E3A0 = &D_8017F1B4; + D_8018E3A4 = &D_8017F240; + } else { + D_8018E3A0 = &D_8017F1CC; + D_8018E3A4 = &D_8017F248; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F514 = 0xE; + D_8017F516 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8016AB6C.c b/src/ov_SC04_010/ov_SC04_010_jr_8016AB6C.c index 763bedd5d..0e4984cbb 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_8016AB6C.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F098; + extern s16 D_8018F09C; + extern u8 D_801814A0[]; + extern u8 D_801814AC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F098 != *(s16 *)(iVar4 + 6)) || (D_8018F09C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801814A0, 0x18), iVar2 != 0)) { + D_8018F098 = *(u16 *)(iVar4 + 6); + D_8018F09C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801814AC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801814CC[])(void); diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c b/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c index 91b9f8ce3..b66cef668 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801917A4; +extern s16 D_801917A6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80191444; + extern u8 D_8019145C; + extern u8 D_801914D0; + extern u8 D_801914D8; + extern void *D_801EDB08; + extern void *D_801EDB0C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801EDB08 = &D_80191444; + D_801EDB0C = &D_801914D0; + } else { + D_801EDB08 = &D_8019145C; + D_801EDB0C = &D_801914D8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801917A4 = 0xE; + D_801917A6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c b/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c index 6a280d057..7175b22b7 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EE800; + extern s16 D_801EE804; + extern u8 D_80193730[]; + extern u8 D_8019373C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EE800 != *(s16 *)(iVar4 + 6)) || (D_801EE804 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80193730, 0x18), iVar2 != 0)) { + D_801EE800 = *(u16 *)(iVar4 + 6); + D_801EE804 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8019373C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8019375C[])(void); diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8013FFD8.c b/src/ov_SC04_012/ov_SC04_012_jr_8013FFD8.c index 7afa9c3e6..736aa9903 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_8013FFD8.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F978; +extern s16 D_8017F97A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F618; + extern u8 D_8017F630; + extern u8 D_8017F6A4; + extern u8 D_8017F6AC; + extern void *D_80190A78; + extern void *D_80190A7C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80190A78 = &D_8017F618; + D_80190A7C = &D_8017F6A4; + } else { + D_80190A78 = &D_8017F630; + D_80190A7C = &D_8017F6AC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F978 = 0xE; + D_8017F97A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8016AB6C.c b/src/ov_SC04_012/ov_SC04_012_jr_8016AB6C.c index dcff1397a..a7fb9bfaa 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_8016AB6C.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80191770; + extern s16 D_80191774; + extern u8 D_80181904[]; + extern u8 D_80181910[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80191770 != *(s16 *)(iVar4 + 6)) || (D_80191774 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181904, 0x18), iVar2 != 0)) { + D_80191770 = *(u16 *)(iVar4 + 6); + D_80191774 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181910); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181930[])(void); diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8013FFD8.c b/src/ov_SC04_015/ov_SC04_015_jr_8013FFD8.c index b21b19f3f..e0b813630 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_8013FFD8.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801858B0; +extern s16 D_801858B2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185550; + extern u8 D_80185568; + extern u8 D_801855DC; + extern u8 D_801855E4; + extern void *D_801C7760; + extern void *D_801C7764; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C7760 = &D_80185550; + D_801C7764 = &D_801855DC; + } else { + D_801C7760 = &D_80185568; + D_801C7764 = &D_801855E4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801858B0 = 0xE; + D_801858B2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8016AB6C.c b/src/ov_SC04_015/ov_SC04_015_jr_8016AB6C.c index e554f159d..cccae9f11 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_8016AB6C.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C8458; + extern s16 D_801C845C; + extern u8 D_8018783C[]; + extern u8 D_80187848[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C8458 != *(s16 *)(iVar4 + 6)) || (D_801C845C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018783C, 0x18), iVar2 != 0)) { + D_801C8458 = *(u16 *)(iVar4 + 6); + D_801C845C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187848); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187868[])(void); diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8013FFD8.c b/src/ov_SC04_016/ov_SC04_016_jr_8013FFD8.c index c49c3b732..71d08fd45 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_8013FFD8.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80181374; +extern s16 D_80181376; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181014; + extern u8 D_8018102C; + extern u8 D_801810A0; + extern u8 D_801810A8; + extern void *D_801A5908; + extern void *D_801A590C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A5908 = &D_80181014; + D_801A590C = &D_801810A0; + } else { + D_801A5908 = &D_8018102C; + D_801A590C = &D_801810A8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80181374 = 0xE; + D_80181376 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8016AB6C.c b/src/ov_SC04_016/ov_SC04_016_jr_8016AB6C.c index e5edc64a3..820623ca7 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_8016AB6C.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A6600; + extern s16 D_801A6604; + extern u8 D_80183300[]; + extern u8 D_8018330C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A6600 != *(s16 *)(iVar4 + 6)) || (D_801A6604 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183300, 0x18), iVar2 != 0)) { + D_801A6600 = *(u16 *)(iVar4 + 6); + D_801A6604 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018330C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018332C[])(void); diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c b/src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c index 4ab5916c5..de6b807e5 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018E58C; +extern s16 D_8018E58E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018E22C; + extern u8 D_8018E244; + extern u8 D_8018E2B8; + extern u8 D_8018E2C0; + extern void *D_801E5B58; + extern void *D_801E5B5C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E5B58 = &D_8018E22C; + D_801E5B5C = &D_8018E2B8; + } else { + D_801E5B58 = &D_8018E244; + D_801E5B5C = &D_8018E2C0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018E58C = 0xE; + D_8018E58E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c b/src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c index 73573fc08..d898ea6db 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E6850; + extern s16 D_801E6854; + extern u8 D_80190518[]; + extern u8 D_80190524[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E6850 != *(s16 *)(iVar4 + 6)) || (D_801E6854 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80190518, 0x18), iVar2 != 0)) { + D_801E6850 = *(u16 *)(iVar4 + 6); + D_801E6854 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80190524); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80190544[])(void); diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c b/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c index 009c8d97f..006bbfeba 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018E58C; +extern s16 D_8018E58E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018E22C; + extern u8 D_8018E244; + extern u8 D_8018E2B8; + extern u8 D_8018E2C0; + extern void *D_801E5B58; + extern void *D_801E5B5C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E5B58 = &D_8018E22C; + D_801E5B5C = &D_8018E2B8; + } else { + D_801E5B58 = &D_8018E244; + D_801E5B5C = &D_8018E2C0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018E58C = 0xE; + D_8018E58E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c b/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c index 908d6afe0..f82135df5 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E6850; + extern s16 D_801E6854; + extern u8 D_80190518[]; + extern u8 D_80190524[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E6850 != *(s16 *)(iVar4 + 6)) || (D_801E6854 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80190518, 0x18), iVar2 != 0)) { + D_801E6850 = *(u16 *)(iVar4 + 6); + D_801E6854 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80190524); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80190544[])(void); diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8013FFD8.c b/src/ov_SC04_020/ov_SC04_020_jr_8013FFD8.c index 368ca92e0..c02705b42 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_8013FFD8.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801846C4; +extern s16 D_801846C6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80184364; + extern u8 D_8018437C; + extern u8 D_801843F0; + extern u8 D_801843F8; + extern void *D_801BB168; + extern void *D_801BB16C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801BB168 = &D_80184364; + D_801BB16C = &D_801843F0; + } else { + D_801BB168 = &D_8018437C; + D_801BB16C = &D_801843F8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801846C4 = 0xE; + D_801846C6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8016AB6C.c b/src/ov_SC04_020/ov_SC04_020_jr_8016AB6C.c index ff4a0ab5e..f5920393f 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_8016AB6C.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801BBE60; + extern s16 D_801BBE64; + extern u8 D_80186650[]; + extern u8 D_8018665C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801BBE60 != *(s16 *)(iVar4 + 6)) || (D_801BBE64 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80186650, 0x18), iVar2 != 0)) { + D_801BBE60 = *(u16 *)(iVar4 + 6); + D_801BBE64 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018665C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018667C[])(void); diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8013FFD8.c b/src/ov_SC04_021/ov_SC04_021_jr_8013FFD8.c index ead17ab73..994d4f31e 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_8013FFD8.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801805F0; +extern s16 D_801805F2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180290; + extern u8 D_801802A8; + extern u8 D_8018031C; + extern u8 D_80180324; + extern void *D_8018E7C0; + extern void *D_8018E7C4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018E7C0 = &D_80180290; + D_8018E7C4 = &D_8018031C; + } else { + D_8018E7C0 = &D_801802A8; + D_8018E7C4 = &D_80180324; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801805F0 = 0xE; + D_801805F2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8016AB6C.c b/src/ov_SC04_021/ov_SC04_021_jr_8016AB6C.c index 302132415..04a2a9f02 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_8016AB6C.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F4B8; + extern s16 D_8018F4BC; + extern u8 D_8018257C[]; + extern u8 D_80182588[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F4B8 != *(s16 *)(iVar4 + 6)) || (D_8018F4BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018257C, 0x18), iVar2 != 0)) { + D_8018F4B8 = *(u16 *)(iVar4 + 6); + D_8018F4BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182588); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801825A8[])(void); diff --git a/src/ov_SC05_000/ov_SC05_000_jr_8013FFD8.c b/src/ov_SC05_000/ov_SC05_000_jr_8013FFD8.c index ba76505d9..c6be216b2 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_8013FFD8.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F604; +extern s16 D_8017F606; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017F2A4; + extern u8 D_8017F2BC; + extern u8 D_8017F330; + extern u8 D_8017F338; + extern void *D_801998F0; + extern void *D_801998F4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801998F0 = &D_8017F2A4; + D_801998F4 = &D_8017F330; + } else { + D_801998F0 = &D_8017F2BC; + D_801998F4 = &D_8017F338; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F604 = 0xE; + D_8017F606 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_000/ov_SC05_000_jr_8016AB6C.c b/src/ov_SC05_000/ov_SC05_000_jr_8016AB6C.c index 0a1cecdfc..c5c7d0d08 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_8016AB6C.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_8016AB6C.c @@ -3206,7 +3206,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019A5E8; + extern s16 D_8019A5EC; + extern u8 D_80181590[]; + extern u8 D_8018159C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019A5E8 != *(s16 *)(iVar4 + 6)) || (D_8019A5EC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181590, 0x18), iVar2 != 0)) { + D_8019A5E8 = *(u16 *)(iVar4 + 6); + D_8019A5EC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018159C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801815BC[])(void); diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8013FFD8.c b/src/ov_SC05_001/ov_SC05_001_jr_8013FFD8.c index ac3132c58..02dd158d1 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8013FFD8.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186DE0; +extern s16 D_80186DE2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186A80; + extern u8 D_80186A98; + extern u8 D_80186B0C; + extern u8 D_80186B14; + extern void *D_801B49B0; + extern void *D_801B49B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B49B0 = &D_80186A80; + D_801B49B4 = &D_80186B0C; + } else { + D_801B49B0 = &D_80186A98; + D_801B49B4 = &D_80186B14; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186DE0 = 0xE; + D_80186DE2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8016AB6C.c b/src/ov_SC05_001/ov_SC05_001_jr_8016AB6C.c index c8a555406..eb7954e36 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8016AB6C.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B56A8; + extern s16 D_801B56AC; + extern u8 D_80188D6C[]; + extern u8 D_80188D78[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B56A8 != *(s16 *)(iVar4 + 6)) || (D_801B56AC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188D6C, 0x18), iVar2 != 0)) { + D_801B56A8 = *(u16 *)(iVar4 + 6); + D_801B56AC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188D78); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188D98[])(void); diff --git a/src/ov_SC05_002/ov_SC05_002_jr_8013FFD8.c b/src/ov_SC05_002/ov_SC05_002_jr_8013FFD8.c index 570a62d6c..1d0f516de 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_8013FFD8.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801815A0; +extern s16 D_801815A2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181240; + extern u8 D_80181258; + extern u8 D_801812CC; + extern u8 D_801812D4; + extern void *D_8019EC50; + extern void *D_8019EC54; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019EC50 = &D_80181240; + D_8019EC54 = &D_801812CC; + } else { + D_8019EC50 = &D_80181258; + D_8019EC54 = &D_801812D4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801815A0 = 0xE; + D_801815A2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_002/ov_SC05_002_jr_8016AB6C.c b/src/ov_SC05_002/ov_SC05_002_jr_8016AB6C.c index 74e73b07a..f2dfdcbd8 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_8016AB6C.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019F948; + extern s16 D_8019F94C; + extern u8 D_8018352C[]; + extern u8 D_80183538[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019F948 != *(s16 *)(iVar4 + 6)) || (D_8019F94C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018352C, 0x18), iVar2 != 0)) { + D_8019F948 = *(u16 *)(iVar4 + 6); + D_8019F94C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183538); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183558[])(void); diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8013FFD8.c b/src/ov_SC05_003/ov_SC05_003_jr_8013FFD8.c index ab13a4191..2be976907 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_8013FFD8.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801838D8; +extern s16 D_801838DA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183578; + extern u8 D_80183590; + extern u8 D_80183604; + extern u8 D_8018360C; + extern void *D_801AB760; + extern void *D_801AB764; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801AB760 = &D_80183578; + D_801AB764 = &D_80183604; + } else { + D_801AB760 = &D_80183590; + D_801AB764 = &D_8018360C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801838D8 = 0xE; + D_801838DA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8016AB6C.c b/src/ov_SC05_003/ov_SC05_003_jr_8016AB6C.c index 58a178b3b..8ae485595 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_8016AB6C.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AC458; + extern s16 D_801AC45C; + extern u8 D_80185864[]; + extern u8 D_80185870[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AC458 != *(s16 *)(iVar4 + 6)) || (D_801AC45C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185864, 0x18), iVar2 != 0)) { + D_801AC458 = *(u16 *)(iVar4 + 6); + D_801AC45C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185870); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185890[])(void); diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8016AB6C.c b/src/ov_SC05_004/ov_SC05_004_jr_8016AB6C.c index bc55644dd..109a3a30d 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_8016AB6C.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019EAD0; + extern s16 D_8019EAD4; + extern u8 D_80184970[]; + extern u8 D_8018497C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019EAD0 != *(s16 *)(iVar4 + 6)) || (D_8019EAD4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80184970, 0x18), iVar2 != 0)) { + D_8019EAD0 = *(u16 *)(iVar4 + 6); + D_8019EAD4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018497C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018499C[])(void); diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8013FFD8.c b/src/ov_SC05_005/ov_SC05_005_jr_8013FFD8.c index 090fbdbb7..fe86e1e97 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_8013FFD8.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801837B8; +extern s16 D_801837BA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183458; + extern u8 D_80183470; + extern u8 D_801834E4; + extern u8 D_801834EC; + extern void *D_801B0A40; + extern void *D_801B0A44; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B0A40 = &D_80183458; + D_801B0A44 = &D_801834E4; + } else { + D_801B0A40 = &D_80183470; + D_801B0A44 = &D_801834EC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801837B8 = 0xE; + D_801837BA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8016AB6C.c b/src/ov_SC05_005/ov_SC05_005_jr_8016AB6C.c index 2d959c61e..9c80cd66b 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_8016AB6C.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B1738; + extern s16 D_801B173C; + extern u8 D_80185744[]; + extern u8 D_80185750[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B1738 != *(s16 *)(iVar4 + 6)) || (D_801B173C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185744, 0x18), iVar2 != 0)) { + D_801B1738 = *(u16 *)(iVar4 + 6); + D_801B173C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185750); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185770[])(void); diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8013FFD8.c b/src/ov_SC05_006/ov_SC05_006_jr_8013FFD8.c index d30a66d28..e48327f3f 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_8013FFD8.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801807D8; +extern s16 D_801807DA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180478; + extern u8 D_80180490; + extern u8 D_80180504; + extern u8 D_8018050C; + extern void *D_8018EB78; + extern void *D_8018EB7C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018EB78 = &D_80180478; + D_8018EB7C = &D_80180504; + } else { + D_8018EB78 = &D_80180490; + D_8018EB7C = &D_8018050C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801807D8 = 0xE; + D_801807DA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8016AB6C.c b/src/ov_SC05_006/ov_SC05_006_jr_8016AB6C.c index 81b0f5f4d..47c1f2318 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_8016AB6C.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F870; + extern s16 D_8018F874; + extern u8 D_80182764[]; + extern u8 D_80182770[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F870 != *(s16 *)(iVar4 + 6)) || (D_8018F874 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80182764, 0x18), iVar2 != 0)) { + D_8018F870 = *(u16 *)(iVar4 + 6); + D_8018F874 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182770); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80182790[])(void); diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8013FFD8.c b/src/ov_SC05_007/ov_SC05_007_jr_8013FFD8.c index 75be43b41..585f931f3 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_8013FFD8.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80181DD4; +extern s16 D_80181DD6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181A74; + extern u8 D_80181A8C; + extern u8 D_80181B00; + extern u8 D_80181B08; + extern void *D_8019BB58; + extern void *D_8019BB5C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019BB58 = &D_80181A74; + D_8019BB5C = &D_80181B00; + } else { + D_8019BB58 = &D_80181A8C; + D_8019BB5C = &D_80181B08; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80181DD4 = 0xE; + D_80181DD6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8016AB6C.c b/src/ov_SC05_007/ov_SC05_007_jr_8016AB6C.c index dd3ae0e89..e39b65832 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_8016AB6C.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019C850; + extern s16 D_8019C854; + extern u8 D_80183D60[]; + extern u8 D_80183D6C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019C850 != *(s16 *)(iVar4 + 6)) || (D_8019C854 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183D60, 0x18), iVar2 != 0)) { + D_8019C850 = *(u16 *)(iVar4 + 6); + D_8019C854 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183D6C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183D8C[])(void); diff --git a/src/ov_SC05_008/ov_SC05_008_jr_8013FFD8.c b/src/ov_SC05_008/ov_SC05_008_jr_8013FFD8.c index f52abfcf4..235a72a80 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_8013FFD8.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183D2C; +extern s16 D_80183D2E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801839CC; + extern u8 D_801839E4; + extern u8 D_80183A58; + extern u8 D_80183A60; + extern void *D_8019FE88; + extern void *D_8019FE8C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019FE88 = &D_801839CC; + D_8019FE8C = &D_80183A58; + } else { + D_8019FE88 = &D_801839E4; + D_8019FE8C = &D_80183A60; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183D2C = 0xE; + D_80183D2E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_008/ov_SC05_008_jr_8016AB6C.c b/src/ov_SC05_008/ov_SC05_008_jr_8016AB6C.c index 9d61567f7..6c0b5a49b 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_8016AB6C.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A0B80; + extern s16 D_801A0B84; + extern u8 D_80185CB8[]; + extern u8 D_80185CC4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A0B80 != *(s16 *)(iVar4 + 6)) || (D_801A0B84 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185CB8, 0x18), iVar2 != 0)) { + D_801A0B80 = *(u16 *)(iVar4 + 6); + D_801A0B84 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185CC4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185CE4[])(void); diff --git a/src/ov_SC05_009/ov_SC05_009_jr_8013FFD8.c b/src/ov_SC05_009/ov_SC05_009_jr_8013FFD8.c index 43973b581..ab82ecfcc 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_8013FFD8.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FE3C; +extern s16 D_8017FE3E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FADC; + extern u8 D_8017FAF4; + extern u8 D_8017FB68; + extern u8 D_8017FB70; + extern void *D_80195898; + extern void *D_8019589C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80195898 = &D_8017FADC; + D_8019589C = &D_8017FB68; + } else { + D_80195898 = &D_8017FAF4; + D_8019589C = &D_8017FB70; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FE3C = 0xE; + D_8017FE3E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_009/ov_SC05_009_jr_8016AB6C.c b/src/ov_SC05_009/ov_SC05_009_jr_8016AB6C.c index d4126f45c..390d479ea 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_8016AB6C.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80196590; + extern s16 D_80196594; + extern u8 D_80181DC8[]; + extern u8 D_80181DD4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80196590 != *(s16 *)(iVar4 + 6)) || (D_80196594 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181DC8, 0x18), iVar2 != 0)) { + D_80196590 = *(u16 *)(iVar4 + 6); + D_80196594 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181DD4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181DF4[])(void); diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8013FFD8.c b/src/ov_SC05_010/ov_SC05_010_jr_8013FFD8.c index f34a7199f..d88627e3e 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8013FFD8.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80189D18; +extern s16 D_80189D1A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801899B8; + extern u8 D_801899D0; + extern u8 D_80189A44; + extern u8 D_80189A4C; + extern void *D_801C5CE8; + extern void *D_801C5CEC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801C5CE8 = &D_801899B8; + D_801C5CEC = &D_80189A44; + } else { + D_801C5CE8 = &D_801899D0; + D_801C5CEC = &D_80189A4C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80189D18 = 0xE; + D_80189D1A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8016AB6C.c b/src/ov_SC05_010/ov_SC05_010_jr_8016AB6C.c index 9d75af9ac..f034942db 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8016AB6C.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801C69E0; + extern s16 D_801C69E4; + extern u8 D_8018BCA4[]; + extern u8 D_8018BCB0[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801C69E0 != *(s16 *)(iVar4 + 6)) || (D_801C69E4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018BCA4, 0x18), iVar2 != 0)) { + D_801C69E0 = *(u16 *)(iVar4 + 6); + D_801C69E4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018BCB0); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018BCD0[])(void); diff --git a/src/ov_SC05_011/ov_SC05_011_jr_8013FFD8.c b/src/ov_SC05_011/ov_SC05_011_jr_8013FFD8.c index 19370637c..3666cc799 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_8013FFD8.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F090; +extern s16 D_8017F092; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017ED30; + extern u8 D_8017ED48; + extern u8 D_8017EDBC; + extern u8 D_8017EDC4; + extern void *D_8019BE70; + extern void *D_8019BE74; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019BE70 = &D_8017ED30; + D_8019BE74 = &D_8017EDBC; + } else { + D_8019BE70 = &D_8017ED48; + D_8019BE74 = &D_8017EDC4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F090 = 0xE; + D_8017F092 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_011/ov_SC05_011_jr_8016AB6C.c b/src/ov_SC05_011/ov_SC05_011_jr_8016AB6C.c index f3b12908b..91fc4b910 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_8016AB6C.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019CB68; + extern s16 D_8019CB6C; + extern u8 D_8018101C[]; + extern u8 D_80181028[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019CB68 != *(s16 *)(iVar4 + 6)) || (D_8019CB6C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018101C, 0x18), iVar2 != 0)) { + D_8019CB68 = *(u16 *)(iVar4 + 6); + D_8019CB6C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181028); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181048[])(void); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8013FFD8.c b/src/ov_SC05_017/ov_SC05_017_jr_8013FFD8.c index 04229363c..0b4c49bdd 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8013FFD8.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018E550; +extern s16 D_8018E552; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018E1F0; + extern u8 D_8018E208; + extern u8 D_8018E27C; + extern u8 D_8018E284; + extern void *D_801EB9B0; + extern void *D_801EB9B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801EB9B0 = &D_8018E1F0; + D_801EB9B4 = &D_8018E27C; + } else { + D_801EB9B0 = &D_8018E208; + D_801EB9B4 = &D_8018E284; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018E550 = 0xE; + D_8018E552 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8016AB6C.c b/src/ov_SC05_017/ov_SC05_017_jr_8016AB6C.c index 6949935ce..8badd0715 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8016AB6C.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801EC6A8; + extern s16 D_801EC6AC; + extern u8 D_801904DC[]; + extern u8 D_801904E8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801EC6A8 != *(s16 *)(iVar4 + 6)) || (D_801EC6AC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801904DC, 0x18), iVar2 != 0)) { + D_801EC6A8 = *(u16 *)(iVar4 + 6); + D_801EC6AC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801904E8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80190508[])(void); diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8013FFD8.c b/src/ov_SC05_018/ov_SC05_018_jr_8013FFD8.c index 803a80210..74d02ecb3 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_8013FFD8.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80187CAC; +extern s16 D_80187CAE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018794C; + extern u8 D_80187964; + extern u8 D_801879D8; + extern u8 D_801879E0; + extern void *D_801E50F0; + extern void *D_801E50F4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E50F0 = &D_8018794C; + D_801E50F4 = &D_801879D8; + } else { + D_801E50F0 = &D_80187964; + D_801E50F4 = &D_801879E0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80187CAC = 0xE; + D_80187CAE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8016AB6C.c b/src/ov_SC05_018/ov_SC05_018_jr_8016AB6C.c index 82f38b084..af3ac67ab 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_8016AB6C.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E5DE8; + extern s16 D_801E5DEC; + extern u8 D_80189C38[]; + extern u8 D_80189C44[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E5DE8 != *(s16 *)(iVar4 + 6)) || (D_801E5DEC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189C38, 0x18), iVar2 != 0)) { + D_801E5DE8 = *(u16 *)(iVar4 + 6); + D_801E5DEC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80189C44); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80189C64[])(void); diff --git a/src/ov_SC05_019/ov_SC05_019_jr_8013FFD8.c b/src/ov_SC05_019/ov_SC05_019_jr_8013FFD8.c index a7a061014..e0aec6fb3 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_8013FFD8.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801805F0; +extern s16 D_801805F2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180290; + extern u8 D_801802A8; + extern u8 D_8018031C; + extern u8 D_80180324; + extern void *D_8018E7C0; + extern void *D_8018E7C4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8018E7C0 = &D_80180290; + D_8018E7C4 = &D_8018031C; + } else { + D_8018E7C0 = &D_801802A8; + D_8018E7C4 = &D_80180324; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801805F0 = 0xE; + D_801805F2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC05_019/ov_SC05_019_jr_8016AB6C.c b/src/ov_SC05_019/ov_SC05_019_jr_8016AB6C.c index 1b2ae14ea..5edebbc8e 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_8016AB6C.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8018F4B8; + extern s16 D_8018F4BC; + extern u8 D_8018257C[]; + extern u8 D_80182588[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8018F4B8 != *(s16 *)(iVar4 + 6)) || (D_8018F4BC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018257C, 0x18), iVar2 != 0)) { + D_8018F4B8 = *(u16 *)(iVar4 + 6); + D_8018F4BC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80182588); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801825A8[])(void); diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8016AB6C.c b/src/ov_SC06_000/ov_SC06_000_jr_8016AB6C.c index 6276cae4c..ed3751503 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8016AB6C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AE128; + extern s16 D_801AE12C; + extern u8 D_8018B58C[]; + extern u8 D_8018B598[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AE128 != *(s16 *)(iVar4 + 6)) || (D_801AE12C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018B58C, 0x18), iVar2 != 0)) { + D_801AE128 = *(u16 *)(iVar4 + 6); + D_801AE12C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018B598); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018B5B8[])(void); diff --git a/src/ov_SC06_006/ov_SC06_006_jr_8013FFD8.c b/src/ov_SC06_006/ov_SC06_006_jr_8013FFD8.c index 38d9922b3..eea293d37 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_8013FFD8.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80183124; +extern s16 D_80183126; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80182DC4; + extern u8 D_80182DDC; + extern u8 D_80182E50; + extern u8 D_80182E58; + extern void *D_801F6E78; + extern void *D_801F6E7C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801F6E78 = &D_80182DC4; + D_801F6E7C = &D_80182E50; + } else { + D_801F6E78 = &D_80182DDC; + D_801F6E7C = &D_80182E58; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80183124 = 0xE; + D_80183126 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_006/ov_SC06_006_jr_8016AB6C.c b/src/ov_SC06_006/ov_SC06_006_jr_8016AB6C.c index aff9b437a..85b065459 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_8016AB6C.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801F7B70; + extern s16 D_801F7B74; + extern u8 D_801850B0[]; + extern u8 D_801850BC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801F7B70 != *(s16 *)(iVar4 + 6)) || (D_801F7B74 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801850B0, 0x18), iVar2 != 0)) { + D_801F7B70 = *(u16 *)(iVar4 + 6); + D_801F7B74 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801850BC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801850DC[])(void); diff --git a/src/ov_SC06_008/ov_SC06_008_jr_8013FFD8.c b/src/ov_SC06_008/ov_SC06_008_jr_8013FFD8.c index 98cfb90d9..6e30e059f 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_8013FFD8.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186B8C; +extern s16 D_80186B8E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018682C; + extern u8 D_80186844; + extern u8 D_801868B8; + extern u8 D_801868C0; + extern void *D_801A8DF8; + extern void *D_801A8DFC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A8DF8 = &D_8018682C; + D_801A8DFC = &D_801868B8; + } else { + D_801A8DF8 = &D_80186844; + D_801A8DFC = &D_801868C0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186B8C = 0xE; + D_80186B8E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c b/src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c index 4b15d3fa9..dfd0c6ec1 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A9AF0; + extern s16 D_801A9AF4; + extern u8 D_80188B18[]; + extern u8 D_80188B24[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A9AF0 != *(s16 *)(iVar4 + 6)) || (D_801A9AF4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188B18, 0x18), iVar2 != 0)) { + D_801A9AF0 = *(u16 *)(iVar4 + 6); + D_801A9AF4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80188B24); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80188B44[])(void); diff --git a/src/ov_SC06_010/ov_SC06_010_jr_8016AB6C.c b/src/ov_SC06_010/ov_SC06_010_jr_8016AB6C.c index 5fc709b20..a3da6a54e 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_8016AB6C.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B1B28; + extern s16 D_801B1B2C; + extern u8 D_80189CF4[]; + extern u8 D_80189D00[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B1B28 != *(s16 *)(iVar4 + 6)) || (D_801B1B2C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189CF4, 0x18), iVar2 != 0)) { + D_801B1B28 = *(u16 *)(iVar4 + 6); + D_801B1B2C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80189D00); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80189D20[])(void); diff --git a/src/ov_SC06_011/ov_SC06_011_jr_8013FFD8.c b/src/ov_SC06_011/ov_SC06_011_jr_8013FFD8.c index 5e3479266..fd700c6ec 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_8013FFD8.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801817C8; +extern s16 D_801817CA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80181468; + extern u8 D_80181480; + extern u8 D_801814F4; + extern u8 D_801814FC; + extern void *D_801AA9E0; + extern void *D_801AA9E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801AA9E0 = &D_80181468; + D_801AA9E4 = &D_801814F4; + } else { + D_801AA9E0 = &D_80181480; + D_801AA9E4 = &D_801814FC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801817C8 = 0xE; + D_801817CA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_011/ov_SC06_011_jr_8016AB6C.c b/src/ov_SC06_011/ov_SC06_011_jr_8016AB6C.c index dd38a9dfe..52aeb4372 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_8016AB6C.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AB6D8; + extern s16 D_801AB6DC; + extern u8 D_80183754[]; + extern u8 D_80183760[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AB6D8 != *(s16 *)(iVar4 + 6)) || (D_801AB6DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183754, 0x18), iVar2 != 0)) { + D_801AB6D8 = *(u16 *)(iVar4 + 6); + D_801AB6DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183760); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183780[])(void); diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8013FFD8.c b/src/ov_SC06_013/ov_SC06_013_jr_8013FFD8.c index 0bf4cd114..b4d22bae4 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_8013FFD8.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FF44; +extern s16 D_8017FF46; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FBE4; + extern u8 D_8017FBFC; + extern u8 D_8017FC70; + extern u8 D_8017FC78; + extern void *D_80199898; + extern void *D_8019989C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80199898 = &D_8017FBE4; + D_8019989C = &D_8017FC70; + } else { + D_80199898 = &D_8017FBFC; + D_8019989C = &D_8017FC78; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FF44 = 0xE; + D_8017FF46 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8016AB6C.c b/src/ov_SC06_013/ov_SC06_013_jr_8016AB6C.c index 07571f391..2283e8b2a 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_8016AB6C.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019A590; + extern s16 D_8019A594; + extern u8 D_80181ED0[]; + extern u8 D_80181EDC[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019A590 != *(s16 *)(iVar4 + 6)) || (D_8019A594 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181ED0, 0x18), iVar2 != 0)) { + D_8019A590 = *(u16 *)(iVar4 + 6); + D_8019A594 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181EDC); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181EFC[])(void); diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8013FFD8.c b/src/ov_SC06_014/ov_SC06_014_jr_8013FFD8.c index d599a5d2a..ed5734abe 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8013FFD8.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801812A8; +extern s16 D_801812AA; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80180F48; + extern u8 D_80180F60; + extern u8 D_80180FD4; + extern u8 D_80180FDC; + extern void *D_801A0288; + extern void *D_801A028C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A0288 = &D_80180F48; + D_801A028C = &D_80180FD4; + } else { + D_801A0288 = &D_80180F60; + D_801A028C = &D_80180FDC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801812A8 = 0xE; + D_801812AA = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8016AB6C.c b/src/ov_SC06_014/ov_SC06_014_jr_8016AB6C.c index c240369fb..78a2dbfed 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8016AB6C.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A0F80; + extern s16 D_801A0F84; + extern u8 D_80183234[]; + extern u8 D_80183240[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A0F80 != *(s16 *)(iVar4 + 6)) || (D_801A0F84 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80183234, 0x18), iVar2 != 0)) { + D_801A0F80 = *(u16 *)(iVar4 + 6); + D_801A0F84 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80183240); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80183260[])(void); diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8013FFD8.c b/src/ov_SC06_015/ov_SC06_015_jr_8013FFD8.c index b847732c2..25317789b 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_8013FFD8.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017FE00; +extern s16 D_8017FE02; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017FAA0; + extern u8 D_8017FAB8; + extern u8 D_8017FB2C; + extern u8 D_8017FB34; + extern void *D_80193668; + extern void *D_8019366C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_80193668 = &D_8017FAA0; + D_8019366C = &D_8017FB2C; + } else { + D_80193668 = &D_8017FAB8; + D_8019366C = &D_8017FB34; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017FE00 = 0xE; + D_8017FE02 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8016AB6C.c b/src/ov_SC06_015/ov_SC06_015_jr_8016AB6C.c index 07fe26d3f..170a5902f 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_8016AB6C.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_80194360; + extern s16 D_80194364; + extern u8 D_80181D8C[]; + extern u8 D_80181D98[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_80194360 != *(s16 *)(iVar4 + 6)) || (D_80194364 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80181D8C, 0x18), iVar2 != 0)) { + D_80194360 = *(u16 *)(iVar4 + 6); + D_80194364 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80181D98); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181DB8[])(void); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8013FFD8.c b/src/ov_SC06_016/ov_SC06_016_jr_8013FFD8.c index 9aa6333e3..4410ea5ef 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8013FFD8.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80186210; +extern s16 D_80186212; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185EB0; + extern u8 D_80185EC8; + extern u8 D_80185F3C; + extern u8 D_80185F44; + extern void *D_8019E438; + extern void *D_8019E43C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019E438 = &D_80185EB0; + D_8019E43C = &D_80185F3C; + } else { + D_8019E438 = &D_80185EC8; + D_8019E43C = &D_80185F44; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80186210 = 0xE; + D_80186212 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8016AB6C.c b/src/ov_SC06_016/ov_SC06_016_jr_8016AB6C.c index a15f41b86..781c4f97c 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8016AB6C.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019F130; + extern s16 D_8019F134; + extern u8 D_8018819C[]; + extern u8 D_801881A8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019F130 != *(s16 *)(iVar4 + 6)) || (D_8019F134 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018819C, 0x18), iVar2 != 0)) { + D_8019F130 = *(u16 *)(iVar4 + 6); + D_8019F134 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801881A8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801881C8[])(void); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8013FFD8.c b/src/ov_SC06_018/ov_SC06_018_jr_8013FFD8.c index ae1a98e35..37f49f8f4 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8013FFD8.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8019494C; +extern s16 D_8019494E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_801945EC; + extern u8 D_80194604; + extern u8 D_80194678; + extern u8 D_80194680; + extern void *D_801D3D20; + extern void *D_801D3D24; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801D3D20 = &D_801945EC; + D_801D3D24 = &D_80194678; + } else { + D_801D3D20 = &D_80194604; + D_801D3D24 = &D_80194680; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8019494C = 0xE; + D_8019494E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8016AB6C.c b/src/ov_SC06_018/ov_SC06_018_jr_8016AB6C.c index c9c40fe6f..8723bc543 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8016AB6C.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D4A18; + extern s16 D_801D4A1C; + extern u8 D_801968D8[]; + extern u8 D_801968E4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D4A18 != *(s16 *)(iVar4 + 6)) || (D_801D4A1C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801968D8, 0x18), iVar2 != 0)) { + D_801D4A18 = *(u16 *)(iVar4 + 6); + D_801D4A1C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801968E4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80196904[])(void); diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8013FFD8.c b/src/ov_SC06_020/ov_SC06_020_jr_8013FFD8.c index b11a9451a..d50ea9a55 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_8013FFD8.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801863D4; +extern s16 D_801863D6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80186074; + extern u8 D_8018608C; + extern u8 D_80186100; + extern u8 D_80186108; + extern void *D_801B9538; + extern void *D_801B953C; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B9538 = &D_80186074; + D_801B953C = &D_80186100; + } else { + D_801B9538 = &D_8018608C; + D_801B953C = &D_80186108; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801863D4 = 0xE; + D_801863D6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8016AB6C.c b/src/ov_SC06_020/ov_SC06_020_jr_8016AB6C.c index 8b5f91d67..a97f84674 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_8016AB6C.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801BA230; + extern s16 D_801BA234; + extern u8 D_80188360[]; + extern u8 D_8018836C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801BA230 != *(s16 *)(iVar4 + 6)) || (D_801BA234 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80188360, 0x18), iVar2 != 0)) { + D_801BA230 = *(u16 *)(iVar4 + 6); + D_801BA234 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018836C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018838C[])(void); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8013FFD8.c b/src/ov_SC06_022/ov_SC06_022_jr_8013FFD8.c index ab6b5e473..c40a3fb6f 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8013FFD8.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018E690; +extern s16 D_8018E692; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018E330; + extern u8 D_8018E348; + extern u8 D_8018E3BC; + extern u8 D_8018E3C4; + extern void *D_801E0DA0; + extern void *D_801E0DA4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801E0DA0 = &D_8018E330; + D_801E0DA4 = &D_8018E3BC; + } else { + D_801E0DA0 = &D_8018E348; + D_801E0DA4 = &D_8018E3C4; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018E690 = 0xE; + D_8018E692 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8016AB6C.c b/src/ov_SC06_022/ov_SC06_022_jr_8016AB6C.c index fdf9391ae..dce82f724 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8016AB6C.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E1A98; + extern s16 D_801E1A9C; + extern u8 D_8019061C[]; + extern u8 D_80190628[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E1A98 != *(s16 *)(iVar4 + 6)) || (D_801E1A9C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8019061C, 0x18), iVar2 != 0)) { + D_801E1A98 = *(u16 *)(iVar4 + 6); + D_801E1A9C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80190628); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80190648[])(void); diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8013FFD8.c b/src/ov_SC06_024/ov_SC06_024_jr_8013FFD8.c index 310cc9a77..a16aeb84c 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_8013FFD8.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80190B68; +extern s16 D_80190B6A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80190808; + extern u8 D_80190820; + extern u8 D_80190894; + extern u8 D_8019089C; + extern void *D_801DFF20; + extern void *D_801DFF24; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801DFF20 = &D_80190808; + D_801DFF24 = &D_80190894; + } else { + D_801DFF20 = &D_80190820; + D_801DFF24 = &D_8019089C; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80190B68 = 0xE; + D_80190B6A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8016AB6C.c b/src/ov_SC06_024/ov_SC06_024_jr_8016AB6C.c index e8af4c51e..02ae09699 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_8016AB6C.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801E0C18; + extern s16 D_801E0C1C; + extern u8 D_80192AF4[]; + extern u8 D_80192B00[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801E0C18 != *(s16 *)(iVar4 + 6)) || (D_801E0C1C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80192AF4, 0x18), iVar2 != 0)) { + D_801E0C18 = *(u16 *)(iVar4 + 6); + D_801E0C1C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80192B00); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80192B20[])(void); diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8013FFD8.c b/src/ov_SC06_025/ov_SC06_025_jr_8013FFD8.c index 0555e95f2..22a3dbf07 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_8013FFD8.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018600C; +extern s16 D_8018600E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80185CAC; + extern u8 D_80185CC4; + extern u8 D_80185D38; + extern u8 D_80185D40; + extern void *D_801B00E8; + extern void *D_801B00EC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B00E8 = &D_80185CAC; + D_801B00EC = &D_80185D38; + } else { + D_801B00E8 = &D_80185CC4; + D_801B00EC = &D_80185D40; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018600C = 0xE; + D_8018600E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8016AB6C.c b/src/ov_SC06_025/ov_SC06_025_jr_8016AB6C.c index 9a7a7dcaf..ecbe42461 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_8016AB6C.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B0DE0; + extern s16 D_801B0DE4; + extern u8 D_80187F98[]; + extern u8 D_80187FA4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B0DE0 != *(s16 *)(iVar4 + 6)) || (D_801B0DE4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80187F98, 0x18), iVar2 != 0)) { + D_801B0DE0 = *(u16 *)(iVar4 + 6); + D_801B0DE4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80187FA4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80187FC4[])(void); diff --git a/src/ov_SC06_027/ov_SC06_027_jr_8013FFD8.c b/src/ov_SC06_027/ov_SC06_027_jr_8013FFD8.c index 54048dc45..107f7a0cd 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_8013FFD8.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F34C; +extern s16 D_8017F34E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017EFEC; + extern u8 D_8017F004; + extern u8 D_8017F078; + extern u8 D_8017F080; + extern void *D_8019C0C0; + extern void *D_8019C0C4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019C0C0 = &D_8017EFEC; + D_8019C0C4 = &D_8017F078; + } else { + D_8019C0C0 = &D_8017F004; + D_8019C0C4 = &D_8017F080; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F34C = 0xE; + D_8017F34E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_027/ov_SC06_027_jr_8016AB6C.c b/src/ov_SC06_027/ov_SC06_027_jr_8016AB6C.c index 0e905853e..eab374989 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_8016AB6C.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019CDB8; + extern s16 D_8019CDBC; + extern u8 D_801812D8[]; + extern u8 D_801812E4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019CDB8 != *(s16 *)(iVar4 + 6)) || (D_8019CDBC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801812D8, 0x18), iVar2 != 0)) { + D_8019CDB8 = *(u16 *)(iVar4 + 6); + D_8019CDBC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801812E4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80181304[])(void); diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8013FFD8.c b/src/ov_SC06_029/ov_SC06_029_jr_8013FFD8.c index 035ba21bd..216e7a73a 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8013FFD8.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8018D8E0; +extern s16 D_8018D8E2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8018D580; + extern u8 D_8018D598; + extern u8 D_8018D60C; + extern u8 D_8018D614; + extern void *D_801DB9E0; + extern void *D_801DB9E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801DB9E0 = &D_8018D580; + D_801DB9E4 = &D_8018D60C; + } else { + D_801DB9E0 = &D_8018D598; + D_801DB9E4 = &D_8018D614; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8018D8E0 = 0xE; + D_8018D8E2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8016AB6C.c b/src/ov_SC06_029/ov_SC06_029_jr_8016AB6C.c index dab255dfb..b503038d9 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8016AB6C.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801DC6D8; + extern s16 D_801DC6DC; + extern u8 D_8018F86C[]; + extern u8 D_8018F878[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801DC6D8 != *(s16 *)(iVar4 + 6)) || (D_801DC6DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018F86C, 0x18), iVar2 != 0)) { + D_801DC6D8 = *(u16 *)(iVar4 + 6); + D_801DC6DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018F878); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018F898[])(void); diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8013FFD8.c b/src/ov_SC06_030/ov_SC06_030_jr_8013FFD8.c index a18351ac0..7300cf949 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8013FFD8.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801831D0; +extern s16 D_801831D2; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80182E70; + extern u8 D_80182E88; + extern u8 D_80182EFC; + extern u8 D_80182F04; + extern void *D_801B8C40; + extern void *D_801B8C44; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801B8C40 = &D_80182E70; + D_801B8C44 = &D_80182EFC; + } else { + D_801B8C40 = &D_80182E88; + D_801B8C44 = &D_80182F04; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801831D0 = 0xE; + D_801831D2 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8016AB6C.c b/src/ov_SC06_030/ov_SC06_030_jr_8016AB6C.c index a80cf2d18..8ef97333f 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8016AB6C.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801B9938; + extern s16 D_801B993C; + extern u8 D_8018515C[]; + extern u8 D_80185168[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801B9938 != *(s16 *)(iVar4 + 6)) || (D_801B993C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_8018515C, 0x18), iVar2 != 0)) { + D_801B9938 = *(u16 *)(iVar4 + 6); + D_801B993C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80185168); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80185188[])(void); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8013FFD8.c b/src/ov_SC06_032/ov_SC06_032_jr_8013FFD8.c index 44f419058..0896d4315 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_8013FFD8.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8019469C; +extern s16 D_8019469E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8019433C; + extern u8 D_80194354; + extern u8 D_801943C8; + extern u8 D_801943D0; + extern void *D_801CF2F0; + extern void *D_801CF2F4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CF2F0 = &D_8019433C; + D_801CF2F4 = &D_801943C8; + } else { + D_801CF2F0 = &D_80194354; + D_801CF2F4 = &D_801943D0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8019469C = 0xE; + D_8019469E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8016AB6C.c b/src/ov_SC06_032/ov_SC06_032_jr_8016AB6C.c index d5f415972..c9c839414 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_8016AB6C.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CFFE8; + extern s16 D_801CFFEC; + extern u8 D_80196628[]; + extern u8 D_80196634[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CFFE8 != *(s16 *)(iVar4 + 6)) || (D_801CFFEC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80196628, 0x18), iVar2 != 0)) { + D_801CFFE8 = *(u16 *)(iVar4 + 6); + D_801CFFEC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80196634); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80196654[])(void); diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8013FFD8.c b/src/ov_SC06_033/ov_SC06_033_jr_8013FFD8.c index b8013e8b7..2e17b246f 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8013FFD8.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80192BAC; +extern s16 D_80192BAE; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8019284C; + extern u8 D_80192864; + extern u8 D_801928D8; + extern u8 D_801928E0; + extern void *D_801CF3B0; + extern void *D_801CF3B4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CF3B0 = &D_8019284C; + D_801CF3B4 = &D_801928D8; + } else { + D_801CF3B0 = &D_80192864; + D_801CF3B4 = &D_801928E0; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80192BAC = 0xE; + D_80192BAE = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8016AB6C.c b/src/ov_SC06_033/ov_SC06_033_jr_8016AB6C.c index 33ea44fe4..be9d1bf15 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8016AB6C.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801D00A8; + extern s16 D_801D00AC; + extern u8 D_80194B38[]; + extern u8 D_80194B44[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801D00A8 != *(s16 *)(iVar4 + 6)) || (D_801D00AC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80194B38, 0x18), iVar2 != 0)) { + D_801D00A8 = *(u16 *)(iVar4 + 6); + D_801D00AC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80194B44); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80194B64[])(void); diff --git a/src/ov_SC07_000/ov_SC07_000_jr_8013FFD8.c b/src/ov_SC07_000/ov_SC07_000_jr_8013FFD8.c index 8a9f991a2..816f3b3cf 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_8013FFD8.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_8013FFD8.c @@ -1344,7 +1344,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801839F4; +extern s16 D_801839F6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80183694; + extern u8 D_801836AC; + extern u8 D_80183720; + extern u8 D_80183728; + extern void *D_801CE8F8; + extern void *D_801CE8FC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801CE8F8 = &D_80183694; + D_801CE8FC = &D_80183720; + } else { + D_801CE8F8 = &D_801836AC; + D_801CE8FC = &D_80183728; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801839F4 = 0xE; + D_801839F6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC07_000/ov_SC07_000_jr_8016AB6C.c b/src/ov_SC07_000/ov_SC07_000_jr_8016AB6C.c index 85a491fba..794c134fc 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_8016AB6C.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801CF5F0; + extern s16 D_801CF5F4; + extern u8 D_80185980[]; + extern u8 D_8018598C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801CF5F0 != *(s16 *)(iVar4 + 6)) || (D_801CF5F4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80185980, 0x18), iVar2 != 0)) { + D_801CF5F0 = *(u16 *)(iVar4 + 6); + D_801CF5F4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018598C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801859AC[])(void); diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8013FFD8.c b/src/ov_SC07_001/ov_SC07_001_jr_8013FFD8.c index fd4ae5fdf..7502563b0 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8013FFD8.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_801828A4; +extern s16 D_801828A6; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80182544; + extern u8 D_8018255C; + extern u8 D_801825D0; + extern u8 D_801825D8; + extern void *D_801A99A8; + extern void *D_801A99AC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A99A8 = &D_80182544; + D_801A99AC = &D_801825D0; + } else { + D_801A99A8 = &D_8018255C; + D_801A99AC = &D_801825D8; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_801828A4 = 0xE; + D_801828A6 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8016AB6C.c b/src/ov_SC07_001/ov_SC07_001_jr_8016AB6C.c index 1cd5d0e3f..70aeadbac 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8016AB6C.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801AA6A0; + extern s16 D_801AA6A4; + extern u8 D_80184830[]; + extern u8 D_8018483C[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801AA6A0 != *(s16 *)(iVar4 + 6)) || (D_801AA6A4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80184830, 0x18), iVar2 != 0)) { + D_801AA6A0 = *(u16 *)(iVar4 + 6); + D_801AA6A4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018483C); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_8018485C[])(void); diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8013FFD8.c b/src/ov_SC07_002/ov_SC07_002_jr_8013FFD8.c index 3044b9a98..5f24cd3c9 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8013FFD8.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_80187B60; +extern s16 D_80187B62; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_80187800; + extern u8 D_80187818; + extern u8 D_8018788C; + extern u8 D_80187894; + extern void *D_8019A4F8; + extern void *D_8019A4FC; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_8019A4F8 = &D_80187800; + D_8019A4FC = &D_8018788C; + } else { + D_8019A4F8 = &D_80187818; + D_8019A4FC = &D_80187894; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_80187B60 = 0xE; + D_80187B62 = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8016AB6C.c b/src/ov_SC07_002/ov_SC07_002_jr_8016AB6C.c index 789fea4a3..b64a1aa1e 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8016AB6C.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_8019B1F0; + extern s16 D_8019B1F4; + extern u8 D_80189AEC[]; + extern u8 D_80189AF8[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_8019B1F0 != *(s16 *)(iVar4 + 6)) || (D_8019B1F4 != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80189AEC, 0x18), iVar2 != 0)) { + D_8019B1F0 = *(u16 *)(iVar4 + 6); + D_8019B1F4 = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80189AF8); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80189B18[])(void); diff --git a/src/ov_SC07_008/ov_SC07_008_jr_8013FFD8.c b/src/ov_SC07_008/ov_SC07_008_jr_8013FFD8.c index 0e16cdcea..fe35757e4 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_8013FFD8.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017E678; +extern s16 D_8017E67A; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017E318; + extern u8 D_8017E330; + extern u8 D_8017E3A4; + extern u8 D_8017E3AC; + extern void *D_801953E0; + extern void *D_801953E4; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801953E0 = &D_8017E318; + D_801953E4 = &D_8017E3A4; + } else { + D_801953E0 = &D_8017E330; + D_801953E4 = &D_8017E3AC; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017E678 = 0xE; + D_8017E67A = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC07_008/ov_SC07_008_jr_8016AB6C.c b/src/ov_SC07_008/ov_SC07_008_jr_8016AB6C.c index 1b6a0e934..bc1d4c457 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_8016AB6C.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_8016AB6C.c @@ -3207,7 +3207,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801960D8; + extern s16 D_801960DC; + extern u8 D_80180604[]; + extern u8 D_80180610[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801960D8 != *(s16 *)(iVar4 + 6)) || (D_801960DC != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_80180604, 0x18), iVar2 != 0)) { + D_801960D8 = *(u16 *)(iVar4 + 6); + D_801960DC = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_80180610); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_80180630[])(void); diff --git a/src/ov_SC07_009/ov_SC07_009_jr_8013FFD8.c b/src/ov_SC07_009/ov_SC07_009_jr_8013FFD8.c index 085482114..e2c93b8d8 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_8013FFD8.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_8013FFD8.c @@ -1342,7 +1342,79 @@ void func_80141874(void) { } -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8013FFD8", func_801418F8); + + + + + + + +extern u16 D_80115110; +extern u16 D_80115112; +extern unsigned short D_80115118; +extern volatile u16 D_8011511A; +extern s16 D_80115128; +extern s32 D_80115130; +extern s16 D_8017F11C; +extern s16 D_8017F11E; + +extern void func_800D24A0(s32 a0); +extern s32 func_80029178(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 a0); + +void func_801418F8(void) +{ + + extern s16 D_8011512E; + extern u8 D_80115158[]; + extern s16 D_8011515A; + extern u8 D_8011515C; + extern s16 D_8011515E; + extern s16 D_80115162; + extern s16 D_80115166; + extern u8 D_8017EDBC; + extern u8 D_8017EDD4; + extern u8 D_8017EE48; + extern u8 D_8017EE50; + extern void *D_801A2A70; + extern void *D_801A2A74; + u16 t; + + func_800D24A0(1); + D_8011511A = 2; + t = D_8011511A; + (*(s16 *)&D_80115118) = 0; + D_80115130 = 0; + if (t >= 4) { + D_8011511A = t - 3; + } + (*(s16 *)D_80115158) = 0x106; + if ((func_80029178(0x1C) & 0xFF) == 0) { + D_801A2A70 = &D_8017EDBC; + D_801A2A74 = &D_8017EE48; + } else { + D_801A2A70 = &D_8017EDD4; + D_801A2A74 = &D_8017EE50; + } + D_8011515A = 0x104; + (*(s16 *)&D_8011515C) = 0x104; + D_8011515E = 0x129; + D_80115162 = 0x103; + D_80115166 = 0x105; + D_80115128 = 0; + D_8011512E = 0; + if (D_80115110 == 3) { + func_8002D4C8(0x46E, 0); + } else { + func_80141C0C(0); + } + D_80115128 = 1; + D_8017F11C = 0xE; + D_8017F11E = 3; + D_80115112 = D_80115112 + 1; +} + INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8013FFD8", func_80141A60); diff --git a/src/ov_SC07_009/ov_SC07_009_jr_8016AB6C.c b/src/ov_SC07_009/ov_SC07_009_jr_8016AB6C.c index 9ea8a0940..615a2a2c3 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_8016AB6C.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_8016AB6C.c @@ -3208,7 +3208,93 @@ DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8016AB6C", func_8016DC20); + +extern s32 D_8011D030; + +extern void func_80149374(s32 a0, s32 a1); +extern s32 func_801619D0(void *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(void); + +void func_8016DC20(s16 *param_1) { + + extern s16 D_801A3768; + extern s16 D_801A376C; + extern u8 D_801810A8[]; + extern u8 D_801810B4[]; + u16 *psVar1; + s32 iVar2; + s32 iVar3; + s32 iVar4; + s16 i; + s16 sp[6]; + + i = 0; + psVar1 = (u16 *)&D_8011D030; + iVar4 = *(s32 *)((u8 *)param_1 + 0x34); + do { + if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80149374(iVar4, (s32)param_1 + 4); + iVar2 = func_801619D0((void *)iVar4); + i = 0; + if (iVar2 == 0) goto ddb0; + psVar1 = (u16 *)&D_8011D030; + do { + if (*psVar1 == 0x11) goto ddb0; + i = i + 1; + psVar1 = psVar1 + 0x2c; + } while (i < 0x1e); + func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), + (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), + *(s16 *)((u8 *)param_1 + 0xe), 0, 0); + sp[0] = *(u16 *)((u8 *)param_1 + 6); + sp[1] = *(u16 *)((u8 *)param_1 + 0xa); + sp[2] = *(u16 *)((u8 *)param_1 + 0xe); + func_800D20C0(&sp[0], &sp[4], 0); + sp[5] = 0; + func_800D23D0(&sp[4]); + i = 0; + do { + iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), + *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), + i, 0); + if (iVar3 != 0) { + *(u16 *)(iVar3 + 0x12) = sp[4]; + *(u16 *)(iVar3 + 0x16) = sp[5]; + *(u16 *)(iVar3 + 0x1a) = 0; + } + i = i + 2; + } while (i < 3); + goto end; +ddb0: + if (((D_801A3768 != *(s16 *)(iVar4 + 6)) || (D_801A376C != *(s16 *)(iVar4 + 0xe))) && + (iVar2 = func_800D21C4((s32)param_1, D_801810A8, 0x18), iVar2 != 0)) { + D_801A3768 = *(u16 *)(iVar4 + 6); + D_801A376C = *(u16 *)(iVar4 + 0xe); + func_800D1FC8((s32)param_1, 7); + *(s32 *)((u8 *)param_1 + 0x20) = iVar2; + *(u16 *)(iVar2 + 0x1a) = 0x3000; + *(u16 *)(iVar2 + 0x18) = 0x3000; + *(u8 *)(iVar2 + 0x26) = 0xff; + *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; + func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_801810B4); + func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); + *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; + return; + } +end: + ((void (*)(s16 *))func_80146C3C)(param_1); +} + extern void (*D_801810D4[])(void);