summaryrefslogtreecommitdiff
path: root/src/matsuda_debug_menu.c
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-04 16:32:45 -0600
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-04 14:32:45 -0800
commit41d2b112ebdf91da3d85b4495ceb95e69d69ef0a (patch)
treeca825845e7dfeda33d9d5af48a15bfafaf865216 /src/matsuda_debug_menu.c
parent370c7f78539698902907f262721fe60e606c774d (diff)
almost finish decompiling matsuda_debug_menu.c (#158)
* almost finish decompiling matsuda_debug_menu.c * rename sub_8071C20 to CloseMenu
Diffstat (limited to 'src/matsuda_debug_menu.c')
-rw-r--r--src/matsuda_debug_menu.c940
1 files changed, 463 insertions, 477 deletions
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index c74f4db0d..131369e91 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -13,12 +13,18 @@
#define BIT(n) (1 << (n))
+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;
@@ -30,14 +36,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,6 +52,8 @@ 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];
@@ -94,6 +102,10 @@ 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);
+extern void sub_80AB184(void);
+extern void sub_80AB47C(void);
+extern int sub_80B2A7C(u8); //Don't know return type size
u8 unref_sub_80A9B28(void)
{
@@ -117,7 +129,7 @@ static bool8 sub_80A9B78(void)
gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func;
return FALSE;
case -1:
- sub_8071C20();
+ CloseMenu();
return TRUE;
}
}
@@ -190,7 +202,7 @@ static void sub_80A9CF8(u8 taskId)
{
DestroyTask(gTasks[taskId].data[10]);
DestroyTask(taskId);
- sub_8071C20();
+ CloseMenu();
}
}
@@ -223,7 +235,7 @@ static void sub_80A9DD8(u8 taskId)
{
DestroyTask(gTasks[taskId].data[10]);
DestroyTask(taskId);
- sub_8071C20();
+ CloseMenu();
}
static void sub_80A9E04(u8 taskId)
@@ -532,186 +544,48 @@ void SetDebugMonForContest(void)
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 0x10:
+ case 0x20:
+ sprite->data0 ^= 1;
+ break;
+ case 0x40:
+ if (sprite->data1 == 0)
+ sprite->data1 = 8;
+ else
+ sprite->data1--;
+ break;
+ case 0x80:
+ if (sprite->data1 == 8)
+ sprite->data1 = 0;
+ else
+ sprite->data1++;
+ break;
+ case 0x1:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x2:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x100:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x200:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case 0x8:
+ 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)
@@ -849,298 +723,410 @@ void sub_80AABB0(struct Sprite *sprite, u8 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], 0x40);
+ }
+ 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 = 0x1F40;
+
+ 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;
+}