summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-05-08 23:13:46 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-05-08 21:13:46 -0700
commita83ced6d98f301f4aade1c571d8c0cc9e43d0450 (patch)
tree2823ffe91c444fcd8289d79c80291b3c8c400af7 /src
parentca7e24fa7be6f5d9244667f1fa7c9ad21a16056a (diff)
fix some nonmatching functions (#284)
* fix some nonmatching functions * delete trailing whitespace
Diffstat (limited to 'src')
-rw-r--r--src/credits.c424
-rw-r--r--src/mail.c416
-rw-r--r--src/mauville_old_man.c270
-rw-r--r--src/trainer_card.c735
4 files changed, 421 insertions, 1424 deletions
diff --git a/src/credits.c b/src/credits.c
index 7685a033d..17d3507aa 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -7,6 +7,7 @@
#include "palette.h"
#include "songs.h"
#include "sound.h"
+#include "trig.h"
asm(".set REG_BASE, 0x4000000");
asm(".set OFFSET_REG_BLDCNT, 0x50");
@@ -141,14 +142,13 @@ struct CreditsEntry
u8 *text;
};
-extern u8 unk_2000000[];
+extern u8 ewram[];
-#define EWRAM_1F800 ((u16 *)(unk_2000000 + 0x1F800))
-#define HALL_OF_FAME_SHEET_0 ((u8 *)(unk_2000000 + 0x1E000))
-#define HALL_OF_FAME_SHEET_1 ((u8 *)(unk_2000000 + 0x1E800))
-#define HALL_OF_FAME_SHEET_2 ((u8 *)(unk_2000000 + 0x1F000))
-
-extern struct Unk201C000 unk_201C000;
+#define EWRAM_1F800 ((u16 *)(ewram + 0x1F800))
+#define HALL_OF_FAME_SHEET_0 ((u8 *)(ewram + 0x1E000))
+#define HALL_OF_FAME_SHEET_1 ((u8 *)(ewram + 0x1E800))
+#define HALL_OF_FAME_SHEET_2 ((u8 *)(ewram + 0x1F000))
+#define ewram1c000 (*(struct Unk201C000 *)(ewram + 0x1C000))
extern struct HallOfFame gHallOfFame;
extern u8 unk_201e800[0x800];
@@ -162,7 +162,7 @@ extern u16 gUnknown_02039322; // TASK A
extern u8 gUnknown_02039324;
extern u8 gUnknown_02039325;
extern u16 gUnknown_02039358;
-extern u16 gUnknown_0203935A;
+extern s16 gUnknown_0203935A;
extern s16 gUnknown_0203935C;
extern u8 gReservedSpritePaletteCount;
@@ -328,7 +328,7 @@ void sub_81439D0(void)
SetMainCallback2(sub_814395C);
gUnknown_02039325 = 0;
- c000 = &unk_201C000;
+ c000 = &ewram1c000;
sub_81458DC();
@@ -818,11 +818,9 @@ static u8 sub_8144454(u8 page, u8 taskIdA)
#define UNK_DEFINE_44 (0x44)
-#define EWRAM_1C000 (*(struct Unk201C000 *)(unk_2000000 + 0x1C000))
-
static void task_d_8144514(u8 taskIdD)
{
- struct Unk201C000 *r6 = &EWRAM_1C000;
+ struct Unk201C000 *r6 = &ewram1c000;
u8 r2;
switch (gTasks[taskIdD].data[TDD_STATE])
@@ -866,331 +864,87 @@ static void task_d_8144514(u8 taskIdD)
}
}
-__attribute__((naked))
void task_c_8144664(u8 taskIdC)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r1, _0814468C @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r2, 0x8\n\
- ldrsh r0, [r0, r2]\n\
- adds r6, r1, 0\n\
- cmp r0, 0x32\n\
- bls _08144680\n\
- b _0814492C\n\
-_08144680:\n\
- lsls r0, 2\n\
- ldr r1, _08144690 @ =_08144694\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0814468C: .4byte gTasks\n\
-_08144690: .4byte _08144694\n\
- .align 2, 0\n\
-_08144694:\n\
- .4byte _08144760\n\
- .4byte _08144784\n\
- .4byte _081447D8\n\
- .4byte _081447F0\n\
- .4byte _0814482C\n\
- .4byte _08144850\n\
- .4byte _0814489C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448A8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448C8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448EC\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _08144920\n\
-_08144760:\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- ldr r1, _08144780 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _081447A8\n\
- .align 2, 0\n\
-_08144780: .4byte gUnknown_0203935A\n\
-_08144784:\n\
- ldr r7, _081447B0 @ =gUnknown_0203935A\n\
- movs r3, 0\n\
- ldrsh r4, [r7, r3]\n\
- cmp r4, 0\n\
- beq _081447B4\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- strh r0, [r7]\n\
-_081447A8:\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_081447B0: .4byte gUnknown_0203935A\n\
-_081447B4:\n\
- ldr r3, _081447D4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- strh r2, [r0, 0x2E]\n\
- strh r4, [r1, 0x12]\n\
- b _08144848\n\
- .align 2, 0\n\
-_081447D4: .4byte gSprites\n\
-_081447D8:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x12]\n\
- movs r3, 0x12\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0x3F\n\
- bgt _08144848\n\
- adds r0, r2, 0x1\n\
- strh r0, [r1, 0x12]\n\
- b _08144866\n\
-_081447F0:\n\
- ldr r3, _08144828 @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x78\n\
- strh r0, [r2, 0x10]\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_08144828: .4byte gSprites\n\
-_0814482C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x10]\n\
- movs r3, 0x10\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0\n\
- beq _08144844\n\
- subs r0, r2, 0x1\n\
- strh r0, [r1, 0x10]\n\
- b _0814492C\n\
-_08144844:\n\
- movs r0, 0x40\n\
- strh r0, [r1, 0x12]\n\
-_08144848:\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
-_08144850:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r6\n\
- ldrh r1, [r4, 0x12]\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- ble _0814487C\n\
- subs r0, r1, 0x1\n\
- strh r0, [r4, 0x12]\n\
-_08144866:\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0x14\n\
- bl Sin\n\
- ldr r1, _08144878 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_08144878: .4byte gUnknown_0203935A\n\
-_0814487C:\n\
- ldr r2, _08144898 @ =gSprites\n\
- movs r3, 0xC\n\
- ldrsh r1, [r4, r3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_08144898: .4byte gSprites\n\
-_0814489C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0x32\n\
- b _0814492A\n\
-_081448A8:\n\
- ldr r3, _081448C4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xE\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- b _081448E0\n\
- .align 2, 0\n\
-_081448C4: .4byte gSprites\n\
-_081448C8:\n\
- ldr r3, _081448E8 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x4\n\
-_081448E0:\n\
- strh r2, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_081448E8: .4byte gSprites\n\
-_081448EC:\n\
- ldr r3, _0814491C @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x5\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
-_0814491C: .4byte gSprites\n\
-_08144920:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0\n\
-_0814492A:\n\
- strh r1, [r0, 0x8]\n\
-_0814492C:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ switch (gTasks[taskIdC].data[0])
+ {
+ case 0:
+ gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12);
+ gTasks[taskIdC].data[5]++;
+ break;
+ case 1:
+ if (gUnknown_0203935A != 0)
+ {
+ gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12);
+ gTasks[taskIdC].data[5]++;
+ }
+ else
+ {
+ gSprites[gTasks[taskIdC].data[2]].data0 = 2;
+ gTasks[taskIdC].data[5] = 0;
+ gTasks[taskIdC].data[0]++;
+ }
+ break;
+ case 2:
+ if (gTasks[taskIdC].data[5] < 64)
+ {
+ gTasks[taskIdC].data[5]++;
+ gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20);
+ }
+ else
+ {
+ gTasks[taskIdC].data[0]++;
+ }
+ break;
+ case 3:
+ gSprites[gTasks[taskIdC].data[2]].data0 = 3;
+ gSprites[gTasks[taskIdC].data[3]].data0 = 1;
+ gTasks[taskIdC].data[4] = 120;
+ gTasks[taskIdC].data[0]++;
+ break;
+ case 4:
+ if (gTasks[taskIdC].data[4] != 0)
+ {
+ gTasks[taskIdC].data[4]--;
+ }
+ else
+ {
+ gTasks[taskIdC].data[5] = 64;
+ gTasks[taskIdC].data[0]++;
+ }
+ break;
+ case 5:
+ if (gTasks[taskIdC].data[5] > 0)
+ {
+ gTasks[taskIdC].data[5]--;
+ gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20);
+ }
+ else
+ {
+ gSprites[gTasks[taskIdC].data[2]].data0 = 1;
+ gTasks[taskIdC].data[0]++;
+ }
+ break;
+ case 6:
+ gTasks[taskIdC].data[0] = 50;
+ break;
+ case 10:
+ gSprites[gTasks[taskIdC].data[3]].data0 = 2;
+ gTasks[taskIdC].data[0] = 50;
+ break;
+ case 20:
+ gSprites[gTasks[taskIdC].data[2]].data0 = 4;
+ gTasks[taskIdC].data[0] = 50;
+ break;
+ case 30:
+ gSprites[gTasks[taskIdC].data[2]].data0 = 5;
+ gSprites[gTasks[taskIdC].data[3]].data0 = 3;
+ gTasks[taskIdC].data[0] = 50;
+ break;
+ case 50:
+ gTasks[taskIdC].data[0] = 0;
+ break;
+ }
}
#define UNK_DEF_1F3 (499)
diff --git a/src/mail.c b/src/mail.c
index a0a47e98f..1bd4e73dc 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -31,10 +31,10 @@ struct MailLayout
struct Unk2000000
{
/* 0x00*/ u8 words[8][27];
- /* 0xEC*/ u8 varD8[20];
+ /* 0xD8*/ u8 varD8[20];
/* 0xEC*/ MainCallback varEC;
/* 0xF0*/ MainCallback varF0;
- /* 0xFF*/ struct MailStruct *varF4;
+ /* 0xF4*/ struct MailStruct *varF4;
/* 0xF8*/ u8 varF8;
/* 0xF9*/ u8 varF9;
/* 0xFA*/ u8 varFA;
@@ -61,7 +61,9 @@ struct MailGraphics
u16 color12;
};
-extern struct Unk2000000 unk_2000000;
+extern u8 ewram[];
+#define ewram0 (*(struct Unk2000000 *)(ewram))
+
extern struct MailGraphics gMailGraphicsTable[];
extern u16 gUnknown_083E562C[][2];
@@ -71,8 +73,7 @@ extern struct MailLayout gUnknown_083E57A4[];
extern u8 gOtherText_From[];
static u8 sub_80F8A28(void);
-// static void sub_80F8D50(void);
-// static u8 *sub_80F8D7C(u8 *dest, u8 *src);
+static void sub_80F8D50(void);
static void sub_80F8DA0(void);
static void sub_80F8E80(void);
static void sub_80F8F18(void);
@@ -81,222 +82,69 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
-#ifdef NONMATCHING
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
u16 mailDesign;
u8 buffer[4];
- u8 local1;
-
- unk_2000000.varFF = GAME_LANGUAGE;
- // Compiler uses [sub 1], while asm uses [ptr + FE]
- unk_2000000.varFE = 1;
- unk_2000000.var104 = (MainCallback)sub_80EB3FC;
- unk_2000000.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ ewram0.varFF = GAME_LANGUAGE;
+ ewram0.var100 = 1;
+ ewram0.var104 = (MainCallback)sub_80EB3FC;
+ ewram0.var108 = (MainCallback)ConvertEasyChatWordsToString;
mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
if (mailDesign <= 11)
{
- unk_2000000.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
+ ewram0.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
}
else
{
- unk_2000000.varFA = 0;
+ ewram0.varFA = 0;
arg2 = FALSE;
}
- switch (unk_2000000.var100)
+ switch (ewram0.var100)
{
case 0:
default:
- unk_2000000.var10C = &gUnknown_083E5730[unk_2000000.varFA];
+ ewram0.var10C = &gUnknown_083E5730[ewram0.varFA];
break;
case 1:
- unk_2000000.var10C = &gUnknown_083E57A4[unk_2000000.varFA];
+ ewram0.var10C = &gUnknown_083E57A4[ewram0.varFA];
break;
}
if (((sub_80A2D64(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16))
{
- switch (unk_2000000.varFA)
+ switch (ewram0.varFA)
{
case 6:
- unk_2000000.varFB = 1;
+ ewram0.varFB = 1;
break;
case 9:
- unk_2000000.varFB = 2;
+ ewram0.varFB = 2;
break;
default:
- unk_2000000.varFB = 0;
+ ewram0.varFB = 0;
break;
}
}
else
{
- unk_2000000.varFB = 0;
+ ewram0.varFB = 0;
}
- unk_2000000.varF4 = arg0;
- unk_2000000.varEC = arg1;
- unk_2000000.varF8 = arg2;
+ ewram0.varF4 = arg0;
+ ewram0.varEC = arg1;
+ ewram0.varF8 = arg2;
SetMainCallback2(sub_80F8D50);
}
-#else
-__attribute__((naked))
-void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- adds r6, r1, 0\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- ldr r2, _080F8958 @ =0x02000000\n\
- adds r1, r2, 0\n\
- adds r1, 0xFF\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- adds r0, 0xFE\n\
- adds r1, r2, r0\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x82\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F895C @ =sub_80EB3FC\n\
- str r0, [r1]\n\
- movs r0, 0x84\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
- str r0, [r1]\n\
- ldrh r1, [r4, 0x20]\n\
- adds r0, r1, 0\n\
- subs r0, 0x79\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xB\n\
- bhi _080F8964\n\
- subs r1, 0x79\n\
- adds r0, r2, 0\n\
- adds r0, 0xFA\n\
- strb r1, [r0]\n\
- b _080F896E\n\
- .align 2, 0\n\
-_080F8958: .4byte 0x02000000\n\
-_080F895C: .4byte sub_80EB3FC\n\
-_080F8960: .4byte ConvertEasyChatWordsToString\n\
-_080F8964:\n\
- adds r1, r2, 0\n\
- adds r1, 0xFA\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- movs r5, 0\n\
-_080F896E:\n\
- ldr r1, _080F8994 @ =0x02000000\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F8980\n\
- cmp r0, 0x1\n\
- beq _080F899C\n\
-_080F8980:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F8998 @ =gUnknown_083E5730\n\
- b _080F89AC\n\
- .align 2, 0\n\
-_080F8994: .4byte 0x02000000\n\
-_080F8998: .4byte gUnknown_083E5730\n\
-_080F899C:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
-_080F89AC:\n\
- adds r0, r1\n\
- str r0, [r2]\n\
- ldrh r0, [r4, 0x1E]\n\
- mov r1, sp\n\
- bl sub_80A2D64\n\
- lsls r0, 16\n\
- ldr r1, _080F89E0 @ =0xffff0000\n\
- adds r0, r1\n\
- movs r1, 0xCD\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _080F89F8\n\
- ldr r0, _080F89E4 @ =0x02000000\n\
- adds r1, r0, 0\n\
- adds r1, 0xFA\n\
- ldrb r2, [r1]\n\
- adds r1, r0, 0\n\
- cmp r2, 0x6\n\
- beq _080F89E8\n\
- cmp r2, 0x9\n\
- beq _080F89F0\n\
- b _080F89FA\n\
- .align 2, 0\n\
-_080F89DC: .4byte gUnknown_083E57A4\n\
-_080F89E0: .4byte 0xffff0000\n\
-_080F89E4: .4byte 0x02000000\n\
-_080F89E8:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x1\n\
- b _080F8A00\n\
-_080F89F0:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x2\n\
- b _080F8A00\n\
-_080F89F8:\n\
- ldr r1, _080F8A20 @ =0x02000000\n\
-_080F89FA:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0\n\
-_080F8A00:\n\
- strb r0, [r2]\n\
- adds r0, r1, 0\n\
- adds r0, 0xF4\n\
- str r4, [r0]\n\
- subs r0, 0x8\n\
- str r6, [r0]\n\
- adds r0, 0xC\n\
- strb r5, [r0]\n\
- ldr r0, _080F8A24 @ =sub_80F8D50\n\
- bl SetMainCallback2\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F8A20: .4byte 0x02000000\n\
-_080F8A24: .4byte sub_80F8D50\n\
- .syntax divided\n");
-}
-
-#endif
#define RETURN_UP_STATE break
#define RETURN_SKIP_STATE return FALSE
@@ -363,31 +211,31 @@ static u8 sub_80F8A28(void)
RETURN_UP_STATE;
case 11:
- LoadPalette(gMailGraphicsTable[unk_2000000.varFA].palette, 0, 16 * 2);
+ LoadPalette(gMailGraphicsTable[ewram0.varFA].palette, 0, 16 * 2);
RETURN_UP_STATE;
case 12:
- LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tileMap, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gMailGraphicsTable[ewram0.varFA].tileMap, (void *)(VRAM + 0x4000));
RETURN_UP_STATE;
case 13:
- LZ77UnCompVram(gMailGraphicsTable[unk_2000000.varFA].tiles, (void *)(VRAM));
+ LZ77UnCompVram(gMailGraphicsTable[ewram0.varFA].tiles, (void *)(VRAM));
- gPlttBufferUnfaded[241] = gMailGraphicsTable[unk_2000000.varFA].color10;
- gPlttBufferUnfaded[248] = gMailGraphicsTable[unk_2000000.varFA].color12;
+ gPlttBufferUnfaded[241] = gMailGraphicsTable[ewram0.varFA].color10;
+ gPlttBufferUnfaded[248] = gMailGraphicsTable[ewram0.varFA].color12;
gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
RETURN_UP_STATE;
case 14:
- if (unk_2000000.varF8 != 0)
+ if (ewram0.varF8 != 0)
{
sub_80F8DA0();
}
RETURN_UP_STATE;
case 15:
- if (unk_2000000.varF8 != 0)
+ if (ewram0.varF8 != 0)
{
sub_80F8E80();
}
@@ -400,18 +248,18 @@ static u8 sub_80F8A28(void)
{
u16 local1;
- local1 = sub_809D4A8(unk_2000000.varF4->species);
+ local1 = sub_809D4A8(ewram0.varF4->species);
- switch (unk_2000000.varFB)
+ switch (ewram0.varFB)
{
case 1:
sub_809D580(local1);
- unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
+ ewram0.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
break;
case 2:
sub_809D580(local1);
- unk_2000000.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
+ ewram0.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
break;
}
RETURN_UP_STATE;
@@ -432,7 +280,7 @@ static u8 sub_80F8A28(void)
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
gPaletteFade.bufferTransferDisabled = 0;
- unk_2000000.varF0 = sub_80F8F58;
+ ewram0.varF0 = sub_80F8F58;
return TRUE;
default:
@@ -443,7 +291,7 @@ static u8 sub_80F8A28(void)
return FALSE;
}
-void sub_80F8D50(void)
+static void sub_80F8D50(void)
{
do
{
@@ -455,7 +303,7 @@ void sub_80F8D50(void)
} while (sub_80F9344() != 1);
}
-u8 *sub_80F8D7C(u8 *dest, u8 *src)
+static u8 *sub_80F8D7C(u8 *dest, u8 *src)
{
u16 length;
@@ -467,163 +315,33 @@ u8 *sub_80F8D7C(u8 *dest, u8 *src)
return dest + length;
}
-#ifdef NONMATCHING
static void sub_80F8DA0(void)
{
- u8 local0;
-
- local0 = unk_2000000.var10C->var0;
+ u16 i;
+ u8 r6;
+ u8 *ptr;
- // No idea what's happening in this loop.
- if (local0 <= 0)
+ r6 = 0;
+ for (i = 0; i < ewram0.var10C->var0; i++)
{
- u8 i;
- u8 i2 = 0;
-
- for (i = 0; i < unk_2000000.var10C->var0; i++)
- {
- ConvertEasyChatWordsToString(unk_2000000.words[i], &unk_2000000.varF4->words[i2],
- ((*unk_2000000.var10C->var4)[i] << 28) >> 30, 1);
- i2 += ((*unk_2000000.var10C->var4)[i] << 28) >> 30;
- }
+ ConvertEasyChatWordsToString(ewram0.words[i], &ewram0.varF4->words[r6], ewram0.var10C->var4[i].unk_0_2, 1);
+ r6 += ewram0.var10C->var4[i].unk_0_2;
}
-
- if (unk_2000000.var100 == 0)
+ ptr = ewram0.varD8;
+ if (ewram0.var100 == 0)
{
- u8 *ptr;
- u16 length;
-
- ptr = sub_80F8D7C(unk_2000000.varD8, unk_2000000.varF4->playerName);
+ ptr = sub_80F8D7C(ptr, ewram0.varF4->playerName);
StringCopy(ptr, gOtherText_From);
+ ewram0.varF9 = ewram0.var10C->var2 - StringLength(ewram0.varD8);
- length = StringLength(unk_2000000.varD8);
-
- unk_2000000.varF9 = unk_2000000.var10C->var2 - length;
}
else
{
- u8 *ptr;
-
- ptr = StringCopy(unk_2000000.varD8, gOtherText_From);
- sub_80F8D7C(ptr, unk_2000000.varF4->playerName);
-
- unk_2000000.varF9 = unk_2000000.var10C->var2;
+ ptr = StringCopy(ptr, gOtherText_From);
+ sub_80F8D7C(ptr, ewram0.varF4->playerName);
+ ewram0.varF9 = ewram0.var10C->var2;
}
}
-#else
-__attribute__((naked))
-static void sub_80F8DA0(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- movs r6, 0\n\
- movs r5, 0\n\
- ldr r2, _080F8E3C @ =0x02000000\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bcs _080F8E04\n\
- mov r8, r2\n\
- adds r7, r1, 0\n\
-_080F8DBE:\n\
- lsls r0, r5, 3\n\
- subs r0, r5\n\
- lsls r0, 2\n\
- subs r0, r5\n\
- add r0, r8\n\
- mov r1, r8\n\
- adds r1, 0xF4\n\
- lsls r2, r6, 1\n\
- ldr r1, [r1]\n\
- adds r1, r2\n\
- ldr r2, [r7]\n\
- ldr r2, [r2, 0x4]\n\
- lsls r4, r5, 2\n\
- adds r2, r4, r2\n\
- ldr r2, [r2]\n\
- lsls r2, 28\n\
- lsrs r2, 30\n\
- movs r3, 0x1\n\
- bl ConvertEasyChatWordsToString\n\
- ldr r1, [r7]\n\
- ldr r0, [r1, 0x4]\n\
- adds r4, r0\n\
- ldr r0, [r4]\n\
- lsls r0, 28\n\
- lsrs r0, 30\n\
- adds r0, r6, r0\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldrb r1, [r1]\n\
- cmp r5, r1\n\
- bcc _080F8DBE\n\
-_080F8E04:\n\
- ldr r2, _080F8E40 @ =0x020000d8\n\
- adds r4, r2, 0\n\
- subs r4, 0xD8\n\
- adds r0, r2, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080F8E48\n\
- ldr r1, [r2, 0x1C]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- adds r2, r0, 0\n\
- ldr r1, _080F8E44 @ =gOtherText_From\n\
- bl StringCopy\n\
- ldr r0, _080F8E40 @ =0x020000d8\n\
- bl StringLength\n\
- movs r2, 0x86\n\
- lsls r2, 1\n\
- adds r1, r4, r2\n\
- ldr r1, [r1]\n\
- ldrb r1, [r1, 0x2]\n\
- subs r1, r0\n\
- b _080F8E6A\n\
- .align 2, 0\n\
-_080F8E3C: .4byte 0x02000000\n\
-_080F8E40: .4byte 0x020000d8\n\
-_080F8E44: .4byte gOtherText_From\n\
-_080F8E48:\n\
- ldr r1, _080F8E7C @ =gOtherText_From\n\
- adds r0, r2, 0\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- adds r0, r4, 0\n\
- adds r0, 0xF4\n\
- ldr r1, [r0]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- movs r1, 0x86\n\
- lsls r1, 1\n\
- adds r0, r4, r1\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x2]\n\
-_080F8E6A:\n\
- adds r0, r4, 0\n\
- adds r0, 0xF9\n\
- strb r1, [r0]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F8E7C: .4byte gOtherText_From\n\
- .syntax divided\n");
-}
-#endif
static void sub_80F8E80(void)
{
@@ -631,25 +349,25 @@ static void sub_80F8E80(void)
u8 x;
u8 y = 0;
- for (pos = 0; pos < unk_2000000.var10C->var0; pos++)
+ for (pos = 0; pos < ewram0.var10C->var0; pos++)
{
- if (unk_2000000.words[pos][0] == 0xFF)
+ if (ewram0.words[pos][0] == 0xFF)
{
continue;
}
- if (unk_2000000.words[pos][0] == 0x00)
+ if (ewram0.words[pos][0] == 0x00)
{
continue;
}
- x = unk_2000000.var10C->var4[pos].unk_0_4;
- y += unk_2000000.var10C->var4[pos].unk_0_0;
- MenuPrint(unk_2000000.words[pos], unk_2000000.var10C->var3_4 + x, unk_2000000.var10C->var3_0 + y);
+ x = ewram0.var10C->var4[pos].unk_0_4;
+ y += ewram0.var10C->var4[pos].unk_0_0;
+ MenuPrint(ewram0.words[pos], ewram0.var10C->var3_4 + x, ewram0.var10C->var3_0 + y);
y += 2;
}
- MenuPrint(unk_2000000.varD8, unk_2000000.varF9, unk_2000000.var10C->var1);
+ MenuPrint(ewram0.varD8, ewram0.varF9, ewram0.var10C->var1);
}
static void sub_80F8F18(void)
@@ -661,13 +379,13 @@ static void sub_80F8F18(void)
static void sub_80F8F2C(void)
{
- if (unk_2000000.varFB != 0)
+ if (ewram0.varFB != 0)
{
AnimateSprites();
BuildOamBuffer();
}
- unk_2000000.varF0();
+ ewram0.varF0();
}
static void sub_80F8F58(void)
@@ -677,7 +395,7 @@ static void sub_80F8F58(void)
local0 = UpdatePaletteFade();
if (local0 == 0)
{
- unk_2000000.varF0 = sub_80F8F78;
+ ewram0.varF0 = sub_80F8F78;
}
}
@@ -686,7 +404,7 @@ static void sub_80F8F78(void)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
- unk_2000000.varF0 = sub_80F8FB4;
+ ewram0.varF0 = sub_80F8FB4;
}
}
@@ -699,18 +417,18 @@ static void sub_80F8FB4(void)
return;
}
- SetMainCallback2(unk_2000000.varEC);
- switch (unk_2000000.varFB)
+ SetMainCallback2(ewram0.varEC);
+ switch (ewram0.varFB)
{
case 2:
case 1:
- local1 = sub_809D4A8(unk_2000000.varF4->species);
+ local1 = sub_809D4A8(ewram0.varF4->species);
sub_809D608(local1);
- sub_809D510(&gSprites[unk_2000000.varFC]);
+ sub_809D510(&gSprites[ewram0.varFC]);
break;
}
- memset(&unk_2000000, 0, 0x110);
+ memset(&ewram0, 0, 0x110);
ResetPaletteFade();
}
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 25651702d..11dadf380 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -121,109 +121,54 @@ void sub_80F7B40(void)
oldMan->oldMan1.unk_2DBD = 1;
}
-// too mathy
-__attribute__((naked))
void sub_80F7BA0(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94\n\
- ldr r0, _080F7C4C @ =gSpecialVar_0x8004\n\
- ldrh r0, [r0]\n\
- adds r5, r1, 0\n\
- adds r5, 0xE\n\
- cmp r0, 0\n\
- bne _080F7BB2\n\
- adds r5, r1, 0x2\n\
-_080F7BB2:\n\
- ldr r2, _080F7C50 @ =gStringVar4\n\
- adds r4, r2, 0\n\
- movs r6, 0\n\
-_080F7BB8:\n\
- ldrh r1, [r5]\n\
- adds r5, 0x2\n\
- adds r0, r2, 0\n\
- bl sub_80EB3FC\n\
- adds r2, r0, 0\n\
- adds r7, r6, 0x1\n\
- cmp r2, r4\n\
- beq _080F7BDA\n\
- movs r1, 0x37\n\
-_080F7BCC:\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080F7BD4\n\
- strb r1, [r4]\n\
-_080F7BD4:\n\
- adds r4, 0x1\n\
- cmp r2, r4\n\
- bne _080F7BCC\n\
-_080F7BDA:\n\
- adds r4, 0x1\n\
- movs r0, 0\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- ldrh r1, [r5]\n\
- adds r5, 0x2\n\
- adds r0, r2, 0\n\
- bl sub_80EB3FC\n\
- adds r2, r0, 0\n\
- cmp r2, r4\n\
- beq _080F7C02\n\
- movs r1, 0x37\n\
-_080F7BF4:\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080F7BFC\n\
- strb r1, [r4]\n\
-_080F7BFC:\n\
- adds r4, 0x1\n\
- cmp r2, r4\n\
- bne _080F7BF4\n\
-_080F7C02:\n\
- adds r4, 0x1\n\
- movs r0, 0xFE\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- ldrh r1, [r5]\n\
- adds r5, 0x2\n\
- adds r0, r2, 0\n\
- bl sub_80EB3FC\n\
- adds r2, r0, 0\n\
- cmp r2, r4\n\
- beq _080F7C2A\n\
- movs r1, 0x37\n\
-_080F7C1C:\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080F7C24\n\
- strb r1, [r4]\n\
-_080F7C24:\n\
- adds r4, 0x1\n\
- cmp r2, r4\n\
- bne _080F7C1C\n\
-_080F7C2A:\n\
- cmp r6, 0\n\
- bne _080F7C3A\n\
- movs r0, 0xFC\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0xF\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
-_080F7C3A:\n\
- lsls r0, r7, 16\n\
- lsrs r6, r0, 16\n\
- cmp r6, 0x1\n\
- bls _080F7BB8\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F7C48: .4byte gSaveBlock1 + 0x2D94\n\
-_080F7C4C: .4byte gSpecialVar_0x8004\n\
-_080F7C50: .4byte gStringVar4\n\
- .syntax divided");
+ struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1;
+ u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
+ u16 *r5;
+ u16 i;
+ u8 *ptr;
+ u8 *r4;
+
+ r5 = oldMan->mauvilleOldMan_ecArray2;
+ if (specialVar == 0)
+ r5 = oldMan->mauvilleOldMan_ecArray;
+ ptr = gStringVar4;
+ r4 = ptr;
+ for (i = 0; i < 2; i++)
+ {
+ ptr = sub_80EB3FC(ptr, *(r5++));
+ while (ptr != r4)
+ {
+ if (*r4 == 0)
+ *r4 = 0x37;
+ r4++;
+ }
+ r4++;
+ *(ptr++) = 0;
+ ptr = sub_80EB3FC(ptr, *(r5++));
+ while (ptr != r4)
+ {
+ if (*r4 == 0)
+ *r4 = 0x37;
+ r4++;
+ }
+ r4++;
+ *(ptr++) = 0xFE;
+ ptr = sub_80EB3FC(ptr, *(r5++));
+ while (ptr != r4)
+ {
+ if (*r4 == 0)
+ *r4 = 0x37;
+ r4++;
+ }
+ //_080F7C2A
+ if (i == 0)
+ {
+ *(ptr++) = EXT_CTRL_CODE_BEGIN;
+ *(ptr++) = 0xF;
+ }
+ }
}
void sub_80F7C54(void)
@@ -276,131 +221,32 @@ void sub_80F7CC8(void)
gScriptResult = TRUE;
}
-// someone fix this
-#ifdef NONMATCHING
void sub_80F7CF4(void)
{
- u8 *stringPtr;
- OldMan *oldMan = &gSaveBlock1.oldMan;
+ struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2;
- if(oldMan->oldMan2.unk1 == 0)
+ if(oldMan->unk1 == 0)
sub_80F7DC0();
- if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array?
+ if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array?
{
- u16 random = 7 % Random(); // this is a little bit closer, but the compiler prefers an AND instead of division. i assume its because the compiler wants to avoid division by zero, however using an & causes this order to not be close anymore.
- sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]);
- stringPtr = StringCopy(gStringVar4, gOtherText_Is);
+ u8 *stringPtr;
+ u32 random = Random();
+
+ random %= 8;
+ stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]);
+ stringPtr = StringCopy(stringPtr, gOtherText_Is);
stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]);
StringCopy(stringPtr, gOtherText_DontYouAgree);
}
else
{
- StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->oldMan2.mauvilleOldMan_ecArray2[oldMan->oldMan2.unk2++]]);
+ StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]);
}
if(!(Random() % 10))
- oldMan->oldMan2.unk1 = 10;
+ oldMan->unk1 = 10;
else
- oldMan->oldMan2.unk1++;
+ oldMan->unk1++;
gScriptResult = TRUE;
}
-#else
-__attribute__((naked))
-void sub_80F7CF4(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94\n\
- ldrb r0, [r5, 0x1]\n\
- cmp r0, 0\n\
- bne _080F7D02\n\
- bl sub_80F7DC0\n\
-_080F7D02:\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r0, 1\n\
- adds r6, r5, 0x4\n\
- adds r0, r6\n\
- ldrh r1, [r0]\n\
- ldr r0, _080F7D54 @ =0x0000ffff\n\
- cmp r1, r0\n\
- beq _080F7D68\n\
- bl Random\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- movs r0, 0x7\n\
- ands r4, r0\n\
- ldr r0, _080F7D58 @ =gStringVar4\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r1, 1\n\
- adds r1, r6\n\
- ldrh r1, [r1]\n\
- bl sub_80EB3FC\n\
- adds r2, r0, 0\n\
- ldr r1, _080F7D5C @ =gOtherText_Is\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- ldr r0, _080F7D60 @ =gUnknown_083E5388\n\
- lsls r4, 2\n\
- adds r4, r0\n\
- ldr r1, [r4]\n\
- adds r0, r2, 0\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- ldr r1, _080F7D64 @ =gOtherText_DontYouAgree\n\
- bl StringCopy\n\
- b _080F7D88\n\
- .align 2, 0\n\
-_080F7D50: .4byte gSaveBlock1 + 0x2D94\n\
-_080F7D54: .4byte 0x0000ffff\n\
-_080F7D58: .4byte gStringVar4\n\
-_080F7D5C: .4byte gOtherText_Is\n\
-_080F7D60: .4byte gUnknown_083E5388\n\
-_080F7D64: .4byte gOtherText_DontYouAgree\n\
-_080F7D68:\n\
- ldr r0, _080F7DA0 @ =gStringVar4\n\
- ldr r3, _080F7DA4 @ =gUnknown_083E53A8\n\
- ldrb r1, [r5, 0x2]\n\
- adds r2, r1, 0x1\n\
- strb r2, [r5, 0x2]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r2, r5, 0\n\
- adds r2, 0x18\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- lsls r1, 2\n\
- adds r1, r3\n\
- ldr r1, [r1]\n\
- bl StringCopy\n\
-_080F7D88:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _080F7DA8\n\
- movs r0, 0xA\n\
- b _080F7DAC\n\
- .align 2, 0\n\
-_080F7DA0: .4byte gStringVar4\n\
-_080F7DA4: .4byte gUnknown_083E53A8\n\
-_080F7DA8:\n\
- ldrb r0, [r5, 0x1]\n\
- adds r0, 0x1\n\
-_080F7DAC:\n\
- strb r0, [r5, 0x1]\n\
- ldr r1, _080F7DBC @ =gScriptResult\n\
- movs r0, 0x1\n\
- strh r0, [r1]\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F7DBC: .4byte gScriptResult\n\
- .syntax divided");
-}
-#endif
diff --git a/src/trainer_card.c b/src/trainer_card.c
index a0b1cf6d1..e6ed79c15 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -42,11 +42,18 @@ struct Struct2000000
/*0x9C*/ u8 language; // 0x9C
};
-extern struct Struct2000000 unk_2000000;
+extern u8 ewram[];
+#define ewram0 (*(struct Struct2000000 *)(ewram))
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern struct TrainerCard gTrainerCards[4];
-extern u8 gUnknown_03004DE0[]; // TODO: find out correct type
+struct UnknownStruct1
+{
+ u8 filler0[0x780];
+ u16 unk780[160];
+};
+extern struct UnknownStruct1 gUnknown_03004DE0;
extern u8 gUnknown_083B5EF4[];
extern u16 *gUnknown_083B5EF8[5];
@@ -67,6 +74,9 @@ extern u8 gOtherText_TradeRecord[];
extern u8 gOtherText_Boy[];
extern u8 gOtherText_Girl[];
+extern bool8 (*const gUnknown_083B5EBC[])(struct Task *);
+extern bool8 (*const gUnknown_083B5ED8[])(struct Task *);
+
// Other signature than on save_menu_util.h
void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon);
@@ -151,29 +161,16 @@ void sub_8093110(Callback arg1)
{
sub_80932AC(arg1);
SetMainCallback2(sub_8093174);
- unk_2000000.language = GAME_LANGUAGE;
+ ewram0.language = GAME_LANGUAGE;
}
void sub_8093130(u8 playerIndex, Callback arg2)
{
- struct Struct2000000* r2;
- struct LinkPlayer* r3;
- struct LinkPlayerMapObject* r4;
- u8 linkPlayerId;
-
sub_80932E4(playerIndex, arg2);
SetMainCallback2(sub_8093174);
-
- r2 = &unk_2000000;
- r3 = gLinkPlayers;
- r4 = gLinkPlayerMapObjects;
-
- linkPlayerId = r4[playerIndex].linkPlayerId;
-
- r2->language = r3[linkPlayerId].language;
+ ewram0.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
-
static void sub_8093174(void)
{
switch (gMain.state)
@@ -236,14 +233,14 @@ static void sub_8093254(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- unk_2000000.var_6++;
- if (unk_2000000.var_6 >= 60)
+ ewram0.var_6++;
+ if (ewram0.var_6 >= 60)
{
- unk_2000000.var_6 = 0;
- unk_2000000.var_5 ^= 1;
+ ewram0.var_6 = 0;
+ ewram0.var_5 ^= 1;
}
- if (unk_2000000.var_4)
- DmaCopy16(3, gUnknown_03004DE0, gUnknown_03004DE0 + 0x780, 320);
+ if (ewram0.var_4)
+ DmaCopy16(3, gUnknown_03004DE0.filler0, gUnknown_03004DE0.unk780, sizeof(gUnknown_03004DE0.unk780));
}
static void sub_80932AC(Callback callBack)
@@ -268,20 +265,20 @@ void sub_8093324(void)
{
u8 taskId = FindTaskIdByFunc(nullsub_60);
struct Task *task = &gTasks[taskId];
- unk_2000000.var_1 = task->data[TD_0];
+ ewram0.var_1 = task->data[TD_0];
- LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&unk_2000000.var_60);
+ LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&ewram0.var_60);
- if (unk_2000000.var_1)
+ if (ewram0.var_1)
{
struct TrainerCard(*trainerCards)[4] = &gTrainerCards;
s16 var = task->data[TD_1];
struct TrainerCard *dest = &(*trainerCards)[var];
- memcpy(&unk_2000000.var_64, dest, sizeof(struct TrainerCard));
+ memcpy(&ewram0.var_64, dest, sizeof(struct TrainerCard));
}
else
{
- sub_8093390(&unk_2000000.var_64);
+ sub_8093390(&ewram0.var_64);
}
}
@@ -426,271 +423,138 @@ static void sub_8093550(void)
REG_IME = backup;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR;
- REG_DISPCNT = 0x1f40;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
}
-__attribute__((naked))
-void sub_8093598()
+void sub_8093598(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- movs r3, 0x80\n\
- lsls r3, 9\n\
- mov r4, sp\n\
- movs r6, 0\n\
- ldr r1, _080935E4 @ =0x040000d4\n\
- movs r5, 0x80\n\
- lsls r5, 5\n\
- ldr r7, _080935E8 @ =0x81000800\n\
- movs r0, 0x81\n\
- lsls r0, 24\n\
- mov r12, r0\n\
-_080935B6:\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- str r7, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r5\n\
- subs r3, r5\n\
- cmp r3, r5\n\
- bhi _080935B6\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 1\n\
- mov r2, r12\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080935E4: .4byte 0x040000d4\n\
-_080935E8: .4byte 0x81000800\n\
- .syntax divided\n");
+ u8 *addr = (void *)VRAM;
+ u32 size = 0x10000;
+
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
}
-__attribute__((naked))
-void sub_80935EC()
+void sub_80935EC(void)
{
- asm(".syntax unified\n\
- sub sp, 0x4\n\
- movs r2, 0xE0\n\
- lsls r2, 19\n\
- mov r1, sp\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _08093608 @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _0809360C @ =0x81000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- add sp, 0x4\n\
- bx lr\n\
- .align 2, 0\n\
-_08093608: .4byte 0x040000d4\n\
-_0809360C: .4byte 0x81000200\n\
- .syntax divided\n");
+ void *addr = (void *)OAM;
+
+ DmaFill16(3, 0, addr, 0x400);
}
-__attribute__((naked))
-void sub_8093610()
+void sub_8093610(void)
{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r5, _08093664 @ =REG_BG0CNT\n\
- movs r1, 0\n\
- strh r1, [r5]\n\
- ldr r2, _08093668 @ =REG_BG1CNT\n\
- strh r1, [r2]\n\
- ldr r3, _0809366C @ =REG_BG2CNT\n\
- strh r1, [r3]\n\
- ldr r4, _08093670 @ =REG_BG3CNT\n\
- strh r1, [r4]\n\
- ldr r0, _08093674 @ =REG_BG0HOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- ldr r1, _08093678 @ =0x00001e08\n\
- adds r0, r1, 0\n\
- strh r0, [r5]\n\
- ldr r1, _0809367C @ =0x00000801\n\
- adds r0, r1, 0\n\
- strh r0, [r2]\n\
- ldr r1, _08093680 @ =0x00000902\n\
- adds r0, r1, 0\n\
- strh r0, [r3]\n\
- ldr r1, _08093684 @ =0x00000a03\n\
- adds r0, r1, 0\n\
- strh r0, [r4]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093664: .4byte 0x4000008 @ REG_BG0CNT\n\
-_08093668: .4byte 0x400000A @ REG_BG1CNT\n\
-_0809366C: .4byte 0x400000C @ REG_BG2CNT\n\
-_08093670: .4byte 0x400000E @ REG_BG3CNT\n\
-_08093674: .4byte 0x4000010 @ REG_BG0HOFS\n\
-_08093678: .4byte 0x00001e08\n\
-_0809367C: .4byte 0x00000801\n\
-_08093680: .4byte 0x00000902\n\
-_08093684: .4byte 0x00000a03\n\
- .syntax divided\n");
+ REG_BG0CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG3CNT = 0;
+ 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_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(30) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(10) | BGCNT_16COLOR | BGCNT_TXT256x256;
}
-#ifdef NONMATCHING
static void sub_8093688(void)
{
- int i;
+ u8 i;
- asm_comment("WIP");
sub_8093324();
- unk_2000000.var_0 = FALSE;
- unk_2000000.var_3 = FALSE;
- unk_2000000.var_4 = FALSE;
+ ewram0.var_0 = FALSE;
+ ewram0.var_3 = FALSE;
+ ewram0.var_4 = FALSE;
- unk_2000000.var_2 = unk_2000000.var_64.stars;
+ ewram0.var_2 = ewram0.var_64.stars;
- unk_2000000.var_5 = FALSE;
- unk_2000000.var_6 = FALSE;
+ ewram0.var_5 = FALSE;
+ ewram0.var_6 = FALSE;
for (i = 0; i < 4; i++)
{
- sub_80EB3FC(unk_2000000.var_20[i], unk_2000000.var_64.var_28[i]);
+ sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]);
}
sub_80936D4();
}
-#else
-
-__attribute__((naked))
-static void sub_8093688(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- bl sub_8093324\n\
- ldr r2, _080936D0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r2]\n\
- strb r1, [r2, 0x3]\n\
- strb r1, [r2, 0x4]\n\
- adds r0, r2, 0\n\
- adds r0, 0x65\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x2]\n\
- strb r1, [r2, 0x5]\n\
- strb r1, [r2, 0x6]\n\
- movs r4, 0\n\
- adds r6, r2, 0\n\
- adds r6, 0x20\n\
- adds r5, r2, 0\n\
- adds r5, 0x8C\n\
-_080936AE:\n\
- lsls r0, r4, 4\n\
- adds r0, r6\n\
- lsls r1, r4, 1\n\
- adds r1, r5, r1\n\
- ldrh r1, [r1]\n\
- bl sub_80EB3FC\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bls _080936AE\n\
- bl sub_80936D4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080936D0: .4byte 0x02000000\n\
- .syntax divided\n");
-}
-
-#endif
void sub_80936D4(void)
{
- unk_2000000.var_7 = FALSE;
- unk_2000000.var_8 = FALSE;
- unk_2000000.var_9 = FALSE;
- unk_2000000.var_a = FALSE;
- unk_2000000.var_b = FALSE;
- unk_2000000.var_c = FALSE;
- unk_2000000.var_d = FALSE;
+ ewram0.var_7 = 0;
+ ewram0.var_8 = 0;
+ ewram0.var_9 = 0;
+ ewram0.var_a = 0;
+ ewram0.var_b = 0;
+ ewram0.var_c = 0;
+ ewram0.var_d = 0;
- memset(unk_2000000.var_e, 0, sizeof(unk_2000000.var_e));
+ memset(ewram0.var_e, 0, sizeof(ewram0.var_e));
- if (unk_2000000.var_64.hasPokedex)
+ if (ewram0.var_64.hasPokedex)
{
- unk_2000000.var_7 += TRUE;
+ ewram0.var_7 += 1;
}
- if (unk_2000000.var_64.firstHallOfFameA != 0 || unk_2000000.var_64.firstHallOfFameB != 0 ||
- unk_2000000.var_64.firstHallOfFameC != 0)
+ if (ewram0.var_64.firstHallOfFameA != 0 || ewram0.var_64.firstHallOfFameB != 0 ||
+ ewram0.var_64.firstHallOfFameC != 0)
{
- unk_2000000.var_8 += TRUE;
+ ewram0.var_8 += 1;
}
- if (unk_2000000.var_64.linkBattleWins != 0 || unk_2000000.var_64.linkBattleLosses != 0)
+ if (ewram0.var_64.linkBattleWins != 0 || ewram0.var_64.linkBattleLosses != 0)
{
- unk_2000000.var_9 += TRUE;
+ ewram0.var_9 += 1;
}
- if (unk_2000000.var_64.battleTowerWins != 0 || unk_2000000.var_64.battleTowerLosses != 0)
+ if (ewram0.var_64.battleTowerWins != 0 || ewram0.var_64.battleTowerLosses != 0)
{
- unk_2000000.var_a += TRUE;
+ ewram0.var_a += 1;
}
- if (unk_2000000.var_64.contestsWithFriends != 0)
+ if (ewram0.var_64.contestsWithFriends != 0)
{
- unk_2000000.var_b += TRUE;
+ ewram0.var_b += 1;
}
- if (unk_2000000.var_64.pokeblocksWithFriends != 0)
+ if (ewram0.var_64.pokeblocksWithFriends != 0)
{
- unk_2000000.var_c += TRUE;
+ ewram0.var_c += 1;
}
- if (unk_2000000.var_64.pokemonTrades != 0)
+ if (ewram0.var_64.pokemonTrades != 0)
{
- unk_2000000.var_d += TRUE;
+ ewram0.var_d += 1;
}
- if (!unk_2000000.var_1)
+ if (!ewram0.var_1)
{
u32 badgeFlag;
int i;
i = 0;
badgeFlag = BADGE01_GET;
- while (TRUE)
+ while (1)
{
if (FlagGet(badgeFlag))
{
- unk_2000000.var_e[i] += TRUE;
+ ewram0.var_e[i] += 1;
}
badgeFlag += 1;
@@ -747,202 +611,87 @@ static void sub_809380C()
sub_809382C(taskId);
}
-__attribute__((naked))
static void sub_809382C(u8 taskId)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r4, r1, 3\n\
- ldr r6, _0809385C @ =0x02000000\n\
- ldr r5, _08093860 @ =gTasks\n\
-_0809383E:\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r7\n\
- ldr r1, [r0]\n\
- adds r0, r4, r5\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0809383E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093858: .4byte gUnknown_083B5EBC\n\
-_0809385C: .4byte 0x02000000\n\
-_08093860: .4byte gTasks\n\
- .syntax divided\n");
+ while (gUnknown_083B5EBC[ewram0.var_0](&gTasks[taskId]) != 0)
+ ;
}
-__attribute__((naked))
-bool8 sub_8093864()
+bool8 sub_8093864(struct Task *task)
{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- ldr r4, _080938A0 @ =0x02000000\n\
- ldr r2, _080938A4 @ =gSaveBlock2\n\
- ldrb r1, [r2, 0x11]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- movs r5, 0\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r2, 0x12]\n\
- strb r0, [r4, 0x6]\n\
- bl sub_80939A4\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r5, [sp]\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- movs r3, 0\n\
- bl BeginNormalPaletteFade\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080938A0: .4byte 0x02000000\n\
-_080938A4: .4byte gSaveBlock2\n\
- .syntax divided\n");
+ ewram0.var_5 = gSaveBlock2.playTimeSeconds & 1;
+ ewram0.var_6 = gSaveBlock2.playTimeVBlanks;
+ sub_80939A4();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ ewram0.var_0 += 1;
+ return FALSE;
}
-__attribute__((naked))
-bool8 sub_80938A8()
+bool8 sub_80938A8(struct Task *task)
{
- asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938C4 @ =gPaletteFade\n\
- ldrb r1, [r0, 0x7]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080938BE\n\
- ldr r1, _080938C8 @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
-_080938BE:\n\
- movs r0, 0\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080938C4: .4byte gPaletteFade\n\
-_080938C8: .4byte 0x02000000\n\
- .syntax divided\n");
+ if (!gPaletteFade.active)
+ ewram0.var_0 += 1;
+ return FALSE;
}
-__attribute__((naked))
-bool8 sub_80938CC()
+bool8 sub_80938CC(struct Task *task)
{
- asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938E4 @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080938EC\n\
- ldr r1, _080938E8 @ =0x02000000\n\
- movs r0, 0x5\n\
- strb r0, [r1]\n\
- movs r0, 0x1\n\
- b _08093914\n\
- .align 2, 0\n\
-_080938E4: .4byte gMain\n\
-_080938E8: .4byte 0x02000000\n\
-_080938EC:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08093912\n\
- ldr r2, _08093900 @ =0x02000000\n\
- ldrb r1, [r2, 0x3]\n\
- cmp r1, 0\n\
- beq _08093904\n\
- movs r0, 0x5\n\
- b _0809390C\n\
- .align 2, 0\n\
-_08093900: .4byte 0x02000000\n\
-_08093904:\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- strb r0, [r2, 0x3]\n\
- movs r0, 0x3\n\
-_0809390C:\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- b _08093914\n\
-_08093912:\n\
- movs r0, 0\n\
-_08093914:\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ if (gMain.newKeys & B_BUTTON)
+ {
+ ewram0.var_0 = 5;
+ return TRUE;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (ewram0.var_3 != 0)
+ {
+ ewram0.var_0 = 5;
+ return TRUE;
+ }
+ else
+ {
+ ewram0.var_3 ^= 1;
+ ewram0.var_0 = 3;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
}
-bool8 sub_8093918()
+bool8 sub_8093918(struct Task *task)
{
sub_8093A28();
PlaySE(SE_CARD);
- unk_2000000.var_0 += TRUE;
+ ewram0.var_0 += 1;
return FALSE;
}
-bool8 sub_8093938()
+bool8 sub_8093938(struct Task *task)
{
if (sub_8093A48())
{
- unk_2000000.var_0 = 2;
+ ewram0.var_0 = 2;
}
return FALSE;
}
-__attribute__((naked))
-bool8 sub_8093954()
+bool8 sub_8093954(struct Task *task)
{
- asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x4\n\
- bl sub_80939C0\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x10\n\
- bl BeginNormalPaletteFade\n\
- ldr r1, _0809397C @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0809397C: .4byte 0x02000000\n\
- .syntax divided\n");
+ sub_80939C0();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ ewram0.var_0 += 1;
+ return FALSE;
}
-bool8 sub_8093980()
+bool8 sub_8093980(struct Task *task)
{
if (!gPaletteFade.active)
{
- SetMainCallback2((MainCallback)unk_2000000.var_60);
+ SetMainCallback2((MainCallback)ewram0.var_60);
}
return FALSE;
@@ -972,9 +721,9 @@ static void sub_80939DC(u8 taskId)
struct Task *task;
task = &gTasks[taskId];
- if (unk_2000000.var_5 != task->data[TD_1])
+ if (ewram0.var_5 != task->data[TD_1])
{
- task->data[TD_1] = unk_2000000.var_5;
+ task->data[TD_1] = ewram0.var_5;
task->data[TD_0] ^= TRUE;
}
@@ -990,102 +739,32 @@ static void sub_8093A28(void)
sub_8093A68(taskId);
}
-__attribute__((naked))
-static u8 sub_8093A48()
+static u8 sub_8093A48(void)
{
- asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _08093A5C @ =sub_8093A68\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _08093A60\n\
- movs r0, 0\n\
- b _08093A62\n\
- .align 2, 0\n\
-_08093A5C: .4byte sub_8093A68\n\
-_08093A60:\n\
- movs r0, 0x1\n\
-_08093A62:\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ if (FindTaskIdByFunc(sub_8093A68) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
}
-__attribute__((naked))
static void sub_8093A68(u8 taskId)
{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
- ldr r2, _08093A9C @ =gTasks\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1, r2\n\
-_08093A7A:\n\
- movs r1, 0x8\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08093A7A\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093A98: .4byte gUnknown_083B5ED8\n\
-_08093A9C: .4byte gTasks\n\
- .syntax divided\n");
+ while (gUnknown_083B5ED8[gTasks[taskId].data[0]](&gTasks[taskId]) != 0)
+ ;
}
-__attribute__((naked))
-bool8 sub_8093AA0()
+bool8 sub_8093AA0(struct Task *task)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r4, r0, 0\n\
- ldr r0, _08093AE0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r0, 0x4]\n\
- bl dp12_8087EA4\n\
- movs r1, 0\n\
- ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
- ldr r2, _08093AE8 @ =0x0000fffc\n\
- movs r3, 0xF0\n\
- lsls r3, 3\n\
- adds r0, r3\n\
-_08093ABA:\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- adds r1, 0x1\n\
- cmp r1, 0x9F\n\
- bls _08093ABA\n\
- ldr r0, _08093AEC @ =sub_8093D7C\n\
- bl SetHBlankCallback\n\
- ldr r1, _08093AE0 @ =0x02000000\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x4]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- movs r0, 0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_08093AE0: .4byte 0x02000000\n\
-_08093AE4: .4byte gUnknown_03004DE0\n\
-_08093AE8: .4byte 0x0000fffc\n\
-_08093AEC: .4byte sub_8093D7C\n\
- .syntax divided\n");
+ s32 i;
+
+ ewram0.var_4 = 0;
+ dp12_8087EA4();
+ for (i = 0; i < ARRAY_COUNT(gUnknown_03004DE0.unk780); i++)
+ gUnknown_03004DE0.unk780[i] = -4;
+ SetHBlankCallback(sub_8093D7C);
+ ewram0.var_4 = 1;
+ task->data[0]++;
+ return FALSE;
}
__attribute__((naked))
@@ -1245,7 +924,7 @@ bool8 sub_8093C0C(struct TrainerCard *trainerCard)
sub_80939C0();
sub_8093DAC();
- if (!unk_2000000.var_3)
+ if (!ewram0.var_3)
{
sub_80939A4();
}
@@ -1409,7 +1088,7 @@ bool8 sub_8093D50(void)
{
u8 taskId;
- unk_2000000.var_4 = FALSE;
+ ewram0.var_4 = FALSE;
SetHBlankCallback(NULL);
sub_8093E04();
@@ -1450,7 +1129,7 @@ _08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
static void sub_8093DAC(void)
{
- if (unk_2000000.var_3)
+ if (ewram0.var_3)
{
sub_8093DEC();
}
@@ -1564,11 +1243,11 @@ _08093E9C: .4byte 0x80000200\n\
void sub_8093EA0(void)
{
- LoadPalette(gUnknown_083B5EF8[unk_2000000.var_2], 0, 48 * 2);
+ LoadPalette(gUnknown_083B5EF8[ewram0.var_2], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
- if (unk_2000000.var_64.gender != MALE)
+ if (ewram0.var_64.gender != MALE)
{
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
}
@@ -1576,7 +1255,7 @@ void sub_8093EA0(void)
static void sub_8093EF8(void)
{
- LoadTrainerGfx_TrainerCard(unk_2000000.var_64.gender, 80, (void *)(VRAM + 0x1880));
+ LoadTrainerGfx_TrainerCard(ewram0.var_64.gender, 80, (void *)(VRAM + 0x1880));
}
__attribute__((naked))
@@ -1887,8 +1566,8 @@ static void sub_8094140(void)
BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values);
buffer = gStringVar1;
- StringCopy(buffer, unk_2000000.var_64.playerName);
- ConvertInternationalString(buffer, unk_2000000.language);
+ StringCopy(buffer, ewram0.var_64.playerName);
+ ConvertInternationalString(buffer, ewram0.language);
MenuPrint(buffer, 7, 5);
TrainerCard_Front_PrintTrainerID();
@@ -1921,26 +1600,26 @@ static void TrainerCard_Front_PrintTrainerID(void)
{
u8 buffer[8];
- ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
MenuPrint(buffer, 20, 2);
}
static void TrainerCard_Front_PrintMoney(void)
{
- sub_80B7AEC(unk_2000000.var_64.money, 16, 8);
+ sub_80B7AEC(ewram0.var_64.money, 16, 8);
}
static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (unk_2000000.var_7 == FALSE)
+ if (ewram0.var_7 == FALSE)
{
sub_8094110();
return;
}
- ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 16, 10);
}
@@ -1953,10 +1632,10 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
- if (unk_2000000.var_1 != 0)
+ if (ewram0.var_1 != 0)
{
- playTimeHours = unk_2000000.var_64.playTimeHours;
- playTimeMinutes = unk_2000000.var_64.playTimeMinutes;
+ playTimeHours = ewram0.var_64.playTimeHours;
+ playTimeMinutes = ewram0.var_64.playTimeMinutes;
}
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
@@ -1967,23 +1646,23 @@ static void sub_809429C(void)
{
u8 *str;
- if (unk_2000000.var_1 == FALSE)
+ if (ewram0.var_1 == FALSE)
{
return;
}
str = gStringVar1;
- str = StringCopy(str, unk_2000000.var_20[0]);
+ str = StringCopy(str, ewram0.var_20[0]);
str[0] = 00;
str++;
- str = StringCopy(str, unk_2000000.var_20[1]);
+ str = StringCopy(str, ewram0.var_20[1]);
MenuPrint(gStringVar1, 2, 14);
str = gStringVar1;
- str = StringCopy(str, unk_2000000.var_20[2]);
+ str = StringCopy(str, ewram0.var_20[2]);
str[0] = 00;
str++;
- str = StringCopy(str, unk_2000000.var_20[3]);
+ str = StringCopy(str, ewram0.var_20[3]);
MenuPrint(gStringVar1, 2, 16);
}
@@ -1992,8 +1671,8 @@ static void TrainerCard_Back_PrintName(void)
u8 *str;
str = gStringVar1;
- StringCopy(str, unk_2000000.var_64.playerName);
- ConvertInternationalString(str, unk_2000000.language);
+ StringCopy(str, ewram0.var_64.playerName);
+ ConvertInternationalString(str, ewram0.language);
StringAppend(str, gOtherText_TrainersTrainerCard);
@@ -2002,7 +1681,7 @@ static void TrainerCard_Back_PrintName(void)
static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
{
- if (unk_2000000.var_8 == FALSE)
+ if (ewram0.var_8 == FALSE)
{
return;
}
@@ -2014,24 +1693,24 @@ static void TrainerCard_Back_PrintHallOfFameTime(void)
{
u8 *str;
- if (unk_2000000.var_8 == FALSE)
+ if (ewram0.var_8 == FALSE)
{
return;
}
str = gStringVar1;
- str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, unk_2000000.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
MenuPrint_RightAligned(gStringVar1, 28, 5);
}
static void TrainerCard_Back_PrintLinkBattlesLabel(void)
{
- if (unk_2000000.var_9 == FALSE)
+ if (ewram0.var_9 == FALSE)
{
return;
}
@@ -2043,21 +1722,21 @@ static void TrainerCard_Back_PrintLinkBattles(void)
{
u8 buffer[16];
- if (unk_2000000.var_9 == FALSE)
+ if (ewram0.var_9 == FALSE)
{
return;
}
- ConvertIntToDecimalString(buffer, unk_2000000.var_64.linkBattleWins);
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins);
MenuPrint_RightAligned(buffer, 22, 7);
- ConvertIntToDecimalString(buffer, unk_2000000.var_64.linkBattleLosses);
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses);
MenuPrint_RightAligned(buffer, 28, 7);
}
static void TrainerCard_Back_PrintBattleTower_Label(void)
{
- if (unk_2000000.var_a == FALSE)
+ if (ewram0.var_a == FALSE)
{
return;
}
@@ -2069,21 +1748,21 @@ static void TrainerCard_Back_PrintBattleTower(void)
{
u8 buffer[16];
- if (unk_2000000.var_a == FALSE)
+ if (ewram0.var_a == FALSE)
{
return;
}
- sub_8072C44(buffer, unk_2000000.var_64.battleTowerWins, 24, 1);
+ sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1);
MenuPrint_PixelCoords(buffer, 112, 120, 0);
- sub_8072C44(buffer, unk_2000000.var_64.battleTowerLosses, 24, 1);
+ sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1);
MenuPrint_PixelCoords(buffer, 149, 120, 0);
}
static void TrainerCard_Back_PrintLinkContests_Label(void)
{
- if (unk_2000000.var_b == FALSE)
+ if (ewram0.var_b == FALSE)
{
return;
}
@@ -2095,18 +1774,18 @@ static void TrainerCard_Back_PrintLinkContests(void)
{
u8 buffer[8];
- if (unk_2000000.var_b == FALSE)
+ if (ewram0.var_b == FALSE)
{
return;
}
- ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 28, 13);
}
static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
{
- if (unk_2000000.var_c == FALSE)
+ if (ewram0.var_c == FALSE)
{
return;
}
@@ -2118,18 +1797,18 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void)
{
u8 buffer[8];
- if (unk_2000000.var_c == FALSE)
+ if (ewram0.var_c == FALSE)
{
return;
}
- ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 11);
}
static void TrainerCard_Back_PrintPokemonTrades_Label(void)
{
- if (unk_2000000.var_d == FALSE)
+ if (ewram0.var_d == FALSE)
{
return;
}
@@ -2141,12 +1820,12 @@ static void TrainerCard_Back_PrintPokemonTrades(void)
{
u8 buffer[8];
- if (unk_2000000.var_d == FALSE)
+ if (ewram0.var_d == FALSE)
{
return;
}
- ConvertIntToDecimalStringN(buffer, unk_2000000.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 9);
}