diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-08-12 01:26:29 -0400 |
commit | 1a8fe435e7deabf06029c8e50201136518e3af73 (patch) | |
tree | 9746f2f4f4901e81496465da485d0f5c8a647586 /src/option_menu.c | |
parent | bb0cad7c072703f5a540e8c22c8e137267331f4d (diff) |
split out src/ directory into categorized subdirectories.
Diffstat (limited to 'src/option_menu.c')
-rw-r--r-- | src/option_menu.c | 579 |
1 files changed, 0 insertions, 579 deletions
diff --git a/src/option_menu.c b/src/option_menu.c deleted file mode 100644 index 7f8d76528..000000000 --- a/src/option_menu.c +++ /dev/null @@ -1,579 +0,0 @@ -#include "global.h" -#include "option_menu.h" -#include "main.h" -#include "menu.h" -#include "palette.h" -#include "sprite.h" -#include "strings2.h" -#include "task.h" - -extern void SetPokemonCryStereo(u32 val); -extern void remove_some_task(void); - -//Task data -enum { - TD_MENUSELECTION, - TD_TEXTSPEED, - TD_BATTLESCENE, - TD_BATTLESTYLE, - TD_SOUND, - TD_BUTTONMODE, - TD_FRAMETYPE, -}; - -//Menu items -enum { - MENUITEM_TEXTSPEED, - MENUITEM_BATTLESCENE, - MENUITEM_BATTLESTYLE, - MENUITEM_SOUND, - MENUITEM_BUTTONMODE, - MENUITEM_FRAMETYPE, - MENUITEM_CANCEL, -}; - -const u16 gUnknown_0839F5FC[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal"); -// note: this is only used in the Japanese release -const u8 gUnknown_0839F63C[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp"); - -static void Task_OptionMenuFadeIn(u8 taskId); -static void Task_OptionMenuProcessInput(u8 taskId); -static void Task_OptionMenuSave(u8 taskId); -static void Task_OptionMenuFadeOut(u8 taskId); -static void HighlightOptionMenuItem(u8 selection); -static u8 TextSpeed_ProcessInput(u8 selection); -static void TextSpeed_DrawChoices(u8 selection); -static u8 BattleScene_ProcessInput(u8 selection); -static void BattleScene_DrawChoices(u8 selection); -static u8 BattleStyle_ProcessInput(u8 selection); -static void BattleStyle_DrawChoices(u8 selection); -static u8 Sound_ProcessInput(u8 selection); -static void Sound_DrawChoices(u8 selection); -static u8 FrameType_ProcessInput(u8 selection); -static void FrameType_DrawChoices(u8 selection); -static u8 ButtonMode_ProcessInput(u8 selection); -static void ButtonMode_DrawChoices(u8 selection); - -static void MainCB(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -static void VBlankCB(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); -} - -void CB2_InitOptionMenu(void) -{ - switch (gMain.state) - { - 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) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - 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); - return; - } -} - -static void Task_OptionMenuFadeIn(u8 taskId) -{ - if (!gPaletteFade.active) - { - gTasks[taskId].func = Task_OptionMenuProcessInput; - } -} - -static void Task_OptionMenuProcessInput(u8 taskId) -{ - if (gMain.newKeys & A_BUTTON) - { - if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL) - gTasks[taskId].func = Task_OptionMenuSave; - } - else if (gMain.newKeys & B_BUTTON) - { - gTasks[taskId].func = Task_OptionMenuSave; - } - else if (gMain.newKeys & DPAD_UP) - { - 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) - { - if (gTasks[taskId].data[TD_MENUSELECTION] <= 5) - gTasks[taskId].data[TD_MENUSELECTION]++; - else - gTasks[taskId].data[TD_MENUSELECTION] = 0; - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); - } - else - { - 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; - } - } -} - -static void Task_OptionMenuSave(u8 taskId) -{ - gSaveBlock2.optionsTextSpeed = gTasks[taskId].data[TD_TEXTSPEED]; - gSaveBlock2.optionsBattleSceneOff = gTasks[taskId].data[TD_BATTLESCENE]; - gSaveBlock2.optionsBattleStyle = gTasks[taskId].data[TD_BATTLESTYLE]; - 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) - { - DestroyTask(taskId); - SetMainCallback2(gMain.savedCallback); - } -} - -//This version uses addition '+' instead of OR '|'. -#define WIN_RANGE_(a, b) (((a) << 8) + (b)) - -static void HighlightOptionMenuItem(u8 index) -{ - REG_WIN1H = WIN_RANGE(24, 215); - REG_WIN1V = WIN_RANGE_(index * 16 + 40, index * 16 + 56); -} - -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++) - dst[i] = *(text++); - - dst[2] = style; - dst[i] = EOS; - MenuPrint_PixelCoords(dst, x, y, 1); -} - -static u8 TextSpeed_ProcessInput(u8 selection) -{ - if (gMain.newKeys & DPAD_RIGHT) - { - if (selection <= 1) - selection++; - else - selection = 0; - } - if (gMain.newKeys & DPAD_LEFT) - { - if (selection != 0) - selection--; - else - selection = 2; - } - 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, 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)) - selection ^= 1; - return 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)) - 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, 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)) - { - selection ^= 1; - SetPokemonCryStereo(selection); - } - return 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 (selection <= 18) - selection++; - else - selection = 0; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); - } - if (gMain.newKeys & DPAD_LEFT) - { - if (selection != 0) - selection--; - else - selection = 19; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); - } - return 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++) - text[i] = gSystemText_Terminator[i]; - - //Convert number to decimal string - if (n / 10 != 0) - { - text[i] = n / 10 + CHAR_0; - i++; - text[i] = n % 10 + CHAR_0; - i++; - } - else - { - text[i] = n % 10 + CHAR_0; - i++; - 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 (selection <= 1) - selection++; - else - selection = 0; - } - if (gMain.newKeys & DPAD_LEFT) - { - if (selection != 0) - selection--; - else - selection = 2; - } - return 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]); -} |