Merge pull request #300 from DizzyEggg/decompile_battle_frontier_1
Decompile battle_dome
This commit is contained in:
@@ -1606,22 +1606,22 @@ static void OpponentHandleChoosePokemon(void)
|
||||
{
|
||||
s32 chosenMonId;
|
||||
|
||||
if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6)
|
||||
if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE)
|
||||
{
|
||||
chosenMonId = GetMostSuitableMonToSwitchInto();
|
||||
|
||||
if (chosenMonId == 6)
|
||||
if (chosenMonId == PARTY_SIZE)
|
||||
{
|
||||
s32 bank1, bank2, firstId, lastId;
|
||||
s32 battler1, battler2, firstId, lastId;
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
{
|
||||
bank2 = bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
battler2 = battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
bank2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
@@ -1639,8 +1639,8 @@ static void OpponentHandleChoosePokemon(void)
|
||||
for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++)
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0
|
||||
&& chosenMonId != gBattlerPartyIndexes[bank1]
|
||||
&& chosenMonId != gBattlerPartyIndexes[bank2])
|
||||
&& chosenMonId != gBattlerPartyIndexes[battler1]
|
||||
&& chosenMonId != gBattlerPartyIndexes[battler2])
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -1650,7 +1650,7 @@ static void OpponentHandleChoosePokemon(void)
|
||||
else
|
||||
{
|
||||
chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler);
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
#include "item_use.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "party_menu.h"
|
||||
#include "battle_dome.h"
|
||||
|
||||
extern u8 gUnknown_0203CEE8;
|
||||
extern u8 gUnknown_0203CEE9;
|
||||
extern u8 gUnknown_0203CF00[];
|
||||
extern u16 gBattle_BG0_X;
|
||||
extern u16 gBattle_BG0_Y;
|
||||
extern s32 gUnknown_0203CD70;
|
||||
extern struct UnusedControllerStruct gUnknown_02022D0C;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern struct SpriteTemplate gMultiuseSpriteTemplate;
|
||||
|
||||
+6488
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,118 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "battle_setup.h"
|
||||
#include "overworld.h"
|
||||
#include "random.h"
|
||||
#include "battle_tower.h"
|
||||
|
||||
extern void sub_8162614(u16, u8);
|
||||
|
||||
extern void (* const gUnknown_0860DE50[])(void);
|
||||
extern const u32 gUnknown_0860DE98[][2];
|
||||
extern const u32 gUnknown_0860DEA8[][2];
|
||||
|
||||
// code
|
||||
void sub_8195960(void)
|
||||
{
|
||||
gUnknown_0860DE50[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_8195980(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = 0;
|
||||
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
void sub_8195A38(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC4[1];
|
||||
break;
|
||||
case 1:
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode];
|
||||
break;
|
||||
case 2:
|
||||
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8195AE4(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
gSaveBlock2Ptr->frontier.field_DC4[1] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 1:
|
||||
gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
if (gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8195BB0(void)
|
||||
{
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 50)
|
||||
gSpecialVar_Result = Random() % 3;
|
||||
else if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 99)
|
||||
gSpecialVar_Result = 3;
|
||||
else
|
||||
gSpecialVar_Result = 4;
|
||||
}
|
||||
|
||||
void sub_8195C20(void)
|
||||
{
|
||||
gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
|
||||
sub_8162614(gTrainerBattleOpponent_A, 0);
|
||||
}
|
||||
|
||||
void sub_8195C50(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A < 300)
|
||||
ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
/*
|
||||
void sub_8195C7C(void)
|
||||
{
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 9999)
|
||||
{
|
||||
u16 wat = 0;
|
||||
gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]++;
|
||||
if (lvlMode < gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode])
|
||||
wat = 1;
|
||||
if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][wat] != 0)
|
||||
gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode];
|
||||
}
|
||||
}
|
||||
*/
|
||||
+2
-2
@@ -3929,7 +3929,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
{
|
||||
StopCryAndClearCrySongs();
|
||||
BattleScriptExecute(BattleScript_82DB8BE);
|
||||
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4019,7 +4019,7 @@ void BattleTurnPassed(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
|
||||
BattleScriptExecute(BattleScript_82DB881);
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0)
|
||||
BattleScriptExecute(BattleScript_82DB8BE);
|
||||
BattleScriptExecute(BattleScript_ArenaTurnBeginning);
|
||||
}
|
||||
|
||||
u8 IsRunningFromBattleImpossible(void)
|
||||
|
||||
@@ -1248,7 +1248,7 @@ static const u8 sText_Round2[] = _("Round 2");
|
||||
static const u8 sText_Semifinal[] = _("Semifinal");
|
||||
static const u8 sText_Final[] = _("Final");
|
||||
|
||||
const u8 * const gRoundsStringTable[] =
|
||||
const u8 *const gRoundsStringTable[] =
|
||||
{
|
||||
sText_Round1,
|
||||
sText_Round2,
|
||||
|
||||
@@ -6750,10 +6750,10 @@ static void atk76_various(void)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
case VARIOUS_VOLUME_DOWN:
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x55);
|
||||
break;
|
||||
case 22:
|
||||
case VARIOUS_VOLUME_UP:
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
|
||||
break;
|
||||
case 23:
|
||||
|
||||
+3
-2
@@ -33,6 +33,7 @@
|
||||
#include "field_weather.h"
|
||||
#include "gym_leader_rematch.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -863,7 +864,7 @@ u8 sub_80B100C(s32 arg0)
|
||||
return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
|
||||
}
|
||||
|
||||
if (VarGet(VAR_0x40CE) != 3)
|
||||
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
|
||||
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
else
|
||||
@@ -880,7 +881,7 @@ u8 sub_80B100C(s32 arg0)
|
||||
return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
|
||||
}
|
||||
|
||||
if (VarGet(VAR_0x40CE) != 3)
|
||||
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
|
||||
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
|
||||
|
||||
+268
-8
@@ -11,7 +11,11 @@
|
||||
#include "constants/items.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
// this file's functions
|
||||
extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
|
||||
extern const struct FacilityMon gSlateportBattleTentMons[];
|
||||
extern const u16 gBattleFrontierHeldItems[];
|
||||
|
||||
// This file's functions.
|
||||
void sub_81B99D4(void);
|
||||
void sub_81B9A28(void);
|
||||
void sub_81B9A44(void);
|
||||
@@ -51,7 +55,7 @@ void (*const gUnknown_086160B4[])(void) =
|
||||
sub_81B9B28
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160D4[] = {ITEM_NEST_BALL, ITEM_NONE};
|
||||
static const u16 sVerdanturfTentRewards[] = {ITEM_NEST_BALL};
|
||||
|
||||
void (*const gUnknown_086160D8[])(void) =
|
||||
{
|
||||
@@ -64,7 +68,7 @@ void (*const gUnknown_086160D8[])(void) =
|
||||
sub_81B9CF0
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160F4[] = {ITEM_HYPER_POTION, ITEM_NONE};
|
||||
static const u16 sFallarborTentRewards[] = {ITEM_HYPER_POTION};
|
||||
|
||||
void (*const gUnknown_086160F8[])(void) =
|
||||
{
|
||||
@@ -80,7 +84,7 @@ void (*const gUnknown_086160F8[])(void) =
|
||||
sub_81B9EC0
|
||||
};
|
||||
|
||||
const u16 gUnknown_08616120[] = {ITEM_FULL_HEAL, ITEM_NONE};
|
||||
static const u16 sSlateportTentRewards[] = {ITEM_FULL_HEAL};
|
||||
|
||||
// code
|
||||
void sub_81B99B4(void)
|
||||
@@ -115,7 +119,7 @@ void sub_81B9A60(void)
|
||||
void sub_81B9A90(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A < 300)
|
||||
ConvertBattleFrontierTrainerSpeechToString(gUnknown_0203BC88[gTrainerBattleOpponent_A].speechBefore);
|
||||
ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
void sub_81B9ABC(void)
|
||||
@@ -128,7 +132,7 @@ void sub_81B9ABC(void)
|
||||
|
||||
void sub_81B9B00(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gUnknown_086160D4[Random() % 1];
|
||||
gSaveBlock2Ptr->frontier.field_E6A = sVerdanturfTentRewards[Random() % ARRAY_COUNT(sVerdanturfTentRewards)];
|
||||
}
|
||||
|
||||
void sub_81B9B28(void)
|
||||
@@ -178,7 +182,7 @@ void sub_81B9C2C(void)
|
||||
|
||||
void sub_81B9C70(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gUnknown_086160F4[Random() % 1];
|
||||
gSaveBlock2Ptr->frontier.field_E6C = sFallarborTentRewards[Random() % ARRAY_COUNT(sFallarborTentRewards)];
|
||||
}
|
||||
|
||||
void sub_81B9C98(void)
|
||||
@@ -233,7 +237,7 @@ void sub_81B9DB4(void)
|
||||
|
||||
void sub_81B9DF8(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gUnknown_08616120[Random() % 1];
|
||||
gSaveBlock2Ptr->frontier.field_E6E = sSlateportTentRewards[Random() % ARRAY_COUNT(sSlateportTentRewards)];
|
||||
}
|
||||
|
||||
void sub_81B9E20(void)
|
||||
@@ -266,3 +270,259 @@ bool8 sub_81B9E94(void)
|
||||
return (gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
|
||||
&& ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386)));
|
||||
}
|
||||
|
||||
// This function was written very...oddly.
|
||||
#ifdef NONMATCHING
|
||||
void sub_81B9EC0(void)
|
||||
{
|
||||
s32 i, j;
|
||||
u16 currMonId = 0, currSpecies = 0;
|
||||
u16 species[PARTY_SIZE];
|
||||
u16 monIds[PARTY_SIZE];
|
||||
u16 heldItems[PARTY_SIZE];
|
||||
s32 zero = 0;
|
||||
|
||||
gFacilityTrainers = gSlateportBattleTentTrainers;
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
species[i] = 0;
|
||||
monIds[i] = 0;
|
||||
heldItems[i] = 0;
|
||||
}
|
||||
gFacilityTrainerMons = gSlateportBattleTentMons;
|
||||
currSpecies = 0;
|
||||
for (i = 0; i != PARTY_SIZE;)
|
||||
{
|
||||
// Cannot have two pokemon of the same species.
|
||||
currMonId = Random() % 70;
|
||||
for (j = zero; j < i + zero; j++)
|
||||
{
|
||||
if (monIds[j] == currMonId)
|
||||
break;
|
||||
if (species[j] == gFacilityTrainerMons[currMonId].species)
|
||||
{
|
||||
if (currSpecies == 0)
|
||||
currSpecies = gFacilityTrainerMons[currMonId].species;
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j != i + zero)
|
||||
continue;
|
||||
|
||||
// Cannot have two same held items.
|
||||
for (j = zero; j < i + zero; j++)
|
||||
{
|
||||
if (heldItems[j] == 0)
|
||||
continue;
|
||||
if (heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId])
|
||||
{
|
||||
if (gFacilityTrainerMons[currMonId].species == currSpecies)
|
||||
currSpecies = 0;
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j != i + zero)
|
||||
continue;
|
||||
|
||||
gSaveBlock2Ptr->frontier.field_E70[i].monId = currMonId;
|
||||
species[i] = gFacilityTrainerMons[currMonId].species;
|
||||
heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId];
|
||||
monIds[i] = currMonId;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_81B9EC0(void)
|
||||
{
|
||||
asm_unified("\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x3C\n\
|
||||
ldr r1, =gFacilityTrainers\n\
|
||||
ldr r0, =gSlateportBattleTentTrainers\n\
|
||||
str r0, [r1]\n\
|
||||
add r0, sp, 0xC\n\
|
||||
mov r9, r0\n\
|
||||
mov r1, sp\n\
|
||||
adds r1, 0x18\n\
|
||||
str r1, [sp, 0x2C]\n\
|
||||
ldr r5, =gFacilityTrainerMons\n\
|
||||
ldr r4, =gSlateportBattleTentMons\n\
|
||||
movs r2, 0\n\
|
||||
adds r3, r1, 0\n\
|
||||
mov r1, r9\n\
|
||||
mov r0, sp\n\
|
||||
movs r6, 0x5\n\
|
||||
mov r8, r6\n\
|
||||
_081B9EEC:\n\
|
||||
strh r2, [r0]\n\
|
||||
strh r2, [r1]\n\
|
||||
strh r2, [r3]\n\
|
||||
adds r3, 0x2\n\
|
||||
adds r1, 0x2\n\
|
||||
adds r0, 0x2\n\
|
||||
movs r7, 0x1\n\
|
||||
negs r7, r7\n\
|
||||
add r8, r7\n\
|
||||
mov r6, r8\n\
|
||||
cmp r6, 0\n\
|
||||
bge _081B9EEC\n\
|
||||
str r4, [r5]\n\
|
||||
movs r7, 0\n\
|
||||
mov r10, r7\n\
|
||||
movs r0, 0\n\
|
||||
mov r8, r0\n\
|
||||
ldr r1, [sp, 0x2C]\n\
|
||||
str r1, [sp, 0x30]\n\
|
||||
mov r2, sp\n\
|
||||
str r2, [sp, 0x34]\n\
|
||||
lsls r6, r0, 1\n\
|
||||
str r6, [sp, 0x24]\n\
|
||||
add r6, r9\n\
|
||||
str r6, [sp, 0x28]\n\
|
||||
_081B9F1E:\n\
|
||||
bl Random\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r1, 0x46\n\
|
||||
bl __umodsi3\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
movs r2, 0\n\
|
||||
mov r7, r8\n\
|
||||
adds r6, r2, r7\n\
|
||||
cmp r2, r6\n\
|
||||
bge _081B9F7C\n\
|
||||
ldr r1, [sp, 0x28]\n\
|
||||
ldrh r0, [r1]\n\
|
||||
cmp r0, r5\n\
|
||||
beq _081B9F7C\n\
|
||||
ldr r0, =gFacilityTrainerMons\n\
|
||||
ldr r1, [r0]\n\
|
||||
lsls r0, r5, 4\n\
|
||||
adds r4, r0, r1\n\
|
||||
ldrh r7, [r4]\n\
|
||||
mov r12, r7\n\
|
||||
lsls r3, r2, 1\n\
|
||||
ldr r1, [sp, 0x24]\n\
|
||||
add r1, sp\n\
|
||||
str r6, [sp, 0x38]\n\
|
||||
_081B9F56:\n\
|
||||
ldrh r0, [r1]\n\
|
||||
cmp r0, r12\n\
|
||||
bne _081B9F66\n\
|
||||
mov r0, r10\n\
|
||||
cmp r0, 0\n\
|
||||
bne _081B9F7C\n\
|
||||
ldrh r7, [r4]\n\
|
||||
mov r10, r7\n\
|
||||
_081B9F66:\n\
|
||||
adds r3, 0x2\n\
|
||||
adds r1, 0x2\n\
|
||||
adds r2, 0x1\n\
|
||||
ldr r0, [sp, 0x38]\n\
|
||||
cmp r2, r0\n\
|
||||
bge _081B9F7C\n\
|
||||
mov r7, r9\n\
|
||||
adds r0, r7, r3\n\
|
||||
ldrh r0, [r0]\n\
|
||||
cmp r0, r5\n\
|
||||
bne _081B9F56\n\
|
||||
_081B9F7C:\n\
|
||||
cmp r2, r6\n\
|
||||
bne _081BA01C\n\
|
||||
movs r2, 0\n\
|
||||
cmp r2, r6\n\
|
||||
bge _081B9FD4\n\
|
||||
ldr r0, =gBattleFrontierHeldItems\n\
|
||||
mov r12, r0\n\
|
||||
ldr r7, =gFacilityTrainerMons\n\
|
||||
ldr r1, [sp, 0x24]\n\
|
||||
ldr r0, [sp, 0x2C]\n\
|
||||
adds r4, r1, r0\n\
|
||||
_081B9F92:\n\
|
||||
ldrh r3, [r4]\n\
|
||||
cmp r3, 0\n\
|
||||
beq _081B9FCC\n\
|
||||
ldr r1, [r7]\n\
|
||||
lsls r0, r5, 4\n\
|
||||
adds r1, r0, r1\n\
|
||||
ldrb r0, [r1, 0xA]\n\
|
||||
lsls r0, 1\n\
|
||||
add r0, r12\n\
|
||||
ldrh r0, [r0]\n\
|
||||
cmp r3, r0\n\
|
||||
bne _081B9FCC\n\
|
||||
ldrh r0, [r1]\n\
|
||||
cmp r0, r10\n\
|
||||
bne _081B9FD4\n\
|
||||
movs r1, 0\n\
|
||||
mov r10, r1\n\
|
||||
b _081B9FD4\n\
|
||||
.pool\n\
|
||||
_081B9FCC:\n\
|
||||
adds r4, 0x2\n\
|
||||
adds r2, 0x1\n\
|
||||
cmp r2, r6\n\
|
||||
blt _081B9F92\n\
|
||||
_081B9FD4:\n\
|
||||
cmp r2, r6\n\
|
||||
bne _081BA01C\n\
|
||||
ldr r0, =gSaveBlock2Ptr\n\
|
||||
ldr r1, [r0]\n\
|
||||
mov r2, r8\n\
|
||||
lsls r3, r2, 1\n\
|
||||
adds r0, r3, r2\n\
|
||||
lsls r0, 2\n\
|
||||
adds r1, r0\n\
|
||||
movs r6, 0xE7\n\
|
||||
lsls r6, 4\n\
|
||||
adds r1, r6\n\
|
||||
strh r5, [r1]\n\
|
||||
ldr r0, =gFacilityTrainerMons\n\
|
||||
ldr r0, [r0]\n\
|
||||
lsls r1, r5, 4\n\
|
||||
adds r1, r0\n\
|
||||
ldrh r0, [r1]\n\
|
||||
ldr r7, [sp, 0x34]\n\
|
||||
strh r0, [r7]\n\
|
||||
ldr r2, =gBattleFrontierHeldItems\n\
|
||||
ldrb r0, [r1, 0xA]\n\
|
||||
lsls r0, 1\n\
|
||||
adds r0, r2\n\
|
||||
ldrh r0, [r0]\n\
|
||||
ldr r1, [sp, 0x30]\n\
|
||||
strh r0, [r1]\n\
|
||||
add r3, r9\n\
|
||||
strh r5, [r3]\n\
|
||||
adds r1, 0x2\n\
|
||||
str r1, [sp, 0x30]\n\
|
||||
adds r2, r7, 0\n\
|
||||
adds r2, 0x2\n\
|
||||
str r2, [sp, 0x34]\n\
|
||||
movs r6, 0x1\n\
|
||||
add r8, r6\n\
|
||||
_081BA01C:\n\
|
||||
mov r7, r8\n\
|
||||
cmp r7, 0x6\n\
|
||||
beq _081BA024\n\
|
||||
b _081B9F1E\n\
|
||||
_081BA024:\n\
|
||||
add sp, 0x3C\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "battle_setup.h"
|
||||
#include "overworld.h"
|
||||
#include "random.h"
|
||||
#include "battle_tower.h"
|
||||
|
||||
extern void sub_81A3ACC(void);
|
||||
|
||||
extern const u32 gUnknown_085DF9AC[][2];
|
||||
extern const u32 gUnknown_085DF9CC[][2];
|
||||
extern void (* const gUnknown_085DF96C[])(void);
|
||||
|
||||
// This file's functions.
|
||||
void sub_8164ED8(void);
|
||||
u16 sub_8164FCC(u8, u8);
|
||||
|
||||
// code
|
||||
void sub_8161F74(void)
|
||||
{
|
||||
gUnknown_085DF96C[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_8161F94(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 1;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
|
||||
sub_81A3ACC();
|
||||
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]))
|
||||
gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = 0;
|
||||
|
||||
sub_8164ED8();
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
}
|
||||
|
||||
void sub_8162054(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
gSpecialVar_Result = sub_8164FCC(lvlMode, battleMode);
|
||||
break;
|
||||
case 2:
|
||||
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]) != 0);
|
||||
break;
|
||||
case 3:
|
||||
gSaveBlock2Ptr->frontier.field_D07 = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81620F4(void)
|
||||
{
|
||||
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
switch (gSpecialVar_0x8005)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = gSpecialVar_0x8006;
|
||||
break;
|
||||
case 2:
|
||||
if (gSpecialVar_0x8006)
|
||||
gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_085DF9AC[battleMode][lvlMode];
|
||||
else
|
||||
gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_085DF9CC[battleMode][lvlMode];
|
||||
break;
|
||||
case 3:
|
||||
gSaveBlock2Ptr->frontier.field_D07 = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1001,7 +1001,7 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
|
||||
}
|
||||
}
|
||||
|
||||
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
|
||||
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
|
||||
{
|
||||
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
|
||||
}
|
||||
|
||||
+4
-5
@@ -12,7 +12,7 @@
|
||||
#include "gpu_regs.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "battle_dome_cards.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "starter_choose.h"
|
||||
#include "decompress.h"
|
||||
#include "intro_credits_graphics.h"
|
||||
@@ -1197,7 +1197,6 @@ void sub_8175620(void)
|
||||
u8 taskIdA;
|
||||
s16 taskIdC;
|
||||
u8 taskIdB;
|
||||
u16 savedIme;
|
||||
|
||||
sub_8175CE4();
|
||||
SetVBlankCallback(NULL);
|
||||
@@ -1333,7 +1332,7 @@ static void sub_81758E4(u8 taskIdA)
|
||||
u16 *temp;
|
||||
|
||||
ResetSpriteData();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
FreeAllSpritePalettes();
|
||||
gReservedSpritePaletteCount = 8;
|
||||
LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
|
||||
@@ -2164,7 +2163,7 @@ static void sub_8177050(struct Sprite *sprite)
|
||||
{
|
||||
if (gUnknown_0203BD28)
|
||||
{
|
||||
sub_818D820(sprite->data[6]);
|
||||
FreeAndDestroyMonPicSprite(sprite->data[6]);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2242,7 +2241,7 @@ static void sub_8177050(struct Sprite *sprite)
|
||||
case 10:
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
sub_818D820(sprite->data[6]);
|
||||
FreeAndDestroyMonPicSprite(sprite->data[6]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -512,7 +512,7 @@ static void CB2_EggHatch_0(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
copy_decompressed_tile_data_to_vram_autofree(0, gBattleTextboxTiles, 0, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
|
||||
CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0);
|
||||
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20);
|
||||
gMain.state++;
|
||||
|
||||
@@ -1484,7 +1484,7 @@ static void InitMovingBackgroundTask(bool8 isLink)
|
||||
|
||||
LoadPalette(sUnknown_085B51E4, 0xA0, 0x20);
|
||||
|
||||
copy_decompressed_tile_data_to_vram_autofree(1, sUnknown_085B4134, FALSE, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(1, sUnknown_085B4134, FALSE, 0, 0);
|
||||
CopyToBgTilemapBuffer(1, sUnknown_085B482C, 0, 0);
|
||||
CopyToBgTilemapBuffer(outerBgId, sUnknown_085B4D10, 0, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
|
||||
+5
-7
@@ -1,8 +1,6 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "field_effect.h"
|
||||
#include "battle_dome_cards.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "decompress.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect_helpers.h"
|
||||
@@ -557,7 +555,7 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
|
||||
#ifdef NONMATCHING
|
||||
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y)
|
||||
{
|
||||
u16 spriteId = sub_818D7D8(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
|
||||
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
|
||||
PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10);
|
||||
if (spriteId == 0xFFFF)
|
||||
return 0x40;
|
||||
@@ -590,7 +588,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y)
|
||||
movs r1, 0\n\
|
||||
adds r2, r3, 0\n\
|
||||
movs r3, 0x1\n\
|
||||
bl sub_818D7D8\n\
|
||||
bl CreateMonPicSprite_HandleDeoxys\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
ldrh r0, [r4, 0x4]\n\
|
||||
@@ -619,7 +617,7 @@ _080B5FDE:\n\
|
||||
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g);
|
||||
u16 spriteId = sub_818D7D8(species, d, g, 1, x, y, 0, spritePalette->tag);
|
||||
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, d, g, 1, x, y, 0, spritePalette->tag);
|
||||
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
|
||||
if (spriteId == 0xFFFF)
|
||||
return 0x40;
|
||||
@@ -634,7 +632,7 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId)
|
||||
{
|
||||
FreeOamMatrix(sprite->oam.matrixNum);
|
||||
}
|
||||
sub_818D820(spriteId);
|
||||
FreeAndDestroyMonPicSprite(spriteId);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "battle_frontier_1.h"
|
||||
|
||||
extern bool32 sub_8196094(void);
|
||||
extern void sub_8196080(u8*);
|
||||
|
||||
EWRAM_DATA u8 gUnknown_020375BC = 0;
|
||||
|
||||
@@ -23,7 +25,7 @@ void sub_8098128(void)
|
||||
void sub_8098154(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
@@ -61,12 +63,12 @@ bool8 ShowFieldMessage(u8 *str)
|
||||
return FALSE;
|
||||
textbox_fdecode_auto_and_task_add(str, 1);
|
||||
gUnknown_020375BC = 2;
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8098214(u8 taskId)
|
||||
{
|
||||
if (sub_8196094() == 0)
|
||||
if (!sub_8196094())
|
||||
{
|
||||
gUnknown_020375BC = 0;
|
||||
DestroyTask(taskId);
|
||||
|
||||
+29
-28
@@ -52,6 +52,7 @@
|
||||
#include "constants/species.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
|
||||
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
|
||||
EWRAM_DATA u8 gBikeCollisions = 0;
|
||||
@@ -1645,7 +1646,7 @@ bool8 sub_81398C0(void)
|
||||
StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_0x8004)]);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1667,7 +1668,7 @@ bool8 InMultiBattleRoom(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM) &&
|
||||
VarGet(VAR_0x40CE) == 2)
|
||||
VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_MULTIS)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1799,7 +1800,7 @@ void ShakeScreenInElevator(void)
|
||||
|
||||
if (floorDelta > 8)
|
||||
floorDelta = 8;
|
||||
|
||||
|
||||
data[5] = gUnknown_085B2C18[floorDelta];
|
||||
|
||||
SetCameraPanningCallback(NULL);
|
||||
@@ -1830,16 +1831,16 @@ static void sub_8139AF4(u8 taskId)
|
||||
void sub_8139B60(void)
|
||||
{
|
||||
int xPos;
|
||||
|
||||
|
||||
gUnknown_0203AB5E = AddWindow(&gUnknown_085B2BAC);
|
||||
SetStandardWindowBorderStyle(gUnknown_0203AB5E, 0);
|
||||
|
||||
|
||||
xPos = GetStringCenterAlignXOffset(1, gText_ElevatorNowOn, 64);
|
||||
PrintTextOnWindow(gUnknown_0203AB5E, 1, gText_ElevatorNowOn, xPos, 1, TEXT_SPEED_FF, NULL);
|
||||
|
||||
|
||||
xPos = GetStringCenterAlignXOffset(1, gElevatorFloorsTable[gSpecialVar_0x8005], 64);
|
||||
PrintTextOnWindow(gUnknown_0203AB5E, 1, gElevatorFloorsTable[gSpecialVar_0x8005], xPos, 17, TEXT_SPEED_FF, NULL);
|
||||
|
||||
|
||||
PutWindowTilemap(gUnknown_0203AB5E);
|
||||
CopyWindowToVram(gUnknown_0203AB5E, 3);
|
||||
}
|
||||
@@ -2167,13 +2168,13 @@ void sub_8139F20(void)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (gSaveBlock2Ptr->frontier.field_D0C[0] >= gSaveBlock2Ptr->frontier.field_D0C[1])
|
||||
if (gSaveBlock2Ptr->frontier.field_D0C[0][0] >= gSaveBlock2Ptr->frontier.field_D0C[0][1])
|
||||
{
|
||||
unk = gSaveBlock2Ptr->frontier.field_D0C[0];
|
||||
unk = gSaveBlock2Ptr->frontier.field_D0C[0][0];
|
||||
}
|
||||
else
|
||||
{
|
||||
unk = gSaveBlock2Ptr->frontier.field_D0C[1];
|
||||
unk = gSaveBlock2Ptr->frontier.field_D0C[0][1];
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
@@ -2187,13 +2188,13 @@ void sub_8139F20(void)
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (gSaveBlock2Ptr->frontier.field_DC8[0] >= gSaveBlock2Ptr->frontier.field_DC8[1])
|
||||
if (gSaveBlock2Ptr->frontier.field_DC8[0][0] >= gSaveBlock2Ptr->frontier.field_DC8[0][1])
|
||||
{
|
||||
unk = gSaveBlock2Ptr->frontier.field_DC8[0];
|
||||
unk = gSaveBlock2Ptr->frontier.field_DC8[0][0];
|
||||
}
|
||||
else
|
||||
{
|
||||
unk = gSaveBlock2Ptr->frontier.field_DC8[1];
|
||||
unk = gSaveBlock2Ptr->frontier.field_DC8[0][1];
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
@@ -2240,10 +2241,10 @@ void sub_813A080(void)
|
||||
};
|
||||
|
||||
u8 i;
|
||||
u16 var = VarGet(VAR_0x40CE);
|
||||
u8 chosenLevel = gSaveBlock2Ptr->frontier.chosenLvl;
|
||||
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
|
||||
if (var == 2 && !FlagGet(FLAG_0x152))
|
||||
if (battleMode == 2 && !FlagGet(FLAG_0x152))
|
||||
{
|
||||
gSpecialVar_0x8005 = 5;
|
||||
gSpecialVar_0x8006 = 4;
|
||||
@@ -2252,7 +2253,7 @@ void sub_813A080(void)
|
||||
|
||||
for (i = 0; i < 9; i++)
|
||||
{
|
||||
if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.field_CE0[var][chosenLevel])
|
||||
if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode])
|
||||
{
|
||||
gSpecialVar_0x8005 = 4;
|
||||
gSpecialVar_0x8006 = i + 5;
|
||||
@@ -2662,8 +2663,8 @@ static void sub_813A2DC(u8 taskId)
|
||||
}
|
||||
|
||||
task->data[4] = convert_pixel_width_to_tile_width(unk1);
|
||||
|
||||
if (task->data[2] + task->data[4] > 0x1D)
|
||||
|
||||
if (task->data[2] + task->data[4] > 0x1D)
|
||||
{
|
||||
int unk2 = 0x1D - task->data[4];
|
||||
if (unk2 < 0)
|
||||
@@ -3036,13 +3037,13 @@ void sub_813A878(u8 a0)
|
||||
{
|
||||
static const u16 gUnknown_085B3104[] = {0x0000, 0x0001, 0x0002, 0x0100, 0x0101, 0x0400, 0x0401, 0x0200, 0x0201, 0x0300, 0x0500, 0x0600};
|
||||
|
||||
u16 var1 = VarGet(VAR_0x40CE);
|
||||
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
u16 var2 = VarGet(VAR_FRONTIER_GAMBLER_SET_FACILITY_F);
|
||||
u16 var3 = VarGet(VAR_FRONTIER_FACILITY);
|
||||
u16 frontierFacilityId = VarGet(VAR_FRONTIER_FACILITY);
|
||||
|
||||
if (VarGet(VAR_FRONTIER_GAMBLER_PLACED_BET_F) == 1)
|
||||
{
|
||||
if (gUnknown_085B3104[var2] == (var3 << 8) + var1)
|
||||
if (gUnknown_085B3104[var2] == (frontierFacilityId << 8) + battleMode)
|
||||
{
|
||||
if (a0 != 0)
|
||||
{
|
||||
@@ -3363,7 +3364,7 @@ void sub_813ADD4(void)
|
||||
struct Task *task = &gTasks[taskId];
|
||||
ListMenuGetScrollAndRow(task->data[14], &scrollOffset, &selectedRow);
|
||||
SetStandardWindowBorderStyle(task->data[13], 0);
|
||||
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
sub_8199F74(task->data[13], 1, gUnknown_085B2CF0[gSpecialVar_0x8004][scrollOffset + i], 10, i * 16, TEXT_SPEED_FF, NULL, 0, 0);
|
||||
@@ -3381,7 +3382,7 @@ void sub_813AEB4(void)
|
||||
u16 temp1 = 0;
|
||||
u16 temp2 = 0;
|
||||
gSpecialVar_0x8005 = 0;
|
||||
|
||||
|
||||
temp1 = VarGet(VAR_TEMP_E);
|
||||
temp2 = VarGet(VAR_TEMP_D);
|
||||
|
||||
@@ -3509,7 +3510,7 @@ static void sub_813B0B4(u8 a0)
|
||||
u8 eventObjectId;
|
||||
LoadPalette(&gUnknown_085B3280[a0], 0x1A0, 8);
|
||||
TryGetEventObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectId);
|
||||
|
||||
|
||||
if (a0 == 0)
|
||||
{
|
||||
PlaySE(SE_W109);
|
||||
@@ -3656,7 +3657,7 @@ bool32 sub_813B374(void)
|
||||
u16 var = VarGet(VAR_0x4037);
|
||||
|
||||
GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0);
|
||||
|
||||
|
||||
if (var < 9)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -3697,7 +3698,7 @@ bool32 sub_813B3B0(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER3))
|
||||
{
|
||||
switch (gSaveBlock1Ptr->location.mapNum)
|
||||
@@ -4159,7 +4160,7 @@ static u16 sub_813BC00(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (((gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_085B347C[retVal]) & 1))
|
||||
{
|
||||
gSaveBlock1Ptr->vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= 1 << gUnknown_085B347C[retVal];
|
||||
|
||||
+1
-1
@@ -951,7 +951,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles,
|
||||
if (!tileset->isCompressed)
|
||||
LoadBgTiles(2, tileset->tiles, numTiles * 32, offset);
|
||||
else
|
||||
copy_decompressed_tile_data_to_vram_autofree(2, tileset->tiles, numTiles * 32, offset, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(2, tileset->tiles, numTiles * 32, offset, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-18
@@ -5,6 +5,7 @@
|
||||
#include "sprite.h"
|
||||
#include "pokemon.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "malloc.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "main.h"
|
||||
@@ -26,6 +27,7 @@
|
||||
#include "event_data.h"
|
||||
#include "overworld.h"
|
||||
#include "menu.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
|
||||
struct HallofFameMon
|
||||
{
|
||||
@@ -81,18 +83,10 @@ extern const u8 gText_MainMenuTime[];
|
||||
extern const u8 gContestConfetti_Gfx[];
|
||||
extern const u8 gContestConfetti_Pal[];
|
||||
|
||||
extern void NewMenuHelpers_DrawDialogueFrame(u8, u8);
|
||||
extern void sub_8175620(void);
|
||||
extern u8 TrySavingData(u8);
|
||||
extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16);
|
||||
extern void sub_8197434(u8, u8);
|
||||
extern u16 sub_818D97C(u8 playerGender, u8);
|
||||
extern u16 sub_818D8AC(u16, u8, s16, s16, u8, u16);
|
||||
extern const void* stdpal_get(u8);
|
||||
extern void LoadWindowGfx(u8, u8, u16, u8);
|
||||
extern u16 sub_818D820(u16);
|
||||
extern u16 sub_818D8F0(u16);
|
||||
extern u16 sub_818D7D8(u16 species, u32 trainerId, u32 personality, u8 arg3, s16 sp0, s16 sp1, u8 sp2, u16 sp3);
|
||||
extern void sub_8198204(u8 *dst, const u8 *src, u8, u8, u8);
|
||||
extern bool8 sub_80F9C30(void);
|
||||
extern void sub_8198314(void);
|
||||
@@ -102,8 +96,6 @@ extern void sub_80F9BF4(u16, u16, u8);
|
||||
extern void sub_81980F0(u8, u8, u8, u8, u16);
|
||||
extern void sub_80F9BCC(u16, u16, u8);
|
||||
extern bool8 sub_80F9C1C(void);
|
||||
extern u16 SpeciesToPokedexNum(u16 species);
|
||||
extern void dp13_810BB8C(void);
|
||||
extern void sub_81971D0(void);
|
||||
extern void sub_8197200(void);
|
||||
extern void sub_8152254(void);
|
||||
@@ -611,7 +603,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
|
||||
if (currMon->species == SPECIES_EGG)
|
||||
field6 += 10;
|
||||
|
||||
spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
|
||||
spriteId = CreatePicSprite2(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
|
||||
gSprites[spriteId].tDestinationX = field4;
|
||||
gSprites[spriteId].tDestinationY = field6;
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
@@ -723,7 +715,7 @@ static void sub_8173EE4(u8 taskId)
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
ShowBg(3);
|
||||
gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF);
|
||||
gTasks[taskId].tPlayerSpriteID = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 120, 72, 6, 0xFFFF);
|
||||
AddWindow(&sHof_WindowTemplate);
|
||||
LoadWindowGfx(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0);
|
||||
LoadPalette(stdpal_get(1), 0xE0, 0x20);
|
||||
@@ -780,11 +772,11 @@ static void Task_Hof_HandleExit(u8 taskId)
|
||||
if (spriteId != 0xFF)
|
||||
{
|
||||
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
|
||||
sub_818D820(spriteId);
|
||||
FreeAndDestroyMonPicSprite(spriteId);
|
||||
}
|
||||
}
|
||||
|
||||
sub_818D8F0(gTasks[taskId].tPlayerSpriteID);
|
||||
FreeAndDestroyTrainerPicSprite(gTasks[taskId].tPlayerSpriteID);
|
||||
HideBg(0);
|
||||
HideBg(1);
|
||||
HideBg(3);
|
||||
@@ -956,7 +948,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
|
||||
if (currMon->species == SPECIES_EGG)
|
||||
posY += 10;
|
||||
|
||||
spriteId = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF);
|
||||
spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF);
|
||||
gSprites[spriteId].oam.priority = 1;
|
||||
gTasks[taskId].tMonSpriteId(i) = spriteId;
|
||||
}
|
||||
@@ -1026,7 +1018,7 @@ static void Task_HofPC_HandleInput(u8 taskId)
|
||||
u8 spriteId = gTasks[taskId].tMonSpriteId(i);
|
||||
if (spriteId != 0xFF)
|
||||
{
|
||||
sub_818D820(spriteId);
|
||||
FreeAndDestroyMonPicSprite(spriteId);
|
||||
gTasks[taskId].tMonSpriteId(i) = 0xFF;
|
||||
}
|
||||
}
|
||||
@@ -1087,7 +1079,7 @@ static void Task_HofPC_HandleExit(u8 taskId)
|
||||
u16 spriteId = gTasks[taskId].tMonSpriteId(i);
|
||||
if (spriteId != 0xFF)
|
||||
{
|
||||
sub_818D820(spriteId);
|
||||
FreeAndDestroyMonPicSprite(spriteId);
|
||||
gTasks[taskId].tMonSpriteId(i) = 0xFF;
|
||||
}
|
||||
}
|
||||
@@ -1305,7 +1297,7 @@ static void sub_8174F70(void)
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
reset_temp_tile_data_buffers();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
FreeAllSpritePalettes();
|
||||
gReservedSpritePaletteCount = 8;
|
||||
LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet);
|
||||
|
||||
+8
-8
@@ -845,8 +845,8 @@ u16 CountTotalItemQuantityInBag(u16 itemId)
|
||||
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -867,8 +867,8 @@ static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -890,8 +890,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
|
||||
u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16));
|
||||
u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8));
|
||||
@@ -963,8 +963,8 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
|
||||
|
||||
i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4];
|
||||
if (items[i] == itemId && quantities[i] >= count)
|
||||
|
||||
+1
-1
@@ -1679,7 +1679,7 @@ void CB2_LinkError(void)
|
||||
static void sub_800B080(void)
|
||||
{
|
||||
LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0);
|
||||
copy_decompressed_tile_data_to_vram_autofree(1, gWirelessLinkDisplayGfx, FALSE, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplayGfx, FALSE, 0, 0);
|
||||
CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
LoadPalette(gWirelessLinkDisplayPal, 0, 0x20);
|
||||
|
||||
+7
-9
@@ -1,7 +1,5 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "battle_dome_cards.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "bg.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/rgb.h"
|
||||
@@ -1018,7 +1016,7 @@ void task_new_game_prof_birch_speech_1(u8 taskId)
|
||||
ScanlineEffect_Stop();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
AddBirchSpeechObjects(taskId);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gTasks[taskId].data[4] = 0;
|
||||
@@ -1336,7 +1334,7 @@ void task_new_game_prof_birch_speech_17(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
FreeAllWindowBuffers();
|
||||
sub_818D820(gTasks[taskId].data[9]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]);
|
||||
set_default_player_name(Random() % 20);
|
||||
DestroyTask(taskId);
|
||||
DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, new_game_prof_birch_speech_part2_start);
|
||||
@@ -1515,8 +1513,8 @@ void task_new_game_prof_birch_speech_part2_12(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
FreeAllWindowBuffers();
|
||||
sub_818D820(gTasks[taskId].data[9]);
|
||||
dp13_810BB8C();
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[9]);
|
||||
ResetAllPicSprites();
|
||||
SetMainCallback2(CB2_NewGame);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -1558,7 +1556,7 @@ void new_game_prof_birch_speech_part2_start(void)
|
||||
ScanlineEffect_Stop();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
AddBirchSpeechObjects(taskId);
|
||||
if (gSaveBlock2Ptr->playerGender != MALE)
|
||||
{
|
||||
@@ -1613,7 +1611,7 @@ void sub_80318D8(struct Sprite *sprite)
|
||||
|
||||
u8 sub_80318F4(u8 a, u8 b)
|
||||
{
|
||||
return sub_818D3E4(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1);
|
||||
return CreatePicSprite2(SPECIES_LOTAD, 8, 0, 1, a, b, 14, -1);
|
||||
}
|
||||
|
||||
void AddBirchSpeechObjects(u8 taskId)
|
||||
|
||||
+1
-1
@@ -5,9 +5,9 @@
|
||||
#include "event_data.h"
|
||||
#include "string_util.h"
|
||||
#include "battle.h"
|
||||
#include "battle_frontier_1.h"
|
||||
#include "gym_leader_rematch.h"
|
||||
|
||||
extern void sub_8197080(u8 *dest);
|
||||
extern const u8 gTrainerClassNames[][13];
|
||||
|
||||
// Static type declarations
|
||||
|
||||
+1
-1
@@ -1801,7 +1801,7 @@ void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode)
|
||||
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, int size, u16 offset, u8 mode)
|
||||
{
|
||||
int sizeOut;
|
||||
void *ptr = malloc_and_decompress(src, &sizeOut);
|
||||
|
||||
+2
-2
@@ -23,6 +23,8 @@
|
||||
#include "overworld.h"
|
||||
#include "mail.h"
|
||||
#include "battle_records.h"
|
||||
#include "item.h"
|
||||
#include "pokedex.h"
|
||||
|
||||
extern u8 gDifferentSaveFile;
|
||||
extern u16 gSaveFileStatus;
|
||||
@@ -33,13 +35,11 @@ extern u16 GetGeneratedTrainerIdLower(void);
|
||||
extern void ClearContestWinnerPicsInContestHall(void);
|
||||
extern void sub_80BB358(void);
|
||||
extern void ResetBagScrollPositions(void);
|
||||
extern void ResetPokedex(void);
|
||||
extern void ResetGabbyAndTy(void);
|
||||
extern void ResetSecretBases(void);
|
||||
extern void ResetLinkContestBoolean(void);
|
||||
extern void sub_8052DA8(void);
|
||||
extern void ResetPokemonStorageSystem(void);
|
||||
extern void ClearBag(void);
|
||||
extern void NewGameInitPCItems(void);
|
||||
extern void ClearDecorationInventories(void);
|
||||
extern void ResetFanClub(void);
|
||||
|
||||
+2
-2
@@ -151,7 +151,7 @@ extern void TransferTilesetAnimsBuffer(void);
|
||||
extern bool32 sub_81D5F48(void);
|
||||
extern u8 GetCurrentTrainerHillMapId(void);
|
||||
extern bool8 warp0_in_pokecenter(void);
|
||||
extern void dp13_810BB8C(void);
|
||||
extern void ResetAllPicSprites(void);
|
||||
extern void FieldEffectActiveListClear(void);
|
||||
extern void SetUpFieldTasks(void);
|
||||
extern void sub_81BE6B8(void);
|
||||
@@ -2149,7 +2149,7 @@ static void sub_8086988(u32 a1)
|
||||
ResetSpriteData();
|
||||
ResetPaletteFade();
|
||||
ScanlineEffect_Clear();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
ResetCameraUpdateInfo();
|
||||
InstallCameraPanAheadCallback();
|
||||
if (!a1)
|
||||
|
||||
+64
-64
@@ -11,7 +11,7 @@
|
||||
#include "main.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "battle_dome_cards.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "malloc.h"
|
||||
#include "gpu_regs.h"
|
||||
@@ -821,7 +821,7 @@ const u8 sText_TenDashes[] = _("----------");
|
||||
void ResetPokedex(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
|
||||
gUnknown_02039B50 = 0;
|
||||
gUnknown_02039B52 = 64;
|
||||
gUnknown_030060B0 = 0;
|
||||
@@ -910,7 +910,7 @@ void sub_80BB534(void)
|
||||
{
|
||||
u8 *addr;
|
||||
u32 size;
|
||||
|
||||
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
@@ -929,7 +929,7 @@ void sub_80BB534(void)
|
||||
ResetPaletteFade();
|
||||
FreeAllSpritePalettes();
|
||||
gReservedSpritePaletteCount = 8;
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -984,7 +984,7 @@ void sub_80BB78C(u8 taskId)
|
||||
void sub_80BB7D4(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
|
||||
|
||||
|
||||
if (gUnknown_02039B4C->menuY)
|
||||
{
|
||||
gUnknown_02039B4C->menuY -= 8;
|
||||
@@ -1377,7 +1377,7 @@ bool8 sub_80BC514(u8 a)
|
||||
SetBgTilemapBuffer(2, AllocZeroed(0x800));
|
||||
SetBgTilemapBuffer(1, AllocZeroed(0x800));
|
||||
SetBgTilemapBuffer(0, AllocZeroed(0x800));
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0);
|
||||
CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0);
|
||||
if (a == 0)
|
||||
@@ -1467,7 +1467,7 @@ void sub_80BC844(u8 a)
|
||||
void sub_80BC890(void)
|
||||
{
|
||||
void* tilemapBuffer;
|
||||
|
||||
|
||||
FreeAllWindowBuffers();
|
||||
tilemapBuffer = GetBgTilemapBuffer(0);
|
||||
if (tilemapBuffer)
|
||||
@@ -1487,7 +1487,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
{
|
||||
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
|
||||
s16 i;
|
||||
|
||||
|
||||
gUnknown_02039B4C->pokemonListCount = 0;
|
||||
|
||||
switch (dexMode)
|
||||
@@ -1633,7 +1633,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
|
||||
{
|
||||
u8 color[3];
|
||||
|
||||
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
@@ -1731,7 +1731,7 @@ void sub_80BD154(u16 a, u8 left, u8 top, u16 unused)
|
||||
{
|
||||
u8 text[6];
|
||||
u16 r6;
|
||||
|
||||
|
||||
memcpy(text, gUnknown_0855D2B8, 6);
|
||||
r6 = gUnknown_02039B4C->unk0[a].dexNum;
|
||||
if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN)
|
||||
@@ -1753,7 +1753,7 @@ void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
|
||||
u8 sub_80BD23C(u16 num, u8 left, u8 top)
|
||||
{
|
||||
const u8* str;
|
||||
|
||||
|
||||
num = NationalPokedexNumToSpecies(num);
|
||||
if (num)
|
||||
str = gSpeciesNames[num];
|
||||
@@ -1773,7 +1773,7 @@ void sub_80BD2B4(u16 a, u16 b)
|
||||
u8 i;
|
||||
u16 unk;
|
||||
u8 spriteId;
|
||||
|
||||
|
||||
gPaletteFade.bufferTransferDisabled = TRUE;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
@@ -1803,13 +1803,13 @@ void sub_80BD2B4(u16 a, u16 b)
|
||||
gSprites[spriteId].callback = sub_80BE4E0;
|
||||
gSprites[spriteId].data[5] = 32;
|
||||
}
|
||||
|
||||
|
||||
sub_80BCE84(0, a, b);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
|
||||
|
||||
gUnknown_02039B4C->unk630 = 0;
|
||||
gUnknown_02039B4C->unk632 = 0;
|
||||
|
||||
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
}
|
||||
|
||||
@@ -1897,7 +1897,7 @@ u16 sub_80BD69C(u16 a, u16 b)
|
||||
u8 i;
|
||||
u16 r6;
|
||||
u8 r10 = 0;
|
||||
|
||||
|
||||
if ((gMain.heldKeys & DPAD_UP) && (a > 0))
|
||||
{
|
||||
r10 = 1;
|
||||
@@ -1917,7 +1917,7 @@ u16 sub_80BD69C(u16 a, u16 b)
|
||||
else if ((gMain.newKeys & DPAD_LEFT) && (a > 0))
|
||||
{
|
||||
r6 = a;
|
||||
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
|
||||
gUnknown_02039B4C->unk62C += 16 * (a - r6);
|
||||
@@ -1935,13 +1935,13 @@ u16 sub_80BD69C(u16 a, u16 b)
|
||||
sub_80BD2B4(a, 0xE);
|
||||
PlaySE(SE_Z_PAGE);
|
||||
}
|
||||
|
||||
|
||||
if (r10 == 0)
|
||||
{
|
||||
gUnknown_02039B4C->unk638 = 0;
|
||||
return a;
|
||||
}
|
||||
|
||||
|
||||
r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4];
|
||||
r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4];
|
||||
gUnknown_02039B4C->unk62E = r3;
|
||||
@@ -2030,7 +2030,7 @@ u8 sub_80BDA40(void)
|
||||
{
|
||||
if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
|
||||
{
|
||||
sub_818D820(gUnknown_02039B4C->unk61E[i]);
|
||||
FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[i]);
|
||||
gUnknown_02039B4C->unk61E[i] |= 0xFFFF;
|
||||
}
|
||||
}
|
||||
@@ -2109,7 +2109,7 @@ void sub_80BDB7C(u8 a)
|
||||
if (a == 0)
|
||||
{
|
||||
u32 _a;
|
||||
|
||||
|
||||
if (!IsNationalPokedexEnabled())
|
||||
{
|
||||
CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
|
||||
@@ -2160,22 +2160,22 @@ void sub_80BDB7C(u8 a)
|
||||
else
|
||||
{
|
||||
u16 r6;
|
||||
|
||||
|
||||
CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 76, 1);
|
||||
StartSpriteAnim(&gSprites[spriteId], 1);
|
||||
|
||||
CreateSprite(&gUnknown_0855D20C, 17, 45, 1);
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D20C, 17, 55, 1);
|
||||
StartSpriteAnim(&gSprites[spriteId], 1);
|
||||
|
||||
CreateSprite(&gUnknown_0855D20C, 17, 81, 1);
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D20C, 17, 91, 1);
|
||||
StartSpriteAnim(&gSprites[spriteId], 1);
|
||||
|
||||
|
||||
r6 = GetHoennPokedexCount(0);
|
||||
_a = 0;
|
||||
|
||||
@@ -2197,9 +2197,9 @@ void sub_80BDB7C(u8 a)
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 45, 1);
|
||||
r5 = (r6 % 100) % 10;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
|
||||
|
||||
_a = 0;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 55, 1);
|
||||
r5 = gUnknown_02039B4C->unk61A / 100;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
@@ -2207,21 +2207,21 @@ void sub_80BDB7C(u8 a)
|
||||
_a = 1;
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 55, 1);
|
||||
r5 = (gUnknown_02039B4C->unk61A % 100) / 10;
|
||||
if (r5 != 0 || _a != 0)
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 55, 1);
|
||||
r5 = (gUnknown_02039B4C->unk61A % 100) % 10;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
|
||||
|
||||
r6 = GetHoennPokedexCount(1);
|
||||
_a = 0;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 81, 1);
|
||||
r5 = r6 / 100;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
@@ -2229,20 +2229,20 @@ void sub_80BDB7C(u8 a)
|
||||
_a = 1;
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 81, 1);
|
||||
r5 = (r6 % 100) / 10;
|
||||
if (r5 != 0 || _a != 0)
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 81, 1);
|
||||
r5 = (r6 % 100) % 10;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
|
||||
|
||||
_a = 0;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 91, 1);
|
||||
r5 = gUnknown_02039B4C->unk61C / 100;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
@@ -2250,14 +2250,14 @@ void sub_80BDB7C(u8 a)
|
||||
_a = 1;
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 91, 1);
|
||||
r5 = (gUnknown_02039B4C->unk61C % 100) / 10;
|
||||
if (r5 != 0 || _a != 0)
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
else
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
|
||||
|
||||
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 91, 1);
|
||||
r5 = (gUnknown_02039B4C->unk61C % 100) % 10;
|
||||
StartSpriteAnim(&gSprites[spriteId], r5);
|
||||
@@ -2313,7 +2313,7 @@ void sub_80BE4E0(struct Sprite *sprite)
|
||||
|
||||
if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
|
||||
{
|
||||
sub_818D820(gUnknown_02039B4C->unk61E[data1]);
|
||||
FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
|
||||
gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
|
||||
}
|
||||
else
|
||||
@@ -2339,7 +2339,7 @@ void sub_80BE4E0(struct Sprite *sprite)
|
||||
|
||||
if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0)
|
||||
{
|
||||
sub_818D820(gUnknown_02039B4C->unk61E[data1]);
|
||||
FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
|
||||
gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
|
||||
}
|
||||
}
|
||||
@@ -2449,14 +2449,14 @@ void sub_80BE8DC(const u8* str, u8 left, u8 top)
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
|
||||
|
||||
AddTextPrinterParameterized2(0, 1, left, top, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
u8 sub_80BE91C(struct PokedexListItem* item, u8 b)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
|
||||
gUnknown_02039B54 = item;
|
||||
taskId = CreateTask(sub_80BEA24, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
@@ -2473,7 +2473,7 @@ u8 sub_80BE91C(struct PokedexListItem* item, u8 b)
|
||||
SetBgTilemapBuffer(0, AllocZeroed(0x800));
|
||||
InitWindows(gUnknown_0856E640);
|
||||
DeactivateAllTextPrinters();
|
||||
|
||||
|
||||
return taskId;
|
||||
}
|
||||
|
||||
@@ -2518,7 +2518,7 @@ void sub_80BEA24(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
@@ -2703,7 +2703,7 @@ void sub_80BEFD0(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_818D820(gTasks[taskId].data[4]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
|
||||
switch (gUnknown_02039B4C->unk64E)
|
||||
{
|
||||
case 1:
|
||||
@@ -2724,7 +2724,7 @@ void sub_80BF038(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_818D820(gTasks[taskId].data[4]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
|
||||
gTasks[taskId].func = sub_80BEA24;
|
||||
}
|
||||
}
|
||||
@@ -2733,7 +2733,7 @@ void sub_80BF070(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_818D820(gTasks[taskId].data[4]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
|
||||
sub_80BEDB0();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -2813,7 +2813,7 @@ void sub_80BF250(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
CopyToBgTilemapBuffer(3, &gUnknown_08DC3198, 0, 0);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
@@ -2960,7 +2960,7 @@ void sub_80BF790(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_8145914();
|
||||
sub_818D820(gTasks[taskId].data[4]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
|
||||
switch (gUnknown_02039B4C->unk64E)
|
||||
{
|
||||
default:
|
||||
@@ -3007,7 +3007,7 @@ void sub_80BF82C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
CopyToBgTilemapBuffer(3, gUnknown_08DC2E6C, 0, 0);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
@@ -3109,8 +3109,8 @@ void sub_80BFC78(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_818D820(gTasks[taskId].data[4]);
|
||||
sub_818D8F0(gTasks[taskId].data[5]);
|
||||
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
|
||||
FreeAndDestroyTrainerPicSprite(gTasks[taskId].data[5]);
|
||||
switch (gUnknown_02039B4C->unk64E)
|
||||
{
|
||||
default:
|
||||
@@ -3334,7 +3334,7 @@ void sub_80BFE38(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
u16 dexNum = gTasks[taskId].data[1];
|
||||
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
@@ -3354,7 +3354,7 @@ void sub_80BFE38(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
|
||||
CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
@@ -3440,7 +3440,7 @@ void blockset_load_palette_to_gpu(u8 taskId)
|
||||
buffer = GetBgTilemapBuffer(3);
|
||||
if (buffer)
|
||||
Free(buffer);
|
||||
|
||||
|
||||
species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]);
|
||||
otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12];
|
||||
personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14];
|
||||
@@ -3472,7 +3472,7 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
|
||||
const u8 *text;
|
||||
const u8 *text2;
|
||||
const u8 *text3;
|
||||
|
||||
|
||||
if (d)
|
||||
sub_80BE8DC(gText_PokedexRegistration, GetStringCenterAlignXOffset(1, gText_PokedexRegistration, 0xF0), 0);
|
||||
if (value == 0)
|
||||
@@ -4064,7 +4064,7 @@ void sub_80C0A88(u8 windowId, const u8 *str, u8 left, u8 top)
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
|
||||
|
||||
AddTextPrinterParameterized2(windowId, 1, left, top, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
@@ -4107,7 +4107,7 @@ void sub_80C0BF0(u8 windowId, const u8* str, u8 left, u8 top)
|
||||
u8 str2[11];
|
||||
u8 i;
|
||||
u8 count;
|
||||
|
||||
|
||||
for (i = 0; i < 11; i++)
|
||||
str2[i] = CHAR_SPACE;
|
||||
for (count = 0; str[count] != CHAR_SPACE && count < 11; count++)
|
||||
@@ -4232,12 +4232,12 @@ u32 sub_80C0E68(u16 a)
|
||||
u16 sub_80C0E9C(u16 num, s16 x, s16 y, u16 paletteSlot)
|
||||
{
|
||||
num = NationalPokedexNumToSpecies(num);
|
||||
return sub_818D7D8(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
return CreateMonPicSprite_HandleDeoxys(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
}
|
||||
|
||||
u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot)
|
||||
{
|
||||
return sub_818D8AC(species, TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
return CreateTrainerPicSprite(species, TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
}
|
||||
|
||||
int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
|
||||
@@ -4364,7 +4364,7 @@ u8 sub_80C1258(void)
|
||||
void sub_80C1270(const u8 *str, u32 left, u32 top)
|
||||
{
|
||||
u8 color[3];
|
||||
|
||||
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 2;
|
||||
@@ -4397,8 +4397,8 @@ void sub_80C12E0(u8 taskId)
|
||||
InitWindows(gUnknown_0856F008);
|
||||
DeactivateAllTextPrinters();
|
||||
PutWindowTilemap(0);
|
||||
copy_decompressed_tile_data_to_vram_autofree(3, gPokedexSearchMenu_Gfx, 0x2000, 0, 0);
|
||||
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gPokedexSearchMenu_Gfx, 0x2000, 0, 0);
|
||||
|
||||
if (!IsNationalPokedexEnabled())
|
||||
CopyToBgTilemapBuffer(3, gPokedexSearch2_Tilemap, 0, 0);
|
||||
else
|
||||
@@ -4450,7 +4450,7 @@ void sub_80C12E0(u8 taskId)
|
||||
void sub_80C152C(void)
|
||||
{
|
||||
void* tilemapBuffer;
|
||||
|
||||
|
||||
FreeAllWindowBuffers();
|
||||
tilemapBuffer = GetBgTilemapBuffer(0);
|
||||
if (tilemapBuffer)
|
||||
@@ -4992,12 +4992,12 @@ void sub_80C2064(u8 a, u8 b)
|
||||
void sub_80C20F8(u8 taskId)
|
||||
{
|
||||
u16 var;
|
||||
|
||||
|
||||
sub_80C12B0(0x28, 0x10, 0x60, 0x50);
|
||||
|
||||
var = gTasks[taskId].data[6] + gTasks[taskId].data[7];
|
||||
sub_80C1270(gUnknown_0856EE5C[var].text2, 0x2D, 0x11);
|
||||
|
||||
|
||||
var = gTasks[taskId].data[8] + gTasks[taskId].data[9];
|
||||
sub_80C1270(gUnknown_0856EEB4[var].text2, 0x2D, 0x21);
|
||||
|
||||
|
||||
+8
-8
@@ -13,6 +13,7 @@
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
#include "link.h"
|
||||
@@ -80,8 +81,7 @@ extern void set_unknown_box_id(u8);
|
||||
extern void sub_803FA70(u8 battlerId);
|
||||
extern u8 sav1_map_get_name(void);
|
||||
extern const u8 *sub_81A1650(u8, u8 language);
|
||||
extern u8 BattleFrontierGetOpponentLvl(u8);
|
||||
extern u16 FacilityClassToPicIndex(u16);
|
||||
extern u8 GetFrontierEnemyMonLevel(u8);
|
||||
extern bool8 InBattlePyramid(void);
|
||||
extern bool8 InBattlePike(void);
|
||||
extern bool8 sub_806F104(void);
|
||||
@@ -955,7 +955,7 @@ const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using Nationa
|
||||
NATIONAL_DEX_BLAZIKEN, // HOENN_DEX_BLAZIKEN
|
||||
NATIONAL_DEX_MUDKIP, // HOENN_DEX_MUDKIP
|
||||
NATIONAL_DEX_MARSHTOMP, // HOENN_DEX_MARSHTOMP
|
||||
NATIONAL_DEX_SWAMPERT, // HOENN_DEX_SWAMPERT
|
||||
NATIONAL_DEX_SWAMPERT, // HOENN_DEX_SWAMPERT
|
||||
NATIONAL_DEX_POOCHYENA, // HOENN_DEX_POOCHYENA
|
||||
NATIONAL_DEX_MIGHTYENA, // HOENN_DEX_MIGHTYENA
|
||||
NATIONAL_DEX_ZIGZAGOON, // HOENN_DEX_ZIGZAGOON
|
||||
@@ -2819,8 +2819,8 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv
|
||||
u8 language;
|
||||
u8 value;
|
||||
|
||||
if (gSaveBlock2Ptr->frontier.chosenLvl != 0)
|
||||
level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontier.chosenLvl);
|
||||
if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
|
||||
level = GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode);
|
||||
else if (lvl50)
|
||||
level = 50;
|
||||
else
|
||||
@@ -2884,7 +2884,7 @@ void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u
|
||||
|
||||
CreateMon(mon,
|
||||
src->mons[monId].species,
|
||||
BattleFrontierGetOpponentLvl(src->field_0_1 - 1),
|
||||
GetFrontierEnemyMonLevel(src->field_0_1 - 1),
|
||||
0x1F,
|
||||
TRUE,
|
||||
personality,
|
||||
@@ -7118,9 +7118,9 @@ u16 FacilityClassToPicIndex(u16 facilityClass)
|
||||
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender)
|
||||
{
|
||||
if (playerGender != MALE)
|
||||
return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN);
|
||||
else
|
||||
return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_MAY);
|
||||
else
|
||||
return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN);
|
||||
}
|
||||
|
||||
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
|
||||
|
||||
+2
-2
@@ -1635,8 +1635,8 @@ void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
|
||||
|
||||
@@ -1293,7 +1293,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst)
|
||||
|
||||
static void CB2_RecordedBattleEnd(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = sUnknown_0203C7AD;
|
||||
gSaveBlock2Ptr->frontier.lvlMode = sUnknown_0203C7AD;
|
||||
gBattleOutcome = 0;
|
||||
gBattleTypeFlags = 0;
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
@@ -1353,7 +1353,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
gTrainerBattleOpponent_B = src->opponentB;
|
||||
gPartnerTrainerId = src->partnerId;
|
||||
gUnknown_0203C7B4 = src->field_4FA;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.chosenLvl;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
sFrontierFacility = src->field_4FD;
|
||||
sUnknown_0203C7AF = src->field_4FE;
|
||||
sBattleStyle = src->battleStyle;
|
||||
@@ -1375,7 +1375,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
sUnknown_0203CCDC[i] = src->field_50E[i];
|
||||
}
|
||||
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = src->field_4FC;
|
||||
gSaveBlock2Ptr->frontier.lvlMode = src->field_4FC;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
|
||||
+3
-2
@@ -18,6 +18,7 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "trade.h"
|
||||
#include "trainer_card.h"
|
||||
#include "overworld.h"
|
||||
@@ -468,7 +469,7 @@ void sub_8012780(u8 taskId)
|
||||
switch (data->state)
|
||||
{
|
||||
case 0:
|
||||
if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.chosenLvl == 1)
|
||||
if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN)
|
||||
gSpecialVar_0x8004++;
|
||||
gUnknown_02022C2C = gUnknown_082F00C4[gSpecialVar_0x8004];
|
||||
gUnknown_02022C2D = gUnknown_082F00C4[gSpecialVar_0x8004] >> 8;
|
||||
@@ -1050,7 +1051,7 @@ void sub_80134E8(u8 taskId)
|
||||
switch (data->state)
|
||||
{
|
||||
case 0:
|
||||
if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.chosenLvl == 1)
|
||||
if (gSpecialVar_0x8004 == 20 && gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_OPEN)
|
||||
gSpecialVar_0x8004++;
|
||||
gUnknown_02022C2C = gUnknown_082F0530[gSpecialVar_0x8004];
|
||||
sub_8010F84(gUnknown_02022C2C, 0, 0);
|
||||
|
||||
+5
-10
@@ -20,6 +20,7 @@
|
||||
#include "international_string_util.h"
|
||||
#include "trig.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
|
||||
#define STARTER_MON_COUNT 3
|
||||
|
||||
@@ -48,12 +49,6 @@ extern const u8 gStarterChoose_LabelCoords[][2];
|
||||
extern const u8 gUnknown_085B1E0C[];
|
||||
extern const u8 gUnknown_085B1E28[][2];
|
||||
|
||||
extern void clear_scheduled_bg_copies_to_vram(void);
|
||||
extern void dp13_810BB8C(void);
|
||||
extern void do_scheduled_bg_tilemap_copies_to_vram(void);
|
||||
extern u16 sub_818D820(u16);
|
||||
extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16);
|
||||
|
||||
// this file's functions
|
||||
static void MainCallback2_StarterChoose(void);
|
||||
static void sub_8134604(void);
|
||||
@@ -132,7 +127,7 @@ void CB2_ChooseStarter(void)
|
||||
ResetSpriteData();
|
||||
ResetPaletteFade();
|
||||
FreeAllSpritePalettes();
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
|
||||
LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20);
|
||||
LoadPalette(gBirchBagGrassPal, 0, 0x40);
|
||||
@@ -263,7 +258,7 @@ static void Task_StarterChoose5(u8 taskId)
|
||||
case 0: // YES
|
||||
// Return the starter choice and exit.
|
||||
gSpecialVar_Result = gTasks[taskId].tStarterSelection;
|
||||
dp13_810BB8C();
|
||||
ResetAllPicSprites();
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
break;
|
||||
case 1: // NO
|
||||
@@ -271,7 +266,7 @@ static void Task_StarterChoose5(u8 taskId)
|
||||
PlaySE(SE_SELECT);
|
||||
spriteId = gTasks[taskId].tPkmnSpriteId;
|
||||
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
|
||||
sub_818D820(spriteId);
|
||||
FreeAndDestroyMonPicSprite(spriteId);
|
||||
|
||||
spriteId = gTasks[taskId].tCircleSpriteId;
|
||||
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
|
||||
@@ -349,7 +344,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
spriteId = sub_818D3E4(species, 8, 0, 1, x, y, 0xE, 0xFFFF);
|
||||
spriteId = CreatePicSprite2(species, 8, 0, 1, x, y, 0xE, 0xFFFF);
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "sprite.h"
|
||||
#include "window.h"
|
||||
@@ -7,7 +5,10 @@
|
||||
#include "constants/species.h"
|
||||
#include "palette.h"
|
||||
#include "decompress.h"
|
||||
#include "battle_dome_cards.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "data2.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES];
|
||||
extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES];
|
||||
@@ -19,11 +20,10 @@ extern const union AffineAnimCmd *const gUnknown_082FF694[];
|
||||
extern const union AnimCmd *const gPlayerMonSpriteAnimsTable[];
|
||||
extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
|
||||
extern const union AnimCmd *const *const gUnknown_0830536C[];
|
||||
extern const u8 gFacilityClassToPicIndex[];
|
||||
|
||||
// Static type declarations
|
||||
|
||||
struct BattleDomeCard
|
||||
struct PicData
|
||||
{
|
||||
u8 *frames;
|
||||
struct SpriteFrameImage *images;
|
||||
@@ -33,15 +33,16 @@ struct BattleDomeCard
|
||||
};
|
||||
|
||||
// Static RAM declarations
|
||||
#define PICS_COUNT 8
|
||||
|
||||
static EWRAM_DATA struct SpriteTemplate gUnknown_0203CCEC = {};
|
||||
static EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {};
|
||||
static EWRAM_DATA struct SpriteTemplate sCreatingSpriteTemplate = {};
|
||||
static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {};
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
// .rodata
|
||||
|
||||
static const struct BattleDomeCard gUnknown_0860B058 = {};
|
||||
static const struct PicData sDummyPicData = {};
|
||||
static const struct OamData gUnknown_0860B064 =
|
||||
{
|
||||
.size = 3
|
||||
@@ -53,80 +54,67 @@ static const struct OamData gUnknown_0860B06C =
|
||||
|
||||
// .text
|
||||
|
||||
static void nullsub_122(struct Sprite *sprite)
|
||||
static void DummyPicSpriteCallback(struct Sprite *sprite)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool16 dp13_810BB8C(void)
|
||||
bool16 ResetAllPicSprites(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i ++)
|
||||
{
|
||||
gUnknown_0203CD04[i] = gUnknown_0860B058;
|
||||
}
|
||||
for (i = 0; i < PICS_COUNT; i ++)
|
||||
sSpritePics[i] = sDummyPicData;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool16 load_pokemon_image_TODO(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys)
|
||||
static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys)
|
||||
{
|
||||
if (!isTrainer)
|
||||
{
|
||||
if (isFrontPic)
|
||||
{
|
||||
if (!ignoreDeoxys)
|
||||
{
|
||||
LoadSpecialPokePic(&gMonFrontPicTable[species], dest, species, personality, isFrontPic);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], dest, species, personality, isFrontPic);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!ignoreDeoxys)
|
||||
{
|
||||
LoadSpecialPokePic(&gMonBackPicTable[species], dest, species, personality, isFrontPic);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], dest, species, personality, isFrontPic);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isFrontPic)
|
||||
{
|
||||
DecompressPicFromTable(&gTrainerFrontPicTable[species], dest, species);
|
||||
}
|
||||
else
|
||||
{
|
||||
DecompressPicFromTable(&gTrainerBackPicTable[species], dest, species);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool16 sub_818D09C(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer)
|
||||
static bool16 DecompressPic_HandleDeoxys(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer)
|
||||
{
|
||||
return load_pokemon_image_TODO(species, personality, isFrontPic, dest, isTrainer, FALSE);
|
||||
return DecompressPic(species, personality, isFrontPic, dest, isTrainer, FALSE);
|
||||
}
|
||||
|
||||
static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
|
||||
static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
|
||||
{
|
||||
if (!isTrainer)
|
||||
{
|
||||
if (paletteTag == 0xFFFF)
|
||||
{
|
||||
gUnknown_0203CCEC.paletteTag |= 0xFFFF;
|
||||
sCreatingSpriteTemplate.paletteTag |= 0xFFFF;
|
||||
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203CCEC.paletteTag = paletteTag;
|
||||
sCreatingSpriteTemplate.paletteTag = paletteTag;
|
||||
LoadCompressedObjectPalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
|
||||
}
|
||||
}
|
||||
@@ -134,42 +122,34 @@ static void sub_818D0C4(u16 species, u32 otId, u32 personality, u8 paletteSlot,
|
||||
{
|
||||
if (paletteTag == 0xFFFF)
|
||||
{
|
||||
gUnknown_0203CCEC.paletteTag |= 0xFFFF;
|
||||
sCreatingSpriteTemplate.paletteTag |= 0xFFFF;
|
||||
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203CCEC.paletteTag = paletteTag;
|
||||
sCreatingSpriteTemplate.paletteTag = paletteTag;
|
||||
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_818D180(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer)
|
||||
static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer)
|
||||
{
|
||||
if (!isTrainer)
|
||||
{
|
||||
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20);
|
||||
}
|
||||
}
|
||||
|
||||
static void uns_builder_assign_animtable1(bool8 isTrainer)
|
||||
static void AssignSpriteAnimsTable(bool8 isTrainer)
|
||||
{
|
||||
if (!isTrainer)
|
||||
{
|
||||
gUnknown_0203CCEC.anims = gPlayerMonSpriteAnimsTable;
|
||||
}
|
||||
sCreatingSpriteTemplate.anims = gPlayerMonSpriteAnimsTable;
|
||||
else
|
||||
{
|
||||
gUnknown_0203CCEC.anims = gUnknown_0830536C[0];
|
||||
}
|
||||
sCreatingSpriteTemplate.anims = gUnknown_0830536C[0];
|
||||
}
|
||||
|
||||
static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys)
|
||||
static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys)
|
||||
{
|
||||
u8 i;
|
||||
u8 *framePics;
|
||||
@@ -177,14 +157,14 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona
|
||||
int j;
|
||||
u8 spriteId;
|
||||
|
||||
for (i = 0; i < 8; i ++)
|
||||
for (i = 0; i < PICS_COUNT; i ++)
|
||||
{
|
||||
if (!gUnknown_0203CD04[i].active)
|
||||
if (!sSpritePics[i].active)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 8)
|
||||
if (i == PICS_COUNT)
|
||||
{
|
||||
return 0xFFFF;
|
||||
}
|
||||
@@ -199,7 +179,7 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona
|
||||
Free(framePics);
|
||||
return 0xFFFF;
|
||||
}
|
||||
if (load_pokemon_image_TODO(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys))
|
||||
if (DecompressPic(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys))
|
||||
{
|
||||
// debug trap?
|
||||
return 0xFFFF;
|
||||
@@ -209,32 +189,32 @@ static u16 oamt_spawn_poke_or_trainer_picture(u16 species, u32 otId, u32 persona
|
||||
images[j].data = framePics + 0x800 * j;
|
||||
images[j].size = 0x800;
|
||||
}
|
||||
gUnknown_0203CCEC.tileTag = 0xFFFF;
|
||||
gUnknown_0203CCEC.oam = &gUnknown_0860B064;
|
||||
uns_builder_assign_animtable1(isTrainer);
|
||||
gUnknown_0203CCEC.images = images;
|
||||
gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable;
|
||||
gUnknown_0203CCEC.callback = nullsub_122;
|
||||
sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, isTrainer);
|
||||
spriteId = CreateSprite(&gUnknown_0203CCEC, x, y, 0);
|
||||
sCreatingSpriteTemplate.tileTag = 0xFFFF;
|
||||
sCreatingSpriteTemplate.oam = &gUnknown_0860B064;
|
||||
AssignSpriteAnimsTable(isTrainer);
|
||||
sCreatingSpriteTemplate.images = images;
|
||||
sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sCreatingSpriteTemplate.callback = DummyPicSpriteCallback;
|
||||
LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, isTrainer);
|
||||
spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0);
|
||||
if (paletteTag == 0xFFFF)
|
||||
{
|
||||
gSprites[spriteId].oam.paletteNum = paletteSlot;
|
||||
}
|
||||
gUnknown_0203CD04[i].frames = framePics;
|
||||
gUnknown_0203CD04[i].images = images;
|
||||
gUnknown_0203CD04[i].paletteTag = paletteTag;
|
||||
gUnknown_0203CD04[i].spriteId = spriteId;
|
||||
gUnknown_0203CD04[i].active = TRUE;
|
||||
sSpritePics[i].frames = framePics;
|
||||
sSpritePics[i].images = images;
|
||||
sSpritePics[i].paletteTag = paletteTag;
|
||||
sSpritePics[i].spriteId = spriteId;
|
||||
sSpritePics[i].active = TRUE;
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
static u16 sub_818D384(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
|
||||
static u16 CreatePicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
|
||||
{
|
||||
return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE);
|
||||
return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE);
|
||||
}
|
||||
|
||||
u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
u16 CreatePicSprite2(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
{
|
||||
u8 *framePics;
|
||||
struct SpriteFrameImage *images;
|
||||
@@ -243,14 +223,14 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y,
|
||||
u8 spriteId;
|
||||
u8 flags2;
|
||||
|
||||
for (i = 0; i < 8; i ++)
|
||||
for (i = 0; i < PICS_COUNT; i ++)
|
||||
{
|
||||
if (!gUnknown_0203CD04[i].active)
|
||||
if (!sSpritePics[i].active)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 8)
|
||||
if (i == PICS_COUNT)
|
||||
{
|
||||
return 0xFFFF;
|
||||
}
|
||||
@@ -274,7 +254,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y,
|
||||
Free(framePics);
|
||||
return 0xFFFF;
|
||||
}
|
||||
if (load_pokemon_image_TODO(species, personality, flags, framePics, FALSE, FALSE))
|
||||
if (DecompressPic(species, personality, flags, framePics, FALSE, FALSE))
|
||||
{
|
||||
// debug trap?
|
||||
return 0xFFFF;
|
||||
@@ -284,76 +264,76 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y,
|
||||
images[j].data = framePics + 0x800 * j;
|
||||
images[j].size = 0x800;
|
||||
}
|
||||
gUnknown_0203CCEC.tileTag = 0xFFFF;
|
||||
gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species];
|
||||
gUnknown_0203CCEC.images = images;
|
||||
sCreatingSpriteTemplate.tileTag = 0xFFFF;
|
||||
sCreatingSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species];
|
||||
sCreatingSpriteTemplate.images = images;
|
||||
if (flags2 == 0x01)
|
||||
{
|
||||
gUnknown_0203CCEC.affineAnims = gUnknown_082FF694;
|
||||
gUnknown_0203CCEC.oam = &gUnknown_0860B06C;
|
||||
sCreatingSpriteTemplate.affineAnims = gUnknown_082FF694;
|
||||
sCreatingSpriteTemplate.oam = &gUnknown_0860B06C;
|
||||
}
|
||||
else if (flags2 == 0x00)
|
||||
{
|
||||
gUnknown_0203CCEC.affineAnims = gUnknown_082FF618;
|
||||
gUnknown_0203CCEC.oam = &gUnknown_0860B06C;
|
||||
sCreatingSpriteTemplate.affineAnims = gUnknown_082FF618;
|
||||
sCreatingSpriteTemplate.oam = &gUnknown_0860B06C;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203CCEC.oam = &gUnknown_0860B064;
|
||||
gUnknown_0203CCEC.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sCreatingSpriteTemplate.oam = &gUnknown_0860B064;
|
||||
sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
}
|
||||
gUnknown_0203CCEC.callback = nullsub_122;
|
||||
sub_818D0C4(species, otId, personality, paletteSlot, paletteTag, FALSE);
|
||||
spriteId = CreateSprite(&gUnknown_0203CCEC, x, y, 0);
|
||||
sCreatingSpriteTemplate.callback = DummyPicSpriteCallback;
|
||||
LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, FALSE);
|
||||
spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0);
|
||||
if (paletteTag == 0xFFFF)
|
||||
{
|
||||
gSprites[spriteId].oam.paletteNum = paletteSlot;
|
||||
}
|
||||
gUnknown_0203CD04[i].frames = framePics;
|
||||
gUnknown_0203CD04[i].images = images;
|
||||
gUnknown_0203CD04[i].paletteTag = paletteTag;
|
||||
gUnknown_0203CD04[i].spriteId = spriteId;
|
||||
gUnknown_0203CD04[i].active = TRUE;
|
||||
sSpritePics[i].frames = framePics;
|
||||
sSpritePics[i].images = images;
|
||||
sSpritePics[i].paletteTag = paletteTag;
|
||||
sSpritePics[i].spriteId = spriteId;
|
||||
sSpritePics[i].active = TRUE;
|
||||
return spriteId;
|
||||
}
|
||||
|
||||
static u16 sub_818D5B0(u16 spriteId)
|
||||
static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId)
|
||||
{
|
||||
u8 i;
|
||||
u8 *framePics;
|
||||
struct SpriteFrameImage *images;
|
||||
|
||||
for (i = 0; i < 8; i ++)
|
||||
for (i = 0; i < PICS_COUNT; i ++)
|
||||
{
|
||||
if (gUnknown_0203CD04[i].spriteId == spriteId)
|
||||
if (sSpritePics[i].spriteId == spriteId)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 8)
|
||||
if (i == PICS_COUNT)
|
||||
{
|
||||
return 0xFFFF;
|
||||
}
|
||||
framePics = gUnknown_0203CD04[i].frames;
|
||||
images = gUnknown_0203CD04[i].images;
|
||||
if (gUnknown_0203CD04[i].paletteTag != 0xFFFF)
|
||||
framePics = sSpritePics[i].frames;
|
||||
images = sSpritePics[i].images;
|
||||
if (sSpritePics[i].paletteTag != 0xFFFF)
|
||||
{
|
||||
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
|
||||
}
|
||||
DestroySprite(&gSprites[spriteId]);
|
||||
Free(framePics);
|
||||
Free(images);
|
||||
gUnknown_0203CD04[i] = gUnknown_0860B058;
|
||||
sSpritePics[i] = sDummyPicData;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u16 sub_818D65C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer)
|
||||
{
|
||||
if (sub_818D09C(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE))
|
||||
if (DecompressPic_HandleDeoxys(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE))
|
||||
{
|
||||
return 0xFFFF;
|
||||
}
|
||||
sub_818D180(species, otId, personality, paletteSlot, isTrainer);
|
||||
LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -362,29 +342,29 @@ static u16 sub_818D6CC(u16 species, u32 otId, u32 personality, bool8 isFrontPic,
|
||||
u8 *framePics;
|
||||
|
||||
framePics = Alloc(4 * 0x800);
|
||||
if (framePics && !sub_818D09C(species, personality, isFrontPic, framePics, isTrainer))
|
||||
if (framePics && !DecompressPic_HandleDeoxys(species, personality, isFrontPic, framePics, isTrainer))
|
||||
{
|
||||
BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40);
|
||||
sub_818D180(species, otId, personality, paletteSlot, isTrainer);
|
||||
LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer);
|
||||
Free(framePics);
|
||||
return 0;
|
||||
}
|
||||
return 0xFFFF;
|
||||
}
|
||||
|
||||
static u16 sub_818D778(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys)
|
||||
static u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys)
|
||||
{
|
||||
return oamt_spawn_poke_or_trainer_picture(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys);
|
||||
return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys);
|
||||
}
|
||||
|
||||
u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
{
|
||||
return sub_818D778(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE);
|
||||
return CreateMonPicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE);
|
||||
}
|
||||
|
||||
u16 sub_818D820(u16 spriteId)
|
||||
u16 FreeAndDestroyMonPicSprite(u16 spriteId)
|
||||
{
|
||||
return sub_818D5B0(spriteId);
|
||||
return FreeAndDestroyPicSpriteInternal(spriteId);
|
||||
}
|
||||
|
||||
u16 sub_818D834(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
|
||||
@@ -397,14 +377,14 @@ u16 sub_818D864(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 de
|
||||
return sub_818D6CC(species, otId, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE);
|
||||
}
|
||||
|
||||
u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
|
||||
{
|
||||
return sub_818D384(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE);
|
||||
return CreatePicSprite_HandleDeoxys(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE);
|
||||
}
|
||||
|
||||
u16 sub_818D8F0(u16 spriteId)
|
||||
u16 FreeAndDestroyTrainerPicSprite(u16 spriteId)
|
||||
{
|
||||
return sub_818D5B0(spriteId);
|
||||
return FreeAndDestroyPicSpriteInternal(spriteId);
|
||||
}
|
||||
|
||||
u16 sub_818D904(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
|
||||
@@ -417,17 +397,17 @@ u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteS
|
||||
return sub_818D6CC(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE);
|
||||
}
|
||||
|
||||
u8 sub_818D97C(u8 a0, u8 a1)
|
||||
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass)
|
||||
{
|
||||
if (a1 == 1)
|
||||
if (getClass == TRUE)
|
||||
{
|
||||
switch (a0)
|
||||
switch (gender)
|
||||
{
|
||||
default:
|
||||
return gFacilityClassToPicIndex[0x3F];
|
||||
case 0:
|
||||
return gFacilityClassToPicIndex[0x3C];
|
||||
default:
|
||||
return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_MAY];
|
||||
case MALE:
|
||||
return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_BRENDAN];
|
||||
}
|
||||
}
|
||||
return a0;
|
||||
return gender;
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "text.h"
|
||||
#include "sound.h"
|
||||
|
||||
ALIGNED(4)
|
||||
static const u8 sUnknown_08616124[] = {1, 2, 4};
|
||||
static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user