Advertisement
Guest User

new_game_menu.c

a guest
Sep 3rd, 2021
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.15 KB | None | 0 0
  1. #include "global.h"
  2. #include "new_game_menu.h"
  3. #include "main.h"
  4. #include "menu.h"
  5. #include "scanline_effect.h"
  6. #include "palette.h"
  7. #include "sprite.h"
  8. #include "task.h"
  9. #include "bg.h"
  10. #include "gpu_regs.h"
  11. #include "window.h"
  12. #include "text.h"
  13. #include "text_window.h"
  14. #include "international_string_util.h"
  15. #include "strings.h"
  16. #include "gba/m4a_internal.h"
  17. #include "constants/rgb.h"
  18. #include "constants/songs.h"
  19. #include "sound.h"
  20. #include "overworld.h"
  21. #include "naming_screen.h"
  22. #include "string_util.h"
  23. #include "event_data.h"
  24.  
  25. // Task data
  26. enum
  27. {
  28.     TD_MENUSELECTION,
  29. };
  30.  
  31. // Menu items
  32. enum
  33. {
  34.     MENUITEM_NAME,
  35.     MENUITEM_CHARACTER,
  36.     MENUITEM_OUTFIT,
  37.     MENUITEM_BEGIN,
  38.     MENUITEM_COUNT,
  39. };
  40.  
  41. // Window Ids
  42. enum
  43. {
  44.     WIN_NEW_GAME_TITLE,
  45.     WIN_NEW_GAME_MENU,
  46.     WIN_NEW_GAME_NAME
  47. };
  48.  
  49. #define YPOS_NAME       (MENUITEM_NAME * 16)
  50. #define YPOS_CHARACTER  (MENUITEM_CHARACTER * 16)
  51. #define YPOS_OUTFIT     (MENUITEM_OUTFIT * 16)
  52. #define YPOS_BEGIN      (MENUITEM_BEGIN * 16)
  53.  
  54. #define VAR_CHARACTER   VAR_TEMP_0
  55. #define VAR_OUTFIT      VAR_TEMP_1
  56.  
  57. // this file's functions
  58. static void Task_NewGameMenuFadeIn(u8 taskId);
  59. static void Task_NewGameMenuProcessInput(u8 taskId);
  60. static void Task_NewGameMenuBeginGame(u8 taskId);
  61. static void Task_NewGameMenuBeginGameCleanup(u8 taskId);
  62. static void Task_NewGameMenuBackToMainMenu(u8 taskId);
  63. static void Task_NewGameMenuFadeOut(u8 taskId);
  64. static void HighlightNewGameMenuItem(u8 selection);
  65. static void Name_ProcessInput(u8 taskId);
  66. static void Name_StartNamingScreen(u8 taskId);
  67. static void Character_ProcessInput(u8 taskId);
  68. static void Outfit_ProcessInput(u8 taskId);
  69. static void Begin_ProcessInput(u8 taskId);
  70. static void DrawTitleText(void);
  71. static void DrawNewGameMenuTexts(void);
  72. static void DrawBgWindowFrames(void);
  73. static void DrawPlayerNameText(void);
  74.  
  75. EWRAM_DATA static bool8 sArrowPressed = FALSE;
  76.  
  77. static const u16 sNewGameMenuText_Pal[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal");
  78.  
  79. static const u8 defaultName[] = _("Brendan");
  80.  
  81. static const u8 *const sNewGameMenuItemsNames[MENUITEM_COUNT] =
  82. {
  83.     [MENUITEM_NAME]         = gText_NewGameName,
  84.     [MENUITEM_CHARACTER]    = gText_NewGameCharacter,
  85.     [MENUITEM_OUTFIT]       = gText_NewGameOutfit,
  86.     [MENUITEM_BEGIN]        = gText_NewGameBegin,
  87. };
  88.  
  89. static const struct WindowTemplate sNewGameMenuWinTemplates[] =
  90. {
  91.     {
  92.         .bg = 1,
  93.         .tilemapLeft = 2,
  94.         .tilemapTop = 1,
  95.         .width = 10,
  96.         .height = 2,
  97.         .paletteNum = 1,
  98.         .baseBlock = 2
  99.     },
  100.     {
  101.         .bg = 0,
  102.         .tilemapLeft = 2,
  103.         .tilemapTop = 5,
  104.         .width = 10,
  105.         .height = 14,
  106.         .paletteNum = 1,
  107.         .baseBlock = 22
  108.     },
  109.     {
  110.         .bg = 1,
  111.         .tilemapLeft = 16,
  112.         .tilemapTop = 5,
  113.         .width = 12,
  114.         .height = 2,
  115.         .paletteNum = 1,
  116.         .baseBlock = 162
  117.     },
  118.     DUMMY_WIN_TEMPLATE
  119. };
  120.  
  121. static const struct BgTemplate sNewGameMenuBgTemplates[] =
  122. {
  123.    {
  124.        .bg = 1,
  125.        .charBaseIndex = 1,
  126.        .mapBaseIndex = 30,
  127.        .screenSize = 0,
  128.        .paletteMode = 0,
  129.        .priority = 0,
  130.        .baseTile = 0
  131.    },
  132.    {
  133.        .bg = 0,
  134.        .charBaseIndex = 1,
  135.        .mapBaseIndex = 31,
  136.        .screenSize = 0,
  137.        .paletteMode = 0,
  138.        .priority = 1,
  139.        .baseTile = 0
  140.    },
  141.    {
  142.        .bg = 1,
  143.        .charBaseIndex = 1,
  144.        .mapBaseIndex = 32,
  145.        .screenSize = 0,
  146.        .paletteMode = 0,
  147.        .priority = 0,
  148.        .baseTile = 0
  149.    },
  150. };
  151.  
  152. static const u16 sNewGameMenuBg_Pal[] = {RGB(31, 31, 16)};
  153.  
  154. // code
  155. static void MainCB2(void)
  156. {
  157.     RunTasks();
  158.     AnimateSprites();
  159.     BuildOamBuffer();
  160.     UpdatePaletteFade();
  161. }
  162.  
  163. static void VBlankCB(void)
  164. {
  165.     LoadOam();
  166.     ProcessSpriteCopyRequests();
  167.     TransferPlttBuffer();
  168. }
  169.  
  170. void CB2_InitNewGameMenu(void)
  171. {
  172.     switch (gMain.state)
  173.     {
  174.     default:
  175.     case 0:
  176.         SetVBlankCallback(NULL);
  177.         gMain.state++;
  178.         break;
  179.     case 1:
  180.         DmaClearLarge16(3, (void*)(VRAM), VRAM_SIZE, 0x1000);
  181.         DmaClear32(3, OAM, OAM_SIZE);
  182.         DmaClear16(3, PLTT, PLTT_SIZE);
  183.         SetGpuReg(REG_OFFSET_DISPCNT, 0);
  184.         ResetBgsAndClearDma3BusyFlags(0);
  185.         InitBgsFromTemplates(0, sNewGameMenuBgTemplates, ARRAY_COUNT(sNewGameMenuBgTemplates));
  186.         ChangeBgX(0, 0, 0);
  187.         ChangeBgY(0, 0, 0);
  188.         ChangeBgX(1, 0, 0);
  189.         ChangeBgY(1, 0, 0);
  190.         ChangeBgX(2, 0, 0);
  191.         ChangeBgY(2, 0, 0);
  192.         ChangeBgX(3, 0, 0);
  193.         ChangeBgY(3, 0, 0);
  194.         InitWindows(sNewGameMenuWinTemplates);
  195.         DeactivateAllTextPrinters();
  196.         SetGpuReg(REG_OFFSET_WIN0H, 0);
  197.         SetGpuReg(REG_OFFSET_WIN0V, 0);
  198.         SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0);
  199.         SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_CLR);
  200.         SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_DARKEN);
  201.         SetGpuReg(REG_OFFSET_BLDALPHA, 0);
  202.         SetGpuReg(REG_OFFSET_BLDY, 4);
  203.         SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
  204.         ShowBg(0);
  205.         ShowBg(1);
  206.         gMain.state++;
  207.         break;
  208.     case 2:
  209.         ResetPaletteFade();
  210.         ScanlineEffect_Stop();
  211.         ResetTasks();
  212.         ResetSpriteData();
  213.         gMain.state++;
  214.         break;
  215.     case 3:
  216.         LoadBgTiles(1, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1A2);
  217.         gMain.state++;
  218.         break;
  219.     case 4:
  220.         LoadPalette(sNewGameMenuBg_Pal, 0, sizeof(sNewGameMenuBg_Pal));
  221.         LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 0x70, 0x20);
  222.         gMain.state++;
  223.         break;
  224.     case 5:
  225.         LoadPalette(sNewGameMenuText_Pal, 16, sizeof(sNewGameMenuText_Pal));
  226.         gMain.state++;
  227.         break;
  228.     case 6:
  229.         PutWindowTilemap(0);
  230.         DrawTitleText();
  231.         gMain.state++;
  232.         break;
  233.     case 7:
  234.         gMain.state++;
  235.         break;
  236.     case 8:
  237.         PutWindowTilemap(1);
  238.         DrawNewGameMenuTexts();
  239.         gMain.state++;
  240.     case 9:
  241.         PutWindowTilemap(2);
  242.         StringCopy(gStringVar1, defaultName);
  243.         DrawPlayerNameText();
  244.         gMain.state++;
  245.     case 10:
  246.         DrawBgWindowFrames();
  247.         gMain.state++;
  248.         break;
  249.     case 11:
  250.     {
  251.         u8 taskId = CreateTask(Task_NewGameMenuFadeIn, 0);
  252.        
  253.         gTasks[taskId].data[TD_MENUSELECTION] = 0;
  254.         VarSet(VAR_CHARACTER, FEMALE);
  255.        
  256.         HighlightNewGameMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
  257.         CopyWindowToVram(WIN_NEW_GAME_MENU, 3);
  258.         gMain.state++;
  259.         break;
  260.     }
  261.     case 12:
  262.         PlayBGM(MUS_RG_MYSTERY_GIFT);
  263.         BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
  264.         SetVBlankCallback(VBlankCB);
  265.         SetMainCallback2(MainCB2);
  266.         return;
  267.     }
  268. }
  269.  
  270. void CB2_ReturnToNewGameMenuFromNamingScreen(void)
  271. {
  272.         u8 taskId;
  273.    
  274.         SetVBlankCallback(NULL);
  275.         DmaClearLarge16(3, (void*)(VRAM), VRAM_SIZE, 0x1000);
  276.         DmaClear32(3, OAM, OAM_SIZE);
  277.         DmaClear16(3, PLTT, PLTT_SIZE);
  278.         SetGpuReg(REG_OFFSET_DISPCNT, 0);
  279.         ResetBgsAndClearDma3BusyFlags(0);
  280.         InitBgsFromTemplates(0, sNewGameMenuBgTemplates, ARRAY_COUNT(sNewGameMenuBgTemplates));
  281.         ChangeBgX(0, 0, 0);
  282.         ChangeBgY(0, 0, 0);
  283.         ChangeBgX(1, 0, 0);
  284.         ChangeBgY(1, 0, 0);
  285.         ChangeBgX(2, 0, 0);
  286.         ChangeBgY(2, 0, 0);
  287.         ChangeBgX(3, 0, 0);
  288.         ChangeBgY(3, 0, 0);
  289.         InitWindows(sNewGameMenuWinTemplates);
  290.         DeactivateAllTextPrinters();
  291.         SetGpuReg(REG_OFFSET_WIN0H, 0);
  292.         SetGpuReg(REG_OFFSET_WIN0V, 0);
  293.         SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0);
  294.         SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_CLR);
  295.         SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_DARKEN);
  296.         SetGpuReg(REG_OFFSET_BLDALPHA, 0);
  297.         SetGpuReg(REG_OFFSET_BLDY, 4);
  298.         SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
  299.         ShowBg(0);
  300.         ShowBg(1);
  301.         ResetPaletteFade();
  302.         ScanlineEffect_Stop();
  303.         ResetTasks();
  304.         ResetSpriteData();
  305.         LoadBgTiles(1, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1A2);
  306.         LoadPalette(sNewGameMenuBg_Pal, 0, sizeof(sNewGameMenuBg_Pal));
  307.         LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 0x70, 0x20);
  308.         LoadPalette(sNewGameMenuText_Pal, 16, sizeof(sNewGameMenuText_Pal));
  309.         PutWindowTilemap(0);
  310.         DrawTitleText();
  311.         PutWindowTilemap(1);
  312.         DrawNewGameMenuTexts();
  313.         PutWindowTilemap(2);
  314.         DrawPlayerNameText();
  315.         DrawBgWindowFrames();
  316.         taskId = CreateTask(Task_NewGameMenuFadeIn, 0);
  317.         gTasks[taskId].data[TD_MENUSELECTION] = 0;
  318.         HighlightNewGameMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
  319.         CopyWindowToVram(WIN_NEW_GAME_MENU, 3);
  320.         BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
  321.         SetVBlankCallback(VBlankCB);
  322.         SetMainCallback2(MainCB2);
  323. }
  324.  
  325. static void Task_NewGameMenuFadeIn(u8 taskId)
  326. {
  327.     if (!gPaletteFade.active)
  328.         gTasks[taskId].func = Task_NewGameMenuProcessInput;
  329. }
  330.  
  331. static void Task_NewGameMenuProcessInput(u8 taskId)
  332. {
  333.     if (JOY_NEW(B_BUTTON))
  334.     {
  335.         gTasks[taskId].func = Task_NewGameMenuBackToMainMenu;
  336.     }
  337.     else if (JOY_NEW(DPAD_UP))
  338.     {
  339.         if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
  340.             gTasks[taskId].data[TD_MENUSELECTION]--;
  341.         else
  342.             gTasks[taskId].data[TD_MENUSELECTION] = MENUITEM_BEGIN;
  343.         HighlightNewGameMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
  344.     }
  345.     else if (JOY_NEW(DPAD_DOWN))
  346.     {
  347.         if (gTasks[taskId].data[TD_MENUSELECTION] < MENUITEM_BEGIN)
  348.             gTasks[taskId].data[TD_MENUSELECTION]++;
  349.         else
  350.             gTasks[taskId].data[TD_MENUSELECTION] = 0;
  351.         HighlightNewGameMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
  352.     }
  353.     else
  354.     {
  355.         switch (gTasks[taskId].data[TD_MENUSELECTION])
  356.         {
  357.         case MENUITEM_NAME:
  358.             Name_ProcessInput(taskId);
  359.             break;
  360.         case MENUITEM_CHARACTER:
  361.             Character_ProcessInput(taskId);
  362.             break;
  363.         case MENUITEM_OUTFIT:
  364.             Outfit_ProcessInput(taskId);
  365.             break;
  366.         case MENUITEM_BEGIN:
  367.             Begin_ProcessInput(taskId);
  368.             break;
  369.         default:
  370.             return;
  371.         }
  372.  
  373.         if (sArrowPressed)
  374.         {
  375.             sArrowPressed = FALSE;
  376.             CopyWindowToVram(WIN_NEW_GAME_MENU, 2);
  377.         }
  378.     }
  379. }
  380.  
  381. static void Task_NewGameMenuBackToMainMenu(u8 taskId)
  382. {
  383.     PlayBGM(MUS_NONE);
  384.     BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
  385.     gTasks[taskId].func = Task_NewGameMenuFadeOut;
  386. }
  387.  
  388. static void Task_NewGameMenuBeginGame(u8 taskId)
  389. {
  390.     BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
  391.     gTasks[taskId].func = Task_NewGameMenuBeginGameCleanup;
  392. }
  393.  
  394. static void Task_NewGameMenuBeginGameCleanup(u8 taskId)
  395. {
  396.     u8 i;
  397.    
  398.     if (!gPaletteFade.active)
  399.     {
  400.         gSaveBlock2Ptr->playerGender = VarGet(VAR_CHARACTER);
  401.        
  402.         for (i = 0; i < PLAYER_NAME_LENGTH; i++)
  403.             gSaveBlock2Ptr->playerName[i] = gStringVar1[i];
  404.         gSaveBlock2Ptr->playerName[PLAYER_NAME_LENGTH] = EOS;
  405.        
  406.         FreeAllWindowBuffers();
  407.         SetMainCallback2(CB2_NewGame);
  408.         DestroyTask(taskId);
  409.     }
  410. }
  411.  
  412. static void Task_NewGameMenuFadeOut(u8 taskId)
  413. {
  414.     if (!gPaletteFade.active)
  415.     {
  416.         DestroyTask(taskId);
  417.         FreeAllWindowBuffers();
  418.         SetMainCallback2(gMain.savedCallback);
  419.     }
  420. }
  421.  
  422. static void HighlightNewGameMenuItem(u8 index)
  423. {
  424.     SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(16, 96));
  425.     SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(index * 16 + 40, index * 16 + 56));
  426. }
  427.  
  428. static void Name_ProcessInput(u8 taskId)
  429. {
  430.     if (JOY_NEW(A_BUTTON))
  431.     {
  432.         BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
  433.         gTasks[taskId].func = Name_StartNamingScreen;
  434.     }
  435. }
  436.  
  437. static void Name_StartNamingScreen(u8 taskId)
  438. {
  439.     if (!gPaletteFade.active)
  440.     {
  441.         FreeAllWindowBuffers();
  442.         DestroyTask(taskId);
  443.         DoNamingScreen(NAMING_SCREEN_PLAYER, gStringVar1, VarGet(VAR_CHARACTER), 0, 0, CB2_ReturnToNewGameMenuFromNamingScreen);
  444.     }
  445. }
  446.  
  447. static void Character_ProcessInput(u8 taskId)
  448. {
  449.     if (JOY_NEW(DPAD_LEFT))
  450.     {
  451.         PlaySE(SE_SELECT);
  452.         if (VarGet(VAR_CHARACTER) == MALE)
  453.             VarSet(VAR_CHARACTER, FEMALE);
  454.         else if (VarGet(VAR_CHARACTER) == FEMALE)
  455.             VarSet(VAR_CHARACTER, MALE);
  456.     }
  457.     if (JOY_NEW(DPAD_RIGHT))
  458.     {
  459.         PlaySE(SE_SELECT);
  460.         if (VarGet(VAR_CHARACTER) == MALE)
  461.             VarSet(VAR_CHARACTER, FEMALE);
  462.         else if (VarGet(VAR_CHARACTER) == FEMALE)
  463.             VarSet(VAR_CHARACTER, MALE);
  464.     }
  465. }
  466.  
  467. static void Outfit_ProcessInput(u8 taskId)
  468. {
  469.     if (JOY_NEW(DPAD_LEFT))
  470.     {
  471.         PlaySE(SE_SELECT);
  472.     }
  473.     if (JOY_NEW(DPAD_RIGHT))
  474.     {
  475.         PlaySE(SE_SELECT);
  476.     }
  477. }
  478.  
  479. static void Begin_ProcessInput(u8 taskId)
  480. {
  481.     if (JOY_NEW(A_BUTTON))
  482.     {
  483.         gTasks[taskId].func = Task_NewGameMenuBeginGame;
  484.     }
  485. }
  486.  
  487. static void DrawTitleText(void)
  488. {
  489.     FillWindowPixelBuffer(WIN_NEW_GAME_TITLE, PIXEL_FILL(1));
  490.     AddTextPrinterParameterized(WIN_NEW_GAME_TITLE, 1, gText_NewGameMenuTitle, 8, 1, TEXT_SPEED_FF, NULL);
  491.     CopyWindowToVram(WIN_NEW_GAME_TITLE, 3);
  492. }
  493.  
  494. static void DrawNewGameMenuTexts(void)
  495. {
  496.     u8 i;
  497.  
  498.     FillWindowPixelBuffer(WIN_NEW_GAME_MENU, PIXEL_FILL(1));
  499.     for (i = 0; i < MENUITEM_COUNT; i++)
  500.     {
  501.         AddTextPrinterParameterized(WIN_NEW_GAME_MENU, 1, sNewGameMenuItemsNames[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL);
  502.     }
  503.     CopyWindowToVram(WIN_NEW_GAME_MENU, 3);
  504. }
  505.  
  506. static void DrawPlayerNameText(void)
  507. {
  508.     FillWindowPixelBuffer(WIN_NEW_GAME_NAME, PIXEL_FILL(1));
  509.     PrintPlayerNameOnWindow(WIN_NEW_GAME_NAME, gStringVar1, 8, 1);
  510.     CopyWindowToVram(WIN_NEW_GAME_NAME, 3);
  511. }
  512.  
  513. #define TILE_TOP_CORNER_L 0x1A2
  514. #define TILE_TOP_EDGE     0x1A3
  515. #define TILE_TOP_CORNER_R 0x1A4
  516. #define TILE_LEFT_EDGE    0x1A5
  517. #define TILE_RIGHT_EDGE   0x1A7
  518. #define TILE_BOT_CORNER_L 0x1A8
  519. #define TILE_BOT_EDGE     0x1A9
  520. #define TILE_BOT_CORNER_R 0x1AA
  521.  
  522. static void DrawBgWindowFrames(void)
  523. {
  524.     //                     bg, tile,              x, y, width, height, palNum
  525.     // Draw title window frame
  526.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_L,  1,  0,  1,  1,  7);
  527.     FillBgTilemapBufferRect(1, TILE_TOP_EDGE,      2,  0, 11,  1,  7);
  528.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_R, 12,  0,  1,  1,  7);
  529.     FillBgTilemapBufferRect(1, TILE_LEFT_EDGE,     1,  1,  1,  2,  7);
  530.     FillBgTilemapBufferRect(1, TILE_RIGHT_EDGE,   12,  1,  1,  2,  7);
  531.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_L,  1,  3,  1,  1,  7);
  532.     FillBgTilemapBufferRect(1, TILE_BOT_EDGE,      2,  3, 11,  1,  7);
  533.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_R, 12,  3,  1,  1,  7);
  534.  
  535.     // Draw new game menu window frame
  536.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_L,  1,  4,  1,  1,  7);
  537.     FillBgTilemapBufferRect(1, TILE_TOP_EDGE,      2,  4, 11,  1,  7);
  538.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_R, 12,  4,  1,  1,  7);
  539.     FillBgTilemapBufferRect(1, TILE_LEFT_EDGE,     1,  5,  1, 18,  7);
  540.     FillBgTilemapBufferRect(1, TILE_RIGHT_EDGE,   12,  5,  1, 18,  7);
  541.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_L,  1, 19,  1,  1,  7);
  542.     FillBgTilemapBufferRect(1, TILE_BOT_EDGE,      2, 19, 11,  1,  7);
  543.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_R, 12, 19,  1,  1,  7);
  544.    
  545.     // Draw player name window frame
  546.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_L, 15,  4,  1,  1,  7);
  547.     FillBgTilemapBufferRect(1, TILE_TOP_EDGE,     16,  4, 11,  1,  7);
  548.     FillBgTilemapBufferRect(1, TILE_TOP_CORNER_R, 27,  4,  1,  1,  7);
  549.     FillBgTilemapBufferRect(1, TILE_LEFT_EDGE,    15,  5,  1,  2,  7);
  550.     FillBgTilemapBufferRect(1, TILE_RIGHT_EDGE,   27,  5,  1,  2,  7);
  551.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_L, 15,  7,  1,  1,  7);
  552.     FillBgTilemapBufferRect(1, TILE_BOT_EDGE,     16,  7, 11,  1,  7);
  553.     FillBgTilemapBufferRect(1, TILE_BOT_CORNER_R, 27,  7,  1,  1,  7);
  554.  
  555.     CopyBgTilemapBufferToVram(1);
  556. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement