From 5343e168f19bfa3730636c02400c39a89d6f3063 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Thu, 11 Sep 2025 18:29:55 -0500 Subject: [PATCH] 4BDC0 --- src/4BDC0.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++- src/4BDC0.h | 2 +- 2 files changed, 88 insertions(+), 2 deletions(-) diff --git a/src/4BDC0.c b/src/4BDC0.c index 9e6b3a0..3bed8d9 100644 --- a/src/4BDC0.c +++ b/src/4BDC0.c @@ -11,6 +11,16 @@ static s32 D_800FF9B0; static s32 D_800FF9B4; +extern u8 D_80078E83; +extern u8 D_80078E8B; +extern u8 D_80078E93; +extern u8 D_80078E9B; +extern u8 D_80078EA3; +extern u8 D_80078EAB; +extern u8 D_80078EB3; +extern u8 D_80078EBC; +extern u8 D_80078EBF; + void func_8004B1C0(s32 arg0) { D_80078EC8 = arg0; } @@ -483,7 +493,83 @@ void func_8004B9C4(s32 arg0) { } } -#pragma GLOBAL_ASM("asm/us/nonmatchings/4BDC0/func_8004BA88.s") +s32 func_8004BA88(s32 arg0, s32 arg1) { + s32 ret; + D_80078E80 = 0; + if ((arg0 == 0) || (arg0 == 0xFF)) { + arg0 = 1; + if ((arg1 == 0xE)) { + return func_8004B1CC(2U); + } + } + switch (arg1) { + case 10: + case 11: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078E83 + arg0)); + break; + case 6: + case 7: + case 8: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078E8B + arg0)); + break; + case 9: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078E93 + arg0)); + break; + case 5: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078E9B + arg0)); + break; + case 4: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078EA3 + arg0)); + break; + case 0: + case 1: + case 2: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078EAB + arg0)); + break; + case 3: + if (arg0 >= 9U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078EB3 + arg0)); + break; + case 12: + if (arg0 >= 0x21U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078EBC + ((arg0 - 1) & 3))); + break; + case 13: + if (arg0 >= 6U) { + return 0; + } + ret = func_8004B1CC(*(&D_80078EBF + arg0)); + break; + case 15: + ret = func_8004B1CC(0x14U); + break; + default: + ret = func_8004B1CC(2U); + } + return ret; +} s32 func_8004BC84(s32 arg0, u32 arg1) { s32 var_a3; diff --git a/src/4BDC0.h b/src/4BDC0.h index 5dba1ef..d31ced6 100644 --- a/src/4BDC0.h +++ b/src/4BDC0.h @@ -5,7 +5,7 @@ void func_8004B9C4(s32); s32 func_8004B1CC(s32); -void func_8004BA88(s32, s32); +s32 func_8004BA88(s32, s32); s32 func_8004BC84(s32, u32); u32 func_8004BFB0(void);