matching up to sub_8088D8C
This commit is contained in:
@@ -12,7 +12,7 @@ struct YesNoFuncTable
|
|||||||
};
|
};
|
||||||
|
|
||||||
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
|
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
|
||||||
bool8 sub_80BF72C(void);
|
bool32 sub_80BF72C(void);
|
||||||
bool8 sub_80BF748(void);
|
bool8 sub_80BF748(void);
|
||||||
bool8 MenuHelpers_LinkSomething(void);
|
bool8 MenuHelpers_LinkSomething(void);
|
||||||
void SetVBlankHBlankCallbacksToNull(void);
|
void SetVBlankHBlankCallbacksToNull(void);
|
||||||
|
|||||||
+1
-1
@@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80BF72C(void)
|
bool32 sub_80BF72C(void)
|
||||||
{
|
{
|
||||||
if (!MenuHelpers_LinkSomething())
|
if (!MenuHelpers_LinkSomething())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
+481
-164
@@ -39,6 +39,65 @@ enum
|
|||||||
WIN_OPTIONS
|
WIN_OPTIONS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.bg = 1,
|
||||||
|
.tilemapLeft = 2,
|
||||||
|
.tilemapTop = 3,
|
||||||
|
.width = 26,
|
||||||
|
.height = 2,
|
||||||
|
.paletteNum = 1,
|
||||||
|
.baseBlock = 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.tilemapLeft = 2,
|
||||||
|
.tilemapTop =7,
|
||||||
|
.width = 26,
|
||||||
|
.height = 12,
|
||||||
|
.paletteNum = 1,
|
||||||
|
.baseBlock = 0x36
|
||||||
|
},
|
||||||
|
DUMMY_WIN_TEMPLATE
|
||||||
|
};
|
||||||
|
static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.bg = 1,
|
||||||
|
.charBaseIndex = 1,
|
||||||
|
.mapBaseIndex = 30,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 0,
|
||||||
|
.baseTile = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.charBaseIndex = 1,
|
||||||
|
.mapBaseIndex = 31,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 1,
|
||||||
|
.baseTile = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts
|
||||||
|
static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames
|
||||||
|
{
|
||||||
|
[MENUITEM_TEXTSPEED] = gText_TextSpeed,
|
||||||
|
[MENUITEM_BATTLESCENE] = gText_BattleScene,
|
||||||
|
[MENUITEM_BATTLESTYLE] = gText_BattleStyle,
|
||||||
|
[MENUITEM_SOUND] = gText_Sound,
|
||||||
|
[MENUITEM_BUTTONMODE] = gText_ButtonMode,
|
||||||
|
[MENUITEM_FRAMETYPE] = gText_Frame,
|
||||||
|
[MENUITEM_CANCEL] = gText_OptionMenuCancel,
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
//This file's functions
|
//This file's functions
|
||||||
static void sub_808835C(void);
|
static void sub_808835C(void);
|
||||||
static void sub_8088374(void);
|
static void sub_8088374(void);
|
||||||
@@ -57,27 +116,27 @@ static void sub_8088B00(u8 taskId);
|
|||||||
static void sub_8088BD0(void);
|
static void sub_8088BD0(void);
|
||||||
static void sub_8088C0C(void);
|
static void sub_8088C0C(void);
|
||||||
static void sub_8088D8C(void);
|
static void sub_8088D8C(void);
|
||||||
static void sub_8088DE0(u8 selection);
|
static void sub_8088DE0(u16 selection);
|
||||||
|
|
||||||
extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts
|
extern const struct WindowTemplate gUnknown_83CC2B8[3];
|
||||||
extern const struct BgTemplate gUnknown_83CC2D8[];
|
extern const struct BgTemplate gUnknown_83CC2D8[2];
|
||||||
extern const u8 gUnknown_83CC360[];
|
extern const u16 gUnknown_83CC2E4[0x20];
|
||||||
extern const u16 gUnknown_83CC2E4[];
|
extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts
|
||||||
extern const struct WindowTemplate gUnknown_83CC2B8[];
|
|
||||||
extern const u8 gUnknown_83CC363[];
|
|
||||||
extern const u8 gUnknown_83CC330[];
|
|
||||||
extern const u8 gUnknown_83CC33C[];
|
|
||||||
extern const u8 gUnknown_83CC344[];
|
|
||||||
extern const u8 gUnknown_83CC34C[];
|
|
||||||
extern const u8 gUnknown_83CC354[];
|
|
||||||
extern const u8 gUnknown_8419E52[];
|
|
||||||
extern const u8 gUnknown_8419DCC[];
|
|
||||||
extern const u8* gUnknown_83CC314[MENUITEM_COUNT];
|
extern const u8* gUnknown_83CC314[MENUITEM_COUNT];
|
||||||
|
extern const u8 gUnknown_83CC330[0xC];
|
||||||
|
extern const u8 gUnknown_83CC33C[0x8];
|
||||||
|
extern const u8 gUnknown_83CC344[0x8];
|
||||||
|
extern const u8 gUnknown_83CC34C[0x8];
|
||||||
|
extern const u8 gUnknown_83CC354[0xC];
|
||||||
|
extern const u8 gUnknown_83CC360[0x3];
|
||||||
|
extern const u8 gUnknown_83CC363[0x3];
|
||||||
|
extern const u8 gUnknown_8419DCC[];
|
||||||
|
extern const u8 gUnknown_8419E52[];
|
||||||
extern const u8 gUnknown_8419E57[];
|
extern const u8 gUnknown_8419E57[];
|
||||||
|
|
||||||
struct OptionsMenu
|
struct OptionsMenu
|
||||||
{
|
{
|
||||||
/*0x00*/ u16 option[7];
|
/*0x00*/ u16 option[7]; //0,2,4,6,8,a,c
|
||||||
/*0x0E*/ u16 unkE;
|
/*0x0E*/ u16 unkE;
|
||||||
/*0x10*/ u8 state3;
|
/*0x10*/ u8 state3;
|
||||||
/*0x11*/ u8 state;
|
/*0x11*/ u8 state;
|
||||||
@@ -110,7 +169,7 @@ static void sub_8088374(void)
|
|||||||
//sub_8088388
|
//sub_8088388
|
||||||
void CB2_OptionsMenuFromStartMenu(void)
|
void CB2_OptionsMenuFromStartMenu(void)
|
||||||
{
|
{
|
||||||
int i;
|
u8 i;
|
||||||
|
|
||||||
if (gMain.savedCallback == NULL)
|
if (gMain.savedCallback == NULL)
|
||||||
gMain.savedCallback = CB2_ReturnToStartMenu;
|
gMain.savedCallback = CB2_ReturnToStartMenu;
|
||||||
@@ -126,9 +185,9 @@ void CB2_OptionsMenuFromStartMenu(void)
|
|||||||
sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode;
|
sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode;
|
||||||
sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType;
|
sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType;
|
||||||
|
|
||||||
for (i = 0; i < MENUITEM_COUNT-2; i++)
|
for (i = 0; i < MENUITEM_COUNT-1; i++)
|
||||||
{
|
{
|
||||||
if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1)
|
if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1)
|
||||||
sOptionsMenu->option[i] = 0;
|
sOptionsMenu->option[i] = 0;
|
||||||
}
|
}
|
||||||
HelpSystem_SetSomeVariable2(0xD);
|
HelpSystem_SetSomeVariable2(0xD);
|
||||||
@@ -153,55 +212,46 @@ static void sub_8088444(void)
|
|||||||
//sub_8088454
|
//sub_8088454
|
||||||
static void sub_8088454(void)
|
static void sub_8088454(void)
|
||||||
{
|
{
|
||||||
int i;
|
u8 i, state;
|
||||||
switch (sOptionsMenu->state)
|
state = sOptionsMenu->state;
|
||||||
|
switch (state)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sub_8088430();
|
sub_8088430();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sub_8088530();
|
sub_8088530();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sub_80886D4();
|
sub_80886D4();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!(sub_80886F0()));
|
if (sub_80886F0() != TRUE) //silly matching quirk
|
||||||
return;
|
return;
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
sub_8088BD0();
|
sub_8088BD0();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
sub_8088C0C();
|
sub_8088C0C();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
sub_8088D8C();
|
sub_8088D8C();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
for (i = 0; i < MENUITEM_COUNT; i++)
|
for (i = 0; i < MENUITEM_COUNT; i++)
|
||||||
sub_80889A8(i);
|
sub_80889A8(i);
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
sub_8088DE0(sOptionsMenu->unkE);
|
sub_8088DE0(sOptionsMenu->unkE);
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sub_8088680();
|
sub_8088680();
|
||||||
sOptionsMenu->state++;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sub_8088514();
|
sub_8088514();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
sOptionsMenu->state++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//sub_8088514
|
//sub_8088514
|
||||||
@@ -222,7 +272,7 @@ static void sub_8088530(void)
|
|||||||
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
|
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8)
|
InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8)
|
||||||
ChangeBgX(0, 0, 0);
|
ChangeBgX(0, 0, 0);
|
||||||
ChangeBgY(0, 0, 0);
|
ChangeBgY(0, 0, 0);
|
||||||
ChangeBgX(1, 0, 0);
|
ChangeBgX(1, 0, 0);
|
||||||
@@ -233,10 +283,10 @@ static void sub_8088530(void)
|
|||||||
ChangeBgY(3, 0, 0);
|
ChangeBgY(3, 0, 0);
|
||||||
InitWindows(gUnknown_83CC2B8);
|
InitWindows(gUnknown_83CC2B8);
|
||||||
DeactivateAllTextPrinters();
|
DeactivateAllTextPrinters();
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, 193);
|
SetGpuReg(REG_OFFSET_BLDCNT, 0xC1);
|
||||||
SetGpuReg(REG_OFFSET_BLDY, 2);
|
SetGpuReg(REG_OFFSET_BLDY, 2);
|
||||||
SetGpuReg(REG_OFFSET_WININ, 1);
|
SetGpuReg(REG_OFFSET_WININ, 1);
|
||||||
SetGpuReg(REG_OFFSET_WINOUT, 27);
|
SetGpuReg(REG_OFFSET_WINOUT, 0x27);
|
||||||
SetGpuReg(0, 0x3040);
|
SetGpuReg(0, 0x3040);
|
||||||
ShowBg(0);
|
ShowBg(0);
|
||||||
ShowBg(1);
|
ShowBg(1);
|
||||||
@@ -248,7 +298,7 @@ static void sub_8088680(void)
|
|||||||
{
|
{
|
||||||
s32 x;
|
s32 x;
|
||||||
x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0);
|
x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0);
|
||||||
FillWindowPixelBuffer(WIN_OPTIONS, 0xFF);
|
FillWindowPixelBuffer(2, 0xFF);
|
||||||
AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57);
|
AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57);
|
||||||
PutWindowTilemap(2);
|
PutWindowTilemap(2);
|
||||||
CopyWindowToVram(2, 3);
|
CopyWindowToVram(2, 3);
|
||||||
@@ -271,10 +321,10 @@ static bool8 sub_80886F0(void)
|
|||||||
switch (sOptionsMenu->state2)
|
switch (sOptionsMenu->state2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA);
|
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20);
|
LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
LoadPalette(gUnknown_83CC2E4, 0x10, 0x20);
|
LoadPalette(gUnknown_83CC2E4, 0x10, 0x20);
|
||||||
@@ -291,72 +341,228 @@ static bool8 sub_80886F0(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//sub_8088780
|
|
||||||
|
// I could not get this function to match. GOTO statements weren't even compiling correctly.
|
||||||
|
#ifdef NONMATCHING
|
||||||
static void sub_8088780(u8 taskId)
|
static void sub_8088780(u8 taskId)
|
||||||
{
|
{
|
||||||
|
u8 v2, v5;
|
||||||
|
struct OptionsMenu v4;
|
||||||
|
|
||||||
switch (sOptionsMenu->state3)
|
switch (sOptionsMenu->state3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
|
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||||
sub_8088444();
|
sub_8088444();
|
||||||
sOptionsMenu->state3++;
|
sOptionsMenu->state3++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (sub_80BF72C)
|
if (sub_80BF72C() == TRUE)
|
||||||
return;
|
return;
|
||||||
switch (sub_80888C0())
|
switch (sub_80888C0())
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
return;
|
|
||||||
case 1:
|
case 1:
|
||||||
sOptionsMenu->state3++;
|
sOptionsMenu->state3++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA);
|
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20);
|
LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
||||||
sub_80889A8(sOptionsMenu->unkE);
|
sub_80889A8(sOptionsMenu->unkE);
|
||||||
return;
|
sOptionsMenu->state3++;
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sub_8088DE0(sOptionsMenu->unkE);
|
sub_8088DE0(sOptionsMenu->unkE);
|
||||||
return;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
sub_80889A8(sOptionsMenu->unkE);
|
sub_80889A8(sOptionsMenu->unkE);
|
||||||
return;
|
sOptionsMenu->state3++;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||||
sOptionsMenu->state3++;
|
sOptionsMenu->state3++;
|
||||||
break;
|
|
||||||
case 1:
|
case 1:
|
||||||
case 4:
|
case 4:
|
||||||
if (gPaletteFade.active)
|
if (gPaletteFade.active)
|
||||||
return;
|
return;
|
||||||
sOptionsMenu->state3++;
|
sOptionsMenu->state3++;
|
||||||
return;
|
|
||||||
case 5:
|
case 5:
|
||||||
sub_8088B00(taskId);
|
sub_8088B00(taskId);
|
||||||
return;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
NAKED
|
||||||
|
static void sub_8088780(u8 taskId)
|
||||||
|
{
|
||||||
|
asm_unified("\tpush {r4,lr}\n"
|
||||||
|
"\tsub sp, 0x4\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r2, r0, 24\n"
|
||||||
|
"\tldr r1, _080887A0 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r1]\n"
|
||||||
|
"\tldrb r0, [r0, 0x10]\n"
|
||||||
|
"\tadds r3, r1, 0\n"
|
||||||
|
"\tcmp r0, 0x5\n"
|
||||||
|
"\tbls _08088796\n"
|
||||||
|
"\tb _080888B6\n"
|
||||||
|
"_08088796:\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tldr r1, _080887A4 @ =_080887A8\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tmov pc, r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080887A0: .4byte sOptionsMenu\n"
|
||||||
|
"_080887A4: .4byte _080887A8\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080887A8:\n"
|
||||||
|
"\t.4byte _080887C0\n"
|
||||||
|
"\t.4byte _08088894\n"
|
||||||
|
"\t.4byte _080887E0\n"
|
||||||
|
"\t.4byte _08088878\n"
|
||||||
|
"\t.4byte _08088894\n"
|
||||||
|
"\t.4byte _080888B0\n"
|
||||||
|
"_080887C0:\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tstr r1, [sp]\n"
|
||||||
|
"\tmovs r2, 0x10\n"
|
||||||
|
"\tmovs r3, 0\n"
|
||||||
|
"\tbl BeginNormalPaletteFade\n"
|
||||||
|
"\tbl sub_8088444\n"
|
||||||
|
"\tldr r0, _080887DC @ =sOptionsMenu\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tb _080888A2\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080887DC: .4byte sOptionsMenu\n"
|
||||||
|
"_080887E0:\n"
|
||||||
|
"\tbl sub_80BF72C\n"
|
||||||
|
"\tcmp r0, 0x1\n"
|
||||||
|
"\tbeq _080888B6\n"
|
||||||
|
"\tbl sub_80888C0\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tcmp r0, 0x4\n"
|
||||||
|
"\tbhi _080888B6\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tldr r1, _08088800 @ =_08088804\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tmov pc, r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088800: .4byte _08088804\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088804:\n"
|
||||||
|
"\t.4byte _080888B6\n"
|
||||||
|
"\t.4byte _08088818\n"
|
||||||
|
"\t.4byte _08088824\n"
|
||||||
|
"\t.4byte _08088858\n"
|
||||||
|
"\t.4byte _08088868\n"
|
||||||
|
"_08088818:\n"
|
||||||
|
"\tldr r0, _08088820 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tb _080888A2\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088820: .4byte sOptionsMenu\n"
|
||||||
|
"_08088824:\n"
|
||||||
|
"\tldr r4, _08088854 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r4]\n"
|
||||||
|
"\tldrb r0, [r0, 0xA]\n"
|
||||||
|
"\tbl GetUserFrameGraphicsInfo\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tmovs r2, 0x90\n"
|
||||||
|
"\tlsls r2, 1\n"
|
||||||
|
"\tmovs r3, 0xD5\n"
|
||||||
|
"\tlsls r3, 1\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tbl LoadBgTiles\n"
|
||||||
|
"\tldr r0, [r4]\n"
|
||||||
|
"\tldrb r0, [r0, 0xA]\n"
|
||||||
|
"\tbl GetUserFrameGraphicsInfo\n"
|
||||||
|
"\tldr r0, [r0, 0x4]\n"
|
||||||
|
"\tmovs r1, 0x20\n"
|
||||||
|
"\tmovs r2, 0x20\n"
|
||||||
|
"\tbl LoadPalette\n"
|
||||||
|
"\tldr r0, [r4]\n"
|
||||||
|
"\tb _0808886C\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088854: .4byte sOptionsMenu\n"
|
||||||
|
"_08088858:\n"
|
||||||
|
"\tldr r0, _08088864 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tldrh r0, [r0, 0xE]\n"
|
||||||
|
"\tbl sub_8088DE0\n"
|
||||||
|
"\tb _080888B6\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088864: .4byte sOptionsMenu\n"
|
||||||
|
"_08088868:\n"
|
||||||
|
"\tldr r0, _08088874 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"_0808886C:\n"
|
||||||
|
"\tldrb r0, [r0, 0xE]\n"
|
||||||
|
"\tbl sub_80889A8\n"
|
||||||
|
"\tb _080888B6\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088874: .4byte sOptionsMenu\n"
|
||||||
|
"_08088878:\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tstr r1, [sp]\n"
|
||||||
|
"\tmovs r2, 0\n"
|
||||||
|
"\tmovs r3, 0x10\n"
|
||||||
|
"\tbl BeginNormalPaletteFade\n"
|
||||||
|
"\tldr r0, _08088890 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tb _080888A2\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088890: .4byte sOptionsMenu\n"
|
||||||
|
"_08088894:\n"
|
||||||
|
"\tldr r0, _080888AC @ =gPaletteFade\n"
|
||||||
|
"\tldrb r1, [r0, 0x7]\n"
|
||||||
|
"\tmovs r0, 0x80\n"
|
||||||
|
"\tands r0, r1\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080888B6\n"
|
||||||
|
"\tldr r1, [r3]\n"
|
||||||
|
"_080888A2:\n"
|
||||||
|
"\tldrb r0, [r1, 0x10]\n"
|
||||||
|
"\tadds r0, 0x1\n"
|
||||||
|
"\tstrb r0, [r1, 0x10]\n"
|
||||||
|
"\tb _080888B6\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080888AC: .4byte gPaletteFade\n"
|
||||||
|
"_080888B0:\n"
|
||||||
|
"\tadds r0, r2, 0\n"
|
||||||
|
"\tbl sub_8088B00\n"
|
||||||
|
"_080888B6:\n"
|
||||||
|
"\tadd sp, 0x4\n"
|
||||||
|
"\tpop {r4}\n"
|
||||||
|
"\tpop {r0}\n"
|
||||||
|
"\tbx r0\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//OptionsMenu_ProcessInput
|
//OptionsMenu_ProcessInput
|
||||||
static u8 sub_80888C0(void)
|
static u8 sub_80888C0(void)
|
||||||
{
|
{
|
||||||
u16 current, selection;
|
u16 current;
|
||||||
|
u16* curr;
|
||||||
if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
|
if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
|
||||||
{
|
{
|
||||||
selection = 2 * sOptionsMenu->unkE;
|
current = sOptionsMenu->option[(sOptionsMenu->unkE)];
|
||||||
current = sOptionsMenu->option[selection];
|
if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1))
|
||||||
|
sOptionsMenu->option[sOptionsMenu->unkE] = 0;
|
||||||
if (current == gUnknown_83CC304[selection] - 1)
|
|
||||||
sOptionsMenu->option[selection] = 0;
|
|
||||||
else
|
else
|
||||||
sOptionsMenu->option[selection] = current + 1;
|
sOptionsMenu->option[sOptionsMenu->unkE] = current + 1;
|
||||||
if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE)
|
if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE)
|
||||||
return 2;
|
return 2;
|
||||||
else
|
else
|
||||||
@@ -364,12 +570,12 @@ static u8 sub_80888C0(void)
|
|||||||
}
|
}
|
||||||
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
|
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
|
||||||
{
|
{
|
||||||
selection = 2*sOptionsMenu->unkE;
|
curr = &sOptionsMenu->option[sOptionsMenu->unkE];
|
||||||
current = sOptionsMenu->option[selection];
|
if (*curr == 0)
|
||||||
if (current == 0)
|
*curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1;
|
||||||
sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1;
|
|
||||||
else
|
else
|
||||||
sOptionsMenu->option[selection] = current - 1;
|
--*(curr);
|
||||||
|
|
||||||
if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE)
|
if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE)
|
||||||
return 2;
|
return 2;
|
||||||
else
|
else
|
||||||
@@ -377,20 +583,18 @@ static u8 sub_80888C0(void)
|
|||||||
}
|
}
|
||||||
else if (gMain.newAndRepeatedKeys & DPAD_UP)
|
else if (gMain.newAndRepeatedKeys & DPAD_UP)
|
||||||
{
|
{
|
||||||
selection = sOptionsMenu->unkE;
|
if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED)
|
||||||
if (selection == MENUITEM_TEXTSPEED)
|
|
||||||
sOptionsMenu->unkE = MENUITEM_CANCEL;
|
sOptionsMenu->unkE = MENUITEM_CANCEL;
|
||||||
else
|
else
|
||||||
sOptionsMenu->unkE = selection - 1;
|
sOptionsMenu->unkE = sOptionsMenu->unkE - 1;
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
|
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
|
||||||
{
|
{
|
||||||
selection = sOptionsMenu->unkE;
|
if (sOptionsMenu->unkE == MENUITEM_CANCEL)
|
||||||
if (selection == MENUITEM_CANCEL)
|
|
||||||
sOptionsMenu->unkE = MENUITEM_TEXTSPEED;
|
sOptionsMenu->unkE = MENUITEM_TEXTSPEED;
|
||||||
else
|
else
|
||||||
sOptionsMenu->unkE = selection + 1;
|
sOptionsMenu->unkE = sOptionsMenu->unkE + 1;
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON))
|
else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON))
|
||||||
@@ -403,85 +607,22 @@ static u8 sub_80888C0(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// must match with goto :(
|
|
||||||
bool sub_80888C0()
|
|
||||||
{
|
|
||||||
int v0; // r0@2
|
|
||||||
_WORD *v1; // r3@2
|
|
||||||
int v2; // r4@2
|
|
||||||
__int16 v3; // r0@3
|
|
||||||
int v4; // r3@8
|
|
||||||
__int16 v5; // r0@8
|
|
||||||
int v7; // r1@14
|
|
||||||
signed __int16 v8; // r0@15
|
|
||||||
int v9; // r0@18
|
|
||||||
|
|
||||||
if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT)
|
|
||||||
{
|
|
||||||
v0 = 2 * *(_WORD *)(sOptionsMenu + 14);
|
|
||||||
v1 = (_WORD *)(sOptionsMenu + v0);
|
|
||||||
v2 = *(_WORD *)(sOptionsMenu + v0);
|
|
||||||
if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 )
|
|
||||||
v3 = 0;
|
|
||||||
else
|
|
||||||
v3 = v2 + 1;
|
|
||||||
*v1 = v3;
|
|
||||||
if ( *(_WORD *)(sOptionsMenu + 14) != 5 )
|
|
||||||
return 4;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT )
|
|
||||||
{
|
|
||||||
v4 = 2 * *(_WORD *)(sOptionsMenu + 14);
|
|
||||||
v5 = *(_WORD *)(sOptionsMenu + v4);
|
|
||||||
if ( !*(_WORD *)(sOptionsMenu + v4) )
|
|
||||||
v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4);
|
|
||||||
*(_WORD *)(sOptionsMenu + v4) = v5 - 1;
|
|
||||||
if ( *(_WORD *)(sOptionsMenu + 14) != 5 )
|
|
||||||
return 4;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if ( gMain.buttons4_new_and_keyrepeat & 0x40 )
|
|
||||||
{
|
|
||||||
v7 = sOptionsMenu;
|
|
||||||
if ( *(_WORD *)(sOptionsMenu + 14) )
|
|
||||||
v8 = *(_WORD *)(sOptionsMenu + 14) - 1;
|
|
||||||
else
|
|
||||||
v8 = 6;
|
|
||||||
goto LABEL_21;
|
|
||||||
}
|
|
||||||
if ( gMain.buttons4_new_and_keyrepeat & 0x80 )
|
|
||||||
{
|
|
||||||
v7 = sOptionsMenu;
|
|
||||||
v9 = *(_WORD *)(sOptionsMenu + 14);
|
|
||||||
if ( v9 == 6 )
|
|
||||||
{
|
|
||||||
*(_WORD *)(sOptionsMenu + 14) = 0;
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
v8 = v9 + 1;
|
|
||||||
LABEL_21:
|
|
||||||
*(_WORD *)(v7 + 14) = v8;
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
//sub_80889A8
|
//sub_80889A8
|
||||||
|
#ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack
|
||||||
static void sub_80889A8(u8 selection)
|
static void sub_80889A8(u8 selection)
|
||||||
{
|
{
|
||||||
u8* dst;
|
u8* dst;
|
||||||
u8* str;
|
u8* str;
|
||||||
u8* v8;
|
u8* v8;
|
||||||
u8 x, y;
|
u8 x, y;
|
||||||
|
u8** col;
|
||||||
|
|
||||||
x = 0x82;
|
memcpy(&dst, gUnknown_83CC363, 3);
|
||||||
memcpy(dst, gUnknown_83CC363, 3);
|
|
||||||
y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2;
|
y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2;
|
||||||
|
x = 0x82;
|
||||||
FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT));
|
FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT));
|
||||||
|
|
||||||
switch (selection)
|
switch (selection)
|
||||||
{
|
{
|
||||||
case MENUITEM_TEXTSPEED:
|
case MENUITEM_TEXTSPEED:
|
||||||
@@ -501,7 +642,7 @@ static void sub_80889A8(u8 selection)
|
|||||||
break;
|
break;
|
||||||
case MENUITEM_FRAMETYPE:
|
case MENUITEM_FRAMETYPE:
|
||||||
StringCopy(str, gUnknown_8419E52);
|
StringCopy(str, gUnknown_8419E52);
|
||||||
ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2);
|
ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2);
|
||||||
StringAppendN(str, v8, 3);
|
StringAppendN(str, v8, 3);
|
||||||
AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str);
|
AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str);
|
||||||
break;
|
break;
|
||||||
@@ -511,6 +652,173 @@ static void sub_80889A8(u8 selection)
|
|||||||
PutWindowTilemap(1);
|
PutWindowTilemap(1);
|
||||||
CopyWindowToVram(1, 3);
|
CopyWindowToVram(1, 3);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
NAKED
|
||||||
|
static void sub_80889A8(u8 selection)
|
||||||
|
{
|
||||||
|
asm_unified("\tpush {r4-r7,lr}\n"
|
||||||
|
"\tmov r7, r8\n"
|
||||||
|
"\tpush {r7}\n"
|
||||||
|
"\tsub sp, 0x30\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r5, r0, 24\n"
|
||||||
|
"\tadd r4, sp, 0x2C\n"
|
||||||
|
"\tldr r1, _08088A08 @ =gUnknown_83CC363\n"
|
||||||
|
"\tadds r0, r4, 0\n"
|
||||||
|
"\tmovs r2, 0x3\n"
|
||||||
|
"\tbl memcpy\n"
|
||||||
|
"\tmovs r0, 0x82\n"
|
||||||
|
"\tmov r8, r0\n"
|
||||||
|
"\tmovs r0, 0x2\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tbl GetFontAttribute\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tsubs r0, 0x1\n"
|
||||||
|
"\tmuls r0, r5\n"
|
||||||
|
"\tadds r0, 0x2\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r7, r0, 24\n"
|
||||||
|
"\tmovs r0, 0x2\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tbl GetFontAttribute\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tmovs r1, 0x46\n"
|
||||||
|
"\tstr r1, [sp]\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tmovs r2, 0x82\n"
|
||||||
|
"\tadds r3, r7, 0\n"
|
||||||
|
"\tbl FillWindowPixelRect\n"
|
||||||
|
"\tadds r6, r4, 0\n"
|
||||||
|
"\tcmp r5, 0x5\n"
|
||||||
|
"\tbhi _08088ADE\n"
|
||||||
|
"\tlsls r0, r5, 2\n"
|
||||||
|
"\tldr r1, _08088A0C @ =_08088A10\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tmov pc, r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A08: .4byte gUnknown_83CC363\n"
|
||||||
|
"_08088A0C: .4byte _08088A10\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A10:\n"
|
||||||
|
"\t.4byte _08088A28\n"
|
||||||
|
"\t.4byte _08088A38\n"
|
||||||
|
"\t.4byte _08088A48\n"
|
||||||
|
"\t.4byte _08088A58\n"
|
||||||
|
"\t.4byte _08088A68\n"
|
||||||
|
"\t.4byte _08088A9C\n"
|
||||||
|
"_08088A28:\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tldr r2, _08088A34 @ =gUnknown_83CC330\n"
|
||||||
|
"\tb _08088A72\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A34: .4byte gUnknown_83CC330\n"
|
||||||
|
"_08088A38:\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tldr r2, _08088A44 @ =gUnknown_83CC33C\n"
|
||||||
|
"\tb _08088A72\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A44: .4byte gUnknown_83CC33C\n"
|
||||||
|
"_08088A48:\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tldr r2, _08088A54 @ =gUnknown_83CC344\n"
|
||||||
|
"\tb _08088A72\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A54: .4byte gUnknown_83CC344\n"
|
||||||
|
"_08088A58:\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tldr r2, _08088A64 @ =gUnknown_83CC34C\n"
|
||||||
|
"\tb _08088A72\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A64: .4byte gUnknown_83CC34C\n"
|
||||||
|
"_08088A68:\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tldr r2, _08088A94 @ =gUnknown_83CC354\n"
|
||||||
|
"_08088A72:\n"
|
||||||
|
"\tldr r0, _08088A98 @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tlsls r1, r5, 1\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r0, r2\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tstr r0, [sp, 0x8]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tmovs r1, 0x2\n"
|
||||||
|
"\tmov r2, r8\n"
|
||||||
|
"\tadds r3, r7, 0\n"
|
||||||
|
"\tbl AddTextPrinterParameterized3\n"
|
||||||
|
"\tb _08088ADE\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088A94: .4byte gUnknown_83CC354\n"
|
||||||
|
"_08088A98: .4byte sOptionsMenu\n"
|
||||||
|
"_08088A9C:\n"
|
||||||
|
"\tldr r1, _08088AF8 @ =gUnknown_8419E52\n"
|
||||||
|
"\tadd r0, sp, 0xC\n"
|
||||||
|
"\tbl StringCopy\n"
|
||||||
|
"\tadd r4, sp, 0x20\n"
|
||||||
|
"\tldr r0, _08088AFC @ =sOptionsMenu\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tlsls r1, r5, 1\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrh r1, [r0]\n"
|
||||||
|
"\tadds r1, 0x1\n"
|
||||||
|
"\tadds r0, r4, 0\n"
|
||||||
|
"\tmovs r2, 0x1\n"
|
||||||
|
"\tmovs r3, 0x2\n"
|
||||||
|
"\tbl ConvertIntToDecimalStringN\n"
|
||||||
|
"\tadd r0, sp, 0xC\n"
|
||||||
|
"\tadds r1, r4, 0\n"
|
||||||
|
"\tmovs r2, 0x3\n"
|
||||||
|
"\tbl StringAppendN\n"
|
||||||
|
"\tstr r6, [sp]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tstr r0, [sp, 0x4]\n"
|
||||||
|
"\tadd r0, sp, 0xC\n"
|
||||||
|
"\tstr r0, [sp, 0x8]\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tmovs r1, 0x2\n"
|
||||||
|
"\tmov r2, r8\n"
|
||||||
|
"\tadds r3, r7, 0\n"
|
||||||
|
"\tbl AddTextPrinterParameterized3\n"
|
||||||
|
"_08088ADE:\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tbl PutWindowTilemap\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tmovs r1, 0x3\n"
|
||||||
|
"\tbl CopyWindowToVram\n"
|
||||||
|
"\tadd sp, 0x30\n"
|
||||||
|
"\tpop {r3}\n"
|
||||||
|
"\tmov r8, r3\n"
|
||||||
|
"\tpop {r4-r7}\n"
|
||||||
|
"\tpop {r0}\n"
|
||||||
|
"\tbx r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_08088AF8: .4byte gUnknown_8419E52\n"
|
||||||
|
"_08088AFC: .4byte sOptionsMenu\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//sub_8088B00
|
//sub_8088B00
|
||||||
@@ -520,20 +828,20 @@ static void sub_8088B00(u8 taskId)
|
|||||||
SetMainCallback2(gMain.savedCallback);
|
SetMainCallback2(gMain.savedCallback);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
|
|
||||||
gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7;
|
gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED];
|
||||||
gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1;
|
gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE];
|
||||||
gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1;
|
gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE];
|
||||||
gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1;
|
gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND];
|
||||||
gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE];
|
gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE];
|
||||||
gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE];
|
gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE];
|
||||||
|
|
||||||
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
|
||||||
Free(sOptionsMenu);
|
Free(sOptionsMenu);
|
||||||
sOptionsMenu = NULL;
|
sOptionsMenu = NULL;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//sub_8088BD0
|
//sub_8088BD0
|
||||||
static void sub_8088BD0(void)
|
static void sub_8088BD0(void)
|
||||||
{
|
{
|
||||||
@@ -545,24 +853,28 @@ static void sub_8088BD0(void)
|
|||||||
|
|
||||||
|
|
||||||
//sub_8088C0C
|
//sub_8088C0C
|
||||||
|
//double check
|
||||||
static void sub_8088C0C(void)
|
static void sub_8088C0C(void)
|
||||||
{
|
{
|
||||||
|
u8 h;
|
||||||
|
h = 2;
|
||||||
|
|
||||||
FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3);
|
FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3);
|
FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3);
|
FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3);
|
||||||
FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2);
|
FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2);
|
FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, h);
|
||||||
FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2);
|
FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, h);
|
||||||
CopyBgTilemapBufferToVram(1);
|
CopyBgTilemapBufferToVram(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -571,20 +883,25 @@ static void sub_8088C0C(void)
|
|||||||
static void sub_8088D8C(void)
|
static void sub_8088D8C(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u8 attr;
|
u8 y;
|
||||||
|
|
||||||
FillWindowPixelBuffer(1, 0x11);
|
FillWindowPixelBuffer(1, 0x11);
|
||||||
|
|
||||||
for (i = 0; i < MENUITEM_COUNT; i++)
|
for (i = 0; i < MENUITEM_COUNT; i++)
|
||||||
{
|
{
|
||||||
attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i;
|
//AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0);
|
||||||
AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0);
|
//gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there
|
||||||
|
y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT));
|
||||||
|
y += 2;
|
||||||
|
y -= i;
|
||||||
|
AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//sub_8088DE0
|
//sub_8088DE0
|
||||||
static void sub_8088DE0(u8 selection)
|
static void sub_8088DE0(u16 selection)
|
||||||
{
|
{
|
||||||
u8 attr;
|
u8 attr;
|
||||||
attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
|
attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
|
||||||
|
|||||||
Reference in New Issue
Block a user