label/document game options

This commit is contained in:
Seth Barberee 2022-12-25 11:29:29 -08:00
parent 5aa19fac49
commit 33f621ea79
28 changed files with 225 additions and 187 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

69
include/game_options.h Normal file
View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -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);

View File

@ -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();

View File

@ -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;

View File

@ -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')) {

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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"

View File

@ -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();
}

View File

@ -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
}

View File

@ -596,7 +596,7 @@ gRescueTeamInfoRef = .; /* 203B464 */
gFriendAreas = .; /* 203B468 */
. += 0x4;
gUnknown_203B46C = .; /* 203B46C */
gGameOptions = .; /* 203B46C */
. += 0x4;
gUnknown_203B470 = .; /* 203B470 */