diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2021-07-14 14:15:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-14 14:15:12 -0400 |
commit | 2162e948d1889cbf5c651b9747dab1194323f2da (patch) | |
tree | 57a826d56544031e7193ec180ca003c704efd654 | |
parent | 05559a2fcff5262b6a0c694e745e8dbdb5905a10 (diff) | |
parent | 6333c3957edf9130ac44ac7fd152a8563621f1a5 (diff) |
Merge pull request #831 from PikalaxALT/more_matching
Match more functions
-rw-r--r-- | include/constants/rgb.h | 13 | ||||
-rw-r--r-- | include/global.h | 12 | ||||
-rw-r--r-- | src/image_processing_effects.c | 10 | ||||
-rw-r--r-- | src/item_menu.c | 623 | ||||
-rw-r--r-- | src/menu.c | 98 | ||||
-rw-r--r-- | src/option_menu.c | 87 | ||||
-rw-r--r-- | src/pokemon_storage_system_2.c | 201 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 361 | ||||
-rw-r--r-- | src/pokenav.c | 1788 | ||||
-rw-r--r-- | src/pokenav_before.c | 1351 | ||||
-rw-r--r-- | src/script_menu.c | 189 | ||||
-rw-r--r-- | src/starter_choose.c | 194 | ||||
-rw-r--r-- | src/title_screen.c | 113 |
13 files changed, 744 insertions, 4296 deletions
diff --git a/include/constants/rgb.h b/include/constants/rgb.h new file mode 100644 index 000000000..136b74d5e --- /dev/null +++ b/include/constants/rgb.h @@ -0,0 +1,13 @@ +#ifndef POKERUBY_CONSTANTS_RGB_H +#define POKERUBY_CONSTANTS_RGB_H + +#define GET_R(color) ((color) & 0x1F) +#define GET_G(color) (((color) >> 5) & 0x1F) +#define GET_B(color) (((color) >> 10) & 0x1F) + +#define RGB_ALPHA (1 << 15) +#define IS_ALPHA(color) ((color) & RGB_ALPHA) + +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) + +#endif // POKERUBY_CONSTANTS_RGB_H diff --git a/include/global.h b/include/global.h index 7897e20c2..3a26a2c3e 100644 --- a/include/global.h +++ b/include/global.h @@ -96,16 +96,22 @@ enum }) // Converts a number to Q8.8 fixed-point format -#define Q_8_8(n) ((s16)((n) * 256)) +#define Q_8_8(n) ((s16)((n) * 256)) // Converts a number from Q8.8 fixed-point format to integer #define Q_8_8_TO_INT(n) ((s16)((n) >> 8)) // Converts a number to Q4.12 fixed-point format -#define Q_4_12(n) ((s16)((n) * 4096)) +#define Q_4_12(n) ((s16)((n) * 4096)) // Converts a number from Q4.12 fixed-point format to integer -#define Q_4_12_TO_INT(n) ((s16)((n) >> 12)) +#define Q_4_12_TO_INT(n) ((s16)((n) >> 12)) + +// Converts a number to Q24.8 fixed-point format +#define Q_24_8(n) ((s32)((n) * 256)) + +// Converts a number from Q24.8 fixed-point format to integer +#define Q_24_8_TO_INT(x) ((s32)((x) >> 8)) // Credits to Made (dolphin emoji) #define S16TOPOSFLOAT(val) \ diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c index fe5fc5dd9..26dc4b05e 100644 --- a/src/image_processing_effects.c +++ b/src/image_processing_effects.c @@ -1,15 +1,7 @@ #include "global.h" #include "image_processing_effects.h" #include "contest_painting.h" - -#define GET_R(color) ((color) & 0x1F) -#define GET_G(color) (((color) >> 5) & 0x1F) -#define GET_B(color) (((color) >> 10) & 0x1F) - -#define RGB_ALPHA (1 << 15) -#define IS_ALPHA(color) ((color) & RGB_ALPHA) - -#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) +#include "constants/rgb.h" u16 *gCanvasPixels; u8 gCanvasColumnStart; diff --git a/src/item_menu.c b/src/item_menu.c index b05bf2e49..33b4e1243 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -145,12 +145,9 @@ struct PocketScrollState gBagPocketScrollStates[5]; struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots extern const u8 Event_NoRegisteredItem[]; -// TODO: decompile the debug code so we can use static in this file -#define static - -extern const struct CompressedSpriteSheet sMaleBagSpriteSheet; -extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet; -extern const struct CompressedSpritePalette sBagSpritePalette; +static const struct CompressedSpriteSheet sMaleBagSpriteSheet; +static const struct CompressedSpriteSheet sFemaleBagSpriteSheet; +static const struct CompressedSpritePalette sBagSpritePalette; const struct BagPocket gBagPockets[NUM_BAG_POCKETS] = { @@ -1782,547 +1779,167 @@ void sub_80A53F8(void) SetMainCallback2(sub_80A53CC); } -#ifdef NONMATCHING static void sub_80A5414(u8 taskId) { TaskFunc r5 = NULL; + if (sub_80A78A0()) + { + while (1) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if ((sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection - 1] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-1); + } + break; + } + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if ((!(sPopupMenuSelection & 1)) && sPopupMenuActionList[sPopupMenuSelection + 1] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(1); + } + break; + } + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT) + { + if ((sPopupMenuSelection >= 2) && sPopupMenuActionList[sPopupMenuSelection - 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-2); + } + break; + } + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT) + { + if ((sPopupMenuSelection < 2) && sPopupMenuActionList[sPopupMenuSelection + 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(2); + } + break; + } + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func; + r5(taskId); + break; + } + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[3]].func; + r5(taskId); + break; + } + break; + } + } + if (r5 == NULL) + { + if (sReturnLocation == RETURN_TO_FIELD_5) + { + if (sPopupMenuSelection == 0) + sub_8072DDC(12); + else if (sPopupMenuSelection < 2) + sub_8072DCC(47); + else + sub_8072DCC(48); + } + else + { + if (sPopupMenuSelection < 2) + sub_8072DCC(47); + else + sub_8072DCC(48); + } + } +} - if (sub_80A78A0() != 0) +static void sub_80A5600(u8 taskId) +{ + TaskFunc r5 = NULL; + + while (1) { - if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x40) + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) { - if ((sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection - 1] == 8) + if (sPopupMenuSelection != 0 && sPopupMenuActionList[sPopupMenuSelection - 1] != 8) { PlaySE(SE_SELECT); sPopupMenuSelection = MoveMenuCursor3(-1); } + break; } - //_080A546C - else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x80) + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) { - if (!(sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection + 1] != 8) + if (sPopupMenuSelection != gUnknown_02038564 - 1 && sPopupMenuSelection != 2 && sPopupMenuActionList[sPopupMenuSelection + 1] != 8) { PlaySE(SE_SELECT); sPopupMenuSelection = MoveMenuCursor3(1); } + break; } - //_080A549C - else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x20) + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT) { - if (sPopupMenuSelection > 1 && sPopupMenuActionList[sPopupMenuSelection - 2] != 8) + if ((sPopupMenuSelection >= 3) && sPopupMenuActionList[sPopupMenuSelection - 3] != 8) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor3(-2); + sPopupMenuSelection = MoveMenuCursor3(-3); } + break; } - //_080A54CC - else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x10) + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT) { - if (sPopupMenuSelection <= 1 && sPopupMenuActionList[sPopupMenuSelection + 2] != 8) + if ((sPopupMenuSelection < 3) && sPopupMenuActionList[sPopupMenuSelection + 3] != 8) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor3(2); + sPopupMenuSelection = MoveMenuCursor3(3); } + break; } - //_080A5500 - else if (!(gMain.newKeys & A_BUTTON)) + if (gMain.newKeys & A_BUTTON) { - if (gMain.newKeys & B_BUTTON) - { - gTasks[taskId].data[10] = 0; - sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); - sub_80A4DA4(gBGTilemapBuffers[1]); - r5 = sItemPopupMenuActions[sPopupMenuActionList[3]].func; - r5(taskId); - } + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func; + r5(taskId); + break; } - else + if (gMain.newKeys & B_BUTTON) { - //_080A5590 gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); sub_80A4DA4(gBGTilemapBuffers[1]); - r5 = sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func; + r5 = sItemPopupMenuActions[sPopupMenuActionList[5]].func; r5(taskId); + break; } + break; } - //_080A5552 if (r5 == NULL) { - if (sReturnLocation == RETURN_TO_FIELD_5) + if (sPopupMenuSelection == 0) { - if (sPopupMenuSelection == 0) - { - sub_8072DDC(12); - return; - } - //_080A55D4 - //else - //{ - if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) - sub_8072DCC(0x2F); - else - sub_8072DCC(0x30); - //} + sub_8072DDC(12); + } + else if (sPopupMenuSelection < 3) + { + sub_8072DCC(47); } - //_080A55E0 else { - if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) - sub_8072DCC(0x2F); - else - sub_8072DCC(0x30); + sub_8072DCC(48); } } } -#else -NAKED -static void sub_80A5414(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - movs r5, 0\n\ - bl sub_80A78A0\n\ - cmp r0, 0\n\ - bne _080A5426\n\ - b _080A5552\n\ -_080A5426:\n\ - ldr r2, _080A5460 @ =gMain\n\ - ldrh r0, [r2, 0x30]\n\ - movs r1, 0xF0\n\ - ands r1, r0\n\ - cmp r1, 0x40\n\ - bne _080A546C\n\ - ldr r4, _080A5464 @ =sPopupMenuSelection\n\ - ldrb r1, [r4]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080A5440\n\ - b _080A5552\n\ -_080A5440:\n\ - ldrb r1, [r4]\n\ - ldr r0, _080A5468 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x1\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - bne _080A5452\n\ - b _080A5552\n\ -_080A5452:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - b _080A54EE\n\ - .align 2, 0\n\ -_080A5460: .4byte gMain\n\ -_080A5464: .4byte sPopupMenuSelection\n\ -_080A5468: .4byte sPopupMenuActionList\n\ -_080A546C:\n\ - cmp r1, 0x80\n\ - bne _080A549C\n\ - ldr r4, _080A5494 @ =sPopupMenuSelection\n\ - ldrb r1, [r4]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080A5552\n\ - ldrb r1, [r4]\n\ - ldr r0, _080A5498 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0x8\n\ - beq _080A5552\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - b _080A54EE\n\ - .align 2, 0\n\ -_080A5494: .4byte sPopupMenuSelection\n\ -_080A5498: .4byte sPopupMenuActionList\n\ -_080A549C:\n\ - cmp r1, 0x20\n\ - bne _080A54CC\n\ - ldr r4, _080A54C4 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x1\n\ - bls _080A5552\n\ - adds r1, r0, 0\n\ - ldr r0, _080A54C8 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - beq _080A5552\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - b _080A54EE\n\ - .align 2, 0\n\ -_080A54C4: .4byte sPopupMenuSelection\n\ -_080A54C8: .4byte sPopupMenuActionList\n\ -_080A54CC:\n\ - cmp r1, 0x10\n\ - bne _080A5500\n\ - ldr r4, _080A54F8 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x1\n\ - bhi _080A5552\n\ - adds r1, r0, 0\n\ - ldr r0, _080A54FC @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x2]\n\ - cmp r0, 0x8\n\ - beq _080A5552\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x2\n\ -_080A54EE:\n\ - bl MoveMenuCursor3\n\ - strb r0, [r4]\n\ - b _080A5552\n\ - .align 2, 0\n\ -_080A54F8: .4byte sPopupMenuSelection\n\ -_080A54FC: .4byte sPopupMenuActionList\n\ -_080A5500:\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080A5590\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080A5552\n\ - ldr r1, _080A5570 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r1, _080A5574 @ =gBagPocketScrollStates\n\ - ldr r0, _080A5578 @ =sCurrentBagPocket\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r2, [r0]\n\ - adds r0, r4, 0\n\ - adds r1, r2, 0\n\ - bl sub_80A48E8\n\ - ldr r0, _080A557C @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A5580 @ =sItemPopupMenuActions\n\ - ldr r0, _080A5584 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - ldrb r0, [r0, 0x3]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ -_080A5552:\n\ - cmp r5, 0\n\ - bne _080A55FA\n\ - ldr r0, _080A5588 @ =sReturnLocation\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x5\n\ - bne _080A55E0\n\ - ldr r0, _080A558C @ =sPopupMenuSelection\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080A55D4\n\ - movs r0, 0xC\n\ - bl sub_8072DDC\n\ - b _080A55FA\n\ - .align 2, 0\n\ -_080A5570: .4byte gTasks\n\ -_080A5574: .4byte gBagPocketScrollStates\n\ -_080A5578: .4byte sCurrentBagPocket\n\ -_080A557C: .4byte gBGTilemapBuffers + 0x800\n\ -_080A5580: .4byte sItemPopupMenuActions\n\ -_080A5584: .4byte sPopupMenuActionList\n\ -_080A5588: .4byte sReturnLocation\n\ -_080A558C: .4byte sPopupMenuSelection\n\ -_080A5590:\n\ - ldr r1, _080A55C0 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r0, _080A55C4 @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A55C8 @ =sItemPopupMenuActions\n\ - ldr r0, _080A55CC @ =sPopupMenuSelection\n\ - ldrb r2, [r0]\n\ - ldr r0, _080A55D0 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ - b _080A5552\n\ - .align 2, 0\n\ -_080A55C0: .4byte gTasks\n\ -_080A55C4: .4byte gBGTilemapBuffers + 0x800\n\ -_080A55C8: .4byte sItemPopupMenuActions\n\ -_080A55CC: .4byte sPopupMenuSelection\n\ -_080A55D0: .4byte sPopupMenuActionList\n\ -_080A55D4:\n\ - cmp r0, 0x1\n\ - bls _080A55E8\n\ - movs r0, 0x30\n\ - bl sub_8072DCC\n\ - b _080A55FA\n\ -_080A55E0:\n\ - ldr r0, _080A55F0 @ =sPopupMenuSelection\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - bhi _080A55F4\n\ -_080A55E8:\n\ - movs r0, 0x2F\n\ - bl sub_8072DCC\n\ - b _080A55FA\n\ - .align 2, 0\n\ -_080A55F0: .4byte sPopupMenuSelection\n\ -_080A55F4:\n\ - movs r0, 0x30\n\ - bl sub_8072DCC\n\ -_080A55FA:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif - -NAKED -static void sub_80A5600(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - movs r5, 0\n\ - ldr r2, _080A563C @ =gMain\n\ - ldrh r0, [r2, 0x30]\n\ - movs r1, 0xF0\n\ - ands r1, r0\n\ - cmp r1, 0x40\n\ - bne _080A5648\n\ - ldr r4, _080A5640 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _080A561E\n\ - b _080A5736\n\ -_080A561E:\n\ - adds r1, r0, 0\n\ - ldr r0, _080A5644 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x1\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - bne _080A5630\n\ - b _080A5736\n\ -_080A5630:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - b _080A56D2\n\ - .align 2, 0\n\ -_080A563C: .4byte gMain\n\ -_080A5640: .4byte sPopupMenuSelection\n\ -_080A5644: .4byte sPopupMenuActionList\n\ -_080A5648:\n\ - cmp r1, 0x80\n\ - bne _080A5680\n\ - ldr r4, _080A5674 @ =sPopupMenuSelection\n\ - ldrb r1, [r4]\n\ - ldr r0, _080A5678 @ =gUnknown_02038564\n\ - ldrb r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - beq _080A5736\n\ - cmp r1, 0x2\n\ - beq _080A5736\n\ - ldr r0, _080A567C @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0, 0x1]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - b _080A56D2\n\ - .align 2, 0\n\ -_080A5674: .4byte sPopupMenuSelection\n\ -_080A5678: .4byte gUnknown_02038564\n\ -_080A567C: .4byte sPopupMenuActionList\n\ -_080A5680:\n\ - cmp r1, 0x20\n\ - bne _080A56B0\n\ - ldr r4, _080A56A8 @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bls _080A5736\n\ - adds r1, r0, 0\n\ - ldr r0, _080A56AC @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - subs r1, 0x3\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x3\n\ - negs r0, r0\n\ - b _080A56D2\n\ - .align 2, 0\n\ -_080A56A8: .4byte sPopupMenuSelection\n\ -_080A56AC: .4byte sPopupMenuActionList\n\ -_080A56B0:\n\ - cmp r1, 0x10\n\ - bne _080A56E4\n\ - ldr r4, _080A56DC @ =sPopupMenuSelection\n\ - ldrb r0, [r4]\n\ - cmp r0, 0x2\n\ - bhi _080A5736\n\ - adds r1, r0, 0\n\ - ldr r0, _080A56E0 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0x8\n\ - beq _080A5736\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x3\n\ -_080A56D2:\n\ - bl MoveMenuCursor3\n\ - strb r0, [r4]\n\ - b _080A5736\n\ - .align 2, 0\n\ -_080A56DC: .4byte sPopupMenuSelection\n\ -_080A56E0: .4byte sPopupMenuActionList\n\ -_080A56E4:\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080A5768\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080A5736\n\ - ldr r1, _080A574C @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r1, _080A5750 @ =gBagPocketScrollStates\n\ - ldr r0, _080A5754 @ =sCurrentBagPocket\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r2, [r0]\n\ - adds r0, r4, 0\n\ - adds r1, r2, 0\n\ - bl sub_80A48E8\n\ - ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A575C @ =sItemPopupMenuActions\n\ - ldr r0, _080A5760 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - ldrb r0, [r0, 0x5]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ -_080A5736:\n\ - cmp r5, 0\n\ - bne _080A57BE\n\ - ldr r0, _080A5764 @ =sPopupMenuSelection\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080A57AC\n\ - movs r0, 0xC\n\ - bl sub_8072DDC\n\ - b _080A57BE\n\ - .align 2, 0\n\ -_080A574C: .4byte gTasks\n\ -_080A5750: .4byte gBagPocketScrollStates\n\ -_080A5754: .4byte sCurrentBagPocket\n\ -_080A5758: .4byte gBGTilemapBuffers + 0x800\n\ -_080A575C: .4byte sItemPopupMenuActions\n\ -_080A5760: .4byte sPopupMenuActionList\n\ -_080A5764: .4byte sPopupMenuSelection\n\ -_080A5768:\n\ - ldr r1, _080A5798 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0x1C]\n\ - ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\ - bl sub_80A4DA4\n\ - ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\ - ldr r0, _080A57A4 @ =sPopupMenuSelection\n\ - ldrb r2, [r0]\n\ - ldr r0, _080A57A8 @ =sPopupMenuActionList\n\ - ldr r0, [r0]\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r1, 0x4\n\ - adds r0, r1\n\ - ldr r5, [r0]\n\ - adds r0, r4, 0\n\ - bl _call_via_r5\n\ - b _080A5736\n\ - .align 2, 0\n\ -_080A5798: .4byte gTasks\n\ -_080A579C: .4byte gBGTilemapBuffers + 0x800\n\ -_080A57A0: .4byte sItemPopupMenuActions\n\ -_080A57A4: .4byte sPopupMenuSelection\n\ -_080A57A8: .4byte sPopupMenuActionList\n\ -_080A57AC:\n\ - cmp r0, 0x2\n\ - bhi _080A57B8\n\ - movs r0, 0x2F\n\ - bl sub_8072DCC\n\ - b _080A57BE\n\ -_080A57B8:\n\ - movs r0, 0x30\n\ - bl sub_8072DCC\n\ -_080A57BE:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} static void sub_80A57C4(void) { diff --git a/src/menu.c b/src/menu.c index 2b454417a..6fabef96b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -630,11 +630,11 @@ u8 unref_sub_8072A5C(u8 *dest, u8 *src, u8 left, u16 top, u8 width, u32 a6) return sub_8004FD0(gMenuWindowPtr, dest, src, gMenuTextTileOffset, left, top, width, a6); } -#if ENGLISH int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { u8 newlineCount = sub_8004FD0(gMenuWindowPtr, NULL, str, gMenuTextTileOffset, left, top, width, a6); +#if ENGLISH left /= 8; top /= 8; width = (width + 7) / 8; @@ -642,91 +642,21 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) if (newlineCount < height) Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); -} #elif GERMAN -NAKED -int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x10\n\ - mov r12, r0\n\ - ldr r0, [sp, 0x24]\n\ - ldr r4, [sp, 0x28]\n\ - str r4, [sp, 0xC]\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - lsls r2, 16\n\ - lsrs r4, r2, 16\n\ - lsls r3, 24\n\ - lsrs r6, r3, 24\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, _08072AF8 @ =gMenuWindowPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _08072AFC @ =gMenuTextTileOffset\n\ - ldrh r3, [r1]\n\ - str r5, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r6, [sp, 0x8]\n\ - movs r1, 0\n\ - mov r2, r12\n\ - bl sub_8004FD0\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - movs r3, 0x7\n\ - ands r3, r5\n\ - cmp r3, 0\n\ - bne _08072B00\n\ - adds r1, r6, 0x7\n\ - asrs r1, 3\n\ - subs r1, 0x1\n\ - b _08072B0C\n\ - .align 2, 0\n\ -_08072AF8: .4byte gMenuWindowPtr\n\ -_08072AFC: .4byte gMenuTextTileOffset\n\ -_08072B00:\n\ - adds r3, r6, r3\n\ - subs r1, r3, 0x1\n\ - cmp r1, 0\n\ - bge _08072B0A\n\ - adds r1, r3, 0x6\n\ -_08072B0A:\n\ - asrs r1, 3\n\ -_08072B0C:\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r6, r1, 0\n\ - lsrs r5, 3\n\ - adds r1, r7, 0x7\n\ - asrs r1, 3\n\ - lsls r1, 24\n\ - lsrs r7, r1, 24\n\ - lsrs r4, 3\n\ - cmp r2, r7\n\ - bcs _08072B3E\n\ - lsls r1, r2, 1\n\ - adds r1, r4, r1\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r2, r5, r6\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r3, r7, r4\n\ - subs r3, 0x1\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - adds r0, r5, 0\n\ - bl Menu_BlankWindowRect\n\ -_08072B3E:\n\ - add sp, 0x10\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} + // This looks suspiciously macro-like + u8 r1; + if ((left & 7) == 0) + r1 = (width + 7) / 8 - 1; + else + r1 = (width + (left & 7) - 1) / 8; + width = r1; + left /= 8; + height = (height + 7) / 8; + top /= 8; + if (newlineCount < height) + Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width, height + top - 1); #endif +} void MenuPrint_RightAligned(const u8 *str, u8 right, u8 top) { diff --git a/src/option_menu.c b/src/option_menu.c index 6fc58b531..9362a776b 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -5,6 +5,7 @@ #include "palette.h" #include "scanline_effect.h" #include "sprite.h" +#include "string_util.h" #include "strings2.h" #include "task.h" @@ -430,11 +431,9 @@ static u8 FrameType_ProcessInput(u8 selection) return selection; } -#define CHAR_0 0xA1 //Character code of '0' character - -#if ENGLISH static void FrameType_DrawChoices(u8 selection) { +#if ENGLISH u8 text[6]; u8 n = selection + 1; u16 i; @@ -461,70 +460,28 @@ static void FrameType_DrawChoices(u8 selection) text[i] = EOS; Menu_PrintText(gSystemText_Type, 15, 15); Menu_PrintText(text, 18, 15); -} #elif GERMAN -NAKED -static void FrameType_DrawChoices(u8 selection) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x10\n\ - lsls r0, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ - lsrs r5, r0, 24\n\ - ldr r1, _0808C368 @ =gSystemText_Type\n\ - mov r0, sp\n\ - bl StringCopy\n\ - ldr r1, _0808C36C @ =gSystemText_Terminator\n\ - mov r0, sp\n\ - bl StringAppend\n\ - adds r4, r0, 0\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __udivsi3\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0\n\ - beq _0808C370\n\ - adds r0, r1, 0\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - b _0808C380\n\ - .align 2, 0\n\ -_0808C368: .4byte gSystemText_Type\n\ -_0808C36C: .4byte gSystemText_Terminator\n\ -_0808C370:\n\ - adds r0, r5, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r4, 0x1\n\ - strb r6, [r4]\n\ -_0808C380:\n\ - adds r4, 0x1\n\ - movs r0, 0xFF\n\ - strb r0, [r4]\n\ - mov r0, sp\n\ - movs r1, 0xF\n\ - movs r2, 0xF\n\ - bl Menu_PrintText\n\ - add sp, 0x10\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} + u8 text[16]; + u8 n = selection + 1; + u8 *str; + + StringCopy(text, gSystemText_Type); + str = StringAppend(text, gSystemText_Terminator); + + if (n / 10 != 0) + { + *str++ = n / 10 + CHAR_0; + *str++ = n % 10 + CHAR_0; + } + else + { + *str++ = n % 10 + CHAR_0; + *str++ = CHAR_SPACE; + } + *str = EOS; + Menu_PrintText(text, 15, 15); #endif +} static u8 ButtonMode_ProcessInput(u8 selection) { diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index d97470cef..4ba25dd30 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -1521,184 +1521,65 @@ void sub_8098090(struct Sprite *sprite) const struct OamData gOamData_83B6EAC; -#ifdef NONMATCHING void sub_80980D4(void) { u16 i; - u16 tileStart; - u8 palSlot; + u16 startTile; + u8 paletteNum; u8 spriteId; - struct SpriteSheet sheet = {gPokemonStorageSystemPtr->unk_2784, 0x800, 0x0002}; - struct SpritePalette palette = {gPokemonStorageSystemPtr->unk_2704, 0xdac7}; - struct SpriteTemplate template = { - 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + + struct SpriteSheet spriteSheet = { + .data = gPokemonStorageSystemPtr->unk_2784, + .size = 0x800, + .tag = 0x0002 + }; + struct SpritePalette spritePalette = { + .data = gPokemonStorageSystemPtr->unk_2704, + .tag = 0xDAC7 + }; + struct SpriteTemplate spriteTemplate = { + .tileTag = 0x0002, + .paletteTag = 0xDAC7, + .oam = &gOamData_83B6EAC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy }; for (i = 0; i < 0x800; i++) + { gPokemonStorageSystemPtr->unk_2784[i] = 0; + } for (i = 0; i < 0x10; i++) + { gPokemonStorageSystemPtr->unk_2704[i] = 0; - + } gPokemonStorageSystemPtr->unk_2700 = NULL; - if ((tileStart = LoadSpriteSheet(&sheet)) != 0 - && (palSlot = LoadSpritePalette(&palette)) != 0xff - && (spriteId = CreateSprite(&template, 0x28, 0x30, 0)) != MAX_SPRITES) + do { - // FIXME this gets compiled as a separate block between the palSlot check and the spriteId check - gPokemonStorageSystemPtr->unk_2700 = gSprites + spriteId; - gPokemonStorageSystemPtr->unk_26fa = palSlot * 16 + 0x100; - gPokemonStorageSystemPtr->unk_26fc = BG_CHAR_ADDR(4) + tileStart * 32; - } + startTile = LoadSpriteSheet(&spriteSheet); + if (startTile == 0) + break; + paletteNum = LoadSpritePalette(&spritePalette); + if (paletteNum == 0xFF) + break; + + spriteId = CreateSprite(&spriteTemplate, 0x28, 0x30, 0); + if (spriteId == MAX_SPRITES) + break; + + gPokemonStorageSystemPtr->unk_2700 = &gSprites[spriteId]; + gPokemonStorageSystemPtr->unk_26fa = 0x100 + 16 * paletteNum; + gPokemonStorageSystemPtr->unk_26fc = (void *)(OBJ_VRAM0 + 32 * startTile); + } while (0); if (gPokemonStorageSystemPtr->unk_2700 == NULL) { FreeSpriteTilesByTag(0x0002); - FreeSpritePaletteByTag(0xdac7); + FreeSpritePaletteByTag(0xDAC7); } } -#else - -const struct SpriteSheet gUnknown_083B6DCC = {ePokemonStorageSystem.unk_2784, 0x800, 0x0002}; -const struct SpritePalette gUnknown_083B6DD4 = {ePokemonStorageSystem.unk_2704, 0xdac7}; -const struct SpriteTemplate gSpriteTemplate_83B6DDC = { - 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -}; - -NAKED void sub_80980D4(void) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tsub sp, 0x28\n" - "\tldr r0, _08098150 @ =gUnknown_083B6DCC\n" - "\tldr r1, [r0, 0x4]\n" - "\tldr r0, [r0]\n" - "\tstr r0, [sp, 0x18]\n" - "\tstr r1, [sp, 0x1C]\n" - "\tldr r0, _08098154 @ =gUnknown_083B6DD4\n" - "\tldr r1, [r0, 0x4]\n" - "\tldr r0, [r0]\n" - "\tstr r0, [sp, 0x20]\n" - "\tstr r1, [sp, 0x24]\n" - "\tmov r1, sp\n" - "\tldr r0, _08098158 @ =gSpriteTemplate_83B6DDC\n" - "\tldm r0!, {r2-r4}\n" - "\tstm r1!, {r2-r4}\n" - "\tldm r0!, {r2-r4}\n" - "\tstm r1!, {r2-r4}\n" - "\tmovs r1, 0\n" - "\tadd r5, sp, 0x18\n" - "\tldr r4, _0809815C @ =gSharedMem + 0x2784\n" - "\tmovs r3, 0\n" - "\tldr r2, _08098160 @ =0x000007ff\n" - "_08098102:\n" - "\tadds r0, r1, r4\n" - "\tstrb r3, [r0]\n" - "\tadds r0, r1, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r1, r0, 16\n" - "\tcmp r1, r2\n" - "\tbls _08098102\n" - "\tmovs r1, 0\n" - "\tldr r3, _08098164 @ =gSharedMem + 0x2704\n" - "\tmovs r2, 0\n" - "_08098116:\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r3\n" - "\tstrh r2, [r0]\n" - "\tadds r0, r1, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r1, r0, 16\n" - "\tcmp r1, 0xF\n" - "\tbls _08098116\n" - "\tldr r0, _08098168 @ =gSharedMem\n" - "\tmovs r1, 0x9C\n" - "\tlsls r1, 6\n" - "\tadds r0, r1\n" - "\tmovs r1, 0\n" - "\tstr r1, [r0]\n" - "\tadds r0, r5, 0\n" - "\tbl LoadSpriteSheet\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, 0\n" - "\tbeq _080981C4\n" - "\tadd r0, sp, 0x20\n" - "\tbl LoadSpritePalette\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0xFF\n" - "\tbeq _080981C4\n" - "\tb _080981B0\n" - "\t.align 2, 0\n" - "_08098150: .4byte gUnknown_083B6DCC\n" - "_08098154: .4byte gUnknown_083B6DD4\n" - "_08098158: .4byte gSpriteTemplate_83B6DDC\n" - "_0809815C: .4byte gSharedMem + 0x2784\n" - "_08098160: .4byte 0x000007ff\n" - "_08098164: .4byte gSharedMem + 0x2704\n" - "_08098168: .4byte gSharedMem\n" - "_0809816C:\n" - "\tldr r2, _0809819C @ =gSharedMem\n" - "\tmovs r0, 0x9C\n" - "\tlsls r0, 6\n" - "\tadds r3, r2, r0\n" - "\tlsls r0, r1, 4\n" - "\tadds r0, r1\n" - "\tlsls r0, 2\n" - "\tldr r1, _080981A0 @ =gSprites\n" - "\tadds r0, r1\n" - "\tstr r0, [r3]\n" - "\tlsls r0, r4, 4\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 1\n" - "\tadds r0, r1\n" - "\tldr r3, _080981A4 @ =0x000026fa\n" - "\tadds r1, r2, r3\n" - "\tstrh r0, [r1]\n" - "\tldr r4, _080981A8 @ =0x000026fc\n" - "\tadds r2, r4\n" - "\tlsls r0, r5, 5\n" - "\tldr r1, _080981AC @ =0x06010000\n" - "\tadds r0, r1\n" - "\tstr r0, [r2]\n" - "\tb _080981C4\n" - "\t.align 2, 0\n" - "_0809819C: .4byte gSharedMem\n" - "_080981A0: .4byte gSprites\n" - "_080981A4: .4byte 0x000026fa\n" - "_080981A8: .4byte 0x000026fc\n" - "_080981AC: .4byte 0x06010000\n" - "_080981B0:\n" - "\tmov r0, sp\n" - "\tmovs r1, 0x28\n" - "\tmovs r2, 0x30\n" - "\tmovs r3, 0\n" - "\tbl CreateSprite\n" - "\tlsls r0, 24\n" - "\tlsrs r1, r0, 24\n" - "\tcmp r1, 0x40\n" - "\tbne _0809816C\n" - "_080981C4:\n" - "\tldr r0, _080981E8 @ =gSharedMem\n" - "\tmovs r2, 0x9C\n" - "\tlsls r2, 6\n" - "\tadds r0, r2\n" - "\tldr r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _080981DE\n" - "\tmovs r0, 0x2\n" - "\tbl FreeSpriteTilesByTag\n" - "\tldr r0, _080981EC @ =0x0000dac7\n" - "\tbl FreeSpritePaletteByTag\n" - "_080981DE:\n" - "\tadd sp, 0x28\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_080981E8: .4byte gSharedMem\n" - "_080981EC: .4byte 0x0000dac7"); -} -#endif void sub_80981F0(u16 species, u32 pid) { diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index fba4e1e18..7d612d6b5 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -138,7 +138,7 @@ extern const u8 gStatusScreen_Pal[]; extern const u8 gStatusScreen_Tilemap[]; extern const u8 gUnknown_08E74688[]; extern const u8 gUnknown_08E74E88[]; -extern const u8 gUnknown_08E73508[]; +extern const u16 gUnknown_08E73508[]; extern const u8 gStatusScreen_Gfx[]; extern const u8 gFontDefaultPalette[]; extern const u8 gAbilityNames[][13]; @@ -2970,321 +2970,54 @@ void DrawSummaryScreenNavigationDots(void) DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } -NAKED +// Like DmaCopyLarge16 but the size check is up top +#define DmaCopyLargeCheckFirst16(_src,_dest,_size) { \ + const void * src = (const void *)(_src); \ + void * dest = (void *)(_dest); \ + u32 size = (u32)(_size); \ + while (1) \ + { \ + if (size <= 0x1000) \ + { \ + DmaCopy16(3, src, dest, size); \ + break; \ + } \ + DmaCopy16(3, src, dest, 0x1000); \ + src += 0x1000; \ + dest += 0x1000; \ + size -= 0x1000; \ + } \ +} + +void sub_80A1D18(void); + void sub_80A1048(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - lsls r0, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - ldr r1, _080A10A0 @ =gTasks + 0x8\n\ - adds r6, r0, r1\n\ - ldrh r0, [r6]\n\ - ldrh r1, [r6, 0x2]\n\ - adds r0, r1\n\ - strh r0, [r6, 0x2]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _080A106E\n\ - b _080A1224\n\ -_080A106E:\n\ - movs r5, 0x2\n\ - ldrsh r2, [r6, r5]\n\ - ldr r0, _080A10A4 @ =0x0000024a\n\ - subs r0, r2\n\ - lsls r0, 1\n\ - ldr r1, _080A10A8 @ =gUnknown_08E73508\n\ - adds r4, r0, r1\n\ - ldr r5, _080A10AC @ =0x0600e480\n\ - lsls r2, 1\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - adds r7, r1, 0\n\ - cmp r2, r0\n\ - bhi _080A10B4\n\ - ldr r0, _080A10B0 @ =0x040000d4\n\ - str r4, [r0]\n\ - str r5, [r0, 0x4]\n\ - lsrs r1, r2, 1\n\ - movs r2, 0x80\n\ - lsls r2, 24\n\ - orrs r1, r2\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080A10E0\n\ - .align 2, 0\n\ -_080A10A0: .4byte gTasks + 0x8\n\ -_080A10A4: .4byte 0x0000024a\n\ -_080A10A8: .4byte gUnknown_08E73508\n\ -_080A10AC: .4byte 0x0600e480\n\ -_080A10B0: .4byte 0x040000d4\n\ -_080A10B4:\n\ - ldr r3, _080A110C @ =0x040000d4\n\ - str r4, [r3]\n\ - str r5, [r3, 0x4]\n\ - ldr r0, _080A1110 @ =0x80000800\n\ - str r0, [r3, 0x8]\n\ - ldr r0, [r3, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - adds r4, r0\n\ - adds r5, r0\n\ - ldr r1, _080A1114 @ =0xfffff000\n\ - adds r2, r1\n\ - cmp r2, r0\n\ - bhi _080A10B4\n\ - str r4, [r3]\n\ - str r5, [r3, 0x4]\n\ - lsrs r0, r2, 1\n\ - movs r1, 0x80\n\ - lsls r1, 24\n\ - orrs r0, r1\n\ - str r0, [r3, 0x8]\n\ - ldr r0, [r3, 0x8]\n\ -_080A10E0:\n\ - movs r5, 0x2\n\ - ldrsh r0, [r6, r5]\n\ - ldr r1, _080A1118 @ =0x0000026a\n\ - subs r1, r0\n\ - lsls r1, 1\n\ - adds r3, r1, r7\n\ - ldr r4, _080A111C @ =0x0600e4c0\n\ - lsls r1, r0, 1\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - cmp r1, r0\n\ - bhi _080A1120\n\ - ldr r0, _080A110C @ =0x040000d4\n\ - str r3, [r0]\n\ - str r4, [r0, 0x4]\n\ - lsrs r1, 1\n\ - movs r2, 0x80\n\ - lsls r2, 24\n\ - orrs r1, r2\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080A114C\n\ - .align 2, 0\n\ -_080A110C: .4byte 0x040000d4\n\ -_080A1110: .4byte 0x80000800\n\ -_080A1114: .4byte 0xfffff000\n\ -_080A1118: .4byte 0x0000026a\n\ -_080A111C: .4byte 0x0600e4c0\n\ -_080A1120:\n\ - ldr r2, _080A1178 @ =0x040000d4\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - ldr r0, _080A117C @ =0x80000800\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - adds r3, r0\n\ - adds r4, r0\n\ - ldr r5, _080A1180 @ =0xfffff000\n\ - adds r1, r5\n\ - cmp r1, r0\n\ - bhi _080A1120\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - lsrs r0, r1, 1\n\ - movs r1, 0x80\n\ - lsls r1, 24\n\ - orrs r0, r1\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ -_080A114C:\n\ - movs r1, 0x2\n\ - ldrsh r0, [r6, r1]\n\ - ldr r1, _080A1184 @ =0x0000024a\n\ - subs r1, r0\n\ - lsls r1, 1\n\ - adds r3, r1, r7\n\ - ldr r4, _080A1188 @ =0x0600ec80\n\ - lsls r1, r0, 1\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - cmp r1, r0\n\ - bhi _080A118C\n\ - ldr r0, _080A1178 @ =0x040000d4\n\ - str r3, [r0]\n\ - str r4, [r0, 0x4]\n\ - lsrs r1, 1\n\ - movs r2, 0x80\n\ - lsls r2, 24\n\ - orrs r1, r2\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080A11B8\n\ - .align 2, 0\n\ -_080A1178: .4byte 0x040000d4\n\ -_080A117C: .4byte 0x80000800\n\ -_080A1180: .4byte 0xfffff000\n\ -_080A1184: .4byte 0x0000024a\n\ -_080A1188: .4byte 0x0600ec80\n\ -_080A118C:\n\ - ldr r2, _080A11E4 @ =0x040000d4\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - ldr r0, _080A11E8 @ =0x80000800\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - adds r3, r0\n\ - adds r4, r0\n\ - ldr r5, _080A11EC @ =0xfffff000\n\ - adds r1, r5\n\ - cmp r1, r0\n\ - bhi _080A118C\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - lsrs r0, r1, 1\n\ - movs r1, 0x80\n\ - lsls r1, 24\n\ - orrs r0, r1\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ -_080A11B8:\n\ - movs r1, 0x2\n\ - ldrsh r0, [r6, r1]\n\ - ldr r1, _080A11F0 @ =0x0000026a\n\ - subs r1, r0\n\ - lsls r1, 1\n\ - adds r3, r1, r7\n\ - ldr r4, _080A11F4 @ =0x0600ecc0\n\ - lsls r1, r0, 1\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - cmp r1, r0\n\ - bhi _080A11F8\n\ - ldr r0, _080A11E4 @ =0x040000d4\n\ - str r3, [r0]\n\ - str r4, [r0, 0x4]\n\ - lsrs r1, 1\n\ - movs r2, 0x80\n\ - lsls r2, 24\n\ - orrs r1, r2\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080A1224\n\ - .align 2, 0\n\ -_080A11E4: .4byte 0x040000d4\n\ -_080A11E8: .4byte 0x80000800\n\ -_080A11EC: .4byte 0xfffff000\n\ -_080A11F0: .4byte 0x0000026a\n\ -_080A11F4: .4byte 0x0600ecc0\n\ -_080A11F8:\n\ - ldr r2, _080A12B0 @ =0x040000d4\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - ldr r0, _080A12B4 @ =0x80000800\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - adds r3, r0\n\ - adds r4, r0\n\ - ldr r5, _080A12B8 @ =0xfffff000\n\ - adds r1, r5\n\ - cmp r1, r0\n\ - bhi _080A11F8\n\ - str r3, [r2]\n\ - str r4, [r2, 0x4]\n\ - lsrs r0, r1, 1\n\ - movs r1, 0x80\n\ - lsls r1, 24\n\ - orrs r0, r1\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ -_080A1224:\n\ - ldrb r4, [r6, 0x2]\n\ - ldrh r7, [r6, 0x2]\n\ - ldrh r0, [r6]\n\ - mov r12, r0\n\ - cmp r4, 0x9\n\ - bhi _080A1272\n\ - adds r3, r6, 0x4\n\ - ldr r2, _080A12B0 @ =0x040000d4\n\ - ldr r5, _080A12BC @ =0x80000001\n\ -_080A1236:\n\ - lsls r1, r4, 1\n\ - ldr r6, _080A12C0 @ =0x0600e480\n\ - adds r0, r1, r6\n\ - str r3, [r2]\n\ - str r0, [r2, 0x4]\n\ - str r5, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - adds r6, 0x40\n\ - adds r0, r1, r6\n\ - str r3, [r2]\n\ - str r0, [r2, 0x4]\n\ - str r5, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - ldr r6, _080A12C4 @ =0x0600ec80\n\ - adds r0, r1, r6\n\ - str r3, [r2]\n\ - str r0, [r2, 0x4]\n\ - str r5, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - ldr r0, _080A12C8 @ =0x0600ecc0\n\ - adds r1, r0\n\ - str r3, [r2]\n\ - str r1, [r2, 0x4]\n\ - str r5, [r2, 0x8]\n\ - ldr r0, [r2, 0x8]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x9\n\ - bls _080A1236\n\ -_080A1272:\n\ - mov r1, r12\n\ - lsls r0, r1, 16\n\ - cmp r0, 0\n\ - beq _080A1286\n\ - lsls r0, r7, 16\n\ - asrs r0, 16\n\ - cmp r0, 0\n\ - ble _080A1286\n\ - cmp r0, 0x9\n\ - ble _080A12A4\n\ -_080A1286:\n\ - lsls r0, r7, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x9\n\ - ble _080A129A\n\ - ldr r0, _080A12CC @ =gOtherText_Status\n\ - movs r1, 0xD\n\ - movs r2, 0x1\n\ - movs r3, 0x12\n\ - bl SummaryScreen_PrintColoredText\n\ -_080A129A:\n\ - bl sub_80A1D18\n\ - mov r0, r8\n\ - bl DestroyTask\n\ -_080A12A4:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080A12B0: .4byte 0x040000d4\n\ -_080A12B4: .4byte 0x80000800\n\ -_080A12B8: .4byte 0xfffff000\n\ -_080A12BC: .4byte 0x80000001\n\ -_080A12C0: .4byte 0x0600e480\n\ -_080A12C4: .4byte 0x0600ec80\n\ -_080A12C8: .4byte 0x0600ecc0\n\ -_080A12CC: .4byte gOtherText_Status\n\ - .syntax divided\n"); + s16 * data = gTasks[taskId].data; + u8 i; + + data[1] += data[0]; + if (data[1] != 0) + { + DmaCopyLargeCheckFirst16(&gUnknown_08E73508[0x24A - data[1]], (void *)(BG_SCREEN_ADDR(28) + 0x480), data[1] * 2); + DmaCopyLargeCheckFirst16(&gUnknown_08E73508[0x26A - data[1]], (void *)(BG_SCREEN_ADDR(28) + 0x4C0), data[1] * 2); + DmaCopyLargeCheckFirst16(&gUnknown_08E73508[0x24A - data[1]], (void *)(BG_SCREEN_ADDR(29) + 0x480), data[1] * 2); + DmaCopyLargeCheckFirst16(&gUnknown_08E73508[0x26A - data[1]], (void *)(BG_SCREEN_ADDR(29) + 0x4C0), data[1] * 2); + } + for (i = data[1]; i < 10; i++) + { + DmaCopy16Defvars(3, &data[2], (void *)(BG_SCREEN_ADDR(28) + 0x480 + 2 * i), 2); + DmaCopy16Defvars(3, &data[2], (void *)(BG_SCREEN_ADDR(28) + 0x4C0 + 2 * i), 2); + DmaCopy16Defvars(3, &data[2], (void *)(BG_SCREEN_ADDR(29) + 0x480 + 2 * i), 2); + DmaCopy16Defvars(3, &data[2], (void *)(BG_SCREEN_ADDR(29) + 0x4C0 + 2 * i), 2); + } + if (data[0] == 0 || data[1] <= 0 || data[1] >= 10) + { + if (data[1] >= 10) + SummaryScreen_PrintColoredText(gOtherText_Status, 13, 1, 18); + sub_80A1D18(); + DestroyTask(taskId); + } } static void sub_80A12D0(s8 a) diff --git a/src/pokenav.c b/src/pokenav.c index 8a498e954..77b8f57ef 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -25,6 +25,7 @@ #include "constants/flags.h" #include "constants/game_stat.h" #include "pokenav.h" +#include "constants/rgb.h" // Static type declarations @@ -462,198 +463,46 @@ void sub_80EF58C(u8 a) } } -#ifdef NONMATCHING void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) { - u16 red1, green1, blue1; - u16 red2, green2, blue2; - s32 redDiv, greenDiv, blueDiv; - u16 *palettes2; - u16 i, j; - - i = 0; - while (i < d) - { - red1 = (*a & 0x1F) << 8; - green1 = ((*a >> 5) & 0x1F) << 8; - blue1 = ((*a >> 10) & 0x1F) << 8; - - red2 = (*b & 0x1F) << 8; - green2 = ((*b >> 5) & 0x1F) << 8; - blue2 = ((*b >> 10) & 0x1F) << 8; - - redDiv = (red2 - red1) / c; - greenDiv = (green2 - green1) / c; - blueDiv = (blue2 - blue1) / c; - - palettes2 = palettes; + u16 i; + u16 j; + u16 * r3; + + for (i = 0; i < d; i++) + { + s32 r1 = Q_24_8(GET_R(*a)); + s32 g1 = Q_24_8(GET_G(*a)); + s32 b1 = Q_24_8(GET_B(*a)); + s32 r2 = Q_24_8(GET_R(*b)); + s32 g2 = Q_24_8(GET_G(*b)); + s32 b2 = Q_24_8(GET_B(*b)); + s32 dr = (r2 - r1) / c; + s32 dg = (g2 - g1) / c; + s32 db = (b2 - b1) / c; + u16 rf, gf, bf; + + r3 = palettes; for (j = 0; j < c - 1; j++) { - *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16); - palettes2 += d; - red1 += redDiv; - green1 += greenDiv; - blue1 += blueDiv; + rf = Q_24_8_TO_INT(r1); + gf = Q_24_8_TO_INT(g1); + bf = Q_24_8_TO_INT(b1); + *r3 = RGB2(rf, gf, bf); + r3 += d; + r1 += dr; + g1 += dg; + b1 += db; } - - *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3); - palettes++; - + rf = Q_24_8_TO_INT(r2); + gf = Q_24_8_TO_INT(g2); + bf = Q_24_8_TO_INT(b2); + *r3 = RGB2(rf, gf, bf); a++; b++; - i++; + palettes++; } } -#else -NAKED -void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) -{ - 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, 0x38\n\ - str r0, [sp]\n\ - str r1, [sp, 0x4]\n\ - ldr r4, [sp, 0x58]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x8]\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - str r3, [sp, 0xC]\n\ - movs r0, 0\n\ - str r0, [sp, 0x10]\n\ - lsls r0, r3, 16\n\ - ldr r1, [sp, 0x10]\n\ - cmp r1, r3\n\ - bcs _080EF72E\n\ - subs r2, 0x1\n\ - str r2, [sp, 0x20]\n\ - str r0, [sp, 0x2C]\n\ -_080EF654:\n\ - ldr r2, [sp]\n\ - ldrh r1, [r2]\n\ - movs r0, 0x1F\n\ - ands r0, r1\n\ - lsls r7, r0, 8\n\ - lsls r1, 16\n\ - lsrs r0, r1, 21\n\ - movs r2, 0x1F\n\ - ands r0, r2\n\ - lsls r6, r0, 8\n\ - lsrs r1, 26\n\ - ands r1, r2\n\ - lsls r5, r1, 8\n\ - ldr r0, [sp, 0x4]\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1F\n\ - ands r0, r1\n\ - lsls r0, 8\n\ - str r0, [sp, 0x14]\n\ - lsls r1, 16\n\ - lsrs r0, r1, 21\n\ - ands r0, r2\n\ - lsls r0, 8\n\ - str r0, [sp, 0x18]\n\ - lsrs r1, 26\n\ - ands r1, r2\n\ - lsls r1, 8\n\ - str r1, [sp, 0x1C]\n\ - ldr r1, [sp, 0x14]\n\ - subs r0, r1, r7\n\ - ldr r1, [sp, 0x8]\n\ - bl __divsi3\n\ - mov r10, r0\n\ - ldr r2, [sp, 0x18]\n\ - subs r0, r2, r6\n\ - ldr r1, [sp, 0x8]\n\ - bl __divsi3\n\ - mov r9, r0\n\ - ldr r1, [sp, 0x1C]\n\ - subs r0, r1, r5\n\ - ldr r1, [sp, 0x8]\n\ - bl __divsi3\n\ - mov r8, r0\n\ - adds r3, r4, 0\n\ - movs r4, 0\n\ - ldr r2, [sp]\n\ - adds r2, 0x2\n\ - str r2, [sp, 0x30]\n\ - ldr r0, [sp, 0x4]\n\ - adds r0, 0x2\n\ - str r0, [sp, 0x34]\n\ - adds r1, r3, 0x2\n\ - str r1, [sp, 0x24]\n\ - ldr r2, [sp, 0x10]\n\ - adds r2, 0x1\n\ - str r2, [sp, 0x28]\n\ - ldr r0, [sp, 0x20]\n\ - cmp r4, r0\n\ - bge _080EF700\n\ - ldr r1, [sp, 0xC]\n\ - lsls r1, 1\n\ - mov r12, r1\n\ -_080EF6D6:\n\ - lsls r0, r7, 8\n\ - lsrs r2, r0, 16\n\ - lsls r0, r6, 8\n\ - lsrs r1, r0, 16\n\ - lsls r0, r5, 8\n\ - lsrs r0, 16\n\ - lsls r0, 10\n\ - lsls r1, 5\n\ - orrs r0, r1\n\ - orrs r2, r0\n\ - strh r2, [r3]\n\ - add r3, r12\n\ - add r7, r10\n\ - add r6, r9\n\ - add r5, r8\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - ldr r2, [sp, 0x20]\n\ - cmp r4, r2\n\ - blt _080EF6D6\n\ -_080EF700:\n\ - ldr r4, [sp, 0x14]\n\ - lsrs r2, r4, 8\n\ - ldr r1, [sp, 0x1C]\n\ - lsls r0, r1, 2\n\ - ldr r4, [sp, 0x18]\n\ - lsrs r1, r4, 3\n\ - orrs r0, r1\n\ - orrs r2, r0\n\ - strh r2, [r3]\n\ - ldr r0, [sp, 0x30]\n\ - str r0, [sp]\n\ - ldr r1, [sp, 0x34]\n\ - str r1, [sp, 0x4]\n\ - ldr r4, [sp, 0x24]\n\ - ldr r2, [sp, 0x28]\n\ - lsls r0, r2, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x10]\n\ - ldr r1, [sp, 0x2C]\n\ - lsrs r0, r1, 16\n\ - ldr r2, [sp, 0x10]\n\ - cmp r2, r0\n\ - bcc _080EF654\n\ -_080EF72E:\n\ - add sp, 0x38\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\n"); -} -#endif // NONMATCHING void sub_80EF740(void) { @@ -1388,109 +1237,25 @@ void sub_80F0954(u16 arg0, u16 arg1, u16 arg2) gPokenavStructPtr->unk8786 = 0; } -#ifdef NONMATCHING bool8 sub_80F098C(void) { - register u16 zero asm("r8"); - if (!gPokenavStructPtr->unk8784) - { - DONE: + s32 r8; + if (gPokenavStructPtr->unk8784 == 0) return FALSE; + r8 = 0; + while (1) + { + gUnknown_083E3270[gPokenavStructPtr->unk87CA](gPokenavStructPtr->unk877E, gPokenavStructPtr->unk8780); + if (--gPokenavStructPtr->unk8784 == 0) + return FALSE; + if (++gPokenavStructPtr->unk877E > gPokenavStructPtr->unk8774) + gPokenavStructPtr->unk877E = r8; + gPokenavStructPtr->unk8780 += 2; + gPokenavStructPtr->unk8780 &= 0x1F; + break; } - - zero = 0; - gUnknown_083E3270[gPokenavStructPtr->unk87CA](gPokenavStructPtr->unk877E, gPokenavStructPtr->unk8780); - if (!--gPokenavStructPtr->unk8784) - goto DONE; - - if ((++gPokenavStructPtr->unk877E & 0xFFFF) > gPokenavStructPtr->unk8774) - gPokenavStructPtr->unk877E = zero; - - gPokenavStructPtr->unk8780 += 2; - gPokenavStructPtr->unk8780 &= 0x1F; return TRUE; } -#else -NAKED -bool8 sub_80F098C(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - ldr r0, _080F09A4 @ =gPokenavStructPtr\n\ - ldr r6, [r0]\n\ - ldr r0, _080F09A8 @ =0x00008784\n\ - adds r7, r6, r0\n\ - ldrh r0, [r7]\n\ - cmp r0, 0\n\ - bne _080F09AC\n\ -_080F09A0:\n\ - movs r0, 0\n\ - b _080F0A02\n\ - .align 2, 0\n\ -_080F09A4: .4byte gPokenavStructPtr\n\ -_080F09A8: .4byte 0x00008784\n\ -_080F09AC:\n\ - movs r1, 0\n\ - mov r8, r1\n\ - ldr r1, _080F0A0C @ =gUnknown_083E3270\n\ - ldr r2, _080F0A10 @ =0x000087ca\n\ - adds r0, r6, r2\n\ - ldrb r2, [r0]\n\ - lsls r2, 2\n\ - adds r2, r1\n\ - ldr r0, _080F0A14 @ =0x0000877e\n\ - adds r4, r6, r0\n\ - ldrh r0, [r4]\n\ - ldr r1, _080F0A18 @ =0x00008780\n\ - adds r5, r6, r1\n\ - ldrh r1, [r5]\n\ - ldr r2, [r2]\n\ - bl _call_via_r2\n\ - ldrh r0, [r7]\n\ - subs r0, 0x1\n\ - strh r0, [r7]\n\ - ldr r2, _080F0A1C @ =0x0000ffff\n\ - adds r1, r2, 0\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080F09A0\n\ - ldrh r0, [r4]\n\ - adds r0, 0x1\n\ - strh r0, [r4]\n\ - ands r0, r1\n\ - ldr r2, _080F0A20 @ =0x00008774\n\ - adds r1, r6, r2\n\ - movs r2, 0\n\ - ldrsh r1, [r1, r2]\n\ - cmp r0, r1\n\ - ble _080F09F6\n\ - mov r0, r8\n\ - strh r0, [r4]\n\ -_080F09F6:\n\ - ldrh r0, [r5]\n\ - adds r0, 0x2\n\ - movs r1, 0x1F\n\ - ands r0, r1\n\ - strh r0, [r5]\n\ - movs r0, 0x1\n\ -_080F0A02:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080F0A0C: .4byte gUnknown_083E3270\n\ -_080F0A10: .4byte 0x000087ca\n\ -_080F0A14: .4byte 0x0000877e\n\ -_080F0A18: .4byte 0x00008780\n\ -_080F0A1C: .4byte 0x0000ffff\n\ -_080F0A20: .4byte 0x00008774\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80F0A24(u16 arg0, u16 arg1) { @@ -1614,244 +1379,53 @@ void LoadTrainerEyesDescriptionLines(void) } } -#ifdef NONMATCHING -// small register mismatch (r2/r3) on the line where var0 is set. bool8 sub_80F0D5C(void) { - int var0; + u32 r5; + if (gPokenavStructPtr->unkD15C == 7) return FALSE; - - if (++gPokenavStructPtr->unk306 > 1) - { - gPokenavStructPtr->unk306 = 0; - BasicInitMenuWindow(&gWindowTemplate_81E70D4); - var0 = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F; - switch (gPokenavStructPtr->unkD15C) - { - case 0: - Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0); - break; - case 1: - AlignStringInMenuWindow( - gPokenavStructPtr->unk8788, - gPokenavStructPtr->trainerEyeDescriptionLines[0], - 136, - 0); - Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0); - break; - case 2: - Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0); - break; - case 3: - AlignStringInMenuWindow( - gPokenavStructPtr->unk8788, - gPokenavStructPtr->trainerEyeDescriptionLines[1], - 136, - 0); - Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0); - break; - case 4: - Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0); - break; - case 5: - AlignStringInMenuWindow( - gPokenavStructPtr->unk8788, - gPokenavStructPtr->trainerEyeDescriptionLines[2], - 136, - 0); - Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0); - break; - case 6: - AlignStringInMenuWindow( - gPokenavStructPtr->unk8788, - gPokenavStructPtr->trainerEyeDescriptionLines[3], - 136, - 0); - Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 97, var0 * 8, 0); - default: - return FALSE; - } - - gPokenavStructPtr->unkD15C++; + if (++gPokenavStructPtr->unk306 < 2) return TRUE; - } - else + gPokenavStructPtr->unk306 = 0; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + r5 = (gPokenavStructPtr->unk8778 + 2 + gPokenavStructPtr->unkD15C * 2) & 0x1F; +#ifndef NONMATCHING + asm("":::"r2"); // fakematch +#endif //NONMATCHING + switch (gPokenavStructPtr->unkD15C) { - return TRUE; + default: + return FALSE; + case 0: + Menu_PrintTextPixelCoords(gOtherText_Strategy, 0x61, r5 * 8, 0); + break; + case 1: + AlignStringInMenuWindow(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainerEyeDescriptionLines[0], 0x88, 0); + Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 0x61, r5 * 8, 0); + break; + case 2: + Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 0x61, r5 * 8, 0); + break; + case 3: + AlignStringInMenuWindow(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainerEyeDescriptionLines[1], 0x88, 0); + Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 0x61, r5 * 8, 0); + break; + case 4: + Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 0x61, r5 * 8, 0); + break; + case 5: + AlignStringInMenuWindow(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainerEyeDescriptionLines[2], 0x88, 0); + Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 0x61, r5 * 8, 0); + break; + case 6: + AlignStringInMenuWindow(gPokenavStructPtr->unk8788, gPokenavStructPtr->trainerEyeDescriptionLines[3], 0x88, 0); + Menu_PrintTextPixelCoords(gPokenavStructPtr->unk8788, 0x61, r5 * 8, 0); + return FALSE; } + gPokenavStructPtr->unkD15C++; + return TRUE; } -#else -NAKED -bool8 sub_80F0D5C(void) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - ldr r0, _080F0D70 @ =gPokenavStructPtr\n\ - ldr r4, [r0]\n\ - ldr r0, _080F0D74 @ =0x0000d15c\n\ - adds r5, r4, r0\n\ - ldrh r0, [r5]\n\ - cmp r0, 0x7\n\ - bne _080F0D78\n\ -_080F0D6C:\n\ - movs r0, 0\n\ - b _080F0EB0\n\ - .align 2, 0\n\ -_080F0D70: .4byte gPokenavStructPtr\n\ -_080F0D74: .4byte 0x0000d15c\n\ -_080F0D78:\n\ - ldr r0, _080F0DB8 @ =0x00000306\n\ - adds r1, r4, r0\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _080F0D8C\n\ - b _080F0EAE\n\ -_080F0D8C:\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\ - bl BasicInitMenuWindow\n\ - ldr r0, _080F0DC0 @ =0x00008778\n\ - adds r1, r4, r0\n\ - ldrh r3, [r5]\n\ - lsls r0, r3, 1\n\ - adds r0, 0x2\n\ - ldrh r1, [r1]\n\ - adds r5, r0, r1\n\ - movs r0, 0x1F\n\ - ands r5, r0\n\ - cmp r3, 0x6\n\ - bhi _080F0D6C\n\ - lsls r0, r3, 2\n\ - ldr r1, _080F0DC4 @ =_080F0DC8\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080F0DB8: .4byte 0x00000306\n\ -_080F0DBC: .4byte gWindowTemplate_81E70D4\n\ -_080F0DC0: .4byte 0x00008778\n\ -_080F0DC4: .4byte _080F0DC8\n\ - .align 2, 0\n\ -_080F0DC8:\n\ - .4byte _080F0DE4\n\ - .4byte _080F0DF0\n\ - .4byte _080F0E08\n\ - .4byte _080F0E14\n\ - .4byte _080F0E2C\n\ - .4byte _080F0E38\n\ - .4byte _080F0E6C\n\ -_080F0DE4:\n\ - ldr r0, _080F0DEC @ =gOtherText_Strategy\n\ - lsls r2, r5, 3\n\ - b _080F0E54\n\ - .align 2, 0\n\ -_080F0DEC: .4byte gOtherText_Strategy\n\ -_080F0DF0:\n\ - ldr r0, _080F0DFC @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _080F0E00 @ =0x00008788\n\ - adds r4, r0, r1\n\ - ldr r1, _080F0E04 @ =0x0000d110\n\ - b _080F0E42\n\ - .align 2, 0\n\ -_080F0DFC: .4byte gPokenavStructPtr\n\ -_080F0E00: .4byte 0x00008788\n\ -_080F0E04: .4byte 0x0000d110\n\ -_080F0E08:\n\ - ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\ - lsls r2, r5, 3\n\ - b _080F0E54\n\ - .align 2, 0\n\ -_080F0E10: .4byte gOtherText_TrainersPokemon\n\ -_080F0E14:\n\ - ldr r0, _080F0E20 @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _080F0E24 @ =0x00008788\n\ - adds r4, r0, r1\n\ - ldr r1, _080F0E28 @ =0x0000d114\n\ - b _080F0E42\n\ - .align 2, 0\n\ -_080F0E20: .4byte gPokenavStructPtr\n\ -_080F0E24: .4byte 0x00008788\n\ -_080F0E28: .4byte 0x0000d114\n\ -_080F0E2C:\n\ - ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\ - lsls r2, r5, 3\n\ - b _080F0E54\n\ - .align 2, 0\n\ -_080F0E34: .4byte gOtherText_SelfIntroduction\n\ -_080F0E38:\n\ - ldr r0, _080F0E60 @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _080F0E64 @ =0x00008788\n\ - adds r4, r0, r1\n\ - ldr r1, _080F0E68 @ =0x0000d118\n\ -_080F0E42:\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - movs r2, 0x88\n\ - movs r3, 0\n\ - bl AlignStringInMenuWindow\n\ - lsls r2, r5, 3\n\ - adds r0, r4, 0\n\ -_080F0E54:\n\ - movs r1, 0x61\n\ - movs r3, 0\n\ - bl Menu_PrintTextPixelCoords\n\ - b _080F0EA0\n\ - .align 2, 0\n\ -_080F0E60: .4byte gPokenavStructPtr\n\ -_080F0E64: .4byte 0x00008788\n\ -_080F0E68: .4byte 0x0000d118\n\ -_080F0E6C:\n\ - ldr r0, _080F0E94 @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - ldr r1, _080F0E98 @ =0x00008788\n\ - adds r4, r0, r1\n\ - ldr r1, _080F0E9C @ =0x0000d11c\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - movs r2, 0x88\n\ - movs r3, 0\n\ - bl AlignStringInMenuWindow\n\ - lsls r2, r5, 3\n\ - adds r0, r4, 0\n\ - movs r1, 0x61\n\ - movs r3, 0\n\ - bl Menu_PrintTextPixelCoords\n\ - b _080F0D6C\n\ - .align 2, 0\n\ -_080F0E94: .4byte gPokenavStructPtr\n\ -_080F0E98: .4byte 0x00008788\n\ -_080F0E9C: .4byte 0x0000d11c\n\ -_080F0EA0:\n\ - ldr r0, _080F0EB8 @ =gPokenavStructPtr\n\ - ldr r1, [r0]\n\ - ldr r0, _080F0EBC @ =0x0000d15c\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ -_080F0EAE:\n\ - movs r0, 0x1\n\ -_080F0EB0:\n\ - pop {r4,r5}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080F0EB8: .4byte gPokenavStructPtr\n\ -_080F0EBC: .4byte 0x0000d15c\n\ - .syntax divided\n"); -} -#endif void sub_80F0EC0(void) { @@ -2320,11 +1894,8 @@ void sub_80F1B8C(u8 arg0) while (sub_80F1BC8(arg0)); } -#ifdef NONMATCHING -// very close, but for some reason, (i + 1) is being stored in sp[0x10] bool8 sub_80F1BC8(u8 arg0) { - u16 i, j; u16 animNum; u16 topOffset; u16 height; @@ -2334,12 +1905,19 @@ bool8 sub_80F1BC8(u8 arg0) switch (gPokenavStructPtr->unk306) { case 0: + { sub_80F2458(arg0); break; + } case 1: + { sub_80F2514(arg0); break; + } case 2: + { + u16 i, j; + switch (arg0) { case 0: @@ -2383,20 +1961,22 @@ bool8 sub_80F1BC8(u8 arg0) for (j = 0; j < 4; j++) { spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0); - if (spriteId != MAX_SPRITES) + if (spriteId == MAX_SPRITES) + return FALSE; + gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId]; + gPokenavStructPtr->unk320[i][j]->data[0] = i; + gPokenavStructPtr->unk320[i][j]->data[1] = j; + gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152; + gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256; + StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++); + + if ((arg0 == 2 || arg0 == 0) && i > 2) { - gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId]; - gPokenavStructPtr->unk320[i][j]->data[0] = i; - gPokenavStructPtr->unk320[i][j]->data[1] = j; - gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152; - gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256; - StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++); - - if ((arg0 == 2 || arg0 == 0) && i > 2) - gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); + gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); } } } + } break; default: return FALSE; @@ -2405,297 +1985,6 @@ bool8 sub_80F1BC8(u8 arg0) gPokenavStructPtr->unk306++; return TRUE; } -#else -NAKED -bool8 sub_80F1BC8(u8 arg0) -{ - 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, 0xC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - ldr r1, _080F1BF4 @ =gPokenavStructPtr\n\ - ldr r2, [r1]\n\ - ldr r3, _080F1BF8 @ =0x00000306\n\ - adds r0, r2, r3\n\ - ldrh r0, [r0]\n\ - adds r3, r1, 0\n\ - cmp r0, 0x1\n\ - beq _080F1C0A\n\ - cmp r0, 0x1\n\ - bgt _080F1BFC\n\ - cmp r0, 0\n\ - beq _080F1C02\n\ - b _080F1DC4\n\ - .align 2, 0\n\ -_080F1BF4: .4byte gPokenavStructPtr\n\ -_080F1BF8: .4byte 0x00000306\n\ -_080F1BFC:\n\ - cmp r0, 0x2\n\ - beq _080F1C12\n\ - b _080F1DC4\n\ -_080F1C02:\n\ - mov r0, r9\n\ - bl sub_80F2458\n\ - b _080F1DC8\n\ -_080F1C0A:\n\ - mov r0, r9\n\ - bl sub_80F2514\n\ - b _080F1DC8\n\ -_080F1C12:\n\ - mov r4, r9\n\ - cmp r4, 0x1\n\ - beq _080F1C40\n\ - cmp r4, 0x1\n\ - bgt _080F1C22\n\ - cmp r4, 0\n\ - beq _080F1C2A\n\ - b _080F1DC4\n\ -_080F1C22:\n\ - mov r5, r9\n\ - cmp r5, 0x2\n\ - beq _080F1C54\n\ - b _080F1DC4\n\ -_080F1C2A:\n\ - movs r0, 0x2A\n\ - str r0, [sp, 0x4]\n\ - movs r1, 0x14\n\ - str r1, [sp, 0x8]\n\ - ldr r4, _080F1C3C @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x5\n\ - b _080F1C62\n\ - .align 2, 0\n\ -_080F1C3C: .4byte 0x0000030e\n\ -_080F1C40:\n\ - movs r5, 0x38\n\ - str r5, [sp, 0x4]\n\ - movs r0, 0x14\n\ - str r0, [sp, 0x8]\n\ - ldr r4, _080F1C50 @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x3\n\ - b _080F1C62\n\ - .align 2, 0\n\ -_080F1C50: .4byte 0x0000030e\n\ -_080F1C54:\n\ - movs r5, 0x28\n\ - str r5, [sp, 0x4]\n\ - movs r0, 0x10\n\ - str r0, [sp, 0x8]\n\ - ldr r4, _080F1CDC @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x6\n\ -_080F1C62:\n\ - strb r0, [r1]\n\ - movs r5, 0\n\ - str r5, [sp]\n\ - mov r8, r5\n\ - adds r1, r3, 0\n\ - ldr r0, [r1]\n\ - ldr r2, _080F1CDC @ =0x0000030e\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r8, r0\n\ - blt _080F1C7E\n\ - b _080F1DC8\n\ -_080F1C7E:\n\ - ldr r4, [sp, 0x8]\n\ - mov r3, r8\n\ - muls r3, r4\n\ - ldr r5, [sp, 0x4]\n\ - adds r0, r5, r3\n\ - subs r0, 0x8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - ldr r4, [r1]\n\ - mov r2, r8\n\ - lsls r1, r2, 1\n\ - movs r5, 0xC5\n\ - lsls r5, 2\n\ - adds r2, r4, r5\n\ - adds r2, r1\n\ - lsls r1, r0, 8\n\ - adds r0, 0x11\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - mov r0, r9\n\ - cmp r0, 0\n\ - bne _080F1CF2\n\ - ldr r1, _080F1CE0 @ =0x00006db2\n\ - adds r0, r4, r1\n\ - mov r2, r8\n\ - adds r1, r0, r2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0\n\ - bne _080F1CE8\n\ - movs r5, 0\n\ - ldr r0, _080F1CE4 @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - lsls r2, 4\n\ - movs r3, 0xC8\n\ - lsls r3, 2\n\ - adds r1, r0, r3\n\ - movs r3, 0\n\ -_080F1CC8:\n\ - lsls r0, r5, 2\n\ - adds r0, r2\n\ - adds r0, r1, r0\n\ - str r3, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x3\n\ - bls _080F1CC8\n\ - b _080F1D92\n\ - .align 2, 0\n\ -_080F1CDC: .4byte 0x0000030e\n\ -_080F1CE0: .4byte 0x00006db2\n\ -_080F1CE4: .4byte gPokenavStructPtr\n\ -_080F1CE8:\n\ - ldrb r0, [r1]\n\ - subs r0, 0x1\n\ - lsls r0, 18\n\ - lsrs r0, 16\n\ - str r0, [sp]\n\ -_080F1CF2:\n\ - movs r5, 0\n\ - ldr r4, [sp, 0x4]\n\ - adds r0, r4, r3\n\ - lsls r0, 16\n\ - mov r10, r0\n\ -_080F1CFC:\n\ - lsls r6, r5, 5\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - adds r7, r6, r0\n\ - lsls r1, r7, 16\n\ - asrs r1, 16\n\ - ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\ - mov r3, r10\n\ - asrs r2, r3, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - cmp r3, 0x40\n\ - beq _080F1DC4\n\ - ldr r0, _080F1DB8 @ =gPokenavStructPtr\n\ - ldr r2, [r0]\n\ - lsls r1, r5, 2\n\ - mov r4, r8\n\ - lsls r0, r4, 4\n\ - adds r1, r0\n\ - movs r0, 0xC8\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - adds r4, r2, r1\n\ - lsls r0, r3, 4\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - ldr r1, _080F1DBC @ =gSprites\n\ - adds r0, r1\n\ - str r0, [r4]\n\ - mov r1, r8\n\ - strh r1, [r0, 0x2E]\n\ - ldr r0, [r4]\n\ - strh r5, [r0, 0x30]\n\ - ldr r1, [r4]\n\ - adds r0, r6, 0\n\ - adds r0, 0x98\n\ - strh r0, [r1, 0x32]\n\ - ldr r0, [r4]\n\ - strh r7, [r0, 0x34]\n\ - ldr r0, [r4]\n\ - ldr r1, [sp]\n\ - adds r2, r1, 0x1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - bl StartSpriteAnim\n\ - mov r2, r9\n\ - cmp r2, 0x2\n\ - beq _080F1D6E\n\ - cmp r2, 0\n\ - bne _080F1D88\n\ -_080F1D6E:\n\ - mov r3, r8\n\ - cmp r3, 0x2\n\ - bls _080F1D88\n\ - movs r0, 0x1\n\ - bl IndexOfSpritePaletteTag\n\ - ldr r3, [r4]\n\ - lsls r0, 4\n\ - ldrb r2, [r3, 0x5]\n\ - movs r1, 0xF\n\ - ands r1, r2\n\ - orrs r1, r0\n\ - strb r1, [r3, 0x5]\n\ -_080F1D88:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x3\n\ - bls _080F1CFC\n\ -_080F1D92:\n\ - mov r0, r8\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - ldr r1, _080F1DB8 @ =gPokenavStructPtr\n\ - ldr r0, [r1]\n\ - ldr r4, _080F1DC0 @ =0x0000030e\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r8, r0\n\ - bge _080F1DB0\n\ - b _080F1C7E\n\ -_080F1DB0:\n\ - b _080F1DC8\n\ - .align 2, 0\n\ -_080F1DB4: .4byte gSpriteTemplate_83E4454\n\ -_080F1DB8: .4byte gPokenavStructPtr\n\ -_080F1DBC: .4byte gSprites\n\ -_080F1DC0: .4byte 0x0000030e\n\ -_080F1DC4:\n\ - movs r0, 0\n\ - b _080F1DD8\n\ -_080F1DC8:\n\ - ldr r0, _080F1DE8 @ =gPokenavStructPtr\n\ - ldr r1, [r0]\n\ - ldr r5, _080F1DEC @ =0x00000306\n\ - adds r1, r5\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ - movs r0, 0x1\n\ -_080F1DD8:\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080F1DE8: .4byte gPokenavStructPtr\n\ -_080F1DEC: .4byte 0x00000306\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80F1DF0(void) { @@ -4244,8 +3533,6 @@ void sub_80F4138(struct Sprite *sprite) } } -#ifdef NONMATCHING -// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function. void sub_80F4194(u8 *arg0, u8 *text) { u8 i; @@ -4283,162 +3570,10 @@ void sub_80F4194(u8 *arg0, u8 *text) for (i = 0; i < 5; i++) { DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128); + i++;i--; // fakematch DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128); } } -#else -NAKED -void sub_80F4194(u8 *arg0, u8 *text) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - adds r7, r0, 0\n\ - adds r2, r1, 0\n\ - ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\ - ldr r6, [r0] @ r6 = tileBuffer\n\ - mov r0, sp \n\ - ldr r1, _080F42A8 @ =0x00001111\n\ - adds r5, r1, 0\n\ - strh r5, [r0]\n\ - ldr r4, _080F42AC @ =0x040000d4\n\ - str r0, [r4]\n\ - str r6, [r4, 0x4]\n\ - ldr r3, _080F42B0 @ =0x81000140\n\ - str r3, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - adds r1, r6, r0\n\ - mov r0, sp\n\ - strh r5, [r0]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - str r3, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\ - adds r1, r6, 0\n\ - bl Text_InitWindow8004E3C\n\ - movs r3, 0x88\n\ - lsls r3, 2\n\ - adds r1, r6, r3\n\ - mov r0, sp\n\ - movs r3, 0\n\ - strh r3, [r0]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - ldr r2, _080F42B8 @ =0x81000030\n\ - str r2, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - movs r0, 0xC4\n\ - lsls r0, 3\n\ - adds r1, r6, r0\n\ - mov r0, sp\n\ - strh r3, [r0]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - str r2, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - movs r1, 0x80\n\ - lsls r1, 2\n\ - adds r2, r6, r1\n\ - ldr r0, [r2]\n\ - ldr r1, _080F42BC @ =0x0fffffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, [r2, 0x4]\n\ - ands r0, r1\n\ - str r0, [r2, 0x4]\n\ - ldr r0, [r2, 0x8]\n\ - ands r0, r1\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0xC]\n\ - ands r0, r1\n\ - str r0, [r2, 0xC]\n\ - ldr r0, [r2, 0x10]\n\ - ands r0, r1\n\ - str r0, [r2, 0x10]\n\ - ldr r0, [r2, 0x14]\n\ - ands r0, r1\n\ - str r0, [r2, 0x14]\n\ - ldr r0, [r2, 0x18]\n\ - ands r0, r1\n\ - str r0, [r2, 0x18]\n\ - ldr r0, [r2, 0x1C]\n\ - ands r0, r1\n\ - str r0, [r2, 0x1C]\n\ - movs r3, 0xC0\n\ - lsls r3, 3\n\ - adds r2, r6, r3\n\ - ldr r0, [r2]\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, [r2, 0x4]\n\ - ands r0, r1\n\ - str r0, [r2, 0x4]\n\ - ldr r0, [r2, 0x8]\n\ - ands r0, r1\n\ - str r0, [r2, 0x8]\n\ - ldr r0, [r2, 0xC]\n\ - ands r0, r1\n\ - str r0, [r2, 0xC]\n\ - ldr r0, [r2, 0x10]\n\ - ands r0, r1\n\ - str r0, [r2, 0x10]\n\ - ldr r0, [r2, 0x14]\n\ - ands r0, r1\n\ - str r0, [r2, 0x14]\n\ - ldr r0, [r2, 0x18]\n\ - ands r0, r1\n\ - str r0, [r2, 0x18]\n\ - ldr r0, [r2, 0x1C]\n\ - ands r0, r1\n\ - str r0, [r2, 0x1C]\n\ - movs r1, 0\n\ - ldr r2, _080F42C0 @ =0x80000040\n\ -_080F4268:\n\ - lsls r0, r1, 7\n\ - adds r0, r6, r0\n\ - str r0, [r4]\n\ - lsls r0, r1, 8\n\ - adds r0, r7, r0\n\ - str r0, [r4, 0x4]\n\ - str r2, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - lsls r0, r1, 7\n\ - movs r3, 0x80\n\ - lsls r3, 3\n\ - adds r0, r3\n\ - adds r0, r6, r0\n\ - str r0, [r4]\n\ - lsls r0, r1, 3\n\ - adds r0, 0x4\n\ - lsls r0, 5\n\ - adds r0, r7, r0\n\ - str r0, [r4, 0x4]\n\ - str r2, [r4, 0x8]\n\ - ldr r0, [r4, 0x8]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x4\n\ - bls _080F4268\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080F42A4: .4byte gUnknown_083DFEC8\n\ -_080F42A8: .4byte 0x00001111\n\ -_080F42AC: .4byte 0x040000d4\n\ -_080F42B0: .4byte 0x81000140\n\ -_080F42B4: .4byte gWindowTemplate_81E70F0\n\ -_080F42B8: .4byte 0x81000030\n\ -_080F42BC: .4byte 0x0fffffff\n\ -_080F42C0: .4byte 0x80000040\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80F42C4(u8 *arg0) { @@ -5084,335 +4219,106 @@ void sub_80F567C(u8 *a0, struct UnkPokenav11 a1[]) sub_80F55AC(a0, a1); } -/* TODO -// emerald: sub_81D2278 -void sub_80F5688(u16 * r6, u16 * r5, u16 * sp0, u8 r9, u16 * r7) -{ - u16 sp04; - u16 r0; - u16 r4; - u16 r10; - if (r5[1] < sp0[1]) - { - sp04 = r5[1]; - r4 = r5[0] << 10; - r0 = sp0[1]; - r10 = sp0[0]; - } -} -*/ - -NAKED -void sub_80F5688(u16 r6[66][2], struct UnkPokenav11 * r5, struct UnkPokenav11 * sp0, u8 r9, u16 r7[66][2]) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x14\n" - "\tadds r6, r0, 0\n" - "\tadds r5, r1, 0\n" - "\tstr r2, [sp]\n" - "\tldr r7, [sp, 0x34]\n" - "\tlsls r3, 24\n" - "\tlsrs r3, 24\n" - "\tmov r9, r3\n" - "\tmovs r0, 0\n" - "\tstr r0, [sp, 0x8]\n" - "\tldrh r0, [r5, 0x2]\n" - "\tldrh r1, [r2, 0x2]\n" - "\tcmp r0, r1\n" - "\tbcs _080F56D0\n" - "\tadds r2, r0, 0\n" - "\tstr r2, [sp, 0x4]\n" - "\tldr r3, [sp]\n" - "\tldrh r0, [r3, 0x2]\n" - "\tldrh r1, [r5]\n" - "\tlsls r4, r1, 10\n" - "\tldrh r2, [r3]\n" - "\tmov r10, r2\n" - "\tldr r3, [sp, 0x4]\n" - "\tsubs r0, r3\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r8, r0\n" - "\tcmp r0, 0\n" - "\tbeq _080F56FC\n" - "\tsubs r0, r2, r1\n" - "\tb _080F56F2\n" - "_080F56D0:\n" - "\tldrh r0, [r5, 0x2]\n" - "\tldr r1, [sp]\n" - "\tldrh r1, [r1, 0x2]\n" - "\tstr r1, [sp, 0x4]\n" - "\tldr r2, [sp]\n" - "\tldrh r1, [r2]\n" - "\tlsls r4, r1, 10\n" - "\tldrh r3, [r5]\n" - "\tmov r10, r3\n" - "\tldr r2, [sp, 0x4]\n" - "\tsubs r0, r2\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r8, r0\n" - "\tcmp r0, 0\n" - "\tbeq _080F56FC\n" - "\tsubs r0, r3, r1\n" - "_080F56F2:\n" - "\tlsls r0, 10\n" - "\tmov r1, r8\n" - "\tbl __divsi3\n" - "\tstr r0, [sp, 0x8]\n" - "_080F56FC:\n" - "\tmov r0, r8\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r8, r0\n" - "\tcmp r7, 0\n" - "\tbne _080F5746\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r6, r0\n" - "\tmovs r5, 0\n" - "\tmov r3, r9\n" - "\tlsls r3, 1\n" - "\tmov r12, r3\n" - "\tmov r0, r10\n" - "\tadd r0, r9\n" - "\tstr r0, [sp, 0xC]\n" - "\tcmp r7, r8\n" - "\tbcs _080F57D4\n" - "\tmovs r7, 0x1\n" - "_080F5726:\n" - "\tadds r2, r3, r6\n" - "\tasrs r1, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tands r0, r7\n" - "\tadds r1, r0\n" - "\tadd r1, r9\n" - "\tstrh r1, [r2]\n" - "\tldr r1, [sp, 0x8]\n" - "\tadds r4, r1\n" - "\tadds r6, 0x4\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, r8\n" - "\tbcc _080F5726\n" - "\tb _080F57D4\n" - "_080F5746:\n" - "\tldr r2, [sp, 0x8]\n" - "\tcmp r2, 0\n" - "\tble _080F57E4\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r7, r0\n" - "\tmovs r5, 0\n" - "\tmov r3, r9\n" - "\tlsls r3, 1\n" - "\tmov r12, r3\n" - "\tmov r0, r10\n" - "\tadd r0, r9\n" - "\tstr r0, [sp, 0xC]\n" - "\tcmp r5, r8\n" - "\tbcs _080F5798\n" - "\tldr r0, _080F57D8 @ =0x00026bff\n" - "\tcmp r4, r0\n" - "\tbgt _080F5798\n" - "\tmov r1, r12\n" - "\tstr r1, [sp, 0x10]\n" - "\tmov r10, r0\n" - "_080F5772:\n" - "\tldr r3, [sp, 0x10]\n" - "\tadds r2, r3, r7\n" - "\tasrs r1, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tmovs r3, 0x1\n" - "\tands r0, r3\n" - "\tadds r1, r0\n" - "\tadd r1, r9\n" - "\tstrh r1, [r2]\n" - "\tldr r0, [sp, 0x8]\n" - "\tadds r4, r0\n" - "\tadds r7, 0x4\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, r8\n" - "\tbcs _080F5798\n" - "\tcmp r4, r10\n" - "\tble _080F5772\n" - "_080F5798:\n" - "\tldr r1, _080F57DC @ =gPokenavStructPtr\n" - "\tldr r0, [r1]\n" - "\tldr r2, [sp, 0x4]\n" - "\tadds r1, r2, r5\n" - "\tldr r3, _080F57E0 @ =0x00009340\n" - "\tadds r0, r3\n" - "\tstrh r1, [r0]\n" - "\tldrh r0, [r0]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r6, r0\n" - "\tcmp r5, r8\n" - "\tbcs _080F57D4\n" - "\tmov r3, r12\n" - "\tmovs r7, 0x1\n" - "_080F57B6:\n" - "\tadds r2, r3, r6\n" - "\tasrs r1, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tands r0, r7\n" - "\tadds r1, r0\n" - "\tadd r1, r9\n" - "\tstrh r1, [r2]\n" - "\tldr r0, [sp, 0x8]\n" - "\tadds r4, r0\n" - "\tadds r6, 0x4\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, r8\n" - "\tbcc _080F57B6\n" - "_080F57D4:\n" - "\tsubs r0, r6, 0x4\n" - "\tb _080F58C4\n" - "\t.align 2, 0\n" - "_080F57D8: .4byte 0x00026bff\n" - "_080F57DC: .4byte gPokenavStructPtr\n" - "_080F57E0: .4byte 0x00009340\n" - "_080F57E4:\n" - "\tldr r1, [sp, 0x8]\n" - "\tcmp r1, 0\n" - "\tbge _080F5890\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r6, r0\n" - "\tmovs r5, 0\n" - "\tmov r2, r9\n" - "\tlsls r2, 1\n" - "\tmov r12, r2\n" - "\tmov r3, r10\n" - "\tadd r3, r9\n" - "\tstr r3, [sp, 0xC]\n" - "\tcmp r5, r8\n" - "\tbcs _080F5842\n" - "\tadds r3, r2, r6\n" - "\tasrs r1, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tmovs r2, 0x1\n" - "\tands r0, r2\n" - "\tadds r1, r0\n" - "\tadd r1, r9\n" - "\tstrh r1, [r3]\n" - "\tb _080F5838\n" - "_080F5816:\n" - "\tldr r0, [sp, 0x8]\n" - "\tadds r4, r0\n" - "\tadds r6, 0x4\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, r8\n" - "\tbcs _080F5842\n" - "\tmov r1, r12\n" - "\tadds r3, r1, r6\n" - "\tasrs r2, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tmovs r1, 0x1\n" - "\tands r0, r1\n" - "\tadds r2, r0\n" - "\tadd r2, r9\n" - "\tstrh r2, [r3]\n" - "_080F5838:\n" - "\tldr r0, _080F5884 @ =0x00026bff\n" - "\tcmp r4, r0\n" - "\tbgt _080F5816\n" - "\tmovs r0, 0x9B\n" - "\tstrh r0, [r3]\n" - "_080F5842:\n" - "\tldr r2, _080F5888 @ =gPokenavStructPtr\n" - "\tldr r0, [r2]\n" - "\tldr r3, [sp, 0x4]\n" - "\tadds r1, r3, r5\n" - "\tldr r2, _080F588C @ =0x00009340\n" - "\tadds r0, r2\n" - "\tstrh r1, [r0]\n" - "\tldrh r0, [r0]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r7, r0\n" - "\tcmp r5, r8\n" - "\tbcs _080F587E\n" - "\tmov r3, r12\n" - "\tmovs r6, 0x1\n" - "_080F5860:\n" - "\tadds r2, r3, r7\n" - "\tasrs r1, r4, 10\n" - "\tasrs r0, r4, 9\n" - "\tands r0, r6\n" - "\tadds r1, r0\n" - "\tadd r1, r9\n" - "\tstrh r1, [r2]\n" - "\tldr r0, [sp, 0x8]\n" - "\tadds r4, r0\n" - "\tadds r7, 0x4\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tcmp r5, r8\n" - "\tbcc _080F5860\n" - "_080F587E:\n" - "\tsubs r0, r7, 0x4\n" - "\tb _080F58C4\n" - "\t.align 2, 0\n" - "_080F5884: .4byte 0x00026bff\n" - "_080F5888: .4byte gPokenavStructPtr\n" - "_080F588C: .4byte 0x00009340\n" - "_080F5890:\n" - "\tldr r0, _080F58BC @ =gPokenavStructPtr\n" - "\tldr r0, [r0]\n" - "\tldr r1, _080F58C0 @ =0x00009340\n" - "\tadds r0, r1\n" - "\tmov r2, sp\n" - "\tldrh r2, [r2, 0x4]\n" - "\tstrh r2, [r0]\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x38\n" - "\tlsls r0, 2\n" - "\tadds r6, r0\n" - "\tadds r7, r0\n" - "\tldrh r0, [r5]\n" - "\tadds r0, 0x1\n" - "\tstrh r0, [r6, 0x2]\n" - "\tldr r3, [sp]\n" - "\tldrh r0, [r3]\n" - "\tstrh r0, [r7]\n" - "\tmovs r0, 0x9B\n" - "\tstrh r0, [r7, 0x2]\n" - "\tb _080F58CC\n" - "\t.align 2, 0\n" - "_080F58BC: .4byte gPokenavStructPtr\n" - "_080F58C0: .4byte 0x00009340\n" - "_080F58C4:\n" - "\tadd r0, r12\n" - "\tmov r1, sp\n" - "\tldrh r1, [r1, 0xC]\n" - "\tstrh r1, [r0]\n" - "_080F58CC:\n" - "\tadd sp, 0x14\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); +void sub_80F5688(u16 * arg1, struct UnkPokenav11 * arg2, struct UnkPokenav11 * arg3, u8 arg4, u16 * arg5) +{ + u16 i, r8, r10, r0, var_30; + u16 *ptr; + s32 r4, var_2C; + + var_2C = 0; + if (arg2->unk2 < arg3->unk2) + { + r10 = arg2->unk2; + r0 = arg3->unk2; + r4 = arg2->unk0 << 10; + var_30 = arg3->unk0; + r8 = r0 - r10; + if (r8 != 0) + var_2C = ((var_30 - arg2->unk0) << 10) / r8; + } + else + { + r0 = arg2->unk2; + r10 = arg3->unk2; + r4 = arg3->unk0 << 10; + var_30 = arg2->unk0; + r8 = r0 - r10; + if (r8 != 0) + var_2C = ((var_30 - arg3->unk0) << 10) / r8; + } + + r8++; + if (arg5 == NULL) + { + arg1 += (r10 - 56) * 2; + for (i = 0; i < r8; i++) + { + arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4; + r4 += var_2C; + arg1 += 2; + } + + ptr = arg1 - 2; + } + else if (var_2C > 0) + { + arg5 += (r10 - 56) * 2; + // Less readable than the other loops, but it has to be written this way to match. + for (i = 0; i < r8; arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4, r4 += var_2C, arg5 += 2, i++) + { + if (r4 >= (155 << 10)) + break; + } + + gPokenavStructPtr->unk9340 = r10 + i; + arg1 += (gPokenavStructPtr->unk9340 - 56) * 2; + for (; i < r8; i++) + { + arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4; + r4 += var_2C; + arg1 += 2; + } + + ptr = arg1 - 2; + } + else if (var_2C < 0) + { + arg1 += (r10 - 56) * 2; + for (i = 0; i < r8; i++) + { + arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4; + if (r4 < (155 << 10)) + { + arg1[arg4] = 155; + break; + } + r4 += var_2C; + arg1 += 2; + } + + gPokenavStructPtr->unk9340 = r10 + i; + arg5 += (gPokenavStructPtr->unk9340 - 56) * 2; + for (; i < r8; i++) + { + arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4; + r4 += var_2C; + arg5 += 2; + } + + ptr = arg5 - 2; + } + else + { + gPokenavStructPtr->unk9340 = r10; + arg1 += (r10 - 56) * 2; + arg5 += (r10 - 56) * 2; + arg1[1] = arg2->unk0 + 1; + arg5[0] = arg3->unk0; + arg5[1] = 155; + return; + } + + ptr[arg4] = arg4 + var_30; } void sub_80F58DC(struct UnkPokenav11 * a0) @@ -5422,17 +4328,17 @@ void sub_80F58DC(struct UnkPokenav11 * a0) if (a0[0].unk2 < a0[1].unk2) { r6 = a0[0].unk2; - sub_80F5688(gPokenavStructPtr->unk9130, &a0[0], &a0[1], 1, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9130, &a0[0], &a0[1], 1, NULL); } else { r6 = a0[1].unk2; - sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[0], 0, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9130, &a0[1], &a0[0], 0, NULL); } - sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[2], 1, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9130, &a0[1], &a0[2], 1, NULL); i = a0[2].unk2 <= a0[3].unk2; - sub_80F5688(gPokenavStructPtr->unk9130, &a0[2], &a0[3], i, gPokenavStructPtr->unk9238); + sub_80F5688((u16 *)gPokenavStructPtr->unk9130, &a0[2], &a0[3], i, (u16 *)gPokenavStructPtr->unk9238); for (i = 56; i < r6; i++) { gPokenavStructPtr->unk9130[i - 56][0] = 0; @@ -5463,15 +4369,15 @@ void sub_80F5A1C(struct UnkPokenav11 *arg0) if (arg0[0].unk2 < arg0[4].unk2) { r6 = arg0[0].unk2; - sub_80F5688(gPokenavStructPtr->unk9238, &arg0[0], &arg0[4], 0, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9238, &arg0[0], &arg0[4], 0, NULL); } else { r6 = arg0[4].unk2; - sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[0], 1, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9238, &arg0[4], &arg0[0], 1, NULL); } - sub_80F5688(gPokenavStructPtr->unk9238, &arg0[4], &arg0[3], 0, NULL); + sub_80F5688((u16 *)gPokenavStructPtr->unk9238, &arg0[4], &arg0[3], 0, NULL); for (i = 56; i < r6; i++) { @@ -6007,13 +4913,9 @@ void sub_80F66E0(void) break; }; for (j = 0; j < r2; j++) - { gPokenavStructPtr->unkBC4C[gPokenavStructPtr->unkBC8E++] = r9 + j; - } if (r2 && r9 > 24) - { gPokenavStructPtr->unkBC8F++; - } r9 += r0; } if (gPokenavStructPtr->unkBC8E != gPokenavStructPtr->unkBC8F) @@ -6043,65 +4945,63 @@ void sub_80F66E0(void) gPokenavStructPtr->unkBC96[i] = gPokenavStructPtr->unkBC8F; } -// FIXME: wtf is this control flow -#ifdef NONMATCHING u8 sub_80F68E8(void) { s8 r5 = gPokenavStructPtr->unkBC90; s8 r4 = gPokenavStructPtr->unkBC91; - u8 r12 = 1; - if (({gMain.newAndRepeatedKeys & DPAD_UP;}) && r4 > 0) + s8 r12 = 1; + do { - while (r4 > 0) + if (({gMain.newAndRepeatedKeys & DPAD_UP;}) && r4 > 0) { - r4--; + while (r4 > 0) + { + r4--; + if (gPokenavStructPtr->unkBC96[r4] != 0) + break; + } if (gPokenavStructPtr->unkBC96[r4] != 0) { + if (r5 >= gPokenavStructPtr->unkBC96[r4]) + r5 = gPokenavStructPtr->unkBC96[r4] - 1; break; } + r4 = gPokenavStructPtr->unkBC91; } - if (gPokenavStructPtr->unkBC96[r4] != 0) + if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}) && r4 < 3) { - goto check_r5; + while (r4 < 3) + { + r4++; + if (gPokenavStructPtr->unkBC96[r4] != 0) + break; + } + if (gPokenavStructPtr->unkBC96[r4] != 0) + { + if (r5 >= gPokenavStructPtr->unkBC96[r4]) + r5 = gPokenavStructPtr->unkBC96[r4] - 1; + break; + } + r4 = gPokenavStructPtr->unkBC91; } - r4 = gPokenavStructPtr->unkBC91; - } - if (({gMain.newAndRepeatedKeys & DPAD_DOWN;}) && r4 < 3) - { - while (r4 < 3) + if (({gMain.newAndRepeatedKeys & DPAD_LEFT;})) { - r4++; - if (gPokenavStructPtr->unkBC96[r4] != 0) + if (r5 > 0) { + r5--; break; } } - if (gPokenavStructPtr->unkBC96[r4] != 0) + if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;})) { - goto check_r5; + if (r5 < gPokenavStructPtr->unkBC96[r4] - 1) + { + r5++; + break; + } } - r4 = gPokenavStructPtr->unkBC91; - } - if (({gMain.newAndRepeatedKeys & DPAD_LEFT;}) && r5 > 0) - { - r5--; - } - else if (({gMain.newAndRepeatedKeys & DPAD_RIGHT;}) && r5 < gPokenavStructPtr->unkBC96[r4] - 1) - { - r5++; - } - else - { r12 = 0; - } - goto end; - - check_r5: - if (r5 >= gPokenavStructPtr->unkBC96[r4]) - { - r5--; - } - end: + } while (0); if (r12) { if (r5 != gPokenavStructPtr->unkBC90 || r4 != gPokenavStructPtr->unkBC91) @@ -6110,204 +5010,10 @@ u8 sub_80F68E8(void) gPokenavStructPtr->unkBC91 = r4; } else - { r12 = 0; - } } return r12; } -#else -NAKED -bool8 sub_80F68E8(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tldr r3, _080F6918 @ =gPokenavStructPtr\n" - "\tldr r0, [r3]\n" - "\tldr r2, _080F691C @ =0x0000bc90\n" - "\tadds r1, r0, r2\n" - "\tldrb r5, [r1]\n" - "\tldr r6, _080F6920 @ =0x0000bc91\n" - "\tadds r0, r6\n" - "\tldrb r4, [r0]\n" - "\tmovs r0, 0x1\n" - "\tmov r12, r0\n" - "\tldr r2, _080F6924 @ =gMain\n" - "\tldrh r1, [r2, 0x30]\n" - "\tmovs r0, 0x40\n" - "\tands r0, r1\n" - "\tadds r6, r3, 0\n" - "\tadds r7, r2, 0\n" - "\tcmp r0, 0\n" - "\tbeq _080F692E\n" - "\tlsls r0, r4, 24\n" - "\tcmp r0, 0\n" - "\tble _080F692E\n" - "\tb _080F69BC\n" - "\t.align 2, 0\n" - "_080F6918: .4byte gPokenavStructPtr\n" - "_080F691C: .4byte 0x0000bc90\n" - "_080F6920: .4byte 0x0000bc91\n" - "_080F6924: .4byte gMain\n" - "_080F6928:\n" - "\tldr r1, _080F69B0 @ =0x0000bc91\n" - "\tadds r0, r2, r1\n" - "\tldrb r4, [r0]\n" - "_080F692E:\n" - "\tldrh r1, [r7, 0x30]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _080F6978\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0x2\n" - "\tbgt _080F6978\n" - "\tldr r3, _080F69B4 @ =gPokenavStructPtr\n" - "\tldr r2, _080F69B8 @ =0x0000bc96\n" - "_080F6944:\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0x2\n" - "\tbgt _080F6960\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 24\n" - "\tldr r1, [r3]\n" - "\tlsrs r4, r0, 24\n" - "\tasrs r0, 24\n" - "\tadds r1, r2\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbeq _080F6944\n" - "_080F6960:\n" - "\tldr r2, [r6]\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tldr r3, _080F69B8 @ =0x0000bc96\n" - "\tadds r1, r2, r3\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbne _080F69EC\n" - "\tldr r1, _080F69B0 @ =0x0000bc91\n" - "\tadds r0, r2, r1\n" - "\tldrb r4, [r0]\n" - "_080F6978:\n" - "\tldrh r2, [r7, 0x30]\n" - "\tmovs r0, 0x20\n" - "\tands r0, r2\n" - "\tcmp r0, 0\n" - "\tbeq _080F698A\n" - "\tlsls r0, r5, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0\n" - "\tbgt _080F6A3C\n" - "_080F698A:\n" - "\tmovs r0, 0x10\n" - "\tands r0, r2\n" - "\tcmp r0, 0\n" - "\tbeq _080F69AA\n" - "\tlsls r0, r5, 24\n" - "\tasrs r2, r0, 24\n" - "\tldr r1, [r6]\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tldr r3, _080F69B8 @ =0x0000bc96\n" - "\tadds r1, r3\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tsubs r0, 0x1\n" - "\tcmp r2, r0\n" - "\tblt _080F6A38\n" - "_080F69AA:\n" - "\tmovs r0, 0\n" - "\tmov r12, r0\n" - "\tb _080F69FC\n" - "\t.align 2, 0\n" - "_080F69B0: .4byte 0x0000bc91\n" - "_080F69B4: .4byte gPokenavStructPtr\n" - "_080F69B8: .4byte 0x0000bc96\n" - "_080F69BC:\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0\n" - "\tble _080F69DA\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 24\n" - "\tldr r1, [r6]\n" - "\tlsrs r4, r0, 24\n" - "\tasrs r0, 24\n" - "\tldr r2, _080F6A2C @ =0x0000bc96\n" - "\tadds r1, r2\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbeq _080F69BC\n" - "_080F69DA:\n" - "\tldr r2, [r6]\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tldr r3, _080F6A2C @ =0x0000bc96\n" - "\tadds r1, r2, r3\n" - "\tadds r1, r0\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbeq _080F6928\n" - "_080F69EC:\n" - "\tlsls r0, r5, 24\n" - "\tasrs r0, 24\n" - "\tldrb r1, [r1]\n" - "\tcmp r0, r1\n" - "\tblt _080F69FC\n" - "\tsubs r0, r1, 0x1\n" - "_080F69F8:\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "_080F69FC:\n" - "\tmov r0, r12\n" - "\tcmp r0, 0\n" - "\tbeq _080F6A44\n" - "\tlsls r0, r5, 24\n" - "\tasrs r0, 24\n" - "\tldr r3, [r6]\n" - "\tldr r1, _080F6A30 @ =0x0000bc90\n" - "\tadds r2, r3, r1\n" - "\tldrb r6, [r2]\n" - "\tcmp r0, r6\n" - "\tbne _080F6A20\n" - "\tlsls r0, r4, 24\n" - "\tasrs r0, 24\n" - "\tldr r6, _080F6A34 @ =0x0000bc91\n" - "\tadds r1, r3, r6\n" - "\tldrb r1, [r1]\n" - "\tcmp r0, r1\n" - "\tbeq _080F6A40\n" - "_080F6A20:\n" - "\tstrb r5, [r2]\n" - "\tldr r1, _080F6A34 @ =0x0000bc91\n" - "\tadds r0, r3, r1\n" - "\tstrb r4, [r0]\n" - "\tb _080F6A44\n" - "\t.align 2, 0\n" - "_080F6A2C: .4byte 0x0000bc96\n" - "_080F6A30: .4byte 0x0000bc90\n" - "_080F6A34: .4byte 0x0000bc91\n" - "_080F6A38:\n" - "\tadds r0, r2, 0x1\n" - "\tb _080F69F8\n" - "_080F6A3C:\n" - "\tsubs r0, 0x1\n" - "\tb _080F69F8\n" - "_080F6A40:\n" - "\tmovs r2, 0\n" - "\tmov r12, r2\n" - "_080F6A44:\n" - "\tmov r0, r12\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif //NONMATCHING void sub_80F6A4C(s8 a0) { diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 34230c727..806b91d94 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -2439,972 +2439,163 @@ void sub_80ED620() } } -#if 0 -void sub_80F4F78(); -void sub_80F0174(u32); -bool8 sub_80F4FB4(); -void sub_80F3668(); -bool8 sub_80F7500(); -void sub_80F3698(); -bool8 sub_80F5038(); -void sub_80F2F48(); -void sub_80F3CE8(); -void sub_80F3614(); -void sub_80F357C(); -void sub_80F4FDC(); - -void sub_80ED858() { - u8 var1; - switch (gPokenavStructPtr->unk304) { +void sub_80F4F78(void); +void sub_80F0174(bool8); +bool8 sub_80F4FB4(void); +void sub_80F3668(void); +bool8 sub_80F7500(void); +void sub_80F3698(void); +bool8 sub_80F5038(void); +void sub_80F2F48(void); +void sub_80F3CE8(void); +void sub_80F3614(void); +void sub_80F357C(void); +void sub_80F4FDC(void); + +void sub_80ED858(void) +{ + switch (gPokenavStructPtr->unk304) + { case 0: sub_80F4F78(); sub_80F5B38(); - gPokenavStructPtr->unk304 = 0x1; + gPokenavStructPtr->unk304 = 1; break; case 1: - if (sub_80F5B50()) return; - gPokenavStructPtr->unk304 = 0x2; + if (!sub_80F5B50()) + gPokenavStructPtr->unk304 = 2; break; case 2: - sub_80F0174(0x1); - gPokenavStructPtr->unk304 = 0x3; + sub_80F0174(1); + gPokenavStructPtr->unk304 = 3; break; case 3: - if (sub_80F4FB4()) return; - sub_80F3C94(); - sub_80F3D00(); - gPokenavStructPtr->unk304 = 0x4; + if (!sub_80F4FB4()) + { + sub_80F3C94(); + sub_80F3D00(); + gPokenavStructPtr->unk304 = 4; + } break; case 4: - if ( (gMain.heldKeys & 0x40) && (gPokenavStructPtr->unk87CB) && (!(gPokenavStructPtr->unk76AA) || (gPokenavStructPtr->unk87DC)) ) { - PlaySE(SE_SELECT); - sub_80F5060(0x1); - move_anim_execute(); - gPokenavStructPtr->unk304 = 0x5; - } - else if ( (gMain.heldKeys & 0x80) && (gPokenavStructPtr->unk87CB) && (!(gPokenavStructPtr->unk76AA) || (gPokenavStructPtr->unk76AA >= gPokenavStructPtr->unk87DC)) ) { - PlaySE(SE_SELECT); - sub_80F5060(0); - move_anim_execute(); - gPokenavStructPtr->unk304 = 0x5; - } - if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); - sub_80F4FDC(); - move_anim_execute(); - gPokenavStructPtr->unk304 = 0x9; - } - else if (gMain.newKeys & A_BUTTON) { - if (gPokenavStructPtr->unk76AA) { - if (gPokenavStructPtr->unk6DAC) { - PlaySE(SE_SELECT); - gPokenavStructPtr->unk304 = 0x7; - } - } - else if ((gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)) { - PlaySE(SE_SELECT); - gPokenavStructPtr->unk304 = 0x9; - } - } - -/* - if (gMain.heldKeys & 0x40) { - if (gPokenavStructPtr->unk87CB) { - if (gPokenavStructPtr->unk76AA) { - if (!gPokenavStructPtr->unk87DC) goto label1; - } + if (({gMain.heldKeys & DPAD_UP;})) + { + if (gPokenavStructPtr->unk87CB && ( + gPokenavStructPtr->unk76AA == 0 + || gPokenavStructPtr->unk87DC != 0 + )) + { PlaySE(SE_SELECT); - sub_80F5060(0x1); + sub_80F5060(1); move_anim_execute(); - gPokenavStructPtr->unk304 = 0x5; - + gPokenavStructPtr->unk304 = 5; + break; } - else goto label1; } - else goto label1; - break; -label1: - if (gMain.heldKeys & 0x80) { - if (gPokenavStructPtr->unk87CB) { - if (gPokenavStructPtr->unk76AA) { - if (!(gPokenavStructPtr->unk76AA < gPokenavStructPtr->unk87DC)) goto label2; - } + if (({gMain.heldKeys & DPAD_DOWN;})) + { + if (gPokenavStructPtr->unk87CB && ( + gPokenavStructPtr->unk76AA == 0 + || gPokenavStructPtr->unk87DC < gPokenavStructPtr->unk8774 + )) + { PlaySE(SE_SELECT); - sub_80F5060(0x1); + sub_80F5060(0); move_anim_execute(); - gPokenavStructPtr->unk304 = 0x5; + gPokenavStructPtr->unk304 = 5; + break; } - else goto label2; } - else goto label2; - break; -label2: - if (gMain.newKeys & B_BUTTON) { + if (({gMain.newKeys & B_BUTTON;})) + { PlaySE(SE_SELECT); sub_80F4FDC(); move_anim_execute(); - gPokenavStructPtr->unk304 = 0x9; + gPokenavStructPtr->unk304 = 9; + break; } - else if (gMain.newKeys & A_BUTTON) { - if (!gPokenavStructPtr->unk76AA) { - if ((gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1)) { + if (({gMain.newKeys & A_BUTTON;})) + { + if (gPokenavStructPtr->unk76AA == 0) + { + if (gPokenavStructPtr->unk87DC == gPokenavStructPtr->unk87DA - 1) + { PlaySE(SE_SELECT); - gPokenavStructPtr->unk304 = 0x9; + gPokenavStructPtr->unk304 = 9; } } - else { - PlaySE(SE_SELECT); - gPokenavStructPtr->unk304 = 0x9; + else + { + if (gPokenavStructPtr->unk6DAC == 0) + { + PlaySE(SE_SELECT); + gPokenavStructPtr->unk304 = 7; + } } + break; } -*/ break; - case 5: - if (gpu_sync_bg_show()) return; - sub_80F3D00(); - gPokenavStructPtr->unk304 = 0x6; + if (!gpu_sync_bg_show()) + { + sub_80F3D00(); + gPokenavStructPtr->unk304 = 6; + } break; case 6: - if (sub_8055870()) return; - gPokenavStructPtr->unk304 = 0x4; + if (!sub_8055870()) + gPokenavStructPtr->unk304 = 4; break; case 7: - sub_80EEFBC(0x3); + sub_80EEFBC(3); sub_80F3668(); - gPokenavStructPtr->unk304 = 0x8; + gPokenavStructPtr->unk304 = 8; break; case 8: - if (sub_80F7500()) return; - sub_80EEFBC(0x2); - sub_80F3698(); - gPokenavStructPtr->unk304 = 0x4; + if (!sub_80F7500()) + { + sub_80EEFBC(2); + sub_80F3698(); + gPokenavStructPtr->unk304 = 4; + } break; case 9: - if (!(var1 = sub_80F5038())) { + if (!sub_80F5038()) + { sub_80F0174(0); sub_80F2F48(); - BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0x0, 0x10, var1); - gPokenavStructPtr->unk304 = 0xB; + BeginNormalPaletteFade(gPokenavStructPtr->unk308, -1, 0, 16, RGB_BLACK); + gPokenavStructPtr->unk304 = 11; } break; - case 0xA: - if (gPaletteFade.active) return; - sub_80F3CE8(); - sub_80F5BDC(); - if (!gPokenavStructPtr->unk76AA) { - sub_80F357C(); - sub_80F2D6C(0x1); - sub_80F2D6C(0x6); - sub_80EBDBC(&sub_80ECA10); - } - else { - sub_80F3614(); - sub_80EBDBC(&sub_80ED3D0); + case 10: + break; + case 11: + if (!gPaletteFade.active) + { + sub_80F3CE8(); + sub_80F5BDC(); + if (!gPokenavStructPtr->unk76AA) + { + sub_80F357C(); + sub_80F2D6C(1); + sub_80F2D6C(6); + sub_80EBDBC(sub_80ECA10); + } + else + { + sub_80F3614(); + sub_80EBDBC(sub_80ED3D0); + } } break; } -} -#else #if DEBUG -NAKED -void sub_80ED858() -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._917 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r5, r1, #0\n\ - cmp r0, #0xb\n\ - bls ._915 @cond_branch\n\ - b ._999\n\ -._915:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._917 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._918:\n\ - .align 2, 0\n\ -._917:\n\ - .word gSharedMem\n\ - .word ._919\n\ -._919:\n\ - .word ._920\n\ - .word ._921\n\ - .word ._922\n\ - .word ._923\n\ - .word ._924\n\ - .word ._925\n\ - .word ._926\n\ - .word ._927\n\ - .word ._928\n\ - .word ._929\n\ - .word ._999\n\ - .word ._931\n\ -._920:\n\ - bl sub_80F4F78\n\ - bl sub_80F5B38\n\ - ldr r0, ._933 @ gSharedMem\n\ - mov r4, #0xc1\n\ - lsl r4, r4, #0x2\n\ - add r0, r0, r4\n\ - mov r1, #0x1\n\ - strh r1, [r0]\n\ - b ._999\n\ -._934:\n\ - .align 2, 0\n\ -._933:\n\ - .word gSharedMem\n\ -._921:\n\ - bl sub_80F5B50\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._935 @cond_branch\n\ - b ._999\n\ -._935:\n\ - ldr r0, ._938 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - mov r1, #0x2\n\ - strh r1, [r0]\n\ - b ._999\n\ -._939:\n\ - .align 2, 0\n\ -._938:\n\ - .word gSharedMem\n\ -._922:\n\ - mov r0, #0x1\n\ - bl sub_80F0174\n\ - ldr r0, ._941 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r0, r2\n\ - mov r1, #0x3\n\ - strh r1, [r0]\n\ - b ._999\n\ -._942:\n\ - .align 2, 0\n\ -._941:\n\ - .word gSharedMem\n\ -._923:\n\ - bl sub_80F4FB4\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._943 @cond_branch\n\ - b ._999\n\ -._943:\n\ - bl sub_80F3C94\n\ - bl sub_80F3D00\n\ - b ._945\n\ -._924:\n\ - ldr r2, ._951 @ gMain\n\ - ldrh r1, [r2, #0x2c]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - add r3, r2, #0\n\ - cmp r0, #0\n\ - beq ._949 @cond_branch\n\ - ldr r1, ._951 + 4 @ 0x87cb\n\ - add r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._949 @cond_branch\n\ - ldr r2, ._951 + 8 @ 0x76aa\n\ - add r0, r5, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._948 @cond_branch\n\ - ldr r4, ._951 + 12 @ 0x87dc\n\ - add r0, r5, r4\n\ - mov r1, #0x0\n\ - ldsh r0, [r0, r1]\n\ - cmp r0, #0\n\ - beq ._949 @cond_branch\n\ -._948:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0x1\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r5, r2\n\ - b ._950\n\ -._952:\n\ - .align 2, 0\n\ -._951:\n\ - .word gMain\n\ - .word 0x87cb\n\ - .word 0x76aa\n\ - .word 0x87dc\n\ -._949:\n\ - ldrh r1, [r3, #0x2c]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._956 @cond_branch\n\ - ldr r4, ._958 @ 0x87cb\n\ - add r0, r5, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._956 @cond_branch\n\ - ldr r1, ._958 + 4 @ 0x76aa\n\ - add r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._955 @cond_branch\n\ - ldr r2, ._958 + 8 @ 0x87dc\n\ - add r0, r5, r2\n\ - sub r4, r4, #0x57\n\ - add r1, r5, r4\n\ - mov r4, #0x0\n\ - ldsh r2, [r0, r4]\n\ - mov r4, #0x0\n\ - ldsh r0, [r1, r4]\n\ - cmp r2, r0\n\ - bge ._956 @cond_branch\n\ -._955:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0x0\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r5, r0\n\ -._950:\n\ - mov r0, #0x5\n\ - strh r0, [r1]\n\ - b ._999\n\ -._959:\n\ - .align 2, 0\n\ -._958:\n\ - .word 0x87cb\n\ - .word 0x76aa\n\ - .word 0x87dc\n\ -._956:\n\ - ldrh r2, [r3, #0x2e]\n\ - mov r0, #0x2\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._960 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_80F4FDC\n\ - bl move_anim_execute\n\ - ldr r0, ._962 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - mov r1, #0x9\n\ - strh r1, [r0]\n\ - b ._999\n\ -._963:\n\ - .align 2, 0\n\ -._962:\n\ - .word gSharedMem\n\ -._960:\n\ - mov r0, #0x1\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - bne ._964 @cond_branch\n\ - b ._999\n\ -._964:\n\ - add r4, r5, #0\n\ - ldr r2, ._970 @ 0x76aa\n\ - add r0, r4, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._966 @cond_branch\n\ - ldr r1, ._970 + 4 @ 0x87dc\n\ - add r0, r4, r1\n\ - mov r2, #0x0\n\ - ldsh r1, [r0, r2]\n\ - ldr r2, ._970 + 8 @ 0x87da\n\ - add r0, r4, r2\n\ - mov r2, #0x0\n\ - ldsh r0, [r0, r2]\n\ - sub r0, r0, #0x1\n\ - cmp r1, r0\n\ - beq ._967 @cond_branch\n\ - b ._999\n\ -._967:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ - mov r0, #0x9\n\ - strh r0, [r1]\n\ - b ._999\n\ -._971:\n\ - .align 2, 0\n\ -._970:\n\ - .word 0x76aa\n\ - .word 0x87dc\n\ - .word 0x87da\n\ -._966:\n\ - ldr r1, ._975 @ 0x6dac\n\ - add r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._972 @cond_branch\n\ - b ._999\n\ -._972:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r5, r2\n\ - mov r0, #0x7\n\ - strh r0, [r1]\n\ - b ._999\n\ -._976:\n\ - .align 2, 0\n\ -._975:\n\ - .word 0x6dac\n\ -._925:\n\ - bl gpu_sync_bg_show\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._977 @cond_branch\n\ - b ._999\n\ -._977:\n\ - bl sub_80F3D00\n\ - ldr r0, ._980 @ gSharedMem\n\ - mov r4, #0xc1\n\ - lsl r4, r4, #0x2\n\ - add r0, r0, r4\n\ - mov r1, #0x6\n\ - strh r1, [r0]\n\ - b ._999\n\ -._981:\n\ - .align 2, 0\n\ -._980:\n\ - .word gSharedMem\n\ -._926:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._999 @cond_branch\n\ - ldr r0, ._984 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - b ._983\n\ -._985:\n\ - .align 2, 0\n\ -._984:\n\ - .word gSharedMem\n\ -._927:\n\ - mov r0, #0x3\n\ - bl sub_80EEFBC\n\ - bl sub_80F3668\n\ - ldr r0, ._987 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r0, r2\n\ - mov r1, #0x8\n\ - strh r1, [r0]\n\ - b ._999\n\ -._988:\n\ - .align 2, 0\n\ -._987:\n\ - .word gSharedMem\n\ -._928:\n\ - bl sub_80F7500\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._999 @cond_branch\n\ - mov r0, #0x2\n\ - bl sub_80EEFBC\n\ - bl sub_80F3698\n\ -._945:\n\ - ldr r0, ._991 @ gSharedMem\n\ - mov r4, #0xc1\n\ - lsl r4, r4, #0x2\n\ - add r0, r0, r4\n\ -._983:\n\ - mov r1, #0x4\n\ - strh r1, [r0]\n\ - b ._999\n\ -._992:\n\ - .align 2, 0\n\ -._991:\n\ - .word gSharedMem\n\ -._929:\n\ - bl sub_80F5038\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0\n\ - bne ._999 @cond_branch\n\ - mov r0, #0x0\n\ - bl sub_80F0174\n\ - bl sub_80F2F48\n\ - ldr r5, ._995 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r5, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r4, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r5, r2\n\ - mov r0, #0xb\n\ - strh r0, [r1]\n\ - b ._999\n\ -._996:\n\ - .align 2, 0\n\ -._995:\n\ - .word gSharedMem\n\ -._931:\n\ - ldr r0, ._1000 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._999 @cond_branch\n\ - bl sub_80F3CE8\n\ - bl sub_80F5BDC\n\ - ldr r0, ._1000 + 4 @ gSharedMem\n\ - ldr r4, ._1000 + 8 @ 0x76aa\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._998 @cond_branch\n\ - bl sub_80F357C\n\ - mov r0, #0x1\n\ - bl sub_80F2D6C\n\ - mov r0, #0x6\n\ - bl sub_80F2D6C\n\ - ldr r0, ._1000 + 12 @ sub_80ECA10\n\ - bl sub_80EBDBC\n\ - b ._999\n\ -._1001:\n\ - .align 2, 0\n\ -._1000:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ - .word 0x76aa\n\ - .word sub_80ECA10+1\n\ -._998:\n\ - bl sub_80F3614\n\ - ldr r0, ._1003 @ sub_80ED3D0\n\ - bl sub_80EBDBC\n\ -._999:\n\ - ldr r0, ._1003 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1002 @cond_branch\n\ - ldr r0, ._1003 + 8 @ gLink\n\ - ldr r1, ._1003 + 12 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x9\n\ - mov r2, #0x6\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1002:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._1004:\n\ - .align 2, 0\n\ -._1003:\n\ - .word sub_80ED3D0+1\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else -NAKED -void sub_80ED858() -{ - asm_unified("push {r4,r5,lr}\n\ - sub sp, 0x4\n\ - ldr r1, _080ED878 @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r1, r2\n\ - ldrh r0, [r0]\n\ - adds r5, r1, 0\n\ - cmp r0, 0xB\n\ - bls _080ED86E\n\ - b _080EDB7A\n\ -_080ED86E:\n\ - lsls r0, 2\n\ - ldr r1, _080ED87C @ =_080ED880\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080ED878: .4byte gSharedMem\n\ -_080ED87C: .4byte _080ED880\n\ - .align 2, 0\n\ -_080ED880:\n\ - .4byte _080ED8B0\n\ - .4byte _080ED8CC\n\ - .4byte _080ED8EC\n\ - .4byte _080ED904\n\ - .4byte _080ED91A\n\ - .4byte _080EDA68\n\ - .4byte _080EDA8C\n\ - .4byte _080EDAA4\n\ - .4byte _080EDAC0\n\ - .4byte _080EDAE8\n\ - .4byte _080EDB7A\n\ - .4byte _080EDB28\n\ -_080ED8B0:\n\ - bl sub_80F4F78\n\ - bl sub_80F5B38\n\ - ldr r0, _080ED8C8 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ - movs r1, 0x1\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080ED8C8: .4byte gSharedMem\n\ -_080ED8CC:\n\ - bl sub_80F5B50\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ED8D8\n\ - b _080EDB7A\n\ -_080ED8D8:\n\ - ldr r0, _080ED8E8 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - movs r1, 0x2\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080ED8E8: .4byte gSharedMem\n\ -_080ED8EC:\n\ - movs r0, 0x1\n\ - bl sub_80F0174\n\ - ldr r0, _080ED900 @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r2\n\ - movs r1, 0x3\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080ED900: .4byte gSharedMem\n\ -_080ED904:\n\ - bl sub_80F4FB4\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ED910\n\ - b _080EDB7A\n\ -_080ED910:\n\ - bl sub_80F3C94\n\ - bl sub_80F3D00\n\ - b _080EDAD4\n\ -_080ED91A:\n\ - ldr r2, _080ED960 @ =gMain\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - adds r3, r2, 0\n\ - cmp r0, 0\n\ - beq _080ED970\n\ - ldr r1, _080ED964 @ =0x000087cb\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED970\n\ - ldr r2, _080ED968 @ =0x000076aa\n\ - adds r0, r5, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED948\n\ - ldr r4, _080ED96C @ =0x000087dc\n\ - adds r0, r5, r4\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - beq _080ED970\n\ -_080ED948:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - b _080ED9B8\n\ - .align 2, 0\n\ -_080ED960: .4byte gMain\n\ -_080ED964: .4byte 0x000087cb\n\ -_080ED968: .4byte 0x000076aa\n\ -_080ED96C: .4byte 0x000087dc\n\ -_080ED970:\n\ - ldrh r1, [r3, 0x2C]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ED9CC\n\ - ldr r4, _080ED9C0 @ =0x000087cb\n\ - adds r0, r5, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED9CC\n\ - ldr r1, _080ED9C4 @ =0x000076aa\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED9A2\n\ - ldr r2, _080ED9C8 @ =0x000087dc\n\ - adds r0, r5, r2\n\ - subs r4, 0x57\n\ - adds r1, r5, r4\n\ - movs r4, 0\n\ - ldrsh r2, [r0, r4]\n\ - movs r4, 0\n\ - ldrsh r0, [r1, r4]\n\ - cmp r2, r0\n\ - bge _080ED9CC\n\ -_080ED9A2:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - movs r0, 0xC1\n\ - lsls r0, 2\n\ - adds r1, r5, r0\n\ -_080ED9B8:\n\ - movs r0, 0x5\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080ED9C0: .4byte 0x000087cb\n\ -_080ED9C4: .4byte 0x000076aa\n\ -_080ED9C8: .4byte 0x000087dc\n\ -_080ED9CC:\n\ - ldrh r2, [r3, 0x2E]\n\ - movs r0, 0x2\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _080ED9F8\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - bl sub_80F4FDC\n\ - bl move_anim_execute\n\ - ldr r0, _080ED9F4 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - movs r1, 0x9\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080ED9F4: .4byte gSharedMem\n\ -_080ED9F8:\n\ - movs r0, 0x1\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _080EDA02\n\ - b _080EDB7A\n\ -_080EDA02:\n\ - adds r4, r5, 0\n\ - ldr r2, _080EDA38 @ =0x000076aa\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080EDA44\n\ - ldr r1, _080EDA3C @ =0x000087dc\n\ - adds r0, r4, r1\n\ - movs r2, 0\n\ - ldrsh r1, [r0, r2]\n\ - ldr r2, _080EDA40 @ =0x000087da\n\ - adds r0, r4, r2\n\ - movs r2, 0\n\ - ldrsh r0, [r0, r2]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - beq _080EDA26\n\ - b _080EDB7A\n\ -_080EDA26:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0xC1\n\ - lsls r0, 2\n\ - adds r1, r4, r0\n\ - movs r0, 0x9\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDA38: .4byte 0x000076aa\n\ -_080EDA3C: .4byte 0x000087dc\n\ -_080EDA40: .4byte 0x000087da\n\ -_080EDA44:\n\ - ldr r1, _080EDA64 @ =0x00006dac\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080EDA50\n\ - b _080EDB7A\n\ -_080EDA50:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - movs r0, 0x7\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDA64: .4byte 0x00006dac\n\ -_080EDA68:\n\ - bl gpu_sync_bg_show\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EDA74\n\ - b _080EDB7A\n\ -_080EDA74:\n\ - bl sub_80F3D00\n\ - ldr r0, _080EDA88 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ - movs r1, 0x6\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDA88: .4byte gSharedMem\n\ -_080EDA8C:\n\ - bl sub_8055870\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - ldr r0, _080EDAA0 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - b _080EDADC\n\ - .align 2, 0\n\ -_080EDAA0: .4byte gSharedMem\n\ -_080EDAA4:\n\ - movs r0, 0x3\n\ - bl sub_80EEFBC\n\ - bl sub_80F3668\n\ - ldr r0, _080EDABC @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r2\n\ - movs r1, 0x8\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDABC: .4byte gSharedMem\n\ -_080EDAC0:\n\ - bl sub_80F7500\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - movs r0, 0x2\n\ - bl sub_80EEFBC\n\ - bl sub_80F3698\n\ -_080EDAD4:\n\ - ldr r0, _080EDAE4 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ -_080EDADC:\n\ - movs r1, 0x4\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDAE4: .4byte gSharedMem\n\ -_080EDAE8:\n\ - bl sub_80F5038\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0\n\ - bne _080EDB7A\n\ - movs r0, 0\n\ - bl sub_80F0174\n\ - bl sub_80F2F48\n\ - ldr r5, _080EDB24 @ =gSharedMem\n\ - movs r1, 0xC2\n\ - lsls r1, 2\n\ - adds r0, r5, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - str r4, [sp]\n\ - movs r2, 0\n\ - movs r3, 0x10\n\ - bl BeginNormalPaletteFade\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - movs r0, 0xB\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDB24: .4byte gSharedMem\n\ -_080EDB28:\n\ - ldr r0, _080EDB60 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - bl sub_80F3CE8\n\ - bl sub_80F5BDC\n\ - ldr r0, _080EDB64 @ =gSharedMem\n\ - ldr r4, _080EDB68 @ =0x000076aa\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080EDB70\n\ - bl sub_80F357C\n\ - movs r0, 0x1\n\ - bl sub_80F2D6C\n\ - movs r0, 0x6\n\ - bl sub_80F2D6C\n\ - ldr r0, _080EDB6C @ =sub_80ECA10\n\ - bl sub_80EBDBC\n\ - b _080EDB7A\n\ - .align 2, 0\n\ -_080EDB60: .4byte gPaletteFade\n\ -_080EDB64: .4byte gSharedMem\n\ -_080EDB68: .4byte 0x000076aa\n\ -_080EDB6C: .4byte sub_80ECA10\n\ -_080EDB70:\n\ - bl sub_80F3614\n\ - ldr r0, _080EDB84 @ =sub_80ED3D0\n\ - bl sub_80EBDBC\n\ -_080EDB7A:\n\ - add sp, 0x4\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080EDB84: .4byte sub_80ED3D0\n"); -} -#endif + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 9, 6, 2, 4); #endif +} void sub_80EDB88() { @@ -4068,276 +3259,80 @@ void sub_80EE9C0(u8 param1, u8 param2, u8 param3) gPokenavStructPtr->unk6E17 = param3; } -#if 0 -bool8 sub_80EEA0C() { - switch (gPokenavStructPtr->unk6E16) { +bool8 sub_80EF4F8(void); +void sub_80EF490(u8); + +bool8 sub_80EEA0C(void) +{ + switch (gPokenavStructPtr->unk6E16) + { case 0: - if (sub_80F1F10()) return 1; - if (gPokenavStructPtr->unk6E17 != 0xC) { - gPokenavStructPtr->unk6E16 = 0x1; - return 1; - } - else { - gPokenavStructPtr->unk6E16 = 0x3; - return 1; + if (!sub_80F1F10()) + { + if (gPokenavStructPtr->unk6E17 != 12) + gPokenavStructPtr->unk6E16 = 1; + else + gPokenavStructPtr->unk6E16 = 3; } + break; case 1: sub_80F2C80(gPokenavStructPtr->unk6E17); gPokenavStructPtr->unk6E16++; + // fallthrough case 2: - if (sub_80F2CBC(gPokenavStructPtr->unk6E17)) return 1; - gPokenavStructPtr->unk6E16++; + if (!sub_80F2CBC(gPokenavStructPtr->unk6E17)) + gPokenavStructPtr->unk6E16++; + break; case 3: - + gPokenavStructPtr->unk6DAD = gPokenavStructPtr->unk6E15; + switch (gPokenavStructPtr->unk6E14) + { + case 0: + gPokenavStructPtr->unk6DAE = 5; + break; + case 1: + gPokenavStructPtr->unk6DAE = 3; + break; + case 2: + gPokenavStructPtr->unk6DAE = 6; + break; + } + sub_80F1B8C(gPokenavStructPtr->unk6E14); + gPokenavStructPtr->unk6E16++; + // fallthrough + case 4: + if (!sub_80F1BC8(gPokenavStructPtr->unk6E14)) + gPokenavStructPtr->unk6E16++; + break; + case 5: + if (!sub_8055870()) + gPokenavStructPtr->unk6E16++; + break; + case 6: + sub_80F1DF0(); + sub_80EF490(gPokenavStructPtr->unk6E14); + gPokenavStructPtr->unk6E16++; + break; + case 7: + if (!sub_80F1E50()) + { + sub_80EF428(gPokenavStructPtr->unk6E14, gPokenavStructPtr->unk6DAD); + gPokenavStructPtr->unk6E16++; + } + break; + case 8: + if (!sub_80EF4F8()) + { + gPokenavStructPtr->unk6E16++; + return FALSE; + } + break; + default: + return FALSE; } + + return TRUE; } -#else -NAKED -bool8 sub_80EEA0C() { - asm_unified( - "push {r4,lr}\n\ - ldr r1, _080EEA28 @ =gSharedMem\n\ - ldr r2, _080EEA2C @ =0x00006e16\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r3, r1, 0\n\ - cmp r0, 0x8\n\ - bls _080EEA1E\n\ - b _080EEBFA\n\ -_080EEA1E:\n\ - lsls r0, 2\n\ - ldr r1, _080EEA30 @ =_080EEA34\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080EEA28: .4byte gSharedMem\n\ -_080EEA2C: .4byte 0x00006e16\n\ -_080EEA30: .4byte _080EEA34\n\ - .align 2, 0\n\ -_080EEA34:\n\ - .4byte _080EEA58\n\ - .4byte _080EEA98\n\ - .4byte _080EEAAE\n\ - .4byte _080EEAD4\n\ - .4byte _080EEB3E\n\ - .4byte _080EEB68\n\ - .4byte _080EEB88\n\ - .4byte _080EEBAC\n\ - .4byte _080EEBE4\n\ -_080EEA58:\n\ - bl sub_80F1F10\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EEA64\n\ - b _080EEC08\n\ -_080EEA64:\n\ - ldr r1, _080EEA7C @ =gSharedMem\n\ - ldr r4, _080EEA80 @ =0x00006e17\n\ - adds r0, r1, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xC\n\ - beq _080EEA88\n\ - ldr r0, _080EEA84 @ =0x00006e16\n\ - adds r1, r0\n\ - movs r0, 0x1\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ -_080EEA7C: .4byte gSharedMem\n\ -_080EEA80: .4byte 0x00006e17\n\ -_080EEA84: .4byte 0x00006e16\n\ -_080EEA88:\n\ - ldr r2, _080EEA94 @ =0x00006e16\n\ - adds r1, r2\n\ - movs r0, 0x3\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ -_080EEA94: .4byte 0x00006e16\n\ -_080EEA98:\n\ - ldr r4, _080EEAC8 @ =gSharedMem\n\ - ldr r1, _080EEACC @ =0x00006e17\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F2C80\n\ - ldr r2, _080EEAD0 @ =0x00006e16\n\ - adds r4, r2\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ -_080EEAAE:\n\ - ldr r4, _080EEAC8 @ =gSharedMem\n\ - ldr r1, _080EEACC @ =0x00006e17\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F2CBC\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EEAC2\n\ - b _080EEC08\n\ -_080EEAC2:\n\ - ldr r2, _080EEAD0 @ =0x00006e16\n\ - adds r1, r4, r2\n\ - b _080EEB76\n\ - .align 2, 0\n\ -_080EEAC8: .4byte gSharedMem\n\ -_080EEACC: .4byte 0x00006e17\n\ -_080EEAD0: .4byte 0x00006e16\n\ -_080EEAD4:\n\ - adds r2, r3, 0\n\ - ldr r4, _080EEAF8 @ =0x00006e15\n\ - adds r0, r2, r4\n\ - ldrb r1, [r0]\n\ - subs r4, 0x68\n\ - adds r0, r2, r4\n\ - strb r1, [r0]\n\ - ldr r1, _080EEAFC @ =0x00006e14\n\ - adds r0, r2, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - beq _080EEB14\n\ - cmp r0, 0x1\n\ - bgt _080EEB00\n\ - cmp r0, 0\n\ - beq _080EEB06\n\ - b _080EEB28\n\ - .align 2, 0\n\ -_080EEAF8: .4byte 0x00006e15\n\ -_080EEAFC: .4byte 0x00006e14\n\ -_080EEB00:\n\ - cmp r0, 0x2\n\ - beq _080EEB20\n\ - b _080EEB28\n\ -_080EEB06:\n\ - ldr r4, _080EEB10 @ =0x00006dae\n\ - adds r1, r2, r4\n\ - movs r0, 0x5\n\ - b _080EEB26\n\ - .align 2, 0\n\ -_080EEB10: .4byte 0x00006dae\n\ -_080EEB14:\n\ - ldr r0, _080EEB1C @ =0x00006dae\n\ - adds r1, r2, r0\n\ - movs r0, 0x3\n\ - b _080EEB26\n\ - .align 2, 0\n\ -_080EEB1C: .4byte 0x00006dae\n\ -_080EEB20:\n\ - ldr r2, _080EEB58 @ =0x00006dae\n\ - adds r1, r3, r2\n\ - movs r0, 0x6\n\ -_080EEB26:\n\ - strb r0, [r1]\n\ -_080EEB28:\n\ - ldr r4, _080EEB5C @ =gSharedMem\n\ - ldr r1, _080EEB60 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F1B8C\n\ - ldr r2, _080EEB64 @ =0x00006e16\n\ - adds r4, r2\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ -_080EEB3E:\n\ - ldr r4, _080EEB5C @ =gSharedMem\n\ - ldr r1, _080EEB60 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F1BC8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r2, _080EEB64 @ =0x00006e16\n\ - adds r1, r4, r2\n\ - b _080EEB76\n\ - .align 2, 0\n\ -_080EEB58: .4byte 0x00006dae\n\ -_080EEB5C: .4byte gSharedMem\n\ -_080EEB60: .4byte 0x00006e14\n\ -_080EEB64: .4byte 0x00006e16\n\ -_080EEB68:\n\ - bl sub_8055870\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r1, _080EEB80 @ =gSharedMem\n\ - ldr r4, _080EEB84 @ =0x00006e16\n\ - adds r1, r4\n\ -_080EEB76:\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ -_080EEB80: .4byte gSharedMem\n\ -_080EEB84: .4byte 0x00006e16\n\ -_080EEB88:\n\ - bl sub_80F1DF0\n\ - ldr r4, _080EEBA0 @ =gSharedMem\n\ - ldr r1, _080EEBA4 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80EF490\n\ - ldr r2, _080EEBA8 @ =0x00006e16\n\ - adds r4, r2\n\ - b _080EEBCC\n\ - .align 2, 0\n\ -_080EEBA0: .4byte gSharedMem\n\ -_080EEBA4: .4byte 0x00006e14\n\ -_080EEBA8: .4byte 0x00006e16\n\ -_080EEBAC:\n\ - bl sub_80F1E50\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r4, _080EEBD4 @ =gSharedMem\n\ - ldr r1, _080EEBD8 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - ldr r2, _080EEBDC @ =0x00006dad\n\ - adds r1, r4, r2\n\ - ldrb r1, [r1]\n\ - bl sub_80EF428\n\ - ldr r0, _080EEBE0 @ =0x00006e16\n\ - adds r4, r0\n\ -_080EEBCC:\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - b _080EEC08\n\ - .align 2, 0\n\ -_080EEBD4: .4byte gSharedMem\n\ -_080EEBD8: .4byte 0x00006e14\n\ -_080EEBDC: .4byte 0x00006dad\n\ -_080EEBE0: .4byte 0x00006e16\n\ -_080EEBE4:\n\ - bl sub_80EF4F8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r1, _080EEC00 @ =gSharedMem\n\ - ldr r2, _080EEC04 @ =0x00006e16\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ -_080EEBFA:\n\ - movs r0, 0\n\ - b _080EEC0A\n\ - .align 2, 0\n\ -_080EEC00: .4byte gSharedMem\n\ -_080EEC04: .4byte 0x00006e16\n\ -_080EEC08:\n\ - movs r0, 0x1\n\ -_080EEC0A:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n" - - ); -} -#endif // var6dad and var6dae must be s8 in this func bool8 sub_80EEC10() diff --git a/src/script_menu.c b/src/script_menu.c index 03aef9813..5488bed3e 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -895,17 +895,38 @@ bool8 ScriptMenu_CreatePCMultichoice(void) } } -#if ENGLISH void ScriptMenu_CreatePCMenu(void) { - u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); u8 width; u8 numChoices; +#if ENGLISH + u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC)) width = playersPCWidth; else width = 8; +#elif GERMAN + s32 sp8[4]; + s32 r4 = 0; + s32 r5; + + if (FlagGet(FLAG_SYS_PC_LANETTE)) + sp8[r4++] = GetStringWidthInTilesForScriptMenu(gPCText_LanettesPC); + else + sp8[r4++] = GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC); + sp8[r4++] = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC); + sp8[r4++] = GetStringWidthInTilesForScriptMenu(gPCText_LogOff); + if (FlagGet(FLAG_SYS_GAME_CLEAR)) + sp8[r4++] = GetStringWidthInTilesForScriptMenu(gPCText_HallOfFame); + + width = 0; + for (r5 = 0; r5 < r4; r5++) + { + if (width < sp8[r5]) + width = sp8[r5]; + } +#endif if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game? { @@ -930,170 +951,6 @@ void ScriptMenu_CreatePCMenu(void) InitMenu(0, 1, 1, numChoices, 0, width + 1); StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } -#elif GERMAN -NAKED -void ScriptMenu_CreatePCMenu(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x18\n\ - ldr r0, _080B5748 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5750\n\ - ldr r0, _080B574C @ =gPCText_LanettesPC\n\ - b _080B5752\n\ - .align 2, 0\n\ -_080B5748: .4byte 0x0000084b\n\ -_080B574C: .4byte gPCText_LanettesPC\n\ -_080B5750:\n\ - ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\ -_080B5752:\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - movs r4, 0x1\n\ - ldr r0, _080B57EC @ =gPCText_PlayersPC\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r1, r4, 2\n\ - add r1, sp\n\ - adds r1, 0x8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [r1]\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x10]\n\ - movs r4, 0x3\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5798\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - bl GetStringWidthInTilesForScriptMenu\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x14]\n\ - movs r4, 0x4\n\ -_080B5798:\n\ - movs r5, 0\n\ - cmp r5, r4\n\ - bge _080B57B4\n\ - add r2, sp, 0x8\n\ - adds r1, r4, 0\n\ -_080B57A2:\n\ - ldr r0, [r2]\n\ - cmp r5, r0\n\ - bge _080B57AC\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ -_080B57AC:\n\ - adds r2, 0x4\n\ - subs r1, 0x1\n\ - cmp r1, 0\n\ - bne _080B57A2\n\ -_080B57B4:\n\ - ldr r0, _080B57F4 @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B57FC\n\ - movs r7, 0x4\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x9\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl Menu_PrintText\n\ - ldr r0, _080B57F0 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x7\n\ - bl Menu_PrintText\n\ - b _080B5818\n\ - .align 2, 0\n\ -_080B57E8: .4byte gPCText_SomeonesPC\n\ -_080B57EC: .4byte gPCText_PlayersPC\n\ -_080B57F0: .4byte gPCText_LogOff\n\ -_080B57F4: .4byte 0x00000804\n\ -_080B57F8: .4byte gPCText_HallOfFame\n\ -_080B57FC:\n\ - movs r7, 0x3\n\ - adds r4, r5, 0x2\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r3, 0x7\n\ - bl Menu_DrawStdWindowFrame\n\ - ldr r0, _080B5834 @ =gPCText_LogOff\n\ - movs r1, 0x1\n\ - movs r2, 0x5\n\ - bl Menu_PrintText\n\ -_080B5818:\n\ - adds r6, r4, 0\n\ - ldr r0, _080B5838 @ =0x0000084b\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080B5840\n\ - ldr r0, _080B583C @ =gPCText_LanettesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl Menu_PrintText\n\ - b _080B584A\n\ - .align 2, 0\n\ -_080B5834: .4byte gPCText_LogOff\n\ -_080B5838: .4byte 0x0000084b\n\ -_080B583C: .4byte gPCText_LanettesPC\n\ -_080B5840:\n\ - ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - bl Menu_PrintText\n\ -_080B584A:\n\ - ldr r0, _080B588C @ =gPCText_PlayersPC\n\ - movs r1, 0x1\n\ - movs r2, 0x3\n\ - bl Menu_PrintText\n\ - movs r4, 0\n\ - str r4, [sp]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0x1\n\ - movs r2, 0x1\n\ - adds r3, r7, 0\n\ - bl InitMenu\n\ - lsls r2, r6, 24\n\ - lsrs r2, 24\n\ - lsls r3, r7, 1\n\ - adds r3, 0x1\n\ - str r4, [sp]\n\ - str r7, [sp, 0x4]\n\ - movs r0, 0\n\ - movs r1, 0\n\ - bl StartScriptMenuTask\n\ - add sp, 0x18\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080B5888: .4byte gPCText_SomeonesPC\n\ -_080B588C: .4byte gPCText_PlayersPC\n\ - .syntax divided\n"); -} -#endif void ScriptMenu_DisplayPCStartupPrompt(void) { diff --git a/src/starter_choose.c b/src/starter_choose.c index 0a0b0577b..9cdd26f09 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -480,10 +480,9 @@ void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadowColor) *p = c; \ } - -#if ENGLISH static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { + u8 labelText[72]; const u8 *category; u8 srcIndex; @@ -499,20 +498,23 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { //Remove the old Pokemon label Menu_EraseWindowRect( - gStarterChoose_LabelCoords[prevSelection][0], - gStarterChoose_LabelCoords[prevSelection][1], - gStarterChoose_LabelCoords[prevSelection][0] + 13, - gStarterChoose_LabelCoords[prevSelection][1] + 3); + gStarterChoose_LabelCoords[prevSelection][0], + gStarterChoose_LabelCoords[prevSelection][1], + gStarterChoose_LabelCoords[prevSelection][0] + 13, + gStarterChoose_LabelCoords[prevSelection][1] + 3); REG_WIN0H = 0; REG_WIN0V = 0; } + species = GetStarterPokemon(selection); category = GetPokemonCategory(SpeciesToNationalPokedexNum(species)); AddTextColorCtrlCode(labelText, 0, 15, 8); +#if ENGLISH dstIndex = 5; SET_CHAR(labelText, 5, EXT_CTRL_CODE_BEGIN); - SET_CHAR(labelText, 6, 0x11); + SET_CHAR(labelText, 6, EXT_CTRL_CODE_CLEAR); SET_CHAR(labelText, 7, dstIndex); +#endif //Copy category string to label dstIndex = 8; @@ -523,22 +525,33 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) srcIndex++; dstIndex++; } +#if ENGLISH labelText[dstIndex++] = CHAR_SPACE; //Copy POKEMON string to label StringCopy(labelText + dstIndex, gOtherText_Poke); +#elif GERMAN + labelText[dstIndex] = EOS; + labelText[5] = EXT_CTRL_CODE_BEGIN; + labelText[6] = EXT_CTRL_CODE_CLEAR; + labelText[7] = (0x70 - 6 * srcIndex) >> 1; +#endif Menu_PrintText( - labelText, - gStarterChoose_LabelCoords[selection][0], - gStarterChoose_LabelCoords[selection][1]); + labelText, + gStarterChoose_LabelCoords[selection][0], + gStarterChoose_LabelCoords[selection][1]); AddTextColorCtrlCode(labelText, 0, 15, 8); //Copy Pokemon name to label +#if ENGLISH AlignStringInMenuWindow(labelText + 5, gSpeciesNames[species], 0x6B, 1); +#elif GERMAN + AlignStringInMenuWindow(labelText + 5, gSpeciesNames[species], 0x70, 2); +#endif Menu_PrintText( - labelText, - gStarterChoose_LabelCoords[selection][0], - gStarterChoose_LabelCoords[selection][1] + 2); + labelText, + gStarterChoose_LabelCoords[selection][0], + gStarterChoose_LabelCoords[selection][1] + 2); labelLeft = gStarterChoose_LabelCoords[selection][0] * 8 + 4; labelRight = (gStarterChoose_LabelCoords[selection][0] + 13) * 8 + 4; @@ -547,161 +560,6 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) REG_WIN0H = WIN_RANGE(labelLeft, labelRight); REG_WIN0V = WIN_RANGE(labelTop, labelBottom); } -#elif GERMAN -NAKED -static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x48\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - cmp r0, 0xFF\n\ - beq _0810A872\n\ - ldr r1, _0810A960 @ =gStarterChoose_LabelCoords\n\ - lsls r2, r0, 1\n\ - adds r0, r2, r1\n\ - ldrb r0, [r0]\n\ - adds r1, 0x1\n\ - adds r2, r1\n\ - ldrb r1, [r2]\n\ - adds r2, r0, 0\n\ - adds r2, 0xD\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - adds r3, r1, 0x3\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - bl Menu_EraseWindowRect\n\ - ldr r0, _0810A964 @ =0x04000040\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x4\n\ - strh r1, [r0]\n\ -_0810A872:\n\ - adds r0, r5, 0\n\ - bl GetStarterPokemon\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - adds r0, r6, 0\n\ - bl SpeciesToNationalPokedexNum\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl GetPokemonCategory\n\ - adds r4, r0, 0\n\ - mov r0, sp\n\ - movs r1, 0\n\ - movs r2, 0xF\n\ - movs r3, 0x8\n\ - bl AddTextColorCtrlCode\n\ - movs r2, 0x8\n\ - movs r3, 0\n\ - ldrb r0, [r4]\n\ - lsls r5, 1\n\ - mov r7, sp\n\ - adds r7, 0x5\n\ - cmp r0, 0xFF\n\ - beq _0810A8CA\n\ -_0810A8A8:\n\ - mov r0, sp\n\ - adds r1, r0, r2\n\ - adds r0, r4, r3\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - adds r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - adds r0, r4, r3\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xFF\n\ - beq _0810A8CA\n\ - cmp r3, 0xA\n\ - bls _0810A8A8\n\ -_0810A8CA:\n\ - mov r0, sp\n\ - adds r1, r0, r2\n\ - movs r0, 0xFF\n\ - strb r0, [r1]\n\ - mov r1, sp\n\ - movs r0, 0xFC\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0x11\n\ - strb r0, [r1, 0x6]\n\ - mov r2, sp\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 1\n\ - movs r0, 0x70\n\ - subs r0, r1\n\ - asrs r0, 1\n\ - strb r0, [r2, 0x7]\n\ - ldr r0, _0810A960 @ =gStarterChoose_LabelCoords\n\ - adds r1, r5, r0\n\ - ldrb r4, [r1]\n\ - adds r0, 0x1\n\ - adds r0, r5, r0\n\ - ldrb r5, [r0]\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - adds r2, r5, 0\n\ - bl Menu_PrintText\n\ - mov r0, sp\n\ - movs r1, 0\n\ - movs r2, 0xF\n\ - movs r3, 0x8\n\ - bl AddTextColorCtrlCode\n\ - movs r0, 0xB\n\ - adds r1, r6, 0\n\ - muls r1, r0\n\ - ldr r0, _0810A968 @ =gSpeciesNames\n\ - adds r1, r0\n\ - adds r0, r7, 0\n\ - movs r2, 0x70\n\ - movs r3, 0x2\n\ - bl AlignStringInMenuWindow\n\ - adds r2, r5, 0x2\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl Menu_PrintText\n\ - lsls r0, r4, 3\n\ - adds r0, 0x4\n\ - lsls r0, 24\n\ - adds r4, 0xD\n\ - lsls r4, 3\n\ - adds r4, 0x4\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r1, r5, 27\n\ - adds r5, 0x4\n\ - lsls r5, 27\n\ - lsrs r5, 24\n\ - ldr r2, _0810A964 @ =0x04000040\n\ - lsrs r0, 16\n\ - orrs r0, r4\n\ - strh r0, [r2]\n\ - ldr r0, _0810A96C @ =0x04000044\n\ - lsrs r1, 16\n\ - orrs r1, r5\n\ - strh r1, [r0]\n\ - add sp, 0x48\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0810A960: .4byte gStarterChoose_LabelCoords\n\ -_0810A964: .4byte 0x04000040\n\ -_0810A968: .4byte gSpeciesNames\n\ -_0810A96C: .4byte 0x04000044\n\ - .syntax divided\n"); -} -#endif static void nullsub_72(struct Sprite *sprite) { diff --git a/src/title_screen.c b/src/title_screen.c index 833f76cec..c686c8d89 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -422,7 +422,6 @@ void SpriteCallback_PressStartCopyrightBanner(struct Sprite *sprite) sprite->invisible = FALSE; } -#if ENGLISH static void CreatePressStartBanner(s16 x, s16 y) { u8 i; @@ -435,111 +434,15 @@ static void CreatePressStartBanner(s16 x, s16 y) StartSpriteAnim(&gSprites[spriteId], i); gSprites[spriteId].data[0] = 1; } -} -#elif GERMAN -NAKED -static void CreatePressStartBanner(s16 x, s16 y) -{ - 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\ - lsls r0, 16\n\ - ldr r2, _0807C3AC @ =0xffe00000\n\ - adds r0, r2\n\ - lsrs r0, 16\n\ - movs r6, 0\n\ - lsls r1, 16\n\ - mov r10, r1\n\ - mov r8, r10\n\ -_0807C302:\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - adds r1, r5, 0\n\ - mov r3, r8\n\ - asrs r2, r3, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - ldr r0, _0807C3B4 @ =gSprites\n\ - mov r9, r0\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnim\n\ - movs r7, 0x1\n\ - strh r7, [r4, 0x2E]\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r5, 0x20\n\ - lsls r5, 16\n\ - lsrs r0, r5, 16\n\ - cmp r6, 0x2\n\ - bls _0807C302\n\ - ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\ - mov r8, r1\n\ - lsls r5, r0, 16\n\ - asrs r5, 16\n\ - mov r2, r10\n\ - asrs r6, r2, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x8\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - subs r5, 0x60\n\ - lsls r5, 16\n\ - asrs r5, 16\n\ - subs r6, 0x8\n\ - lsls r6, 16\n\ - asrs r6, 16\n\ - mov r0, r8\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r4, r0, 4\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - add r4, r9\n\ - adds r0, r4, 0\n\ - movs r1, 0x9\n\ - bl StartSpriteAnim\n\ - strh r7, [r4, 0x2E]\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0807C3AC: .4byte 0xffe00000\n\ -_0807C3B0: .4byte sStartCopyrightBannerSpriteTemplate\n\ -_0807C3B4: .4byte gSprites\n\ - .syntax divided\n"); -} +#if GERMAN + spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); + StartSpriteAnim(&gSprites[spriteId], 8); + gSprites[spriteId].data[0] = 1; + spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x - 0x60, y - 0x8, 0); + StartSpriteAnim(&gSprites[spriteId], 9); + gSprites[spriteId].data[0] = 1; #endif +} static void CreateCopyrightBanner(s16 x, s16 y) { |