{"action":"created","comment":{"url":"https://api.github.com/repos/pret/pokeemerald/pulls/comments/177874155","pull_request_review_id":107830610,"id":177874155,"diff_hunk":"@@ -224,82 +363,1069 @@ static void BuildStartMenuActions_BattlePyramid(void)\n     AddStartMenuAction(MENU_ACTION_EXIT);\n }\n \n-static void BuildStartMenuActions_MultiBattleRoom(void)\n+static void BuildMultiBattleRoomStartMenu(void)\n {\n     AddStartMenuAction(MENU_ACTION_POKEMON);\n     AddStartMenuAction(MENU_ACTION_PLAYER);\n     AddStartMenuAction(MENU_ACTION_OPTION);\n     AddStartMenuAction(MENU_ACTION_EXIT);\n }\n \n-void DisplaySafariBallsWindow(void)\n+static void ShowSafariBallsWindow(void)\n {\n     sSafariBallsWindowId = AddWindow(&gSafariBallsWindowTemplate);\n     PutWindowTilemap(sSafariBallsWindowId);\n-    NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, 0);\n+    NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, FALSE);\n     ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);\n     StringExpandPlaceholders(gStringVar4, gText_SafariBallStock);\n     PrintTextOnWindow(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);\n     CopyWindowToVram(sSafariBallsWindowId, 2);\n }\n \n-void DisplayPyramidFloorWindow(void)\n+static void ShowPyramidFloorWindow(void)\n {\n-    // TODO: fix location\n-    if (gSaveBlock2Ptr->field_CAA[4] == 7)\n+    if (gSaveBlock2Ptr->field_CAA[4] == 7) // TODO: fix location\n+    {\n         sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_1);\n+    }\n     else\n+    {\n         sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2);\n+    }\n+\n     PutWindowTilemap(sBattlePyramidFloorWindowId);\n-    NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, 0);\n+    NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);\n     StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->field_CAA[4]]);\n     StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);\n     PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);\n     CopyWindowToVram(sBattlePyramidFloorWindowId, 2);\n }\n \n-void RemoveExtraStartMenuWindows(void)\n+static void HideExtraStartMenuWindows(void)\n {\n     if (GetSafariZoneFlag())\n     {\n-        sub_8198070(sSafariBallsWindowId, 0);\n+        sub_8198070(sSafariBallsWindowId, FALSE);\n         CopyWindowToVram(sSafariBallsWindowId, 2);\n         RemoveWindow(sSafariBallsWindowId);\n     }\n     if (InBattlePyramid())\n     {\n-        sub_8198070(sBattlePyramidFloorWindowId, 0);\n+        sub_8198070(sBattlePyramidFloorWindowId, FALSE);\n         RemoveWindow(sBattlePyramidFloorWindowId);\n     }\n }\n \n-/*\n-// Prints n menu items starting at *index\n-static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n)\n+static bool32 PrintStartMenuActions(s8 *pIndex, u32 count)\n {\n-    s8 _index = *index;\n-\n+    s8 index = *pIndex;\n+    \n     do\n     {\n-        if (sStartMenuItems[sCurrentStartMenuActions[_index]].func.u8_void == StartMenu_PlayerName)\n+        if (sStartMenuItems[sCurrentStartMenuActions[index]].func.u8_void == StartMenuPlayerNameCallback) {\n+            PrintPlayerNameOnWindow(GetStartMenuWindowId(), sStartMenuItems[sCurrentStartMenuActions[index]].text, 8, (index << 4) + 9);\n+        }\n+        else {\n+            StringExpandPlaceholders(gStringVar4, sStartMenuItems[sCurrentStartMenuActions[index]].text);\n+            PrintTextOnWindow(GetStartMenuWindowId(), 1, gStringVar4, 8, (index << 4) + 9, 0xFF, NULL);\n+        }\n+\n+        index++;\n+        if (index >= sNumStartMenuActions) {\n+            *pIndex = index;\n+            return TRUE;\n+        }\n+\n+        count--;\n+    }\n+    while (count != 0);\n+\n+    *pIndex = index;\n+    return FALSE;\n+}\n+\n+static bool32 InitStartMenuStep(void) \n+{\n+    s8 value = sUnknown_02037619[0];\n+\n+    switch (value) \n+    {\n+    case 0:\n+        sUnknown_02037619[0]++;\n+        break;\n+    case 1:\n+        BuildStartMenuActions();\n+        sUnknown_02037619[0]++;\n+        break;\n+    case 2:\n+        sub_81973A4();\n+        NewMenuHelpers_DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);\n+        sUnknown_02037619[1] = 0;\n+        sUnknown_02037619[0]++;\n+        break;\n+    case 3:\n+        if (GetSafariZoneFlag() != FALSE)\n+        {\n+            ShowSafariBallsWindow();\n+        }\n+        if (InBattlePyramid() != FALSE) \n+        {\n+            ShowPyramidFloorWindow();\n+        }\n+        sUnknown_02037619[0]++;\n+        break;\n+    case 4:\n+        if (PrintStartMenuActions(&sUnknown_02037619[1], 2) == FALSE) \n+        {\n+            break;\n+        }\n+        sUnknown_02037619[0]++;\n+        break;\n+    case 5:\n+        sStartMenuCursorPos = sub_81983AC(GetStartMenuWindowId(), 1, 0, 9, 16, sNumStartMenuActions, sStartMenuCursorPos);\n+        CopyWindowToVram(GetStartMenuWindowId(), TRUE);\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static void InitStartMenu(void)\n+{\n+    sUnknown_02037619[0] = 0;\n+    sUnknown_02037619[1] = 0;\n+    while (!InitStartMenuStep());\n+}\n+\n+static void StartMenuTask(u8 taskId)\n+{\n+    if (InitStartMenuStep() == TRUE)\n+    {\n+        SwitchTaskToFollowupFunc(taskId);\n+    }\n+}\n+\n+static void CreateStartMenuTask(TaskFunc followupFunc)\n+{\n+    u8 taskId;\n+\n+    sUnknown_02037619[0] = 0;\n+    sUnknown_02037619[1] = 0;\n+    taskId = CreateTask(StartMenuTask, 0x50);\n+    SetTaskFuncWithFollowupFunc(taskId, StartMenuTask, followupFunc);\n+}\n+\n+static bool8 sub_809FA00(void) \n+{\n+    if (InitStartMenuStep() == FALSE)\n+    {\n+        return FALSE;\n+    }\n+\n+    sub_80AF688();\n+    return TRUE;\n+}\n+\n+void sub_809FA18(void) // Called from field_screen.s\n+{\n+    sUnknown_02037619[0] = 0;\n+    sUnknown_02037619[1] = 0;\n+    gUnknown_03005DB0 = &sub_809FA00;\n+}\n+\n+void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s\n+{\n+    struct Task* task = &gTasks[taskId];\n+\n+    switch(task->data[0]) \n+    {\n+    case 0:\n+        if (InUnionRoom() == TRUE)\n+        {\n+            var_800D_set_xB();\n+        }\n+\n+        gMenuCallback = HandleStartMenuInput;\n+        task->data[0]++;\n+        break;\n+    case 1:\n+        if (gMenuCallback() == TRUE)\n         {\n+            DestroyTask(taskId);\n+        }\n+        break;\n+    }\n+}\n+\n+void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s\n+{\n+    if (!is_c1_link_related_active())\n+    {\n+        FreezeMapObjects();\n+        sub_808B864();\n+        sub_808BCF4();\n+    }\n+    CreateStartMenuTask(sub_809FA34);\n+    ScriptContext2_Enable();\n+}\n \n+static bool8 HandleStartMenuInput(void)\n+{\n+    if (gMain.newKeys & DPAD_UP)\n+    {\n+        PlaySE(SE_SELECT);\n+        sStartMenuCursorPos = MoveMenuCursor(-1);\n+    }\n+    \n+    if (gMain.newKeys & DPAD_DOWN)\n+    {\n+        PlaySE(SE_SELECT);\n+        sStartMenuCursorPos = MoveMenuCursor(1);\n+    }\n+    \n+    if (gMain.newKeys & A_BUTTON)\n+    {\n+        PlaySE(SE_SELECT);\n+        if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func.u8_void == StartMenuPokedexCallback)\n+        {\n+            if (GetNationalPokedexCount(0) == 0) {\n+                return FALSE;\n+            }\n         }\n-        else\n+        \n+        gMenuCallback = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func.u8_void;\n+        \n+        if (gMenuCallback != StartMenuSaveCallback \n+            && gMenuCallback != StartMenuExitCallback\n+            && gMenuCallback != StartMenuSafariZoneRetireCallback\n+            && gMenuCallback != StartMenuBattlePyramidRetireCallback)\n         {\n+           FadeScreen(1, 0);\n+        }\n+        \n+        return FALSE;\n+    }\n+    \n+    if (gMain.newKeys & (START_BUTTON | B_BUTTON))\n+    {\n+        HideExtraStartMenuWindows();\n+        HideStartMenu();\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuPokedexCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(sub_80BB534); // Display pokedex\n+        \n+        return TRUE;\n+    }\n+    \n+    return FALSE;\n+}\n+\n+static bool8 StartMenuPokemonCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu\n+        \n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuBagCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuPokeNavCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(CB2_PokeNav);  // Display PokeNav\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuPlayerNameCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n \n+        if (is_c1_link_related_active() || InUnionRoom())\n+        {\n+            sub_80C4DDC(CB2_ReturnToFieldWithOpenMenu); // Display trainer card\n+        }\n+        else if (FlagGet(FLAG_SYS_FRONTIER_PASS))\n+        {\n+            sub_80C51C4(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass\n         }\n+        else \n+        {\n+            sub_80C4DDC(CB2_ReturnToFieldWithOpenMenu); // Display trainer card\n+        }\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuSaveCallback(void)\n+{\n+    if (InBattlePyramid())\n+    {\n+        HideExtraStartMenuWindows();\n+    }\n+\n+    gMenuCallback = SaveStartCallback; // Display save menu\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuOptionCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(CB2_InitOptionMenu); // Display option menu\n+        gMain.savedCallback = CB2_ReturnToFieldWithOpenMenu;\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuExitCallback(void)\n+{\n+    HideExtraStartMenuWindows();\n+    HideStartMenu(); // Hide start menu\n+    \n+    return TRUE;\n+}\n+\n+static bool8 StartMenuSafariZoneRetireCallback(void)\n+{\n+    HideExtraStartMenuWindows();\n+    HideStartMenu();\n+    SafariZoneRetirePrompt();\n+\n+    return TRUE;\n+}\n+\n+static bool8 StartMenuLinkModePlayerNameCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        overworld_free_bg_tilemaps();\n+        sub_80C4E74(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 StartMenuBattlePyramidRetireCallback(void)\n+{\n+    gMenuCallback = BattlePyramidRetireStartCallback; // Confirm retire\n+\n+    return FALSE;\n+}\n+\n+void sub_809FDD4(void) // Called from battle_frontier_2.s\n+{\n+    sub_8197DF8(0, FALSE);\n+    sub_80984F4();\n+    CreateStartMenuTask(sub_809FA34);\n+    ScriptContext2_Enable();\n+}\n+\n+static bool8 StartMenuBattlePyramidBagCallback(void)\n+{\n+    if (!gPaletteFade.active)\n+    {\n+        play_some_sound();\n+        HideExtraStartMenuWindows();\n+        overworld_free_bg_tilemaps();\n+        SetMainCallback2(sub_81C4EFC);  // Display battle pyramid bag\n+\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 SaveStartCallback(void)\n+{\n+    InitSave();\n+    gMenuCallback = SaveCallback;\n+\n+    return FALSE;\n+}\n+\n+static bool8 SaveCallback(void)\n+{\n+    switch (RunSaveCallback())\n+    {\n+    case SAVE_IN_PROGRESS:\n+        return FALSE;\n+    case SAVE_CANCELED: // Back to start menu\n+        sub_8197DF8(0, FALSE);\n+        InitStartMenu();\n+        gMenuCallback = HandleStartMenuInput;\n+        return FALSE;\n+    case SAVE_SUCCESS:\n+    case SAVE_ERROR:    // Close start menu\n+        sub_8197DF8(0, TRUE);\n+        sub_80984F4();\n+        ScriptContext2_Disable();\n+        sub_81A9EC8();\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n \n-    } while (++_index > sNumStartMenuActions);\n+static bool8 BattlePyramidRetireStartCallback(void)\n+{\n+    InitBattlePyramidRetire();\n+    gMenuCallback = BattlePyramidRetireCallback;\n+\n+    return FALSE;\n+}\n+\n+static bool8 BattlePyramidRetireReturnCallback(void)\n+{\n+    InitStartMenu();\n+    gMenuCallback = HandleStartMenuInput;\n+\n+    return FALSE;\n+}\n \n-    if (--n == 0)\n+static bool8 BattlePyramidRetireCallback(void)\n+{\n+    switch (RunSaveCallback())\n     {\n-        *index = _index;\n+    case SAVE_SUCCESS: // No (Stay in battle pyramid)\n+        HideExtraStartMenuWindows();\n+        gMenuCallback = BattlePyramidRetireReturnCallback;\n+        return FALSE;\n+    case SAVE_IN_PROGRESS:\n         return FALSE;\n+    case SAVE_CANCELED: // Yes (Retire from battle pyramid)\n+        sub_8197DF8(0, TRUE);\n+        sub_80984F4();\n+        ScriptContext2_Disable();\n+        ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static void InitSave(void)\n+{\n+    save_serialize_map();\n+    sSaveDialogCallback = SaveConfirmSaveCallback;\n+    sSavingComplete = FALSE;\n+}\n+\n+static u8 RunSaveCallback(void)\n+{\n+    // True if text is still printing\n+    if (sub_8197224() == TRUE)\n+    {\n+        return SAVE_IN_PROGRESS;\n+    }\n+\n+    sSavingComplete = FALSE;\n+    return sSaveDialogCallback();\n+}\n+\n+void SaveGame(void) // Called from cable_club.s\n+{\n+    InitSave();\n+    CreateTask(SaveGameTask, 0x50);\n+}\n+\n+static void ShowSaveMessage(const u8 *message, u8 (*saveCallback)(void))\n+{\n+    StringExpandPlaceholders(gStringVar4, message);\n+    sub_819786C(0, TRUE);\n+    AddTextPrinterForMessage_2(TRUE);\n+    sSavingComplete = TRUE;\n+    sSaveDialogCallback = saveCallback;\n+}\n+\n+static void SaveGameTask(u8 taskId)\n+{\n+    u8 status = RunSaveCallback();\n+\n+    switch (status)\n+    {\n+    case SAVE_CANCELED:\n+    case SAVE_ERROR:\n+        gSpecialVar_Result = 0;\n+        break;\n+    case SAVE_SUCCESS:\n+        gSpecialVar_Result = status;\n+        break;\n+    case SAVE_IN_PROGRESS:\n+        return;\n+    }\n+    \n+    DestroyTask(taskId);\n+    EnableBothScriptContexts();\n+}\n+\n+static void sub_80A0014(void)\n+{\n+    sub_8197434(0, TRUE);\n+}\n+\n+static void HideSaveInfoWindow(void)\n+{\n+    RemoveSaveInfoWindow();\n+}\n+\n+static void SaveStartTimer(void)\n+{\n+    sSaveDialogTimer = 60;\n+}\n+\n+static bool8 SaveSuccesTimer(void)\n+{\n+    sSaveDialogTimer--;\n+\n+    if (gMain.heldKeys & A_BUTTON)\n+    {\n+        PlaySE(SE_SELECT);\n+        return TRUE;\n+    }\n+    else if (sSaveDialogTimer == 0)\n+    {\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static bool8 SaveErrorTimer(void)\n+{\n+    if (sSaveDialogTimer != 0)\n+    {\n+        sSaveDialogTimer--;\n+    }\n+    else if (gMain.heldKeys & A_BUTTON)\n+    {\n+        return TRUE;\n+    }\n+\n+    return FALSE;\n+}\n+\n+static u8 SaveConfirmSaveCallback(void)\n+{\n+    sub_819746C(GetStartMenuWindowId(), FALSE);\n+    remove_start_menu_window_maybe();\n+    ShowSaveInfoWindow();\n+\n+    if (InBattlePyramid())\n+    {\n+        ShowSaveMessage(gText_BattlePyramidConfirmRest, SaveYesNoCallback);\n+    }\n+    else \n+    {\n+        ShowSaveMessage(gText_ConfirmSave, SaveYesNoCallback);\n+    }\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveYesNoCallback(void)\n+{\n+    sub_8197930(); // Show Yes/No menu\n+    sSaveDialogCallback = SaveConfirmInputCallback;\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveConfirmInputCallback(void)\n+{\n+    switch (ProcessMenuInputNoWrap_())\n+    {\n+    case 0: // Yes\n+        switch (gSaveFileStatus)\n+        {\n+        case 0:\n+        case 2:\n+            if (gDifferentSaveFile == FALSE)\n+            {\n+                sSaveDialogCallback = SaveFileExistsCallback;\n+                return SAVE_IN_PROGRESS;\n+            }\n+\n+            sSaveDialogCallback = SaveSavingMessageCallback;\n+            return SAVE_IN_PROGRESS;\n+        default:\n+            sSaveDialogCallback = SaveFileExistsCallback;\n+            return SAVE_IN_PROGRESS;\n+        }\n+    case -1: // B Button\n+    case 1: // No\n+        HideSaveInfoWindow();\n+        sub_80A0014();\n+        return SAVE_CANCELED;\n+    }\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+// A different save file exists\n+static u8 SaveFileExistsCallback(void)\n+{\n+    if (gDifferentSaveFile == TRUE)\n+    {\n+        ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteNoCallback);\n+    }\n+    else \n+    {\n+        ShowSaveMessage(gText_AlreadySavedFile, SaveConfirmOverwriteCallback);\n+    }\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveConfirmOverwriteNoCallback(void)\n+{\n+    sub_8197948(1); // Show Yes/No menu (No selected as default)\n+    sSaveDialogCallback = SaveOverwriteInputCallback;\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveConfirmOverwriteCallback(void)\n+{\n+    sub_8197930(); // Show Yes/No menu\n+    sSaveDialogCallback = SaveOverwriteInputCallback;\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveOverwriteInputCallback(void)\n+{\n+    switch (ProcessMenuInputNoWrap_())\n+    {\n+    case 0: // Yes\n+        sSaveDialogCallback = SaveSavingMessageCallback;\n+        return SAVE_IN_PROGRESS;\n+    case -1: // B Button\n+    case 1: // No\n+        HideSaveInfoWindow();\n+        sub_80A0014();\n+        return SAVE_CANCELED;\n+    }\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveSavingMessageCallback(void)\n+{\n+    ShowSaveMessage(gText_SavingDontTurnOff, SaveDoSaveCallback);\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveDoSaveCallback(void)\n+{\n+    u8 saveStatus;\n+\n+    IncrementGameStat(GAME_STAT_SAVED_GAME);\n+    sub_81A9E90();\n+\n+    if (gDifferentSaveFile == TRUE)\n+    {\n+        saveStatus = TrySavingData(SAVE_OVERWRITE_DIFFERENT_FILE);\n+        gDifferentSaveFile = FALSE;\n+    }\n+    else \n+    {\n+        saveStatus = TrySavingData(SAVE_NORMAL);\n+    }\n+\n+    if (saveStatus == 1) // Save succeded\n+    {\n+        ShowSaveMessage(gText_PlayerSavedGame, SaveSuccessCallback);\n+    }\n+    else                 // Save error\n+    {\n+        ShowSaveMessage(gText_SaveError, SaveErrorCallback);\n+    }\n+\n+    SaveStartTimer();\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveSuccessCallback(void)\n+{\n+    if (!IsTextPrinterActive(0))\n+    {\n+        PlaySE(SE_SAVE);\n+        sSaveDialogCallback = SaveReturnSuccessCallback;\n+    }\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveReturnSuccessCallback(void)\n+{\n+    if (!IsSEPlaying() && SaveSuccesTimer())\n+    {\n+        HideSaveInfoWindow();\n+        return SAVE_SUCCESS;\n+    }\n+    else \n+    {\n+        return SAVE_IN_PROGRESS;\n+    }\n+}\n+\n+static u8 SaveErrorCallback(void)\n+{\n+    if (!IsTextPrinterActive(0))\n+    {\n+        PlaySE(SE_BOO);\n+        sSaveDialogCallback = SaveReturnErrorCallback;\n+    }\n+    \n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 SaveReturnErrorCallback(void)\n+{\n+    if (!SaveErrorTimer()) \n+    {\n+        return SAVE_IN_PROGRESS;\n     }\n     else\n     {\n-        *index = _index;\n+        HideSaveInfoWindow();\n+        return SAVE_ERROR;\n+    }\n+}\n+\n+static void InitBattlePyramidRetire(void)\n+{\n+    sSaveDialogCallback = BattlePyramidConfirmRetireCallback;\n+    sSavingComplete = FALSE;\n+}\n+\n+static u8 BattlePyramidConfirmRetireCallback(void)\n+{\n+    sub_819746C(GetStartMenuWindowId(), FALSE);\n+    remove_start_menu_window_maybe();\n+    ShowSaveMessage(gText_BattlePyramidConfirmRetire, BattlePyramidRetireYesNoCallback);\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 BattlePyramidRetireYesNoCallback(void)\n+{\n+    sub_8197948(1); // Show Yes/No menu (No selected as default)\n+    sSaveDialogCallback = BattlePyramidRetireInputCallback;\n+\n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static u8 BattlePyramidRetireInputCallback(void)\n+{\n+    switch (ProcessMenuInputNoWrap_())\n+    {\n+    case 0: // Yes\n+        return SAVE_CANCELED;\n+    case -1: // B Button\n+    case 1: // No\n+        sub_80A0014();\n+        return SAVE_SUCCESS;\n+    }\n+    \n+    return SAVE_IN_PROGRESS;\n+}\n+\n+static void sub_80A03D8(void)\n+{\n+    TransferPlttBuffer();\n+}\n+\n+static bool32 sub_80A03E4(u8 *par1)\n+{\n+    switch (*par1)\n+    {\n+    case 0:\n+        SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);\n+        SetVBlankCallback(NULL);\n+        ScanlineEffect_Stop();\n+        DmaClear16(3, PLTT, PLTT_SIZE);\n+        DmaFillLarge16(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000);\n+        break;\n+    case 1:\n+        ResetSpriteData();\n+        ResetTasks();\n+        ResetPaletteFade();\n+        ScanlineEffect_Clear();\n+        break;\n+    case 2:\n+        ResetBgsAndClearDma3BusyFlags(0);\n+        InitBgsFromTemplates(0, gUnknown_085105A8, ARRAY_COUNT(gUnknown_085105A8));\n+        InitWindows(gUnknown_085105AC);\n+        box_border_load_tiles_and_pal(0, 8, 224);\n+        sub_81978B0(240);\n+        break;\n+    case 3:\n+        ShowBg(0);\n+        BlendPalettes(-1, 16, 0);\n+        SetVBlankCallback(sub_80A03D8);\n+        EnableInterrupts(1);\n+        break;\n+    case 4:\n         return TRUE;\n     }\n-}*/\n+\n+    (*par1)++;\n+    return FALSE;\n+}\n+\n+void sub_80A0514(void) // Called from cable_club.s\n+{\n+    if (sub_80A03E4(&gMain.state))\n+    {\n+        CreateTask(&sub_80A0550, 0x50);\n+        SetMainCallback2(sub_80A0540);\n+    }\n+}\n+\n+static void sub_80A0540(void)\n+{\n+    RunTasks();\n+    UpdatePaletteFade();\n+}\n+\n+static void sub_80A0550(u8 taskId)\n+{\n+    s16 *step = gTasks[taskId].data;\n+\n+    if (!gPaletteFade.active)\n+    {\n+        switch (*step)\n+        {\n+        case 0:\n+            FillWindowPixelBuffer(0, 17);\n+            AddTextPrinterParameterized(0, \n+                                        1, \n+                                        gText_SavingDontTurnOffPower,\n+                                        255,\n+                                        NULL,\n+                                        2,\n+                                        1,\n+                                        3);\n+            sub_8098858(0, 8, 14);\n+            PutWindowTilemap(0);\n+            CopyWindowToVram(0, 3);\n+            BeginNormalPaletteFade(-1, 0, 16, 0, 0);\n+            \n+            if (gWirelessCommType != 0 && InUnionRoom())\n+            {\n+                if (sub_800A07C())\n+                {\n+                    *step = 1;\n+                }\n+                else \n+                {\n+                    *step = 5;\n+                }\n+            }\n+            else\n+            {\n+                gSoftResetDisabled = 1;\n+                *step = 1;\n+            }\n+            break;\n+        case 1:\n+            sub_8076D5C();\n+            sub_8153430();\n+            *step = 2;\n+            break;\n+        case 2:\n+            if (sub_8153474())\n+            {\n+                sav2_gender2_inplace_and_xFE();\n+                *step = 3;\n+                gSoftResetDisabled = 0;\n+            }\n+            break;\n+        case 3:\n+            BeginNormalPaletteFade(-1, 0, 0, 16, 0);\n+            *step = 4;\n+            break;\n+        case 4:\n+            FreeAllWindowBuffers();\n+            SetMainCallback2(gMain.savedCallback);\n+            DestroyTask(taskId);\n+            break;\n+        case 5:\n+            CreateTask(&sub_8153688, 0x5);\n+            *step = 6;\n+            break;\n+        case 6:\n+            if (!FuncIsActiveTask(&sub_8153688))\n+            {\n+                *step = 3;\n+            }\n+            break;\n+        }\n+    }\n+}\n+\n+static void ShowSaveInfoWindow(void)\n+{\n+    struct WindowTemplate saveInfoWindow = gSaveInfoWindowTemplate;\n+    u8 gender;\n+    u8 color;\n+    u32 xOffset;\n+    u32 yOffset;\n+    \n+    if (!FlagGet(FLAG_SYS_POKEDEX_GET))\n+    {\n+        saveInfoWindow.height -= 2;\n+    }\n+\n+    sSaveInfoWindowId = AddWindow(&saveInfoWindow);\n+    NewMenuHelpers_DrawStdWindowFrame(sSaveInfoWindowId, FALSE);\n+\n+    gender = gSaveBlock2Ptr->playerGender;\n+    color = TEXT_COLOR_RED;  // Red when female, blue when male.\n+\n+    if (gender == MALE)\n+    { \n+        color = TEXT_COLOR_BLUE;\n+    }\n+\n+    // Print region name\n+    yOffset = 1;\n+    sub_819A344(3, gStringVar4, TEXT_COLOR_GREEN);\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gStringVar4, 0, yOffset, 0xFF, NULL);\n+\n+    // Print player name\n+    yOffset = 0x11;\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gText_SavingPlayer, 0, yOffset, 0xFF, NULL);\n+    sub_819A344(0, gStringVar4, color);\n+    xOffset = GetStringRightAlignXOffset(1, gStringVar4, 0x70);\n+    PrintPlayerNameOnWindow(sSaveInfoWindowId, gStringVar4, xOffset, yOffset);\n+\n+    // Print badge count\n+    yOffset = 0x21;\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gText_SavingBadges, 0, yOffset, 0xFF, NULL);\n+    sub_819A344(4, gStringVar4, color);\n+    xOffset = GetStringRightAlignXOffset(1, gStringVar4, 0x70);\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gStringVar4, xOffset, yOffset, 0xFF, NULL);\n+\n+    if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE)\n+    {\n+        // Print pokedex count\n+        yOffset = 0x31;\n+        PrintTextOnWindow(sSaveInfoWindowId, 1, gText_SavingPokedex, 0, yOffset, 0xFF, NULL);\n+        sub_819A344(1, gStringVar4, color);\n+        xOffset = GetStringRightAlignXOffset(1, gStringVar4, 0x70);\n+        PrintTextOnWindow(sSaveInfoWindowId, 1, gStringVar4, xOffset, yOffset, 0xFF, NULL);\n+    }\n+\n+    // Print play time\n+    yOffset += 0x10;\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gText_SavingTime, 0, yOffset, 0xFF, NULL);\n+    sub_819A344(2, gStringVar4, color);\n+    xOffset = GetStringRightAlignXOffset(1, gStringVar4, 0x70);\n+    PrintTextOnWindow(sSaveInfoWindowId, 1, gStringVar4, xOffset, yOffset, 0xFF, NULL);\n+\n+    CopyWindowToVram(sSaveInfoWindowId, 2);\n+}\n+\n+static void RemoveSaveInfoWindow(void)\n+{\n+    sub_819746C(sSaveInfoWindowId, FALSE);\n+    RemoveWindow(sSaveInfoWindowId);\n+}\n+\n+static void sub_80A08A4(u8 taskId)\n+{\n+    if (!FuncIsActiveTask(sub_8153688))\n+    {\n+        DestroyTask(taskId);\n+        EnableBothScriptContexts();\n+    }\n+}\n+\n+void sub_80A08CC(void) // Referenced in data/specials.inc and data/scripts/maps/BattleFrontier_BattleTowerLobby.inc\n+{\n+    u32 taskId1;\n+    u32 taskId2;\n+\n+    taskId1 = CreateTask(&sub_8153688, 0x5);","path":"src/start_menu.c","position":1448,"original_position":1448,"commit_id":"57775a946d6a0274ca6d5530e00eb63d0963499d","original_commit_id":"57775a946d6a0274ca6d5530e00eb63d0963499d","user":{"login":"ProjectRevoTPP","id":11638236,"avatar_url":"https://avatars3.githubusercontent.com/u/11638236?v=4","gravatar_id":"","url":"https://api.github.com/users/ProjectRevoTPP","html_url":"https://github.com/ProjectRevoTPP","followers_url":"https://api.github.com/users/ProjectRevoTPP/followers","following_url":"https://api.github.com/users/ProjectRevoTPP/following{/other_user}","gists_url":"https://api.github.com/users/ProjectRevoTPP/gists{/gist_id}","starred_url":"https://api.github.com/users/ProjectRevoTPP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ProjectRevoTPP/subscriptions","organizations_url":"https://api.github.com/users/ProjectRevoTPP/orgs","repos_url":"https://api.github.com/users/ProjectRevoTPP/repos","events_url":"https://api.github.com/users/ProjectRevoTPP/events{/privacy}","received_events_url":"https://api.github.com/users/ProjectRevoTPP/received_events","type":"User","site_admin":false},"body":"Try ditching the temporary variables, taskId temps are basically never given u32 typing, so it was likely a direct CreateTask call assignment.","created_at":"2018-03-28T20:08:03Z","updated_at":"2018-03-28T20:08:03Z","html_url":"https://github.com/pret/pokeemerald/pull/232#discussion_r177874155","pull_request_url":"https://api.github.com/repos/pret/pokeemerald/pulls/232","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/comments/177874155"},"html":{"href":"https://github.com/pret/pokeemerald/pull/232#discussion_r177874155"},"pull_request":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/232"}}},"pull_request":{"url":"https://api.github.com/repos/pret/pokeemerald/pulls/232","id":178141420,"html_url":"https://github.com/pret/pokeemerald/pull/232","diff_url":"https://github.com/pret/pokeemerald/pull/232.diff","patch_url":"https://github.com/pret/pokeemerald/pull/232.patch","issue_url":"https://api.github.com/repos/pret/pokeemerald/issues/232","number":232,"state":"open","locked":false,"title":"Start menu","user":{"login":"HrPeanut","id":2881350,"avatar_url":"https://avatars2.githubusercontent.com/u/2881350?v=4","gravatar_id":"","url":"https://api.github.com/users/HrPeanut","html_url":"https://github.com/HrPeanut","followers_url":"https://api.github.com/users/HrPeanut/followers","following_url":"https://api.github.com/users/HrPeanut/following{/other_user}","gists_url":"https://api.github.com/users/HrPeanut/gists{/gist_id}","starred_url":"https://api.github.com/users/HrPeanut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HrPeanut/subscriptions","organizations_url":"https://api.github.com/users/HrPeanut/orgs","repos_url":"https://api.github.com/users/HrPeanut/repos","events_url":"https://api.github.com/users/HrPeanut/events{/privacy}","received_events_url":"https://api.github.com/users/HrPeanut/received_events","type":"User","site_admin":false},"body":"I have decompiled start_menu.s and renamed some functions. \r\nBuilding with `make compare` results in `pokeemerald.gba: OK`.","created_at":"2018-03-28T19:37:01Z","updated_at":"2018-03-28T20:08:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"217d4f601931c7a242891c6bde7f710888bccb28","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pret/pokeemerald/pulls/232/commits","review_comments_url":"https://api.github.com/repos/pret/pokeemerald/pulls/232/comments","review_comment_url":"https://api.github.com/repos/pret/pokeemerald/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pret/pokeemerald/issues/232/comments","statuses_url":"https://api.github.com/repos/pret/pokeemerald/statuses/57775a946d6a0274ca6d5530e00eb63d0963499d","head":{"label":"HrPeanut:start_menu","ref":"start_menu","sha":"57775a946d6a0274ca6d5530e00eb63d0963499d","user":{"login":"HrPeanut","id":2881350,"avatar_url":"https://avatars2.githubusercontent.com/u/2881350?v=4","gravatar_id":"","url":"https://api.github.com/users/HrPeanut","html_url":"https://github.com/HrPeanut","followers_url":"https://api.github.com/users/HrPeanut/followers","following_url":"https://api.github.com/users/HrPeanut/following{/other_user}","gists_url":"https://api.github.com/users/HrPeanut/gists{/gist_id}","starred_url":"https://api.github.com/users/HrPeanut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HrPeanut/subscriptions","organizations_url":"https://api.github.com/users/HrPeanut/orgs","repos_url":"https://api.github.com/users/HrPeanut/repos","events_url":"https://api.github.com/users/HrPeanut/events{/privacy}","received_events_url":"https://api.github.com/users/HrPeanut/received_events","type":"User","site_admin":false},"repo":{"id":125815085,"name":"pokeemerald","full_name":"HrPeanut/pokeemerald","owner":{"login":"HrPeanut","id":2881350,"avatar_url":"https://avatars2.githubusercontent.com/u/2881350?v=4","gravatar_id":"","url":"https://api.github.com/users/HrPeanut","html_url":"https://github.com/HrPeanut","followers_url":"https://api.github.com/users/HrPeanut/followers","following_url":"https://api.github.com/users/HrPeanut/following{/other_user}","gists_url":"https://api.github.com/users/HrPeanut/gists{/gist_id}","starred_url":"https://api.github.com/users/HrPeanut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HrPeanut/subscriptions","organizations_url":"https://api.github.com/users/HrPeanut/orgs","repos_url":"https://api.github.com/users/HrPeanut/repos","events_url":"https://api.github.com/users/HrPeanut/events{/privacy}","received_events_url":"https://api.github.com/users/HrPeanut/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/HrPeanut/pokeemerald","description":"disassembly of Pokémon Emerald","fork":true,"url":"https://api.github.com/repos/HrPeanut/pokeemerald","forks_url":"https://api.github.com/repos/HrPeanut/pokeemerald/forks","keys_url":"https://api.github.com/repos/HrPeanut/pokeemerald/keys{/key_id}","collaborators_url":"https://api.github.com/repos/HrPeanut/pokeemerald/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/HrPeanut/pokeemerald/teams","hooks_url":"https://api.github.com/repos/HrPeanut/pokeemerald/hooks","issue_events_url":"https://api.github.com/repos/HrPeanut/pokeemerald/issues/events{/number}","events_url":"https://api.github.com/repos/HrPeanut/pokeemerald/events","assignees_url":"https://api.github.com/repos/HrPeanut/pokeemerald/assignees{/user}","branches_url":"https://api.github.com/repos/HrPeanut/pokeemerald/branches{/branch}","tags_url":"https://api.github.com/repos/HrPeanut/pokeemerald/tags","blobs_url":"https://api.github.com/repos/HrPeanut/pokeemerald/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/HrPeanut/pokeemerald/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/HrPeanut/pokeemerald/git/refs{/sha}","trees_url":"https://api.github.com/repos/HrPeanut/pokeemerald/git/trees{/sha}","statuses_url":"https://api.github.com/repos/HrPeanut/pokeemerald/statuses/{sha}","languages_url":"https://api.github.com/repos/HrPeanut/pokeemerald/languages","stargazers_url":"https://api.github.com/repos/HrPeanut/pokeemerald/stargazers","contributors_url":"https://api.github.com/repos/HrPeanut/pokeemerald/contributors","subscribers_url":"https://api.github.com/repos/HrPeanut/pokeemerald/subscribers","subscription_url":"https://api.github.com/repos/HrPeanut/pokeemerald/subscription","commits_url":"https://api.github.com/repos/HrPeanut/pokeemerald/commits{/sha}","git_commits_url":"https://api.github.com/repos/HrPeanut/pokeemerald/git/commits{/sha}","comments_url":"https://api.github.com/repos/HrPeanut/pokeemerald/comments{/number}","issue_comment_url":"https://api.github.com/repos/HrPeanut/pokeemerald/issues/comments{/number}","contents_url":"https://api.github.com/repos/HrPeanut/pokeemerald/contents/{+path}","compare_url":"https://api.github.com/repos/HrPeanut/pokeemerald/compare/{base}...{head}","merges_url":"https://api.github.com/repos/HrPeanut/pokeemerald/merges","archive_url":"https://api.github.com/repos/HrPeanut/pokeemerald/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/HrPeanut/pokeemerald/downloads","issues_url":"https://api.github.com/repos/HrPeanut/pokeemerald/issues{/number}","pulls_url":"https://api.github.com/repos/HrPeanut/pokeemerald/pulls{/number}","milestones_url":"https://api.github.com/repos/HrPeanut/pokeemerald/milestones{/number}","notifications_url":"https://api.github.com/repos/HrPeanut/pokeemerald/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/HrPeanut/pokeemerald/labels{/name}","releases_url":"https://api.github.com/repos/HrPeanut/pokeemerald/releases{/id}","deployments_url":"https://api.github.com/repos/HrPeanut/pokeemerald/deployments","created_at":"2018-03-19T07:00:57Z","updated_at":"2018-03-27T22:36:29Z","pushed_at":"2018-03-28T19:11:57Z","git_url":"git://github.com/HrPeanut/pokeemerald.git","ssh_url":"git@github.com:HrPeanut/pokeemerald.git","clone_url":"https://github.com/HrPeanut/pokeemerald.git","svn_url":"https://github.com/HrPeanut/pokeemerald","homepage":"","size":64042,"stargazers_count":0,"watchers_count":0,"language":"Assembly","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pret:master","ref":"master","sha":"2ecbe252a29b9d58bfd2df82c01f94be7b69a7b0","user":{"login":"pret","id":10761592,"avatar_url":"https://avatars1.githubusercontent.com/u/10761592?v=4","gravatar_id":"","url":"https://api.github.com/users/pret","html_url":"https://github.com/pret","followers_url":"https://api.github.com/users/pret/followers","following_url":"https://api.github.com/users/pret/following{/other_user}","gists_url":"https://api.github.com/users/pret/gists{/gist_id}","starred_url":"https://api.github.com/users/pret/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pret/subscriptions","organizations_url":"https://api.github.com/users/pret/orgs","repos_url":"https://api.github.com/users/pret/repos","events_url":"https://api.github.com/users/pret/events{/privacy}","received_events_url":"https://api.github.com/users/pret/received_events","type":"Organization","site_admin":false},"repo":{"id":43677244,"name":"pokeemerald","full_name":"pret/pokeemerald","owner":{"login":"pret","id":10761592,"avatar_url":"https://avatars1.githubusercontent.com/u/10761592?v=4","gravatar_id":"","url":"https://api.github.com/users/pret","html_url":"https://github.com/pret","followers_url":"https://api.github.com/users/pret/followers","following_url":"https://api.github.com/users/pret/following{/other_user}","gists_url":"https://api.github.com/users/pret/gists{/gist_id}","starred_url":"https://api.github.com/users/pret/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pret/subscriptions","organizations_url":"https://api.github.com/users/pret/orgs","repos_url":"https://api.github.com/users/pret/repos","events_url":"https://api.github.com/users/pret/events{/privacy}","received_events_url":"https://api.github.com/users/pret/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pret/pokeemerald","description":"disassembly of Pokémon Emerald","fork":false,"url":"https://api.github.com/repos/pret/pokeemerald","forks_url":"https://api.github.com/repos/pret/pokeemerald/forks","keys_url":"https://api.github.com/repos/pret/pokeemerald/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pret/pokeemerald/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pret/pokeemerald/teams","hooks_url":"https://api.github.com/repos/pret/pokeemerald/hooks","issue_events_url":"https://api.github.com/repos/pret/pokeemerald/issues/events{/number}","events_url":"https://api.github.com/repos/pret/pokeemerald/events","assignees_url":"https://api.github.com/repos/pret/pokeemerald/assignees{/user}","branches_url":"https://api.github.com/repos/pret/pokeemerald/branches{/branch}","tags_url":"https://api.github.com/repos/pret/pokeemerald/tags","blobs_url":"https://api.github.com/repos/pret/pokeemerald/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pret/pokeemerald/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pret/pokeemerald/git/refs{/sha}","trees_url":"https://api.github.com/repos/pret/pokeemerald/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pret/pokeemerald/statuses/{sha}","languages_url":"https://api.github.com/repos/pret/pokeemerald/languages","stargazers_url":"https://api.github.com/repos/pret/pokeemerald/stargazers","contributors_url":"https://api.github.com/repos/pret/pokeemerald/contributors","subscribers_url":"https://api.github.com/repos/pret/pokeemerald/subscribers","subscription_url":"https://api.github.com/repos/pret/pokeemerald/subscription","commits_url":"https://api.github.com/repos/pret/pokeemerald/commits{/sha}","git_commits_url":"https://api.github.com/repos/pret/pokeemerald/git/commits{/sha}","comments_url":"https://api.github.com/repos/pret/pokeemerald/comments{/number}","issue_comment_url":"https://api.github.com/repos/pret/pokeemerald/issues/comments{/number}","contents_url":"https://api.github.com/repos/pret/pokeemerald/contents/{+path}","compare_url":"https://api.github.com/repos/pret/pokeemerald/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pret/pokeemerald/merges","archive_url":"https://api.github.com/repos/pret/pokeemerald/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pret/pokeemerald/downloads","issues_url":"https://api.github.com/repos/pret/pokeemerald/issues{/number}","pulls_url":"https://api.github.com/repos/pret/pokeemerald/pulls{/number}","milestones_url":"https://api.github.com/repos/pret/pokeemerald/milestones{/number}","notifications_url":"https://api.github.com/repos/pret/pokeemerald/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pret/pokeemerald/labels{/name}","releases_url":"https://api.github.com/repos/pret/pokeemerald/releases{/id}","deployments_url":"https://api.github.com/repos/pret/pokeemerald/deployments","created_at":"2015-10-05T10:09:22Z","updated_at":"2018-03-21T14:08:17Z","pushed_at":"2018-03-28T19:49:11Z","git_url":"git://github.com/pret/pokeemerald.git","ssh_url":"git@github.com:pret/pokeemerald.git","clone_url":"https://github.com/pret/pokeemerald.git","svn_url":"https://github.com/pret/pokeemerald","homepage":"","size":64021,"stargazers_count":162,"watchers_count":162,"language":"Assembly","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":45,"mirror_url":null,"archived":false,"open_issues_count":9,"license":null,"forks":45,"open_issues":9,"watchers":162,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/232"},"html":{"href":"https://github.com/pret/pokeemerald/pull/232"},"issue":{"href":"https://api.github.com/repos/pret/pokeemerald/issues/232"},"comments":{"href":"https://api.github.com/repos/pret/pokeemerald/issues/232/comments"},"review_comments":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/232/comments"},"review_comment":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pret/pokeemerald/pulls/232/commits"},"statuses":{"href":"https://api.github.com/repos/pret/pokeemerald/statuses/57775a946d6a0274ca6d5530e00eb63d0963499d"}},"author_association":"NONE"}}
{"actor":{"display_login":"ProjectRevoTPP"}}