summaryrefslogtreecommitdiff
path: root/src/option_menu.c
diff options
context:
space:
mode:
authorJaceCearK1 <JaceCearK1@users.noreply.github.com>2017-07-01 21:04:18 +0200
committerGitHub <noreply@github.com>2017-07-01 21:04:18 +0200
commit0dd804a99e5455a0eac8ff6ed87d9de16c7380b7 (patch)
tree7b3567978b63ee6548a7b945e075ea8ba37bef51 /src/option_menu.c
parentf1344efd2aff92292f58f7323bd9297a38fe9b02 (diff)
parent8d82578d3a101b06f9d2ced31738021007c4e533 (diff)
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'src/option_menu.c')
-rw-r--r--src/option_menu.c506
1 files changed, 284 insertions, 222 deletions
diff --git a/src/option_menu.c b/src/option_menu.c
index 6d6310b46..2463b11c6 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -4,6 +4,7 @@
#include "menu.h"
#include "palette.h"
#include "sprite.h"
+#include "strings2.h"
#include "task.h"
extern void SetPokemonCryStereo(u32 val);
@@ -33,28 +34,6 @@ enum {
extern u8 gUnknown_0839F63C[];
extern u8 gUnknown_0839F5FC[]; //palette
-extern u8 gSystemText_Normal[];
-extern u8 gSystemText_LR[];
-extern u8 gSystemText_LA[];
-extern u8 gSystemText_Terminator[];
-extern u8 gSystemText_Type[];
-extern u8 gSystemText_Mono[];
-extern u8 gSystemText_Stereo[];
-extern u8 gSystemText_Shift[];
-extern u8 gSystemText_Set[];
-extern u8 gSystemText_On[];
-extern u8 gSystemText_Off[];
-extern u8 gSystemText_Slow[];
-extern u8 gSystemText_Mid[];
-extern u8 gSystemText_Fast[];
-extern u8 gSystemText_OptionMenu[];
-extern u8 gSystemText_TextSpeed[];
-extern u8 gSystemText_BattleScene[];
-extern u8 gSystemText_BattleStyle[];
-extern u8 gSystemText_Sound[];
-extern u8 gSystemText_ButtonMode[];
-extern u8 gSystemText_Frame[];
-extern u8 gSystemText_Cancel[];
static void Task_OptionMenuFadeIn(u8 taskId);
static void Task_OptionMenuProcessInput(u8 taskId);
@@ -91,143 +70,143 @@ static void VBlankCB(void)
void CB2_InitOptionMenu(void)
{
- switch(gMain.state)
+ switch (gMain.state)
{
- default:
- case 0:
+ default:
+ case 0:
+ {
+ u8 *addr;
+ u32 size;
+
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ addr = (u8 *)VRAM;
+ size = 0x18000;
+ while (1)
{
- u8 *addr;
- u32 size;
-
- SetVBlankCallback(NULL);
- REG_DISPCNT = 0;
- REG_BG2CNT = 0;
- REG_BG1CNT = 0;
- REG_BG0CNT = 0;
- REG_BG2HOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- addr = (u8 *)VRAM;
- size = 0x18000;
- while(1)
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
{
- DmaFill16(3, 0, addr, 0x1000);
- addr += 0x1000;
- size -= 0x1000;
- if(size <= 0x1000)
- {
- DmaFill16(3, 0, addr, size);
- break;
- }
+ DmaFill16(3, 0, addr, size);
+ break;
}
- DmaClear32(3, OAM, OAM_SIZE);
- DmaClear16(3, PLTT, PLTT_SIZE);
- gMain.state++;
- break;
- }
- case 1:
- ResetPaletteFade();
- remove_some_task();
- ResetTasks();
- ResetSpriteData();
- gMain.state++;
- break;
- case 2:
- SetUpWindowConfig(&gWindowConfig_81E71B4);
- gMain.state++;
- break;
- case 3:
- MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4);
- gMain.state++;
- break;
- case 4:
- if(!MultistepInitMenuWindowContinue())
- return;
- gMain.state++;
- break;
- case 5:
- LoadPalette(gUnknown_0839F5FC, 0x80, 0x40);
- CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40);
- gMain.state++;
- break;
- case 6:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
- gMain.state++;
- break;
- case 7:
- {
- u16 savedIme;
-
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- REG_WIN1H = 0;
- REG_WIN1V = 0;
- REG_WININ = 0x1111;
- REG_WINOUT = 0x31;
- REG_BLDCNT = 0xE1;
- REG_BLDALPHA = 0;
- REG_BLDY = 7;
- savedIme = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = savedIme;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(VBlankCB);
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON |
- DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
- gMain.state++;
- break;
- }
- case 8:
- {
- u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0);
-
- gTasks[taskId].data[TD_MENUSELECTION] = 0;
- gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed;
- gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff;
- gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle;
- gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound;
- gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode;
- gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType;
-
- MenuDrawTextWindow(2, 0, 27, 3);
- MenuDrawTextWindow(2, 4, 27, 19);
-
- MenuPrint(gSystemText_OptionMenu, 4, 1);
- MenuPrint(gSystemText_TextSpeed, 4, 5);
- MenuPrint(gSystemText_BattleScene, 4, 7);
- MenuPrint(gSystemText_BattleStyle, 4, 9);
- MenuPrint(gSystemText_Sound, 4, 11);
- MenuPrint(gSystemText_ButtonMode, 4, 13);
- MenuPrint(gSystemText_Frame, 4, 15);
- MenuPrint(gSystemText_Cancel, 4, 17);
-
- TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
- BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
- BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
- Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
- ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
- FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
-
- REG_WIN0H = WIN_RANGE(17, 223);
- REG_WIN0V = WIN_RANGE(1, 31);
-
- HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
- gMain.state++;
- break;
}
- case 9:
- SetMainCallback2(MainCB);
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ gMain.state++;
+ break;
+ }
+ case 1:
+ ResetPaletteFade();
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ gMain.state++;
+ break;
+ case 3:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4);
+ gMain.state++;
+ break;
+ case 4:
+ if (!MultistepInitMenuWindowContinue())
return;
+ gMain.state++;
+ break;
+ case 5:
+ LoadPalette(gUnknown_0839F5FC, 0x80, 0x40);
+ CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40);
+ gMain.state++;
+ break;
+ case 6:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gMain.state++;
+ break;
+ case 7:
+ {
+ u16 savedIme;
+
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0x1111;
+ REG_WINOUT = 0x31;
+ REG_BLDCNT = 0xE1;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ SetVBlankCallback(VBlankCB);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON |
+ DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ gMain.state++;
+ break;
+ }
+ case 8:
+ {
+ u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0);
+
+ gTasks[taskId].data[TD_MENUSELECTION] = 0;
+ gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed;
+ gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff;
+ gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle;
+ gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound;
+ gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode;
+ gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType;
+
+ MenuDrawTextWindow(2, 0, 27, 3);
+ MenuDrawTextWindow(2, 4, 27, 19);
+
+ MenuPrint(gSystemText_OptionMenu, 4, 1);
+ MenuPrint(gSystemText_TextSpeed, 4, 5);
+ MenuPrint(gSystemText_BattleScene, 4, 7);
+ MenuPrint(gSystemText_BattleStyle, 4, 9);
+ MenuPrint(gSystemText_Sound, 4, 11);
+ MenuPrint(gSystemText_ButtonMode, 4, 13);
+ MenuPrint(gSystemText_Frame, 4, 15);
+ MenuPrint(gSystemText_Cancel, 4, 17);
+
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+
+ HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
+ gMain.state++;
+ break;
+ }
+ case 9:
+ SetMainCallback2(MainCB);
+ return;
}
}
static void Task_OptionMenuFadeIn(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gTasks[taskId].func = Task_OptionMenuProcessInput;
}
@@ -235,26 +214,26 @@ static void Task_OptionMenuFadeIn(u8 taskId)
static void Task_OptionMenuProcessInput(u8 taskId)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
+ if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if(gMain.newKeys & B_BUTTON)
+ else if (gMain.newKeys & B_BUTTON)
{
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if(gMain.newKeys & DPAD_UP)
+ else if (gMain.newKeys & DPAD_UP)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] > 0)
+ if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
gTasks[taskId].data[TD_MENUSELECTION]--;
else
gTasks[taskId].data[TD_MENUSELECTION] = 6;
HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
}
- else if(gMain.newKeys & DPAD_DOWN)
+ else if (gMain.newKeys & DPAD_DOWN)
{
- if(gTasks[taskId].data[TD_MENUSELECTION] <= 5)
+ if (gTasks[taskId].data[TD_MENUSELECTION] <= 5)
gTasks[taskId].data[TD_MENUSELECTION]++;
else
gTasks[taskId].data[TD_MENUSELECTION] = 0;
@@ -262,32 +241,32 @@ static void Task_OptionMenuProcessInput(u8 taskId)
}
else
{
- switch(gTasks[taskId].data[TD_MENUSELECTION])
+ switch (gTasks[taskId].data[TD_MENUSELECTION])
{
- case MENUITEM_TEXTSPEED:
- gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
- TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
- break;
- case MENUITEM_BATTLESCENE:
- gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]);
- BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
- break;
- case MENUITEM_BATTLESTYLE:
- gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]);
- BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
- break;
- case MENUITEM_SOUND:
- gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]);
- Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
- break;
- case MENUITEM_BUTTONMODE:
- gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]);
- ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
- break;
- case MENUITEM_FRAMETYPE:
- gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]);
- FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
- break;
+ case MENUITEM_TEXTSPEED:
+ gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ break;
+ case MENUITEM_BATTLESCENE:
+ gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]);
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ break;
+ case MENUITEM_BATTLESTYLE:
+ gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]);
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ break;
+ case MENUITEM_SOUND:
+ gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]);
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ break;
+ case MENUITEM_BUTTONMODE:
+ gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]);
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ break;
+ case MENUITEM_FRAMETYPE:
+ gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]);
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+ break;
}
}
}
@@ -300,17 +279,17 @@ static void Task_OptionMenuSave(u8 taskId)
gSaveBlock2.optionsSound = gTasks[taskId].data[TD_SOUND];
gSaveBlock2.optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE];
gSaveBlock2.optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE];
-
+
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = Task_OptionMenuFadeOut;
}
static void Task_OptionMenuFadeOut(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
DestroyTask(taskId);
- SetMainCallback2(gMain.field_8);
+ SetMainCallback2(gMain.savedCallback);
}
}
@@ -323,14 +302,14 @@ static void HighlightOptionMenuItem(u8 index)
REG_WIN1V = WIN_RANGE_(index * 16 + 40, index * 16 + 56);
}
-static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style)
+static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style)
{
u8 dst[16];
u16 i;
-
- for(i = 0; *text != EOS && i <= 14; i++)
+
+ for (i = 0; *text != EOS && i <= 14; i++)
dst[i] = *(text++);
-
+
dst[2] = style;
dst[i] = EOS;
MenuPrint_PixelCoords(dst, x, y, 1);
@@ -338,16 +317,16 @@ static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style)
static u8 TextSpeed_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 1)
+ if (selection <= 1)
selection++;
else
selection = 0;
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 2;
@@ -355,23 +334,34 @@ static u8 TextSpeed_ProcessInput(u8 selection)
return selection;
}
+#if ENGLISH
+#define TEXTSPEED_SLOW_LEFT (120)
+#define TEXTSPEED_MIX_LEFT (155)
+#define TEXTSPEED_FAST_LEFT (184)
+#endif
+#if GERMAN
+#define TEXTSPEED_SLOW_LEFT (120)
+#define TEXTSPEED_MIX_LEFT (161)
+#define TEXTSPEED_FAST_LEFT (202)
+#endif
+
static void TextSpeed_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[2] = 0xF;
styles[selection] = 0x8;
-
- DrawOptionMenuChoice(gSystemText_Slow, 120, 40, styles[0]);
- DrawOptionMenuChoice(gSystemText_Mid, 155, 40, styles[1]);
- DrawOptionMenuChoice(gSystemText_Fast, 184, 40, styles[2]);
+
+ DrawOptionMenuChoice(gSystemText_Slow, TEXTSPEED_SLOW_LEFT, 40, styles[0]);
+ DrawOptionMenuChoice(gSystemText_Mid, TEXTSPEED_MIX_LEFT, 40, styles[1]);
+ DrawOptionMenuChoice(gSystemText_Fast, TEXTSPEED_FAST_LEFT, 40, styles[2]);
}
static u8 BattleScene_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
selection ^= 1;
return selection;
}
@@ -379,37 +369,45 @@ static u8 BattleScene_ProcessInput(u8 selection)
static void BattleScene_DrawChoices(u8 selection)
{
u8 styles[2];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_On, 120, 56, styles[0]);
DrawOptionMenuChoice(gSystemText_Off, 190, 56, styles[1]);
}
static u8 BattleStyle_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
selection ^= 1;
return selection;
}
+#if ENGLISH
+#define BATTLESTYLE_SHIFT (120)
+#define BATTLESTYLE_SET (190)
+#elif GERMAN
+#define BATTLESTYLE_SHIFT (120)
+#define BATTLESTYLE_SET (178)
+#endif
+
static void BattleStyle_DrawChoices(u8 selection)
{
u8 styles[2];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
- DrawOptionMenuChoice(gSystemText_Shift, 120, 72, styles[0]);
- DrawOptionMenuChoice(gSystemText_Set, 190, 72, styles[1]);
+
+ DrawOptionMenuChoice(gSystemText_Shift, BATTLESTYLE_SHIFT, 72, styles[0]);
+ DrawOptionMenuChoice(gSystemText_Set, BATTLESTYLE_SET, 72, styles[1]);
}
static u8 Sound_ProcessInput(u8 selection)
{
- if(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
{
selection ^= 1;
SetPokemonCryStereo(selection);
@@ -420,28 +418,28 @@ static u8 Sound_ProcessInput(u8 selection)
static void Sound_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Mono, 120, 88, styles[0]);
DrawOptionMenuChoice(gSystemText_Stereo, 172, 88, styles[1]);
}
static u8 FrameType_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 18)
+ if (selection <= 18)
selection++;
else
selection = 0;
MenuLoadTextWindowGraphics_OverrideFrameType(selection);
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 19;
@@ -452,17 +450,18 @@ static u8 FrameType_ProcessInput(u8 selection)
#define CHAR_0 0xA1 //Character code of '0' character
+#if ENGLISH
static void FrameType_DrawChoices(u8 selection)
{
u8 text[8];
u8 n = selection + 1;
u16 i;
-
- for(i = 0; gSystemText_Terminator[i] != EOS && i <= 5; i++)
+
+ for (i = 0; gSystemText_Terminator[i] != EOS && i <= 5; i++)
text[i] = gSystemText_Terminator[i];
-
+
//Convert number to decimal string
- if(n / 10 != 0)
+ if (n / 10 != 0)
{
text[i] = n / 10 + CHAR_0;
i++;
@@ -476,24 +475,87 @@ static void FrameType_DrawChoices(u8 selection)
text[i] = CHAR_SPACE;
i++;
}
-
+
text[i] = EOS;
MenuPrint(gSystemText_Type, 15, 15);
MenuPrint(text, 18, 15);
}
+#elif GERMAN
+__attribute__((naked))
+static void FrameType_DrawChoices(u8 selection)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0808C368 @ =gSystemText_Type\n\
+ mov r0, sp\n\
+ bl StringCopy\n\
+ ldr r1, _0808C36C @ =gSystemText_Terminator\n\
+ mov r0, sp\n\
+ bl StringAppend\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ adds r1, r0, 0\n\
+ lsls r0, r1, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0\n\
+ beq _0808C370\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ b _0808C380\n\
+ .align 2, 0\n\
+_0808C368: .4byte gSystemText_Type\n\
+_0808C36C: .4byte gSystemText_Terminator\n\
+_0808C370:\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ strb r6, [r4]\n\
+_0808C380:\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+ mov r0, sp\n\
+ movs r1, 0xF\n\
+ movs r2, 0xF\n\
+ bl MenuPrint\n\
+ add sp, 0x10\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
static u8 ButtonMode_ProcessInput(u8 selection)
{
- if(gMain.newKeys & DPAD_RIGHT)
+ if (gMain.newKeys & DPAD_RIGHT)
{
- if(selection <= 1)
+ if (selection <= 1)
selection++;
else
selection = 0;
}
- if(gMain.newKeys & DPAD_LEFT)
+ if (gMain.newKeys & DPAD_LEFT)
{
- if(selection != 0)
+ if (selection != 0)
selection--;
else
selection = 2;
@@ -504,12 +566,12 @@ static u8 ButtonMode_ProcessInput(u8 selection)
static void ButtonMode_DrawChoices(u8 selection)
{
u8 styles[3];
-
+
styles[0] = 0xF;
styles[1] = 0xF;
styles[2] = 0xF;
styles[selection] = 0x8;
-
+
DrawOptionMenuChoice(gSystemText_Normal, 120, 104, styles[0]);
DrawOptionMenuChoice(gSystemText_LR, 166, 104, styles[1]);
DrawOptionMenuChoice(gSystemText_LA, 188, 104, styles[2]);