Merge branch 'master' into decompile_battle1

This commit is contained in:
DizzyEggg
2017-12-19 17:37:53 +01:00
173 changed files with 5528 additions and 7213 deletions

View File

@@ -54,7 +54,7 @@
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
#define BATTLE_TYPE_x100000 0x100000
#define BATTLE_TYPE_PIKE 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
@@ -63,7 +63,7 @@
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYORGE 0x20000000
#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
@@ -73,8 +73,8 @@
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000)
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
#define BATTLE_WON 0x1
#define BATTLE_LOST 0x2
@@ -230,9 +230,9 @@
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_ROCK 6
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_INSIDE 8
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// array entries for battle communication
@@ -328,10 +328,10 @@ struct TrainerMonItemCustomMoves
union TrainerMonPtr
{
struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
struct TrainerMonItemCustomMoves* ItemCustomMoves;
struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
struct TrainerMonItemCustomMoves *ItemCustomMoves;
};
struct Trainer
@@ -348,9 +348,6 @@ struct Trainer
/*0x24*/ union TrainerMonPtr party;
};
#define PARTY_FLAG_CUSTOM_MOVES 0x1
#define PARTY_FLAG_HAS_ITEM 0x2
extern const struct Trainer gTrainers[];
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))

View File

@@ -1,18 +1,85 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
enum
{
TRAINER_BATTLE_NORMAL,
TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC,
TRAINER_BATTLE_CONTINUE_SCRIPT,
TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT,
TRAINER_BATTLE_DOUBLE,
TRAINER_BATTLE_REMATCH,
TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE,
TRAINER_BATTLE_REMATCH_DOUBLE,
TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC,
TRAINER_BATTLE_9,
TRAINER_BATTLE_SET_TRAINER_A,
TRAINER_BATTLE_SET_TRAINER_B,
TRAINER_BATTLE_12,
};
u8 HasTrainerAlreadyBeenFought(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
#define REMATCHES_COUNT 5
#define REMATCH_TABLE_ENTRIES 78
#define REMATCH_WALLY_ENTRY 64
#define REMATCH_ELITE_FOUR_ENTRIES 73
struct RematchTrainer
{
u16 trainerIds[REMATCHES_COUNT];
u16 mapGroup;
u16 mapNum;
};
extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u16 gPartnerTrainerId;
void BattleSetup_StartWildBattle(void);
void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
void StartWallyTutorialBattle(void);
void BattleSetup_StartScriptedWildBattle(void);
void BattleSetup_StartLatiBattle(void);
void BattleSetup_StartLegendaryBattle(void);
void StartGroudonKyogreBattle(void);
void StartRegiBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 sub_80B100C(s32 arg0);
void ChooseStarter(void);
void ResetTrainerOpponentIds(void);
void SetMapVarsToTrainer(void);
const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript);
void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript);
void SetUpTwoTrainersBattle(void);
bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
void sub_80B16D8(void);
u8 GetTrainerBattleMode(void);
bool8 GetTrainerFlag(void);
bool8 HasTrainerBeenFought(u16 trainerId);
void SetTrainerFlag(u16 trainerId);
void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
u8 *BattleSetup_GetScriptAddrAfterBattle(void);
u8 *BattleSetup_GetTrainerPostBattleScript(void);
void BattleSetup_StartRematchBattle(void);
void ShowTrainerIntroSpeech(void);
const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
const u8 *BattleSetup_GetTrainerPostBattleScript(void);
void ShowTrainerCantBattleSpeech(void);
void SetUpTrainerEncounterMusic(void);
const u8 *GetTrainerALoseText(void);
const u8 *GetTrainerBLoseText(void);
const u8 *GetTrainerWonSpeech(void);
void UpdateRematchIfDefeated(s32 rematchTableId);
void IncrementRematchStepCounter(void);
void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum);
bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum);
bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum);
u16 GetLastBeatenRematchTrainerId(u16 trainerId);
bool8 ShouldTryRematchBattle(void);
bool8 IsTrainerReadyForRematch(void);
void ShouldTryGetTrainerScript(void);
u16 CountBattledRematchTeams(u16 trainerId);
#endif // GUARD_BATTLE_SETUP_H

View File

@@ -2,5 +2,55 @@
#define GUARD_BATTLE_TRANSITION_H
void sub_8149DFC(u8 a1);
void BattleTransition_StartOnField(u8 transitionID);
void BattleTransition_Start(u8 transitionID);
bool8 IsBattleTransitionDone(void);
// credits for the names go to Dyskinesia and Tetrable
// names are naturally subject to change
#define B_TRANSITION_BLUR 0
#define B_TRANSITION_SWIRL 1
#define B_TRANSITION_SHUFFLE 2
#define B_TRANSITION_BIG_POKEBALL 3
#define B_TRANSITION_POKEBALLS_TRAIL 4
#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
#define B_TRANSITION_RIPPLE 6
#define B_TRANSITION_WAVE 7
#define B_TRANSITION_SLICE 8
#define B_TRANSITION_WHITEFADE 9
#define B_TRANSITION_GRID_SQUARES 10
#define B_TRANSITION_SHARDS 11
#define B_TRANSITION_SYDNEY 12
#define B_TRANSITION_PHOEBE 13
#define B_TRANSITION_GLACIA 14
#define B_TRANSITION_DRAKE 15
#define B_TRANSITION_CHAMPION 16
// added in Emerald
#define B_TRANSITION_AQUA 17
#define B_TRANSITION_MAGMA 18
#define B_TRANSITION_REGICE 19
#define B_TRANSITION_REGISTEEL 20
#define B_TRANSITION_REGIROCK 21
#define B_TRANSITION_KYOGRE 22
#define B_TRANSITION_GROUDON 23
#define B_TRANSITION_RAYQUAZA 24
#define B_TRANSITION_25 25
#define B_TRANSITION_26 26
#define B_TRANSITION_27 27
#define B_TRANSITION_28 28
#define B_TRANSITION_29 29
#define B_TRANSITION_30 30
#define B_TRANSITION_31 31
#define B_TRANSITION_32 32
#define B_TRANSITION_33 33
#define B_TRANSITION_34 34
#define B_TRANSITION_35 35
#define B_TRANSITION_36 36
#define B_TRANSITION_37 37
#define B_TRANSITION_38 38
#define B_TRANSITION_39 39
#define B_TRANSITION_40 40
#define B_TRANSITION_41 41
#endif // GUARD_BATTLE_TRANSITION_H

View File

@@ -303,7 +303,7 @@
#define FLAG_0x12C 0x12C
#define FLAG_0x12D 0x12D
#define FLAG_0x12E 0x12E
#define FLAG_0x12F 0x12F
#define FLAG_HAS_MATCH_CALL 0x12F
#define FLAG_0x130 0x130
#define FLAG_0x131 0x131
#define FLAG_0x132 0x132
@@ -348,7 +348,7 @@
#define FLAG_0x159 0x159
#define FLAG_0x15A 0x15A
#define FLAG_0x15B 0x15B
#define FLAG_0x15C 0x15C
#define FLAG_MATCH_CALL_REGISTERED 0x15C
#define FLAG_0x15D 0x15D
#define FLAG_0x15E 0x15E
#define FLAG_0x15F 0x15F

1129
include/constants/trainers.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -50,11 +50,14 @@
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_0x402D 0x402D
#define VAR_0x402E 0x402E
#define VAR_0x402F 0x402F
#define VAR_0x4030 0x4030
#define VAR_0x4031 0x4031
#define VAR_0x4032 0x4032
#define VAR_0x4033 0x4033
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
#define VAR_0x4034 0x4034
#define VAR_0x4035 0x4035
#define VAR_STORAGE_UNKNOWN 0x4036

View File

@@ -3,5 +3,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
void UpdateDewfordTrendPerDay(u16 days);
#endif // GUARD_DEWFORDTREND_H

View File

@@ -7,10 +7,18 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_TryGetTrainerScript[];
extern const u8 EventScript_275BB7[];
extern const u8 EventScript_275D0C[];
extern const u8 EventScript_275D1F[];
extern const u8 EventScript_275D2E[];
extern const u8 EventScript_271354[];
extern const u8 EventScript_2713C2[];
extern const u8 EventScript_TryDoDoubleTrainerBattle[];
extern const u8 EventScript_271362[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];

View File

@@ -76,6 +76,8 @@ void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern);
u8 npc_running_behaviour_by_direction(u8 direction);
// Exported data declarations

View File

@@ -9,5 +9,6 @@
void pal_fill_black(void);
bool8 sub_80ABDFC(void);
void sub_80AF168(void);
void UpdateWeatherPerDay(u16 days);
#endif //GUARD_FIELD_SCREEN_H

View File

@@ -78,6 +78,81 @@
#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16)
#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32)
#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
{ \
const void *_src = src; \
void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
DmaCopy##bit(dmaNum, _src, _dest, (block)); \
_src += (block); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
DmaCopy##bit(dmaNum, _src, _dest, _size); \
break; \
} \
} \
}
#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
DmaFill##bit(dmaNum, value, _dest, (block)); \
_dest += (block); \
_size -= (block); \
if (_size <= (block)) \
{ \
DmaFill##bit(dmaNum, value, _dest, _size); \
break; \
} \
} \
}
#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16)
#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32)
#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
{ \
const void *_src = src; \
void *_dest = dest; \
u32 _size = size; \
DmaCopy##bit(dmaNum, _src, _dest, _size); \
}
#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
DmaFill##bit(dmaNum, value, _dest, _size); \
}
#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
#define DmaClearDefvars(dmaNum, dest, size, bit) \
{ \
void *_dest = dest; \
u32 _size = size; \
DmaClear##bit(dmaNum, _dest, _size); \
}
#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
#define DmaStop(dmaNum) \
{ \
vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \

View File

@@ -36,6 +36,24 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
// There are many quirks in the source code which have overarching behavioral differences from
// a number of other files. For example, diploma.c seems to declare rodata before each use while
// other files declare out of order and must be at the beginning. There are also a number of
// macros which differ from one file to the next due to the method of obtaining the result, such
// as these below. Because of this, there is a theory (Two Team Theory) that states that these
// programming projects had more than 1 "programming team" which utilized different macros for
// each of the files that were worked on.
#define T1_READ_8(ptr) ((ptr)[0])
#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
// T2_READ_8 is a duplicate to remain consistent with each group.
#define T2_READ_8(ptr) ((ptr)[0])
#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
enum
{
VERSION_SAPPHIRE = 1,
@@ -45,7 +63,8 @@ enum
VERSION_LEAF_GREEN = 5,
};
enum LanguageId {
enum LanguageId
{
LANGUAGE_JAPANESE = 1,
LANGUAGE_ENGLISH = 2,
LANGUAGE_FRENCH = 3,
@@ -222,7 +241,7 @@ struct SaveBlock2
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
/*0x214*/ u8 field_214[1032];
/*0x21C*/ u8 field_21C[1032];
/*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array
// All below could be a one giant struct
@@ -244,7 +263,7 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
/*0xCAA*/ u16 field_CAA[4];
/*0xCB2*/ u16 battlePyramidWildHeaderId;
/*0xCB4*/ u8 field_CB4[82];
/*0xCB4*/ u16 field_CB4[41];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xD08*/ u8 filler_D08[0x112];
@@ -360,10 +379,12 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
#define MAIL_WORDS_COUNT 9
struct MailStruct
{
/*0x00*/ u16 words[9];
/*0x12*/ u8 playerName[8];
/*0x00*/ u16 words[MAIL_WORDS_COUNT];
/*0x12*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x1A*/ u8 trainerId[4];
/*0x1E*/ u16 species;
/*0x20*/ u16 itemId;

View File

@@ -117,6 +117,11 @@ extern const u8 gUnknown_08DB9F08[];
extern const u8 gUnknown_08DB9FFC[];
extern const u8 gUnknown_08DBA020[];
extern const u8 gUnknown_08DBA12C[];
extern const u8 gUnknown_08DCC05C[];
extern const u16 gUnknown_08DCC01C[];
extern const u16 gUnknown_08DCC03C[];
extern const u8 gUnknown_08DCC648[];
extern const u8 gUnknown_08DCC908[];
extern const u8 gUnknown_08DD87C0[];
extern const u8 gUnknown_08DD8EE0[];
extern const u16 gUnknown_08DD8780[];

View File

@@ -14,7 +14,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
// sub_81DB41C
// CopyMonCategoryText
// sub_81DB494
// sub_81DB4DC
void PadNameString(u8 *dst, u8 padWith);
// sub_81DB554
// sub_81DB5AC
u32 sub_81DB604(const u8 *);

View File

@@ -14,10 +14,20 @@
|| itemId == ITEM_FAB_MAIL \
|| itemId == ITEM_RETRO_MAIL))
// mail.h
void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag);
bool8 MonHasMail(struct Pokemon *mon);
void TakeMailFromMon(struct Pokemon *mon);
u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
// mail_data.h
void ClearMailData(void);
void ClearMailStruct(struct MailStruct *mail);
bool8 MonHasMail(struct Pokemon *mon);
u8 GiveMailToMon(struct Pokemon *mon, u16 itemId);
u16 SpeciesToMailSpecies(u16 species, u32 personality);
u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
void TakeMailFromMon(struct Pokemon *mon);
void ClearMailItemId(u8 mailId);
u8 TakeMailFromMon2(struct Pokemon *mon);
bool8 ItemIsMail(u16 itemId);
#endif // GUARD_MAIL_H

View File

@@ -1,12 +0,0 @@
#ifndef GUARD_MAIL_DATA_H
#define GUARD_MAIL_DATA_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
u16 sub_80D45E8(u16, u16 *);
#endif //GUARD_MAIL_DATA_H

View File

@@ -29,7 +29,7 @@ int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u
bool8 free_temp_tile_data_buffers_if_possible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
s8 sub_8198C58(void);
s8 ProcessMenuInputNoWrap_(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str);

View File

@@ -653,6 +653,7 @@ u8 GetSecretBaseTrainerPicIndex(void);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
u8 GetMonsStateToDoubles_2(void);
#include "sprite.h"

View File

@@ -3,5 +3,7 @@
const u8* GetTrainerClassNameFromId(u16 trainerId);
const u8* GetTrainerNameFromId(u16 trainerId);
void PlayMapChosenOrBattleBGM(u16 song);
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
#endif // GUARD_POKEMON_3_H

View File

@@ -3,6 +3,7 @@
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
u16 GetUnownLetterByPersonality(u32 personality);
u16 sub_80D2E84(u16 speciesId);
void sub_80D2F68(u16 iconId);
u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);

View File

@@ -5,5 +5,11 @@ void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
bool8 sub_813B9C0(void);
void UpdateMirageRnd(u16 days);
void UpdateBirchState(u16 days);
void UpdateFrontierManiac(u16 days);
void UpdateFrontierGambler(u16 days);
void SetShoalItemFlag(u16 days);
#endif //GUARD_ROM6_H

View File

@@ -13,6 +13,8 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
void CB2_EndSafariBattle(void);
struct Pokeblock *SafariZoneGetActivePokeblock(void);
void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);

View File

@@ -9,5 +9,6 @@
void sub_80E9578(void);
void sub_80E980C(void);
u8 *GetSecretBaseMapName(u8 *dest);
const u8 *GetSecretBaseTrainerLoseText(void);
#endif //GUARD_SECRET_BASE_H

View File

@@ -372,20 +372,20 @@ enum
BGM_BATTLE_DOME_TOURNAMENT,
BGM_BATTLE_PIKE,
BGM_BATTLE_FACTORY,
BGM_BATTLE_LEGENDARY,
BGM_BATTLE_FRONTIER_BRAIN,
BGM_BATTLE_MEW,
BGM_BATTLE_DOME, // end of the human-readable names
/*0x1D6*/ BGM_BATTLE_LEGENDARY,
/*0x1D7*/ BGM_BATTLE_FRONTIER_BRAIN,
/*0x1D8*/ BGM_BATTLE_MEW,
/*0x1D9*/ BGM_BATTLE_DOME, // end of the human-readable names
/*0x1DA*/ BGM_BATTLE27, // wild
BGM_BATTLE31, // aqua/magma grunt
BGM_BATTLE20, // trainer
BGM_BATTLE32, // gym leader
BGM_BATTLE33, // champion
BGM_BATTLE36, // regi
BGM_BATTLE34, // weather trio
BGM_BATTLE35, // rival
BGM_BATTLE38, // elite four
BGM_BATTLE30, // aqua/magma leader
/*0x1DB*/ BGM_BATTLE31, // aqua/magma grunt
/*0x1DC*/ BGM_BATTLE20, // trainer
/*0x1DD*/ BGM_BATTLE32, // gym leader
/*0x1DE*/ BGM_BATTLE33, // champion
/*0x1DF*/ BGM_BATTLE36, // regi
/*0x1E0*/ BGM_BATTLE34, // weather trio
/*0x1E1*/ BGM_BATTLE35, // rival
/*0x1E2*/ BGM_BATTLE38, // elite four
/*0x1E3*/ BGM_BATTLE30, // aqua/magma leader
/*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again!
BGM_FRLG_GAMECORNER,
BGM_FRLG_ROCKET_HIDEOUT,
@@ -453,14 +453,14 @@ enum
BGM_FRLG_ISLAND_FOUR,
BGM_FRLG_ISLAND_SIX,
BGM_FRLG_FLUTE,
BGM_FRLG_BATTLE_DEOXYS,
BGM_FRLG_BATTLE_MEWTWO,
BGM_FRLG_BATTLE_LEGENDARY,
BGM_FRLG_LEADER_EYE,
BGM_FRLG_DEOXYS_EYE,
BGM_FRLG_TRAINER_TOWER,
BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
/*0x22E*/BGM_FRLG_TEACHY_TV,
/*0x227*/ BGM_FRLG_BATTLE_DEOXYS,
/*0x228*/ BGM_FRLG_BATTLE_MEWTWO,
/*0x229*/ BGM_FRLG_BATTLE_LEGENDARY,
/*0x22A*/ BGM_FRLG_LEADER_EYE,
/*0x22B*/ BGM_FRLG_DEOXYS_EYE,
/*0x22C*/ BGM_FRLG_TRAINER_TOWER,
/*0x22D*/ BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
/*0x22E*/ BGM_FRLG_TEACHY_TV,
};
#endif // GUARD_SONGS_H

View File

@@ -82,6 +82,10 @@ extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
extern const u8 gUnknown_085EA79D[];
extern const u8 gText_EmptyString2[];
extern const u8 gText_Confirm3[];
extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
extern const u8 gText_Draw[];

View File

@@ -1,74 +0,0 @@
#ifndef GUARD_TRAINER_CLASSES_H
#define GUARD_TRAINER_CLASSES_H
enum
{
CLASS_PKMN_TRAINER0, // 0
CLASS_PKMN_TRAINER1, // 1
CLASS_HIKER, // 2
CLASS_TEAM_AQUA, // 3
CLASS_PKMN_BREEDER, // 4
CLASS_COOLTRAINER, // 5
CLASS_BIRDKEEPER, // 6
CLASS_COLLECTOR, // 7
CLASS_SWIMMER_MALE, // 8
CLASS_TEAM_MAGMA, // 9
CLASS_EXPERT, // 0xA
CLASS_AQUA_ADMIN, // 0xB
CLASS_BLACK_BELT, // 0xC
CLASS_AQUA_LEADER, // 0xD
CLASS_HEX_MANIAC, // 0xE
CLASS_AROMA_LADY, // 0xF
CLASS_RUIN_MANIAC, // 0x10
CLASS_INTERVIEWER, // 0x11
CLASS_TUBER_FEMALE, // 0x12
CLASS_TUBER_MALE, // 0x13
CLASS_LADY, // 0x14
CLASS_BEAUTY, // 0x15
CLASS_RICH_BOY, // 0x16
CLASS_POKEMANIAC, // 0x17
CLASS_GUITARIST, // 0x18
CLASS_KINDLER, // 0x19
CLASS_CAMPER, // 0x1A
CLASS_PICKNICKER, // 0x1B
CLASS_BUG_MANIAC, // 0x1C
CLASS_PSYCHIC, // 0x1D
CLASS_GENTLEMAN, // 0x1E
CLASS_ELITE_FOUR, // 0x1F
CLASS_LEADER, // 0x20
CLASS_SCHOOL_KID, // 0x21
CLASS_SCHOOL_SR_JR, // 0x22
CLASS_WINSTRATE, // 0x23
CLASS_POKE_FAN, // 0x24
CLASS_YOUNGSTER, // 0x25
CLASS_CHAMPION, // 0x26
CLASS_FISHERMAN, // 0x27
CLASS_TRIATHLETE, // 0x28
CLASS_DRAGON_TAMER, // 0x29
CLASS_NINJA_BOY, // 0x2A
CLASS_BATTLE_GIRL, // 0x2B
CLASS_PARASOL_LADY, // 0x2C
CLASS_SWIMMER_FEMALE, // 0x2D
CLASS_TWINS, // 0x2E
CLASS_SAILOR, // 0x2F
CLASS_COOLTRAINER_2, // 0x30
CLASS_MAGMA_ADMIN, // 0x31
CLASS_PKMN_TRAINER_RIVAL, // 0x32
CLASS_BUG_CATCHER, // 0x33
CLASS_PKMN_RANGER, // 0x34
CLASS_MAGMA_LEADER, // 0x35
CLASS_LASS, // 0x36
CLASS_YOUNG_COUPLE, // 0x37
CLASS_OLD_COUPLE, // 0x38
CLASS_SIS_AND_BRO, // 0x39
CLASS_SALON_MAIDEN, // 0x3A
CLASS_DOME_ACE, // 0x3B
CLASS_PALACE_MAVEN, // 0x3C
CLASS_ARENA_TYCOON, // 0x3D
CLASS_FACTORY_HEAD, // 0x3E
CLASS_PIKE_QUEEN, // 0x3F
CLASS_PYRAMID_KING, // 0x40
CLASS_PKMN_TRAINER2, // 0x41
};
#endif // GUARD_TRAINER_CLASSES_H

View File

@@ -1,101 +0,0 @@
#ifndef GUARD_TRAINER_FRONT_SPRITES_H
#define GUARD_TRAINER_FRONT_SPRITES_H
enum
{
TRAINER_FRONT_PIC_HIKER,
TRAINER_FRONT_PIC_AQUA_GRUNT_M,
TRAINER_FRONT_PIC_PKMN_BREEDER_F,
TRAINER_FRONT_PIC_COOLTRAINER_M,
TRAINER_FRONT_PIC_BIRD_KEEPER,
TRAINER_FRONT_PIC_COLLECTOR,
TRAINER_FRONT_PIC_AQUA_GRUNT_F,
TRAINER_FRONT_PIC_SWIMMER_M,
TRAINER_FRONT_PIC_MAGMA_GRUNT_M,
TRAINER_FRONT_PIC_EXPERT_M,
TRAINER_FRONT_PIC_AQUA_ADMIN_M,
TRAINER_FRONT_PIC_BLACK_BELT,
TRAINER_FRONT_PIC_AQUA_ADMIN_F,
TRAINER_FRONT_PIC_AQUA_LEADER,
TRAINER_FRONT_PIC_HEX_MANIAC,
TRAINER_FRONT_PIC_AROMA_LADY,
TRAINER_FRONT_PIC_RUIN_MANIAC,
TRAINER_FRONT_PIC_INTERVIEWER,
TRAINER_FRONT_PIC_TUBER_F,
TRAINER_FRONT_PIC_TUBER_M,
TRAINER_FRONT_PIC_COOLTRAINER_F,
TRAINER_FRONT_PIC_LADY,
TRAINER_FRONT_PIC_BEAUTY,
TRAINER_FRONT_PIC_RICH_BOY,
TRAINER_FRONT_PIC_EXPERT_F,
TRAINER_FRONT_PIC_POKE_MANIAC,
TRAINER_FRONT_PIC_MAGMA_GRUNT_F,
TRAINER_FRONT_PIC_GUITARIST,
TRAINER_FRONT_PIC_KINDLER,
TRAINER_FRONT_PIC_CAMPER,
TRAINER_FRONT_PIC_PICNICKER,
TRAINER_FRONT_PIC_BUG_MANIAC,
TRAINER_FRONT_PIC_PKMN_BREEDER_M,
TRAINER_FRONT_PIC_PSYCHIC_M,
TRAINER_FRONT_PIC_PSYCHIC_F,
TRAINER_FRONT_PIC_GENTLEMAN,
TRAINER_FRONT_PIC_SIDNEY,
TRAINER_FRONT_PIC_PHOEBE,
TRAINER_FRONT_PIC_GLACIA,
TRAINER_FRONT_PIC_DRAKE,
TRAINER_FRONT_PIC_ROXANNE,
TRAINER_FRONT_PIC_BRAWLY,
TRAINER_FRONT_PIC_WATTSON,
TRAINER_FRONT_PIC_FLANNERY,
TRAINER_FRONT_PIC_NORMAN,
TRAINER_FRONT_PIC_WINONA,
TRAINER_FRONT_PIC_TATE_LIZA,
TRAINER_FRONT_PIC_JUAN,
TRAINER_FRONT_PIC_SCHOOL_KID_M,
TRAINER_FRONT_PIC_SCHOOL_KID_F,
TRAINER_FRONT_PIC_SR_JR,
TRAINER_FRONT_PIC_POKÉFAN_M,
TRAINER_FRONT_PIC_POKÉFAN_F,
TRAINER_FRONT_PIC_YOUNGSTER,
TRAINER_FRONT_PIC_WALLACE,
TRAINER_FRONT_PIC_FISHERMAN,
TRAINER_FRONT_PIC_TRIATHLETE_BIKER_M,
TRAINER_FRONT_PIC_TRIATHLETE_BIKER_F,
TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_M,
TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_F,
TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_M,
TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_F,
TRAINER_FRONT_PIC_DRAGON_TAMER,
TRAINER_FRONT_PIC_NINJA_BOY,
TRAINER_FRONT_PIC_BATTLE_GIRL,
TRAINER_FRONT_PIC_PARASOL_LADY,
TRAINER_FRONT_PIC_SWIMMER_F,
TRAINER_FRONT_PIC_TWINS,
TRAINER_FRONT_PIC_SAILOR,
TRAINER_FRONT_PIC_MAGMA_ADMIN_M,
TRAINER_FRONT_PIC_WALLY,
TRAINER_FRONT_PIC_BRENDAN_E,
TRAINER_FRONT_PIC_MAY_E,
TRAINER_FRONT_PIC_BUG_CATCHER,
TRAINER_FRONT_PIC_PKMN_RANGER_M,
TRAINER_FRONT_PIC_PKMN_RANGER_F,
TRAINER_FRONT_PIC_MAGMA_LEADER,
TRAINER_FRONT_PIC_LASS,
TRAINER_FRONT_PIC_YOUNG_COUPLE,
TRAINER_FRONT_PIC_OLD_COUPLE,
TRAINER_FRONT_PIC_SIS_AND_BRO,
TRAINER_FRONT_PIC_STEVEN,
TRAINER_FRONT_PIC_ANABEL,
TRAINER_FRONT_PIC_TUCKER,
TRAINER_FRONT_PIC_SPENSER,
TRAINER_FRONT_PIC_GRETA,
TRAINER_FRONT_PIC_NOLAND,
TRAINER_FRONT_PIC_LUCY,
TRAINER_FRONT_PIC_BRANDON,
TRAINER_FRONT_PIC_RED,
TRAINER_FRONT_PIC_LEAF,
TRAINER_FRONT_PIC_BRENDAN_RS,
TRAINER_FRONT_PIC_MAY_RS
};
#endif // GUARD_TRAINER_FRONT_SPRITES_H

View File

@@ -1,7 +0,0 @@
#ifndef GUARD_TRAINER_IDS_H
#define GUARD_TRAINER_IDS_H
#define NO_OF_TRAINERS 854
#define TRAINER_ID_STEVEN 804
#endif // GUARD_TRAINER_IDS_H

View File

@@ -1,6 +1,21 @@
#ifndef GUARD_TRAINER_SEE_H
#define GUARD_TRAINER_SEE_H
struct ApproachingTrainer
{
u8 mapObjectId;
u8 radius;
u8 field_2;
u8 field_3;
const u8 *trainerScriptPtr;
u8 field_8;
u8 field_9;
u8 field_A;
u8 field_B;
};
extern struct ApproachingTrainer gApproachingTrainers[];
void sub_80B4578(struct MapObject *);
u8 sub_80B47BC(void);
void sub_8155D78(struct MapObject *);

View File

@@ -15,5 +15,6 @@ void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
#endif //GUARD_TV_H

6
include/wallclock.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef GUARD_WALLCLOCK_H
#define GUARD_WALLCLOCK_H
void Cb2_StartWallClock(void);
#endif //GUARD_WALLCLOCK_H