summaryrefslogtreecommitdiff
path: root/src/load_screen.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-05-15 16:59:55 -0700
committerGitHub <noreply@github.com>2021-05-15 18:59:55 -0500
commitf402e46cd3c8b7236673d6edbae77903a7cc0618 (patch)
tree37a19f3ab35a73c29d4d6da565741beaf7bb547f /src/load_screen.c
parentf65dee5a143bd543c74c010d7252eb76893ee243 (diff)
Sese's April/May Dump (#37)
* splitting lots of pokemon square and labeling lots of other things * actually commit this stuff * more moving data and things * more screen work * split out some pokemon dungeon data * lots of data work * push more data work * split kecleon, decomp another kanghaskhan func, and try to doc UpdateBGControl more * lots of item work * label more item things * subtype -> category and doc types/category
Diffstat (limited to 'src/load_screen.c')
-rw-r--r--src/load_screen.c720
1 files changed, 711 insertions, 9 deletions
diff --git a/src/load_screen.c b/src/load_screen.c
index d79a420..e49d5a9 100644
--- a/src/load_screen.c
+++ b/src/load_screen.c
@@ -1,22 +1,724 @@
#include "global.h"
+#include "input.h"
+#include "main_menu.h"
+#include "play_time.h"
+#include "file_system.h"
-s32 sub_8011FA8(void);
-s32 sub_8095324(u32);
-s32 sub_8011C1C(void);
+extern struct PlayTimeStruct *gPlayTimeRef;
+extern struct PlayTimeStruct gPlayTime;
-bool8 sub_8039844(void)
+extern const struct FileArchive gTitleMenuFileArchive;
+
+struct unkStruct_808D33C
+{
+ u8 fill0[0x4C];
+ u8 unk4C;
+};
+
+struct unkStruct_203B484
+{
+ u8 fill0[0xC];
+ s16 unkC;
+ u8 fillE[0x50 - 0xE];
+ u32 unk50;
+};
+
+struct unkData
+{
+ u8 unk0[24];
+};
+
+struct unkStruct_203B374
+{
+ // size: 0x27c
+ u32 currMenu;
+ u32 unk4;
+ u8 fill8[0x54 - 8];
+ u32 unk54;
+ u8 fill58[0xA4 - 0x58];
+ u32 unkA4;
+ u8 fillA8[0x144 - 0xA8];
+ struct unkData unk144[4];
+ /* 0x1A4 */ u8 formattedTeamName[0x24];
+ /* 0x1C8 */ u8 formattedPlayerName[0x24];
+ /* 0x1EC */ u8 formattedLocation[0x24];
+ /* 0x210 */ u8 formattedPlayTime[0x24];
+ /* 0x234 */ u8 formattedAdventures[0x24];
+ /* 0x258 */ u8 formattedHelperInfo[0x24];
+};
+
+extern struct unkStruct_203B374 *gUnknown_203B374;
+extern u32 gUnknown_203B378;
+extern u32 gUnknown_203B3B8[];
+extern u32 gUnknown_203B388[];
+extern struct unkStruct_203B484 *gUnknown_203B484;
+
+extern struct unkData gUnknown_80E75F8;
+extern struct unkData gUnknown_80E7610;
+extern struct unkData gUnknown_80E762C;
+extern u32 gUnknown_80E7644;
+extern u32 gUnknown_80E7684;
+extern u32 gUnknown_80E76B8;
+extern u32 gUnknown_80E76E8;
+extern u32 gUnknown_80E7730;
+extern struct unkData gUnknown_80E7784;
+extern u32 gUnknown_80E779C;
+extern u8 gUnknown_80E77BC;
+extern u8 gUnknown_80E77C4;
+extern u8 gUnknown_80E77CC;
+extern u8 gUnknown_80E77D8;
+extern u8 gUnknown_80E77E4;
+extern u8 gUnknown_80E77F0;
+extern u8 gUnknown_80E77F8;
+extern u8 gUnknown_80E7804;
+extern u8 gUnknown_80E7808;
+extern u8 gUnknown_80E780C;
+extern u8 gUnknown_80E7824;
+extern u8 gUnknown_80E7838;
+extern u8 gUnknown_80E7848;
+extern u8 gUnknown_80E784C;
+extern u8 gUnknown_80E7854;
+extern const char gUnknown_80E785C[]; // clmkpat
+
+
+extern void *MemoryAlloc(u32, u32);
+extern void MemoryFill8(u8 *, u32, u32);
+extern void MemoryFree(void *);
+u8 IsQuickSave(void);
+void DrawLoadScreenText(void);
+extern void sub_8035CF4(u32 *, u32, u32);
+extern void sub_800641C(struct unkData *, u32, u32);
+extern void SetMenuItems(u32 *, struct unkData *, u32, struct unkData *, u32 *, u32, u32, u32);
+extern u8 sub_8012FD8(u32 *);
+extern void sub_8013114(u32 *, u32 *);
+extern void sub_8095240(u32);
+extern void sub_80122A8(void);
+
+extern void sub_80920D8(u8 *);
+extern struct unkStruct_808D33C *sub_808D33C(void);
+extern u8 sub_80023E4(u32);
+extern u8 *sub_8098FB4();
+extern void sub_800D158(u8 *buffer, u8 *text, ...);
+extern s32 sub_8011C1C(void);
+extern u8 *sub_809769C(void);
+extern u32 sub_8097778(void);
+extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
+extern void sub_8090228(u8 *, u8 *);
+extern void sub_80922B4(u8 *, u8 *, u32);
+extern s32 sub_8095324(u32);
+extern u32 sub_8001658(u32, u32);
+void sub_80397B4(void);
+extern void sub_80073E0(u32);
+extern s32 sub_8011FA8(void);
+
+extern void sub_8008C54(u32);
+extern void sub_80073B8(u32);
+extern void sub_808D930(u8 *, s16);
+extern void xxx_format_string(u8 *, u8 *, u8 *, u32);
+
+extern void SetBGPaletteBufferColorArray(s32, s32);
+extern void sub_8007E20(s32, s32, s32, u32, u32, s32, u32);
+
+
+void CreateLoadScreen(u32 currMenu)
+{
+ int iVar8;
+
+ if (gUnknown_203B374 == NULL) {
+ gUnknown_203B374 = MemoryAlloc(sizeof(struct unkStruct_203B374),8);
+ MemoryFill8((u8 *)gUnknown_203B374,0,sizeof(struct unkStruct_203B374));
+ }
+ gUnknown_203B374->currMenu = currMenu;
+ for(iVar8 = 0; iVar8 < 4; iVar8++){
+ gUnknown_203B374->unk144[iVar8] = gUnknown_80E75F8;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B374->unk144,1,1);
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,0,&gUnknown_80E7610,&gUnknown_203B378,0,6,0);
+ switch(gUnknown_203B374->currMenu){
+ case MENU_CONTINUE:
+ if (IsQuickSave())
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7644,0,6,0);
+ else
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E7684,0,6,0);
+ break;
+ case MENU_AWAITING_RESCUE:
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76B8,0,6,0);
+ break;
+ case MENU_DELETE_SAVE_PROMPT:
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C,&gUnknown_80E76E8,0,6,0);
+ break;
+ case MENU_DELETE_SAVE_CONFIRM:
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,1,&gUnknown_80E762C, &gUnknown_80E7730,0,6,0);
+ break;
+ }
+ SetMenuItems(&gUnknown_203B374->unk4,gUnknown_203B374->unk144,2,&gUnknown_80E7784,&gUnknown_80E779C,1,2,0);
+ sub_8035CF4(&gUnknown_203B374->unk4,0,0);
+ sub_8035CF4(&gUnknown_203B374->unk4,1,0);
+ sub_8035CF4(&gUnknown_203B374->unk4,2,1);
+ DrawLoadScreenText();
+}
+
+void CleanLoadScreen(void)
+{
+ ResetUnusedInputStruct();
+ sub_800641C(NULL, 1, 1);
+ if(gUnknown_203B374 != NULL)
+ {
+ MemoryFree(gUnknown_203B374);
+ gUnknown_203B374 = NULL;
+ }
+}
+
+u32 UpdateLoadScreenMenu(void)
+{
+ u32 nextMenu;
+ u32 menuAction;
+
+ nextMenu = MENU_NO_SCREEN_CHANGE;
+ menuAction = 4;
+ sub_8012FD8(&gUnknown_203B374->unk54);
+ if (sub_8012FD8(&gUnknown_203B374->unkA4) == '\0') {
+ sub_8013114(&gUnknown_203B374->unkA4,&menuAction);
+ }
+
+ switch(menuAction)
+ {
+ case 3:
+ case 2:
+ nextMenu = MENU_MAIN_SCREEN;
+ break;
+ case 1:
+ switch(gUnknown_203B374->currMenu)
+ {
+ case MENU_CONTINUE:
+ nextMenu = 2; // MENU_???
+ break;
+ case MENU_AWAITING_RESCUE:
+ sub_8095240(0);
+ nextMenu = 4; // MENU_???
+ break;
+ case MENU_DELETE_SAVE_PROMPT:
+ nextMenu = MENU_DELETE_SAVE_CONFIRM;
+ break;
+ case MENU_DELETE_SAVE_CONFIRM:
+ sub_80122A8();
+ nextMenu = MENU_DELETE_SAVE;
+ break;
+ }
+ break;
+ case 5:
+ default:
+ break;
+ }
+ return nextMenu;
+}
+
+#ifdef NONMATCHING
+void DrawLoadScreenText(void)
+{
+ int iVar2;
+ u32 numAdventures;
+ u8 auStack356 [100];
+ u8 teamNameBuffer [40];
+ u8 playerName [80];
+ u8 nameHelper [80];
+ u8 speciesHelper [20];
+ u32 hours;
+ u32 minutes;
+ u32 seconds;
+ struct unkStruct_808D33C *playerInfo;
+
+ iVar2 = sub_8011FA8();
+ sub_8008C54(0);
+ sub_80073B8(0);
+ xxx_call_draw_string(8,0, &gUnknown_80E77BC,0,0); // Team:
+ xxx_call_draw_string(8,12,&gUnknown_80E77C4,0,0); // Name:
+ xxx_call_draw_string(8,24,&gUnknown_80E77CC,0,0); // Location:
+ xxx_call_draw_string(8,36,&gUnknown_80E77D8,0,0); // Play time:
+ xxx_call_draw_string(8,48,&gUnknown_80E77E4,0,0); // Adventures:
+ xxx_call_draw_string(8,60,&gUnknown_80E77F0,0,0); // Helper:
+
+ // Draw Team Name
+ if (sub_80023E4(0) != '\0') {
+ sub_80920D8(teamNameBuffer);
+ }
+ else {
+ strcpy(teamNameBuffer,&gUnknown_80E77F8);
+ }
+ sub_800D158(gUnknown_203B374->formattedTeamName,&gUnknown_80E7804,teamNameBuffer);
+ xxx_call_draw_string(64,0,gUnknown_203B374->formattedTeamName,0,0);
+
+ // Draw Player Name
+ playerInfo = sub_808D33C();
+ if (playerInfo == NULL) {
+ sub_80922B4(playerName,&gUnknown_80E7808,10);
+ }
+ else {
+ sub_80922B4(playerName,&playerInfo->unk4C,10);
+ }
+ sub_800D158(gUnknown_203B374->formattedPlayerName,&gUnknown_80E7804,playerName);
+ xxx_call_draw_string(64,12,gUnknown_203B374->formattedPlayerName,0,0);
+
+ // Draw Location Info
+ // TODO: fix these branches.. correct logic but branching isn't right
+ if ((sub_8095324(1) != 0) || (sub_8095324(7) != 0)) {
+ if (iVar2 == 0xf1207) {
+ sub_8090228(gUnknown_203B374->formattedLocation,sub_809769C());
+ }
+ else {
+ sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ }
+ }
+ else {
+ switch(sub_8011C1C())
+ {
+ default:
+ sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E7824); // Location unknown
+ break;
+ case 1:
+ switch(sub_8001658(0,24))
+ {
+ default:
+ sub_800D158(auStack356,&gUnknown_80E7804,sub_8098FB4());
+ xxx_format_string(auStack356,gUnknown_203B374->formattedLocation,gUnknown_203B374->formattedPlayTime,0);
+ break;
+ case 0x7:
+ case 0xB:
+ sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ break;
+ }
+ break;
+ case 2:
+ if (iVar2 == 0xf1207)
+ {
+ sub_8090228(gUnknown_203B374->formattedLocation,sub_809769C());
+ } else {
+ sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ }
+ break;
+ }
+ }
+ xxx_call_draw_string(64,24,gUnknown_203B374->formattedLocation,0,0);
+
+ // Draw Play Time
+ DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds);
+ sub_800D158(gUnknown_203B374->formattedPlayTime,&gUnknown_80E7838,hours,minutes,seconds);
+ xxx_call_draw_string(64,36,gUnknown_203B374->formattedPlayTime,0,0);
+
+ // Draw Adventures Info
+ numAdventures = sub_8097778();
+ sub_800D158(gUnknown_203B374->formattedAdventures,&gUnknown_80E7848,numAdventures); // %d
+ xxx_call_draw_string(64,48,gUnknown_203B374->formattedAdventures,0,0);
+
+ // Draw Helper Info
+ if ((iVar2 == 0xf1207) && (gUnknown_203B484->unkC != 0)) {
+ sub_808D930(speciesHelper,gUnknown_203B484->unkC);
+ // TODO very hacky match here
+ sub_80922B4(nameHelper,(u8 *)(&gUnknown_203B484 + 0x14),10);
+ sub_800D158(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E784C,nameHelper,speciesHelper); // %s (%s)
+ }
+ else {
+ sub_800D158(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E7854); // -----
+ }
+ xxx_call_draw_string(64,60,gUnknown_203B374->formattedHelperInfo,0,0);
+
+ sub_80397B4(); // Draw event icons??
+ sub_80073E0(0);
+}
+#else
+NAKED
+void DrawLoadScreenText(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x150\n"
+ "\tbl sub_8011FA8\n"
+ "\tmov r8, r0\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_8008C54\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_80073B8\n"
+ "\tldr r2, _0803952C\n"
+ "\tmovs r4, 0\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r2, _08039530\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0xC\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r2, _08039534\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0x18\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r2, _08039538\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0x24\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r2, _0803953C\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0x30\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r2, _08039540\n"
+ "\tstr r4, [sp]\n"
+ "\tmovs r0, 0x8\n"
+ "\tmovs r1, 0x3C\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_80023E4\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08039544\n"
+ "\tadd r4, sp, 0x68\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl sub_80920D8\n"
+ "\tadds r2, r4, 0\n"
+ "\tb _0803954E\n"
+ "\t.align 2, 0\n"
+"_0803952C: .4byte gUnknown_80E77BC\n"
+"_08039530: .4byte gUnknown_80E77C4\n"
+"_08039534: .4byte gUnknown_80E77CC\n"
+"_08039538: .4byte gUnknown_80E77D8\n"
+"_0803953C: .4byte gUnknown_80E77E4\n"
+"_08039540: .4byte gUnknown_80E77F0\n"
+"_08039544:\n"
+ "\tldr r1, _08039588\n"
+ "\tadd r0, sp, 0x68\n"
+ "\tbl strcpy\n"
+ "\tadd r2, sp, 0x68\n"
+"_0803954E:\n"
+ "\tldr r5, _0803958C\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r4, 0xD2\n"
+ "\tlsls r4, 1\n"
+ "\tadds r0, r4\n"
+ "\tldr r1, _08039590\n"
+ "\tbl sub_800D158\n"
+ "\tldr r2, [r5]\n"
+ "\tadds r2, r4\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tbl sub_808D33C\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08039598\n"
+ "\tadd r4, sp, 0x90\n"
+ "\tldr r1, _08039594\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r2, 0xA\n"
+ "\tbl sub_80922B4\n"
+ "\tb _080395A6\n"
+ "\t.align 2, 0\n"
+"_08039588: .4byte gUnknown_80E77F8\n"
+"_0803958C: .4byte gUnknown_203B374\n"
+"_08039590: .4byte gUnknown_80E7804\n"
+"_08039594: .4byte gUnknown_80E7808\n"
+"_08039598:\n"
+ "\tadd r4, sp, 0x90\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r1, 0x4C\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r2, 0xA\n"
+ "\tbl sub_80922B4\n"
+"_080395A6:\n"
+ "\tadds r2, r4, 0\n"
+ "\tldr r5, _080395F0\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r4, 0xE4\n"
+ "\tlsls r4, 1\n"
+ "\tadds r0, r4\n"
+ "\tldr r6, _080395F4\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_800D158\n"
+ "\tldr r2, [r5]\n"
+ "\tadds r2, r4\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0xC\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_8095324\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080395E0\n"
+ "\tmovs r0, 0x7\n"
+ "\tbl sub_8095324\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08039606\n"
+"_080395E0:\n"
+ "\tldr r0, _080395F8\n"
+ "\tcmp r8, r0\n"
+ "\tbne _080395FC\n"
+ "\tldr r4, [r5]\n"
+ "\tmovs r0, 0xF6\n"
+ "\tlsls r0, 1\n"
+ "\tadds r4, r0\n"
+ "\tb _08039676\n"
+ "\t.align 2, 0\n"
+"_080395F0: .4byte gUnknown_203B374\n"
+"_080395F4: .4byte gUnknown_80E7804\n"
+"_080395F8: .4byte 0x000f1207\n"
+"_080395FC:\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r1, 0xF6\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tb _08039690\n"
+"_08039606:\n"
+ "\tbl sub_8011C1C\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _08039624\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _08039668\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r2, 0xF6\n"
+ "\tlsls r2, 1\n"
+ "\tadds r0, r2\n"
+ "\tldr r1, _08039620\n"
+ "\tb _08039692\n"
+ "\t.align 2, 0\n"
+"_08039620: .4byte gUnknown_80E7824\n"
+"_08039624:\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0x18\n"
+ "\tbl sub_8001658\n"
+ "\tcmp r0, 0x7\n"
+ "\tbeq _08039658\n"
+ "\tcmp r0, 0xB\n"
+ "\tbeq _08039658\n"
+ "\tbl sub_8098FB4\n"
+ "\tadds r2, r0, 0\n"
+ "\tadd r0, sp, 0x4\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_800D158\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r3, 0xF6\n"
+ "\tlsls r3, 1\n"
+ "\tadds r1, r0, r3\n"
+ "\tadds r3, 0x24\n"
+ "\tadds r2, r0, r3\n"
+ "\tadd r0, sp, 0x4\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_format_string\n"
+ "\tb _08039696\n"
+"_08039658:\n"
+ "\tldr r0, _08039664\n"
+ "\tldr r0, [r0]\n"
+ "\tmovs r1, 0xF6\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tb _08039690\n"
+ "\t.align 2, 0\n"
+"_08039664: .4byte gUnknown_203B374\n"
+"_08039668:\n"
+ "\tldr r0, _08039684\n"
+ "\tcmp r8, r0\n"
+ "\tbne _08039688\n"
+ "\tldr r4, [r5]\n"
+ "\tmovs r2, 0xF6\n"
+ "\tlsls r2, 1\n"
+ "\tadds r4, r2\n"
+"_08039676:\n"
+ "\tbl sub_809769C\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl sub_8090228\n"
+ "\tb _08039696\n"
+ "\t.align 2, 0\n"
+"_08039684: .4byte 0x000f1207\n"
+"_08039688:\n"
+ "\tldr r0, [r5]\n"
+ "\tmovs r3, 0xF6\n"
+ "\tlsls r3, 1\n"
+ "\tadds r0, r3\n"
+"_08039690:\n"
+ "\tldr r1, _0803974C\n"
+"_08039692:\n"
+ "\tbl sub_800D158\n"
+"_08039696:\n"
+ "\tldr r7, _08039750\n"
+ "\tldr r2, [r7]\n"
+ "\tmovs r0, 0xF6\n"
+ "\tlsls r0, 1\n"
+ "\tadds r2, r0\n"
+ "\tmovs r6, 0\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0x18\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r0, _08039754\n"
+ "\tldr r0, [r0]\n"
+ "\tadd r1, sp, 0x144\n"
+ "\tadd r2, sp, 0x148\n"
+ "\tadd r3, sp, 0x14C\n"
+ "\tbl DeconstructPlayTime\n"
+ "\tldr r0, [r7]\n"
+ "\tmovs r5, 0x84\n"
+ "\tlsls r5, 2\n"
+ "\tadds r0, r5\n"
+ "\tldr r1, _08039758\n"
+ "\tadd r2, sp, 0x144\n"
+ "\tldr r2, [r2]\n"
+ "\tadd r3, sp, 0x148\n"
+ "\tldr r3, [r3]\n"
+ "\tadd r4, sp, 0x14C\n"
+ "\tldr r4, [r4]\n"
+ "\tstr r4, [sp]\n"
+ "\tbl sub_800D158\n"
+ "\tldr r2, [r7]\n"
+ "\tadds r2, r5\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0x24\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tbl sub_8097778\n"
+ "\tadds r2, r0, 0\n"
+ "\tldr r0, [r7]\n"
+ "\tmovs r4, 0x8D\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4\n"
+ "\tldr r1, _0803975C\n"
+ "\tbl sub_800D158\n"
+ "\tldr r2, [r7]\n"
+ "\tadds r2, r4\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0x30\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tldr r0, _08039760\n"
+ "\tcmp r8, r0\n"
+ "\tbne _0803976C\n"
+ "\tldr r0, _08039764\n"
+ "\tldr r6, [r0]\n"
+ "\tmovs r1, 0xC\n"
+ "\tldrsh r0, [r6, r1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0803976C\n"
+ "\tadd r5, sp, 0x130\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_808D930\n"
+ "\tadd r4, sp, 0xE0\n"
+ "\tadds r1, r6, 0\n"
+ "\tadds r1, 0x50\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r2, 0xA\n"
+ "\tbl sub_80922B4\n"
+ "\tldr r0, [r7]\n"
+ "\tmovs r3, 0x96\n"
+ "\tlsls r3, 2\n"
+ "\tadds r0, r3\n"
+ "\tldr r1, _08039768\n"
+ "\tadds r2, r4, 0\n"
+ "\tadds r3, r5, 0\n"
+ "\tbl sub_800D158\n"
+ "\tb _0803977C\n"
+ "\t.align 2, 0\n"
+"_0803974C: .4byte gUnknown_80E780C\n"
+"_08039750: .4byte gUnknown_203B374\n"
+"_08039754: .4byte gPlayTimeRef\n"
+"_08039758: .4byte gUnknown_80E7838\n"
+"_0803975C: .4byte gUnknown_80E7848\n"
+"_08039760: .4byte 0x000f1207\n"
+"_08039764: .4byte gUnknown_203B484\n"
+"_08039768: .4byte gUnknown_80E784C\n"
+"_0803976C:\n"
+ "\tldr r0, _080397AC\n"
+ "\tldr r0, [r0]\n"
+ "\tmovs r1, 0x96\n"
+ "\tlsls r1, 2\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, _080397B0\n"
+ "\tbl sub_800D158\n"
+"_0803977C:\n"
+ "\tldr r0, _080397AC\n"
+ "\tldr r2, [r0]\n"
+ "\tmovs r3, 0x96\n"
+ "\tlsls r3, 2\n"
+ "\tadds r2, r3\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tmovs r0, 0x40\n"
+ "\tmovs r1, 0x3C\n"
+ "\tmovs r3, 0\n"
+ "\tbl xxx_call_draw_string\n"
+ "\tbl sub_80397B4\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_80073E0\n"
+ "\tadd sp, 0x150\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+"_080397AC: .4byte gUnknown_203B374\n"
+"_080397B0: .4byte gUnknown_80E7854");
+}
+#endif
+
+// Think structure of clmkFile is like Team Rank Badges except each pic has a diff pallete
+// TODO clean up but it matches so yea
+void sub_80397B4(void)
+{
+ struct OpenedFile *clmkFile;
+ int iVar3;
+ int iVar4;
+ s32 other_arg;
+
+ clmkFile = OpenFileAndGetFileDataPtr(gUnknown_80E785C,&gTitleMenuFileArchive); // clmkpat
+
+ for(iVar3 = 0; iVar3 < 64; iVar3++)
+ {
+ SetBGPaletteBufferColorArray(iVar3 + 176,*(int *)((clmkFile->data) + 4) + iVar3 * 4);
+ }
+
+ iVar4 = 8;
+ other_arg = 0x49;
+ for(iVar3 = 0; iVar3 < 12; iVar3++)
+ {
+ if (sub_80023E4(gUnknown_203B3B8[iVar3]) != 0) {
+ sub_8007E20(0,iVar4,other_arg,0x10,0x10,*(int *)(clmkFile->data) + iVar3 * 0x80,
+ gUnknown_203B388[iVar3]);
+ iVar4 += 16;
+ }
+ }
+ CloseFile(clmkFile);
+}
+
+bool8 IsQuickSave(void)
{
int iVar1;
- bool8 return_var;
+ bool8 isQuicksave;
iVar1 = sub_8011FA8();
- return_var = 0;
+ isQuicksave = FALSE;
if (sub_8095324(1) != 0 || sub_8095324(7) != 0)
{
if (iVar1 == 0xf1207)
- return_var = 1;
+ isQuicksave = TRUE;
}
else if (sub_8011C1C() == 2 && iVar1 == 0xf1207)
- return_var = 1;
- return return_var;
+ isQuicksave = TRUE;
+ return isQuicksave;
}