From 4cfdc163e9a63d91ce07cae28304aea32d8048ec Mon Sep 17 00:00:00 2001 From: Alejandro Asenjo Nitti <96613413+sonicdcer@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:47:38 -0300 Subject: [PATCH] fox_option.c (#27) * func_EBFBE0_801920C4 * func_EBFBE0_80192190 * func_EBFBE0_801924C4 * func_EBFBE0_80192598 * func_EBFBE0_80192738 * func_EBFBE0_801928BC * func_EBFBE0_80192938 * rename to fox_option found in sf643D rom symbols * dec * few functions * need input! more input! * NO DISASSEMBLE! * func_EBFBE0_80196E54 & func_EBFBE0_80196EFC * func_EBFBE0_80196F9C * func_EBFBE0_80196FC4 & func_EBFBE0_80197074 * format * func_EBFBE0_8019715C * fix stack * func_EBFBE0_801973C0 * sneaky ido * data indicates these are floats * did i say floats? i was looking at the wrong offsets * func_EBFBE0_8019752C * func_EBFBE0_80197914 * func_EBFBE0_80197A3C * func_EBFBE0_80197DE4 * func_EBFBE0_8019A214 * break * func_EBFBE0_80199284 * func_EBFBE0_80199424 * func_EBFBE0_8019978C * func_EBFBE0_8019A080 * func_EBFBE0_8019A298 * func_EBFBE0_8019B8A0 * func_EBFBE0_8019C824 * func_EBFBE0_8019CAE0 * func_EBFBE0_8019DF64 * func_EBFBE0_8019DE74 * func_EBFBE0_8019E030 * func_EBFBE0_8019DD44 * func_EBFBE0_8019DCE8 * func_EBFBE0_8019CBC0 * format * func_EBFBE0_80193B04 * func_EBFBE0_801944F0 * . * func_EBFBE0_80197F74 * more functions --- .vscode/settings.json | 5 +- include/fox_option.h | 314 ++++ include/functions.h | 50 +- include/hud.h | 1 - include/structs.h | 41 +- include/variables.h | 38 +- linker_scripts/us/symbol_addrs_EBFBE0.txt | 3 + src/main/sf_C3BB0.c | 4 +- src/overlays/ovl_EBFBE0/ECA1E0.c | 245 --- src/overlays/ovl_EBFBE0/fox_option.c | 1842 +++++++++++++++++++++ yamls/us/overlays.yaml | 6 +- 11 files changed, 2254 insertions(+), 295 deletions(-) create mode 100644 include/fox_option.h delete mode 100644 src/overlays/ovl_EBFBE0/ECA1E0.c create mode 100644 src/overlays/ovl_EBFBE0/fox_option.c diff --git a/.vscode/settings.json b/.vscode/settings.json index e217f91a..02b04b43 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,6 +39,9 @@ "algorithm": "c", "dfee30.h": "c", "df4260.h": "c", - "symbol_addrs_overlays": "cpp" + "symbol_addrs_overlays": "cpp", + "fox_option.h": "c", + "cstdlib": "c", + "typeinfo": "c" }, } \ No newline at end of file diff --git a/include/fox_option.h b/include/fox_option.h new file mode 100644 index 00000000..f7bfa9d8 --- /dev/null +++ b/include/fox_option.h @@ -0,0 +1,314 @@ +#ifndef FOX_OPTION_H +#define FOX_OPTION_H + +#include "global.h" + +typedef struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ void* unk_08; + /* 0x0C */ u16 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; +} MenuContext_00; // size = 0x38 + +typedef struct { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; +} MenuContext_38; // size = 0x14 + +typedef struct { + /* 0x0 */ s32 unk_0; + /* 0x4 */ s32 unk_4; /* inferred */ + /* 0x8 */ s32 unk_8; /* inferred */ +} MenuContext_4C; // size = 0xC + +typedef struct { + /* 0x00 */ MenuContext_00 unk_00; + /* 0x38 */ MenuContext_38 unk_38; + /* 0x4C */ MenuContext_4C unk_4C; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; +} MenuContext; // size = 0x60 + +typedef struct { + s32 unk_0; + s32 unk_4; +} UnkStruct_D_EBFBE0_801B9250; + +typedef struct { + /* 0x0 */ s32 unk_0; + /* 0x4 */ s32 unk_4; + /* 0x8 */ s32 unk_8; +} UnkStruct_D_EBFBE0_801AED4C; // size = 0xC + + +extern f32 D_EBFBE0_801AE588[]; +extern f32 D_EBFBE0_801AE5A0[]; +extern f32 D_EBFBE0_801AE5C4; + +extern MenuContext D_EBFBE0_801AE878[]; + +extern u8 D_EBFBE0_801AE998[]; +extern u8 D_EBFBE0_801AE99C[]; +extern MenuContext_00 D_EBFBE0_801AEB48[]; + +extern u8* D_EBFBE0_801AECF8[]; + +extern UnkStruct_D_EBFBE0_801AED4C D_EBFBE0_801AED4C[24]; + +extern s8* D_EBFBE0_801AEEAC[]; + +extern Gfx D_EBFBE0_801AEF30[]; + +extern u8 D_EBFBE0_801AEF5C[]; +extern f32 D_EBFBE0_801AEF84[]; +extern f32 D_EBFBE0_801AEF90[]; +extern f32 D_EBFBE0_801AEF9C[]; + +extern s8* D_EBFBE0_801AF0C4[]; +extern s32 D_EBFBE0_801AF0D0[]; +extern s32 D_EBFBE0_801AF0DC[]; +extern s32 D_EBFBE0_801AF0E8[]; + +extern Vec3f D_EBFBE0_801AF100[]; +extern Vec3f D_EBFBE0_801AF118[]; +extern f32 D_EBFBE0_801AF13C; +extern f32 D_EBFBE0_801AF140; +extern f32 D_EBFBE0_801AF144; + +extern void* D_EBFBE0_801B68B0[]; +extern void* D_EBFBE0_801B68D4[]; + +extern s32 D_EBFBE0_801B68F8; + +extern s32 D_EBFBE0_801B81A8[][3]; + +extern s32 D_EBFBE0_801B914C; +extern s32 D_EBFBE0_801B9158; +extern s32 D_EBFBE0_801B91A0; +extern s32 D_EBFBE0_801B91B4; +extern s32 D_EBFBE0_801B91B8; +extern s32 D_EBFBE0_801B91D0; +extern f32 D_EBFBE0_801B91D4; +extern f32 D_EBFBE0_801B91D8; +extern f32 D_EBFBE0_801B91DC; +extern f32 D_EBFBE0_801B91E0; +extern f32 D_EBFBE0_801B91E4; +extern s32 D_EBFBE0_801B9124; +extern s32 D_EBFBE0_801B912C; +extern s32 D_EBFBE0_801B9178; +extern s32 D_EBFBE0_801B917C; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9180; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9188; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9190; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9198; +extern s32 D_EBFBE0_801B91BC; +extern f32 D_EBFBE0_801B91FC; +extern f32 D_EBFBE0_801B9200; +extern f32 D_EBFBE0_801B9204; +extern s32 D_EBFBE0_801B9214; +extern f32 D_EBFBE0_801B9218; +extern f32 D_EBFBE0_801B921C; +extern f32 D_EBFBE0_801B9220; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9250; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9258; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9260; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9268; +extern f32 D_EBFBE0_801B9270[]; +extern s32 D_EBFBE0_801B9284; +extern s32 D_EBFBE0_801B9288; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9290; +extern f32 D_EBFBE0_801B9298[]; +extern s32 spectrumAnalizerMode; +extern s32 D_EBFBE0_801B931C; +extern u8 D_EBFBE0_801B931F; +extern bool D_EBFBE0_801B9320; // MusicPlaying status in the expert sound options +extern u8 D_EBFBE0_801B93C4; +extern s32 D_EBFBE0_801B93E8; +extern s32 D_EBFBE0_801B93E0; +extern s32 D_EBFBE0_801B93E4; +extern s32 D_EBFBE0_801B93EC; +extern f32 D_EBFBE0_801B93F0; +extern f32 D_EBFBE0_801B93F4; +extern f32 D_EBFBE0_801B93F8; + +// Planet textures +extern s8 D_EBFBE0_801BB810[96 * 96]; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9400; +extern UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9408; +extern s8 D_EBFBE0_801B9410[96 * 96]; +extern s8 D_EBFBE0_801BDC10[96 * 96]; +extern s8 D_EBFBE0_801C0010[96 * 96]; +extern s8 D_EBFBE0_801C2410[96 * 96]; +extern s8 D_EBFBE0_801C4810[96 * 96]; +extern s8 D_EBFBE0_801C6C10[96 * 96]; +extern s8 D_EBFBE0_801C9010[96 * 96]; +extern s8 D_EBFBE0_801CB410[96 * 96]; + +extern f32 D_EBFBE0_801CD818[]; + +extern s32 D_EBFBE0_801B9090; +extern s32 D_EBFBE0_801B9094; +extern s32 D_EBFBE0_801B9098; +extern s32 D_EBFBE0_801B90A0[]; +extern s32 D_EBFBE0_801B90B0[]; +extern f32 D_EBFBE0_801B911C; +extern f32 D_EBFBE0_801B9120; +extern s32 D_EBFBE0_801B9128; +extern s32 D_EBFBE0_801B9130; +extern s32 D_EBFBE0_801B9134; +extern s32 D_EBFBE0_801B9138; +extern s32 D_EBFBE0_801B913C; +extern u8 D_EBFBE0_801B9150[][2]; +extern s32 D_EBFBE0_801B91A4; +extern s32 D_EBFBE0_801B91A8; +extern s32 D_EBFBE0_801B91AC; +extern s32 D_EBFBE0_801B91B0; +extern s32 D_EBFBE0_801B91C0; +extern s32 D_EBFBE0_801B91C8; +extern s32 D_EBFBE0_801B91CC; +extern f32 D_EBFBE0_801B91EC; +extern f32 D_EBFBE0_801B91F4; +extern f32 D_EBFBE0_801B91F8; +extern f32 D_EBFBE0_801B9224; +extern f32 D_EBFBE0_801B9228; +extern s32 D_EBFBE0_801B922C; +extern s32 D_EBFBE0_801B9230; +extern s32 D_EBFBE0_801B9234; +extern s32 D_EBFBE0_801B9238; +extern s32 D_EBFBE0_801B923C; +extern s32 D_EBFBE0_801B9240; +extern s32 D_EBFBE0_801B9244; +extern s32 D_EBFBE0_801B9248; +extern u8 D_EBFBE0_801B924C; +extern s32 D_EBFBE0_801B9330[]; + +void func_EBFBE0_801877F0(void); + s32 func_EBFBE0_80187ABC(void); +void func_EBFBE0_80187B00(void); +void func_EBFBE0_80187E28(void); +void func_EBFBE0_801888E8(void); +void func_EBFBE0_8018994C(void); +void func_EBFBE0_8018A644(void); +void func_EBFBE0_8018ACEC(void); +void func_EBFBE0_8018B5C4(void); +void func_EBFBE0_8018C644(void); +void func_EBFBE0_80187CA8(void); +void func_EBFBE0_80188010(void); +void func_EBFBE0_80189208(void); +void func_EBFBE0_8018A2F8(void); +void func_EBFBE0_8018A990(void); +void func_EBFBE0_8018B038(void); +void func_EBFBE0_8018C114(void); +void func_EBFBE0_8018CB90(void); +void func_EBFBE0_8018F680(void); +void func_EBFBE0_8018F77C(void); +void func_EBFBE0_8018F85C(void); +void func_EBFBE0_8018F8E4(void); +void func_EBFBE0_8018FC14(void); +void func_EBFBE0_8018FD08(void); +void func_EBFBE0_8018FF74(void); +void func_EBFBE0_8018D2B8(s32); +void func_EBFBE0_8018EA78(s32); + +void func_EBFBE0_80191B20(void); +void func_EBFBE0_80192190(void); +void func_EBFBE0_801928BC(void); +void func_EBFBE0_80192D58(void); +void func_EBFBE0_80192938(void); +void func_EBFBE0_80193864(void); +void func_EBFBE0_80193C4C(void); +void func_EBFBE0_801944F0(void); +void func_EBFBE0_80194678(void); +void func_EBFBE0_801948A8(void); +void func_EBFBE0_80194AEC(void); +void func_EBFBE0_80194BD0(void); +void func_EBFBE0_80194CE4(void); +void func_EBFBE0_80195B74(void); +void func_EBFBE0_801958DC(void); +void func_EBFBE0_80195944(void); +void func_EBFBE0_80196260(void); +void func_EBFBE0_801962A4(void); +void func_EBFBE0_8019669C(void); +void func_EBFBE0_80196894(void); +void func_EBFBE0_80196E54(void); +void func_EBFBE0_80196EFC(void); +void func_EBFBE0_80196F9C(void); +void func_EBFBE0_80196FC4(void); +void func_EBFBE0_80197074(void); +void func_EBFBE0_8019715C(void); +void func_EBFBE0_801973C0(void); +void func_EBFBE0_8019752C(void); +void func_EBFBE0_80197914(void); +void func_EBFBE0_80197A3C(s32, s32, s32); +void func_EBFBE0_80197D30(s32, s32, s32); +void func_EBFBE0_80197DE4(s32, s32, s32); +void func_EBFBE0_80197F74(s32, s32, s32); +void func_EBFBE0_80198164(s32, f32, f32); +void func_EBFBE0_801982B0(s32, s32, f32, f32, s32); +void func_EBFBE0_801984D0(s32, s32, f32, f32); +void func_EBFBE0_80198608(s32, s32, f32, f32); +void func_EBFBE0_8019882C(s32, s32, f32, f32); +void func_EBFBE0_8019896C(s32, f32, s32); +s32 func_EBFBE0_80199284(s32 arg0, s32 arg1); +void func_EBFBE0_801992C4(void); +void func_EBFBE0_80199424(void); +void func_EBFBE0_8019949C(void); +void func_EBFBE0_8019978C(void); +void func_EBFBE0_80199820(s32); +void func_EBFBE0_80199EA8(void); +void func_EBFBE0_80199FA8(void); +void func_EBFBE0_8019A0B8(void); +void func_EBFBE0_8019A298(void); +void func_EBFBE0_8019A4DC(void); +void func_EBFBE0_8019A6DC(void); +void func_EBFBE0_8019A954(void); +void func_EBFBE0_8019AAB4(void); +void func_EBFBE0_8019B5AC(void); +void func_EBFBE0_8019B8C8(void); +void func_EBFBE0_8019B9C0(void); +void func_EBFBE0_8019BDF0(void); +void func_EBFBE0_8019BAB8(MenuContext_38 arg0); +void func_EBFBE0_8019BBA4(MenuContext_4C arg0); +void func_EBFBE0_8019BF34(void); +void func_EBFBE0_8019B6D8(f32 arg0, f32 arg1, f32 arg2, s32 arg3, s32 arg4, s32 arg5); +void func_EBFBE0_8019C120(MenuContext_00 arg0); +s32 func_EBFBE0_8019C418(s32* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, UnkStruct_D_EBFBE0_801B9250* arg8); +void func_EBFBE0_8019C824(f32* ); +s32 func_EBFBE0_8019C8C4(void); +void func_EBFBE0_8019CAE0(void); +void func_EBFBE0_8019CBC0(void); +void func_EBFBE0_8019CD54(void); +void func_EBFBE0_8019D118(void); +void func_EBFBE0_8019D624(void); +s32 func_EBFBE0_8019DCE8(s32 arg0); +void func_EBFBE0_8019DD44(void); +void func_EBFBE0_8019DE74(void); +void func_EBFBE0_8019DF64(void); +void func_EBFBE0_8019E030(void); +void func_EBFBE0_8019E284(void); +void func_EBFBE0_801906A0(void); +void func_EBFBE0_80190C9C(void); +void func_EBFBE0_80190E64(void); +void func_EBFBE0_801918FC(void); +void func_EBFBE0_8019111C(void); +void func_EBFBE0_80191674(f32, f32, f32, f32*, f32*, f32*); +s32 func_EBFBE0_8019C5A0(s32*); +s32 func_EBFBE0_8019C66C(f32* arg0, f32 arg1, f32 arg2, UnkStruct_D_EBFBE0_801B9250* arg3); +void func_EBFBE0_8019E8D0(void); +void func_EBFBE0_801A07E8(u8*, u8*, f32*); +void func_EBFBE0_801AD7EC(s32, s32, u8); + +#endif diff --git a/include/functions.h b/include/functions.h index 81334769..7f7b7258 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2,6 +2,7 @@ #define FUNCTIONS_H #include "structs.h" +#include "fox_option.h" void func_8000291C(void); void func_800029A8(void); @@ -72,11 +73,14 @@ void func_8001ACDC(s32); void func_8001AE58(void); void func_8001AF40(s32 arg0); void func_8001D400(s32); +void func_8001D444(u8, u16, u8, u8); +void func_8001DA90(u8); void func_8001DBD0(s32); -void func_8001DC6C(s32, s32); +void func_8001DC6C(u8, u16); void func_8000FFCC(void); void func_8001D8A8(u8, u8); +void func_8001D8F4(u8); void func_8001DCE0(void); void func_8001DECC(void); SPTask* func_8001DF50(void); @@ -132,6 +136,7 @@ void func_8002E3E0(Object_2F4 *arg0); void func_8002E548(void); void func_8003DAF0(void); +void func_8003DE68(s32, s32); void func_80040CDC(void); void func_80042FAC(Object_408 *); void func_80042FD0(Object_408 *); @@ -245,14 +250,18 @@ s32 func_800998FC(Vec3f*, Vec3f*, s32, s32, Vec3f*, Vec3f*); s16 func_8009ACDC(s16 *); f32 func_8009BC2C(f32*, f32, f32, f32, f32); f32 func_8009BD38(f32*, f32, f32, f32, f32); -void func_8009D418(Gfx**, u16*, u32, u32, f32, f32, f32, f32); -void func_8009D994(Gfx**, u16*, u32, u32, f32, f32, f32, f32); +void func_8009C320(Gfx **, void *, void *, u32, u32, f32, f32, f32, f32); +void func_8009D418(Gfx**, void*, u32, u32, f32, f32, f32, f32); +void func_8009D994(Gfx**, void*, u32, u32, f32, f32, f32, f32); +void func_8009E4B0(Gfx**, void*, u32, u32, f32, f32, f32, f32); void func_8009F574(Gfx **, s32, s32, s32, s32, u8, u8, u8, u8); void func_8009F6CC(Vec3f*, f32, f32, f32); f32 func_8009F768(f32); void func_8009FC0C(s32, s32, s32); void func_8009FEA0(s32, s32, s32); +void func_800A0094(s32, s32, f32, f32, u8 *); void func_800A1200(s32, s32, f32, f32, char*); +s32 func_800A13EC(s8*); void func_800A18B0(void); void func_800A1980(void); s32 func_800A1B6C(void); @@ -346,40 +355,7 @@ void func_E6A810_801B6E20(f32, f32, f32 *, f32 *, f32 *); void func_E9F1D0_80197CC4(Object_408 *); void func_E9F1D0_8018D16C(Object_408 *); -void func_EBFBE0_801877F0(void); - s32 func_EBFBE0_80187ABC(void); -void func_EBFBE0_80187B00(void); -void func_EBFBE0_80187E28(void); -void func_EBFBE0_801888E8(void); -void func_EBFBE0_8018994C(void); -void func_EBFBE0_8018A644(void); -void func_EBFBE0_8018ACEC(void); -void func_EBFBE0_8018B5C4(void); -void func_EBFBE0_8018C644(void); -void func_EBFBE0_80190E64(void); -void func_EBFBE0_8019111C(void); -void func_EBFBE0_80187CA8(void); -void func_EBFBE0_80188010(void); -void func_EBFBE0_80189208(void); -void func_EBFBE0_8018A2F8(void); -void func_EBFBE0_8018A990(void); -void func_EBFBE0_8018B038(void); -void func_EBFBE0_8018C114(void); -void func_EBFBE0_8018CB90(void); -void func_EBFBE0_8018F680(void); -void func_EBFBE0_8018F77C(void); -void func_EBFBE0_8018F85C(void); -void func_EBFBE0_8018F8E4(void); -void func_EBFBE0_8018FC14(void); -void func_EBFBE0_8018FD08(void); -void func_EBFBE0_8018FF74(void); -void func_EBFBE0_801906A0(void); -void func_EBFBE0_80190C9C(void); -void func_EBFBE0_801918FC(void); -void func_EBFBE0_8018D2B8(s32); -void func_EBFBE0_8018EA78(s32); -void func_EBFBE0_80191674(f32, f32, f32, f32*, f32*, f32*); -void func_EBFBE0_8019E8D0(void); + void func_EF0260_8018A96C(void); void func_EF0260_8018AAC4(void); diff --git a/include/hud.h b/include/hud.h index 7d924f83..6f57ccb0 100644 --- a/include/hud.h +++ b/include/hud.h @@ -35,7 +35,6 @@ void func_8008DC34(void); void func_8008E5E8(void); s32 func_80090E8C(Object_2F4* arg0); s32 func_800910C0(Object_2F4* arg0); -void func_8009C320(Gfx**, void*, void*, s32, s32, f32, f32, f32, f32); void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32); void func_8009E1E8(Gfx**, u16*, s32, s32, f32, f32, f32, f32); diff --git a/include/structs.h b/include/structs.h index b2793363..1ed81484 100644 --- a/include/structs.h +++ b/include/structs.h @@ -43,8 +43,47 @@ typedef struct { } FrameBuffer; // size = 0x25800 typedef struct { - /* 0x00 */ char unk_0[0xFE]; + /* bit 0 */ u8 unk_0 : 3; + /* bit 3 */ u8 unk_3 : 1; + /* bit 4 */ u8 unk_4 : 1; + /* bit 5 */ u8 unk_5 : 1; + /* bit 6 */ u8 unk_6 : 1; + /* bit 7 */ u8 unk_7 : 1; +} Save_00_SubStruct_00; // size = 0x1 + +typedef struct { + /* bit 0 */ u16 unk_0 : 8; + /* bit 8 */ u16 unk_8 : 4; + /* bit C */ u16 unk_C : 1; + /* bit D */ u16 unk_D : 1; + /* bit E */ u16 unk_E : 1; + /* bit F */ u16 unk_F : 1; +} Save_00_SubStruct_5E; // size = 0x10 + +typedef struct Save_00 { + /* 0x00 */ Save_00_SubStruct_00 unk_00[16]; + /* 0x10 */ char pad10[0x4]; + /* 0x14 */ u8 unk_14; + /* 0x15 */ u8 unk_15; + /* 0x16 */ u8 unk_16; + /* 0x17 */ u8 unk_17; + /* 0x18 */ u8 unk_18[10][3]; + /* 0x36 */ u8 unk_36[10]; + /* 0x40 */ s8 unk_40[10]; + /* 0x4A */ char pad4A[0x14]; + /* 0x5E */ Save_00_SubStruct_5E unk_5E[10][7]; + /* 0xEA */ u8 unk_EA; + /* 0xEB */ char padEB[0x3]; +} Save_00; + +typedef struct { + /* 0x00 */ u8 unk_00[0xFE]; /* 0xFE */ u16 unk_FE; +} Checksum; + +typedef union { + /* 0x00 */ Save_00 save_00; + /* 0x00 */ Checksum checksum; } Save; // size = 0x100 typedef union { diff --git a/include/variables.h b/include/variables.h index e6eed414..461b031e 100644 --- a/include/variables.h +++ b/include/variables.h @@ -8,6 +8,8 @@ extern u64 __rspboot_end[]; extern u64 __f3dex_start[]; extern u8 gF3dexData; +extern u8 D_8003B50[]; +extern u8 D_80046B0[]; extern s32 D_800C45D0; extern f32 D_800C45E0[]; @@ -210,6 +212,7 @@ extern f32 D_801616C4; extern f32 D_801616C8; extern s32 D_80161708; extern s32 D_8016170C; +extern s32 D_80161714; extern s32 D_80161730; extern s32 D_80161734; extern s32 D_80161788; @@ -290,6 +293,8 @@ extern s32 D_8017789C; extern s32 D_801778A0; extern s32 D_801778A4; extern s32 D_801778A8; +extern u8 D_801778AB; +extern s32 D_801778AC; extern s32 D_801778B0[]; extern s32 D_801778D0[]; extern s32 D_801778E8; @@ -304,7 +309,9 @@ extern f32 D_80177978; extern UnkStruct_D_8017797C* D_8017797C; extern f32 D_80177980; extern f32 D_80177988; +extern s32 D_80177990[]; extern f32 D_801779A0; +extern f32 D_801779A8[]; extern f32 D_801779B8; extern f32 D_801779C0; extern s32 D_801779C8[]; @@ -315,6 +322,9 @@ extern s8 D_80177AB0; extern s32 D_80177AE0; extern s32 D_80177AF8; extern s32 D_80177B40; +extern s32 D_80177B48; +extern s32 D_80177B8C[]; +extern s32 D_80177BB0[]; extern u16 D_80177C30[]; extern s32 D_80177C50; extern u8 D_80177C74; @@ -432,7 +442,7 @@ extern f32 D_E9F1D0_801A7F60; extern f32 D_E9F1D0_801A7F78; extern f32 D_EBFBE0_801B7BC8; extern f32 D_EBFBE0_801B7BCC; -extern s32 D_EBFBE0_801B8220[]; +extern s32 D_EBFBE0_801B8220[]; // total hits ranking? see func_EBFBE0_80197DE4 extern u8 D_EBFBE0_801B8248[][4]; extern s32 D_EBFBE0_801B827C; extern s32 D_EBFBE0_801B8280; @@ -586,16 +596,32 @@ extern f32 D_60069CC[]; extern f32 D_60069E8[]; extern f32 D_6006A04[]; extern f32 D_6006A20[]; -extern s16 D_6029528[]; - extern ObjectInit* D_6010088[]; +extern u16 D_601B4B0[]; +extern Gfx D_601D1F0[]; +extern s16 D_6029528[]; extern ObjectInit* D_602B148[]; extern ObjectInit* D_602F18C[]; -extern ObjectInit* D_C0356A4[]; - +extern u16 D_60447A0[]; +extern u16 D_6047550[]; extern Gfx D_6004570[]; extern u8 D_6001B80[]; extern u8 D_60020D0[]; + +extern u8 D_7004010[]; + +extern u8 D_80038E0[]; +extern u8 D_8003930[]; +extern u8 D_8003950[]; +extern u8 D_80039A8[]; +extern u8 D_8003A70[]; +extern u8 D_8003AB8[]; +extern u8 D_8003AE0[]; +extern u8 D_8003B28[]; + +extern u8 D_800D070[]; +extern u8 D_800D170[]; + extern Gfx D_D0098B0[]; extern Gfx D_F014180[]; @@ -605,5 +631,7 @@ extern u16 D_F001000[]; extern u16 D_F001800[]; extern u16 D_F002000[]; +extern ObjectInit* D_C0356A4[]; + #endif // VARIABLES_H diff --git a/linker_scripts/us/symbol_addrs_EBFBE0.txt b/linker_scripts/us/symbol_addrs_EBFBE0.txt index a4d461ab..8bab1972 100644 --- a/linker_scripts/us/symbol_addrs_EBFBE0.txt +++ b/linker_scripts/us/symbol_addrs_EBFBE0.txt @@ -1,3 +1,6 @@ +D_EBFBE0_801AE638 = 0x801AE638; // type:MenuContext segment:ovl_EBFBE0 size:0x240 +D_EBFBE0_801AE99C = 0x801AE99C; // force_migration:True segment:ovl_EBFBE0 +spectrumAnalizerMode = 0x801B9318; D_EBFBE0_801B6E50 = 0x801B6E50; // force_migration:True segment:ovl_EBFBE0 D_EBFBE0_801B7BA0 = 0x801B7BA0; diff --git a/src/main/sf_C3BB0.c b/src/main/sf_C3BB0.c index ce607c7f..65fc0c41 100644 --- a/src/main/sf_C3BB0.c +++ b/src/main/sf_C3BB0.c @@ -11,7 +11,7 @@ u16 func_800C2FB0(Save* arg0) { s32 i; for (i = 0, var_v1 = 0; i < 0xFE; i++) { - var_v1 ^= arg0->unk_0[i]; + var_v1 ^= arg0->checksum.unk_00[i]; var_v1 <<= 1; var_v1 = (var_v1 & 0xFE) | ((var_v1 >> 8) & 1); } @@ -24,7 +24,7 @@ u16 func_800C2FB0(Save* arg0) { s32 func_800C3084(void) { void* sp1C; - D_80178870.save[0].unk_FE = func_800C2FB0(&D_80178870.save[0]); + D_80178870.save[0].checksum.unk_FE = func_800C2FB0(&D_80178870.save[0]); D_80178870.save[1] = D_80178870.save[0]; D_80144F60 = D_80178870; osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_12, OS_MESG_PRI_NORMAL); diff --git a/src/overlays/ovl_EBFBE0/ECA1E0.c b/src/overlays/ovl_EBFBE0/ECA1E0.c deleted file mode 100644 index f668870a..00000000 --- a/src/overlays/ovl_EBFBE0/ECA1E0.c +++ /dev/null @@ -1,245 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80191B20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801920C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192190.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192340.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801924C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192598.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192738.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801928BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192938.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801929F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80192D58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80193864.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80193B04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80193C4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801944F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80194678.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801948A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80194AEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80194BD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80194CE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801952B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801958DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80195944.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80195B74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196260.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801962A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019669C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196894.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196E54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196EFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196F9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80196FC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197074.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019715C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7110.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7114.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7118.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B711C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7120.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7124.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7128.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B712C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7130.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7134.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7138.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B713C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7140.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7144.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7148.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B714C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7150.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7154.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/D_EBFBE0_801B7158.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801973C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019752C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197914.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197A3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197D30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197DE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80197F74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80198164.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801982B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801984D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80198608.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019882C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019896C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199198.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199284.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_801992C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199424.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019949C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019978C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199820.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199EA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_80199FA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A080.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A0B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A124.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A1A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A214.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A298.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A2E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A4DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A6DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019A954.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019AAB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019AB30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019AD84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019AFFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B1F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B3DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B5AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B6D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B7D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B8A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B8C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019B9C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BAB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BBA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BC44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BDF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BE7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019BF34.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C04C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C120.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C418.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C5A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C66C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C824.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019C8C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019CAE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019CBC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019CD54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019D118.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019D624.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019DB20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019DCE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019DD44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019DE74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019DF64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019E030.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/ECA1E0/func_EBFBE0_8019E284.s") diff --git a/src/overlays/ovl_EBFBE0/fox_option.c b/src/overlays/ovl_EBFBE0/fox_option.c new file mode 100644 index 00000000..e41fb97c --- /dev/null +++ b/src/overlays/ovl_EBFBE0/fox_option.c @@ -0,0 +1,1842 @@ +#include "global.h" +#include "fox_option.h" + +#ifdef IMPORT_DATA_PENDING +static UnkStruct_D_EBFBE0_801B9250 D_EBFBE0_801B9380[4]; +static f32 D_EBFBE0_801AE5B8[] = { 60.0f, 36.0f, 12.0f, -12.0f, -36.0f, -60.0f }; +static f32 D_EBFBE0_801AE5D0[] = { 126.0f, 117.0f, 139.0f, 124.0f, 130.0f, 117.0f }; +static f32 D_EBFBE0_801AE570[] = { 54.0f, 78.0f, 103.0f, 126.0f, 152.0f, 176.0f }; + +static MenuContext D_EBFBE0_801AE638[6] = { + { + { 0, 0, (void*) 0x08003B50, 0, 72, 12, 126.0f, 46.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, 30.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, 27.0f, 80.0f }, + 1, + 1, + }, + { + { 0, 0, (void*) 0x08003EB0, 0, 80, 12, 126.0f, 184.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, 18.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, 16.0f, 80.0f }, + 1, + 1, + }, + { + { 0, 0, (void*) 0x08004270, 0, 32, 10, 126.0f, 184.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, 6.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, 6.0f, 80.0f }, + 1, + 1, + }, + { + { 0, 0, (void*) 0x080043B0, 0, 64, 12, 110.0f, 91.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, -6.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, -5.0f, 80.0f }, + 1, + 1, + }, + { + { 0, 0, (void*) 0x080046B0, 0, 64, 10, 110.0f, 116.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, -18.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, -16.0f, 80.0f }, + 1, + 1, + }, + { + { 0, 0, (void*) 0x08004930, 0, 80, 10, 126.0f, 184.0f, 1.0f, 1.0f, 20, 0, 75, 255 }, + { 0.0f, -30.0f, -130.0f, 0.2f, 0.11f }, + { -40.0f, -27.0f, 80.0f }, + 1, + 1, + }, +}; +#else +extern f32 D_EBFBE0_801AE570[]; +extern f32 D_EBFBE0_801AE5B8[]; +extern f32 D_EBFBE0_801AE5D0[]; +extern MenuContext D_EBFBE0_801AE638[]; +#endif + +void func_EBFBE0_80191B20(void) { + s32 var_a1_2; + s32 var_v0_2; + s32 i; + + D_80137E78 = 2; + + D_EBFBE0_801AE638[0].unk_00.unk_08 = D_8003B50; + D_EBFBE0_801AE638[0].unk_00.unk_10 = 72; + D_EBFBE0_801AE638[0].unk_00.unk_14 = 12; + D_EBFBE0_801AE638[4].unk_00.unk_08 = D_80046B0; + D_EBFBE0_801AE638[4].unk_00.unk_10 = 64; + D_EBFBE0_801AE638[4].unk_00.unk_14 = 10; + + for (i = 0; i < 6; i++) { + D_EBFBE0_801AE5B8[i] = D_EBFBE0_801AE588[i]; + D_EBFBE0_801AE5D0[i] = D_EBFBE0_801AE5A0[i]; + } + + var_a1_2 = 1; + for (i = 0; i < 16; i++) { + if (i == 14) { + continue; + } + if (!(D_80178870.save[0].save_00.unk_00[i].unk_6 & 1)) { + var_a1_2 = 0; + break; + } + } + + D_EBFBE0_801B91C8 = var_a1_2; + D_80178348 = 0; + D_80178350 = 0; + D_80178354 = 0; + D_80178340 = 0; + + D_80161A38 = 0xFF; + + D_80161A36 = 0; + + D_EBFBE0_801B91A4 = 0; + if ((D_80161A34 == 7) && (D_80178234 == 10)) { + D_80161A34 = 0; + D_EBFBE0_801B91A4 = 1; + } + + D_EBFBE0_801B91A8 = 0; + D_EBFBE0_801B91AC = 0; + D_EBFBE0_801B91B0 = 0; + var_v0_2 = D_801779F8; + D_801779F8 = 0; + + D_80177DB0 = 0; + D_EBFBE0_801B8284 = 0; + D_EBFBE0_801B9178 = 0; + D_EBFBE0_801B917C = 0; + + D_EBFBE0_801B9124 = 1000; + + if ((D_80161A34 == 5) || (D_80161A34 == 8)) { + if (D_80161A34 == 8) { + D_80177B8C[D_80177B48 + 1] = 13; + if (D_800D3180[9] == 1) { + D_80178870.save[0].save_00.unk_00[14].unk_5 = 1; + if (var_v0_2 != 0) { + D_80178870.save[0].save_00.unk_00[14].unk_4 = 1; + } else { + D_80178870.save[0].save_00.unk_00[14].unk_7 = 1; + } + func_800C3084(); + } else if (D_800D3180[9] == 2) { + D_80177BB0[D_80177B48] = 1; + D_80178870.save[0].save_00.unk_00[15].unk_5 = 1; + if (var_v0_2 != 0) { + D_80178870.save[0].save_00.unk_00[15].unk_4 = 1; + D_80178870.save[0].save_00.unk_00[15].unk_3 = 1; + } else { + D_80178870.save[0].save_00.unk_00[15].unk_7 = 1; + D_80178870.save[0].save_00.unk_00[15].unk_6 = 1; + } + func_800C3084(); + } + } + + func_EBFBE0_80188010(); + D_EBFBE0_801B9094 = func_EBFBE0_8019C8C4(); + + if (D_EBFBE0_801B9094 != -1) { + D_EBFBE0_801B9124 = 200; + } else { + D_EBFBE0_801B9124 = 300; + } + } else { + if (D_800D2870 != 0) { + D_EBFBE0_801B91A4 = 2; + D_EBFBE0_801B91A8 = D_801778AC; + for (i = 0; i < 6; i++) { + if (i == 2) { + continue; + } + D_EBFBE0_801AE638[i].unk_38.unk_0C = 0.01f; + D_EBFBE0_801AE638[i].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE638[i].unk_38.unk_04 = D_EBFBE0_801AE570[i]; + D_EBFBE0_801AE638[i].unk_38.unk_00 = 0.0f; + D_EBFBE0_801AE638[i].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE638[i].unk_5C = 0; + + D_EBFBE0_801AE638[i].unk_00.unk_20 = 0.01f; + D_EBFBE0_801AE638[i].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE638[i].unk_00.unk_18 = 158.0f; + D_EBFBE0_801AE638[i].unk_00.unk_1C = D_EBFBE0_801AE5D0[i]; + D_EBFBE0_801AE638[i].unk_58 = 0; + } + D_EBFBE0_801AE638[2].unk_38.unk_00 = 0.0f; + D_EBFBE0_801AE638[2].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE638[2].unk_38.unk_04 = 90.0f; + D_EBFBE0_801AE638[2].unk_38.unk_0C = 0.4f; + D_EBFBE0_801AE638[2].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE638[2].unk_5C = 1; + D_EBFBE0_801AE638[2].unk_00.unk_20 = 1.0f; + D_EBFBE0_801AE638[2].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE638[2].unk_00.unk_18 = 145.0f; + D_EBFBE0_801AE638[2].unk_00.unk_1C = 25.0f; + D_EBFBE0_801AE638[2].unk_58 = 1; + + D_EBFBE0_801B9124 = 2; + } else { + D_EBFBE0_801B9124 = 1000; + } + } + + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9134 = 0; + D_EBFBE0_801B913C = 0; + + D_8017784C = 2; + + func_80006F20(); + + D_80178420 = 320.0f; + D_80178424 = 240.0f; + + func_800A5D6C(); + + D_80177978 = 0.0f; + D_80177980 = 0.0f; + D_80177988 = 10.0f; + D_801779A0 = 0.0f; + D_801779B8 = 0.0f; + D_801779C0 = 0.0f; + + D_EBFBE0_801B9224 = -80.0f; + D_EBFBE0_801B9228 = 0.0f; + + D_EBFBE0_801B922C = 225; + D_EBFBE0_801B9230 = 225; + D_EBFBE0_801B9234 = 225; + D_EBFBE0_801B9238 = 30; + D_EBFBE0_801B923C = 30; + D_EBFBE0_801B9240 = 30; + + D_EBFBE0_801B91F8 = 0.1f; + D_EBFBE0_801B91F4 = -130.0f; + D_EBFBE0_801B91FC = 0.0f; + D_EBFBE0_801B9200 = 0.0f; + + D_EBFBE0_801B91EC = 0; + D_EBFBE0_801B9244 = 0; + D_EBFBE0_801B9248 = 0; + func_8001D444(0, 0x24, 0, 0xFF); +} + +void func_EBFBE0_801920C4(void) { + if (D_EBFBE0_801B9178 > 0) { + D_EBFBE0_801B9178--; + } + if (D_EBFBE0_801B917C > 0) { + D_EBFBE0_801B917C--; + } + + switch (D_8017784C) { + case 0: + if (D_8017783C == 0) { + D_8017784C = 1; + func_8001DC6C(0, 23); + } + break; + + case 1: + D_80177898 = 0; + func_EBFBE0_80191B20(); + break; + + case 2: + D_80177898 = 2; + func_EBFBE0_80192190(); + break; + } + D_80177DB0++; +} + +void func_EBFBE0_80192190(void) { + switch (D_EBFBE0_801B9124) { + case 1000: + func_EBFBE0_80192D58(); + break; + + case 0: + func_EBFBE0_801928BC(); + break; + + case 1: + func_EBFBE0_80192938(); + break; + + case 2: + func_EBFBE0_80193C4C(); + break; + + case 3: + func_EBFBE0_80196EFC(); + break; + + case 4: + func_EBFBE0_801948A8(); + break; + + case 5: + func_EBFBE0_801962A4(); + break; + + case 6: + // Expert Sound Options + func_EBFBE0_80195944(); + break; + + case 2000: + func_EBFBE0_8019A0B8(); + break; + + case 10: + case 20: + case 30: + func_EBFBE0_80199424(); + break; + + case 200: + func_EBFBE0_8019CAE0(); + break; + + case 300: + func_EBFBE0_8019DD44(); + break; + + case 400: + func_EBFBE0_8019E030(); + break; + } + + if (D_EBFBE0_801B91BC != 0) { + D_EBFBE0_801B91FC += 3.8f; + D_EBFBE0_801B9200 += 4.2f; + } +} + +void func_EBFBE0_80192340(void) { + switch (D_EBFBE0_801B9124) { + case 1000: + func_EBFBE0_80193864(); + break; + + case 2: + func_EBFBE0_801944F0(); + break; + + case 3: + func_EBFBE0_80196F9C(); + break; + + case 4: + func_EBFBE0_80194CE4(); + break; + + case 6: + // Expert Sound Options + func_EBFBE0_80195B74(); + break; + + case 5: + func_EBFBE0_80196894(); + break; + + case 2000: + func_EBFBE0_8019AAB4(); + break; + + case 10: + case 20: + case 30: + func_EBFBE0_8019978C(); + break; + + case 200: + func_EBFBE0_8019D118(); + break; + + case 300: + func_EBFBE0_8019DF64(); + break; + + case 400: + func_EBFBE0_8019E284(); + break; + } + + if (D_EBFBE0_801B8280 != 0) { + func_EBFBE0_8019BDF0(); + func_80084688(2, D_EBFBE0_801B8284); + Matrix_Pop(&D_8013B3C0); + } +} + +void func_EBFBE0_801924C4(void) { + D_80161A38 = 0xFF; + D_EBFBE0_801B912C = 0; + + switch (D_EBFBE0_801B9124) { + case 0: + D_80177898 = 0; + break; + + case 10: + case 20: + case 30: + func_EBFBE0_801992C4(); + break; + + case 2000: + func_EBFBE0_80199FA8(); + break; + + case 3: + func_EBFBE0_80196E54(); + break; + + case 4: + func_EBFBE0_80194678(); + break; + + case 6: + func_EBFBE0_801958DC(); + break; + + case 5: + func_EBFBE0_80196260(); + break; + } +} + +void func_EBFBE0_80192598(void) { + s32 i; + + D_EBFBE0_801B93E8 = 0; + D_EBFBE0_801B93EC = 0; + + for (i = 0; i < (96 * 96); i++) { + // Planet Textures + D_EBFBE0_801BB810[i] = 106; + D_EBFBE0_801BDC10[i] = 84; + D_EBFBE0_801C0010[i] = 75; + D_EBFBE0_801C2410[i] = 81; + D_EBFBE0_801C4810[i] = 55; + D_EBFBE0_801C6C10[i] = 82; + D_EBFBE0_801C9010[i] = 68; + D_EBFBE0_801CB410[i] = 52; + D_EBFBE0_801B9410[i] = 0; + } + + for (i = 0; i < 9; i++) { + D_EBFBE0_801CD818[i] = 0.0f; + func_EBFBE0_801A07E8(D_EBFBE0_801B68B0[i], SEGMENTED_TO_VIRTUAL(D_EBFBE0_801B68D4[i]), &D_EBFBE0_801CD818[i]); + } +} + +void func_EBFBE0_80192738(void) { + if (D_EBFBE0_801B93E8 == 5) { + func_EBFBE0_801A07E8(D_EBFBE0_801B68B0[8], SEGMENTED_TO_VIRTUAL(D_EBFBE0_801B68D4[8]), &D_EBFBE0_801CD818[8]); + D_EBFBE0_801B93E8 = 0; + } else { + D_EBFBE0_801B93E8++; + } + + func_EBFBE0_801A07E8(D_EBFBE0_801B68B0[D_EBFBE0_801B93EC * 2], + SEGMENTED_TO_VIRTUAL(D_EBFBE0_801B68D4[D_EBFBE0_801B93EC * 2]), + &D_EBFBE0_801CD818[D_EBFBE0_801B93EC * 2]); + + func_EBFBE0_801A07E8(D_EBFBE0_801B68B0[(D_EBFBE0_801B93EC * 2) + 1], + SEGMENTED_TO_VIRTUAL(D_EBFBE0_801B68D4[(D_EBFBE0_801B93EC * 2) + 1]), + &D_EBFBE0_801CD818[(D_EBFBE0_801B93EC * 2) + 1]); + + D_EBFBE0_801B93EC++; + if (D_EBFBE0_801B93EC >= 4) { + D_EBFBE0_801B93EC = 0; + } +} + +void func_EBFBE0_801928BC(void) { + if (D_80178340 == 0xFF) { + D_80178410 = 0; + D_EBFBE0_801B9124 = 100; + D_80177834 = 4; + D_8017783C = 2; + D_80177B40 = 0; + D_80177898 = 0; + D_800DD8B4 = 3; + } else { + D_80178340 += 0x20; + if (D_80178340 > 0xFF) { + D_80178340 = 0xFF; + } + } +} + +void func_EBFBE0_80192938(void) { + if (D_80178340 == 0xFF) { + D_80178234 = 0xA; + D_80177834 = 7; + D_8017783C = 2; + D_80177854 = 0; + D_80177898 = 0; + func_800A5844(); + D_80177CA0 = 0; + D_80177CB0 = 0.0f; + D_8017782C = 1; + D_800DD8B4 = 3; + func_8001DC6C(0, 28); + } else { + D_80178340 += 0x20; + if (D_80178340 >= 0x100) { + D_80178340 = 0xFF; + } + } +} + +// https://decomp.me/scratch/qI7sN +// Matches but requires data migration +#ifdef IMPORT_DATA_PENDING +void func_EBFBE0_801929F0(void) { + s32 i; + + D_800D2870 = 0; + D_80161A38 = 0xFF; + D_800DD8B4 = 0; + D_80178410 = 800; + D_EBFBE0_801B9248 = 0; + + if (D_EBFBE0_801B9244 == 0) { + D_EBFBE0_801B91BC = 1; + for (i = 0; i < 6; i++) { + D_EBFBE0_801AE638[i].unk_00.unk_18 = D_EBFBE0_801AE5B8[i]; + D_EBFBE0_801AE638[i].unk_00.unk_1C = D_EBFBE0_801AE5D0[i]; + D_EBFBE0_801AE638[i].unk_00.unk_20 = 1.0f; + D_EBFBE0_801AE638[i].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE638[i].unk_58 = 1; + + D_EBFBE0_801AE638[i].unk_38.unk_0C = 0.4f; + D_EBFBE0_801AE638[i].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE638[i].unk_38.unk_04 = D_EBFBE0_801AE570[i]; + D_EBFBE0_801AE638[i].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE638[i].unk_5C = 1; + } + } else { + D_EBFBE0_801B91BC = 0; + for (i = 0; i < 6; i++) { + D_EBFBE0_801AE638[i].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE638[i].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE638[i].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE638[i].unk_5C = 1; + D_EBFBE0_801AE638[i].unk_58 = 1; + } + } + + D_EBFBE0_801B9204 = -45.0f; + D_EBFBE0_801B9214 = 0; + + D_EBFBE0_801B9180.unk_0 = 0; + D_EBFBE0_801B9180.unk_4 = 0; + D_EBFBE0_801B9190.unk_0 = 0; + D_EBFBE0_801B9190.unk_4 = 0; + D_EBFBE0_801B9198.unk_0 = 0; + D_EBFBE0_801B9198.unk_4 = 0; +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_801929F0.s") +#endif + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80192D58.s") + +void func_EBFBE0_80193864(void) { + s32 i; + + func_EBFBE0_8019BDF0(); + + for (i = 0; i < 6; i++) { + if (D_EBFBE0_801AE638[i].unk_5C) { + func_EBFBE0_8019BAB8(D_EBFBE0_801AE638[i].unk_38); + } + } + + func_EBFBE0_8019BBA4(D_EBFBE0_801AE638[D_EBFBE0_801B91A4].unk_4C); + Matrix_Pop(&D_8013B3C0); + + for (i = 0; i < 6; i++) { + if (!(D_EBFBE0_801AE638[i].unk_58) || (D_EBFBE0_801AE638[i].unk_00.unk_20) <= 0.0f) { + continue; + } + if ((i == 0) && (D_EBFBE0_801B91C8 != 0) && ((D_EBFBE0_801B912C == 0) || (D_EBFBE0_801B912C == 1))) { + func_EBFBE0_8019B6D8(106.0f, 56.0f, 98.0f, 20, 0, 75); + } + if ((i == 4) && (D_EBFBE0_801B91C8 != 0) && ((D_EBFBE0_801B912C == 0) || (D_EBFBE0_801B912C == 1))) { + func_EBFBE0_8019B6D8(106.0f, 152.0f, 98.0f, 20, 0, 75); + } + func_EBFBE0_8019C120(D_EBFBE0_801AE638[i].unk_00); + } + + func_EBFBE0_8019BF34(); +} + +void func_EBFBE0_80193B04(void) { + s32 i; + + D_80161A38 = 0xFF; + D_800DD8B4 = 0; + D_80178410 = 800; + + if (D_EBFBE0_801B9248 == 0) { + D_EBFBE0_801B91BC = 1; + + for (i = 0; i < 3; i++) { + D_EBFBE0_801AE878[i].unk_00.unk_18 = D_EBFBE0_801AEF90[i]; + D_EBFBE0_801AE878[i].unk_00.unk_1C = D_EBFBE0_801AEF9C[i]; + D_EBFBE0_801AE878[i].unk_00.unk_20 = 1.0f; + D_EBFBE0_801AE878[i].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE878[i].unk_58 = 1; + D_EBFBE0_801AE878[i].unk_38.unk_0C = 0.4f; + D_EBFBE0_801AE878[i].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE878[i].unk_38.unk_04 = D_EBFBE0_801AEF84[i]; + D_EBFBE0_801AE878[i].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE878[i].unk_5C = 1; + } + } else { + D_EBFBE0_801B91BC = 0; + + for (i = 0; i < 3; i++) { + D_EBFBE0_801AE878[i].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE878[i].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE878[i].unk_38.unk_08 = 0.0f; + D_EBFBE0_801AE878[i].unk_58 = 1; + D_EBFBE0_801AE878[i].unk_5C = 1; + } + } + + D_EBFBE0_801B9204 = -45.0f; + D_EBFBE0_801B9214 = 0; + D_EBFBE0_801B9188.unk_0 = 0; + D_EBFBE0_801B9188.unk_4 = 0; +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80193C4C.s") + +void func_EBFBE0_801944F0(void) { + s32 i; + + func_EBFBE0_8019B9C0(); + func_EBFBE0_8019BDF0(); + + for (i = 0; i < 3; i++) { + if (D_EBFBE0_801AE878[i].unk_5C != 0) { + func_EBFBE0_8019BAB8(D_EBFBE0_801AE878[i].unk_38); + } + } + + func_EBFBE0_8019BBA4(D_EBFBE0_801AE878[D_EBFBE0_801B91A8].unk_4C); + Matrix_Pop(&D_8013B3C0); + + for (i = 0; i < 3; i++) { + if ((D_EBFBE0_801AE878[i].unk_58 != 0) && !(D_EBFBE0_801AE878[i].unk_00.unk_20 <= 0.0f)) { + func_EBFBE0_8019C120(D_EBFBE0_801AE878[i].unk_00); + } + } + + func_EBFBE0_8019BF34(); +} + +void func_EBFBE0_80194678(void) { + s32 i; + + D_80178410 = 800; + + D_EBFBE0_801B91B4 = 0; + D_EBFBE0_801B91B8 = 0; + D_EBFBE0_801B91BC = 1; + D_EBFBE0_801B91A0 = 0; + + D_80177C74 = D_80178870.save[0].save_00.unk_14; + func_800182F4(D_EBFBE0_801AE998[D_80177C74] | 0xE0000000); + + D_80177C80[0] = D_80178870.save[0].save_00.unk_15; + D_80177C80[1] = D_80178870.save[0].save_00.unk_16; + D_80177C80[2] = D_80178870.save[0].save_00.unk_17; + + if (D_80177C80[0] > 99) { + D_80177C80[0] = 99; + } + if (D_80177C80[1] > 99) { + D_80177C80[1] = 99; + } + if (D_80177C80[2] > 99) { + D_80177C80[2] = 99; + } + + func_8001D8A8(0, D_80177C80[0]); + func_8001D8A8(1, D_80177C80[1]); + func_8001D8A8(2, D_80177C80[2]); + + D_EBFBE0_801AEB48[0].unk_18 = D_80177C80[0] + 146.0f; + D_EBFBE0_801AEB48[1].unk_18 = D_80177C80[1] + 146.0f; + D_EBFBE0_801AEB48[2].unk_18 = D_80177C80[2] + 146.0f; + + D_EBFBE0_801B9288 = 0; + D_EBFBE0_801B9284 = 0; + D_EBFBE0_801B914C = 0; + D_EBFBE0_801B9158 = 0; + D_EBFBE0_801B9178 = 0; + D_EBFBE0_801B917C = 0; + + // clang-format off + for (i = 0; i < 5; i++) { D_EBFBE0_801B9270[i] = 255.0f; } + // clang-format on + D_EBFBE0_801B91E4 = 255.0f; + + D_EBFBE0_801B9218 = 56.0f; + D_EBFBE0_801B921C = -43.0f; + D_EBFBE0_801B9220 = 0.0f; + + D_EBFBE0_801B9250.unk_0 = 0; + D_EBFBE0_801B9250.unk_4 = 0; + + D_EBFBE0_801B9258.unk_0 = 0; + D_EBFBE0_801B9258.unk_4 = 0; + + D_EBFBE0_801B9260.unk_0 = 0; + D_EBFBE0_801B9260.unk_4 = 0; + + D_EBFBE0_801B9268.unk_0 = 0; + D_EBFBE0_801B9268.unk_4 = 0; +} + +void func_EBFBE0_801948A8(void) { + s32 sp34; + s32 temp; + + sp34 = D_EBFBE0_801B9288; + temp = func_EBFBE0_8019C418(&D_EBFBE0_801B9288, 3, 1, 0, 20, 5, 4, D_80177AF8, &D_EBFBE0_801B9250); + if (temp != 0) { + D_EBFBE0_801B9270[sp34] = 255.0f; + func_80019218(0x49000002U, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + + if (D_EBFBE0_801B9288 == 0) { + func_EBFBE0_80194AEC(); + } else { + func_EBFBE0_80194BD0(); + } + + // Test sound + if (D_800DD898[D_80177AF8].button & R_TRIG) { + D_EBFBE0_801B9284 ^= 1; + func_8001D8F4(D_EBFBE0_801B9284); + } + + if (D_800DD898[D_80177AF8].button & A_BUTTON) { + func_80019218(0x49000003, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B9288 = (D_EBFBE0_801B9288 + 1) & 3; + } + + if (D_800DD898[D_80177AF8].button & B_BUTTON) { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + if (D_EBFBE0_801B9284 == 1) { + D_EBFBE0_801B9284 = 0; + func_8001D8F4(D_EBFBE0_801B9284); + } + func_800C3084(); + D_80177898 = 0; + D_EBFBE0_801B9124 = 1000; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9244 = 1; + } +} + +void func_EBFBE0_80194AEC(void) { + s32 sp3C = D_80177C74; + s32 pad; + + if (func_EBFBE0_8019C418(&sp3C, 2, 0, 0, 20, 5, 4, D_80177AF8, &D_EBFBE0_801B9260) != 0) { + func_80019218(0x49000002, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_80177C74 = sp3C; + if (D_80177C74 >= 3) { + D_80177C74 = 0; + } + D_80178870.save[0].save_00.unk_14 = D_80177C74; + func_800182F4(D_EBFBE0_801AE998[D_80177C74] | 0xE0000000); + } +} + +void func_EBFBE0_80194BD0(void) { + s32 var_v1; + + D_EBFBE0_801B924C = D_EBFBE0_801AE99C[D_EBFBE0_801B9288 - 1]; + + if (func_EBFBE0_8019C66C(&(D_EBFBE0_801AEB48[D_EBFBE0_801B9288 - 1].unk_18), 146.0f, 245.0f, &D_EBFBE0_801B9268)) { + var_v1 = D_EBFBE0_801AEB48[D_EBFBE0_801B9288 - 1].unk_18 - 146.0f; + + D_80177C80[D_EBFBE0_801B9288 - 1] = var_v1; + + if (var_v1 > 99) { + var_v1 = 99; + } + + switch (D_EBFBE0_801B9288 - 1) { + case 0: + D_80178870.save[0].save_00.unk_15 = var_v1; + break; + + case 1: + D_80178870.save[0].save_00.unk_16 = var_v1; + break; + + case 2: + D_80178870.save[0].save_00.unk_17 = var_v1; + break; + } + func_8001D8A8(D_EBFBE0_801B924C, var_v1); + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80194CE4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_801952B4.s") + +void func_EBFBE0_801958DC(void) { + s32 i; + + D_80178410 = 800; + D_EBFBE0_801B931C = 0; + + D_EBFBE0_801B9290.unk_0 = 0; + D_EBFBE0_801B9290.unk_4 = 0; + + spectrumAnalizerMode = 0; + D_EBFBE0_801B9320 = 0; + + // clang-format off + for (i = 0; i < 32; i++) { D_EBFBE0_801B9298[i] = 0.0f; } + // clang-format on +} + +// Expert Sound Options +void func_EBFBE0_80195944(void) { + s32 pad; + f32 sp28 = D_EBFBE0_801B931C; + + if (func_EBFBE0_8019C66C(&sp28, 0.0f, 49.0f, &D_EBFBE0_801B9290) != 0) { + func_80019218(0x49000002, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B931C = sp28; + } + + if (D_800DD898[D_80177AF8].button & A_BUTTON) { + func_8001DA90(D_EBFBE0_801B931F); + D_EBFBE0_801B9320 = true; + } + + if (D_800DD898[D_80177AF8].button & B_BUTTON) { + if (!D_EBFBE0_801B9320) { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + func_8001D444(0, 0x24, 0, 0xFF); + D_80177898 = 0; + D_EBFBE0_801B9124 = 1000; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9244 = 1; + } else { + func_80019218(0x4900101D, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + func_800182F4(0x100100FF); + func_800182F4(0x110100FF); + D_EBFBE0_801B9320 = false; + } + } + + // Spectrum Analizer mode selector + if (D_800DD898[D_80177AF8].button & R_CBUTTONS) { + spectrumAnalizerMode++; + if (spectrumAnalizerMode > 2) { + spectrumAnalizerMode = 0; + } + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80195B74.s") + +void func_EBFBE0_80196260(void) { + D_80178410 = 800; + D_EBFBE0_801B91E4 = 255.0f; + D_EBFBE0_801B9330[0] = 0; + D_EBFBE0_801B9330[1] = 0; + D_EBFBE0_801B91C0 = 0; + D_EBFBE0_801B91CC = 0; +} + +void func_EBFBE0_801962A4(void) { + f32 temp_fv0; + s32 i; + + switch (D_EBFBE0_801B912C) { + case 0: + func_EBFBE0_8019669C(); + break; + + case 2: + if (D_EBFBE0_801B9330[D_EBFBE0_801B91C0] != 0) { + break; + } + D_EBFBE0_801B91CC = 0; + D_EBFBE0_801B91C0 = 0; + D_EBFBE0_801B912C = 0; + break; + + case 3: + if (D_EBFBE0_801B9330[D_EBFBE0_801B91C0]) { + break; + } + D_80177898 = 0; + D_EBFBE0_801B9124 = 0x3E8; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9244 = 1; + break; + + case 4: + if (D_EBFBE0_801B9330[D_EBFBE0_801B91C0]) { + break; + } + + switch (D_EBFBE0_801B91CC) { + case 0: + D_EBFBE0_801B91CC = 1; + D_EBFBE0_801B91C0 = 0; + D_EBFBE0_801B912C = 0; + break; + + case 1: + D_EBFBE0_801B91CC = 2; + func_80019218(0x0940A00B, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_801779A8[D_80177AF8] = 50.0f; + D_80177990[D_80177AF8] = 0; + break; + + case 2: + D_80177990[D_80177AF8] += (s32) D_801779A8[D_80177AF8]; + temp_fv0 = func_8009BC2C(&D_801779A8[D_80177AF8], 100.0f, 0.05f, 100.0f, 0.1f); + + if (D_80177990[D_80177AF8] >= 100) { + D_80177990[D_80177AF8] -= 100; + D_80137E84[D_80177AF8] = 1; + } + + if (temp_fv0 == 0.0f) { + D_EBFBE0_801B91CC = 3; + + D_80178870 = *(SaveFile*) &D_800D4D10; + + func_800C3084(); + + D_EBFBE0_801B91AC = 0; + D_EBFBE0_801B91B0 = 0; + D_EBFBE0_801B91C8 = 0; + + D_801779F8 = 0; + + D_EBFBE0_801AE638[0].unk_00.unk_08 = D_8003B50; + D_EBFBE0_801AE638[0].unk_00.unk_10 = 72; + D_EBFBE0_801AE638[0].unk_00.unk_14 = 12; + D_EBFBE0_801AE638[4].unk_00.unk_08 = D_80046B0; + D_EBFBE0_801AE638[4].unk_00.unk_10 = 64; + D_EBFBE0_801AE638[4].unk_00.unk_14 = 10; + + for (i = 0; i < 6; i++) { + D_EBFBE0_801AE5B8[i] = D_EBFBE0_801AE588[i]; + D_EBFBE0_801AE5D0[i] = D_EBFBE0_801AE5A0[i]; + } + func_EBFBE0_80188010(); + } + break; + + case 3: + D_EBFBE0_801B912C = 0; + break; + } + break; + } +} + +void func_EBFBE0_8019669C(void) { + if ((D_EBFBE0_801B91CC == 0) || (D_EBFBE0_801B91CC == 1)) { + if (func_EBFBE0_8019C5A0(&D_EBFBE0_801B91C0) != 0) { + func_80019218(0x49000002, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + if (1) {} + } + + if (D_800DD898[D_80177AF8].button & 0x8000) { + if (D_EBFBE0_801B91CC == 3) { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 3; + } else { + D_EBFBE0_801B9330[D_EBFBE0_801B91C0] = 10; + if (D_EBFBE0_801B91C0 == 0) { + if (D_EBFBE0_801B91CC == 1) { + func_80019218(0x49000003, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 2; + } else { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 3; + } + } else { + func_80019218(0x49000003, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 4; + } + } + } else if (D_800DD898[D_80177AF8].button & 0x4000) { + if (D_EBFBE0_801B91CC == 1) { + func_80019218(0x4900101D, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 2; + } else { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B912C = 3; + } + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80196894.s") + +void func_EBFBE0_80196E54(void) { + func_EBFBE0_80188010(); + + D_80178410 = 800; + + D_EBFBE0_801B91D0 = 1; + D_EBFBE0_801B93E4 = 0; + + D_EBFBE0_801B91D4 = 114.0f; + D_EBFBE0_801B91DC = 114.0f; + + D_EBFBE0_801B91D8 = -6.0f; + D_EBFBE0_801B91E0 = -6.0f; + + D_EBFBE0_801B93E0 = 0; + D_EBFBE0_801B8288 = 10; + + D_EBFBE0_801B9400.unk_0 = 0; + D_EBFBE0_801B9400.unk_4 = 0; + D_EBFBE0_801B9408.unk_0 = 0; + D_EBFBE0_801B9408.unk_4 = 0; + + func_EBFBE0_80192598(); +} + +void func_EBFBE0_80196EFC(void) { + func_EBFBE0_80196FC4(); + + if (D_800DD898[D_80177AF8].button & B_BUTTON) { + func_80019218(0x49000021, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_80177898 = 0; + D_EBFBE0_801B9124 = 1000; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9244 = 1; + } +} + +void func_EBFBE0_80196F9C(void) { + func_EBFBE0_801973C0(); + func_EBFBE0_8019B9C0(); +} + +void func_EBFBE0_80196FC4(void) { + if (D_800DD898[D_80177AF8].button & A_BUTTON) { + func_80019218(0x49000003, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B93E0 ^= 1; + } + + if (D_EBFBE0_801B93E0 != 0) { + func_EBFBE0_8019715C(); + return; + } + + func_EBFBE0_80197074(); +} + +void func_EBFBE0_80197074(void) { + if (func_EBFBE0_8019C418(&D_EBFBE0_801B93E4, 9, 1, 0, 20, 5, 4, D_80177AF8, &D_EBFBE0_801B9400) != 0) { + func_80019218(0x49000002, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B91D4 = 114.0f - D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91DC = 114.0f - D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91D8 = -6.0f + D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91E0 = -6.0f + D_EBFBE0_801B93E4 * 130.0f; + } +} + +void func_EBFBE0_8019715C(void) { + s32 pad; + f32 sp30; + f32 temp_fv0_2; + s32 temp; + s32 temp2; + + if (D_EBFBE0_801B91D0 != 0) { + if (func_EBFBE0_8019C418(&D_EBFBE0_801B93E4, 9, 1, 1, 20, 2, 9, D_80177AF8, &D_EBFBE0_801B9408) != 0.00f) { + func_80019218(0x49000002, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B91DC = 114.0f - D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91E0 = -6.0f + D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91D0 = 0; + } + } else { + sp30 = func_8009BC2C(&D_EBFBE0_801B91D8, D_EBFBE0_801B91E0, 0.5f, 100.0f, 1.0f); + temp_fv0_2 = func_8009BC2C(&D_EBFBE0_801B91D4, D_EBFBE0_801B91DC, 0.5f, 100.0f, 1.0f); + if ((sp30 == 0.0f) && (temp_fv0_2 == 0.0f)) { + D_EBFBE0_801B91D0 = 1; + } + } + + temp = D_EBFBE0_801B91D4; + temp2 = D_EBFBE0_801B91D8; + + D_EBFBE0_801B91D4 = temp; + D_EBFBE0_801B91D8 = temp2; + + if (D_EBFBE0_801B91D4 >= 114.0f) { + D_EBFBE0_801B91D4 = 114.0f; + } + if (D_EBFBE0_801B91D4 <= -1056.0f) { + D_EBFBE0_801B91D4 = -1056.0f; + } + if (D_EBFBE0_801B91D8 <= -6.0f) { + D_EBFBE0_801B91D8 = -6.0f; + } + if (D_EBFBE0_801B91D8 >= 1164.0f) { + D_EBFBE0_801B91D8 = 1164.0f; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7110.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7114.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7118.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B711C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7120.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7124.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7128.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B712C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7130.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7134.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7138.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B713C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7140.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7144.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7148.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B714C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7150.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7154.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/D_EBFBE0_801B7158.s") + +void func_EBFBE0_801973C0(void) { + s32 temp_t0; + + if (D_EBFBE0_801B93E0 != 0) { + func_EBFBE0_8019752C(); + } else { + func_EBFBE0_80187E28(); + func_800B8DD0(&gMasterDisp, 0x53); + func_EBFBE0_8019C824(&D_EBFBE0_801B93F0); + temp_t0 = D_EBFBE0_801B93F0; + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, temp_t0, temp_t0, 255); + func_8009D994(&gMasterDisp, &D_7004010, 8, 8, 70.0f, (D_EBFBE0_801B93E4 * 17.0f) + 55.0f, 1.0f, 1.0f); + } + func_800B8DD0(&gMasterDisp, 0x53); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + func_800A1200(242, 215, 1.0f, 1.0f, "PUSH A"); +} + +#ifdef IMPORT_DATA_PENDING +void func_EBFBE0_8019752C(void) { + f32 var_fs0; + f32 var_fs1; + s32 temp_a0; + s32 i; + static f32 D_EBFBE0_801AF0F4 = 130.0f; + static f32 D_EBFBE0_801AF0F8[] = { 48.0f, 175.0f }; + + var_fs0 = D_EBFBE0_801B91D4; + var_fs1 = D_EBFBE0_801B91D8; + + for (i = 0; i < 10; i++) { + if ((var_fs0 > 69.0f) && (var_fs0 < 230.0f)) { + func_EBFBE0_80197A3C(i, 41, var_fs0); + func_EBFBE0_80197D30(i, 75, var_fs0 - 25.0f); + func_EBFBE0_80197DE4(i, 130, (var_fs0 - 26.0f)); + func_EBFBE0_801AD7EC(210, (var_fs0 - 24.0f), D_80178870.save[0].save_00.unk_40[i]); + func_EBFBE0_80197F74(i, 258, var_fs0 - 25.0f); + } + func_EBFBE0_80198164(i, var_fs0, var_fs1); + var_fs0 += D_EBFBE0_801AF0F4; + var_fs1 -= D_EBFBE0_801AF0F4; + } + + func_EBFBE0_8019BDF0(); + func_EBFBE0_80197914(); + + Matrix_Pop(&D_8013B3C0); + func_800B8DD0(&gMasterDisp, 0x4C); + + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + + func_8009D994(&gMasterDisp, D_800D170, 8, 16, 0.0f, D_EBFBE0_801AF0F8[0], 40.0f, 1.5f); + func_8009E4B0(&gMasterDisp, D_800D170, 8, 16, 0.0f, D_EBFBE0_801AF0F8[1], 40.0f, 1.5f); + + func_8003DE68(0, 70); + func_8003DE68(170, 239); + func_800B8DD0(&gMasterDisp, 0x53); + + if (D_EBFBE0_801B91D4 >= 114.0f) { + gDPSetPrimColor(gMasterDisp++, 0, 0, 32, 32, 32, 255); + } else { + func_EBFBE0_8019C824(&D_EBFBE0_801B93F4); + temp_a0 = D_EBFBE0_801B93F4; + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, temp_a0, temp_a0, 255); + } + + func_8009D994(&gMasterDisp, &D_800D070, 16, 16, 150.0f, 44.0f, 1.0f, 1.0f); + + if (D_EBFBE0_801B91D4 <= -1055.0f) { + gDPSetPrimColor(gMasterDisp++, 0, 0, 32, 32, 32, 255); + } else { + func_EBFBE0_8019C824(&D_EBFBE0_801B93F8); + temp_a0 = D_EBFBE0_801B93F8; + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, temp_a0, temp_a0, 255); + } + + func_8009E4B0(&gMasterDisp, &D_800D070, 0x10, 0x10, 150.0f, 200.0f, 1.0f, 1.0f); +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019752C.s") +#endif + +void func_EBFBE0_80197914(void) { + Vec3f* vec1; + Vec3f* vec2; + s32 i; + + func_800B8DD0(&gMasterDisp, 0); + + for (i = 0, vec1 = &D_EBFBE0_801AF100, vec2 = &D_EBFBE0_801AF118; i < 2; i++, vec1++, vec2++) { + Matrix_Push(&D_8013B3C0); + Matrix_Translate(D_8013B3C0, vec1->x, vec1->y, -500.0f, 1); + Matrix_Scale(D_8013B3C0, vec2->x, vec2->y, 1.0f, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_EBFBE0_801AEF30); + Matrix_Pop(&D_8013B3C0); + } +} + +void func_EBFBE0_80197A3C(s32 arg0, s32 arg1, s32 arg2) { + func_800B8DD0(&gMasterDisp, 0x53); + + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + + if (arg0 != 9) { + func_8009D994(&gMasterDisp, D_EBFBE0_801AECF8[arg0 + 1], 16, 15, arg1, arg2 - 25.0f, 1.0f, 1.0f); + } else { + func_8009D994(&gMasterDisp, D_500A050, 16, 15, arg1 - 14.0f, arg2 - 25.0f, 1.0f, 1.0f); + func_8009D994(&gMasterDisp, D_5009F60, 16, 15, arg1, arg2 - 25.0f, 1.0f, 1.0f); + } + + func_800B8DD0(&gMasterDisp, 0x55); + + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + + switch (arg0) { + case 0: + func_8009C320(&gMasterDisp, D_8003A70, D_8003AB8, 16, 9, arg1 + 17.0f, arg2 - 19.0f, 1.0f, 1.0f); + break; + + case 1: + func_8009C320(&gMasterDisp, D_80038E0, D_8003930, 16, 10, arg1 + 17.0f, arg2 - 19.0f, 1.0f, 1.0f); + break; + + case 2: + func_8009C320(&gMasterDisp, D_8003950, D_80039A8, 16, 11, arg1 + 17.0f, arg2 - 20.0f, 1.0f, 1.0f); + break; + + default: + func_8009C320(&gMasterDisp, D_8003AE0, D_8003B28, 16, 9, arg1 + 17.0f, arg2 - 19.0f, 1.0f, 1.0f); + break; + } +} + +void func_EBFBE0_80197D30(s32 arg0, s32 arg1, s32 arg2) { + u8 temp[4]; + + func_800B8DD0(&gMasterDisp, 0x53); + + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + + temp[0] = D_80178870.save[0].save_00.unk_18[arg0][0] & 0xFF; + temp[1] = D_80178870.save[0].save_00.unk_18[arg0][1] & 0xFF; + temp[2] = D_80178870.save[0].save_00.unk_18[arg0][2] & 0xFF; + temp[3] = 0; + + func_800A0094(arg1, arg2, 1.0f, 1.0f, temp); +} + +void func_EBFBE0_80197DE4(s32 arg0, s32 arg1, s32 arg2) { + func_800B8DD0(&gMasterDisp, 0x53); + gDPSetPrimColor(gMasterDisp++, 0, 0, 60, 60, 255, 170); + func_8009D994(&gMasterDisp, &D_601B4B0, 24, 17, arg1, arg2, 3.17f, 1.05f); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + func_800A1200(arg1, arg2, 1.0f, 1.0f, "TOTAL HITS"); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + func_8009FEA0((arg1 + 40.0f) - ((func_8008BCBC(D_EBFBE0_801B8220[arg0]) * 8) - 8), (arg2 + 9.0f), + D_EBFBE0_801B8220[arg0]); +} + +void func_EBFBE0_80197F74(s32 arg0, s32 arg1, s32 arg2) { + f32 temp_fs1; + s32 i; + + func_800B8DD0(&gMasterDisp, 0x53); + + for (temp_fs1 = 0.0f, i = 0; i < 3; i++, temp_fs1 += 12.0f) { + gDPSetPrimColor(gMasterDisp++, 0, 0, D_EBFBE0_801AF0D0[i], D_EBFBE0_801AF0DC[i], D_EBFBE0_801AF0E8[i], 255); + func_800A1200(temp_fs1 + arg1, arg2, 1.0f, 1.0f, D_EBFBE0_801AF0C4[i]); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + func_8009FEA0(arg1 + temp_fs1 - ((func_8008BCBC(D_EBFBE0_801B81A8[arg0][i]) - 1) * 8), arg2 + 9.0f, + D_EBFBE0_801B81A8[arg0][i]); + } +} + +void func_EBFBE0_80198164(s32 arg0, f32 arg1, f32 arg2) { + f32 temp = 16.0f; + s32 temp_s2 = D_80178870.save[0].save_00.unk_36[arg0]; + f32 var_fs2; + s32 i; + + for (var_fs2 = 0.0f, i = 0; i < 7; i++, var_fs2 += 24.0f + temp) { + func_EBFBE0_801982B0(arg0, i, 28.0f + var_fs2, arg1, temp_s2); + if (i < temp_s2) { + func_EBFBE0_8019882C(arg0, i, 28.0f + var_fs2, arg1); + func_EBFBE0_801984D0(arg0, i, 28.0f + var_fs2, arg1); + func_EBFBE0_80198608(arg0, i, 28.0f + var_fs2, arg1); + } + } + + if ((arg2 < 75.0f) && (arg2 > -80.0f)) { + func_EBFBE0_8019896C(arg0, arg2, temp_s2); + } +} + +void func_EBFBE0_801982B0(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) { + s32 r; + s32 g; + s32 b; + s32 temp_v0; + s32 temp1; + s32 temp2; + + if ((arg3 > 30.0f) && (arg3 < 200.0f)) { + func_800B8DD0(&gMasterDisp, 0x4C); + if (arg1 < 6) { + b = 255; + g = 255; + r = 255; + if (arg1 < (arg4 - 1)) { + temp1 = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_8 & 15; + temp2 = D_80178870.save[0].save_00.unk_5E[arg0][arg1 + 1].unk_8 & 15; + + temp_v0 = func_EBFBE0_80199284(temp1, temp2); + + g = 255; + b = 255; + r = 255; + + switch (temp_v0) { + case 0: + r = 16; + g = 64; + break; + + case 1: + case 3: + g = 175; + b = 0; + break; + + case 2: + case 4: + b = 0; + g = 0; + break; + } + } + gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, 255); + func_8009D418(&gMasterDisp, D_60447A0, 8, 8, arg2 + 24.0f, arg3 + 11.0f, 2.0f, 0.2f); + } + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + func_8009D418(&gMasterDisp, D_6047550, 24, 24, arg2, arg3, 1.0f, 1.0f); + } +} + +void func_EBFBE0_801984D0(s32 arg0, s32 arg1, f32 arg2, f32 arg3) { + s32 sp1C; + + if ((arg3 > 22.0f) && (arg3 < 162.0f)) { + func_800B8DD0(&gMasterDisp, 0x53); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + sp1C = (D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_C & 1) << 8; + sp1C |= D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_0; + func_8009FEA0(arg2 + 15.0f - (func_8008BCBC(sp1C) - 1) * 8, arg3 + 24.0f + 1.0f, sp1C); + } +} + +void func_EBFBE0_80198608(s32 arg0, s32 arg1, f32 arg2, f32 arg3) { + f32 var_fs1; + s32 sp90[3]; + s32 i; + + if ((arg3 > 12.0f) && (arg3 < 154.0f)) { + func_800B8DD0(&gMasterDisp, 0x53); + + sp90[0] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_D & 1; + sp90[1] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_F & 1; + sp90[2] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_E & 1; + + for (var_fs1 = 0.0f, i = 0; i < 3; i++, var_fs1 += 9.0f) { + if (sp90[i] == 0) { + continue; + } + gDPSetPrimColor(gMasterDisp++, 0, 0, D_EBFBE0_801AF0D0[i], D_EBFBE0_801AF0DC[i], D_EBFBE0_801AF0E8[i], 255); + func_800A1200(arg2 + var_fs1 - 1.0f, arg3 + 24.0f + 8.0f + 1.0f, 1.0f, 1.0f, D_EBFBE0_801AF0C4[i]); + } + } +} + +void func_EBFBE0_8019882C(s32 arg0, s32 arg1, f32 arg2, f32 arg3) { + s32 temp; + s8* sp20; + f32 temp2; + + if (arg3 > 58.0f && arg3 < 197.0f) { + temp = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_8 & 0x0f; + sp20 = D_EBFBE0_801AEEAC[temp]; + func_800B8DD0(&gMasterDisp, 0x53); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255); + temp2 = func_800A13EC(sp20) / 2.0f; + func_800A1200(arg2 + 12.0f - temp2, arg3 - 8.0f, 1.0f, 1.0f, sp20); + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019896C.s") + +void func_EBFBE0_80199198(f32 arg0, f32 arg1, f32 arg2) { + func_800B8DD0(&gMasterDisp, 0x35); + Matrix_Push(&D_8013B3C0); + Matrix_Translate(D_8013B3C0, arg0 - D_EBFBE0_801AF140, arg1 + D_EBFBE0_801AF144, arg2, 1); + Matrix_Scale(D_8013B3C0, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, 1); + Matrix_SetGfxMtx(&gMasterDisp); + gSPDisplayList(gMasterDisp++, D_601D1F0); + Matrix_Pop(&D_8013B3C0); +} + +s32 func_EBFBE0_80199284(s32 arg0, s32 arg1) { + s32 i; + + for (i = 0; i < 24; i++) { + if ((D_EBFBE0_801AED4C[i].unk_0 == arg0) && (D_EBFBE0_801AED4C[i].unk_4 == arg1)) { + break; + } + } + + return D_EBFBE0_801AED4C[i].unk_8; +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_801992C4.s") + +void func_EBFBE0_80199424(void) { + switch (D_EBFBE0_801B912C) { + case 0: + func_EBFBE0_8019949C(); + break; + + case 1: + if (D_EBFBE0_801B91EC == 0.0f) { + D_EBFBE0_801B9124 = 2000; + func_EBFBE0_801924C4(); + } + break; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019949C.s") + +void func_EBFBE0_8019978C(void) { + s32 i; + + func_EBFBE0_8019B8C8(); + func_EBFBE0_80199EA8(); + + for (i = 0; i < 4; i++) { + if (D_800DD8B0[i] == 1) { + func_EBFBE0_80199820(i); + } + } + + if (D_EBFBE0_801B93C4 == 15) { + func_EBFBE0_8019B5AC(); + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80199820.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80199EA8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_80199FA8.s") + +// Needs static data type +#ifdef IMPORT_DATA_PENDING +void func_EBFBE0_8019A080(void) { + s32 i; + + for (i = 0; i < 4; i++) { + D_EBFBE0_801B9380[i].unk_0 = 0; + D_EBFBE0_801B9380[i].unk_4 = 0; + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A080.s") +#endif + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A0B8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A124.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A1A8.s") + +void func_EBFBE0_8019A214(void) { + switch (D_EBFBE0_801B912C) { + case 0: + func_EBFBE0_8019A4DC(); + break; + case 1: + func_EBFBE0_8019A6DC(); + break; + case 2: + func_EBFBE0_8019A954(); + break; + case 3: + func_EBFBE0_8019A298(); + break; + } +} + +void func_EBFBE0_8019A298(void) { + if (D_EBFBE0_801B91EC == 0.0f) { + D_80177834 = 6; + D_8017783C = 2; + D_8017784C = 0; + D_80177898 = 0; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A2E0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A4DC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A6DC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019A954.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019AAB4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019AB30.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019AD84.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019AFFC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B1F8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B3DC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B5AC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B6D8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B7D4.s") + +void func_EBFBE0_8019B8A0(s32 arg0) { + D_EBFBE0_801B9124 = arg0; + D_80177898 = 0; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B91B4 = 0; +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B8C8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019B9C0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BAB8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BBA4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BC44.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BDF0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BE7C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019BF34.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C04C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C120.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C418.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C5A0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C66C.s") + +void func_EBFBE0_8019C824(f32* arg0) { + if ((s32) func_8009BC2C(arg0, D_EBFBE0_801B91E4, 0.5f, 100.0f, 1.0f) == 0.0f) { + if (*arg0 == 32.0f) { + D_EBFBE0_801B91E4 = 255.0f; + } else { + D_EBFBE0_801B91E4 = 32.0f; + } + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019C8C4.s") + +void func_EBFBE0_8019CAE0(void) { + switch (D_EBFBE0_801B912C) { + case 0: + func_EBFBE0_8019CBC0(); + D_EBFBE0_801B912C++; + break; + + case 1: + func_EBFBE0_8019CD54(); + break; + + case 2: + func_EBFBE0_8019D624(); + func_EBFBE0_80188010(); + D_EBFBE0_801B917C = 15; + D_EBFBE0_801B912C++; + break; + + case 3: + if (D_EBFBE0_801B917C == 0) { + D_80161A38 = 255; + D_80177898 = 0; + D_EBFBE0_801B912C = 0; + D_EBFBE0_801B9124 = 300; + } + break; + } +} + +void func_EBFBE0_8019CBC0(void) { + s32 temp; + s32 i; + + func_8001D444(0, 36, 0, 255); + + D_80161A38 = 0xD0; + D_80178410 = 800; + + D_EBFBE0_801B9130 = 1; + D_EBFBE0_801B9128 = 0; + D_EBFBE0_801B911C = 0.0f; + D_EBFBE0_801B9120 = 70.0f; + + temp = D_80178870.save[0].save_00.unk_EA & 0xFF; + + if (temp < 10) { + D_EBFBE0_801B9098 = 3; + D_EBFBE0_801B9138 = 1; + + D_EBFBE0_801B9150[0][0] = D_80178870.save[0].save_00.unk_18[temp][0] & 0xFF; + D_EBFBE0_801B9150[1][0] = D_80178870.save[0].save_00.unk_18[temp][1] & 0xFF; + D_EBFBE0_801B9150[2][0] = D_80178870.save[0].save_00.unk_18[temp][2] & 0xFF; + + for (i = 0; i < 3; i++) { + D_EBFBE0_801B90A0[i] = func_EBFBE0_8019DCE8(D_EBFBE0_801B9150[i][0]); + D_EBFBE0_801B90B0[i] = 1; + D_EBFBE0_801B9150[i][1] = 0; + } + } else { + D_EBFBE0_801B9098 = 0; + D_EBFBE0_801B9138 = 0; + + for (i = 0; i < 3; i++) { + D_EBFBE0_801B90B0[i] = 0; + D_EBFBE0_801B90A0[i] = 0; + D_EBFBE0_801B9150[i][0] = 0x41; + D_EBFBE0_801B9150[i][1] = 0; + } + } + func_EBFBE0_80192598(); +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019CD54.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019D118.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019D624.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019DB20.s") + +s32 func_EBFBE0_8019DCE8(s32 arg0) { + s32 i = 0; + + // 'for()' causes instruction reorder + while (D_EBFBE0_801AEF5C[i] != 0) { + if (D_EBFBE0_801AEF5C[i] == arg0) { + break; + } + i++; + } + + if (D_EBFBE0_801AEF5C[i] == 0) { + i = 0; + } + + return i; +} + +void func_EBFBE0_8019DD44(void) { + switch (D_EBFBE0_801B912C) { + case 0: + func_EBFBE0_80196E54(); + + D_EBFBE0_801B93E4 = D_EBFBE0_801B9094; + + if ((D_EBFBE0_801B9094 < 0) || (D_EBFBE0_801B9094 >= 10)) { + D_EBFBE0_801B93E4 = 0; + } + + D_EBFBE0_801B91D4 = 114.0f - D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801B91D8 = -6.0f + D_EBFBE0_801B93E4 * 130.0f; + D_EBFBE0_801AE638[3].unk_00.unk_18 = D_EBFBE0_801AE5C4; + D_EBFBE0_801AE638[3].unk_00.unk_1C = 23.0f; + D_EBFBE0_801AE638[3].unk_00.unk_20 = 1.0f; + D_EBFBE0_801AE638[3].unk_00.unk_24 = 1.0f; + D_EBFBE0_801AE638[3].unk_58 = 1; + D_EBFBE0_801AE638[3].unk_38.unk_04 = 90.0f; + D_EBFBE0_801AE638[3].unk_38.unk_0C = 0.4f; + D_EBFBE0_801AE638[3].unk_38.unk_10 = 0.21f; + D_EBFBE0_801AE638[3].unk_5C = 1; + D_EBFBE0_801B912C++; + break; + + case 1: + func_EBFBE0_8019DE74(); + break; + } +} + +void func_EBFBE0_8019DE74(void) { + func_EBFBE0_8019715C(); + + if (D_800DD898[D_80177AF8].button & 0xD00E) { // START, A, B, C-UP, C-LEFT, C-DOWN + func_80019218(0x49000003, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + + D_80177898 = 0; + D_EBFBE0_801B912C = 0; + + if (D_80161A34 == 5) { + D_80178410 = 0; + D_80177834 = 1; + D_80161AA0[0] = 2; + D_80161714 = 0; + } else if (D_80161A34 == 8) { + func_800182F4(0x100100FF); + func_800182F4(0x110100FF); + D_EBFBE0_801B9124 = 400; + } + } +} + +void func_EBFBE0_8019DF64(void) { + func_EBFBE0_8019752C(); + func_EBFBE0_8019BDF0(); + func_EBFBE0_8019BAB8(D_EBFBE0_801AE638[3].unk_38); + Matrix_Pop(&D_8013B3C0); + func_EBFBE0_8019C120(D_EBFBE0_801AE638[3].unk_00); +} + +void func_EBFBE0_8019E030(void) { + switch (D_EBFBE0_801B912C) { + case 0: + D_80178410 = 0; + D_80161A36 = 0; + D_80178348 = 0; + D_80178350 = 0; + D_80178354 = 0; + D_80178340 = 0; + D_EBFBE0_801B9090 = 0; + D_EBFBE0_801B9178 = 30; + D_EBFBE0_801B912C++; + break; + + case 1: + if (D_EBFBE0_801B9178 == 0) { + if (((D_80161714 * 64) >= 50000) && ((D_80161714 * 64) < 70000)) { + func_80019218(0x49000032, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + if ((D_80161714 * 64) >= 70000) { + func_80019218(0x49000033, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + } + D_EBFBE0_801B9178 = 20; + D_EBFBE0_801B912C++; + } + break; + + case 2: + if ((D_EBFBE0_801B9178 == 0) && (D_800DD898[D_80177AF8].button & 0xD00E)) { + func_80019218(0x19031083, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_EBFBE0_801B9090 = 1; + D_EBFBE0_801B9178 = 60; + D_EBFBE0_801B912C++; + } + break; + + case 3: + if (D_EBFBE0_801B9178 == 0) { + D_80178410 = 0; + D_80177834 = 1; + D_80177898 = 0; + *D_80161AA0 = 2; + D_80161714 = 0; + } + break; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_EBFBE0/fox_option/func_EBFBE0_8019E284.s") diff --git a/yamls/us/overlays.yaml b/yamls/us/overlays.yaml index 47e4abde..2f43ddec 100644 --- a/yamls/us/overlays.yaml +++ b/yamls/us/overlays.yaml @@ -160,14 +160,14 @@ subsegments: - [0xEBFBE0, c, EBFBE0] - [0xEBFCA0, c, EBFCA0] - - [0xECA1E0, c, ECA1E0] + - [0xECA1E0, c, fox_option] - [0xED6EC0, c, ED6EC0] - [0xEE60C0, data, EBFCA0] - - [0xEE6C30, data, ECA1E0] + - [0xEE6C30, data, fox_option] - [0xEE7AE0, data, ED6EC0] - [0xEEF410, .rodata, EBFBE0] - [0xEEF430, .rodata, EBFCA0] - - [0xEEF7D0, .rodata, ECA1E0] + - [0xEEF7D0, .rodata, fox_option] - [0xEEFB80, .rodata, ED6EC0] - { start: 0xEF0260, type: bss, vram: 0x801B7BA0, name: ovl_EBFBE0 }