diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-05-08 23:13:46 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-05-08 21:13:46 -0700 |
commit | a83ced6d98f301f4aade1c571d8c0cc9e43d0450 (patch) | |
tree | 2823ffe91c444fcd8289d79c80291b3c8c400af7 | |
parent | ca7e24fa7be6f5d9244667f1fa7c9ad21a16056a (diff) |
fix some nonmatching functions (#284)
* fix some nonmatching functions
* delete trailing whitespace
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | src/credits.c | 424 | ||||
-rw-r--r-- | src/mail.c | 416 | ||||
-rw-r--r-- | src/mauville_old_man.c | 270 | ||||
-rw-r--r-- | src/trainer_card.c | 735 |
5 files changed, 422 insertions, 1425 deletions
diff --git a/include/global.h b/include/global.h index ca5335697..4cbbef5cc 100644 --- a/include/global.h +++ b/include/global.h @@ -296,7 +296,7 @@ struct UnkMauvilleOldManStruct2 u8 unk1; u8 unk2; u16 mauvilleOldMan_ecArray[10]; - u16 mauvilleOldMan_ecArray2[6]; + u8 mauvilleOldMan_ecArray2[12]; u8 fillerF[0x2]; /* size = 0x2C */ }; 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); } |