diff options
author | Marcus Huderle <huderlem@gmail.com> | 2019-03-23 10:14:31 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2019-03-23 10:14:31 -0500 |
commit | a5ee2c14fda450ca67985805b8bc71e66dfcf622 (patch) | |
tree | 9f874dbe25d28bf81e9375da5731889b9b466b07 /src | |
parent | 91fa5faf4acf617db0625992b2caf116e64f0888 (diff) | |
parent | e8add87bf3ccc3563a3d4fa94e109251f4a06eea (diff) |
Merge remote-tracking branch 'upstream/master' into use_pokeblock
# Conflicts:
# include/menu_specialized.h
Diffstat (limited to 'src')
-rw-r--r-- | src/field_control_avatar.c | 4 | ||||
-rwxr-xr-x | src/field_effect_helpers.c | 2 | ||||
-rwxr-xr-x | src/item_menu.c | 4 | ||||
-rw-r--r-- | src/menu_specialized.c | 2047 | ||||
-rw-r--r-- | src/use_pokeblock.c | 4 |
5 files changed, 522 insertions, 1539 deletions
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 6735df3a0..5b685173e 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -390,11 +390,11 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me if (MetatileBehavior_IsBookShelf(metatileBehavior) == TRUE) return EventScript_BookShelf; if (MetatileBehavior_IsPokeCenterBookShelf(metatileBehavior) == TRUE) - return EventScript_PokemonCenterBookshelf; + return EventScript_PokemonCenterBookShelf; if (MetatileBehavior_IsVase(metatileBehavior) == TRUE) return EventScript_Vase; if (MetatileBehavior_IsTrashCan(metatileBehavior) == TRUE) - return EventScript_TrashCan; + return EventScript_EmptyTrashCan; if (MetatileBehavior_IsShopShelf(metatileBehavior) == TRUE) return EventScript_ShopShelf; if (MetatileBehavior_IsBlueprint(metatileBehavior) == TRUE) diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 651b2baca..3f75fbb84 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1508,7 +1508,7 @@ void sub_8155F80(struct Sprite *sprite) } } SetGpuReg(REG_OFFSET_BG0VOFS, 0); - FieldEffectStop(sprite, FLDEFF_64); + FieldEffectStop(sprite, FLDEFF_RAYQUAZA); break; } diff --git a/src/item_menu.c b/src/item_menu.c index 81bc120a8..8edf6f279 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -447,7 +447,7 @@ static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0; extern u8 *const gPocketNamesStringsTable[]; extern u8* gReturnToXStringsTable[]; -extern const u8 EventScript_2736B3[]; +extern const u8 EventScript_SelectWithoutRegisteredItem[]; extern const u16 gUnknown_0860F074[]; void ResetBagScrollPositions(void) @@ -1900,7 +1900,7 @@ bool8 UseRegisteredKeyItemOnField(void) else gSaveBlock1Ptr->registeredItem = ITEM_NONE; } - ScriptContext1_SetupScript(EventScript_2736B3); + ScriptContext1_SetupScript(EventScript_SelectWithoutRegisteredItem); return TRUE; } diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 8371c7a70..3dadc7f80 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -73,10 +73,8 @@ static const struct ScanlineEffectParams sUnknown_08625404 = .dmaDest = (void*)REG_ADDR_WIN0H, .dmaControl = SCANLINE_EFFECT_DMACNT_32BIT, .initState = 1, - .unused9 = 0 }; - static const u8 sUnknown_08625410[] = { 4, @@ -201,38 +199,26 @@ static const struct ListMenuTemplate sMoveRelearnerMovesListTemplate = bool8 sub_81D1C44(u8 count) { - u32 i; - struct ListMenuItem **v1; - v1 = &sUnknown_0203CF4C; - *v1 = Alloc(count * sizeof(struct ListMenuItem) + sizeof(struct ListMenuItem)); - + u8 i; + + sUnknown_0203CF4C = Alloc(count * sizeof(*sUnknown_0203CF4C) + sizeof(*sUnknown_0203CF4C)); if (sUnknown_0203CF4C == NULL) return FALSE; - - for (i = 0; i < ARRAY_COUNT(sUnknown_0203CF48); i = (u8)(i + 1)) - { - sUnknown_0203CF48[i] |= 0xFF; - } + + for (i = 0; i < ARRAY_COUNT(sUnknown_0203CF48); i++) + sUnknown_0203CF48[i] = 0xFF; return TRUE; } u8 sub_81D1C84(u8 a0) { - struct WindowTemplate template; - - u8 windowId = sUnknown_0203CF48[a0]; - if (windowId == 0xFF) + if (sUnknown_0203CF48[a0] == 0xFF) { if (a0 == 2) { - u32 v1; - u32 v2; - s32 v3; - - template = sUnknown_086253E8[2]; - v3 = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4); - template.width = v3; + struct WindowTemplate template = sUnknown_086253E8[2]; + template.width = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4); sUnknown_0203CF48[2] = AddWindow(&template); } else @@ -264,7 +250,7 @@ static void sub_81D1D44(u8 windowId, s32 itemId, u8 y) if (itemId == LIST_CANCEL) return; - + StringCopy(buffer, gSaveBlock1Ptr->mail[6 + itemId].playerName); sub_81DB52C(buffer); length = StringLength(buffer); @@ -324,8 +310,8 @@ void sub_81D1EC0(void) void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0) { - u8 j; - u8 i; + u8 i, j; + for (j = 0; j < 5; j++) { for (i = 0; i < 10; i++) @@ -348,130 +334,33 @@ void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0) a0->unk352 = 0; } -NAKED -void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 arg1[4][5], struct UnknownSubStruct_81D1ED4 arg2[4][5]) +void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x8\n\ - mov r8, r0\n\ - str r1, [sp]\n\ - mov r9, r2\n\ - movs r7, 0\n\ -_081D1F98:\n\ - lsls r4, r7, 2\n\ - ldr r1, [sp]\n\ - adds r0, r4, r1\n\ - ldrh r1, [r0]\n\ - lsls r5, r1, 8\n\ - mov r2, r9\n\ - adds r0, r4, r2\n\ - ldrh r0, [r0]\n\ - subs r0, r1\n\ - lsls r0, 8\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r6, r0, 0\n\ - movs r3, 0\n\ - adds r7, 0x1\n\ - mov r10, r7\n\ - mov r12, r4\n\ -_081D1FBC:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - add r0, r12\n\ - add r0, r8\n\ - asrs r2, r5, 8\n\ - asrs r1, r5, 7\n\ - movs r7, 0x1\n\ - ands r1, r7\n\ - adds r2, r1\n\ - adds r0, 0x64\n\ - strh r2, [r0]\n\ - adds r5, r6\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x8\n\ - bls _081D1FBC\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - add r0, r8\n\ - mov r1, r9\n\ - adds r2, r4, r1\n\ - ldrh r1, [r2]\n\ - adds r0, 0x64\n\ - strh r1, [r0]\n\ - ldr r7, [sp]\n\ - adds r0, r4, r7\n\ - ldrh r1, [r0, 0x2]\n\ - lsls r5, r1, 8\n\ - ldrh r0, [r2, 0x2]\n\ - subs r0, r1\n\ - lsls r0, 8\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - adds r6, r0, 0\n\ - movs r3, 0\n\ - str r4, [sp, 0x4]\n\ - movs r0, 0x1\n\ - mov r12, r0\n\ -_081D2012:\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r0\n\ - add r0, r8\n\ - asrs r2, r5, 8\n\ - asrs r1, r5, 7\n\ - mov r7, r12\n\ - ands r1, r7\n\ - adds r2, r1\n\ - adds r0, 0x66\n\ - strh r2, [r0]\n\ - adds r5, r6\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x8\n\ - bls _081D2012\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - add r0, r8\n\ - mov r2, r9\n\ - adds r1, r4, r2\n\ - ldrh r1, [r1, 0x2]\n\ - adds r0, 0x66\n\ - strh r1, [r0]\n\ - mov r7, r10\n\ - lsls r0, r7, 16\n\ - lsrs r7, r0, 16\n\ - cmp r7, 0x4\n\ - bls _081D1F98\n\ - ldr r1, =0x00000352\n\ - add r1, r8\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - add sp, 0x8\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); + u16 i, j; + s32 r5, r6; + + for (i = 0; i < 5; i++) + { + r5 = arg1[i].unk0 << 8; + r6 = ((arg2[i].unk0 - arg1[i].unk0) << 8) / 10; + for (j = 0; j < 9; j++) + { + arg0->unk64[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1); + r5 += r6; + } + arg0->unk64[j][i].unk0 = arg2[i].unk0; + + r5 = arg1[i].unk2 << 8; + r6 = ((arg2[i].unk2 - arg1[i].unk2) << 8) / 10; + for (j = 0; j < 9; j++) + { + arg0->unk64[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1); + r5 += r6; + } + arg0->unk64[j][i].unk2 = arg2[i].unk2; + } + + arg0->unk352 = 0; } bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0) @@ -479,13 +368,12 @@ bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0) if (a0->unk352 < 10) { sub_81D2230(a0); - return ++a0->unk352 != 10; + return (++a0->unk352 != 10); } else { return FALSE; } - } void sub_81D20AC(struct UnknownStruct_81D1ED4 *a0) @@ -496,6 +384,7 @@ void sub_81D20AC(struct UnknownStruct_81D1ED4 *a0) bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0) { struct ScanlineEffectParams params; + switch (arg0->unk355) { case 0: @@ -512,170 +401,32 @@ bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0) } } -NAKED void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0) { - // Three of the additions are in the wrong order. -#ifdef NONMATCHING u16 i; - u32 v3; - u32 v4; - u16 *scanBuffer1; - u16 *scanBuffer2; - u32 scanBufferWidth; - u32 mask; - u16 *unkBuff1; - u16 *unkBuff2; - u16 *unkBuff3; - u16 *unkBuff4; if (arg0->unk354 == 0) return; - + sub_81D24A4(arg0); sub_81D2634(arg0); - i = 0; - scanBuffer1 = gScanlineEffectRegBuffers[0]; - scanBufferWidth = ARRAY_COUNT(gScanlineEffectRegBuffers[0]); - scanBuffer2 = scanBuffer1 + scanBufferWidth; - - // This function accesses the arrays "manually", where every other entry - // is just handled differently, rather than a pairwise struct. - unkBuff1 = (u16*)&arg0->unk13C[0].unk0; - mask = 0xFFFF; - unkBuff2 = (u16*)&arg0->unk13C[0].unk2; - unkBuff3 = (u16*)&arg0->unk248[0].unk0; - unkBuff4 = (u16*)&arg0->unk248[0].unk2; - - for (; i < 0x42; i++) + for (i = 0; i < 66; i++) { - u32 offset1; - register u32 offset2 asm("r2"); - u32 offset3; - - offset1 = (i + 0x37) * 2; - offset2 = i + 0x37; - scanBuffer2[offset1] = (scanBuffer1[offset1] = (unkBuff1[i * 2] << 8) | unkBuff2[i * 2]) & mask; - - offset3 = offset2 * 2 + 1; - scanBuffer2[offset3] = (scanBuffer1[offset3] = (unkBuff3[i * 2] << 8) | unkBuff4[i * 2]) & mask; + gScanlineEffectRegBuffers[1][(i + 55) * 2] = gScanlineEffectRegBuffers[0][(i + 55) * 2] = (arg0->unk140[i][0] << 8) | (arg0->unk140[i][1]); + gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (arg0->unk248[i][0] << 8) | (arg0->unk248[i][1]); } arg0->unk354 = 0; -#else - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x10\n\ - adds r6, r0, 0\n\ - movs r1, 0xD5\n\ - lsls r1, 2\n\ - adds r0, r6, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _081D21BE\n\ - adds r0, r6, 0\n\ - bl sub_81D24A4\n\ - adds r0, r6, 0\n\ - bl sub_81D2634\n\ - movs r7, 0\n\ - ldr r5, =gScanlineEffectRegBuffers\n\ - mov r12, r5\n\ - movs r0, 0xF0\n\ - lsls r0, 3\n\ - add r0, r12\n\ - mov r9, r0\n\ - movs r1, 0xA0\n\ - lsls r1, 1\n\ - adds r1, r6, r1\n\ - str r1, [sp]\n\ - ldr r5, =0x0000ffff\n\ - mov r8, r5\n\ - movs r0, 0xA1\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - str r0, [sp, 0x4]\n\ - movs r1, 0x92\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - str r1, [sp, 0x8]\n\ - ldr r5, =0x0000024a\n\ - adds r5, r6\n\ - mov r10, r5\n\ -_081D215E:\n\ - adds r2, r7, 0\n\ - adds r2, 0x37\n\ - lsls r3, r2, 2\n\ - mov r0, r9\n\ - adds r0, r3, r0\n\ - str r0, [sp, 0xC]\n\ - add r3, r12\n\ - lsls r4, r7, 2\n\ - ldr r1, [sp]\n\ - adds r0, r1, r4\n\ - ldrh r0, [r0]\n\ - lsls r0, 8\n\ - ldr r5, [sp, 0x4]\n\ - adds r1, r5, r4\n\ - ldrh r1, [r1]\n\ - orrs r0, r1\n\ - strh r0, [r3]\n\ - mov r1, r8\n\ - ands r0, r1\n\ - ldr r5, [sp, 0xC]\n\ - strh r0, [r5]\n\ - lsls r2, 1\n\ - adds r2, 0x1\n\ - lsls r2, 1\n\ - mov r0, r9\n\ - adds r3, r2, r0\n\ - add r2, r12\n\ - ldr r1, [sp, 0x8]\n\ - adds r0, r1, r4\n\ - ldrh r0, [r0]\n\ - lsls r0, 8\n\ - add r4, r10\n\ - ldrh r1, [r4]\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - mov r5, r8\n\ - ands r0, r5\n\ - strh r0, [r3]\n\ - adds r0, r7, 0x1\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ - cmp r7, 0x41\n\ - bls _081D215E\n\ - movs r0, 0xD5\n\ - lsls r0, 2\n\ - adds r1, r6, r0\n\ - movs r0, 0\n\ - strb r0, [r1]\n\ -_081D21BE:\n\ - add sp, 0x10\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -#endif } void sub_81D21DC(u8 bg) { - u8 flags; + u32 flags; if (bg > 3) bg = 0; - + // Unset the WINOUT flag for the bg. flags = (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) & ~(1 << bg); @@ -691,883 +442,458 @@ void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0) { u16 i; for (i = 0; i < 5; i++) - { arg0->unk12C[i] = arg0->unk64[arg0->unk352][i]; - } + arg0->unk354 = 1; } -NAKED -static void sub_81D2278(void *a0, void *a1, u16 *a2, u16 *a3, u8 a38, u32 a3C) +/* TODO +static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2]) { -#ifdef NONMATCHING - // a0 => sp0 - // a1 => r6 - // a2 => r5 - // a3 => sp4 - // a38 => r9 - // a3C => r7 - u32 v1; // r10 - u32 v2; // sp8 - u32 v3; // spC - u32 v4; - u32 v5; - u16 v6; // r8 - u32 v7; - u32 v8; // sp10 - - v3 = 0; - - // v4 => r4 - // v5 => r0 - // v7 => r1 - if (a2[1] < a3[1]) + s32 var_2C = 0; + u16 r8; + s32 r10, r4, r2, r0, r1, var_30; + + if (arg2->unk2 < arg3->unk2) { - v1 = a2[1]; - v5 = a3[1]; - v7 = a2[0]; - v4 = v7 << 10; - v2 = a3[0]; + r2 = arg2->unk2; + r10 = arg2->unk2; + r0 = arg3->unk2; + r1 = arg2->unk0; + r4 = r1 << 10; + var_30 = arg3->unk0; } else { - v5 = a2[1]; - v1 = a3[1]; - v7 = a3[0]; - v4 = v7 << 10; - v2 = a2[0]; + r0 = arg2->unk0; + r10 = arg3->unk2; + r1 = arg3->unk0; + r4 = r1 << 10; + var_30 = arg2->unk0; + r2 = arg3->unk2; } + r8 = r0 - r2; + if (r8 != 0) + var_2C = ((var_30 - r1) << 10) / r8; - v6 = v5 - v1; - if (v6 != 0) + r8++; + if (arg5 == NULL) { - v3 = (v2 - v7) / v6; - } - v6++; - if (a3C == 0) - { - v8 = } -#else - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x18\n\ - str r0, [sp]\n\ - adds r6, r1, 0\n\ - adds r5, r2, 0\n\ - str r3, [sp, 0x4]\n\ - ldr r0, [sp, 0x38]\n\ - ldr r7, [sp, 0x3C]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - movs r0, 0\n\ - str r0, [sp, 0xC]\n\ - ldrh r0, [r5, 0x2]\n\ - ldrh r1, [r3, 0x2]\n\ - cmp r0, r1\n\ - bcs _081D22B2\n\ - adds r2, r0, 0\n\ - mov r10, r2\n\ - ldrh r0, [r3, 0x2]\n\ - ldrh r1, [r5]\n\ - lsls r4, r1, 10\n\ - ldrh r3, [r3]\n\ - str r3, [sp, 0x8]\n\ - b _081D22C6\n\ -_081D22B2:\n\ - ldrh r0, [r5, 0x2]\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r1, [r1, 0x2]\n\ - mov r10, r1\n\ - ldr r2, [sp, 0x4]\n\ - ldrh r1, [r2]\n\ - lsls r4, r1, 10\n\ - ldrh r3, [r5]\n\ - str r3, [sp, 0x8]\n\ - mov r2, r10\n\ -_081D22C6:\n\ - subs r0, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - cmp r0, 0\n\ - beq _081D22DE\n\ - subs r0, r3, r1\n\ - lsls r0, 10\n\ - mov r1, r8\n\ - bl __divsi3\n\ - str r0, [sp, 0xC]\n\ -_081D22DE:\n\ - mov r0, r8\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - cmp r7, 0\n\ - bne _081D2328\n\ - mov r0, r10\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r6, r0\n\ - movs r5, 0\n\ - mov r3, r9\n\ - lsls r3, 1\n\ - mov r12, r3\n\ - ldr r0, [sp, 0x8]\n\ - add r0, r9\n\ - str r0, [sp, 0x10]\n\ - cmp r7, r8\n\ - bcs _081D23B6\n\ - movs r7, 0x1\n\ -_081D2308:\n\ - adds r2, r3, r6\n\ - asrs r1, r4, 10\n\ - asrs r0, r4, 9\n\ - ands r0, r7\n\ - adds r1, r0\n\ - add r1, r9\n\ - strh r1, [r2]\n\ - ldr r1, [sp, 0xC]\n\ - adds r4, r1\n\ - adds r6, 0x4\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, r8\n\ - bcc _081D2308\n\ - b _081D23B6\n\ -_081D2328:\n\ - ldr r2, [sp, 0xC]\n\ - cmp r2, 0\n\ - ble _081D23C0\n\ - mov r0, r10\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r7, r0\n\ - movs r5, 0\n\ - mov r3, r9\n\ - lsls r3, 1\n\ - mov r12, r3\n\ - ldr r0, [sp, 0x8]\n\ - add r0, r9\n\ - str r0, [sp, 0x10]\n\ - cmp r5, r8\n\ - bcs _081D237A\n\ - ldr r0, =0x00026bff\n\ - cmp r4, r0\n\ - bgt _081D237A\n\ - mov r1, r12\n\ - str r1, [sp, 0x14]\n\ -_081D2352:\n\ - ldr r3, [sp, 0x14]\n\ - adds r2, r3, r7\n\ - asrs r1, r4, 10\n\ - asrs r0, r4, 9\n\ - movs r3, 0x1\n\ - ands r0, r3\n\ - adds r1, r0\n\ - add r1, r9\n\ - strh r1, [r2]\n\ - ldr r0, [sp, 0xC]\n\ - adds r4, r0\n\ - adds r7, 0x4\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, r8\n\ - bcs _081D237A\n\ - ldr r1, =0x00026bff\n\ - cmp r4, r1\n\ - ble _081D2352\n\ -_081D237A:\n\ - mov r2, r10\n\ - adds r1, r2, r5\n\ - ldr r3, [sp]\n\ - movs r2, 0xD4\n\ - lsls r2, 2\n\ - adds r0, r3, r2\n\ - strh r1, [r0]\n\ - ldrh r0, [r0]\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r6, r0\n\ - cmp r5, r8\n\ - bcs _081D23B6\n\ - mov r3, r12\n\ - movs r7, 0x1\n\ -_081D2398:\n\ - adds r2, r3, r6\n\ - asrs r1, r4, 10\n\ - asrs r0, r4, 9\n\ - ands r0, r7\n\ - adds r1, r0\n\ - add r1, r9\n\ - strh r1, [r2]\n\ - ldr r0, [sp, 0xC]\n\ - adds r4, r0\n\ - adds r6, 0x4\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, r8\n\ - bcc _081D2398\n\ -_081D23B6:\n\ - subs r0, r6, 0x4\n\ - b _081D248C\n\ - .pool\n\ -_081D23C0:\n\ - ldr r1, [sp, 0xC]\n\ - cmp r1, 0\n\ - bge _081D2464\n\ - mov r0, r10\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r6, r0\n\ - movs r5, 0\n\ - mov r2, r9\n\ - lsls r2, 1\n\ - mov r12, r2\n\ - ldr r3, [sp, 0x8]\n\ - add r3, r9\n\ - str r3, [sp, 0x10]\n\ - cmp r5, r8\n\ - bcs _081D241E\n\ - adds r3, r2, r6\n\ - asrs r1, r4, 10\n\ - asrs r0, r4, 9\n\ - movs r2, 0x1\n\ - ands r0, r2\n\ - adds r1, r0\n\ - add r1, r9\n\ - strh r1, [r3]\n\ - b _081D2414\n\ -_081D23F2:\n\ - ldr r0, [sp, 0xC]\n\ - adds r4, r0\n\ - adds r6, 0x4\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, r8\n\ - bcs _081D241E\n\ - mov r1, r12\n\ - adds r3, r1, r6\n\ - asrs r2, r4, 10\n\ - asrs r0, r4, 9\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - adds r2, r0\n\ - add r2, r9\n\ - strh r2, [r3]\n\ -_081D2414:\n\ - ldr r0, =0x00026bff\n\ - cmp r4, r0\n\ - bgt _081D23F2\n\ - movs r0, 0x9B\n\ - strh r0, [r3]\n\ -_081D241E:\n\ - mov r2, r10\n\ - adds r1, r2, r5\n\ - ldr r3, [sp]\n\ - movs r2, 0xD4\n\ - lsls r2, 2\n\ - adds r0, r3, r2\n\ - strh r1, [r0]\n\ - ldrh r0, [r0]\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r7, r0\n\ - cmp r5, r8\n\ - bcs _081D245A\n\ - mov r3, r12\n\ - movs r6, 0x1\n\ -_081D243C:\n\ - adds r2, r3, r7\n\ - asrs r1, r4, 10\n\ - asrs r0, r4, 9\n\ - ands r0, r6\n\ - adds r1, r0\n\ - add r1, r9\n\ - strh r1, [r2]\n\ - ldr r0, [sp, 0xC]\n\ - adds r4, r0\n\ - adds r7, 0x4\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, r8\n\ - bcc _081D243C\n\ -_081D245A:\n\ - subs r0, r7, 0x4\n\ - b _081D248C\n\ - .pool\n\ -_081D2464:\n\ - ldr r1, [sp]\n\ - movs r2, 0xD4\n\ - lsls r2, 2\n\ - adds r0, r1, r2\n\ - mov r3, r10\n\ - strh r3, [r0]\n\ - mov r0, r10\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r6, r0\n\ - adds r7, r0\n\ - ldrh r0, [r5]\n\ - adds r0, 0x1\n\ - strh r0, [r6, 0x2]\n\ - ldr r1, [sp, 0x4]\n\ - ldrh r0, [r1]\n\ - strh r0, [r7]\n\ - movs r0, 0x9B\n\ - strh r0, [r7, 0x2]\n\ - b _081D2494\n\ -_081D248C:\n\ - add r0, r12\n\ - mov r2, sp\n\ - ldrh r2, [r2, 0x10]\n\ - strh r2, [r0]\n\ -_081D2494:\n\ - add sp, 0x18\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); -#endif } - +*/ NAKED -static void sub_81D24A4(struct UnknownStruct_81D1ED4 *a0) +static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2]) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x8\n\ - adds r4, r0, 0\n\ - movs r0, 0x97\n\ - lsls r0, 1\n\ - adds r2, r4, r0\n\ - movs r3, 0x99\n\ - lsls r3, 1\n\ - adds r1, r4, r3\n\ - ldrh r0, [r2]\n\ - ldrh r3, [r1]\n\ - cmp r0, r3\n\ - bcs _081D24E0\n\ - adds r7, r0, 0\n\ - movs r0, 0xA0\n\ - lsls r0, 1\n\ - adds r1, r4, r0\n\ - movs r3, 0x96\n\ - lsls r3, 1\n\ - adds r2, r4, r3\n\ - subs r0, 0x10\n\ - adds r3, r4, r0\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - bl sub_81D2278\n\ - b _081D2500\n\ -_081D24E0:\n\ - ldrh r7, [r1]\n\ - movs r2, 0xA0\n\ - lsls r2, 1\n\ - adds r1, r4, r2\n\ - movs r3, 0x98\n\ - lsls r3, 1\n\ - adds r2, r4, r3\n\ - movs r0, 0x96\n\ - lsls r0, 1\n\ - adds r3, r4, r0\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - bl sub_81D2278\n\ -_081D2500:\n\ - movs r1, 0xA0\n\ - lsls r1, 1\n\ - adds r5, r4, r1\n\ - movs r3, 0x98\n\ - lsls r3, 1\n\ - adds r2, r4, r3\n\ - movs r0, 0x9A\n\ - lsls r0, 1\n\ - adds r6, r4, r0\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - adds r3, r6, 0\n\ - bl sub_81D2278\n\ - movs r2, 0\n\ - movs r1, 0x9B\n\ - lsls r1, 1\n\ - adds r0, r4, r1\n\ - movs r3, 0x9D\n\ - lsls r3, 1\n\ - adds r1, r4, r3\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - cmp r0, r1\n\ - bhi _081D253C\n\ - movs r2, 0x1\n\ -_081D253C:\n\ - movs r0, 0x9C\n\ - lsls r0, 1\n\ - adds r3, r4, r0\n\ - str r2, [sp]\n\ - movs r1, 0x92\n\ - lsls r1, 2\n\ - adds r0, r4, r1\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - bl sub_81D2278\n\ - movs r2, 0x38\n\ - cmp r2, r7\n\ - bcs _081D257E\n\ - adds r6, r5, 0\n\ - movs r3, 0\n\ - movs r0, 0xA1\n\ - lsls r0, 1\n\ - adds r5, r4, r0\n\ -_081D2566:\n\ - adds r0, r2, 0\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r1, r6, r0\n\ - strh r3, [r1]\n\ - adds r0, r5, r0\n\ - strh r3, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r7\n\ - bcc _081D2566\n\ -_081D257E:\n\ - movs r1, 0x97\n\ - lsls r1, 1\n\ - adds r0, r4, r1\n\ - ldrh r2, [r0]\n\ - movs r3, 0xD4\n\ - lsls r3, 2\n\ - adds r0, r4, r3\n\ - ldrh r1, [r0]\n\ - cmp r2, r1\n\ - bhi _081D25B2\n\ - movs r1, 0xA0\n\ - lsls r1, 1\n\ - adds r3, r4, r1\n\ - movs r5, 0x9B\n\ - adds r1, r0, 0\n\ -_081D259C:\n\ - adds r0, r2, 0\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r0, r3, r0\n\ - strh r5, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - ldrh r0, [r1]\n\ - cmp r2, r0\n\ - bls _081D259C\n\ -_081D25B2:\n\ - movs r2, 0x9B\n\ - lsls r2, 1\n\ - adds r1, r4, r2\n\ - movs r3, 0xD4\n\ - lsls r3, 2\n\ - adds r0, r4, r3\n\ - ldrh r0, [r0]\n\ - ldrh r1, [r1]\n\ - cmp r0, r1\n\ - bcs _081D25C8\n\ - adds r0, r1, 0\n\ -_081D25C8:\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x79\n\ - bhi _081D25F8\n\ - movs r0, 0xA0\n\ - lsls r0, 1\n\ - adds r6, r4, r0\n\ - movs r3, 0\n\ - movs r1, 0xA1\n\ - lsls r1, 1\n\ - adds r5, r4, r1\n\ -_081D25E0:\n\ - adds r0, r2, 0\n\ - subs r0, 0x38\n\ - lsls r0, 2\n\ - adds r1, r6, r0\n\ - strh r3, [r1]\n\ - adds r0, r5, r0\n\ - strh r3, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x79\n\ - bls _081D25E0\n\ -_081D25F8:\n\ - movs r2, 0x38\n\ - movs r3, 0xA0\n\ - lsls r3, 1\n\ - adds r5, r4, r3\n\ - movs r0, 0xA1\n\ - lsls r0, 1\n\ - adds r4, r0\n\ - movs r6, 0x9B\n\ -_081D2608:\n\ - adds r0, r2, 0\n\ - subs r0, 0x38\n\ - lsls r1, r0, 2\n\ - adds r3, r5, r1\n\ - ldrh r0, [r3]\n\ - cmp r0, 0\n\ - bne _081D2620\n\ - adds r0, r4, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _081D2620\n\ - strh r6, [r3]\n\ -_081D2620:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x79\n\ - bls _081D2608\n\ - add sp, 0x8\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x18\n\ + str r0, [sp]\n\ + adds r6, r1, 0\n\ + adds r5, r2, 0\n\ + str r3, [sp, 0x4]\n\ + ldr r0, [sp, 0x38]\n\ + ldr r7, [sp, 0x3C]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + movs r0, 0\n\ + str r0, [sp, 0xC]\n\ + ldrh r0, [r5, 0x2]\n\ + ldrh r1, [r3, 0x2]\n\ + cmp r0, r1\n\ + bcs _081D22B2\n\ + adds r2, r0, 0\n\ + mov r10, r2\n\ + ldrh r0, [r3, 0x2]\n\ + ldrh r1, [r5]\n\ + lsls r4, r1, 10\n\ + ldrh r3, [r3]\n\ + str r3, [sp, 0x8]\n\ + b _081D22C6\n\ + _081D22B2:\n\ + ldrh r0, [r5, 0x2]\n\ + ldr r1, [sp, 0x4]\n\ + ldrh r1, [r1, 0x2]\n\ + mov r10, r1\n\ + ldr r2, [sp, 0x4]\n\ + ldrh r1, [r2]\n\ + lsls r4, r1, 10\n\ + ldrh r3, [r5]\n\ + str r3, [sp, 0x8]\n\ + mov r2, r10\n\ + _081D22C6:\n\ + subs r0, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + cmp r0, 0\n\ + beq _081D22DE\n\ + subs r0, r3, r1\n\ + lsls r0, 10\n\ + mov r1, r8\n\ + bl __divsi3\n\ + str r0, [sp, 0xC]\n\ + _081D22DE:\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + cmp r7, 0\n\ + bne _081D2328\n\ + mov r0, r10\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r6, r0\n\ + movs r5, 0\n\ + mov r3, r9\n\ + lsls r3, 1\n\ + mov r12, r3\n\ + ldr r0, [sp, 0x8]\n\ + add r0, r9\n\ + str r0, [sp, 0x10]\n\ + cmp r7, r8\n\ + bcs _081D23B6\n\ + movs r7, 0x1\n\ + _081D2308:\n\ + adds r2, r3, r6\n\ + asrs r1, r4, 10\n\ + asrs r0, r4, 9\n\ + ands r0, r7\n\ + adds r1, r0\n\ + add r1, r9\n\ + strh r1, [r2]\n\ + ldr r1, [sp, 0xC]\n\ + adds r4, r1\n\ + adds r6, 0x4\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, r8\n\ + bcc _081D2308\n\ + b _081D23B6\n\ + _081D2328:\n\ + ldr r2, [sp, 0xC]\n\ + cmp r2, 0\n\ + ble _081D23C0\n\ + mov r0, r10\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r7, r0\n\ + movs r5, 0\n\ + mov r3, r9\n\ + lsls r3, 1\n\ + mov r12, r3\n\ + ldr r0, [sp, 0x8]\n\ + add r0, r9\n\ + str r0, [sp, 0x10]\n\ + cmp r5, r8\n\ + bcs _081D237A\n\ + ldr r0, =0x00026bff\n\ + cmp r4, r0\n\ + bgt _081D237A\n\ + mov r1, r12\n\ + str r1, [sp, 0x14]\n\ + _081D2352:\n\ + ldr r3, [sp, 0x14]\n\ + adds r2, r3, r7\n\ + asrs r1, r4, 10\n\ + asrs r0, r4, 9\n\ + movs r3, 0x1\n\ + ands r0, r3\n\ + adds r1, r0\n\ + add r1, r9\n\ + strh r1, [r2]\n\ + ldr r0, [sp, 0xC]\n\ + adds r4, r0\n\ + adds r7, 0x4\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, r8\n\ + bcs _081D237A\n\ + ldr r1, =0x00026bff\n\ + cmp r4, r1\n\ + ble _081D2352\n\ + _081D237A:\n\ + mov r2, r10\n\ + adds r1, r2, r5\n\ + ldr r3, [sp]\n\ + movs r2, 0xD4\n\ + lsls r2, 2\n\ + adds r0, r3, r2\n\ + strh r1, [r0]\n\ + ldrh r0, [r0]\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r6, r0\n\ + cmp r5, r8\n\ + bcs _081D23B6\n\ + mov r3, r12\n\ + movs r7, 0x1\n\ + _081D2398:\n\ + adds r2, r3, r6\n\ + asrs r1, r4, 10\n\ + asrs r0, r4, 9\n\ + ands r0, r7\n\ + adds r1, r0\n\ + add r1, r9\n\ + strh r1, [r2]\n\ + ldr r0, [sp, 0xC]\n\ + adds r4, r0\n\ + adds r6, 0x4\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, r8\n\ + bcc _081D2398\n\ + _081D23B6:\n\ + subs r0, r6, 0x4\n\ + b _081D248C\n\ + .pool\n\ + _081D23C0:\n\ + ldr r1, [sp, 0xC]\n\ + cmp r1, 0\n\ + bge _081D2464\n\ + mov r0, r10\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r6, r0\n\ + movs r5, 0\n\ + mov r2, r9\n\ + lsls r2, 1\n\ + mov r12, r2\n\ + ldr r3, [sp, 0x8]\n\ + add r3, r9\n\ + str r3, [sp, 0x10]\n\ + cmp r5, r8\n\ + bcs _081D241E\n\ + adds r3, r2, r6\n\ + asrs r1, r4, 10\n\ + asrs r0, r4, 9\n\ + movs r2, 0x1\n\ + ands r0, r2\n\ + adds r1, r0\n\ + add r1, r9\n\ + strh r1, [r3]\n\ + b _081D2414\n\ + _081D23F2:\n\ + ldr r0, [sp, 0xC]\n\ + adds r4, r0\n\ + adds r6, 0x4\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, r8\n\ + bcs _081D241E\n\ + mov r1, r12\n\ + adds r3, r1, r6\n\ + asrs r2, r4, 10\n\ + asrs r0, r4, 9\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + adds r2, r0\n\ + add r2, r9\n\ + strh r2, [r3]\n\ + _081D2414:\n\ + ldr r0, =0x00026bff\n\ + cmp r4, r0\n\ + bgt _081D23F2\n\ + movs r0, 0x9B\n\ + strh r0, [r3]\n\ + _081D241E:\n\ + mov r2, r10\n\ + adds r1, r2, r5\n\ + ldr r3, [sp]\n\ + movs r2, 0xD4\n\ + lsls r2, 2\n\ + adds r0, r3, r2\n\ + strh r1, [r0]\n\ + ldrh r0, [r0]\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r7, r0\n\ + cmp r5, r8\n\ + bcs _081D245A\n\ + mov r3, r12\n\ + movs r6, 0x1\n\ + _081D243C:\n\ + adds r2, r3, r7\n\ + asrs r1, r4, 10\n\ + asrs r0, r4, 9\n\ + ands r0, r6\n\ + adds r1, r0\n\ + add r1, r9\n\ + strh r1, [r2]\n\ + ldr r0, [sp, 0xC]\n\ + adds r4, r0\n\ + adds r7, 0x4\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, r8\n\ + bcc _081D243C\n\ + _081D245A:\n\ + subs r0, r7, 0x4\n\ + b _081D248C\n\ + .pool\n\ + _081D2464:\n\ + ldr r1, [sp]\n\ + movs r2, 0xD4\n\ + lsls r2, 2\n\ + adds r0, r1, r2\n\ + mov r3, r10\n\ + strh r3, [r0]\n\ + mov r0, r10\n\ + subs r0, 0x38\n\ + lsls r0, 2\n\ + adds r6, r0\n\ + adds r7, r0\n\ + ldrh r0, [r5]\n\ + adds r0, 0x1\n\ + strh r0, [r6, 0x2]\n\ + ldr r1, [sp, 0x4]\n\ + ldrh r0, [r1]\n\ + strh r0, [r7]\n\ + movs r0, 0x9B\n\ + strh r0, [r7, 0x2]\n\ + b _081D2494\n\ + _081D248C:\n\ + add r0, r12\n\ + mov r2, sp\n\ + ldrh r2, [r2, 0x10]\n\ + strh r2, [r0]\n\ + _081D2494:\n\ + add sp, 0x18\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + "); } -NAKED -static void sub_81D2634(struct UnknownStruct_81D1ED4 *a0) +static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x8\n\ - adds r4, r0, 0\n\ - movs r0, 0x97\n\ - lsls r0, 1\n\ - adds r2, r4, r0\n\ - movs r3, 0x9F\n\ - lsls r3, 1\n\ - adds r1, r4, r3\n\ - ldrh r0, [r2]\n\ - ldrh r5, [r1]\n\ - cmp r0, r5\n\ - bcs _081D266E\n\ - adds r6, r0, 0\n\ - movs r0, 0x92\n\ - lsls r0, 2\n\ - adds r1, r4, r0\n\ - subs r3, 0x12\n\ - adds r2, r4, r3\n\ - movs r5, 0x9E\n\ - lsls r5, 1\n\ - adds r3, r4, r5\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - bl sub_81D2278\n\ - b _081D2690\n\ -_081D266E:\n\ - ldrh r6, [r1]\n\ - movs r0, 0x92\n\ - lsls r0, 2\n\ - adds r1, r4, r0\n\ - movs r3, 0x9E\n\ - lsls r3, 1\n\ - adds r2, r4, r3\n\ - movs r5, 0x96\n\ - lsls r5, 1\n\ - adds r3, r4, r5\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - bl sub_81D2278\n\ -_081D2690:\n\ - movs r0, 0x92\n\ - lsls r0, 2\n\ - adds r5, r4, r0\n\ - movs r1, 0x9E\n\ - lsls r1, 1\n\ - adds r2, r4, r1\n\ - movs r0, 0x9C\n\ - lsls r0, 1\n\ - adds r3, r4, r0\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - str r0, [sp, 0x4]\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - bl sub_81D2278\n\ - cmp r6, 0x38\n\ - ble _081D26C8\n\ - movs r0, 0\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - subs r2, 0x38\n\ -_081D26BC:\n\ - strh r0, [r1]\n\ - strh r0, [r1, 0x2]\n\ - adds r1, 0x4\n\ - subs r2, 0x1\n\ - cmp r2, 0\n\ - bne _081D26BC\n\ -_081D26C8:\n\ - movs r1, 0x97\n\ - lsls r1, 1\n\ - adds r0, r4, r1\n\ - ldrh r2, [r0]\n\ - movs r3, 0xD4\n\ - lsls r3, 2\n\ - adds r0, r4, r3\n\ - ldrh r5, [r0]\n\ - cmp r2, r5\n\ - bgt _081D26F6\n\ - movs r3, 0x9B\n\ - adds r1, r0, 0\n\ - lsls r0, r2, 2\n\ - movs r5, 0xB5\n\ - lsls r5, 1\n\ - adds r0, r5\n\ - adds r0, r4\n\ -_081D26EA:\n\ - strh r3, [r0]\n\ - adds r0, 0x4\n\ - adds r2, 0x1\n\ - ldrh r5, [r1]\n\ - cmp r2, r5\n\ - ble _081D26EA\n\ -_081D26F6:\n\ - movs r1, 0x9D\n\ - lsls r1, 1\n\ - adds r0, r4, r1\n\ - ldrh r0, [r0]\n\ - adds r1, r0, 0x1\n\ - movs r2, 0xD4\n\ - lsls r2, 2\n\ - adds r0, r4, r2\n\ - ldrh r0, [r0]\n\ - cmp r0, r1\n\ - bge _081D270E\n\ - adds r0, r1, 0\n\ -_081D270E:\n\ - adds r2, r0, 0\n\ - cmp r2, 0x79\n\ - bgt _081D272C\n\ - movs r1, 0\n\ - lsls r0, r2, 2\n\ - movs r3, 0xB4\n\ - lsls r3, 1\n\ - adds r0, r3\n\ - adds r0, r4\n\ -_081D2720:\n\ - strh r1, [r0]\n\ - strh r1, [r0, 0x2]\n\ - adds r0, 0x4\n\ - adds r2, 0x1\n\ - cmp r2, 0x79\n\ - ble _081D2720\n\ -_081D272C:\n\ - movs r3, 0\n\ - movs r5, 0x92\n\ - lsls r5, 2\n\ - adds r1, r4, r5\n\ - movs r2, 0x41\n\ -_081D2736:\n\ - ldrh r0, [r1]\n\ - ldrh r4, [r1, 0x2]\n\ - cmp r0, r4\n\ - bcc _081D2742\n\ - strh r3, [r1, 0x2]\n\ - strh r3, [r1]\n\ -_081D2742:\n\ - adds r1, 0x4\n\ - subs r2, 0x1\n\ - cmp r2, 0\n\ - bge _081D2736\n\ - add sp, 0x8\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); + u16 i, r6, varMax; + + if (arg0->unk12C[0].unk2 < arg0->unk12C[1].unk2) + { + r6 = arg0->unk12C[0].unk2; + sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL); + } + else + { + r6 = arg0->unk12C[1].unk2; + sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL); + } + + sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL); + + i = (arg0->unk12C[2].unk2 <= arg0->unk12C[3].unk2); + sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248); + for (i = 56; i < r6; i++) + { + arg0->unk140[i - 56][0] = 0; + arg0->unk140[i - 56][1] = 0; + } + + for (i = arg0->unk12C[0].unk2; i <= arg0->unk350; i++) + arg0->unk140[i - 56][0] = 155; + + varMax = max(arg0->unk350, arg0->unk12C[2].unk2); + for (i = varMax + 1; i < 122; i++) + { + arg0->unk140[i - 56][0] = 0; + arg0->unk140[i - 56][1] = 0; + } + + for (i = 56; i < 122; i++) + { + if (arg0->unk140[i - 56][0] == 0 && arg0->unk140[i - 56][1] != 0) + arg0->unk140[i - 56][0] = 155; + } } -NAKED -void sub_81D2754(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1) +static void sub_81D2634(struct UnknownStruct_81D1ED4 *arg0) { - // There are some register-renaming issues here. The cause of the problem seems to be that - // GCC tries to save sUnknown_08625410 in a register, instead of loading the constant repeatedly. - // But this is one too many things to keep track of, so GCC is forced to use the stack. -#ifdef NONMATCHING - u8* v1; - u8 v2; - u8 v3; - s8 v4; - u16 v5; - - v1 = arg0->unk0[0]; - v2 = sUnknown_08625410[*v1]; - v1++; - arg1[0].unk0 = 0x9B; - arg1[0].unk2 = 0x5B - v2; - for (v3 = 0x40, v4 = 0, v5 = 1; v5 < 5; v5++) + s32 i, r6, varMax; + + if (arg0->unk12C[0].unk2 < arg0->unk12C[4].unk2) { - v3 += 0x33; - v4--; - if (v4 < 0) - { - v4 = 4; - } - if (v4 == 2) - { - v3++; - } + r6 = arg0->unk12C[0].unk2; + sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL); + } + else + { + r6 = arg0->unk12C[4].unk2; + sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL); + } + + sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL); + + for (i = 56; i < r6; i++) + { + arg0->unk140[i + 10][0] = 0; + arg0->unk140[i + 10][1] = 0; + } - v2 = sUnknown_08625410[*v1]; - v1++; - arg1[v4].unk0 = ((gSineTable[v3 + 0x40] * v2) >> 8) + 0x9B; - arg1[v4].unk2 = ((gSineTable[v3] * v2) >> 8) - 0x5B; - if (v4 <= 2 && (v2 != 0x20 || v4 != 2)) + for (i = arg0->unk12C[0].unk2; i <= arg0->unk350; i++) + arg0->unk140[i + 10][1] = 155; + + varMax = max(arg0->unk350, arg0->unk12C[3].unk2 + 1); + for (i = varMax; i < 122; i++) + { + arg0->unk140[i + 10][0] = 0; + arg0->unk140[i + 10][1] = 0; + } + + for (i = 0; i < 66; i++) + { + if (arg0->unk248[i][0] >= arg0->unk248[i][1]) { - arg1[v4].unk0 = arg1[v4].unk0 + 1; + arg0->unk248[i][1] = 0; + arg0->unk248[i][0] = 0; } } -#else - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - adds r6, r0, 0\n\ - mov r8, r1\n\ - ldr r1, =sUnknown_08625410\n\ - ldrb r0, [r6]\n\ - adds r0, r1\n\ - ldrb r2, [r0]\n\ - adds r6, 0x1\n\ - movs r0, 0x9B\n\ - mov r3, r8\n\ - strh r0, [r3]\n\ - movs r0, 0x5B\n\ - subs r0, r2\n\ - strh r0, [r3, 0x2]\n\ - movs r7, 0x40\n\ - movs r0, 0\n\ - mov r12, r0\n\ - movs r2, 0x1\n\ - mov r9, r2\n\ - ldr r3, =gSineTable\n\ - mov r10, r3\n\ -_081D2786:\n\ - adds r0, r7, 0\n\ - adds r0, 0x33\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - mov r1, r12\n\ - lsls r0, r1, 24\n\ - movs r2, 0xFF\n\ - lsls r2, 24\n\ - adds r0, r2\n\ - lsrs r3, r0, 24\n\ - mov r12, r3\n\ - cmp r0, 0\n\ - bge _081D27A4\n\ - movs r0, 0x4\n\ - mov r12, r0\n\ -_081D27A4:\n\ - mov r1, r12\n\ - lsls r0, r1, 24\n\ - asrs r4, r0, 24\n\ - cmp r4, 0x2\n\ - bne _081D27B4\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ -_081D27B4:\n\ - ldrb r0, [r6]\n\ - ldr r2, =sUnknown_08625410\n\ - adds r0, r2\n\ - ldrb r2, [r0]\n\ - adds r6, 0x1\n\ - lsls r0, r4, 2\n\ - mov r1, r8\n\ - adds r3, r0, r1\n\ - adds r0, r7, 0\n\ - adds r0, 0x40\n\ - lsls r0, 1\n\ - add r0, r10\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - muls r0, r2\n\ - asrs r5, r0, 8\n\ - adds r0, r5, 0\n\ - adds r0, 0x9B\n\ - strh r0, [r3]\n\ - lsls r0, r7, 1\n\ - add r0, r10\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - adds r1, r2, 0\n\ - muls r1, r0\n\ - asrs r1, 8\n\ - movs r0, 0x5B\n\ - subs r0, r1\n\ - strh r0, [r3, 0x2]\n\ - cmp r4, 0x2\n\ - bgt _081D2800\n\ - cmp r2, 0x20\n\ - bne _081D27FA\n\ - cmp r4, 0x2\n\ - beq _081D2800\n\ -_081D27FA:\n\ - adds r0, r5, 0\n\ - adds r0, 0x9C\n\ - strh r0, [r3]\n\ -_081D2800:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - cmp r0, 0x4\n\ - bls _081D2786\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -#endif +} + +void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1) +{ + u8 r2, r7; + s8 r12; + u16 i; + + r2 = sUnknown_08625410[*(arg0++)]; + arg1->unk0 = 155; + arg1->unk2 = 91 - r2; + + r7 = 64; + r12 = 0; + for (i = 1; i < 5; i++) + { + r7 += 51; + if (--r12 < 0) + r12 = 4; + + if (r12 == 2) + r7++; + + r2 = sUnknown_08625410[*(arg0++)]; + arg1[r12].unk0 = 155 + ((r2 * gSineTable[64 + r7]) >> 8); + arg1[r12].unk2 = 91 - ((r2 * gSineTable[r7]) >> 8); + + if (r12 < 3 && (r2 != 32 || r12 != 2)) + arg1[r12].unk0 = 156 + ((r2 * gSineTable[64 + r7]) >> 8); + } } void InitMoveRelearnerWindows(bool8 useContextWindow) @@ -1578,7 +904,7 @@ void InitMoveRelearnerWindows(bool8 useContextWindow) DeactivateAllTextPrinters(); LoadUserWindowBorderGfx(0, 1, 0xE0); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - + for (i = 0; i < 5; i++) { FillWindowPixelBuffer(i, PIXEL_FILL(1)); @@ -1624,314 +950,86 @@ u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices) return gMultiuseListMenuTemplate.maxShowed; } -NAKED static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove) { - // Two small issues, and a few renamed registers. -#ifdef NONMATCHING - u8 offset; - s32 width; + s32 x; const struct BattleMove *move; u8 buffer[0x20]; - const u8 *labelStr; + const u8 *str; FillWindowPixelBuffer(0, PIXEL_FILL(1)); - labelStr = gText_MoveRelearnerBattleMoves; - offset = GetStringCenterAlignXOffset(1, labelStr, 0x80); - AddTextPrinterParameterized(0, 1, labelStr, offset, 1, TEXT_SPEED_FF, NULL); + str = gText_MoveRelearnerBattleMoves; + x = GetStringCenterAlignXOffset(1, str, 0x80); + AddTextPrinterParameterized(0, 1, str, x, 1, TEXT_SPEED_FF, NULL); - labelStr = gText_MoveRelearnerPP; - AddTextPrinterParameterized(0, 1, labelStr, 4, 0x29, TEXT_SPEED_FF, NULL); + str = gText_MoveRelearnerPP; + AddTextPrinterParameterized(0, 1, str, 4, 0x29, TEXT_SPEED_FF, NULL); - labelStr = gText_MoveRelearnerPower; - offset = GetStringRightAlignXOffset(1, labelStr, 0x6A); - AddTextPrinterParameterized(0, 1, labelStr, offset, 0x19, TEXT_SPEED_FF, NULL); + str = gText_MoveRelearnerPower; + x = GetStringRightAlignXOffset(1, str, 0x6A); + AddTextPrinterParameterized(0, 1, str, x, 0x19, TEXT_SPEED_FF, NULL); - labelStr = gText_MoveRelearnerAccuracy; - offset = GetStringRightAlignXOffset(1, labelStr, 0x6A); - AddTextPrinterParameterized(0, 1, labelStr, offset, 0x29, TEXT_SPEED_FF, NULL); + str = gText_MoveRelearnerAccuracy; + x = GetStringRightAlignXOffset(1, str, 0x6A); + AddTextPrinterParameterized(0, 1, str, x, 0x29, TEXT_SPEED_FF, NULL); if (chosenMove == LIST_CANCEL) { CopyWindowToVram(0, 2); return; } move = &gBattleMoves[chosenMove]; - labelStr = gTypeNames[move->type]; - // GCC tries to be smart, and preserves the same 0x19 from above for this. - // The original asm just loads the constant 0x19 twice. - AddTextPrinterParameterized(0, 1, labelStr, 4, 0x19, TEXT_SPEED_FF, NULL); - - // GCC tries to generate this as: - // add r4, r0, 0 - // add r4, r4, 4 - // But the original asm is: - // add r4, r0, 4 - width = 4 + GetStringWidth(1, gText_MoveRelearnerPP, 0); + str = gTypeNames[move->type]; + AddTextPrinterParameterized(0, 1, str, 4, 0x19, TEXT_SPEED_FF, NULL); + x = 4 + GetStringWidth(1, gText_MoveRelearnerPP, 0); ConvertIntToDecimalStringN(buffer, move->pp, 0, 2); - AddTextPrinterParameterized(0, 1, buffer, width, 0x29, TEXT_SPEED_FF, NULL); - + AddTextPrinterParameterized(0, 1, buffer, x, 0x29, TEXT_SPEED_FF, NULL); if (move->power < 2) { - labelStr = gText_ThreeDashes; + str = gText_ThreeDashes; } else { ConvertIntToDecimalStringN(buffer, move->power, 0, 3); - labelStr = buffer; + str = buffer; } - AddTextPrinterParameterized(0, 1, labelStr, 0x6A, 0x19, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(0, 1, str, 0x6A, 0x19, TEXT_SPEED_FF, NULL); if (move->accuracy == 0) { - labelStr = gText_ThreeDashes; + str = gText_ThreeDashes; } else { ConvertIntToDecimalStringN(buffer, move->accuracy, 0, 3); - labelStr = buffer; + str = buffer; } - AddTextPrinterParameterized(0, 1, labelStr, 0x6A, 0x29, TEXT_SPEED_FF, NULL); - labelStr = gMoveDescriptionPointers[chosenMove - 1]; - AddTextPrinterParameterized(0, 7, labelStr, 0, 0x41, 0, NULL); -#else - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - mov r9, r0\n\ - movs r0, 0\n\ - movs r1, 0x11\n\ - bl FillWindowPixelBuffer\n\ - ldr r5, =gText_MoveRelearnerBattleMoves\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x80\n\ - bl GetStringCenterAlignXOffset\n\ - adds r4, r0, 0\n\ - lsls r3, r4, 24\n\ - lsrs r3, 24\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r0, 0xFF\n\ - mov r8, r0\n\ - str r0, [sp, 0x4]\n\ - movs r7, 0\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - ldr r5, =gText_MoveRelearnerPP\n\ - movs r1, 0x29\n\ - mov r10, r1\n\ - str r1, [sp]\n\ - mov r0, r8\n\ - str r0, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - movs r3, 0x4\n\ - bl AddTextPrinterParameterized\n\ - ldr r5, =gText_MoveRelearnerPower\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x6A\n\ - bl GetStringRightAlignXOffset\n\ - adds r4, r0, 0\n\ - lsls r3, r4, 24\n\ - lsrs r3, 24\n\ - movs r1, 0x19\n\ - str r1, [sp]\n\ - mov r0, r8\n\ - str r0, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - ldr r5, =gText_MoveRelearnerAccuracy\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x6A\n\ - bl GetStringRightAlignXOffset\n\ - adds r4, r0, 0\n\ - lsls r3, r4, 24\n\ - lsrs r3, 24\n\ - mov r1, r10\n\ - str r1, [sp]\n\ - mov r0, r8\n\ - str r0, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - cmp r9, r0\n\ - bne _081D29C4\n\ - movs r0, 0\n\ - movs r1, 0x2\n\ - bl CopyWindowToVram\n\ - b _081D2AB6\n\ - .pool\n\ -_081D29C4:\n\ - mov r1, r9\n\ - lsls r0, r1, 1\n\ - add r0, r9\n\ - lsls r0, 2\n\ - ldr r1, =gBattleMoves\n\ - adds r6, r0, r1\n\ - ldrb r1, [r6, 0x2]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - ldr r1, =gTypeNames\n\ - adds r5, r0, r1\n\ - movs r0, 0x19\n\ - str r0, [sp]\n\ - mov r1, r8\n\ - str r1, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - movs r3, 0x4\n\ - bl AddTextPrinterParameterized\n\ - ldr r1, =gText_MoveRelearnerPP\n\ - movs r0, 0x1\n\ - movs r2, 0\n\ - bl GetStringWidth\n\ - adds r4, r0, 0x4\n\ - ldrb r1, [r6, 0x4]\n\ - add r0, sp, 0xC\n\ - movs r2, 0\n\ - movs r3, 0x2\n\ - bl ConvertIntToDecimalStringN\n\ - lsls r3, r4, 24\n\ - lsrs r3, 24\n\ - mov r0, r10\n\ - str r0, [sp]\n\ - mov r1, r8\n\ - str r1, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - add r2, sp, 0xC\n\ - bl AddTextPrinterParameterized\n\ - ldrb r0, [r6, 0x1]\n\ - cmp r0, 0x1\n\ - bhi _081D2A3C\n\ - ldr r5, =gText_ThreeDashes\n\ - b _081D2A4A\n\ - .pool\n\ -_081D2A3C:\n\ - ldrb r1, [r6, 0x1]\n\ - add r0, sp, 0xC\n\ - movs r2, 0\n\ - movs r3, 0x3\n\ - bl ConvertIntToDecimalStringN\n\ - add r5, sp, 0xC\n\ -_081D2A4A:\n\ - movs r0, 0x19\n\ - str r0, [sp]\n\ - movs r0, 0xFF\n\ - str r0, [sp, 0x4]\n\ - movs r0, 0\n\ - str r0, [sp, 0x8]\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - movs r3, 0x6A\n\ - bl AddTextPrinterParameterized\n\ - ldrb r0, [r6, 0x3]\n\ - cmp r0, 0\n\ - bne _081D2A70\n\ - ldr r5, =gText_ThreeDashes\n\ - b _081D2A7E\n\ - .pool\n\ -_081D2A70:\n\ - ldrb r1, [r6, 0x3]\n\ - add r0, sp, 0xC\n\ - movs r2, 0\n\ - movs r3, 0x3\n\ - bl ConvertIntToDecimalStringN\n\ - add r5, sp, 0xC\n\ -_081D2A7E:\n\ - movs r0, 0x29\n\ - str r0, [sp]\n\ - movs r0, 0xFF\n\ - str r0, [sp, 0x4]\n\ - movs r4, 0\n\ - str r4, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - movs r3, 0x6A\n\ - bl AddTextPrinterParameterized\n\ - ldr r1, =gMoveDescriptionPointers\n\ - mov r0, r9\n\ - subs r0, 0x1\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - movs r0, 0x41\n\ - str r0, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r4, [sp, 0x8]\n\ - movs r0, 0\n\ - movs r1, 0x7\n\ - adds r2, r5, 0\n\ - movs r3, 0\n\ - bl AddTextPrinterParameterized\n\ -_081D2AB6:\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -#endif + AddTextPrinterParameterized(0, 1, str, 0x6A, 0x29, TEXT_SPEED_FF, NULL); + + str = gMoveDescriptionPointers[chosenMove - 1]; + AddTextPrinterParameterized(0, 7, str, 0, 0x41, 0, NULL); } -NAKED static void MoveRelearnerMenuLoadContestMoveDescription(u32 chosenMove) { -#ifdef NONMATCHING - //u8 offset; - const u8 *labelStr; + s32 x; + const u8 *str; const struct ContestMove *move; - u8 category; - const u8 **temp; MoveRelearnerShowHideHearts(chosenMove); FillWindowPixelBuffer(1, PIXEL_FILL(1)); - labelStr = gText_MoveRelearnerContestMovesTitle; - // GCC compiles these as: - // add r3, r0, 0 - // lsls r3, r3, 24 - // lsrs r3, r3, 24 - // But in the original asm: - // lsls r3, r0, 24 - // lsrs r3, r3, 24 - //offset = GetStringCenterAlignXOffset(1, labelStr, 0x80); - AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x80), 1, TEXT_SPEED_FF, NULL); - - labelStr = gText_MoveRelearnerAppeal; - //offset = GetStringRightAlignXOffset(1, labelStr, 0x5C); - AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x5C), 0x19, TEXT_SPEED_FF, NULL); - - labelStr = gText_MoveRelearnerJam; - //offset = GetStringRightAlignXOffset(1, labelStr, 0x5C); - AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x5C), 0x29, TEXT_SPEED_FF, NULL); + str = gText_MoveRelearnerContestMovesTitle; + x = GetStringCenterAlignXOffset(1, str, 0x80); + AddTextPrinterParameterized(1, 1, str, x, 1, TEXT_SPEED_FF, NULL); + + str = gText_MoveRelearnerAppeal; + x = GetStringRightAlignXOffset(1, str, 0x5C); + AddTextPrinterParameterized(1, 1, str, x, 0x19, TEXT_SPEED_FF, NULL); + + str = gText_MoveRelearnerJam; + x = GetStringRightAlignXOffset(1, str, 0x5C); + AddTextPrinterParameterized(1, 1, str, x, 0x29, TEXT_SPEED_FF, NULL); if (chosenMove == MENU_NOTHING_CHOSEN) { @@ -1940,128 +1038,13 @@ static void MoveRelearnerMenuLoadContestMoveDescription(u32 chosenMove) } move = &gContestMoves[chosenMove]; - temp = (const u8**)gContestMoveTypeTextPointers; - category = move->contestCategory; - labelStr = temp[category]; - AddTextPrinterParameterized(1, 1, labelStr, 4, 0x19, TEXT_SPEED_FF, NULL); + str = gContestMoveTypeTextPointers[move->contestCategory]; + AddTextPrinterParameterized(1, 1, str, 4, 0x19, TEXT_SPEED_FF, NULL); - labelStr = gContestEffectDescriptionPointers[move->effect]; - AddTextPrinterParameterized(1, 1, labelStr, 0, 0x41, TEXT_SPEED_FF, NULL); + str = gContestEffectDescriptionPointers[move->effect]; + AddTextPrinterParameterized(1, 7, str, 0, 0x41, TEXT_SPEED_FF, NULL); CopyWindowToVram(1, 2); -#else - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0xC\n\ - adds r4, r0, 0\n\ - bl MoveRelearnerShowHideHearts\n\ - movs r0, 0x1\n\ - movs r1, 0x11\n\ - bl FillWindowPixelBuffer\n\ - ldr r5, =gText_MoveRelearnerContestMovesTitle\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x80\n\ - bl GetStringCenterAlignXOffset\n\ - lsls r3, r0, 24\n\ - lsrs r3, 24\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - movs r7, 0xFF\n\ - str r7, [sp, 0x4]\n\ - movs r6, 0\n\ - str r6, [sp, 0x8]\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - ldr r5, =gText_MoveRelearnerAppeal\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x5C\n\ - bl GetStringRightAlignXOffset\n\ - lsls r3, r0, 24\n\ - lsrs r3, 24\n\ - movs r0, 0x19\n\ - mov r8, r0\n\ - str r0, [sp]\n\ - str r7, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r0, 0x1\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - ldr r5, =gText_MoveRelearnerJam\n\ - movs r0, 0x1\n\ - adds r1, r5, 0\n\ - movs r2, 0x5C\n\ - bl GetStringRightAlignXOffset\n\ - lsls r3, r0, 24\n\ - lsrs r3, 24\n\ - movs r0, 0x29\n\ - str r0, [sp]\n\ - str r7, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r0, 0x1\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - bl AddTextPrinterParameterized\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - cmp r4, r0\n\ - bne _081D2B6C\n\ - movs r0, 0x1\n\ - movs r1, 0x2\n\ - bl CopyWindowToVram\n\ - b _081D2BB8\n\ - .pool\n\ -_081D2B6C:\n\ - lsls r4, 3\n\ - ldr r0, =gContestMoves\n\ - adds r4, r0\n\ - ldr r1, =gContestMoveTypeTextPointers\n\ - ldrb r0, [r4, 0x1]\n\ - lsls r0, 29\n\ - lsrs r0, 27\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - mov r0, r8\n\ - str r0, [sp]\n\ - str r7, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r0, 0x1\n\ - movs r1, 0x1\n\ - adds r2, r5, 0\n\ - movs r3, 0x4\n\ - bl AddTextPrinterParameterized\n\ - ldr r1, =gContestEffectDescriptionPointers\n\ - ldrb r0, [r4]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - movs r0, 0x41\n\ - str r0, [sp]\n\ - str r7, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r0, 0x1\n\ - movs r1, 0x7\n\ - adds r2, r5, 0\n\ - movs r3, 0\n\ - bl AddTextPrinterParameterized\n\ - movs r0, 0x1\n\ - movs r1, 0x2\n\ - bl CopyWindowToVram\n\ -_081D2BB8:\n\ - add sp, 0xC\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - .syntax divided"); -#endif } static void MoveRelearnerCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *list) @@ -2091,4 +1074,4 @@ bool16 MoveRelearnerRunTextPrinters(void) void MoveRelearnerCreateYesNoMenu(void) { CreateYesNoMenu(&sMoveRelearnerYesNoMenuTemplate, 1, 0xE, 0); -}
\ No newline at end of file +} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 49aff99ab..59077b059 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -272,14 +272,14 @@ void sub_8166380(void) gUnknown_0203BC90->field_50++; break; case 11: - sub_81D2754(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14[0]); + sub_81D2754(gUnknown_0203BCAC->field_7C58.unk0[0], gUnknown_0203BCAC->field_7C58.unk14[0]); sub_81D20AC(&gUnknown_0203BCAC->field_7C58); gUnknown_0203BC90->field_50++; break; case 12: if (!sub_81D20BC(&gUnknown_0203BCAC->field_7C58)) { - sub_81D1F84(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14, gUnknown_0203BCAC->field_7C58.unk14); + sub_81D1F84(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14[0], gUnknown_0203BCAC->field_7C58.unk14[0]); gUnknown_0203BC90->field_50++; } break; |