diff options
author | JaceCearK1 <JaceCearK1@users.noreply.github.com> | 2017-07-01 21:04:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-01 21:04:18 +0200 |
commit | 0dd804a99e5455a0eac8ff6ed87d9de16c7380b7 (patch) | |
tree | 7b3567978b63ee6548a7b945e075ea8ba37bef51 /src/matsuda_debug_menu.c | |
parent | f1344efd2aff92292f58f7323bd9297a38fe9b02 (diff) | |
parent | 8d82578d3a101b06f9d2ced31738021007c4e533 (diff) |
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'src/matsuda_debug_menu.c')
-rw-r--r-- | src/matsuda_debug_menu.c | 1145 |
1 files changed, 556 insertions, 589 deletions
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index df2ca3206..3665cabd8 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -1,5 +1,9 @@ #include "global.h" -#include "asm.h" +#include "matsuda_debug_menu.h" +#include "contest.h" +#include "contest_link_80C2020.h" +#include "contest_link_80C857C.h" +#include "data2.h" #include "link.h" #include "main.h" #include "menu.h" @@ -10,17 +14,20 @@ #include "string_util.h" #include "task.h" #include "text.h" +#include "unknown_task.h" -#define BIT(n) (1 << (n)) - -extern u8 gUnknown_0203869A; +extern u8 gUnknown_0203856C; +extern u8 gUnknown_0203857D[][64]; +extern u16 gUnknown_02038670[]; +extern u16 gUnknown_02038678[]; +extern u16 gUnknown_02038680[]; +extern u8 gUnknown_02038690[]; +extern u8 gUnknown_02038694; +extern u8 gIsLinkContest; extern u8 gUnknown_0203869B; extern u8 gContestPlayerMonIndex; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; -extern u8 (*gCallback_03004AE8)(void); - -extern struct Window gMenuWindow; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042A0; @@ -30,14 +37,14 @@ extern u16 gUnknown_03004288; extern u16 gUnknown_03004280; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B8; +extern struct Window gUnknown_03004210; +extern u8 (*gCallback_03004AE8)(void); -extern u8 gUnknown_02038694; -extern u8 gUnknown_083C9296[]; -extern u8 gUnknown_083C92A8[]; -extern u8 gUnknown_083C9282[]; -extern u8 gUnknown_0203857D[][64]; extern u8 gUnknown_083C926E[][2]; +extern u8 gUnknown_083C9282[]; extern const u8 gUnknown_083C928E[][2]; +extern u8 gUnknown_083C9296[]; +extern u8 gUnknown_083C92A8[]; extern u8 unk_2000000[]; extern u8 gMatsudaDebugMenu_GoBackText[]; extern u8 gMatsudaDebugMenu_BattlePointsText[]; @@ -46,8 +53,9 @@ extern u8 gMatsudaDebugMenu_StartText[]; extern struct SpritePalette gUnknown_083C92BC; extern struct SpriteSheet gUnknown_083C92B4; extern struct SpriteTemplate gSpriteTemplate_83C92CC; +extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8); +extern u32 gUnknown_083C9400[2]; -extern u8 gMoveNames[][13]; extern u8 gMatsudaDebugMenu_UnknownByteArray[]; extern u8* gMatsudaDebugMenuTextList1[]; @@ -55,26 +63,7 @@ extern u8* gMatsudaDebugMenuTextList2[]; extern u8* gMatsudaDebugMenuTextList3[]; extern u8 gMatsudaDebugMenuContestTopLeft[][2]; -struct ContestPokemon -{ - /* 0x00 */ u16 species; - /* 0x02 */ u8 nickname[POKEMON_NAME_LENGTH]; - /* 0x0D */ u8 trainerName[8]; - /* 0x15 */ u8 filler15[9]; - /* 0x1E */ u16 moves[4]; // moves - /* 0x26 */ u8 cool; // cool - /* 0x27 */ u8 beauty; // beauty - /* 0x28 */ u8 cute; // cute - /* 0x29 */ u8 smart; // smart - /* 0x2A */ u8 tough; // tough - /* 0x2B */ u8 sheen; // sheen - /* 0x2C */ u8 filler2C[20]; -}; - -extern struct ContestPokemon gContestMons[]; - extern bool8 gReceivedRemoteLinkPlayers; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern struct MenuAction gMatsudaDebugMenuActions[]; @@ -94,6 +83,7 @@ static void sub_80A9F10(u8); static void sub_80AA10C(void); static void sub_80AA5BC(u8); static void sub_80AA614(u8, u8); +static void sub_80AAD08(struct Sprite *, s8); u8 unref_sub_80A9B28(void) { @@ -108,8 +98,8 @@ u8 unref_sub_80A9B28(void) static bool8 sub_80A9B78(void) { s8 choice = ProcessMenuInput(); - - switch(choice) + + switch (choice) { case -2: return FALSE; @@ -117,7 +107,7 @@ static bool8 sub_80A9B78(void) gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func; return FALSE; case -1: - sub_8071C20(); + CloseMenu(); return TRUE; } } @@ -131,11 +121,11 @@ s8 MatsudaDebugMenu_ContestResults(void) static void sub_80A9BE4(u8 taskId) { - if(!gPaletteFade.active) + if (!gPaletteFade.active) { DestroyTask(taskId); - if(!(gUnknown_0203869A & 1)) + if (!(gIsLinkContest & 1)) sub_80AF668(); sub_80C2358(); @@ -144,7 +134,7 @@ static void sub_80A9BE4(u8 taskId) s8 MatsudaDebugMenu_Contest(void) { - gUnknown_0203869A = 0; + gIsLinkContest = 0; sub_80AA10C(); return 0; } @@ -159,7 +149,7 @@ s8 MatsudaDebugMenu_CommTest(void) { u8 newTaskId; u8 newTaskId2; - + newTaskId = CreateTask(sub_80A9E3C, 0); SetTaskFuncWithFollowupFunc(newTaskId, sub_80A9E3C, sub_80A9C98); newTaskId2 = CreateTask(sub_80A9E04, 1); @@ -186,11 +176,11 @@ static void sub_80A9CDC(u8 taskId) static void sub_80A9CF8(u8 taskId) { - if(gReceivedRemoteLinkPlayers == FALSE) + if (gReceivedRemoteLinkPlayers == FALSE) { DestroyTask(gTasks[taskId].data[10]); DestroyTask(taskId); - sub_8071C20(); + CloseMenu(); } } @@ -205,7 +195,7 @@ static void sub_80A9D58(u8 taskId) int i; u8 dest[4]; - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) dest[i] = gTasks[taskId].data[5 + i]; gUnknown_0203869B = sub_80C4B34(dest); @@ -223,22 +213,22 @@ static void sub_80A9DD8(u8 taskId) { DestroyTask(gTasks[taskId].data[10]); DestroyTask(taskId); - sub_8071C20(); + CloseMenu(); } static void sub_80A9E04(u8 taskId) { - if(gMain.newKeys == 2) + if (gMain.newKeys == 2) gTasks[(u8)gTasks[taskId].data[10]].func = sub_80A9D30; } static void sub_80A9E3C(u8 taskId) { u8 i; - + OpenLink(); - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) gBlockRecvBuffer[i][0] = 255; gTasks[taskId].data[0] = 0; @@ -249,15 +239,15 @@ static void sub_80A9E80(u8 taskId) { TaskFunc func; - if(gTasks[taskId].data[0] < 10) + if (gTasks[taskId].data[0] < 10) gTasks[taskId].data[0]++; else { - if(GetLinkPlayerCount_2() > 3) + if (GetLinkPlayerCount_2() > 3) { gTasks[taskId].data[0] = 0; - - if(IsLinkMaster()) + + if (IsLinkMaster()) { func = sub_80A9ED8; gTasks[taskId].func = (TaskFunc)func; @@ -274,7 +264,7 @@ static void sub_80A9E80(u8 taskId) static void sub_80A9ED8(u8 taskId) { gTasks[taskId].data[0] = gTasks[taskId].data[0] + 1; - if((gTasks[taskId].data[0]) == 101) + if ((gTasks[taskId].data[0]) == 101) { sub_8007F4C(); gTasks[taskId].data[0] = 0; @@ -284,12 +274,12 @@ static void sub_80A9ED8(u8 taskId) static void sub_80A9F10(u8 taskId) { - if(gReceivedRemoteLinkPlayers) + if (gReceivedRemoteLinkPlayers) { gContestPlayerMonIndex = GetMultiplayerId(); - if(GetLinkPlayerCount() == 4) + if (GetLinkPlayerCount() == 4) { - gUnknown_0203869A = 1; + gIsLinkContest = 1; SwitchTaskToFollowupFunc(taskId); } } @@ -297,7 +287,7 @@ static void sub_80A9F10(u8 taskId) static void sub_80A9F50(void) { - REG_DISPCNT = DISPCNT_OBJ_1D_MAP; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; SetUpWindowConfig(&gWindowConfig_81E6C3C); InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6C3C); @@ -322,18 +312,18 @@ static void sub_80A9FE4(void) u8 *addr; u32 i; u8 ptr[5]; - + memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5); addr = (void *)VRAM; i = VRAM_SIZE; - while(1) + while (1) { DmaFill32(3, 0, addr, 0x1000); addr += 0x1000; i -= 0x1000; - if(i <= 0x1000) + if (i <= 0x1000) { DmaFill32(3, 0, addr, i); break; @@ -349,7 +339,7 @@ static void sub_80AA064(void) BuildOamBuffer(); RunTasks(); UpdatePaletteFade(); - if(gMain.newKeys == 4) + if (gMain.newKeys == 4) SetMainCallback2(sub_805469C); } @@ -383,21 +373,21 @@ static void sub_80AA10C(void) ResetSpriteData(); ResetTasks(); FreeAllSpritePalettes(); - sub_80A9FE4(); + sub_80A9FE4(); SetVBlankCallback(sub_80AA090); SetMainCallback2(sub_80AA064); gPaletteFade.bufferTransferDisabled = 0; gUnknown_02038694 = 0; - if(!(gContestMons[0].nickname[0])) + if (!(gContestMons[0].nickname[0])) sub_80AE398(0, 0); sub_80AE098(gUnknown_02038694); - for(i = 0; i < 6; i++) + for (i = 0; i < 6; i++) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i], - (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0], + sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i], + (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0], gMatsudaDebugMenuContestTopLeft[i][1]); } @@ -419,7 +409,7 @@ static void sub_80AA10C(void) gSprites[spriteId].data3 = zero; // only this assignment of zero is necessary. other replacements of 0 with zero do not change the asm, compiler will treat it the same. } -void sub_80AA280(u8 var) +void sub_80AA280(u8 var) // no? { u8 i; @@ -427,9 +417,9 @@ void sub_80AA280(u8 var) StringCopy(unk_2000000, gMatsudaDebugMenu_StartText); StringAppend(unk_2000000, &gUnknown_0203857D[var][0]); - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { - if(var == i) + if (var == i) { sub_8003460(&gMenuWindow, unk_2000000, (10 * i + 2), gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); } @@ -487,261 +477,123 @@ static void sub_80AA4F0(u8 var1, u8 var2) static void sub_80AA5BC(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); + sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); } void sub_80AA5E8(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); + sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); } static void sub_80AA614(u8 var1, u8 var2) { - u16 var = sub_80AE770(var1, var2); + u16 var = sub_80AE770(var1, var2); - ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC); + ConvertIntToDecimalStringN(unk_2000000, var, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8003460(&gMenuWindow, unk_2000000, 0xE2, 3, 0xC); } void sub_80AA658(u8 var) { - u8 i; + u8 i; - sub_80AA340(var); - sub_80AA388(var); - sub_80AA3D0(var); - sub_80AA418(var); - sub_80AA460(var); - sub_80AA4A8(var); + sub_80AA340(var); + sub_80AA388(var); + sub_80AA3D0(var); + sub_80AA418(var); + sub_80AA460(var); + sub_80AA4A8(var); - for(i = 0; i < 4; i++) - sub_80AA4F0(var, i); + for (i = 0; i < 4; i++) + sub_80AA4F0(var, i); } void SetDebugMonForContest(void) { - SetMonData(&gPlayerParty[0], MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool); - SetMonData(&gPlayerParty[0], MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute); - SetMonData(&gPlayerParty[0], MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty); - SetMonData(&gPlayerParty[0], MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart); - SetMonData(&gPlayerParty[0], MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough); - SetMonData(&gPlayerParty[0], MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[0]); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[1]); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[2]); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]); + SetMonData(&gPlayerParty[0], MON_DATA_COOL, &gContestMons[gContestPlayerMonIndex].cool); + SetMonData(&gPlayerParty[0], MON_DATA_CUTE, &gContestMons[gContestPlayerMonIndex].cute); + SetMonData(&gPlayerParty[0], MON_DATA_BEAUTY, &gContestMons[gContestPlayerMonIndex].beauty); + SetMonData(&gPlayerParty[0], MON_DATA_SMART, &gContestMons[gContestPlayerMonIndex].smart); + SetMonData(&gPlayerParty[0], MON_DATA_TOUGH, &gContestMons[gContestPlayerMonIndex].tough); + SetMonData(&gPlayerParty[0], MON_DATA_SHEEN, &gContestMons[gContestPlayerMonIndex].sheen); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[0]); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[1]); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[2]); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]); } -// too complicated -__attribute__((naked)) void sub_80AA754(struct Sprite *sprite) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r4, r0, 0\n\ - ldr r0, _080AA774 @ =gMain\n\ - ldrh r1, [r0, 0x30]\n\ - cmp r1, 0x20\n\ - beq _080AA7A2\n\ - cmp r1, 0x20\n\ - bgt _080AA782\n\ - cmp r1, 0x2\n\ - beq _080AA7F8\n\ - cmp r1, 0x2\n\ - bgt _080AA778\n\ - cmp r1, 0x1\n\ - beq _080AA7D8\n\ - b _080AA870\n\ - .align 2, 0\n\ -_080AA774: .4byte gMain\n\ -_080AA778:\n\ - cmp r1, 0x8\n\ - beq _080AA868\n\ - cmp r1, 0x10\n\ - beq _080AA7A2\n\ - b _080AA870\n\ -_080AA782:\n\ - cmp r1, 0x80\n\ - beq _080AA7C2\n\ - cmp r1, 0x80\n\ - bgt _080AA790\n\ - cmp r1, 0x40\n\ - beq _080AA7AC\n\ - b _080AA870\n\ -_080AA790:\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - cmp r1, r0\n\ - beq _080AA814\n\ - movs r0, 0x80\n\ - lsls r0, 2\n\ - cmp r1, r0\n\ - beq _080AA834\n\ - b _080AA870\n\ -_080AA7A2:\n\ - ldrh r0, [r4, 0x2E]\n\ - movs r1, 0x1\n\ - eors r0, r1\n\ - strh r0, [r4, 0x2E]\n\ - b _080AA870\n\ -_080AA7AC:\n\ - ldrh r1, [r4, 0x30]\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - bne _080AA7BC\n\ - movs r0, 0x8\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7BC:\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7C2:\n\ - ldrh r1, [r4, 0x30]\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - cmp r0, 0x8\n\ - bne _080AA7D2\n\ - movs r0, 0\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7D2:\n\ - adds r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7D8:\n\ - ldr r2, _080AA7F4 @ =gUnknown_083C92E4\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 2\n\ - movs r3, 0x30\n\ - ldrsh r1, [r4, r3]\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldr r2, [r0]\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - b _080AA84E\n\ - .align 2, 0\n\ -_080AA7F4: .4byte gUnknown_083C92E4\n\ -_080AA7F8:\n\ - ldr r1, _080AA810 @ =gUnknown_083C92E4\n\ - movs r0, 0x2E\n\ - ldrsh r2, [r4, r0]\n\ - lsls r2, 2\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r1\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - b _080AA84A\n\ - .align 2, 0\n\ -_080AA810: .4byte gUnknown_083C92E4\n\ -_080AA814:\n\ - ldr r2, _080AA830 @ =gUnknown_083C92E4\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 2\n\ - movs r3, 0x30\n\ - ldrsh r1, [r4, r3]\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldr r2, [r0]\n\ - adds r0, r4, 0\n\ - movs r1, 0xA\n\ - b _080AA84E\n\ - .align 2, 0\n\ -_080AA830: .4byte gUnknown_083C92E4\n\ -_080AA834:\n\ - ldr r1, _080AA864 @ =gUnknown_083C92E4\n\ - movs r0, 0x2E\n\ - ldrsh r2, [r4, r0]\n\ - lsls r2, 2\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r1\n\ - movs r1, 0xA\n\ - negs r1, r1\n\ -_080AA84A:\n\ - ldr r2, [r2]\n\ - adds r0, r4, 0\n\ -_080AA84E:\n\ - bl _call_via_r2\n\ - ldrh r0, [r4, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldrh r1, [r4, 0x34]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - bl sub_80AA614\n\ - b _080AA870\n\ - .align 2, 0\n\ -_080AA864: .4byte gUnknown_083C92E4\n\ -_080AA868:\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_80AAD08\n\ -_080AA870:\n\ - ldr r2, _080AA898 @ =gUnknown_083C9296\n\ - movs r0, 0x2E\n\ - ldrsh r1, [r4, r0]\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 1\n\ - adds r1, r0\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - strh r0, [r4, 0x20]\n\ - ldr r1, _080AA89C @ =gUnknown_083C92A8\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - strh r0, [r4, 0x22]\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080AA898: .4byte gUnknown_083C9296\n\ -_080AA89C: .4byte gUnknown_083C92A8\n\ - .syntax divided"); + switch (gMain.newAndRepeatedKeys) + { + case DPAD_RIGHT: + case DPAD_LEFT: + sprite->data0 ^= 1; + break; + case DPAD_UP: + if (sprite->data1 == 0) + sprite->data1 = 8; + else + sprite->data1--; + break; + case DPAD_DOWN: + if (sprite->data1 == 8) + sprite->data1 = 0; + else + sprite->data1++; + break; + case A_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case B_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case R_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case L_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case START_BUTTON: + sub_80AAD08(sprite, 1); + break; + } + sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2]; + sprite->pos1.y = gUnknown_083C92A8[sprite->data1]; } static void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2) { - if(var1 == 1) - { - sprite->data2 = var2; - sub_80AA280(var2); - sub_80AA658(sprite->data2); - } + if (var1 == 1) + { + sprite->data2 = var2; + sub_80AA280(var2); + sub_80AA658(sprite->data2); + } } void sub_80AA8C8(struct Sprite *sprite, s8 var1) { - sub_80AA8A0(sprite, var1, 0); + sub_80AA8A0(sprite, var1, 0); } void sub_80AA8D8(struct Sprite *sprite, s8 var1) { - sub_80AA8A0(sprite, var1, 1); + sub_80AA8A0(sprite, var1, 1); } void sub_80AA8E8(struct Sprite *sprite, s8 var1) { - sub_80AA8A0(sprite, var1, 2); + sub_80AA8A0(sprite, var1, 2); } void sub_80AA8F8(struct Sprite *sprite, s8 var1) { - sub_80AA8A0(sprite, var1, 3); + sub_80AA8A0(sprite, var1, 3); } static u8 sub_80AA908(u32 a1, u8 a2, s8 a3) // first param is unused. @@ -760,48 +612,48 @@ void sub_80AA930(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2); - sub_80AA340(sprite->data2); + gContestMons[sprite->data2].cool = sub_80AA908(val, gContestMons[sprite->data2].cool, var2); + sub_80AA340(sprite->data2); } void sub_80AA974(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2); - sub_80AA388(sprite->data2); + gContestMons[sprite->data2].cute = sub_80AA908(val, gContestMons[sprite->data2].cute, var2); + sub_80AA388(sprite->data2); } void sub_80AA9B8(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2); - sub_80AA3D0(sprite->data2); + gContestMons[sprite->data2].beauty = sub_80AA908(val, gContestMons[sprite->data2].beauty, var2); + sub_80AA3D0(sprite->data2); } void sub_80AA9FC(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2); - sub_80AA418(sprite->data2); + gContestMons[sprite->data2].smart = sub_80AA908(val, gContestMons[sprite->data2].smart, var2); + sub_80AA418(sprite->data2); } void sub_80AAA40(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2); - sub_80AA460(sprite->data2); + gContestMons[sprite->data2].tough = sub_80AA908(val, gContestMons[sprite->data2].tough, var2); + sub_80AA460(sprite->data2); } void sub_80AAA84(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2); - sub_80AA4A8(sprite->data2); + gContestMons[sprite->data2].sheen = sub_80AA908(val, gContestMons[sprite->data2].sheen, var2); + sub_80AA4A8(sprite->data2); } // a similar function is at 0x80AA908, however, it apparently returns the wrong type (u8 vs u16). @@ -821,326 +673,441 @@ void sub_80AAAF0(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2); - sub_80AA4F0(sprite->data2, 0); + gContestMons[sprite->data2].moves[0] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[0], var2); + sub_80AA4F0(sprite->data2, 0); } void sub_80AAB30(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2); - sub_80AA4F0(sprite->data2, 1); + gContestMons[sprite->data2].moves[1] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[1], var2); + sub_80AA4F0(sprite->data2, 1); } void sub_80AAB70(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2); - sub_80AA4F0(sprite->data2, 2); + gContestMons[sprite->data2].moves[2] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[2], var2); + sub_80AA4F0(sprite->data2, 2); } void sub_80AABB0(struct Sprite *sprite, u8 var2) { u8 val = sprite->data2; - gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2); - sub_80AA4F0(sprite->data2, 3); + gContestMons[sprite->data2].moves[3] = sub_80AAAC8(val, gContestMons[sprite->data2].moves[3], var2); + sub_80AA4F0(sprite->data2, 3); } -// hard/weird function #2 -__attribute__((naked)) -void sub_80AABF0(struct Sprite *sprite, u8 var2) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - movs r0, 0xFF\n\ - cmp r1, 0\n\ - ble _080AABFE\n\ - movs r0, 0x1\n\ -_080AABFE:\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - ldrh r1, [r5, 0x34]\n\ - adds r0, r1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0\n\ - bge _080AAC14\n\ - movs r4, 0\n\ - b _080AAC1A\n\ -_080AAC14:\n\ - cmp r0, 0x4\n\ - ble _080AAC1A\n\ - movs r4, 0x4\n\ -_080AAC1A:\n\ - lsls r4, 24\n\ - lsrs r0, r4, 24\n\ - bl sub_80AA5BC\n\ - asrs r4, 24\n\ - strh r4, [r5, 0x34]\n\ - ldr r0, _080AAC54 @ =gScriptContestCategory\n\ - strh r4, [r0]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, _080AAC58 @ =gScriptContestRank\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - bl sub_80AE398\n\ - ldrh r0, [r5, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl sub_80AA280\n\ - ldrh r0, [r5, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl sub_80AA658\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080AAC54: .4byte gScriptContestCategory\n\ -_080AAC58: .4byte gScriptContestRank\n\ - .syntax divided"); +void sub_80AABF0(struct Sprite *sprite, s8 var2) +{ + s8 a = (var2 > 0) ? 1 : -1; + s8 r4 = sprite->data3 + a; + + if (r4 < 0) + r4 = 0; + else if (r4 > 4) + r4 = 4; + sub_80AA5BC(r4); + sprite->data3 = r4; + gScriptContestCategory = sprite->data3; + sub_80AE398(sprite->data3, gScriptContestRank); + sub_80AA280(sprite->data2); + sub_80AA658(sprite->data2); } -/* - thumb_func_start sub_80AABF0 -sub_80AABF0: @ 80AABF0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - movs r0, 0xFF - cmp r1, 0 - ble _080AABFE - movs r0, 0x1 -_080AABFE: - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r5, 0x34] - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080AAC14 - movs r4, 0 - b _080AAC1A -_080AAC14: - cmp r0, 0x4 - ble _080AAC1A - movs r4, 0x4 -_080AAC1A: - lsls r4, 24 - lsrs r0, r4, 24 - bl sub_80AA5BC - asrs r4, 24 - strh r4, [r5, 0x34] - ldr r0, _080AAC54 @ =gScriptContestCategory - strh r4, [r0] - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080AAC58 @ =gScriptContestRank - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_80AE398 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80AA280 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80AA658 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AAC54: .4byte gScriptContestCategory -_080AAC58: .4byte gScriptContestRank - thumb_func_end sub_80AABF0 -*/ +void sub_80AAC5C(struct Sprite *sprite, s8 var2) +{ + if (var2 > 0) + gScriptContestRank++; + else if (gScriptContestRank != 0) + gScriptContestRank--; + if (gScriptContestRank > 3) + gScriptContestRank = 3; + sub_80AA5E8(gScriptContestRank); + sub_80AE398(gScriptContestCategory, gScriptContestRank); + sub_80AA280(sprite->data2); + sub_80AA658(sprite->data2); +} + +void sub_80AACC4(void) +{ + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + SetDebugMonForContest(); + if (!(gIsLinkContest & 1)) + sub_80AE82C(unk_2000000[0]); + SetMainCallback2(sub_80AB47C); + } +} +void sub_80AAD08(struct Sprite *sprite, s8 var2) +{ + if (var2 == 1) + { + unk_2000000[0] = sprite->data3; + SetMainCallback2(sub_80AACC4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + } +} + +void sub_80AAD44(struct Sprite *sprite, s8 var2) +{ + if (var2 == 1) + { + int i; + + SetDebugMonForContest(); + for (i = 0; i < 4; i++) + gUnknown_02038670[i] = sub_80AE770(i, gScriptContestCategory); + SetMainCallback2(sub_805469C); + } +} + +//Do this later /* - thumb_func_start sub_80AA754 -sub_80AA754: @ 80AA754 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080AA774 @ =gMain - ldrh r1, [r0, 0x30] - cmp r1, 0x20 - beq _080AA7A2 - cmp r1, 0x20 - bgt _080AA782 - cmp r1, 0x2 - beq _080AA7F8 - cmp r1, 0x2 - bgt _080AA778 - cmp r1, 0x1 - beq _080AA7D8 - b _080AA870 - .align 2, 0 -_080AA774: .4byte gMain -_080AA778: - cmp r1, 0x8 - beq _080AA868 - cmp r1, 0x10 - beq _080AA7A2 - b _080AA870 -_080AA782: - cmp r1, 0x80 - beq _080AA7C2 - cmp r1, 0x80 - bgt _080AA790 - cmp r1, 0x40 - beq _080AA7AC - b _080AA870 -_080AA790: - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _080AA814 - movs r0, 0x80 - lsls r0, 2 - cmp r1, r0 - beq _080AA834 - b _080AA870 -_080AA7A2: - ldrh r0, [r4, 0x2E] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x2E] - b _080AA870 -_080AA7AC: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080AA7BC - movs r0, 0x8 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7BC: - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7C2: - ldrh r1, [r4, 0x30] - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x8 - bne _080AA7D2 - movs r0, 0 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7D2: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7D8: - ldr r2, _080AA7F4 @ =gUnknown_083C92E4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r0, r1 - adds r0, r2 - ldr r2, [r0] - adds r0, r4, 0 - movs r1, 0x1 - b _080AA84E - .align 2, 0 -_080AA7F4: .4byte gUnknown_083C92E4 -_080AA7F8: - ldr r1, _080AA810 @ =gUnknown_083C92E4 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r2, 2 - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r2, r0 - adds r2, r1 - movs r1, 0x1 - negs r1, r1 - b _080AA84A - .align 2, 0 -_080AA810: .4byte gUnknown_083C92E4 -_080AA814: - ldr r2, _080AA830 @ =gUnknown_083C92E4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r0, r1 - adds r0, r2 - ldr r2, [r0] - adds r0, r4, 0 - movs r1, 0xA - b _080AA84E - .align 2, 0 -_080AA830: .4byte gUnknown_083C92E4 -_080AA834: - ldr r1, _080AA864 @ =gUnknown_083C92E4 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r2, 2 - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r2, r0 - adds r2, r1 - movs r1, 0xA - negs r1, r1 -_080AA84A: - ldr r2, [r2] - adds r0, r4, 0 -_080AA84E: - bl _call_via_r2 - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x34] - lsls r1, 24 - lsrs r1, 24 - bl sub_80AA614 - b _080AA870 - .align 2, 0 -_080AA864: .4byte gUnknown_083C92E4 -_080AA868: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80AAD08 -_080AA870: - ldr r2, _080AA898 @ =gUnknown_083C9296 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - strh r0, [r4, 0x20] - ldr r1, _080AA89C @ =gUnknown_083C92A8 - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA898: .4byte gUnknown_083C9296 -_080AA89C: .4byte gUnknown_083C92A8 - thumb_func_end sub_80AA754 +void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d) +{ + u32 r5; + u16 r7; + u8 r7_2; + //u32 sp44; + //u32 sp48; + u32 sp58; + + gMain.state = 0; + + r5 = d + 1; + //Could also be DmaClear32 + DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100); + + r7 = StringLength(string); + if (r7 > 8) + r7 = 8; + sp58 = d * 2; + + //More stuff + + r7_2 = 0x7C - sp58; + +} */ + +__attribute__((naked)) +void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x64\n\ + mov r9, r0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + str r1, [sp, 0x48]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x4C]\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + mov r10, r3\n\ + mov r5, r10\n\ + adds r5, 0x1\n\ + lsls r1, r5, 8\n\ + ldr r0, _080AAEC4 @ =0x06018000\n\ + subs r1, r0, r1\n\ + movs r0, 0\n\ + str r0, [sp, 0x44]\n\ + ldr r4, _080AAEC8 @ =0x040000d4\n\ + add r0, sp, 0x44\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + ldr r0, _080AAECC @ =0x85000040\n\ + str r0, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + mov r0, r9\n\ + bl StringLength\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + cmp r7, 0x8\n\ + bls _080AADD0\n\ + movs r7, 0x8\n\ +_080AADD0:\n\ + movs r6, 0\n\ + mov r8, r5\n\ + mov r1, r10\n\ + lsls r1, 1\n\ + str r1, [sp, 0x58]\n\ + ldr r2, [sp, 0x48]\n\ + adds r2, 0x20\n\ + str r2, [sp, 0x5C]\n\ + cmp r6, r7\n\ + bge _080AAE1E\n\ + add r5, sp, 0x40\n\ + add r0, sp, 0x20\n\ + mov r10, r0\n\ + ldr r2, _080AAEC4 @ =0x06018000\n\ +_080AADEC:\n\ + mov r1, r9\n\ + adds r0, r1, r6\n\ + ldrb r0, [r0]\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + mov r0, sp\n\ + adds r1, r5, 0\n\ + str r2, [sp, 0x60]\n\ + bl sub_80034D4\n\ + mov r1, r8\n\ + lsls r0, r1, 8\n\ + ldr r2, [sp, 0x60]\n\ + subs r0, r2, r0\n\ + mov r1, r10\n\ + str r1, [r4]\n\ + str r0, [r4, 0x4]\n\ + ldr r0, _080AAED0 @ =0x84000008\n\ + str r0, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + adds r2, 0x20\n\ + adds r6, 0x1\n\ + cmp r6, r7\n\ + blt _080AADEC\n\ +_080AAE1E:\n\ + movs r1, 0x7C\n\ + ldr r2, [sp, 0x58]\n\ + subs r1, r2\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + ldr r0, _080AAED4 @ =gMain\n\ + mov r9, r0\n\ + lsls r3, r7, 3\n\ + add r3, r9\n\ + ldr r0, _080AAED8 @ =gUnknown_083C9400\n\ + ldr r1, [r0]\n\ + ldr r2, [r0, 0x4]\n\ + str r1, [sp, 0x50]\n\ + str r2, [sp, 0x54]\n\ + str r1, [r3, 0x3C]\n\ + str r2, [r3, 0x40]\n\ + mov r2, r8\n\ + lsls r0, r2, 3\n\ + movs r1, 0x80\n\ + lsls r1, 3\n\ + adds r2, r1, 0\n\ + subs r2, r0\n\ + adds r6, r3, 0\n\ + adds r6, 0x40\n\ + ldr r0, _080AAEDC @ =0x000003ff\n\ + mov r8, r0\n\ + mov r1, r8\n\ + ands r2, r1\n\ + ldrh r5, [r6]\n\ + ldr r4, _080AAEE0 @ =0xfffffc00\n\ + adds r0, r4, 0\n\ + ands r0, r5\n\ + orrs r0, r2\n\ + strh r0, [r6]\n\ + ldrh r5, [r3, 0x3E]\n\ + ldr r2, _080AAEE4 @ =0xfffffe00\n\ + adds r0, r2, 0\n\ + ands r0, r5\n\ + ldr r1, [sp, 0x48]\n\ + orrs r0, r1\n\ + strh r0, [r3, 0x3E]\n\ + adds r3, 0x3C\n\ + add r0, sp, 0x4C\n\ + ldrb r0, [r0]\n\ + strb r0, [r3]\n\ + adds r1, r7, 0x1\n\ + lsls r1, 3\n\ + mov r0, r9\n\ + adds r7, r1, r0\n\ + ldr r0, [sp, 0x50]\n\ + ldr r1, [sp, 0x54]\n\ + str r0, [r7, 0x3C]\n\ + str r1, [r7, 0x40]\n\ + ldrh r0, [r6]\n\ + lsls r0, 22\n\ + lsrs r0, 22\n\ + adds r0, 0x4\n\ + adds r5, r7, 0\n\ + adds r5, 0x40\n\ + mov r1, r8\n\ + ands r0, r1\n\ + ldrh r3, [r5]\n\ + ands r4, r3\n\ + orrs r4, r0\n\ + strh r4, [r5]\n\ + ldrh r0, [r7, 0x3E]\n\ + ands r2, r0\n\ + ldr r0, [sp, 0x5C]\n\ + orrs r2, r0\n\ + strh r2, [r7, 0x3E]\n\ + adds r1, r7, 0\n\ + adds r1, 0x3C\n\ + add r2, sp, 0x4C\n\ + ldrb r2, [r2]\n\ + strb r2, [r1]\n\ + add sp, 0x64\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080AAEC4: .4byte 0x06018000\n\ +_080AAEC8: .4byte 0x040000d4\n\ +_080AAECC: .4byte 0x85000040\n\ +_080AAED0: .4byte 0x84000008\n\ +_080AAED4: .4byte gMain\n\ +_080AAED8: .4byte gUnknown_083C9400\n\ +_080AAEDC: .4byte 0x000003ff\n\ +_080AAEE0: .4byte 0xfffffc00\n\ +_080AAEE4: .4byte 0xfffffe00\n\ + .syntax divided\n"); +} + +void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d) +{ + u8 string[12]; + u8 offset = 0; + + if (a < 0) + { + string[0] = 0xAE; + offset = 1; + } + ConvertIntToDecimalStringN(string + offset, (a < 0) ? -a : a, 0, 8); + sub_80AAD84(string, b, c, d); +} + +void sub_80AAF30(void) +{ + s32 i; + + gUnknown_0203856C = 1; + gContestPlayerMonIndex = 3; + sub_80AE098(0); + + for (i = 3; i > -1; i--) + gUnknown_02038690[i] = 3 - i; + + for (i = 0; i < 3; i++) + { + gUnknown_02038670[i] = 0; + gUnknown_02038680[i] = 0; + gUnknown_02038678[i] = 0; + memcpy(&gContestMons[i], &gContestMons[3], sizeof(struct ContestPokemon)); + } + + gUnknown_02038670[3] = 0x12C; + gUnknown_02038680[3] = 0x190; + gUnknown_02038678[3] = 0x190; + sub_80B2A7C(0xFE); +} + +//Don't know size of return type +int MatsudaDebugMenu_SetHighScore(void) +{ + sub_80AAF30(); + CloseMenu(); + return 1; +} + +//Don't know size of return type +int MatsudaDebugMenu_ResetHighScore(void) +{ + s32 i; + + gUnknown_0203856C = 0; + for (i = 0; i < 4; i++) + { + gUnknown_02038670[i] = 0; + gUnknown_02038680[i] = 0; + gUnknown_02038678[i] = 0; + } + CloseMenu(); + return 1; +} + +//Don't know size of return type +int MatsudaDebugMenu_SetArtMuseumItems(void) +{ + s32 i; + + gContestPlayerMonIndex = 3; + sub_80AE098(0); + for (i = 3; i > -1; i--) + gUnknown_02038690[i] = 3 - i; + for (gScriptContestCategory = 0; gScriptContestCategory < 5; gScriptContestCategory++) + sub_80B2A7C(0xFF); + CloseMenu(); + return 1; +} + +void unref_sub_80AB084(u8 *text) +{ + u16 savedIme; + u8 *addr; + size_t size; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT = 8; + ResetTasks(); + ResetSpriteData(); + SetMainCallback2(sub_80AB184); + + addr = (void *)VRAM; + size = 0x18000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + SetUpWindowConfig(&gWindowConfig_81E6FD8); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); + LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + sub_8003460(&gUnknown_03004210, text, 1, 9, 7); +} + +void sub_80AB184(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} |