From 33f621ea790cbac9390eccea99ea479ca8eb5d50 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 25 Dec 2022 11:29:29 -0800 Subject: [PATCH] label/document game options --- asm/code_2.s | 6 +- asm/code_800D090.s | 2 +- asm/code_8012A18.s | 2 +- asm/code_803D110.s | 12 +-- asm/code_8040094.s | 8 +- asm/code_80495E4.s | 4 +- asm/code_805D8C8.s | 12 +-- asm/code_806CD90.s | 2 +- asm/code_8073CF0.s | 6 +- asm/code_808417C.s | 4 +- asm/code_8098BDC.s | 8 +- data/data_8107010.s | 4 +- include/gUnknown_203B46C.h | 21 ----- include/game_options.h | 69 ++++++++++++++++ include/save.h | 3 +- src/code_2.c | 13 ++- src/code_80118A4.c | 13 +-- src/code_8012A18.c | 6 +- src/code_801DCC4.c | 21 +++-- src/code_8069E0C.c | 6 +- src/dungeon_music.c | 8 +- src/game_options.c | 150 +++++++++++++++++------------------ src/main_menu.c | 4 +- src/personality_test.c | 8 +- src/rescue_password_menu_1.c | 1 - src/save.c | 11 ++- src/wonder_mail_2.c | 6 +- sym_ewram2.txt | 2 +- 28 files changed, 225 insertions(+), 187 deletions(-) delete mode 100644 include/gUnknown_203B46C.h create mode 100644 include/game_options.h diff --git a/asm/code_2.s b/asm/code_2.s index cad5df10a..16f82c0f4 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -154,7 +154,7 @@ QuickSave: adds r1, r2, 0 strh r1, [r0] bl sub_8099648 - bl sub_8094C14 + bl SetWindowBGColor movs r0, 0 bl sub_8099690 bl sub_8099744 @@ -335,7 +335,7 @@ sub_80008C0: adds r0, r2, 0 strh r0, [r1] bl sub_8099648 - bl sub_8094C14 + bl SetWindowBGColor movs r0, 0 bl sub_8099690 bl sub_8099744 @@ -1132,7 +1132,7 @@ _08000F78: adds r0, r4, 0 bl xxx_dungeon_8001340 bl sub_8099648 - bl sub_8094C14 + bl SetWindowBGColor movs r0, 0 bl sub_8099690 b _08000F96 diff --git a/asm/code_800D090.s b/asm/code_800D090.s index 0a9e887f9..7f7964ea4 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -7437,7 +7437,7 @@ sub_8010960: _080109EC: .4byte gUnknown_203B0E8 _080109F0: .4byte 0x000052d8 _080109F4: .4byte 0x000052da -_080109F8: .4byte gUnknown_203B46C +_080109F8: .4byte gGameOptions _080109FC: .4byte gPlayTimeRef thumb_func_end sub_8010960 diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index 3f2b6b8a0..8de6c5200 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -3271,7 +3271,7 @@ _08014408: ands r0, r4 cmp r0, 0 beq _08014418 - bl sub_8094C14 + bl SetWindowBGColor _08014418: ldr r0, _08014460 movs r1, 0x1 diff --git a/asm/code_803D110.s b/asm/code_803D110.s index 18385dde0..4380ca510 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -2131,7 +2131,7 @@ _0803E138: .4byte 0x0000017d thumb_func_start sub_803E13C sub_803E13C: push {r4,r5,lr} - bl sub_8094C14 + bl SetWindowBGColor ldr r0, _0803E170 ldr r0, [r0] ldrb r0, [r0, 0xB] @@ -2156,7 +2156,7 @@ _0803E156: pop {r0} bx r0 .align 2, 0 -_0803E170: .4byte gUnknown_203B46C +_0803E170: .4byte gGameOptions _0803E174: .4byte gUnknown_202D038 thumb_func_end sub_803E13C @@ -2713,7 +2713,7 @@ _0803E630: .4byte 0x000181f0 _0803E634: .4byte 0x000181f2 _0803E638: .4byte 0x000181fc _0803E63C: .4byte gUnknown_202EDD0 -_0803E640: .4byte gUnknown_203B46C +_0803E640: .4byte gGameOptions _0803E644: .4byte 0x00018215 _0803E648: .4byte 0x0001c06c _0803E64C: .4byte gUnknown_203B40D @@ -2778,7 +2778,7 @@ sub_803E668: bx r0 .align 2, 0 _0803E6F0: .4byte gUnknown_202EDD4 -_0803E6F4: .4byte gUnknown_203B46C +_0803E6F4: .4byte gGameOptions _0803E6F8: .4byte gUnknown_202EDCC _0803E6FC: .4byte gPlayTimeRef _0803E700: .4byte gDungeonGlobalData @@ -4467,7 +4467,7 @@ _0803F410: .4byte gDungeonGlobalData _0803F414: .4byte 0x000181e8 _0803F418: .4byte 0x0000ffff _0803F41C: .4byte 0x00018228 -_0803F420: .4byte gUnknown_203B46C +_0803F420: .4byte gGameOptions _0803F424: .4byte gUnknown_202D06C thumb_func_end sub_803F38C @@ -5610,7 +5610,7 @@ _0803FCB0: movs r0, 0 b _0803FD00 .align 2, 0 -_0803FCE4: .4byte gUnknown_203B46C +_0803FCE4: .4byte gGameOptions _0803FCE8: .4byte gUnknown_202D068 _0803FCEC: .4byte gUnknown_202B038 _0803FCF0: .4byte gDungeonGlobalData diff --git a/asm/code_8040094.s b/asm/code_8040094.s index 525209af4..c2b78a430 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -635,9 +635,9 @@ _08040606: adds r0, 0x80 b _0804062C .align 2, 0 -_08040618: .4byte gUnknown_203B46C +_08040618: .4byte gGameOptions _0804061C: - bl sub_8094C68 + bl DoesNotHaveShadedMap lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -1146,7 +1146,7 @@ _08040A24: .4byte 0x00000215 _08040A28: .4byte 0x00000fff _08040A2C: .4byte 0x0000fffe _08040A30: .4byte 0x0000fffd -_08040A34: .4byte gUnknown_203B46C +_08040A34: .4byte gGameOptions _08040A38: .4byte 0x000001ff _08040A3C: movs r1, 0 @@ -1237,7 +1237,7 @@ sub_8040ABC: movs r0, 0 b _08040AEC .align 2, 0 -_08040AD8: .4byte gUnknown_203B46C +_08040AD8: .4byte gGameOptions _08040ADC: cmp r1, 0 beq _08040AE8 diff --git a/asm/code_80495E4.s b/asm/code_80495E4.s index bbe2ca012..c4b6318a7 100644 --- a/asm/code_80495E4.s +++ b/asm/code_80495E4.s @@ -2146,7 +2146,7 @@ _0804A8AC: adds r0, r3, r1 b _0804A8DC .align 2, 0 -_0804A8C0: .4byte gUnknown_203B46C +_0804A8C0: .4byte gGameOptions _0804A8C4: .4byte 0x00012b80 _0804A8C8: ldr r4, _0804A8D4 @@ -2299,7 +2299,7 @@ _0804A9D6: adds r0, r3, r1 b _0804AA08 .align 2, 0 -_0804A9EC: .4byte gUnknown_203B46C +_0804A9EC: .4byte gGameOptions _0804A9F0: .4byte 0x00012b80 _0804A9F4: ldr r4, _0804AA00 diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index cf83e1123..111e5bde0 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -633,7 +633,7 @@ _0805DDC2: .align 2, 0 _0805DDC8: .4byte gRealInputs _0805DDCC: .4byte 0x00000707 -_0805DDD0: .4byte gUnknown_203B46C +_0805DDD0: .4byte gGameOptions _0805DDD4: .4byte gUnknown_202F22D _0805DDD8: .4byte gUnknown_202F22C _0805DDDC: .4byte gUnknown_202F22E @@ -782,7 +782,7 @@ _0805DEDC: b _0805DF3A .align 2, 0 _0805DEF8: .4byte gUnknown_202F22C -_0805DEFC: .4byte gUnknown_203B46C +_0805DEFC: .4byte gGameOptions _0805DF00: .4byte gRealInputs _0805DF04: .4byte gUnknown_202F22D _0805DF08: .4byte 0x01000200 @@ -859,7 +859,7 @@ _0805DFA0: .4byte gUnknown_202EE00 _0805DFA4: .4byte gRealInputs _0805DFA8: .4byte gDungeonGlobalData _0805DFAC: .4byte 0x00018214 -_0805DFB0: .4byte gUnknown_203B46C +_0805DFB0: .4byte gGameOptions _0805DFB4: .4byte 0x0000066d _0805DFB8: .4byte gUnknown_202F22C _0805DFBC: @@ -14595,7 +14595,7 @@ _08064DFE: b _08064E40 .align 2, 0 _08064E2C: .4byte gUnknown_202EE10 -_08064E30: .4byte gUnknown_203B46C +_08064E30: .4byte gGameOptions _08064E34: .4byte gUnknown_202F2E8 _08064E38: cmp r0, 0x1 @@ -14896,7 +14896,7 @@ _08065088: bx r0 .align 2, 0 _08065090: .4byte gUnknown_80FEBF8 -_08065094: .4byte gUnknown_203B46C +_08065094: .4byte gGameOptions _08065098: .4byte gUnknown_202F2E8 thumb_func_end sub_8065040 @@ -16681,7 +16681,7 @@ _08065F16: movs r6, 0 b _08065F64 .align 2, 0 -_08065F28: .4byte gUnknown_203B46C +_08065F28: .4byte gGameOptions _08065F2C: .4byte gUnknown_202EE10 _08065F30: .4byte gUnknown_2027370 _08065F34: .4byte gUnknown_80FF774 diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s index b70782faf..c632eb580 100644 --- a/asm/code_806CD90.s +++ b/asm/code_806CD90.s @@ -1076,7 +1076,7 @@ _0806D858: lsrs r4, r1, 31 b _0806D8B6 .align 2, 0 -_0806D8B0: .4byte gUnknown_203B46C +_0806D8B0: .4byte gGameOptions _0806D8B4: movs r4, 0 _0806D8B6: diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s index 8792590ce..b44a9a743 100644 --- a/asm/code_8073CF0.s +++ b/asm/code_8073CF0.s @@ -2308,7 +2308,7 @@ _08074FD0: movs r0, 0x2 b _08074FEC .align 2, 0 -_08074FE0: .4byte gUnknown_203B46C +_08074FE0: .4byte gGameOptions _08074FE4: .4byte gUnknown_202F378 _08074FE8: ldr r1, _08075048 @@ -2383,7 +2383,7 @@ sub_8075050: movs r0, 0x2 b _0807507C .align 2, 0 -_08075070: .4byte gUnknown_203B46C +_08075070: .4byte gGameOptions _08075074: .4byte gUnknown_202F378 _08075078: ldr r1, _080750D0 @@ -2611,7 +2611,7 @@ UseAttack: b _08075248 .align 2, 0 _08075238: .4byte gUnknown_202F32D -_0807523C: .4byte gUnknown_203B46C +_0807523C: .4byte gGameOptions _08075240: .4byte gUnknown_202F378 _08075244: ldr r1, _080752D0 diff --git a/asm/code_808417C.s b/asm/code_808417C.s index a8712e9b7..73ccc3830 100644 --- a/asm/code_808417C.s +++ b/asm/code_808417C.s @@ -65,14 +65,14 @@ sub_80841EC: ldr r0, _08084274 cmp r1, r0 ble _08084278 - bl sub_8083DE0 + bl PlayDungeonCompleteBGM b _0808427C .align 2, 0 _0808426C: .4byte gDungeonGlobalData _08084270: .4byte 0x0001ceac _08084274: .4byte 0x00000225 _08084278: - bl sub_8083D98 + bl PlayDungeonFailBGM _0808427C: ldr r0, _080842B8 ldr r1, [r0] diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s index 877f21eae..c7c416730 100644 --- a/asm/code_8098BDC.s +++ b/asm/code_8098BDC.s @@ -658,7 +658,7 @@ _08099604: bne _080995AE b _08099454 .align 2, 0 -_08099620: .4byte gUnknown_203B46C +_08099620: .4byte gGameOptions _08099624: movs r0, 0x10 bl FadeOutAllMusic @@ -738,7 +738,7 @@ sub_8099690: .align 2, 0 _080996BC: .4byte gUnknown_8116028 _080996C0: .4byte gSystemFileArchive -_080996C4: .4byte gUnknown_203B46C +_080996C4: .4byte gGameOptions _080996C8: .4byte gUnknown_202D078 _080996CC: ldr r4, _080996D0 @@ -6907,7 +6907,7 @@ sub_809C6EC: bl sub_809C6CC b _0809C71E .align 2, 0 -_0809C70C: .4byte gUnknown_203B46C +_0809C70C: .4byte gGameOptions _0809C710: movs r0, 0x3 bl sub_809C6CC @@ -7962,7 +7962,7 @@ _0809CECC: bl sub_809C6CC b _0809CEF6 .align 2, 0 -_0809CEEC: .4byte gUnknown_203B46C +_0809CEEC: .4byte gGameOptions _0809CEF0: movs r0, 0x3 bl sub_809C6CC diff --git a/data/data_8107010.s b/data/data_8107010.s index b3143f2b6..948b5f6b3 100644 --- a/data/data_8107010.s +++ b/data/data_8107010.s @@ -491,8 +491,8 @@ gUnknown_8109930: @ 8109930 .string "pksdir0\0" .align 2,0 - .global gUnknown_8109954 -gUnknown_8109954: @ 8109954 + .global gWindowBGColors +gWindowBGColors: @ 8109954 .byte 0x20, 0x48, 0x68, 0x00 .byte 0x80, 0x38, 0x20, 0x00 .byte 0x28, 0x80, 0x48, 0x00 diff --git a/include/gUnknown_203B46C.h b/include/gUnknown_203B46C.h deleted file mode 100644 index c7331741c..000000000 --- a/include/gUnknown_203B46C.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef GUARD_GUNKNOWN_203B46C_H -#define GUARD_GUNKNOWN_203B46C_H - -struct UnkSaveStruct1 -{ - /* 0x0 */ u8 unk0; - /* 0x1 */ u8 unk1; - /* 0x2 */ u8 unk2; - /* 0x3 */ u8 unk3; - /* 0x4 */ u8 unk4; - /* 0x5 */ u8 unk5; - /* 0x6 */ u8 unk6; - /* 0x7 */ u8 unk7; - /* 0x8 */ u8 unk8; - /* 0x9 */ u8 unk9; - /* 0xA */ u8 unkA; - /* 0xB */ u8 playerGender; - /* 0xC */ u8 unkC; -}; - -#endif diff --git a/include/game_options.h b/include/game_options.h new file mode 100644 index 000000000..3bd2c742f --- /dev/null +++ b/include/game_options.h @@ -0,0 +1,69 @@ +#ifndef GUARD_GUNKNOWN_203B46C_H +#define GUARD_GUNKNOWN_203B46C_H + +struct GameOptions +{ + // TODO: find where Controls/Touch Screen are in this structure in PMD Blue + + /* 0x0 */ u8 dungeonSpeed; // 0 - Slow, 1 - Fast + /* 0x1 */ u8 FarOffPals; // 0 - Self, 1 - Lock + /* 0x2 */ bool8 damageTurn; // 0 - No, 1 - Yes + /* 0x3 */ bool8 gridEnable; // 0 - Off, 1 - on + /* 0x4 */ u8 mapOption; // 0 - Off, 1 - Clear, 2 - Shade + /* 0x5 */ u8 fill5[3]; + /* 0x8 */ u8 windowColor; // 0 - Blue, 1 - Red, 2 - Green + /* 0x9 */ u8 unk9; // maybe Controls? + /* 0xA */ u8 unkA; // maybe Touch Screen? + /* 0xB */ u8 playerGender; + /* 0xC */ u8 unkC; +}; + +enum DungeonSpeed +{ + DUNGEON_SPEED_SLOW, + DUNGEON_SPEED_FAST, +}; + +enum FarOffPals +{ + FAROFFPALS_SELF, + FAROFFPALS_LOCK, +}; + + +// GBA has 3 options while DS has 7 +enum MapOption +{ + MAP_OPTION_OFF = 0, + MAP_OPTION_CLEAR, + MAP_OPTION_SHADE, + NUM_GBA_MAP_OPTIONS, +}; + +enum DSMapOption +{ + TOP_TEAM_DATA_NO_BOTTOM = 0, + TOP_TEAM_DATA_CLEAR_MAP_BOTTOM, + TOP_TEAM_DATA_SHADED_MAP_BOTTOM, + TOP_MESSAGE_LOG_NO_BOTTOM, + TOP_MESSAGE_LOG_CLEAR_MAP_BOTTOM, + TOP_MESSAGE_LOG_SHADED_MAP_BOTTOM, + TOP_MAP_AND_TEAM_NO_BOTTOM, + NUM_DS_MAP_OPTIONS, +}; + +enum windowColor +{ + WINDOW_COLOR_BLUE = 0, + WINDOW_COLOR_RED, + WINDOW_COLOR_GREEN, + NUM_WINDOW_COLORS, +}; + +void LoadGameOptions(void); +struct GameOptions * GetGameOptions(void); +void InitializeGameOptions(bool8 initializeGender); +bool8 GameOptionsNotChange(struct GameOptions *r0); + + +#endif diff --git a/include/save.h b/include/save.h index 530748bf2..8d6e41d9d 100644 --- a/include/save.h +++ b/include/save.h @@ -1,6 +1,7 @@ #ifndef GUARD_SAVE_H #define GUARD_SAVE_H +#include "game_options.h" #include "play_time.h" #include "exclusive_pokemon.h" #include "rescue_team_info.h" @@ -56,7 +57,7 @@ struct UnkStruct_203B184 { /* 0x20 */ u32 unk20; /* 0x24 */ struct ExclusivePokemonData *ExclusivePokemon; /* 0x28 */ bool8 *BoughtFriendAreas; - /* 0x2C */ u32 gameOptions; + /* 0x2C */ struct GameOptions *gameOptions; /* 0x30 */ struct PlayTimeStruct *playTime; u32 unk34; u32 unk38; diff --git a/src/code_2.c b/src/code_2.c index 6f142e00c..c3117520b 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -11,7 +11,7 @@ #include "music.h" #include "play_time.h" #include "save.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "text.h" #include "exclusive_pokemon.h" #include "pokemon.h" @@ -22,12 +22,11 @@ extern void NDS_LoadOverlay_GroundMain(void); extern void sub_8014144(void); extern void sub_8097670(void); extern void LoadGameOptions(void); -extern void sub_8094C14(void); +extern void SetWindowBGColor(void); extern void LoadItemParameters(void); extern void sub_80950BC(void); extern void sub_80958E8(void); extern void sub_800CD64(u32, u32); -extern void InitializeGameOptions(u32); extern void SetWindowTitle(char *); extern void sub_800DAAC(void); extern void SetSavingIconCoords(u32); @@ -65,7 +64,7 @@ extern u32 gUnknown_203B03C; extern u16 gUnknown_2026E4E; extern s32 gUnknown_2000A80; extern struct OpenedFile *gTitlePaletteFile; -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; extern char gPMDBuildVersion[]; @@ -87,7 +86,7 @@ void GameLoop(void) sub_8097670(); InitializePlayTime(); LoadGameOptions(); - sub_8094C14(); + SetWindowBGColor(); LoadExclusivePokemon(); LoadFriendAreas(); LoadItemParameters(); @@ -97,7 +96,7 @@ void GameLoop(void) sub_80958E8(); sub_800CD64(0x8000, 0); sub_8012284(); - InitializeGameOptions(1); + InitializeGameOptions(TRUE); SetWindowTitle(gPMDBuildVersion); sub_800DAAC(); SetSavingIconCoords(0); @@ -201,7 +200,7 @@ void xxx_update_stuff(u32 r0) { xxx_draw_string_80144C4(); sub_8005838(0, 0); - nullsub_8(gUnknown_203B46C->unkA); + nullsub_8(gGameOptions->unkA); sub_8005180(); sub_80060EC(); sub_8011860(); diff --git a/src/code_80118A4.c b/src/code_80118A4.c index 926a91026..a45daf914 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -7,21 +7,14 @@ #include "bg.h" #include "input.h" #include "config.h" - +#include "game_options.h" void xxx_call_stop_bgm(void); extern bool8 sub_80023E4(u8); extern void xxx_call_stop_fanfare_se(u16 r0); -struct UnkSaveStruct1 -{ - /* 0x0 */ u32 unk0; - /* 0x4 */ u32 unk4; - /* 0x8 */ u16 unk8; - /* 0xA */ u8 unkA; -}; -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; struct UnkBgStruct { @@ -69,7 +62,7 @@ void sub_801169C(void) return_var = sub_80111C4(); sub_8004AF0(return_var, &(gUnknown_203B0E4->unk4c4c), 0xB0, 0x10, (gUnknown_203B0E4->unk4dcc), 0); sub_8005838(0, 0); - nullsub_8(gUnknown_203B46C->unkA); + nullsub_8(gGameOptions->unkA); sub_8005180(); sub_80060EC(); IncrementPlayTime(gPlayTimeRef); diff --git a/src/code_8012A18.c b/src/code_8012A18.c index 983d4e7ef..62b45785f 100644 --- a/src/code_8012A18.c +++ b/src/code_8012A18.c @@ -1,7 +1,7 @@ #include "global.h" #include "code_800558C.h" #include "input.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" extern void sub_8011860(); extern void xxx_draw_string_80144C4(); @@ -16,14 +16,14 @@ extern void sub_8009908(); extern void xxx_call_update_bg_sound_input(); extern void ResetSprites(u8 r0); -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; void sub_8012A18() { sub_8011860(); xxx_draw_string_80144C4(); - nullsub_8(gUnknown_203B46C->unkA); + nullsub_8(gGameOptions->unkA); sub_8005180(); sub_80060EC(); sub_800CB20(); diff --git a/src/code_801DCC4.c b/src/code_801DCC4.c index 5a425674d..04088eb20 100644 --- a/src/code_801DCC4.c +++ b/src/code_801DCC4.c @@ -1,7 +1,7 @@ #include "global.h" #include "memory.h" #include "menu.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "text.h" struct unkStruct_203B25C @@ -9,7 +9,7 @@ struct unkStruct_203B25C // size: 0x11C u32 state; u32 chosenHintIndex; - struct UnkSaveStruct1 unk8; + struct GameOptions newOptions; u32 unk18; const char *unk1C; u8 fill20[0x6C - 0x20]; @@ -29,7 +29,7 @@ extern void HandleChangeSettingsMenu(); extern void sub_801DD84(); extern void sub_801DED0(); extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32); -extern u32 sub_801E198(struct UnkSaveStruct1 *); +extern u32 sub_801E198(struct GameOptions *); extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32); extern void CreateHintDisplayScreen(u32); extern void sub_801E3F0(u32); @@ -43,14 +43,13 @@ extern void sub_801E54C(void); extern u32 HandleHintDisplayScreenInput(void); extern void DestroyHintDisplayScreen(void); extern u32 sub_801E218(void); -extern bool8 GameOptionsNotChange(struct UnkSaveStruct1 *); extern void sub_801E2C4(void); extern s32 sub_80144A4(s32 *); -extern void sub_8094C14(void); +extern void SetWindowBGColor(void); extern void sub_8099690(u32); extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; extern struct unkStruct_203B25C *gUnknown_203B25C; extern const struct UnkTextStruct2 gUnknown_80DBFCC; extern const struct UnkTextStruct2 gUnknown_80DBFB0; @@ -365,8 +364,8 @@ void sub_801DED0(void) break; case 6: // Load our current options? - gUnknown_203B25C->unk8 = *gUnknown_203B46C; - sub_801E198(&gUnknown_203B25C->unk8); + gUnknown_203B25C->newOptions = *gGameOptions; + sub_801E198(&gUnknown_203B25C->newOptions); break; case 7: CreateChangeSettingsConfirmMenu(); @@ -485,7 +484,7 @@ void sub_801E0FC(void) case 3: sub_801E2C4(); // Check to see if the options changed? - if (GameOptionsNotChange(&gUnknown_203B25C->unk8)) { + if (GameOptionsNotChange(&gUnknown_203B25C->newOptions)) { sub_801DD6C(1); } else { @@ -508,8 +507,8 @@ void HandleChangeSettingsMenu(void) { case MENU_OPTION_YES: // Save our option changes?? - *gUnknown_203B46C = gUnknown_203B25C->unk8; - sub_8094C14(); + *gGameOptions = gUnknown_203B25C->newOptions; + SetWindowBGColor(); sub_8099690(0); sub_801DD6C(1); break; diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index a97c91950..3f08dd395 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -10,10 +10,10 @@ #include "dungeon_util.h" #include "pokemon.h" #include "weather.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "text_util.h" -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; struct unkStruct_80F520C { @@ -240,7 +240,7 @@ void sub_806A1E8(struct DungeonEntity *pokemon) entityData = pokemon->entityData; bVar3 = (!entityData->isEnemy); } - if (gUnknown_203B46C->unk1 == '\0') { + if (gGameOptions->FarOffPals == '\0') { bVar3 = FALSE; } if (bVar3 && (sub_8045888(pokemon) == '\0')) { diff --git a/src/dungeon_music.c b/src/dungeon_music.c index dc09c189e..347463bde 100644 --- a/src/dungeon_music.c +++ b/src/dungeon_music.c @@ -28,7 +28,7 @@ extern void sub_80709C8(u8 *buffer, struct DungeonEntityData *entityData); void FadeOutAllMusic(u16); void xxx_call_stop_bgm(void); -void sub_8083AB0(s16 param_0, struct DungeonEntity * target, struct DungeonEntity * enity) +void sub_8083AB0(s16 param_0, struct DungeonEntity * target, struct DungeonEntity * entity) { u8 *defPtr; u8 *attackPtr; @@ -46,7 +46,7 @@ void sub_8083AB0(s16 param_0, struct DungeonEntity * target, struct DungeonEntit if ((EntityExists(target)) && (GetEntityType(target) == ENTITY_POKEMON)) { targetEntityData = target->entityData; } - entityData = enity->entityData; + entityData = entity->entityData; if (targetEntityData != NULL) { sub_80709C8(buffer, targetEntityData); CopyStringtoBuffer(temp->buffer1, buffer); @@ -188,7 +188,7 @@ void sub_8083D88(void) PlayFanfareSE(0xCC, 0x100); } -void sub_8083D98(void) +void PlayDungeonFailBGM(void) { DungeonStartNewBGM(MUS_DUNGEON_FAIL); gDungeonGlobalData->unk66F = 0; @@ -197,7 +197,7 @@ void sub_8083D98(void) gDungeonGlobalData->unk66A = 999; } -void sub_8083DE0(void) +void PlayDungeonCompleteBGM(void) { DungeonStartNewBGM(MUS_DUNGEON_COMPLETE); gDungeonGlobalData->unk66F = 0; diff --git a/src/game_options.c b/src/game_options.c index cfb95b7a0..4c4d2c223 100644 --- a/src/game_options.c +++ b/src/game_options.c @@ -1,11 +1,11 @@ #include "global.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "code_8092334.h" -struct unkStruct_8109954 +struct WindowBG { // size: 0x10 - u32 unk0[4]; + u32 hexBG[4]; }; struct unkStruct_8094CB0 @@ -14,54 +14,54 @@ struct unkStruct_8094CB0 s16 unk2; }; -extern struct unkStruct_8109954 gUnknown_8109954; +extern struct WindowBG gWindowBGColors; -extern struct UnkSaveStruct1 *gUnknown_203B46C; -extern struct UnkSaveStruct1 gUnknown_2038C70; -extern void sub_8094C14(void); +extern struct GameOptions *gGameOptions; +extern struct GameOptions gUnknown_2038C70; +extern void SetWindowBGColor(void); extern void sub_80099F0(u32); void LoadGameOptions(void) { - gUnknown_203B46C = &gUnknown_2038C70; + gGameOptions = &gUnknown_2038C70; } -struct UnkSaveStruct1 * GetGameOptions(void) +struct GameOptions * GetGameOptions(void) { return &gUnknown_2038C70; } -void InitializeGameOptions(u8 r0) +void InitializeGameOptions(bool8 initializeGender) { - gUnknown_203B46C->unk8 = 0; - if(r0 != 0) + gGameOptions->windowColor = WINDOW_COLOR_BLUE; + if(initializeGender) { - gUnknown_203B46C->playerGender = 0; + gGameOptions->playerGender = MALE; } - gUnknown_203B46C->unk9 = 0; - gUnknown_203B46C->unkA = 0; - gUnknown_203B46C->unk0 = 0; - gUnknown_203B46C->unk1 = 1; - gUnknown_203B46C->unk2 = 1; - gUnknown_203B46C->unk3 = 1; - gUnknown_203B46C->unk4 = 1; - gUnknown_203B46C->unkC = 0; - sub_8094C14(); + gGameOptions->unk9 = 0; + gGameOptions->unkA = 0; + gGameOptions->dungeonSpeed = DUNGEON_SPEED_SLOW; + gGameOptions->FarOffPals = FAROFFPALS_LOCK; + gGameOptions->damageTurn = TRUE; + gGameOptions->gridEnable = TRUE; + gGameOptions->mapOption = MAP_OPTION_CLEAR; + gGameOptions->unkC = 0; + SetWindowBGColor(); } -bool32 GameOptionsNotChange(struct UnkSaveStruct1 *r0) +bool8 GameOptionsNotChange(struct GameOptions *r0) { // NOTE: had to nest to match - if(gUnknown_203B46C->unk8 == r0->unk8) - if(gUnknown_203B46C->unk9 == r0->unk9) - if(gUnknown_203B46C->unkA == r0->unkA) - if(gUnknown_203B46C->playerGender == r0->playerGender) - if(gUnknown_203B46C->unk0 == r0->unk0) - if(gUnknown_203B46C->unk1 == r0->unk1) - if(gUnknown_203B46C->unk2 == r0->unk2) - if(gUnknown_203B46C->unk3 == r0->unk3) - if(gUnknown_203B46C->unk4 == r0->unk4) - if(gUnknown_203B46C->unkC == r0->unkC) + if(gGameOptions->windowColor == r0->windowColor) + if(gGameOptions->unk9 == r0->unk9) + if(gGameOptions->unkA == r0->unkA) + if(gGameOptions->playerGender == r0->playerGender) + if(gGameOptions->dungeonSpeed == r0->dungeonSpeed) + if(gGameOptions->FarOffPals == r0->FarOffPals) + if(gGameOptions->damageTurn == r0->damageTurn) + if(gGameOptions->gridEnable == r0->gridEnable) + if(gGameOptions->mapOption == r0->mapOption) + if(gGameOptions->unkC == r0->unkC) return TRUE; return FALSE; } @@ -76,9 +76,9 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) neg_1 = -1; zero = 0; - SaveIntegerBits(param_1, &gUnknown_203B46C->unk8, 2); + SaveIntegerBits(param_1, &gGameOptions->windowColor, 2); - if(gUnknown_203B46C->unk9 != 0) + if(gGameOptions->unk9 != 0) { puVar2 = &neg_1; } @@ -88,7 +88,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->unkA != 0) + if(gGameOptions->unkA != 0) { puVar2 = &neg_1; } @@ -98,7 +98,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->playerGender != 0) + if(gGameOptions->playerGender != MALE) { puVar2 = &neg_1; } @@ -108,7 +108,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->unk0 != 0) + if(gGameOptions->dungeonSpeed != DUNGEON_SPEED_SLOW) { puVar2 = &neg_1; } @@ -118,7 +118,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->unk1 != 0) + if(gGameOptions->FarOffPals != FAROFFPALS_SELF) { puVar2 = &neg_1; } @@ -128,7 +128,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->unk2 != 0) + if(gGameOptions->damageTurn) { puVar2 = &neg_1; } @@ -138,7 +138,7 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - if(gUnknown_203B46C->unk3 != 0) + if(gGameOptions->gridEnable) { puVar2 = &neg_1; } @@ -148,89 +148,89 @@ void WriteGameOptions(struct unkStruct_8094924 *param_1) } SaveIntegerBits(param_1, puVar2, 1); - SaveIntegerBits(param_1, &gUnknown_203B46C->unk4, 3); - SaveIntegerBits(param_1, &gUnknown_203B46C->unkC, 2); + SaveIntegerBits(param_1, &gGameOptions->mapOption, NUM_GBA_MAP_OPTIONS); + SaveIntegerBits(param_1, &gGameOptions->unkC, 2); } void ReadGameOptions(struct unkStruct_8094924 *param_1) { u8 byteArray[4]; RestoreIntegerBits(param_1, byteArray, 2); - gUnknown_203B46C->unk8 = byteArray[0] & 3; + gGameOptions->windowColor = byteArray[0] & NUM_WINDOW_COLORS; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unk9 = byteArray[0] & 1; + gGameOptions->unk9 = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unkA = byteArray[0] & 1; + gGameOptions->unkA = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->playerGender = byteArray[0] & 1; + gGameOptions->playerGender = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unk0 = byteArray[0] & 1; + gGameOptions->dungeonSpeed = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unk1 = byteArray[0] & 1; + gGameOptions->FarOffPals = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unk2 = byteArray[0] & 1; + gGameOptions->damageTurn = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 1); - gUnknown_203B46C->unk3 = byteArray[0] & 1; + gGameOptions->gridEnable = byteArray[0] & 1; RestoreIntegerBits(param_1, byteArray, 3); - gUnknown_203B46C->unk4 = byteArray[0] & 7; + gGameOptions->mapOption = byteArray[0] & NUM_DS_MAP_OPTIONS; RestoreIntegerBits(param_1, byteArray, 2); - gUnknown_203B46C->unkC = byteArray[0] & 3; + gGameOptions->unkC = byteArray[0] & 3; - sub_8094C14(); + SetWindowBGColor(); } -void sub_8094C14(void) +void SetWindowBGColor(void) { - struct unkStruct_8109954 temp; + struct WindowBG temp; - temp = gUnknown_8109954; + temp = gWindowBGColors; - sub_80099F0(temp.unk0[gUnknown_203B46C->unk8 & 3]); + sub_80099F0(temp.hexBG[gGameOptions->windowColor & NUM_WINDOW_COLORS]); } -u32 sub_8094C48(void) +bool8 sub_8094C48(void) { - switch(gUnknown_203B46C->unk4) + switch(gGameOptions->mapOption) { default: - return 1; - case 0: - case 3: - return 0; + return TRUE; + case TOP_TEAM_DATA_NO_BOTTOM: + case TOP_MESSAGE_LOG_NO_BOTTOM: + return FALSE; } } -u32 sub_8094C68(void) +bool8 DoesNotHaveShadedMap(void) { - switch(gUnknown_203B46C->unk4) + switch(gGameOptions->mapOption) { default: - return 1; - case 2: - case 5: - return 0; + return TRUE; + case TOP_TEAM_DATA_SHADED_MAP_BOTTOM: + case TOP_MESSAGE_LOG_SHADED_MAP_BOTTOM: + return FALSE; } } void sub_8094C88(void) { - if(gUnknown_203B46C->unk4 < 3) - gUnknown_203B46C->unk4 = 1; + if(gGameOptions->mapOption < 3) + gGameOptions->mapOption = 1; else { - if((u8)(gUnknown_203B46C->unk4 - 3) > 2) + if((u8)(gGameOptions->mapOption - 3) > 2) return; else - gUnknown_203B46C->unk4 = 4; + gGameOptions->mapOption = 4; } } @@ -275,7 +275,7 @@ u32 sub_8094D10(void) return 0; } -u32 sub_8094D14(void) +u8 sub_8094D14(void) { return 0; } diff --git a/src/main_menu.c b/src/main_menu.c index f2c65a80b..af37d4408 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -62,7 +62,7 @@ EWRAM_DATA struct unkStruct_203B34C *gUnknown_203B34C; EWRAM_DATA u32 gUnknown_203B350; EWRAM_DATA u32 gUnknown_203B354; // unused everywhere else except here.. -extern void sub_8094C14(void); +extern void SetWindowBGColor(void); extern void sub_8099690(u32); extern void sub_8036FDC(s32); extern void CreateWonderMailMenu(void); @@ -429,7 +429,7 @@ void SetUpMenu(void) if (gMainMenu->currMenu != gMainMenu->nextMenu) { switch(gMainMenu->nextMenu) { case MENU_MAIN_SCREEN: - sub_8094C14(); + SetWindowBGColor(); sub_8099690(0); DrawMainMenu(); break; diff --git a/src/personality_test.c b/src/personality_test.c index 8c4cac8cf..7c7240d56 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -7,7 +7,7 @@ #include "input.h" #include "save.h" #include "memory.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "text.h" #include "text_util.h" #include "menu.h" @@ -73,7 +73,7 @@ extern void AddMenuCursorSprite(struct UnkInputStruct **r0); extern void xxx_call_draw_string(u32 x, u32 y, const char *text, u32, u32); extern u32 sub_80095E4(s16, u32); -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; extern const char gStarterReveal[]; @@ -596,12 +596,12 @@ void SetPlayerGender(void) if (sub_80144A4(&gender) == 0) { if (gender == MALE) { gPersonalityTestTracker->playerGender = MALE; - gUnknown_203B46C->playerGender = MALE; + gGameOptions->playerGender = MALE; } else { gPersonalityTestTracker->playerGender = FEMALE; - gUnknown_203B46C->playerGender = FEMALE; + gGameOptions->playerGender = FEMALE; } sub_8099690(0); gPersonalityTestTracker->TestState = PERSONALITY_REVEAL; diff --git a/src/rescue_password_menu_1.c b/src/rescue_password_menu_1.c index 10585896b..57fc10dd4 100644 --- a/src/rescue_password_menu_1.c +++ b/src/rescue_password_menu_1.c @@ -2,7 +2,6 @@ #include "memory.h" #include "input.h" #include "item.h" -#include "sub_8095228.h" #include "text.h" #include "rescue_password_menu.h" diff --git a/src/save.c b/src/save.c index 964b77d87..6e602636f 100644 --- a/src/save.c +++ b/src/save.c @@ -8,11 +8,13 @@ #include "save.h" #include "team_inventory.h" #include "exclusive_pokemon.h" +#include "game_options.h" EWRAM_DATA u32 gUnknown_203B17C; EWRAM_DATA char *gUnknown_203B180; EWRAM_DATA struct UnkStruct_203B184 *gUnknown_203B184; +extern struct GameOptions *gGameOptions; struct unk_struct { @@ -74,7 +76,6 @@ EWRAM_DATA struct QuickSaveWrite *gQuickSaveWrite; extern s32 gUnknown_202DE28; extern bool8 *gFriendAreas; -extern u32 gUnknown_203B46C; extern u8 *gUnknown_203B480; extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; @@ -168,8 +169,6 @@ extern u32 sub_8097D60(u8 *, u32); extern u32 sub_8097D98(void* a, s32 b); extern void sub_80993E4(); extern void sub_800135C(void); -extern u32 GetGameOptions(void); -extern void InitializeGameOptions(u8 r0); extern u8 *sub_80950F8(void); extern void sub_80958E4(u32 *a, u32 b); extern u32 sub_80958F8(void); @@ -603,7 +602,7 @@ void InitializePlayerData(void) sub_8095118(); sub_8095900(); sub_80974E8(); - InitializeGameOptions(1); + InitializeGameOptions(TRUE); InitializeExclusivePokemon(); } @@ -630,7 +629,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0) gUnknown_203B494 = r0->unk20; gUnknown_203B498 = r0->ExclusivePokemon; gFriendAreas = r0->BoughtFriendAreas; - gUnknown_203B46C = r0->gameOptions; + gGameOptions = r0->gameOptions; gPlayTimeRef = r0->playTime; return; } @@ -645,7 +644,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0) gUnknown_203B494 = sub_8097680(); gUnknown_203B498 = GetExclusivePokemon(); gFriendAreas = GetBoughtFriendAreas(); - gUnknown_203B46C = GetGameOptions(); + gGameOptions = GetGameOptions(); gPlayTimeRef = GetPlayTime(); } diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index a46727753..316a79d46 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -8,7 +8,7 @@ #include "text.h" #include "menu.h" #include "save.h" -#include "gUnknown_203B46C.h" +#include "game_options.h" #include "wonder_mail.h" #include "code_800D090.h" #include "code_8094F88.h" @@ -93,7 +93,7 @@ struct unkStruct_203B2D8 }; extern struct unkStruct_203B2D8 *gUnknown_203B2D8; -extern struct UnkSaveStruct1 *gUnknown_203B46C; +extern struct GameOptions *gGameOptions; extern s32 GetNumPKMNNews(void); @@ -824,7 +824,7 @@ void sub_802BC08(void) void sub_802BC7C(void) { PrintPokeNameToBuffer(gAvailablePokemonNames, sub_808D3BC()); - if(gUnknown_203B46C->playerGender == FEMALE) + if(gGameOptions->playerGender == FEMALE) { strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC4C); // She } diff --git a/sym_ewram2.txt b/sym_ewram2.txt index d5b428e25..0762db5ac 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -596,7 +596,7 @@ gRescueTeamInfoRef = .; /* 203B464 */ gFriendAreas = .; /* 203B468 */ . += 0x4; -gUnknown_203B46C = .; /* 203B46C */ +gGameOptions = .; /* 203B46C */ . += 0x4; gUnknown_203B470 = .; /* 203B470 */