summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_setup.c2
-rw-r--r--src/debug/matsuda_debug_menu.c229
-rw-r--r--src/engine/mystery_event_script.c2
-rw-r--r--src/engine/record_mixing.c10
-rw-r--r--src/field/battle_tower.c20
-rw-r--r--src/field/event_data.c2
-rw-r--r--src/field/field_special_scene.c12
-rw-r--r--src/field/field_specials.c90
-rw-r--r--src/field/field_tasks.c20
-rw-r--r--src/field/fldeff_secret_base_pc.c2
-rw-r--r--src/field/item_use.c2
-rw-r--r--src/field/lottery_corner.c16
-rw-r--r--src/field/map_name_popup.c2
-rw-r--r--src/field/mauville_man.c3
-rw-r--r--src/field/overworld.c2
-rw-r--r--src/field/player_pc.c4
-rw-r--r--src/field/secret_base.c30
-rw-r--r--src/field/tv.c18
-rw-r--r--src/pokemon/pokemon_summary_screen.c253
-rw-r--r--src/pokenav_before.c677
-rw-r--r--src/scene/credits.c2
-rw-r--r--src/script_pokemon_util_80C4BF0.c289
-rw-r--r--src/script_pokemon_util_80F99CC.c144
23 files changed, 331 insertions, 1500 deletions
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index f71aad090..2f94dd407 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -858,7 +858,7 @@ static void CB2_GiveStarter(void)
{
u16 starterPoke;
- *GetVarPointer(0x4023) = gSpecialVar_Result;
+ *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result;
starterPoke = GetStarterPokemon(gSpecialVar_Result);
ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0);
ResetTasks();
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 728562b81..d797e8850 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -18,9 +18,9 @@
#include "ewram.h"
extern u8 gUnknown_0203856C;
-extern u16 gUnknown_02038670[];
-extern u16 gUnknown_02038678[];
-extern u16 gUnknown_02038680[];
+extern s16 gUnknown_02038670[];
+extern s16 gUnknown_02038678[];
+extern s16 gUnknown_02038680[];
extern u8 gContestFinalStandings[];
extern u8 gUnknown_02038694;
extern u8 gIsLinkContest;
@@ -922,211 +922,40 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2)
}
}
-//Do this later
-/*
void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
{
- u32 r5;
- u16 r7;
- u8 r7_2;
- //u32 sp44;
- //u32 sp48;
- u32 sp58;
+ u16 len;
+ u8 r7;
+ s32 i;
+ u8 sp0[32];
+ u8 sp20[32];
+ u8 str2[2];
- gMain.state = 0;
+ DmaClear32(3, (void *)(VRAM + 0x18000 - (d + 1) * 256), 0x100);
- r5 = d + 1;
- //Could also be DmaClear32
- DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100);
+ len = StringLength(string);
+ if (len > 8)
+ len = 8;
- r7 = StringLength(string);
- if (r7 > 8)
- r7 = 8;
- sp58 = d * 2;
+ for (i = 0; i < len; i++)
+ {
+ str2[0] = string[i];
+ str2[1] = EOS;
+ sub_80034D4(sp0, str2);
+ DmaCopy32Defvars(3, sp20, (void *)(VRAM + 0x18000 - (d + 1) * 256 + i * 32), sizeof(sp0));
+ }
- //More stuff
+ r7 = 124 - d * 2;
- r7_2 = 0x7C - sp58;
+ gMain.oamBuffer[r7] = gUnknown_083C9400;
+ gMain.oamBuffer[r7].tileNum = 1024 - (d + 1) * 8;
+ gMain.oamBuffer[r7].x = b;
+ gMain.oamBuffer[r7].y = c;
-}
-*/
-
-__attribute__((naked))
-void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
-{
- 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, 0x64\n\
- mov r9, r0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- str r1, [sp, 0x48]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4C]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r10, r3\n\
- mov r5, r10\n\
- adds r5, 0x1\n\
- lsls r1, r5, 8\n\
- ldr r0, _080AAEC4 @ =0x06018000\n\
- subs r1, r0, r1\n\
- movs r0, 0\n\
- str r0, [sp, 0x44]\n\
- ldr r4, _080AAEC8 @ =0x040000d4\n\
- add r0, sp, 0x44\n\
- str r0, [r4]\n\
- str r1, [r4, 0x4]\n\
- ldr r0, _080AAECC @ =0x85000040\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- mov r0, r9\n\
- bl StringLength\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- cmp r7, 0x8\n\
- bls _080AADD0\n\
- movs r7, 0x8\n\
-_080AADD0:\n\
- movs r6, 0\n\
- mov r8, r5\n\
- mov r1, r10\n\
- lsls r1, 1\n\
- str r1, [sp, 0x58]\n\
- ldr r2, [sp, 0x48]\n\
- adds r2, 0x20\n\
- str r2, [sp, 0x5C]\n\
- cmp r6, r7\n\
- bge _080AAE1E\n\
- add r5, sp, 0x40\n\
- add r0, sp, 0x20\n\
- mov r10, r0\n\
- ldr r2, _080AAEC4 @ =0x06018000\n\
-_080AADEC:\n\
- mov r1, r9\n\
- adds r0, r1, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r5]\n\
- movs r0, 0xFF\n\
- strb r0, [r5, 0x1]\n\
- mov r0, sp\n\
- adds r1, r5, 0\n\
- str r2, [sp, 0x60]\n\
- bl sub_80034D4\n\
- mov r1, r8\n\
- lsls r0, r1, 8\n\
- ldr r2, [sp, 0x60]\n\
- subs r0, r2, r0\n\
- mov r1, r10\n\
- str r1, [r4]\n\
- str r0, [r4, 0x4]\n\
- ldr r0, _080AAED0 @ =0x84000008\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r2, 0x20\n\
- adds r6, 0x1\n\
- cmp r6, r7\n\
- blt _080AADEC\n\
-_080AAE1E:\n\
- movs r1, 0x7C\n\
- ldr r2, [sp, 0x58]\n\
- subs r1, r2\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- ldr r0, _080AAED4 @ =gMain\n\
- mov r9, r0\n\
- lsls r3, r7, 3\n\
- add r3, r9\n\
- ldr r0, _080AAED8 @ =gUnknown_083C9400\n\
- ldr r1, [r0]\n\
- ldr r2, [r0, 0x4]\n\
- str r1, [sp, 0x50]\n\
- str r2, [sp, 0x54]\n\
- str r1, [r3, 0x3C]\n\
- str r2, [r3, 0x40]\n\
- mov r2, r8\n\
- lsls r0, r2, 3\n\
- movs r1, 0x80\n\
- lsls r1, 3\n\
- adds r2, r1, 0\n\
- subs r2, r0\n\
- adds r6, r3, 0\n\
- adds r6, 0x40\n\
- ldr r0, _080AAEDC @ =0x000003ff\n\
- mov r8, r0\n\
- mov r1, r8\n\
- ands r2, r1\n\
- ldrh r5, [r6]\n\
- ldr r4, _080AAEE0 @ =0xfffffc00\n\
- adds r0, r4, 0\n\
- ands r0, r5\n\
- orrs r0, r2\n\
- strh r0, [r6]\n\
- ldrh r5, [r3, 0x3E]\n\
- ldr r2, _080AAEE4 @ =0xfffffe00\n\
- adds r0, r2, 0\n\
- ands r0, r5\n\
- ldr r1, [sp, 0x48]\n\
- orrs r0, r1\n\
- strh r0, [r3, 0x3E]\n\
- adds r3, 0x3C\n\
- add r0, sp, 0x4C\n\
- ldrb r0, [r0]\n\
- strb r0, [r3]\n\
- adds r1, r7, 0x1\n\
- lsls r1, 3\n\
- mov r0, r9\n\
- adds r7, r1, r0\n\
- ldr r0, [sp, 0x50]\n\
- ldr r1, [sp, 0x54]\n\
- str r0, [r7, 0x3C]\n\
- str r1, [r7, 0x40]\n\
- ldrh r0, [r6]\n\
- lsls r0, 22\n\
- lsrs r0, 22\n\
- adds r0, 0x4\n\
- adds r5, r7, 0\n\
- adds r5, 0x40\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldrh r3, [r5]\n\
- ands r4, r3\n\
- orrs r4, r0\n\
- strh r4, [r5]\n\
- ldrh r0, [r7, 0x3E]\n\
- ands r2, r0\n\
- ldr r0, [sp, 0x5C]\n\
- orrs r2, r0\n\
- strh r2, [r7, 0x3E]\n\
- adds r1, r7, 0\n\
- adds r1, 0x3C\n\
- add r2, sp, 0x4C\n\
- ldrb r2, [r2]\n\
- strb r2, [r1]\n\
- add sp, 0x64\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\
-_080AAEC4: .4byte 0x06018000\n\
-_080AAEC8: .4byte 0x040000d4\n\
-_080AAECC: .4byte 0x85000040\n\
-_080AAED0: .4byte 0x84000008\n\
-_080AAED4: .4byte gMain\n\
-_080AAED8: .4byte gUnknown_083C9400\n\
-_080AAEDC: .4byte 0x000003ff\n\
-_080AAEE0: .4byte 0xfffffc00\n\
-_080AAEE4: .4byte 0xfffffe00\n\
- .syntax divided\n");
+ gMain.oamBuffer[r7 + 1] = gUnknown_083C9400;
+ gMain.oamBuffer[r7 + 1].tileNum = gMain.oamBuffer[r7].tileNum + 4;
+ gMain.oamBuffer[r7 + 1].x = b + 32;
+ gMain.oamBuffer[r7 + 1].y = c;
}
void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d)
diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c
index f8909c4eb..6fcad66ac 100644
--- a/src/engine/mystery_event_script.c
+++ b/src/engine/mystery_event_script.c
@@ -307,7 +307,7 @@ bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
ctx->data[2] = 2;
if (IsEnigmaBerryValid() == TRUE)
- VarSet(0x402D, 1);
+ VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1);
else
ctx->data[2] = 1;
diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c
index 6cb1e54b2..997a257f5 100644
--- a/src/engine/record_mixing.c
+++ b/src/engine/record_mixing.c
@@ -119,7 +119,7 @@ void Task_RecordMixing_Main(u8 taskId)
{
case 0: // init
sub_8007270(gSpecialVar_0x8005);
- VarSet(VAR_0x4000, 1);
+ VarSet(VAR_TEMP_0, 1);
gUnknown_03000718 = 0;
RecordMixing_PrepareExchangePacket();
CreateRecordMixingSprite();
@@ -1016,26 +1016,26 @@ void sub_80B9F3C(u16 *a, u8 b)
{
if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1))
{
- VarSet(VAR_0x4001, *a);
+ VarSet(VAR_TEMP_1, *a);
StringCopy(gStringVar1, gLinkPlayers[0].name);
if (*a == ITEM_EON_TICKET)
FlagSet(FLAG_SYS_HAS_EON_TICKET);
}
else
{
- VarSet(VAR_0x4001, ITEM_NONE);
+ VarSet(VAR_TEMP_1, ITEM_NONE);
}
}
else
{
if (AddBagItem(*a, 1) == TRUE)
{
- VarSet(VAR_0x4001, *a);
+ VarSet(VAR_TEMP_1, *a);
StringCopy(gStringVar1, gLinkPlayers[0].name);
}
else
{
- VarSet(VAR_0x4001, ITEM_NONE);
+ VarSet(VAR_TEMP_1, ITEM_NONE);
}
}
}
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 6b6064c16..12337631f 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -294,24 +294,24 @@ void sub_8134548(void)
ResetBattleTowerStreak(levelType);
if (!var1)
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
break;
case 1:
ResetBattleTowerStreak(levelType);
- VarSet(VAR_0x4000, 1);
+ VarSet(VAR_TEMP_0, 1);
var1++;
break;
case 4:
- VarSet(VAR_0x4000, 2);
+ VarSet(VAR_TEMP_0, 2);
var1++;
break;
case 5:
- VarSet(VAR_0x4000, 3);
+ VarSet(VAR_TEMP_0, 3);
var1++;
break;
case 2:
- VarSet(VAR_0x4000, 4);
+ VarSet(VAR_TEMP_0, 4);
var1++;
break;
case 3:
@@ -323,7 +323,7 @@ void sub_8134548(void)
if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6)
&& (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
ValidateBattleTowerRecordChecksums();
@@ -801,7 +801,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 30)
{
u8 trainerObjectGfxId = sMaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
@@ -809,11 +809,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 20)
{
u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
- VarSet(0x4010, MAP_OBJ_GFX_BOY_1);
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BOY_1);
}
void SetEReaderTrainerGfxId(void)
@@ -1976,7 +1976,7 @@ void sub_8135BA0(void)
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
}
- VarSet(VAR_0x4000, 0);
+ VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
TrySavingData(EREADER_SAVE);
}
diff --git a/src/field/event_data.c b/src/field/event_data.c
index 587da8138..86045df15 100644
--- a/src/field/event_data.c
+++ b/src/field/event_data.c
@@ -138,7 +138,7 @@ bool8 VarSet(u16 id, u16 value)
u8 VarGetFieldObjectGraphicsId(u8 id)
{
- return VarGet(0x4010 + id);
+ return VarGet(VAR_OBJ_GFX_ID_0 + id);
}
u8 *GetFlagPointer(u16 id)
diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c
index 0b7fe336e..67b652a57 100644
--- a/src/field/field_special_scene.c
+++ b/src/field/field_special_scene.c
@@ -291,7 +291,7 @@ bool8 sub_80C7754(void)
void Task_HandlePorthole(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *var = GetVarPointer(VAR_PORTHOLE);
+ u16 *var = GetVarPointer(VAR_PORTHOLE_STATE);
struct WarpData *location = &gSaveBlock1.location;
switch (data[0])
@@ -337,8 +337,8 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagClear(0x4001);
- FlagClear(0x4000);
+ FlagClear(FLAG_SPECIAL_FLAG_1);
+ FlagClear(FLAG_SPECIAL_FLAG_0);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
@@ -352,7 +352,7 @@ void sub_80C78A0(void)
gSprites[spriteId].coordOffsetEnabled = FALSE;
- if (VarGet(0x40B4) == 2)
+ if (VarGet(VAR_PORTHOLE_STATE) == 2)
{
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
}
@@ -374,8 +374,8 @@ void sub_80C791C(void)
void sub_80C7958(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
- FlagSet(0x4001);
- FlagSet(0x4000);
+ FlagSet(FLAG_SPECIAL_FLAG_1);
+ FlagSet(FLAG_SPECIAL_FLAG_0);
saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1);
sub_80C7754();
sub_8080F9C();
diff --git a/src/field/field_specials.c b/src/field/field_specials.c
index e09f5d547..8cb1ba487 100644
--- a/src/field/field_specials.c
+++ b/src/field/field_specials.c
@@ -99,13 +99,13 @@ u16 GetPlayerAvatarBike(void)
return 0;
}
-static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
+static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
{
u8 result;
- if (arg1 <= 99)
+ if (numBikeCollisions <= 99)
{
- ConvertIntToDecimalStringN(gStringVar1, arg1, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2);
StringAppend(gStringVar1, gOtherText_Times);
}
else
@@ -113,11 +113,11 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
StringCopy(gStringVar1, gOtherText_99Times);
}
- if (arg0 < 3600)
+ if (numFrames < 3600)
{
- ConvertIntToDecimalStringN(gStringVar2, arg0 / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
gStringVar2[2] = CHAR_DECIMAL_SEPARATOR;
- ConvertIntToDecimalStringN(&gStringVar2[3], ((arg0 % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
+ ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
StringAppend(gStringVar2, gOtherText_Seconds);
}
else
@@ -126,44 +126,44 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
result = 0;
- if (arg1 == 0)
+ if (numBikeCollisions == 0)
{
result = 5;
}
- else if (arg1 < 4)
+ else if (numBikeCollisions < 4)
{
result = 4;
}
- else if (arg1 < 10)
+ else if (numBikeCollisions < 10)
{
result = 3;
}
- else if (arg1 < 20)
+ else if (numBikeCollisions < 20)
{
result = 2;
}
- else if (arg1 < 100)
+ else if (numBikeCollisions < 100)
{
result = 1;
}
- if (arg0 / 60 <= 10)
+ if (numFrames / 60 <= 10)
{
result += 5;
}
- else if (arg0 / 60 <= 15)
+ else if (numFrames / 60 <= 15)
{
result += 4;
}
- else if (arg0 / 60 <= 20)
+ else if (numFrames / 60 <= 20)
{
result += 3;
}
- else if (arg0 / 60 <= 40)
+ else if (numFrames / 60 <= 40)
{
result += 2;
}
- else if (arg0 / 60 < 60)
+ else if (numFrames / 60 < 60)
{
result += 1;
}
@@ -173,36 +173,36 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
void FinishCyclingRoadChallenge(void) {
- const u32 time = gMain.vblankCounter1 - gBikeCyclingTimer;
+ const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer;
- DetermineCyclingRoadResults(time, gBikeCollisions);
- RecordCyclingRoadResults(time, gBikeCollisions);
+ DetermineCyclingRoadResults(numFrames, gBikeCollisions);
+ RecordCyclingRoadResults(numFrames, gBikeCollisions);
}
-static void RecordCyclingRoadResults(u32 arg0, u8 arg1) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) {
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record > arg0 || record == 0)
+ if (framesRecord > numFrames || framesRecord == 0)
{
- VarSet(0x4028, arg0);
- VarSet(0x4029, arg0 >> 16);
- VarSet(0x4027, arg1);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16);
+ VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions);
}
}
u16 GetRecordedCyclingRoadResults(void) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record == 0)
+ if (framesRecord == 0)
{
return FALSE;
}
- DetermineCyclingRoadResults(record, VarGet(0x4027));
+ DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS));
return TRUE;
}
@@ -212,9 +212,9 @@ void UpdateCyclingRoadState(void) {
return;
}
- if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3)
+ if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3)
{
- VarSet(0x40a9, 0);
+ VarSet(VAR_CYCLING_CHALLENGE_STATE, 0);
Overworld_SetSavedMusic(SE_STOP);
}
}
@@ -242,7 +242,7 @@ bool32 CountSSTidalStep(u16 delta)
u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
{
u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT);
- switch (*GetVarPointer(VAR_PORTHOLE))
+ switch (*GetVarPointer(VAR_PORTHOLE_STATE))
{
case 1:
case 8:
@@ -1880,12 +1880,12 @@ u8 sub_810F5BC(void)
{
if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1))
{
- VarSet(VAR_0x409a, 4);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 4);
return TRUE;
}
else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2))
{
- VarSet(VAR_0x409a, 5);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 5);
return TRUE;
}
}
@@ -1914,7 +1914,7 @@ void PutZigzagoonInPlayerParty(void)
bool8 IsStarterInParty(void)
{
u8 i;
- u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
+ u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON));
u8 partyCount = CalculatePlayerPartyCount();
for (i = 0; i < partyCount; i++)
{
@@ -2042,8 +2042,8 @@ void sub_810F8FC(void)
u16 sub_810F908(void)
{
- u16 var40c2 = VarGet(VAR_0x40C2);
- if (gLocalTime.days - var40c2 >= 7)
+ u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY);
+ if (gLocalTime.days - tmReceivedDay >= 7)
{
return 0;
}
@@ -2051,12 +2051,12 @@ u16 sub_810F908(void)
{
return 8;
}
- return 7 - (gLocalTime.days - var40c2);
+ return 7 - (gLocalTime.days - tmReceivedDay);
}
u16 sub_810F950(void)
{
- VarSet(VAR_0x40C2, gLocalTime.days);
+ VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days);
return gLocalTime.days;
}
@@ -2141,13 +2141,13 @@ void sub_810FAA0(void)
FlagClear(0x316);
FlagClear(0x317);
FlagClear(0x318);
- VarSet(VAR_0x4095, 1);
+ VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1);
}
}
u8 sub_810FB10(u8 a0)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
if ((gSaveBlock1.vars[0x41] & 0x7f) + gUnknown_083F8404[a0] >= 20)
{
@@ -2350,7 +2350,7 @@ void sub_810FE1C(void *linkRecords, u8 a, u8 b)
void sub_810FEFC(void)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
sub_810FA74();
if (gBattleOutcome == 1)
diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c
index 108ba64ba..393c7d75a 100644
--- a/src/field/field_tasks.c
+++ b/src/field/field_tasks.c
@@ -554,20 +554,20 @@ const u16 gUnknown_083763E4[] = {
0,
0,
0,
- VAR_0x4001,
- VAR_0x4002,
- VAR_0x4003,
- VAR_0x4004,
+ VAR_TEMP_1,
+ VAR_TEMP_2,
+ VAR_TEMP_3,
+ VAR_TEMP_4,
0,
0,
- VAR_0x4005,
- VAR_0x4006,
- VAR_0x4007,
+ VAR_TEMP_5,
+ VAR_TEMP_6,
+ VAR_TEMP_7,
0,
0,
- VAR_0x4008,
- VAR_0x4009,
- VAR_0x400A,
+ VAR_TEMP_8,
+ VAR_TEMP_9,
+ VAR_TEMP_A,
0,
0,
0,
diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c
index 8d71a4fb9..394c4bc56 100644
--- a/src/field/fldeff_secret_base_pc.c
+++ b/src/field/fldeff_secret_base_pc.c
@@ -60,7 +60,7 @@ void DoSecretBasePCTurnOffEffect(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
PlaySE(SE_PC_OFF);
- if (!VarGet(VAR_0x4054))
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
MapGridSetMetatileIdAt(x, y, 3616);
else
MapGridSetMetatileIdAt(x, y, 3617);
diff --git a/src/field/item_use.c b/src/field/item_use.c
index 37cd8ba78..cf5f05eb9 100644
--- a/src/field/item_use.c
+++ b/src/field/item_use.c
@@ -921,7 +921,7 @@ static void PrepareItemUseMessage(void)
void ItemUseOutOfBattle_Repel(u8 var)
{
- if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
+ if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
PrepareItemUseMessage();
diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c
index 83febc56e..03de26054 100644
--- a/src/field/lottery_corner.c
+++ b/src/field/lottery_corner.c
@@ -30,7 +30,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_LOTTERY_PRIZE, 0);
}
void SetRandomLotteryNumber(u16 i)
@@ -152,19 +152,19 @@ static u8 GetMatchingDigits(u16 winNumber, u16 otId)
// lottery numbers go from 0 to 99999, not 65535 (0xFFFF). interestingly enough, the function that calls GetLotteryNumber shifts to u16, so it cant be anything above 65535 anyway.
void SetLotteryNumber(u32 lotteryNum)
{
- u16 lowNum = lotteryNum >> 16;
- u16 highNum = lotteryNum;
+ u16 high = lotteryNum >> 16;
+ u16 low = lotteryNum;
- VarSet(VAR_POKELOT_RND1, highNum);
- VarSet(VAR_POKELOT_RND2, lowNum);
+ VarSet(VAR_LOTTERY_RND_L, low);
+ VarSet(VAR_LOTTERY_RND_H, high);
}
u32 GetLotteryNumber(void)
{
- u16 highNum = VarGet(VAR_POKELOT_RND1);
- u16 lowNum = VarGet(VAR_POKELOT_RND2);
+ u16 low = VarGet(VAR_LOTTERY_RND_L);
+ u16 high = VarGet(VAR_LOTTERY_RND_H);
- return (lowNum << 16) | highNum;
+ return (high << 16) | low;
}
// interestingly, this may have been the original lottery number set function, but GF tried to change it to 32-bit later but didnt finish changing all calls as one GetLotteryNumber still shifts to u16.
diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c
index 01105d0db..2e2dfc72e 100644
--- a/src/field/map_name_popup.c
+++ b/src/field/map_name_popup.c
@@ -19,7 +19,7 @@ bool8 unref_sub_80A2F44(void)
void ShowMapNamePopup(void)
{
- if (FlagGet(0x4000) != TRUE)
+ if (FlagGet(FLAG_SPECIAL_FLAG_0) != TRUE)
{
if (!FuncIsActiveTask(Task_MapNamePopup))
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 30f6f5233..4db513f65 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -10,6 +10,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
+#include "constants/map_objects.h"
#include "constants/songs.h"
#include "sound.h"
#include "string_util.h"
@@ -974,7 +975,7 @@ static void Task_BardSong(u8 taskId)
void sub_80F83D0(void)
{
- VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan());
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD + GetCurrentMauvilleOldMan());
}
struct Story
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 0a1a3d008..d0e40eac3 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -816,7 +816,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
- if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED))
+ if (VarGet(VAR_WEATHER_INSTITUTE_STATE))
return FALSE;
if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F))
return FALSE;
diff --git a/src/field/player_pc.c b/src/field/player_pc.c
index 6482ceee9..4fef09386 100644
--- a/src/field/player_pc.c
+++ b/src/field/player_pc.c
@@ -196,8 +196,8 @@ void NewGameInitPCItems(void)
u8 i;
// because Game Freak don't know how to use a struct or a 2d array
- for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, ITEM_ID) && NEW_GAME_PC_ITEMS(i, QUANTITY) &&
- AddPCItem(NEW_GAME_PC_ITEMS(i, ITEM_ID), NEW_GAME_PC_ITEMS(i, QUANTITY)) == TRUE; i++)
+ for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) &&
+ AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++)
;
}
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 7589ab1e3..400074604 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -180,7 +180,7 @@ void sub_80BB5E4(void)
if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
continue;
gSpecialVar_Result = 1;
- VarSet(VAR_0x4054, i);
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
break;
}
}
@@ -284,7 +284,7 @@ void sub_80BB8CC(void)
for (idx=0; idx<4; idx++) {
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
}
- VarSet(VAR_0x4054, 0);
+ VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
StringCopyN(gSaveBlock1.secretBases[0].playerName, gSaveBlock2.playerName, nameLength);
@@ -333,7 +333,7 @@ void sub_80BBA48(u8 taskid)
}
break;
case 2:
- curbaseid = VarGet(VAR_0x4054);
+ curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
gSaveBlock1.secretBases[curbaseid].sbr_field_10++;
sub_80BBA14();
@@ -412,7 +412,7 @@ void sub_80BBCCC(u8 flagIn)
u16 curBaseId;
u16 x, y;
if (CurrentMapIsSecretBase()) {
- curBaseId = VarGet(VAR_0x4054);
+ curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
for (x=0; x<16; x++) {
if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) {
sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
@@ -437,7 +437,7 @@ void sub_80BBDD0(void)
u8 metatile;
u8 permission;
u8 ndecor;
- u16 curBase = VarGet(VAR_0x4054);
+ u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
if (!CurrentMapIsSecretBase()) {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
@@ -478,8 +478,8 @@ void sub_80BBDD0(void)
void sub_80BBFA4(void)
{
- int curBase = VarGet(VAR_0x4054);
- VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
+ int curBase = VarGet(VAR_CURRENT_SECRET_BASE);
+ VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
}
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
@@ -571,12 +571,12 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
}
u8 *GetSecretBaseMapName(u8 *dest) {
- gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].secretBaseId;
- return sub_80BC190(dest, VarGet(VAR_0x4054));
+ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
+ return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
void sub_80BC224(void) {
- u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].playerName;
+ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
u8 *var3 = StringCopyN(var1, var0, var2);
@@ -1173,7 +1173,7 @@ void sub_80BCBF8(u8 taskId)
void sub_80BCC54(u8 taskId)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
BuyMenuFreeMemory();
DestroyVerticalScrollIndicator(0);
@@ -1199,7 +1199,7 @@ u8 sub_80BCCA4(u8 secretBaseIndex)
const u8 *sub_80BCCE8(void)
{
- u8 param = sub_80BCCA4(VarGet(VAR_0x4054));
+ u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE));
if (param == 0) return UnknownString_81A1BB2;
if (param == 1) return UnknownString_81A1F67;
if (param == 2) return UnknownString_81A2254;
@@ -1229,7 +1229,7 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
@@ -1237,12 +1237,12 @@ void sub_80BCE1C(void)
void sub_80BCE4C()
{
- gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
}
void sub_80BCE90()
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(FLAG_DAILY_UNKNOWN_8C2))
{
diff --git a/src/field/tv.c b/src/field/tv.c
index 1d5bf929c..c38da1f4c 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -2149,7 +2149,7 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
else
@@ -2157,21 +2157,21 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
}
- if (VarGet(VAR_0x4003) == 1)
+ if (VarGet(VAR_TEMP_3) == 1)
{
StringCopy(gStringVar1, gOtherText_Mom);
}
- else if (VarGet(VAR_0x4003) == 2)
+ else if (VarGet(VAR_TEMP_3) == 2)
{
StringCopy(gStringVar1, gOtherText_Dad);
}
- else if (VarGet(VAR_0x4003) > 2)
+ else if (VarGet(VAR_TEMP_3) > 2)
{
- if (VarGet(VAR_0x4003) % 2 == 0)
+ if (VarGet(VAR_TEMP_3) % 2 == 0)
StringCopy(gStringVar1, gOtherText_Mom);
else
StringCopy(gStringVar1, gOtherText_Dad);
@@ -2181,19 +2181,19 @@ void GetMomOrDadStringForTVMessage(void)
if (Random() % 2 != 0)
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
else
{
StringCopy(gStringVar1, gOtherText_Dad);
- VarSet(VAR_0x4003, 2);
+ VarSet(VAR_TEMP_3, 2);
}
}
}
void sub_80BFD20(void)
{
- VarSet(VAR_0x40BC, 0);
+ VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 4de5f5345..cd3793cb5 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -1167,13 +1167,13 @@ static void sub_809E5C4(void)
struct Pokemon *pkmn = &party[pssData.monIndex];
u8 moveIndex1 = pssData.selectedMoveIndex;
u8 moveIndex2 = pssData.switchMoveIndex;
-
+
u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
u8 move1pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1);
u8 move2pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2);
u8 ppBonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES);
-
+
// Calculate PP bonuses
u8 r9 = gUnknown_08208238[moveIndex1];
u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
@@ -1182,7 +1182,7 @@ static void sub_809E5C4(void)
ppBonuses &= ~r9;
ppBonuses &= ~r3;
ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
-
+
// Swap the moves
SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
@@ -1197,13 +1197,13 @@ static void sub_809E6D8(void)
struct BoxPokemon *pkmn = &boxMons[pssData.monIndex];
u8 moveIndex1 = pssData.selectedMoveIndex;
u8 moveIndex2 = pssData.switchMoveIndex;
-
+
u16 move1 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
u16 move2 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
u8 move1pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1);
u8 move2pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2);
u8 ppBonuses = GetBoxMonData(pkmn, MON_DATA_PP_BONUSES);
-
+
// Calculate PP bonuses
u8 r9 = gUnknown_08208238[moveIndex1];
u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
@@ -1212,7 +1212,7 @@ static void sub_809E6D8(void)
ppBonuses &= ~r9;
ppBonuses &= ~r3;
ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
-
+
// Swap the moves
SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
@@ -2078,7 +2078,7 @@ s8 sub_809F344(u8 partyIndex)
{
while (1)
{
- partyIndex++;
+ partyIndex++;
if (partyIndex == PARTY_SIZE)
{
return -1;
@@ -2100,7 +2100,7 @@ s8 sub_809F388(u8 partyIndex)
return -1;
}
- partyIndex--;
+ partyIndex--;
if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
{
return sDoubleBattlePartyOrder[partyIndex];
@@ -2332,7 +2332,7 @@ static bool8 sub_809F7D0(u8 taskId)
u16 move;
sub_809F678(&mon);
- move = GetMonMove(&mon, pssData.selectedMoveIndex);
+ move = GetMonMove(&mon, pssData.selectedMoveIndex);
if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN)
{
return FALSE;
@@ -2341,17 +2341,13 @@ static bool8 sub_809F7D0(u8 taskId)
return TRUE;
}
-#ifdef NONMATCHING // The two "pssData.selectedMoveIndex = taskData[15];" lines have small register differences.
void sub_809F814(u8 taskId)
{
- u16 var1;
-
s16 *taskData = gTasks[taskId].data;
- var1 = taskData[14];
if (taskData[14] < 4)
{
- taskData[14] = var1 + 1;
+ taskData[14]++;
}
else if (gMain.newKeys & DPAD_UP)
{
@@ -2359,7 +2355,7 @@ void sub_809F814(u8 taskId)
taskData[0] = 4;
taskData[13] = 1;
pssData.selectedMoveIndex = taskData[15];
- sub_809E8F0(taskId, -1);
+ sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
@@ -2367,7 +2363,7 @@ void sub_809F814(u8 taskId)
taskData[0] = 4;
taskData[13] = 1;
pssData.selectedMoveIndex = taskData[15];
- sub_809E8F0(taskId, 1);
+ sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex);
}
else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
{
@@ -2410,229 +2406,6 @@ void sub_809F814(u8 taskId)
}
}
-#else
-__attribute__((naked))
-void sub_809F814(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r6, r0, 3\n\
- ldr r0, _0809F83C @ =gTasks + 0x8\n\
- mov r8, r0\n\
- adds r4, r6, r0\n\
- ldrh r1, [r4, 0x1C]\n\
- movs r2, 0x1C\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x3\n\
- bgt _0809F840\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x1C]\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F83C: .4byte gTasks + 0x8\n\
-_0809F840:\n\
- ldr r7, _0809F874 @ =gMain\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F880\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F878 @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r0, 0x4\n\
- strh r0, [r4]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x1A]\n\
- ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\
- ldrh r0, [r4, 0x1E]\n\
- adds r2, 0x79\n\
- strb r0, [r2]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- adds r0, r5, 0\n\
- bl sub_809E8F0\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F874: .4byte gMain\n\
-_0809F878: .4byte sub_809E260\n\
-_0809F87C: .4byte gSharedMem + 0x18000\n\
-_0809F880:\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F8B4\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F8AC @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r0, 0x4\n\
- strh r0, [r4]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x1A]\n\
- ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\
- ldrh r0, [r4, 0x1E]\n\
- adds r2, 0x79\n\
- strb r0, [r2]\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
- bl sub_809E8F0\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F8AC: .4byte sub_809E260\n\
-_0809F8B0: .4byte gSharedMem + 0x18000\n\
-_0809F8B4:\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F8C8\n\
- bl sub_80F9284\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _0809F918\n\
-_0809F8C8:\n\
- ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\
- ldrb r0, [r1, 0xB]\n\
- cmp r0, 0x2\n\
- beq _0809F9C0\n\
- cmp r0, 0x3\n\
- bne _0809F8F4\n\
- adds r0, r1, 0\n\
- adds r0, 0x79\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bne _0809F8E8\n\
- adds r0, r1, 0\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _0809F8F4\n\
-_0809F8E8:\n\
- movs r0, 0\n\
- movs r1, 0xE\n\
- movs r2, 0x9\n\
- movs r3, 0x12\n\
- bl MenuZeroFillWindowRect\n\
-_0809F8F4:\n\
- ldr r1, _0809F910 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _0809F914 @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- adds r0, r5, 0\n\
- b _0809F972\n\
- .align 2, 0\n\
-_0809F90C: .4byte gSharedMem + 0x18000\n\
-_0809F910: .4byte gTasks\n\
-_0809F914: .4byte sub_809E260\n\
-_0809F918:\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F92E\n\
- bl sub_80F9284\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0809F994\n\
-_0809F92E:\n\
- ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\
- adds r2, r1, 0\n\
- adds r2, 0x76\n\
- ldrb r0, [r1, 0xB]\n\
- ldrb r2, [r2]\n\
- cmp r0, r2\n\
- beq _0809F9C0\n\
- cmp r0, 0x2\n\
- bne _0809F960\n\
- adds r0, r1, 0\n\
- adds r0, 0x79\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bne _0809F954\n\
- adds r0, r1, 0\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _0809F960\n\
-_0809F954:\n\
- movs r0, 0\n\
- movs r1, 0xE\n\
- movs r2, 0x9\n\
- movs r3, 0x12\n\
- bl MenuZeroFillWindowRect\n\
-_0809F960:\n\
- ldr r1, _0809F98C @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _0809F990 @ =sub_809E260\n\
- str r1, [r0]\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
-_0809F972:\n\
- bl SummaryScreenHandleLeftRightInput\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x1\n\
- bl sub_80A1488\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x1\n\
- bl sub_80A1654\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F988: .4byte gSharedMem + 0x18000\n\
-_0809F98C: .4byte gTasks\n\
-_0809F990: .4byte sub_809E260\n\
-_0809F994:\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F9A6\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F9C0\n\
-_0809F9A6:\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x2\n\
- bl sub_80A1488\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x2\n\
- bl sub_80A1654\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F9CC @ =sub_809E260\n\
- str r1, [r0]\n\
-_0809F9C0:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809F9CC: .4byte sub_809E260\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
static void sub_809F9D0(u8 taskId, u8 b)
{
s16 *taskData = gTasks[taskId].data;
@@ -3012,7 +2785,7 @@ static void sub_80A015C(struct Pokemon *mon)
sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4);
GetStringCenterAlignXOffset(1, 24, (2 * i) + 4);
-
+
ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
maxPP = CalculatePPWithBonus(move, ppBonuses, i);
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 6e83c6f97..7693cba7d 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -308,7 +308,7 @@ void sub_80EBA5C() {
gMain.state++;
SetMainCallback2(&sub_80EBBE8);
break;
- }
+ }
break;
case 1:
SetVBlankCallback(NULL);
@@ -331,7 +331,7 @@ void sub_80EBA5C() {
case 7:
sub_80F1A90();
gMain.state++;
- case 8:
+ case 8:
if (sub_80F1AC4()) return;
break;
case 9:
@@ -535,7 +535,7 @@ void sub_80EBDD8() {
sub_80EBDBC(&sub_80EC268);
}
return;
-
+
}
}
@@ -584,7 +584,7 @@ void sub_80EC00C() {
ewram0_10.var304++;
return;
case 9:
- sub_80F2598();
+ sub_80F2598();
ewram0_10.var304++;
break;
case 10:
@@ -3479,8 +3479,6 @@ void sub_80EF840(void)
}
}
-// The only non-matching part is the gSaveBlock2.regionMapZoom access.
-#ifdef NONMATCHING
bool8 sub_80EF874(void)
{
switch (gUnknown_083DFEC4->unkD160)
@@ -3504,7 +3502,7 @@ bool8 sub_80EF874(void)
MenuZeroFillScreen();
break;
case 5:
- sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom);
+ sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE);
break;
case 6:
if (sub_80FA940())
@@ -3552,501 +3550,75 @@ bool8 sub_80EF874(void)
gUnknown_083DFEC4->unkD160++;
return TRUE;
}
-#else
-asm(".include \"constants/gba_constants.inc\"\n");
-__attribute__((naked))
-bool8 sub_80EF874(void)
-{
- asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080EF890 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EF894 @ =0x0000d160\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- cmp r0, 0xB\n\
- bls _080EF886\n\
- b _080EF9D8\n\
-_080EF886:\n\
- lsls r0, 2\n\
- ldr r1, _080EF898 @ =_080EF89C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080EF890: .4byte gUnknown_083DFEC4\n\
-_080EF894: .4byte 0x0000d160\n\
-_080EF898: .4byte _080EF89C\n\
- .align 2, 0\n\
-_080EF89C:\n\
- .4byte _080EF8CC\n\
- .4byte _080EF8D2\n\
- .4byte _080EF8E0\n\
- .4byte _080EF8EC\n\
- .4byte _080EF8F6\n\
- .4byte _080EF8FC\n\
- .4byte _080EF920\n\
- .4byte _080EF92C\n\
- .4byte _080EF940\n\
- .4byte _080EF954\n\
- .4byte _080EF960\n\
- .4byte _080EF972\n\
-_080EF8CC:\n\
- bl sub_80EEDE8\n\
- b _080EF9DC\n\
-_080EF8D2:\n\
- ldr r0, _080EF8DC @ =gWindowConfig_81E7224\n\
- bl SetUpWindowConfig\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF8DC: .4byte gWindowConfig_81E7224\n\
-_080EF8E0:\n\
- ldr r0, _080EF8E8 @ =gWindowConfig_81E7224\n\
- bl MultistepInitMenuWindowBegin\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF8E8: .4byte gWindowConfig_81E7224\n\
-_080EF8EC:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, 0\n\
- bne _080EF9DC\n\
- b _080EF9EA\n\
-_080EF8F6:\n\
- bl MenuZeroFillScreen\n\
- b _080EF9DC\n\
-_080EF8FC:\n\
- ldr r0, _080EF914 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EF918 @ =0x00006e18\n\
- adds r0, r2\n\
- ldr r1, _080EF91C @ =gSaveBlock2\n\
- ldrb r1, [r1, 0x15]\n\
- lsrs r1, 3\n\
- movs r2, 0x1\n\
- ands r1, r2\n\
- bl sub_80FA904\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF914: .4byte gUnknown_083DFEC4\n\
-_080EF918: .4byte 0x00006e18\n\
-_080EF91C: .4byte gSaveBlock2\n\
-_080EF920:\n\
- bl sub_80FA940\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080EF9DC\n\
- b _080EF9EA\n\
-_080EF92C:\n\
- ldr r0, _080EF938 @ =gPokenavHoennMapSquares_Gfx\n\
- ldr r1, _080EF93C @ =0x06005000\n\
- bl LZ77UnCompVram\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF938: .4byte gPokenavHoennMapSquares_Gfx\n\
-_080EF93C: .4byte 0x06005000\n\
-_080EF940:\n\
- ldr r0, _080EF950 @ =gPokenavHoennMapSquares_Pal\n\
- movs r1, 0x30\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- bl sub_80EFC3C\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF950: .4byte gPokenavHoennMapSquares_Pal\n\
-_080EF954:\n\
- bl sub_80EFC64\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080EF9DC\n\
- b _080EF9EA\n\
-_080EF960:\n\
- movs r0, 0xD\n\
- movs r1, 0x3\n\
- movs r2, 0x1D\n\
- movs r3, 0x11\n\
- bl MenuDrawTextWindow\n\
- bl sub_80EF9F8\n\
- b _080EF9DC\n\
-_080EF972:\n\
- ldr r0, _080EF990 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EF994 @ =0x00006e90\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080EF9A0\n\
- ldr r2, _080EF998 @ =0x00007698\n\
- adds r0, r1, r2\n\
- movs r1, 0xA0\n\
- strh r1, [r0]\n\
- ldr r0, _080EF99C @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- b _080EF9B0\n\
- .align 2, 0\n\
-_080EF990: .4byte gUnknown_083DFEC4\n\
-_080EF994: .4byte 0x00006e90\n\
-_080EF998: .4byte 0x00007698\n\
-_080EF99C: .4byte REG_BG0VOFS\n\
-_080EF9A0:\n\
- ldr r0, _080EF9C8 @ =0x00007698\n\
- adds r1, r0\n\
- movs r2, 0\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- strh r0, [r1]\n\
- ldr r0, _080EF9CC @ =REG_BG0VOFS\n\
- strh r2, [r0]\n\
-_080EF9B0:\n\
- ldr r2, _080EF9D0 @ =REG_BG0CNT\n\
- ldrh r0, [r2]\n\
- strh r0, [r2]\n\
- ldrh r0, [r2]\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strh r0, [r2]\n\
- ldr r1, _080EF9D4 @ =REG_BLDCNT\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF9C8: .4byte 0x00007698\n\
-_080EF9CC: .4byte REG_BG0VOFS\n\
-_080EF9D0: .4byte REG_BG0CNT\n\
-_080EF9D4: .4byte REG_BLDCNT\n\
-_080EF9D8:\n\
- movs r0, 0\n\
- b _080EF9EC\n\
-_080EF9DC:\n\
- ldr r0, _080EF9F0 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EF9F4 @ =0x0000d160\n\
- adds r1, r2\n\
- ldrh r0, [r1]\n\
- adds r0, 0x1\n\
- strh r0, [r1]\n\
-_080EF9EA:\n\
- movs r0, 0x1\n\
-_080EF9EC:\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080EF9F0: .4byte gUnknown_083DFEC4\n\
-_080EF9F4: .4byte 0x0000d160\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
+asm(".include \"constants/gba_constants.inc\"\n");
-#ifdef NONMATCHING
void sub_80EF9F8(void)
{
- s32 zero;
- u16 i;
- u8 *mapSectionName;
- u32 offset;
+ bool8 someBool = FALSE;
+ u16 top = 4;
u16 mapSectionId;
u8 b;
- u8 **pointer;
- u16 var1 = 4;
-
switch (gUnknown_083DFEC4->regionMap.unk16)
{
+ case 0:
+ break;
case 1:
case 4:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
if (gLinkOpen == TRUE)
{
sub_80F1A80();
+ someBool = TRUE;
}
else
{
- i = 0;
- while (i < 4 && (mapSectionName = GetLandmarkName(gUnknown_083DFEC4->regionMap.mapSectionId, gUnknown_083DFEC4->regionMap.everGrandeCityArea, i)) != NULL)
- {
- sub_8072A18(mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
- i++;
- }
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
+ u16 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ const u8 *secName = GetLandmarkName(
+ gUnknown_083DFEC4->regionMap.mapSectionId,
+ gUnknown_083DFEC4->regionMap.everGrandeCityArea,
+ i);
+
+ if (secName == NULL)
+ break;
+ sub_8072A18(secName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ }
}
break;
case 2:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId;
- b = gUnknown_083DFEC4->regionMap.everGrandeCityArea;
- offset = (b << 2) + (mapSectionId << 3);
- pointer = (u8 **)((u8 *)&gUnknown_083DFEC4->unkCDCC + offset);
- if (*pointer != NULL)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 15, 15);
- MenuFillWindowRectWithBlankTile(26, var1, 28, 15);
-
- sub_8095C8C((void *)VRAM + 0xF800, 16, 6, *pointer, 0, 0, 10, 10, 10);
-
- var1 += 11;
- }
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
+ b = gUnknown_083DFEC4->regionMap.everGrandeCityArea;
+ if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL)
{
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ MenuFillWindowRectWithBlankTile(14, top, 15, 15);
+ MenuFillWindowRectWithBlankTile(26, top, 28, 15);
+ sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10);
+ top += 11;
}
break;
case 3:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
- break;
- case 0:
- default:
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
break;
}
+ // Epic fail by the compiler at optimizing this.
+ if (!someBool && top < 16)
+ MenuFillWindowRectWithBlankTile(14, top, 28, 15);
+
if (gUnknown_083DFEC4->regionMap.unk16 == 2)
- {
sub_80EFD74();
- }
else
- {
sub_80EFDA0();
- }
-}
-#else
-__attribute__((naked))
-void sub_80EF9F8(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x14\n\
- movs r5, 0x4\n\
- ldr r0, _080EFA18 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EFA1C @ =0x00006e2e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bls _080EFA0E\n\
- b _080EFB6A\n\
-_080EFA0E:\n\
- lsls r0, 2\n\
- ldr r1, _080EFA20 @ =_080EFA24\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080EFA18: .4byte gUnknown_083DFEC4\n\
-_080EFA1C: .4byte 0x00006e2e\n\
-_080EFA20: .4byte _080EFA24\n\
- .align 2, 0\n\
-_080EFA24:\n\
- .4byte _080EFB6A\n\
- .4byte _080EFA38\n\
- .4byte _080EFAC0\n\
- .4byte _080EFB4C\n\
- .4byte _080EFA38\n\
-_080EFA38:\n\
- ldr r0, _080EFA64 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EFA68 @ =0x00006e18\n\
- adds r0, r2\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldr r0, _080EFA6C @ =gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x1\n\
- bne _080EFA70\n\
- bl sub_80F1A80\n\
- b _080EFB82\n\
- .align 2, 0\n\
-_080EFA64: .4byte gUnknown_083DFEC4\n\
-_080EFA68: .4byte 0x00006e18\n\
-_080EFA6C: .4byte gLinkOpen\n\
-_080EFA70:\n\
- movs r4, 0\n\
- b _080EFA92\n\
-_080EFA74:\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- adds r0, r1, 0\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
-_080EFA92:\n\
- cmp r4, 0x3\n\
- bhi _080EFB6A\n\
- ldr r0, _080EFAB8 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EFABC @ =0x00006e2c\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- adds r2, 0x3\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- bl GetLandmarkName\n\
- adds r1, r0, 0\n\
- cmp r1, 0\n\
- bne _080EFA74\n\
- b _080EFB6A\n\
- .align 2, 0\n\
-_080EFAB8: .4byte gUnknown_083DFEC4\n\
-_080EFABC: .4byte 0x00006e2c\n\
-_080EFAC0:\n\
- ldr r0, _080EFB38 @ =gUnknown_083DFEC4\n\
- ldr r4, [r0]\n\
- ldr r1, _080EFB3C @ =0x00006e18\n\
- adds r0, r4, r1\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldr r2, _080EFB40 @ =0x00006e2c\n\
- adds r0, r4, r2\n\
- ldrh r1, [r0]\n\
- adds r2, 0x3\n\
- adds r0, r4, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 2\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- ldr r1, _080EFB44 @ =0x0000cdcc\n\
- adds r4, r1\n\
- adds r6, r4, r0\n\
- ldr r0, [r6]\n\
- cmp r0, 0\n\
- beq _080EFB6A\n\
- lsls r4, r5, 24\n\
- lsrs r4, 24\n\
- movs r0, 0xE\n\
- adds r1, r4, 0\n\
- movs r2, 0xF\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
- movs r0, 0x1A\n\
- adds r1, r4, 0\n\
- movs r2, 0x1C\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
- ldr r0, _080EFB48 @ =0x0600f800\n\
- ldr r3, [r6]\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- str r1, [sp, 0x4]\n\
- movs r1, 0xA\n\
- str r1, [sp, 0x8]\n\
- str r1, [sp, 0xC]\n\
- str r1, [sp, 0x10]\n\
- movs r1, 0x10\n\
- movs r2, 0x6\n\
- bl sub_8095C8C\n\
- adds r0, r5, 0\n\
- adds r0, 0xB\n\
- b _080EFB66\n\
- .align 2, 0\n\
-_080EFB38: .4byte gUnknown_083DFEC4\n\
-_080EFB3C: .4byte 0x00006e18\n\
-_080EFB40: .4byte 0x00006e2c\n\
-_080EFB44: .4byte 0x0000cdcc\n\
-_080EFB48: .4byte 0x0600f800\n\
-_080EFB4C:\n\
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EFB9C @ =0x00006e18\n\
- adds r0, r2\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
-_080EFB66:\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
-_080EFB6A:\n\
- movs r0, 0\n\
- cmp r0, 0\n\
- bne _080EFB82\n\
- cmp r5, 0xF\n\
- bhi _080EFB82\n\
- lsls r1, r5, 24\n\
- lsrs r1, 24\n\
- movs r0, 0xE\n\
- movs r2, 0x1C\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
-_080EFB82:\n\
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EFBA0 @ =0x00006e2e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x2\n\
- bne _080EFBA4\n\
- bl sub_80EFD74\n\
- b _080EFBA8\n\
- .align 2, 0\n\
-_080EFB98: .4byte gUnknown_083DFEC4\n\
-_080EFB9C: .4byte 0x00006e18\n\
-_080EFBA0: .4byte 0x00006e2e\n\
-_080EFBA4:\n\
- bl sub_80EFDA0\n\
-_080EFBA8:\n\
- add sp, 0x14\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
}
-#endif // NONMATCHING
void sub_80EFBB0(void)
{
@@ -4103,152 +3675,37 @@ void sub_80EFC3C(void)
sub_80EFD3C();
}
-#ifdef NONMATCHING // "var1 = gUnknown_083DFEC4->unkBC9A;" is the only thing that doesnt' match.
bool8 sub_80EFC64(void)
{
u16 i;
- u16 var1;
+ u8 var1;
u16 var2;
- if (gUnknown_083DFEC4->unkBC9A < 16)
- {
- var1 = gUnknown_083DFEC4->unkBC9A;
- var2 = gUnknown_083DFEC4->unkBC9B;
- for (i = 0; i < 2; i++)
- {
- if (gPokenavCityMaps[var1][i] != 0)
- {
- LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]);
- gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2];
- var2++;
- }
- else
- {
- gUnknown_083DFEC4->unkCDCC[var1][i] = NULL;
- }
- }
-
- gUnknown_083DFEC4->unkBC9A++;
- if (gUnknown_083DFEC4->unkBC9A < 16)
- {
- gUnknown_083DFEC4->unkBC9B = var2;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-#else
-__attribute__((naked))
-bool8 sub_80EFC64(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x8\n\
- ldr r4, _080EFCD0 @ =gUnknown_083DFEC4\n\
- ldr r2, [r4]\n\
- ldr r0, _080EFCD4 @ =0x0000bc9a\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xF\n\
- bhi _080EFD2C\n\
- ldrb r1, [r1]\n\
- mov r8, r1\n\
- ldr r1, _080EFCD8 @ =0x0000bc9b\n\
- adds r0, r2, r1\n\
- ldrb r7, [r0]\n\
- movs r2, 0\n\
- ldr r0, _080EFCDC @ =gPokenavCityMaps\n\
- mov r9, r0\n\
- adds r3, r4, 0\n\
-_080EFC8E:\n\
- lsls r0, r2, 2\n\
- mov r4, r8\n\
- lsls r1, r4, 3\n\
- adds r6, r0, r1\n\
- mov r1, r9\n\
- adds r0, r6, r1\n\
- ldr r1, [r0]\n\
- cmp r1, 0\n\
- beq _080EFCE8\n\
- movs r0, 0xC8\n\
- adds r5, r7, 0\n\
- muls r5, r0\n\
- ldr r4, _080EFCE0 @ =0x0000bc9c\n\
- adds r5, r4\n\
- ldr r4, [r3]\n\
- adds r5, r4, r5\n\
- adds r0, r1, 0\n\
- adds r1, r5, 0\n\
- str r2, [sp]\n\
- str r3, [sp, 0x4]\n\
- bl LZ77UnCompVram\n\
- ldr r0, _080EFCE4 @ =0x0000cdcc\n\
- adds r4, r0\n\
- adds r4, r6\n\
- str r5, [r4]\n\
- adds r0, r7, 0x1\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- b _080EFCF2\n\
- .align 2, 0\n\
-_080EFCD0: .4byte gUnknown_083DFEC4\n\
-_080EFCD4: .4byte 0x0000bc9a\n\
-_080EFCD8: .4byte 0x0000bc9b\n\
-_080EFCDC: .4byte gPokenavCityMaps\n\
-_080EFCE0: .4byte 0x0000bc9c\n\
-_080EFCE4: .4byte 0x0000cdcc\n\
-_080EFCE8:\n\
- ldr r0, [r3]\n\
- ldr r4, _080EFD1C @ =0x0000cdcc\n\
- adds r0, r4\n\
- adds r0, r6\n\
- str r1, [r0]\n\
-_080EFCF2:\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x1\n\
- bls _080EFC8E\n\
- ldr r0, _080EFD20 @ =gUnknown_083DFEC4\n\
- ldr r2, [r0]\n\
- ldr r0, _080EFD24 @ =0x0000bc9a\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xF\n\
- bhi _080EFD2C\n\
- ldr r1, _080EFD28 @ =0x0000bc9b\n\
- adds r0, r2, r1\n\
- strb r7, [r0]\n\
- movs r0, 0x1\n\
- b _080EFD2E\n\
- .align 2, 0\n\
-_080EFD1C: .4byte 0x0000cdcc\n\
-_080EFD20: .4byte gUnknown_083DFEC4\n\
-_080EFD24: .4byte 0x0000bc9a\n\
-_080EFD28: .4byte 0x0000bc9b\n\
-_080EFD2C:\n\
- movs r0, 0\n\
-_080EFD2E:\n\
- add sp, 0x8\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ if (gUnknown_083DFEC4->unkBC9A >= 16)
+ return FALSE;
+
+ var1 = gUnknown_083DFEC4->unkBC9A;
+ var2 = gUnknown_083DFEC4->unkBC9B;
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavCityMaps[var1][i] != 0)
+ {
+ LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]);
+ gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2];
+ var2++;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCDCC[var1][i] = NULL;
+ }
+ }
+
+ if (++gUnknown_083DFEC4->unkBC9A >= 16)
+ return FALSE;
+
+ gUnknown_083DFEC4->unkBC9B = var2;
+ return TRUE;
}
-#endif // NONMATCHING
void sub_80EFD3C(void)
{
@@ -4335,7 +3792,7 @@ void sub_80EFE7C(void)
case 2:
sub_80EFDE4(1);
gUnknown_083DFEC4->unk769D = 1;
- break;
+ break;
}
}
diff --git a/src/scene/credits.c b/src/scene/credits.c
index 40dc5488f..17c1bf263 100644
--- a/src/scene/credits.c
+++ b/src/scene/credits.c
@@ -1606,7 +1606,7 @@ void spritecb_814580C(struct Sprite *sprite)
static void sub_81458DC(void)
{
struct Unk201C000 *unk201C000 = &ewram1c000;
- u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE)));
+ u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_STARTER_MON)));
u16 seenTypesCount;
u16 page;
u16 dexNum;
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index 164d71cb5..fc94b1b01 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -24,6 +24,9 @@
#include "task.h"
#include "ewram.h"
+extern void sub_80C4674();
+extern void sub_80C4698(u8 *, u8);
+
#define CONTEST_ENTRY_PIC_LEFT 10
#define CONTEST_ENTRY_PIC_TOP 3
@@ -47,7 +50,8 @@ extern u32 gUnknown_03005D28;
extern u8 gUnknown_02038694;
extern u8 gUnknown_0203856C;
extern u8 gContestFinalStandings[];
-extern u16 gUnknown_02038678[];
+extern s16 gUnknown_02038670[];
+extern s16 gUnknown_02038678[];
void sub_80C4BF0(void)
{
@@ -128,7 +132,7 @@ void sub_80C4CF8(void)
{
if(!gContestFinalStandings[gContestPlayerMonIndex]
&& gSpecialVar_ContestRank == 3
- && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
{
gSpecialVar_0x8004 = 1;
}
@@ -150,209 +154,78 @@ u8 sub_80C4D50(void)
return retVar;
}
-// nope. too hard
-__attribute__((naked))
void sub_80C4D80(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- ldr r0, _080C4EA0 @ =gUnknown_02038670\n\
- mov r12, r0\n\
- ldr r1, _080C4EA4 @ =gSpecialVar_0x8006\n\
- mov r8, r1\n\
- ldr r2, _080C4EA8 @ =gStringVar1\n\
- mov r9, r2\n\
- mov r2, r12\n\
- mov r1, sp\n\
- movs r6, 0x3\n\
-_080C4D9E:\n\
- ldrh r0, [r2]\n\
- strh r0, [r1]\n\
- adds r2, 0x2\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080C4D9E\n\
- movs r6, 0\n\
-_080C4DAE:\n\
- movs r1, 0x3\n\
- cmp r1, r6\n\
- ble _080C4DD8\n\
-_080C4DB4:\n\
- subs r4, r1, 0x1\n\
- lsls r0, r4, 1\n\
- mov r5, sp\n\
- adds r3, r5, r0\n\
- lsls r0, r1, 1\n\
- adds r2, r5, r0\n\
- ldrh r5, [r3]\n\
- movs r7, 0\n\
- ldrsh r1, [r3, r7]\n\
- movs r7, 0\n\
- ldrsh r0, [r2, r7]\n\
- cmp r1, r0\n\
- bge _080C4DD2\n\
- strh r5, [r2]\n\
- strh r0, [r3]\n\
-_080C4DD2:\n\
- adds r1, r4, 0\n\
- cmp r1, r6\n\
- bgt _080C4DB4\n\
-_080C4DD8:\n\
- adds r6, 0x1\n\
- cmp r6, 0x2\n\
- ble _080C4DAE\n\
- mov r2, r8\n\
- ldrh r0, [r2]\n\
- lsls r0, 1\n\
- add r0, sp\n\
- ldrh r0, [r0]\n\
- movs r2, 0\n\
- movs r7, 0\n\
- movs r6, 0\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- adds r3, r0, 0\n\
- mov r1, sp\n\
-_080C4DF6:\n\
- movs r5, 0\n\
- ldrsh r0, [r1, r5]\n\
- cmp r0, r4\n\
- bne _080C4E12\n\
- lsls r0, r2, 24\n\
- movs r2, 0x80\n\
- lsls r2, 17\n\
- adds r0, r2\n\
- lsrs r2, r0, 24\n\
- mov r5, r8\n\
- ldrh r5, [r5]\n\
- cmp r6, r5\n\
- bne _080C4E12\n\
- adds r7, r2, 0\n\
-_080C4E12:\n\
- adds r1, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- ble _080C4DF6\n\
- movs r6, 0\n\
- mov r0, sp\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- asrs r1, r3, 16\n\
- lsls r2, 24\n\
- mov r10, r2\n\
- cmp r0, r1\n\
- beq _080C4E40\n\
- adds r2, r1, 0\n\
- mov r1, sp\n\
-_080C4E30:\n\
- adds r1, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _080C4E40\n\
- movs r4, 0\n\
- ldrsh r0, [r1, r4]\n\
- cmp r0, r2\n\
- bne _080C4E30\n\
-_080C4E40:\n\
- lsls r0, r6, 24\n\
- lsrs r4, r0, 24\n\
- adds r2, r7, 0\n\
- movs r6, 0\n\
- asrs r5, r3, 16\n\
- mov r8, r5\n\
- mov r1, r12\n\
- movs r5, 0\n\
- ldrsh r0, [r1, r5]\n\
- cmp r8, r0\n\
- bne _080C4E60\n\
- cmp r7, 0x1\n\
- beq _080C4E78\n\
-_080C4E5A:\n\
- subs r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
-_080C4E60:\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _080C4E78\n\
- lsls r0, r6, 1\n\
- add r0, r12\n\
- asrs r1, r3, 16\n\
- movs r5, 0\n\
- ldrsh r0, [r0, r5]\n\
- cmp r1, r0\n\
- bne _080C4E60\n\
- cmp r2, 0x1\n\
- bne _080C4E5A\n\
-_080C4E78:\n\
- lsls r1, r6, 24\n\
- lsrs r1, 24\n\
- mov r0, r9\n\
- bl sub_80C4698\n\
- ldr r0, _080C4EAC @ =gIsLinkContest\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080C4EB8\n\
- ldr r0, _080C4EB0 @ =gStringVar2\n\
- lsls r1, r6, 3\n\
- subs r1, r6\n\
- lsls r1, 2\n\
- ldr r2, _080C4EB4 @ =gLinkPlayers + 0x8\n\
- adds r1, r2\n\
- bl sub_80C4674\n\
- b _080C4EC4\n\
- .align 2, 0\n\
-_080C4EA0: .4byte gUnknown_02038670\n\
-_080C4EA4: .4byte gSpecialVar_0x8006\n\
-_080C4EA8: .4byte gStringVar1\n\
-_080C4EAC: .4byte gIsLinkContest\n\
-_080C4EB0: .4byte gStringVar2\n\
-_080C4EB4: .4byte gLinkPlayers + 0x8\n\
-_080C4EB8:\n\
- ldr r0, _080C4ED8 @ =gStringVar2\n\
- lsls r1, r6, 6\n\
- ldr r2, _080C4EDC @ =gUnknown_0203857D\n\
- adds r1, r2\n\
- bl sub_80C4674\n\
-_080C4EC4:\n\
- mov r1, r10\n\
- asrs r0, r1, 24\n\
- cmp r0, 0x1\n\
- beq _080C4ED0\n\
- cmp r7, r0\n\
- bne _080C4EE4\n\
-_080C4ED0:\n\
- ldr r0, _080C4EE0 @ =gSpecialVar_0x8006\n\
- strh r4, [r0]\n\
- b _080C4EEA\n\
- .align 2, 0\n\
-_080C4ED8: .4byte gStringVar2\n\
-_080C4EDC: .4byte gUnknown_0203857D\n\
-_080C4EE0: .4byte gSpecialVar_0x8006\n\
-_080C4EE4:\n\
- ldr r1, _080C4EFC @ =gSpecialVar_0x8006\n\
- adds r0, r4, 0x4\n\
- strh r0, [r1]\n\
-_080C4EEA:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080C4EFC: .4byte gSpecialVar_0x8006\n\
- .syntax divided");
+ s16 sp0[4];
+ s32 i;
+ s32 j;
+ s16 r4;
+ u8 r2;
+ u8 r7;
+ s8 r10;
+ u8 r4_;
+
+ for (i = 0; i < 4; i++)
+ sp0[i] = gUnknown_02038670[i];
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 3; j > i; j--)
+ {
+ if (sp0[j - 1] < sp0[j])
+ {
+ s32 temp = sp0[j];
+
+ sp0[j] = sp0[j - 1];
+ sp0[j - 1] = temp;
+ }
+ }
+ }
+
+ r4 = sp0[gSpecialVar_0x8006];
+ r10 = 0;
+ r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp0[i] == r4)
+ {
+ r10++;
+ if (i == gSpecialVar_0x8006)
+ r7 = r10;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp0[i] == r4)
+ break;
+ }
+
+ r4_ = i;
+ r2 = r7;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (r4 == gUnknown_02038670[i])
+ {
+ if (r2 == 1)
+ break;
+ r2--;
+ }
+ }
+
+ sub_80C4698(gStringVar1, i);
+
+ if (gIsLinkContest & 1)
+ sub_80C4674(gStringVar2, gLinkPlayers[i].name);
+ else
+ sub_80C4674(gStringVar2, gContestMons[i].trainerName);
+
+ if (r10 == 1 || r7 == r10)
+ gSpecialVar_0x8006 = r4_;
+ else
+ gSpecialVar_0x8006 = r4_ + 4;
}
void ShowContestWinnerCleanup(void)
@@ -376,10 +249,10 @@ void ShowContestWinner(void)
void sub_80C4F70(void)
{
- VarSet(0x4010, gContestMons[0].trainerGfxId);
- VarSet(0x4011, gContestMons[1].trainerGfxId);
- VarSet(0x4012, gContestMons[2].trainerGfxId);
- VarSet(0x4013, gContestMons[3].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId);
}
bool8 GiveMonArtistRibbon(void)
@@ -389,7 +262,7 @@ bool8 GiveMonArtistRibbon(void)
if(ribbon == FALSE
&& gContestFinalStandings[gContestPlayerMonIndex] == 0
&& gSpecialVar_ContestRank == 3
- && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
{
ribbon = TRUE;
SetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_ARTIST_RIBBON, &ribbon);
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 33e7620f7..b58363d31 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -19,6 +19,8 @@
#include "text.h"
#include "ewram.h"
+extern const u8 gUnknown_08208238[];
+
extern u8 gPlayerPartyCount;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -297,130 +299,26 @@ void ScrSpecial_GetPokemonNicknameAndMoveName(void)
StringCopy(gStringVar2, gMoveNames[data]);
}
-// no. hard
-__attribute__((naked))
-void sub_80F9FDC(struct Pokemon *party, u8 var, u8 var2)
+void sub_80F9FDC(struct Pokemon *pkmn, u8 moveIndex1, u8 moveIndex2)
{
- 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, 0x20\n\
- mov r8, r0\n\
- adds r5, r1, 0\n\
- adds r4, r2, 0\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r5, 0\n\
- adds r0, 0xD\n\
- str r0, [sp, 0x8]\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x8]\n\
- bl GetMonData\n\
- mov r1, sp\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x14]\n\
- strh r0, [r1]\n\
- adds r3, r4, 0\n\
- adds r3, 0xD\n\
- str r3, [sp, 0xC]\n\
- mov r0, r8\n\
- adds r1, r3, 0\n\
- bl GetMonData\n\
- mov r1, sp\n\
- strh r0, [r1]\n\
- adds r7, r5, 0\n\
- adds r7, 0x11\n\
- str r7, [sp, 0x10]\n\
- mov r0, r8\n\
- adds r1, r7, 0\n\
- bl GetMonData\n\
- mov r1, sp\n\
- adds r1, 0x5\n\
- str r1, [sp, 0x18]\n\
- strb r0, [r1]\n\
- adds r3, r4, 0\n\
- adds r3, 0x11\n\
- str r3, [sp, 0x1C]\n\
- mov r0, r8\n\
- adds r1, r3, 0\n\
- bl GetMonData\n\
- add r7, sp, 0x4\n\
- mov r10, r7\n\
- strb r0, [r7]\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- bl GetMonData\n\
- mov r6, sp\n\
- adds r6, 0x6\n\
- strb r0, [r6]\n\
- ldr r1, _080FA0D8 @ =gUnknown_08208238\n\
- adds r0, r5, r1\n\
- ldrb r0, [r0]\n\
- mov r9, r0\n\
- ldrb r0, [r6]\n\
- adds r2, r0, 0\n\
- mov r3, r9\n\
- ands r2, r3\n\
- lsls r5, 1\n\
- asrs r2, r5\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r1, r4, r1\n\
- ldrb r3, [r1]\n\
- adds r1, r0, 0\n\
- ands r1, r3\n\
- lsls r4, 1\n\
- asrs r1, r4\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r7, r9\n\
- bics r0, r7\n\
- strb r0, [r6]\n\
- ldrb r0, [r6]\n\
- bics r0, r3\n\
- strb r0, [r6]\n\
- lsls r2, r4\n\
- lsls r1, r5\n\
- adds r2, r1\n\
- ldrb r0, [r6]\n\
- orrs r0, r2\n\
- strb r0, [r6]\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x8]\n\
- mov r2, sp\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0xC]\n\
- ldr r2, [sp, 0x14]\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x10]\n\
- mov r2, r10\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x1C]\n\
- ldr r2, [sp, 0x18]\n\
- bl SetMonData\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- adds r2, r6, 0\n\
- bl SetMonData\n\
- add sp, 0x20\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\
-_080FA0D8: .4byte gUnknown_08208238\n\
- .syntax divided");
+ u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
+ u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
+ u8 pp1 = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1);
+ u8 pp2 = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2);
+ u8 bonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES);
+
+ u8 r2 = (bonuses & gUnknown_08208238[moveIndex1]) >> (moveIndex1 * 2);
+ u8 r1 = (bonuses & gUnknown_08208238[moveIndex2]) >> (moveIndex2 * 2);
+
+ bonuses &= ~gUnknown_08208238[moveIndex1];
+ bonuses &= ~gUnknown_08208238[moveIndex2];
+ bonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
+
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex1, &pp2);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex2, &pp1);
+ SetMonData(pkmn, MON_DATA_PP_BONUSES, &bonuses);
}
void sub_80FA0DC(void)