diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8017C180.c b/src/ov_SC03_109/ov_SC03_109_jr_8017C180.c index 5039b148c..ae367de3f 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_8017C180.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_8017C180.c @@ -3314,7 +3314,35 @@ void func_8017D384(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8017C180", func_8017D3C0); +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D3C0; + +extern Blk8_80126940_8017D3C0 D_80126940; +extern void func_8017D48C(s32 param_1, s16 *param_2); + +void func_8017D3C0(s32 param_1) { + Blk8_80126940_8017D3C0 sp10; + + sp10 = D_80126940; + if (sp10.v[1] < -0x680) { + if (sp10.v[0] < -0x2E0) { + sp10.v[0] = -0x2E0; + } + if (sp10.v[0] > 0x2C0) { + sp10.v[0] = 0x2C0; + } + } else { + if (sp10.v[0] < -0x240) { + sp10.v[0] = -0x240; + } + if (sp10.v[0] > 0x240) { + sp10.v[0] = 0x240; + } + } + func_8017D48C(param_1, &sp10.v[0]); +} + // @class: schedule diff --git a/src/ov_SC05_001/ov_SC05_001_jr_80183508.c b/src/ov_SC05_001/ov_SC05_001_jr_80183508.c index ba7c52367..647280f24 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_80183508.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_80183508.c @@ -3555,7 +3555,15 @@ void func_80184920(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80183508", func_8018495C); +extern s32 rand(void); + +void func_8018495C(s32 param_1) +{ + *(s32 *)(param_1 + 0x1C) = rand(); + *(u16 *)(param_1 + 0x2) += 1; + *(u16 *)(param_1 + 0xFE) = *(u16 *)(param_1 + 0xFC) + (rand() % 16) + 0x10; +} + extern s32 func_8012BE54(void*); extern void func_80184AF8(s32 arg0); diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c b/src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c index 45ec92c18..8629efda8 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c @@ -5085,7 +5085,42 @@ s32 arg0; } -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8017BEBC", func_8017FEC0); +#include "common.h" + +extern s32 D_801A9620; +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern void func_8012B178(s32 a0, s32 a1); +extern void *D_801A4524; +extern u8 D_801A45DC[]; + +void func_8017FEC0(s32 a0) { + s32 ptr; + u16 v0; + u16 f70; + + func_8012A828(a0, (s32)&D_801A9620); + + ptr = *(s32 *)(a0 + 0x20); + v0 = *(u16 *)(a0 + 0xDC); + *(u16 *)(ptr + 0x10) = v0; + + ptr = *(s32 *)(a0 + 0x20); + v0 = *(u16 *)(a0 + 0xDE); + *(u16 *)(ptr + 0x12) = v0; + + *(s32 *)(a0 + 0x58) = (s32)&D_801A4524 | 0x40000000 | 0x20000000; + + f70 = *(u16 *)(a0 + 0x70); + *(s32 *)(a0 + 0xCC) = (s32)D_801A45DC + ((f70 & 0xF0) << 1); + func_8012B2CC(a0); + + func_8012B178(a0, 0xFFF80000); + + *(u16 *)(a0 + 0x2) = 0xB; + *(u16 *)(a0 + 0x34) = 0; +} + #include "common.h" #include "/home/musashi/bfm-decomp/src/shared/engine_core.h"