summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2021-07-14 14:15:12 -0400
committerGitHub <noreply@github.com>2021-07-14 14:15:12 -0400
commit2162e948d1889cbf5c651b9747dab1194323f2da (patch)
tree57a826d56544031e7193ec180ca003c704efd654
parent05559a2fcff5262b6a0c694e745e8dbdb5905a10 (diff)
parent6333c3957edf9130ac44ac7fd152a8563621f1a5 (diff)
Merge pull request #831 from PikalaxALT/more_matching
Match more functions
-rw-r--r--include/constants/rgb.h13
-rw-r--r--include/global.h12
-rw-r--r--src/image_processing_effects.c10
-rw-r--r--src/item_menu.c623
-rw-r--r--src/menu.c98
-rw-r--r--src/option_menu.c87
-rw-r--r--src/pokemon_storage_system_2.c201
-rw-r--r--src/pokemon_summary_screen.c361
-rw-r--r--src/pokenav.c1788
-rw-r--r--src/pokenav_before.c1351
-rw-r--r--src/script_menu.c189
-rw-r--r--src/starter_choose.c194
-rw-r--r--src/title_screen.c113
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)
{