Merge branch 'master' into dump_pointers

This commit is contained in:
DizzyEggg
2017-12-22 16:22:16 +01:00
1390 changed files with 527546 additions and 19712 deletions

View File

@@ -4738,9 +4738,9 @@ static void HandleEndTurn_BattleWon(void)
gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon;
if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
PlayBGM(BGM_KACHI3);
PlayBGM(MUS_KACHI3);
else
PlayBGM(BGM_KACHI1);
PlayBGM(MUS_KACHI1);
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
{
@@ -4751,7 +4751,7 @@ static void HandleEndTurn_BattleWon(void)
{
case TRAINER_CLASS_ELITE_FOUR:
case TRAINER_CLASS_CHAMPION:
PlayBGM(BGM_KACHI5);
PlayBGM(MUS_KACHI5);
break;
case TRAINER_CLASS_TEAM_AQUA:
case TRAINER_CLASS_TEAM_MAGMA:
@@ -4759,13 +4759,13 @@ static void HandleEndTurn_BattleWon(void)
case TRAINER_CLASS_AQUA_LEADER:
case TRAINER_CLASS_MAGMA_ADMIN:
case TRAINER_CLASS_MAGMA_LEADER:
PlayBGM(BGM_KACHI4);
PlayBGM(MUS_KACHI4);
break;
case TRAINER_CLASS_LEADER:
PlayBGM(BGM_KACHI3);
PlayBGM(MUS_KACHI3);
break;
default:
PlayBGM(BGM_KACHI1);
PlayBGM(MUS_KACHI1);
break;
}
}

View File

@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "sprite.h"
#include "constants\trainers.h"
#include "constants/trainers.h"
#include "graphics.h"
#include "decompress.h"
#include "bg.h"
@@ -13,7 +13,7 @@
#include "task.h"
#include "trig.h"
#include "sound.h"
#include "songs.h"
#include "constants/songs.h"
#include "strings.h"
#include "window.h"
#include "text_window.h"

View File

@@ -19,6 +19,7 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
#include "pokeblock.h"
extern u32 gBattleExecBuffer;
extern u8 gActiveBank;
@@ -291,13 +292,13 @@ static void CompleteOnSpecialAnimDone(void)
SafariBufferExecCompleted();
}
static void OpenPokeblockCase(void)
static void SafariOpenPokeblockCase(void)
{
if (!gPaletteFade.active)
{
gBattleBankFunc[gActiveBank] = CompleteWhenChosePokeblock;
FreeAllWindowBuffers();
sub_81358F4();
OpenPokeblockCaseInBattle();
}
}
@@ -497,7 +498,7 @@ static void SafariHandleChooseItem(void)
s32 i;
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gBattleBankFunc[gActiveBank] = OpenPokeblockCase;
gBattleBankFunc[gActiveBank] = SafariOpenPokeblockCase;
gBankInMenu = gActiveBank;
}

View File

@@ -177,7 +177,6 @@ extern const u16 gBattleInterface_BallDisplayPal[];
extern const u8 gHealthboxElementsGfxTable[][32];
// functions
extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); // menu.h
extern void LoadBattleBarGfx(u8 arg0);
// this file's functions

View File

@@ -484,8 +484,8 @@ const u8 gText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!");
const u8 gText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!");
const u8 gText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!");
const u8 gText_ShootSoClose[] = _("Shoot!\nIt was so close, too!");
const u8 gText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p");
const u8 gText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}");
const u8 gText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}\p");
const u8 gText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}{PAUSE 127}");
const u8 gText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?");
const u8 gText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC.");
const u8 gText_Someones[] = _("someones");

View File

@@ -7121,7 +7121,7 @@ static void atk76_various(void)
gBattleOutcome = BATTLE_OPPONENT_TELEPORTED;
break;
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
EmitPlayFanfareOrBGM(0, BGM_KACHI1, TRUE);
EmitPlayFanfareOrBGM(0, MUS_KACHI1, TRUE);
MarkBufferBankForExecution(gActiveBank);
break;
}

View File

@@ -11,7 +11,7 @@
#include "constants/game_stat.h"
#include "event_data.h"
#include "constants/species.h"
#include "songs.h"
#include "constants/songs.h"
#include "metatile_behavior.h"
#include "constants/maps.h"
#include "field_player_avatar.h"
@@ -520,25 +520,25 @@ void BattleSetup_StartLegendaryBattle(void)
default:
case SPECIES_GROUDON:
gBattleTypeFlags |= BATTLE_TYPE_GROUDON;
CreateBattleStartTask(B_TRANSITION_GROUDON, BGM_BATTLE34);
CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_BATTLE34);
break;
case SPECIES_KYOGRE:
gBattleTypeFlags |= BATTLE_TYPE_KYOGRE;
CreateBattleStartTask(B_TRANSITION_KYOGRE, BGM_BATTLE34);
CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_BATTLE34);
break;
case SPECIES_RAYQUAZA:
gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA;
CreateBattleStartTask(B_TRANSITION_RAYQUAZA, BGM_BATTLE_LEGENDARY);
CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_REKKU);
break;
case SPECIES_DEOXYS:
CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_DEOXYS);
CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEO);
break;
case SPECIES_LUGIA:
case SPECIES_HO_OH:
CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_LEGENDARY);
CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEN);
break;
case SPECIES_MEW:
CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE_MEW);
CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, MUS_VS_MEW);
break;
}
@@ -555,9 +555,9 @@ void StartGroudonKyogreBattle(void)
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
if (gGameVersion == VERSION_RUBY)
CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
CreateBattleStartTask(B_TRANSITION_SHARDS, MUS_BATTLE34); // GROUDON
else
CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
CreateBattleStartTask(B_TRANSITION_RIPPLE, MUS_BATTLE34); // KYOGRE
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
@@ -590,7 +590,7 @@ void StartRegiBattle(void)
transitionId = B_TRANSITION_GRID_SQUARES;
break;
}
CreateBattleStartTask(transitionId, BGM_BATTLE36);
CreateBattleStartTask(transitionId, MUS_BATTLE36);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
@@ -1446,46 +1446,46 @@ void SetUpTrainerEncounterMusic(void)
switch (GetTrainerEncounterMusicId(trainerId))
{
case TRAINER_ENCOUNTER_MUSIC_MALE:
music = BGM_BOYEYE;
music = MUS_BOYEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_FEMALE:
music = BGM_GIRLEYE;
music = MUS_GIRLEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_GIRL:
music = BGM_SYOUJOEYE;
music = MUS_SYOUJOEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTENSE:
music = BGM_HAGESHII;
music = MUS_HAGESHII;
break;
case TRAINER_ENCOUNTER_MUSIC_COOL:
music = BGM_KAKKOII;
music = MUS_KAKKOII;
break;
case TRAINER_ENCOUNTER_MUSIC_AQUA:
music = BGM_AQA_0;
music = MUS_AQA_0;
break;
case TRAINER_ENCOUNTER_MUSIC_MAGMA:
music = BGM_MGM0;
music = MUS_MGM0;
break;
case TRAINER_ENCOUNTER_MUSIC_SWIMMER:
music = BGM_SWIMEYE;
music = MUS_SWIMEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_TWINS:
music = BGM_HUTAGO;
music = MUS_HUTAGO;
break;
case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR:
music = BGM_SITENNOU;
music = MUS_SITENNOU;
break;
case TRAINER_ENCOUNTER_MUSIC_HIKER:
music = BGM_YAMA_EYE;
music = MUS_YAMA_EYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER:
music = BGM_INTER_V;
music = MUS_INTER_V;
break;
case TRAINER_ENCOUNTER_MUSIC_RICH:
music = BGM_TEST;
music = MUS_TEST;
break;
default:
music = BGM_AYASII;
music = MUS_AYASII;
}
PlayNewMapMusic(music);
}

View File

@@ -134,8 +134,6 @@ extern u8 gInGameOpponentsNo;
extern u8 gUnknown_020322D5;
extern u8 gResultsWindowId;
extern const u8 * const gPokeblockNames[];
// graphics
extern const u8 gBerryBlenderArrowTiles[];
extern const u8 gBerryBlenderStartTiles[];
@@ -1305,11 +1303,11 @@ static void sub_8080018(void)
sBerryBlenderData->field_4C = 128;
sBerryBlenderData->gameFrameTime = 0;
SetMainCallback2(sub_8081898);
if (GetCurrentMapMusic() != BGM_CYCLING)
if (GetCurrentMapMusic() != MUS_CYCLING)
{
sBerryBlenderData->field_154 = GetCurrentMapMusic();
}
PlayBGM(BGM_CYCLING);
PlayBGM(MUS_CYCLING);
break;
}
@@ -1604,10 +1602,10 @@ static void sub_80808D4(void)
sBerryBlenderData->field_120[i] = CreateTask(sUnknown_083399EC[i], 10 + i);
}
if (GetCurrentMapMusic() != BGM_CYCLING)
if (GetCurrentMapMusic() != MUS_CYCLING)
sBerryBlenderData->field_154 = GetCurrentMapMusic();
PlayBGM(BGM_CYCLING);
PlayBGM(MUS_CYCLING);
PlaySE(SE_MOTER);
Blender_ControlHitPitch();
break;
@@ -3522,7 +3520,7 @@ static void sub_8083F3C(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
PlayFanfare(BGM_FANFA1);
PlayFanfare(MUS_FANFA1);
gTasks[taskId].data[0]++;
}
if (IsFanfareTaskInactive())

View File

@@ -40,7 +40,7 @@ extern const u8 gDaycareText_PlayOther[];
extern u8 GetCursorSelectionMonId(void);
extern u16 ItemIdToBattleMoveId(u16);
extern s32 ListMenuHandleInput(u8);
extern s32 ListMenuHandleInputGetItemId(u8);
extern void sub_81AE6C8(u8, u16*, u16*);
extern void sub_819746C(u8, bool8);
extern void sub_81973FC(u8, bool8);
@@ -75,7 +75,7 @@ static const struct ListMenuItem sLevelMenuItems[] =
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
{
.items = sLevelMenuItems,
.unk_04 = sub_81AF078,
.moveCursorFunc = sub_81AF078,
.unk_08 = DaycarePrintMonInfo,
.totalItems = 3,
.maxShowed = 3,
@@ -90,7 +90,8 @@ static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
.unk_16_0 = TRUE,
.spaceBetweenItems = 0,
.unk_16_7 = FALSE,
.unk_17_0 = 1
.unk_17_0 = 1,
.cursorKind = 0
};
static const u8 *const sCompatibilityMessages[] =
@@ -1256,7 +1257,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
u32 var = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
u32 var = ListMenuHandleInputGetItemId(gTasks[taskId].tMenuListTaskId);
if (gMain.newKeys & A_BUTTON)
{

View File

@@ -792,17 +792,17 @@ void sub_8127330(u8 taskId)
for (i = 0; i < sDecorPCBuffer->unk_520 - 1; i ++)
{
sub_8127454(sDecorPCBuffer->names[i], gCurDecorInventoryItems[i]);
sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
sDecorPCBuffer->items[i].unk_04 = i;
sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
sDecorPCBuffer->items[i].id = i;
}
StringCopy(sDecorPCBuffer->names[i], gText_Cancel);
sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
sDecorPCBuffer->items[i].unk_04 = -2;
gUnknown_03006310 = gUnknown_085A6BD0;
gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1];
gUnknown_03006310.totalItems = sDecorPCBuffer->unk_520;
gUnknown_03006310.items = sDecorPCBuffer->items;
gUnknown_03006310.maxShowed = sDecorPCBuffer->unk_521;
sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
sDecorPCBuffer->items[i].id = -2;
gMultiuseListMenuTemplate = gUnknown_085A6BD0;
gMultiuseListMenuTemplate.unk_10 = sDecorMenuWindowIndices[1];
gMultiuseListMenuTemplate.totalItems = sDecorPCBuffer->unk_520;
gMultiuseListMenuTemplate.items = sDecorPCBuffer->items;
gMultiuseListMenuTemplate.maxShowed = sDecorPCBuffer->unk_521;
}
void sub_8127454(u8 *dest, u16 decorId)
@@ -871,7 +871,7 @@ void sub_812759C(u8 taskId)
sub_81272C8();
sub_81272F8();
sub_8127330(taskId);
data[13] = ListMenuInit(&gUnknown_03006310, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
data[13] = ListMenuInit(&gMultiuseListMenuTemplate, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
sub_8127500();
}
@@ -889,8 +889,8 @@ void sub_812764C(u8 taskId)
data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
input = ListMenuHandleInput(data[13]);
get_coro_args_x18_x1A(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
input = ListMenuHandleInputGetItemId(data[13]);
sub_81AE860(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
switch (input)
{
case -1:

View File

@@ -594,14 +594,14 @@ static void Task_EvolutionScene(u8 taskID)
case 3:
if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteID)) // wait for animation, play tu du SE
{
PlaySE(BGM_ME_SHINKA);
PlaySE(MUS_ME_SHINKA);
gTasks[taskID].tState++;
}
break;
case 4: // play evolution music and fade screen black
if (!IsSEPlaying())
{
PlayNewMapMusic(BGM_SHINKA);
PlayNewMapMusic(MUS_SHINKA);
gTasks[taskID].tState++;
BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
}
@@ -677,7 +677,7 @@ static void Task_EvolutionScene(u8 taskID)
{
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
BattleHandleAddTextPrinter(gStringVar4, 0);
PlayBGM(BGM_FANFA5);
PlayBGM(MUS_FANFA5);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
CalculateMonStats(mon);
@@ -772,7 +772,7 @@ static void Task_EvolutionScene(u8 taskID)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(BGM_FANFA1);
PlayFanfare(MUS_FANFA1);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
@@ -962,15 +962,15 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 2:
if (IsCryFinished())
{
m4aSongNumStop(BGM_SHINKA);
PlaySE(BGM_ME_SHINKA);
m4aSongNumStop(MUS_SHINKA);
PlaySE(MUS_ME_SHINKA);
gTasks[taskID].tState++;
}
break;
case 3:
if (!IsSEPlaying())
{
PlayBGM(BGM_SHINKA);
PlayBGM(MUS_SHINKA);
gTasks[taskID].tState++;
BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
}
@@ -1040,7 +1040,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
sub_807F1A8(0, gStringVar4, 1);
PlayFanfare(BGM_FANFA5);
PlayFanfare(MUS_FANFA5);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskID].tPostEvoSpecies));
CalculateMonStats(mon);
@@ -1073,7 +1073,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
else
{
PlayBGM(BGM_SHINKA);
PlayBGM(MUS_SHINKA);
sub_807F1A8(0, gText_CommunicationStandby5, 1);
gTasks[taskID].tState++;
}
@@ -1117,7 +1117,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(BGM_FANFA1);
PlayFanfare(MUS_FANFA1);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter

View File

@@ -211,7 +211,7 @@ void Task_HandleTruckSequence(u8 taskId)
data[1]++;
if (data[1] == 90)
{
PlaySE(SE_TRACK_HAIK);
PlaySE(SE_TRACK_HAIKI);
data[1] = 0;
data[0] = 5;
}

View File

@@ -424,7 +424,7 @@ static bool8 InitHallOfFameScreen(void)
if (!gPaletteFade.active)
{
SetMainCallback2(CB2_HallOfFame);
PlayBGM(BGM_DENDOU);
PlayBGM(MUS_DENDOU);
return FALSE;
}
break;

View File

@@ -943,7 +943,7 @@ static void sub_818E6B0(u8 sheen)
}
}
bool8 sub_818E704(struct Pokeblock *pokeblock)
bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock)
{
u8 sheen;
bool8 response;
@@ -1079,7 +1079,7 @@ void sub_818E914(void)
void sub_818E92C(void)
{
sub_81357FC(3, c2_exit_to_overworld_2_switch);
OpenPokeblockCase(3, c2_exit_to_overworld_2_switch);
}
void sub_818E940(void)

View File

@@ -33,7 +33,6 @@ extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPo
extern void warp_in(void);
extern void sub_80BB358(void);
extern void ResetBagScrollPositions(void);
extern void sub_813624C(void); // clears something pokeblock related
extern void ResetPokedex(void);
extern void sub_8084400(void);
extern void ClearMailData(void);
@@ -148,7 +147,7 @@ void sub_808447C(void)
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
ResetBagScrollPositions();
sub_813624C();
ResetPokeblockScrollPositions();
}
void NewGameInitData(void)

View File

@@ -885,7 +885,7 @@ static void sub_80760F8(struct Sprite *sprite)
{
gDoingBattleAnim = FALSE;
m4aMPlayAllStop();
PlaySE(BGM_FANFA5);
PlaySE(MUS_FANFA5);
}
else if (sprite->data[4] == 315)
{

1337
src/pokeblock.c Normal file

File diff suppressed because it is too large Load Diff

1108
src/pokeblock_feed.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -21,6 +21,7 @@
#include "constants/abilities.h"
#include "pokemon_animation.h"
#include "pokedex.h"
#include "pokeblock.h"
extern struct BattlePokemon gBattleMons[4];
extern struct BattleEnigmaBerry gEnigmaBerries[4];
@@ -58,7 +59,6 @@ extern const u8 gText_PkmnsXPreventsSwitching[];
extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const u16 gHMMoves[];
extern const s8 gPokeblockFlavorCompatibilityTable[];
extern const u8 gMonAnimationDelayTable[];
extern const u8 gMonFrontAnimIdsTable[];
@@ -1145,11 +1145,11 @@ void ClearBattleMonForms(void)
u16 GetBattleBGM(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
return BGM_BATTLE34;
return MUS_BATTLE34;
if (gBattleTypeFlags & BATTLE_TYPE_REGI)
return BGM_BATTLE36;
return MUS_BATTLE36;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return BGM_BATTLE20;
return MUS_BATTLE20;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
u8 trainerClass;
@@ -1165,24 +1165,24 @@ u16 GetBattleBGM(void)
{
case TRAINER_CLASS_AQUA_LEADER:
case TRAINER_CLASS_MAGMA_LEADER:
return BGM_BATTLE30;
return MUS_BATTLE30;
case TRAINER_CLASS_TEAM_AQUA:
case TRAINER_CLASS_TEAM_MAGMA:
case TRAINER_CLASS_AQUA_ADMIN:
case TRAINER_CLASS_MAGMA_ADMIN:
return BGM_BATTLE31;
return MUS_BATTLE31;
case TRAINER_CLASS_LEADER:
return BGM_BATTLE32;
return MUS_BATTLE32;
case TRAINER_CLASS_CHAMPION:
return BGM_BATTLE33;
return MUS_BATTLE33;
case TRAINER_CLASS_PKMN_TRAINER_3:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
return BGM_BATTLE35;
return MUS_BATTLE35;
if (!StringCompare(gTrainers[gTrainerBattleOpponent_A].trainerName, gText_BattleWallyName))
return BGM_BATTLE20;
return BGM_BATTLE35;
return MUS_BATTLE20;
return MUS_BATTLE35;
case TRAINER_CLASS_ELITE_FOUR:
return BGM_BATTLE38;
return MUS_BATTLE38;
case TRAINER_CLASS_SALON_MAIDEN:
case TRAINER_CLASS_DOME_ACE:
case TRAINER_CLASS_PALACE_MAVEN:
@@ -1190,12 +1190,12 @@ u16 GetBattleBGM(void)
case TRAINER_CLASS_FACTORY_HEAD:
case TRAINER_CLASS_PIKE_QUEEN:
case TRAINER_CLASS_PYRAMID_KING:
return BGM_BATTLE_FRONTIER_BRAIN;
return MUS_VS_FRONT;
default:
return BGM_BATTLE20;
return MUS_BATTLE20;
}
}
return BGM_BATTLE27;
return MUS_BATTLE27;
}
void PlayBattleBGM(void)
@@ -1298,21 +1298,21 @@ bool8 IsPokeSpriteNotFlipped(u16 species)
return gBaseStats[species].noFlip;
}
s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2)
s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor)
{
u8 nature = GetNature(mon);
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
}
s8 GetFlavorRelationByPersonality(u32 personality, u8 a2)
s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor)
{
u8 nature = GetNatureFromPersonality(personality);
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
}
bool8 IsTradedMon(struct Pokemon *mon)
{
u8 otName[8];
u8 otName[OT_NAME_LENGTH + 1];
u32 otId;
GetMonData(mon, MON_DATA_OT_NAME, otName);
otId = GetMonData(mon, MON_DATA_OT_ID, 0);

View File

@@ -73,7 +73,7 @@ extern void do_scheduled_bg_tilemap_copies_to_vram(void);
extern u8 sub_81221EC();
extern u8 sub_81221AC();
extern void SetVBlankHBlankCallbacksToNull();
extern void sub_8121DA0();
extern void ResetVramOamAndBgCntRegs();
extern void clear_scheduled_bg_copies_to_vram();
extern void remove_some_task();
extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
@@ -193,7 +193,7 @@ void sub_81C4A88();
void sub_81C4280();
void sub_81C0510(u8 taskId);
void sub_81C171C(u8 taskId);
void sub_8121E10();
void ResetAllBgsCoordinates();
u8 sub_81B205C(struct Pokemon* a);
void sub_81C1DA4(u16 a, s16 b);
void sub_81C1EFC(u16 a, s16 b, u16 c);
@@ -450,7 +450,7 @@ bool8 sub_81BFB10(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
sub_8121DA0();
ResetVramOamAndBgCntRegs();
clear_scheduled_bg_copies_to_vram();
gMain.state++;
break;
@@ -578,7 +578,7 @@ void sub_81BFE24()
SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2);
SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1);
SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0);
sub_8121E10();
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
schedule_bg_copy_tilemap_to_vram(3);

View File

@@ -5,6 +5,7 @@
#include "main.h"
#include "battle.h"
#include "string_util.h"
#include "pokeblock.h"
struct PokeblockFeeder
{
@@ -24,7 +25,6 @@ extern u8 EventScript_2A4B8A[];
extern u8 EventScript_2A4B6F[];
extern u8 EventScript_2A4B4C[];
extern u8 EventScript_2A4B9B[];
extern const u8* const gPokeblockNames[];
extern void sub_80EE44C(u8, u8);
extern void IncrementGameStat(u8 index);

View File

@@ -2089,7 +2089,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx)
return FALSE;
}
bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx)
bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx)
{
sub_81B9404();
ScriptContext1_Stop();

View File

@@ -1082,13 +1082,13 @@ void game_continue(u8 taskId)
if (sub_80E9878(i))
{
sub_80E9780(gUnknown_0203A020->names[count], i);
gUnknown_0203A020->items[count].unk_00 = gUnknown_0203A020->names[count];
gUnknown_0203A020->items[count].unk_04 = i;
gUnknown_0203A020->items[count].name = gUnknown_0203A020->names[count];
gUnknown_0203A020->items[count].id = i;
count ++;
}
}
gUnknown_0203A020->items[count].unk_00 = gText_Cancel;
gUnknown_0203A020->items[count].unk_04 = -2;
gUnknown_0203A020->items[count].name = gText_Cancel;
gUnknown_0203A020->items[count].id = -2;
data[0] = count + 1;
if (data[0] < 8)
{
@@ -1098,11 +1098,11 @@ void game_continue(u8 taskId)
{
data[3] = 8;
}
gUnknown_03006310 = gUnknown_0858D07C;
gUnknown_03006310.unk_10 = data[6];
gUnknown_03006310.totalItems = data[0];
gUnknown_03006310.items = gUnknown_0203A020->items;
gUnknown_03006310.maxShowed = data[3];
gMultiuseListMenuTemplate = gUnknown_0858D07C;
gMultiuseListMenuTemplate.unk_10 = data[6];
gMultiuseListMenuTemplate.totalItems = data[0];
gMultiuseListMenuTemplate.items = gUnknown_0203A020->items;
gMultiuseListMenuTemplate.maxShowed = data[3];
}
void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu)
@@ -1119,7 +1119,7 @@ void sub_80E9E00(u8 taskId)
data = gTasks[taskId].data;
SetStandardWindowBorderStyle(data[6], 0);
data[5] = ListMenuInit(&gUnknown_03006310, data[2], data[1]);
data[5] = ListMenuInit(&gMultiuseListMenuTemplate, data[2], data[1]);
sub_80E9E44(taskId);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -1138,8 +1138,8 @@ void sub_80E9E90(u8 taskId)
s32 input;
data = gTasks[taskId].data;
input = ListMenuHandleInput(data[5]);
get_coro_args_x18_x1A(data[5], &data[2], &data[1]);
input = ListMenuHandleInputGetItemId(data[5]);
sub_81AE860(data[5], &data[2], &data[1]);
switch (input)
{
case -1:

View File

@@ -189,7 +189,7 @@ bool8 WaitFanfare(bool8 stop)
if (!stop)
m4aMPlayContinue(&gMPlay_BGM);
else
m4aSongNumStart(SE_STOP);
m4aSongNumStart(MUS_DUMMY);
return TRUE;
}

230
src/use_pokeblock.c Normal file
View File

@@ -0,0 +1,230 @@
#include "global.h"
#include "main.h"
#include "pokeblock.h"
#include "malloc.h"
#include "palette.h"
#include "pokenav.h"
#include "unknown_task.h"
#include "text.h"
#include "bg.h"
#include "window.h"
#include "text_window.h"
struct UsePokeblockSubStruct
{
void (*field_0)(void);
void (*callback)(void);
struct Pokeblock *pokeblock;
struct Pokemon *pokemon;
u8 stringBuffer[0x40];
u8 field_50;
u8 field_51;
u8 field_52;
u8 field_53;
u8 field_54;
u8 field_55;
u8 field_56;
u8 field_57[5];
u8 field_5c[5];
u8 field_61[5];
s16 field_66[5];
};
struct UsePokeblockStruct
{
u8 field_0[0x7C58];
u8 field_7C58[0x378];
struct UsePokeblockSubStruct info;
};
extern u16 gKeyRepeatStartDelay;
// this file's functions
void sub_816636C(void (*func)(void));
void sub_8166380(void);
void sub_816631C(void);
void sub_81662C0(void);
void sub_8166564(void);
void sub_8166304(void);
void sub_81668F8(void);
void sub_8167420(void);
void sub_8167760(void);
u8 sub_81672E4(u8 arg0);
bool8 sub_8168328(void);
bool8 sub_8167930(void);
void sub_8167608(u8 arg0);
void sub_8167BA0(u16 arg0, u8 copyToVramMode);
extern const struct BgTemplate gUnknown_085DFCCC[4];
extern const struct WindowTemplate gUnknown_085DFCDC[];
// ram variables
EWRAM_DATA struct UsePokeblockSubStruct *gUnknown_0203BC90 = NULL;
EWRAM_DATA void (*gUnknown_0203BC94)(void) = NULL;
EWRAM_DATA struct Pokeblock *gUnknown_0203BC98 = NULL;
EWRAM_DATA u8 gPokeblockMonId = 0;
EWRAM_DATA s16 gPokeblockGain = 0;
EWRAM_DATA void *gUnknown_0203BCA0 = NULL;
EWRAM_DATA void *gUnknown_0203BCA4 = NULL;
EWRAM_DATA void *gUnknown_0203BCA8 = NULL;
EWRAM_DATA struct UsePokeblockStruct *gUnknown_0203BCAC = NULL;
// const rom data
// todo: make it static once the file is decompiled
// code
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void))
{
gUnknown_0203BCAC = AllocZeroed(0x806C);
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
gUnknown_0203BC90->pokeblock = pokeblock;
gUnknown_0203BC90->callback = callback;
sub_816636C(sub_8166380);
SetMainCallback2(sub_816631C);
}
void CB2_ReturnAndChooseMonToGivePokeblock(void)
{
gUnknown_0203BCAC = AllocZeroed(0x806C);
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
gUnknown_0203BC90->pokeblock = gUnknown_0203BC98;
gUnknown_0203BC90->callback = gUnknown_0203BC94;
gPokeblockMonId = sub_81672E4(gPokeblockMonId);
gUnknown_0203BC90->field_56 = gPokeblockMonId < 4 ? 0 : 1;
sub_816636C(sub_8166380);
SetMainCallback2(sub_81662C0);
}
void sub_81662C0(void)
{
gUnknown_0203BC90->field_0();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
if (gUnknown_0203BC90->field_0 == sub_8166564)
{
gUnknown_0203BC90->field_50 = 0;
SetMainCallback2(sub_8166304);
}
}
void sub_8166304(void)
{
sub_81668F8();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void sub_816631C(void)
{
gUnknown_0203BC90->field_0();
AnimateSprites();
BuildOamBuffer();
RunTextPrinters();
UpdatePaletteFade();
}
void sub_8166340(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
sub_81D2108(gUnknown_0203BCAC->field_7C58);
sub_80BA0A8();
}
void sub_816636C(void (*func)(void))
{
gUnknown_0203BC90->field_0 = func;
gUnknown_0203BC90->field_50 = 0;
}
void sub_8166380(void)
{
switch (gUnknown_0203BC90->field_50)
{
case 0:
gUnknown_0203BCAC->field_0[0x7B10] = 0xFF;
sub_81D1ED4(gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 1:
ResetSpriteData();
FreeAllSpritePalettes();
gUnknown_0203BC90->field_50++;
break;
case 2:
SetVBlankCallback(NULL);
CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
gUnknown_0203BC90->field_50++;
break;
case 3:
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085DFCCC, ARRAY_COUNT(gUnknown_085DFCCC));
InitWindows(gUnknown_085DFCDC);
DeactivateAllTextPrinters();
sub_809882C(0, 0x97, 0xE0);
gUnknown_0203BC90->field_50++;
break;
case 4:
gUnknown_0203BC90->field_50++;
break;
case 5:
if (!sub_8168328())
{
gUnknown_0203BC90->field_50++;
}
break;
case 6:
gKeyRepeatStartDelay = 20;
sub_8167420();
gUnknown_0203BC90->field_50++;
break;
case 7:
if (!sub_8167930())
{
gUnknown_0203BC90->field_50++;
}
break;
case 8:
sub_8167608(0);
sub_8167760();
gUnknown_0203BC90->field_50++;
break;
case 9:
if (!sub_81D312C(&gUnknown_0203BCAC->field_0[0x7B0E]))
{
gUnknown_0203BC90->field_50++;
}
break;
case 10:
gUnknown_0203BC90->field_50++;
break;
case 11:
sub_81D2754(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_0[0x7C6C]);
sub_81D20AC(gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 12:
if (!sub_81D20BC(gUnknown_0203BCAC->field_7C58))
{
sub_81D1F84(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7C58[0x14], &gUnknown_0203BCAC->field_7C58[0x14]);
gUnknown_0203BC90->field_50++;
}
break;
case 13:
sub_81D2230(gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 14:
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_8167BA0(0, 1);
gUnknown_0203BC90->field_50++;
break;
case 15:
sub_816636C(sub_8166564);
break;
}
}

View File

@@ -16,7 +16,7 @@
#include "task.h"
#include "strings.h"
#include "sound.h"
#include "songs.h"
#include "constants/songs.h"
#include "trig.h"
#include "decompress.h"