Merge pull request #300 from DizzyEggg/decompile_battle_frontier_1

Decompile battle_dome
This commit is contained in:
Diegoisawesome
2018-08-29 14:13:39 -05:00
committed by GitHub
87 changed files with 7832 additions and 16082 deletions

9
include/battle_dome.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef GUARD_BATTLE_DOME_H
#define GUARD_BATTLE_DOME_H
extern u32 gUnknown_0203CD70;
s32 GetTrainerMonCountInBits(u16 tournamentTrainerId);
s32 TrainerIdToDomeTournamentId(u16 trainerId);
#endif // GUARD_BATTLE_DOME_H

View File

@@ -1,13 +0,0 @@
#ifndef GUARD_BATTLE_DOME_CARDS_H
#define GUARD_BATTLE_DOME_CARDS_H
bool16 dp13_810BB8C(void);
u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 sub_818D820(u16 spriteId);
u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 sub_818D8F0(u16 spriteId);
u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u8 sub_818D97C(u8 a0, u8 a1);
#endif //GUARD_BATTLE_DOME_CARDS_H

View File

@@ -1,8 +0,0 @@
#ifndef GUARD_BATTLE_FRONTIER_1_H
#define GUARD_BATTLE_FRONTIER_1_H
bool32 sub_8196094(void);
void sub_8197080(u8 *);
void sub_8196080(const u8 *str);
#endif // GUARD_BATTLE_FRONTIER_1_H

View File

@@ -224,6 +224,7 @@ extern const u8* const gStatNamesTable[];
extern const u8* const gPokeblockWasTooXStringTable[];
extern const u8* const gRefereeStringsTable[];
extern const u8* const gStatNamesTable2[];
extern const u8 *const gRoundsStringTable[];
extern const u8 gText_PkmnIsEvolving[];
extern const u8 gText_CongratsPkmnEvolved[];

View File

@@ -256,7 +256,7 @@ extern const u8 BattleScript_82DB87D[];
extern const u8 BattleScript_82DB881[];
extern const u8 BattleScript_82DB887[];
extern const u8 BattleScript_82DB89D[];
extern const u8 BattleScript_82DB8BE[];
extern const u8 BattleScript_ArenaTurnBeginning[];
extern const u8 BattleScript_82DB8E0[];
extern const u8 BattleScript_82DB8F3[];
extern const u8 BattleScript_82DB973[];

View File

@@ -24,7 +24,7 @@ union BattleTowerRecord
struct BattleFrontierTrainer
{
u32 trainerClass;
u32 facilityClass;
u8 trainerName[8];
u16 speechBefore[6];
u16 speechWin[6];
@@ -32,7 +32,17 @@ struct BattleFrontierTrainer
u16 *btMonPool;
};
extern struct BattleFrontierTrainer *gUnknown_0203BC88;
struct FacilityMon
{
u16 species;
u16 moves[4];
u8 itemTableId;
u8 evSpread;
u8 nature;
};
extern const struct BattleFrontierTrainer *gFacilityTrainers;
extern const struct FacilityMon *gFacilityTrainerMons;
u16 sub_8164FCC(u8, u8);
void sub_81659DC(struct RSBattleTowerRecord *a0, struct RSBattleTowerRecord *a1);
@@ -40,7 +50,7 @@ bool32 sub_816587C(union BattleTowerRecord *, union BattleTowerRecord *);
void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *);
void sub_81628A0(union BattleTowerRecord *);
void sub_8162614(u16 trainerId, u8);
void ConvertBattleFrontierTrainerSpeechToString(u16 *words);
void ConvertBattleFrontierTrainerSpeechToString(const u16 *words);
void GetFrontierTrainerName(u8 *dest, u16 trainerIdx);
void GetEreaderTrainerName(u8 *dest);

View File

@@ -69,7 +69,7 @@ void* GetBgTilemapBuffer(u8 bg);
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
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);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);

View File

@@ -10,4 +10,14 @@
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
// Battle Frontier lvl modes.
#define FRONTIER_LVL_50 0
#define FRONTIER_LVL_OPEN 1
// Battle Frontier battle modes.
#define FRONTIER_MODE_SINGLES 0
#define FRONTIER_MODE_DOUBLES 1
#define FRONTIER_MODE_MULTIS 2
#define FRONTIER_MODE_LINK_MULTIS 3
#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H

View File

@@ -71,6 +71,8 @@
#define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_VOLUME_DOWN 21
#define VARIOUS_VOLUME_UP 22
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26

View File

@@ -5,6 +5,7 @@
// Special Trainer Ids.
#define TRAINER_FRONTIER_BRAIN 1022
#define TRAINER_PLAYER 1023
#define TRAINER_SECRET_BASE 1024
#define TRAINER_LINK_OPPONENT 2048
#define TRAINER_OPPONENT_C00 3072
@@ -173,10 +174,10 @@
#define FACILITY_CLASS_TWINS 0x39
#define FACILITY_CLASS_SAILOR 0x3a
#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b
#define FACILITY_CLASS_PKMN_TRAINER_MAY 0x3c
#define FACILITY_CLASS_PKMN_TRAINER_BRENDAN 0x3c
#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d
#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e
#define FACILITY_CLASS_PKMN_TRAINER_BRENDAN 0x3f
#define FACILITY_CLASS_PKMN_TRAINER_MAY 0x3f
#define FACILITY_CLASS_PKMN_TRAINER_6 0x40
#define FACILITY_CLASS_PKMN_TRAINER_7 0x41
#define FACILITY_CLASS_PKMN_BREEDER_2 0x42

View File

@@ -222,7 +222,7 @@
#define VAR_0x40CB 0x40CB
#define VAR_0x40CC 0x40CC
#define VAR_0x40CD 0x40CD
#define VAR_0x40CE 0x40CE
#define VAR_FRONTIER_BATTLE_MODE 0x40CE
#define VAR_FRONTIER_FACILITY 0x40CF
#define VAR_0x40D0 0x40D0
#define VAR_0x40D1 0x40D1

View File

@@ -550,12 +550,14 @@
#define WININ_WIN0_BG1 (1 << 1)
#define WININ_WIN0_BG2 (1 << 2)
#define WININ_WIN0_BG3 (1 << 3)
#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3)
#define WININ_WIN0_OBJ (1 << 4)
#define WININ_WIN0_CLR (1 << 5)
#define WININ_WIN1_BG0 (1 << 8)
#define WININ_WIN1_BG1 (1 << 9)
#define WININ_WIN1_BG2 (1 << 10)
#define WININ_WIN1_BG3 (1 << 11)
#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3)
#define WININ_WIN1_OBJ (1 << 12)
#define WININ_WIN1_CLR (1 << 13)

View File

@@ -330,6 +330,29 @@ struct EmeraldBattleTowerRecord
/*0xE8*/ u32 checksum;
};
struct FrontierMonData
{
u16 moves[4];
u8 evs[6];
u8 nature;
};
struct Struct_field_E70
{
u16 monId;
u8 unk2[9];
};
struct BattleDomeTrainer
{
u16 trainerId:10;
u16 isEliminated:1;
u16 eliminatedAt:2;
u16 unk3:3;
};
#define DOME_TOURNAMENT_TRAINERS_COUNT 16
struct BattleFrontier
{
/*0x64C*/ struct EmeraldBattleTowerRecord battleTower;
@@ -345,16 +368,18 @@ struct BattleFrontier
/*0xC14*/ u16 ecwords_C14[6];
/*0xC20*/ u8 filler_C20[0x88];
/*0xCA8*/ u8 field_CA8;
/*0xCA9*/ u8 chosenLvl:2; // 0x1, 0x2 -> 0x3
/*0xCA9*/ u8 lvlMode:2; // 0x1, 0x2 -> 0x3
/*0xCA9*/ u8 field_CA9_a:1; // 0x4
/*0xCA9*/ u8 field_CA9_b:1; // 0x8
/*0xCA9*/ u8 field_CA9_c:1; // 0x10
/*0xCA9*/ u8 field_CA9_d:1; // 0x20
/*0xCA9*/ u8 field_CA9_e:1; // 0x40
/*0xCA9*/ u8 field_CA9_f:1; // 0x80
/*0xCAA*/ u16 field_CAA[4];
/*0xCAA*/ u16 field_CAA[3];
/*0xCB0*/ u16 field_CB0;
/*0xCB2*/ u16 field_CB2;
/*0xCB4*/ u16 field_CB4[22];
/*0xCB4*/ u16 field_CB4[20];
/*0xCDC*/ u32 field_CDC;
/*0xCE0*/ u16 field_CE0[4][2];
/*0xCF0*/ u16 field_CF0[2];
/*0xCF4*/ u16 field_CF4[2];
@@ -362,21 +387,25 @@ struct BattleFrontier
/*0xCFC*/ u16 field_CFC[5];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xD08*/ u8 filler_D08;
/*0xD08*/ u8 field_D08_0:1;
/*0xD08*/ u8 field_D08_1:1;
/*0xD08*/ u8 field_D08_2:1;
/*0xD08*/ u8 field_D08_3:1;
/*0xD08*/ u8 field_D08_4:1;
/*0xD08*/ u8 field_D08_5:1;
/*0xD08*/ u8 field_D08_6:1;
/*0xD08*/ u8 field_D08_7:1;
/*0xD09*/ u8 filler_D09;
/*0xD0A*/ u8 filler_D0A;
/*0xD0B*/ u8 filler_D0B;
/*0xD0C*/ u16 field_D0C[2];
/*0xD10*/ u8 filler_D10;
/*0xD11*/ u8 filler_D11;
/*0xD12*/ u8 filler_D12;
/*0xD13*/ u8 filler_D13;
/*0xD14*/ u16 field_D14[2];
/*0xD18*/ u8 field_D18[0xB0];
/*0xDC8*/ u16 field_DC8[2];
/*0xDCC*/ u8 filler_DCC[4];
/*0xDD0*/ u16 field_DD0[2];
/*0xDD4*/ u16 field_DD4[2];
/*0xD0A*/ u8 field_D0A;
/*0xD0B*/ u8 field_D0B;
/*0xD0C*/ u16 field_D0C[2][2];
/*0xD14*/ u16 field_D14[2][2];
/*0xD1C*/ u16 field_D1C[2][2];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT];
/*0xD64*/ u16 domeMonId[DOME_TOURNAMENT_TRAINERS_COUNT][3];
/*0xD64*/ u16 field_DC4[2];
/*0xDC8*/ u16 field_DC8[2][2];
/*0xDD0*/ u16 field_DD0[2][2];
/*0xDD8*/ u16 field_DD8;
/*0xDDA*/ u16 field_DDA[2];
/*0xDDE*/ u16 field_DDE[2];
@@ -404,12 +433,22 @@ struct BattleFrontier
/*0xE6A*/ u16 field_E6A;
/*0xE6C*/ u16 field_E6C;
/*0xE6E*/ u16 field_E6E;
/*0xE70*/ u8 field_E70[72];
/*0xE70*/ struct Struct_field_E70 field_E70[6];
/*0xEB8*/ u16 frontierBattlePoints;
/*0xEBA*/ u8 field_EBA[39];
/*0xEBA*/ u8 field_EBA;
/*0xEBB*/ u8 field_EBB;
/*0xEBC*/ u8 field_EBC;
/*0xEBD*/ u8 field_EBD;
/*0xEBE*/ u8 field_EBE;
/*0xEBF*/ u8 field_EBF;
/*0xEC0*/ u16 field_EC0[16];
/*0xEE0*/ u8 field_EE0;
/*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH];
/*0xEF1*/ u8 field_EF1[2][4];
/*0xEF9*/ u8 field_EF9[51];
/*0xEF9*/ u8 field_EF9;
/*0xEFA*/ u8 field_EFA;
/*0xEFB*/ u8 field_EFB;
/*0xEFC*/ struct FrontierMonData field_EFC[3];
};
struct SaveBlock2

View File

@@ -53,7 +53,7 @@ void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size,
bool8 free_temp_tile_data_buffers_if_possible(void);
struct WindowTemplate CreateWindowTemplate(u8, u8, u8, u8, u8, u8, u16);
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
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);
s8 Menu_ProcessInputNoWrap_(void);
s8 ProcessMenuInput_other(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);

View File

@@ -456,6 +456,7 @@ extern const u8 gStatStageRatios[][2];
extern const u16 gUnknown_08329D54[];
extern const struct SpriteTemplate gUnknown_08329D98[];
extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const s8 gNatureStatTable[][5];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);

View File

@@ -0,0 +1,13 @@
#ifndef GUARD_TRAINER_POKEMON_SPRITES_H
#define GUARD_TRAINER_POKEMON_SPRITES_H
bool16 ResetAllPicSprites(void);
u16 CreatePicSprite2(u16 species, u32 otId, u32 personality, u8 flags, 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);
u16 FreeAndDestroyMonPicSprite(u16 spriteId);
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 FreeAndDestroyTrainerPicSprite(u16 spriteId);
u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
#endif // GUARD_TRAINER_POKEMON_SPRITES_H