mirror of
https://github.com/pret/pmd-red.git
synced 2026-03-21 17:46:39 -05:00
Merge branch '_pret/master' into _pret/pr/doc1
This commit is contained in:
commit
5c29595a07
|
|
@ -4,10 +4,10 @@
|
|||
#include "structs/rgb.h"
|
||||
|
||||
void InitBGPaletteBuffer(void);
|
||||
void nullsub_4(s32 index, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
void nullsub_5(s32 index, const RGB *color);
|
||||
void SetBGPaletteBufferColorArray(s32 index, const RGB *color);
|
||||
void SetBGPaletteBufferColorRGB(s32 index, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
void nullsub_4(s32 index, const RGB_Struct *color, s32 brightness, const RGB_Struct *ramp);
|
||||
void nullsub_5(s32 index, const RGB_Struct *color);
|
||||
void SetBGPaletteBufferColorArray(s32 index, const RGB_Struct *color);
|
||||
void SetBGPaletteBufferColorRGB(s32 index, const RGB_Struct *color, s32 brightness, const RGB_Struct *ramp);
|
||||
void SetBGPaletteBufferColor(s32 index, u16 *color);
|
||||
void TransferBGPaletteBuffer(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ typedef struct unkDataFor8004AA4
|
|||
{
|
||||
/* 0x0 */ s16 colorCount;
|
||||
s16 unk2;
|
||||
/* 0x4 */ RGB colors[0];
|
||||
/* 0x4 */ RGB_Struct colors[0];
|
||||
} unkDataFor8004AA4;
|
||||
|
||||
void nullsub_6(void);
|
||||
void sub_8004AA4(unkStruct_202EE8C *, OpenedFile *, s32);
|
||||
bool8 sub_8004AF0(bool8, unkStruct_202EE8C *, s32, s32, s32, const RGB *);
|
||||
bool8 sub_8004AF0(bool8, unkStruct_202EE8C *, s32, s32, s32, const RGB_Struct *);
|
||||
bool8 sub_8004D14(unkStruct_202EE8C *, s32);
|
||||
bool8 sub_8004D40(unkStruct_202EE8C *, s32);
|
||||
|
||||
|
|
|
|||
|
|
@ -24,13 +24,6 @@ struct unk_203B250
|
|||
WindowTemplates windows;
|
||||
};
|
||||
|
||||
// size: 0x8
|
||||
struct TeamBadgeData
|
||||
{
|
||||
/* 0x0 */ u8 *pics; // probably a pointer to an arrays of pixels?
|
||||
/* 0x4 */ RGB *palette; // Pics share common palette
|
||||
};
|
||||
|
||||
bool8 sub_801D014(Pokemon *);
|
||||
u32 sub_801D0DC(void);
|
||||
u32 sub_801D178(void);
|
||||
|
|
|
|||
|
|
@ -1,24 +1,27 @@
|
|||
#ifndef GUARD_CODE_80A26CC_H
|
||||
#define GUARD_CODE_80A26CC_H
|
||||
|
||||
#include "constants/ground_map.h"
|
||||
#include "constants/script_dungeon_id.h"
|
||||
#include "constants/script_id.h"
|
||||
|
||||
// size: 0x14
|
||||
typedef struct DungeonInfo
|
||||
{
|
||||
/* 0x0 */ s16 unk0;
|
||||
/* 0x2 */ s16 unk2;
|
||||
/* 0x4 */ s16 unk4;
|
||||
/* 0x6 */ s16 unk6;
|
||||
/* 0x8 */ s16 unk8;
|
||||
/* 0xA */ s16 unkA;
|
||||
/* 0xC */ u8 dungeonIndex;
|
||||
/* 0xD */ u8 unkD;
|
||||
/* 0xE */ s16 unkE;
|
||||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 unk11;
|
||||
/* 0x0 */ s16 mapID1; // See enum "GroundMapID". -1 if nothing
|
||||
/* 0x2 */ s16 mapID2; // See enum "GroundMapID". -1 if nothing
|
||||
/* 0x4 */ s16 mapID3; // See enum "GroundMapID". -1 if nothing
|
||||
/* 0x6 */ s16 scriptID1; // See enum "ScriptID". -1 if nothing
|
||||
/* 0x8 */ s16 scriptID2; // See enum "ScriptID". -1 if nothing
|
||||
/* 0xA */ s16 scriptID3; // See enum "ScriptID"
|
||||
/* 0xC */ u8 dungeonID; // See enum "DungeonID"
|
||||
/* 0xE */ s16 rescueDungeonID; // See enum "RescueDungeonId"
|
||||
/* 0x10 */ u8 unk10; // Always 1
|
||||
/* 0x11 */ bool8 unk11;
|
||||
} DungeonInfo;
|
||||
|
||||
const DungeonInfo *GetDungeonInfo_80A2608(s32 index);
|
||||
s16 sub_80A2654(s16 index);
|
||||
const DungeonInfo *GetScriptDungeonInfo(s32 scriptDungeon_);
|
||||
s16 ScriptDungeonIDToRescueDungeonID(s16 scriptDungeonID);
|
||||
s16 sub_80A2668(s16);
|
||||
s16 sub_80A2688(u8);
|
||||
s16 RescueDungeonToScriptDungeonId(s16);
|
||||
|
|
@ -26,10 +29,10 @@ s16 sub_80A26CC(s16);
|
|||
u8 RescueDungeonToDungeonId(s16 index);
|
||||
u8 sub_80A2728(s16 index);
|
||||
u8 ScriptDungeonIdToDungeonId(s16 index);
|
||||
s16 sub_80A2750(s16);
|
||||
s16 sub_80A2750(s16 scriptDungeon);
|
||||
bool8 IsRescueDungeonAvailable(s16 _rescueDungeonId);
|
||||
bool8 sub_80A2824(u8 index);
|
||||
bool8 sub_80A28F0(u8 index);
|
||||
bool8 sub_80A2824(u8 dungeonID);
|
||||
bool8 sub_80A28F0(u8 dungeonID);
|
||||
s32 sub_80A29B0(u8 *);
|
||||
|
||||
#endif // GUARD_CODE_80A26CC_H
|
||||
|
|
|
|||
|
|
@ -50,7 +50,8 @@ enum MusicID
|
|||
MUS_TIME_OF_REUNION,
|
||||
MUS_OPENING_TITLE,
|
||||
// 47 - 50 are blank/empty slots for BG Music
|
||||
MUS_DUNGEON_FAIL = 51,
|
||||
MUS_BLANK_50 = 50,
|
||||
MUS_DUNGEON_FAIL,
|
||||
MUS_DUNGEON_COMPLETE,
|
||||
// 53 - 99 are blank/empty slots for BG Music
|
||||
MUS_FRIEND_AREA_UNUSED_1 = 100,
|
||||
|
|
|
|||
123
include/constants/cutscenes.h
Normal file
123
include/constants/cutscenes.h
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
#ifndef GUARD_CONSTANTS_CUTSCENES_H
|
||||
#define GUARD_CONSTANTS_CUTSCENES_H
|
||||
|
||||
enum CutsceneKind
|
||||
{
|
||||
CUTSCENE_NONE,
|
||||
CUTSCENE_MT_STEEL_ATTEMPT1,
|
||||
CUTSCENE_MT_STEEL_ATTEMPT2,
|
||||
CUTSCENE_MT_STEEL_POSTSTORY,
|
||||
CUTSCENE_SINISTER_WOODS_ATTEMPT1,
|
||||
CUTSCENE_SINISTER_WOODS_ATTEMPT2,
|
||||
CUTSCENE_SINISTER_WOODS_POSTSTORY,
|
||||
CUTSCENE_MT_THUNDER_PEAK_ATTEMPT1,
|
||||
CUTSCENE_MT_THUNDER_PEAK_ATTEMPT2,
|
||||
CUTSCENE_MT_THUNDER_PEAK_POSTSTORY,
|
||||
CUTSCENE_MT_BLAZE_PEAK_ATTEMPT1,
|
||||
CUTSCENE_MT_BLAZE_PEAK_ATTEMPT2,
|
||||
CUTSCENE_MT_BLAZE_PEAK_POSTSTORY,
|
||||
CUTSCENE_FROSTY_GROTTO_ATTEMPT1,
|
||||
CUTSCENE_FROSTY_GROTTO_ATTEMPT2,
|
||||
CUTSCENE_FROSTY_GROTTO_POSTSTORY,
|
||||
CUTSCENE_MT_FREEZE_PEAK,
|
||||
CUTSCENE_MT_FREEZE_PEAK_POSTSTORY,
|
||||
CUTSCENE_MAGMA_CAVERN_PIT_ATTEMPT1,
|
||||
CUTSCENE_MAGMA_CAVERN_PIT_ATTEMPT2,
|
||||
CUTSCENE_MAGMA_CAVERN_PIT_POSTSTORY,
|
||||
CUTSCENE_MAGMA_CAVERN_MID,
|
||||
CUTSCENE_MAGMA_CAVERN_MID_POSTSTORY,
|
||||
CUTSCENE_SKY_TOWER_SUMMIT_ATTEMPT1,
|
||||
CUTSCENE_SKY_TOWER_SUMMIT_ATTEMPT2,
|
||||
CUTSCENE_SKY_TOWER_SUMMIT_POSTSTORY,
|
||||
CUTSCENE_UPROAR_FOREST_ATTEMPT1,
|
||||
CUTSCENE_UPROAR_FOREST_ATTEMPT2,
|
||||
CUTSCENE_UPROAR_FOREST_POSTSTORY,
|
||||
CUTSCENE_WESTERN_CAVE_ATTEMPT1,
|
||||
CUTSCENE_WESTERN_CAVE_ATTEMPT2,
|
||||
CUTSCENE_WESTERN_CAVE_POSTSTORY,
|
||||
CUTSCENE_FIERY_FIELD_ATTEMPT1,
|
||||
CUTSCENE_FIERY_FIELD_ATTEMPT2,
|
||||
CUTSCENE_FIERY_FIELD_POSTSTORY,
|
||||
CUTSCENE_LIGHTNING_FIELD_ATTEMPT1,
|
||||
CUTSCENE_LIGHTNING_FIELD_ATTEMPT2,
|
||||
CUTSCENE_LIGHTNING_FIELD_POSTSTORY,
|
||||
CUTSCENE_NORTHWIND_FIELD_ATTEMPT1,
|
||||
CUTSCENE_NORTHWIND_FIELD_ATTEMPT2,
|
||||
CUTSCENE_NORTHWIND_FIELD_POSTSTORY,
|
||||
CUTSCENE_MT_FARAWAY,
|
||||
CUTSCENE_MT_FARAWAY_POSTSTORY,
|
||||
CUTSCENE_NORTHERN_RANGE_ATTEMPT1,
|
||||
CUTSCENE_NORTHERN_RANGE_ATTEMPT2,
|
||||
CUTSCENE_NORTHERN_RANGE_POSTSTORY,
|
||||
CUTSCENE_REGIROCK,
|
||||
CUTSCENE_REGICE,
|
||||
CUTSCENE_REGISTEEL,
|
||||
CUTSCENE_JIRACHI,
|
||||
CUTSCENE_JIRACHI_POSTSTORY,
|
||||
CUTSCENE_SILVER_TRENCH,
|
||||
CUTSCENE_STORMY_SEA,
|
||||
CUTSCENE_METEOR_CAVE,
|
||||
CUTSCENE_PURITY_FOREST,
|
||||
CUTSCENE_MAZE_BOSS,
|
||||
CUTSCENE_MEDICHAM,
|
||||
CUTSCENE_MEDICHAM_POSTSTORY,
|
||||
CUTSCENE_HOWLING_FOREST,
|
||||
CUTSCENE_HOWLING_FOREST_POSTSTORY,
|
||||
|
||||
NUM_CUTSCENES
|
||||
};
|
||||
|
||||
enum CutsceneFlagID
|
||||
{
|
||||
CUTSCENE_FLAG_MT_STEEL_REACHED,
|
||||
CUTSCENE_FLAG_MT_STEEL_COMPLETE,
|
||||
CUTSCENE_FLAG_SINISTER_WOODS_REACHED,
|
||||
CUTSCENE_FLAG_SINISTER_WOODS_COMPLETE,
|
||||
CUTSCENE_FLAG_MT_THUNDER_PEAK_REACHED,
|
||||
CUTSCENE_FLAG_MT_THUNDER_PEAK_COMPLETE,
|
||||
CUTSCENE_FLAG_MT_BLAZE_PEAK_REACHED,
|
||||
CUTSCENE_FLAG_MT_BLAZE_PEAK_COMPLETE,
|
||||
CUTSCENE_FLAG_FROSTY_GROTTO_REACHED,
|
||||
CUTSCENE_FLAG_FROSTY_GROTTO_COMPLETE,
|
||||
CUTSCENE_FLAG_MT_FREEZE_PEAK_COMPLETE,
|
||||
CUTSCENE_FLAG_MAGMA_CAVERN_PIT_REACHED,
|
||||
CUTSCENE_FLAG_MAGMA_CAVERN_PIT_COMPLETE,
|
||||
CUTSCENE_FLAG_MAGMA_CAVERN_MID_REACHED,
|
||||
CUTSCENE_FLAG_SKY_TOWER_SUMMIT_REACHED,
|
||||
CUTSCENE_FLAG_SKY_TOWER_SUMMIT_COMPLETE,
|
||||
CUTSCENE_FLAG_UPROAR_FOREST_REACHED,
|
||||
CUTSCENE_FLAG_UPROAR_FOREST_COMPLETE,
|
||||
CUTSCENE_FLAG_WESTERN_CAVE_REACHED,
|
||||
CUTSCENE_FLAG_WESTERN_CAVE_COMPLETE,
|
||||
CUTSCENE_FLAG_FIERY_FIELD_REACHED,
|
||||
CUTSCENE_FLAG_FIERY_FIELD_COMPLETE,
|
||||
CUTSCENE_FLAG_LIGHTNING_FIELD_REACHED,
|
||||
CUTSCENE_FLAG_LIGHTNING_FIELD_COMPLETE,
|
||||
CUTSCENE_FLAG_NORTHWIND_FIELD_REACHED,
|
||||
CUTSCENE_FLAG_NORTHWIND_FIELD_COMPLETE,
|
||||
CUTSCENE_FLAG_MT_FARAWAY_COMPLETE,
|
||||
CUTSCENE_FLAG_NORTHERN_RANGE_REACHED,
|
||||
CUTSCENE_FLAG_NORTHERN_RANGE_COMPLETE,
|
||||
// Written to when entering a Regi room:
|
||||
// If the Regi was recruited before, this is set to TRUE.
|
||||
// If the Regi "Part" or Music Box is in the inventory or held, this is set to TRUE.
|
||||
// Otherwise, this is set to FALSE.
|
||||
// If this is TRUE and the Regi is present, the Regi can be recruited.
|
||||
CUTSCENE_FLAG_REGI_ITEM_OBTAINED,
|
||||
CUTSCENE_FLAG_JIRACHI_COMPLETE,
|
||||
CUTSCENE_FLAG_FROSTY_FOREST_INTRUDED,
|
||||
CUTSCENE_FLAG_MEDICHAM_COMPLETE,
|
||||
CUTSCENE_FLAG_HOWLING_FOREST_COMPLETE,
|
||||
// Written to when entering a Regi room.
|
||||
// If the Regi was recruited before, this is set to TRUE.
|
||||
// Otherwise, this is set to FALSE.
|
||||
CUTSCENE_FLAG_REGI_RECRUITED,
|
||||
|
||||
NUM_CUTSCENE_FLAGS = 64,
|
||||
|
||||
CUTSCENE_FLAG_INVALID = 0xFF,
|
||||
};
|
||||
|
||||
#define CUTSCENE_FLAGS_U32STORAGE 3 // No idea why this is larger than necessary
|
||||
|
||||
#endif // GUARD_CONSTANTS_CUTSCENES_H
|
||||
|
|
@ -14,7 +14,24 @@ enum Direction
|
|||
DIRECTION_NORTHWEST,
|
||||
DIRECTION_WEST,
|
||||
DIRECTION_SOUTHWEST,
|
||||
|
||||
NUM_DIRECTIONS
|
||||
};
|
||||
|
||||
#endif
|
||||
enum DirectionTransformation
|
||||
{
|
||||
DIR_TRANS_NONE,
|
||||
DIR_TRANS_SPINRIGHT1, // Spin right 1 (example: South -> SouthWest)
|
||||
DIR_TRANS_SPINLEFT1, // Spin left 1 (example: South -> SouthEast)
|
||||
DIR_TRANS_SPINRIGHT2, // Spin right 2 (example: South -> West)
|
||||
DIR_TRANS_SPINLEFT2, // Spin left 2 (example: South -> East)
|
||||
DIR_TRANS_FLIP, // Flip (example: South -> North)
|
||||
DIR_TRANS_RAND_OFFSET_SOFT_CARDINAL, // Like DIR_TRANS_RAND_OFFSET_SOFT but only results in cardinal directions
|
||||
DIR_TRANS_RAND_OFFSET_SOFT, // SpinLeft1 or Nothing or SpinRight1
|
||||
DIR_TRANS_RAND_CARDINAL, // Random non-diagonal
|
||||
DIR_TRANS_RAND, // Fully random
|
||||
DIR_TRANS_10,
|
||||
DIR_TRANS_11,
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_DIRECTION_H
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef GUARD_CONSTANTS_DUNGEON_H
|
||||
#define GUARD_CONSTANTS_DUNGEON_H
|
||||
|
||||
#include "constants/cutscenes.h"
|
||||
|
||||
enum DungeonID
|
||||
{
|
||||
DUNGEON_TINY_WOODS = 0,
|
||||
|
|
@ -66,6 +68,7 @@ enum DungeonID
|
|||
DUNGEON_MT_FARAWAY = 60,
|
||||
DUNGEON_D61 = 61,
|
||||
DUNGEON_PURITY_FOREST = 62,
|
||||
|
||||
DUNGEON_OUT_ON_RESCUE = 63,
|
||||
DUNGEON_JOIN_LOCATION_LEADER = 64, // Displays as "???".
|
||||
DUNGEON_JOIN_LOCATION_PARTNER = 65, // Displays as "Tiny Woods".
|
||||
|
|
|
|||
|
|
@ -1,7 +1,68 @@
|
|||
#ifndef GUARD_CONSTANTS_EVENT_FLAG_H
|
||||
#define GUARD_CONSTANTS_EVENT_FLAG_H
|
||||
|
||||
enum FlagCalcOperation {
|
||||
enum MainQuest
|
||||
{
|
||||
// SCENARIO_MAIN:
|
||||
|
||||
QUEST_SET_TEAM_NAME,
|
||||
QUEST_UNK1, // Rescue dungeon related. For some reason it scans all rescue dungeons.
|
||||
QUEST_CAN_ACCESS_JOBS,
|
||||
QUEST_CAN_RECRUIT,
|
||||
QUEST_SQUARE_ASLEEP,
|
||||
QUEST_UNK5, // Run away related? It disallows "friend rescue" features.
|
||||
QUEST_REACHED_POSTGAME,
|
||||
QUEST_UNLOCKED_EVOLUTIONS,
|
||||
QUEST_CAN_CHANGE_LEADER,
|
||||
QUEST_CAN_DEPOSIT_PARTNER,
|
||||
QUEST_UNK10, // Dojo-related
|
||||
QUEST_UNK11,
|
||||
QUEST_UNK12, // Music-related
|
||||
QUEST_IN_WORLD_CALAMITY,
|
||||
QUEST_MAZE_14,
|
||||
QUEST_MAZE_15,
|
||||
QUEST_LEGEND_ZAPDOS,
|
||||
QUEST_LEGEND_MOLTRES,
|
||||
QUEST_LEGEND_ARTICUNO,
|
||||
QUEST_LEGEND_GROUDON,
|
||||
QUEST_LEGEND_RAYQUAZA,
|
||||
|
||||
// SCENARIO_SUB2:
|
||||
|
||||
QUEST_LEGEND_KYOGRE,
|
||||
QUEST_LEGEND_LUGIA,
|
||||
|
||||
// SCENARIO_SUB3:
|
||||
|
||||
QUEST_LEGEND_DEOXYS,
|
||||
|
||||
// SCENARIO_SUB4:
|
||||
|
||||
QUEST_LEGEND_HO_OH,
|
||||
|
||||
// SCENARIO_SUB5:
|
||||
|
||||
QUEST_LEGEND_MEWTWO,
|
||||
|
||||
// SCENARIO_SUB7:
|
||||
|
||||
QUEST_LEGEND_MEW,
|
||||
|
||||
// RESCUE_SCENARIO_CONQUEST_LIST:
|
||||
|
||||
QUEST_LEGEND_CELEBI,
|
||||
|
||||
// Special check:
|
||||
|
||||
QUEST_LUCARIO_RANK,
|
||||
|
||||
// TRAINING_CONQUEST_LIST:
|
||||
|
||||
QUEST_COMPLETED_ALL_MAZES,
|
||||
};
|
||||
|
||||
enum FlagCalcOperation
|
||||
{
|
||||
CALC_SET,
|
||||
CALC_SUB,
|
||||
CALC_ADD,
|
||||
|
|
@ -16,7 +77,8 @@ enum FlagCalcOperation {
|
|||
CALC_RANDOM,
|
||||
};
|
||||
|
||||
enum FlagJudgeOperation {
|
||||
enum FlagJudgeOperation
|
||||
{
|
||||
JUDGE_TRUE,
|
||||
JUDGE_FALSE,
|
||||
JUDGE_EQ,
|
||||
|
|
@ -30,7 +92,245 @@ enum FlagJudgeOperation {
|
|||
JUDGE_BIT_SET,
|
||||
};
|
||||
|
||||
enum ScriptVarId {
|
||||
enum StartModeVal
|
||||
{
|
||||
STARTMODE_NEW_GAME,
|
||||
STARTMODE_CONTINUE_GAME,
|
||||
STARTMODE_GROUND, // Overworld
|
||||
STARTMODE_3,
|
||||
STARTMODE_FRIEND_AREAS,
|
||||
STARTMODE_DUNGEON_FROM_WORLD_MAP,
|
||||
STARTMODE_6,
|
||||
STARTMODE_CONTINUE_QUICKSAVE,
|
||||
STARTMODE_8,
|
||||
STARTMODE_DUNGEON_WON,
|
||||
STARTMODE_10,
|
||||
STARTMODE_11,
|
||||
STARTMODE_DUNGEON_LOST,
|
||||
};
|
||||
|
||||
// SCENARIO_MAIN:
|
||||
// 0, 0 = New game
|
||||
// 1, 0 = ???
|
||||
// 2, 0 = ???
|
||||
// 2, 1 = ???
|
||||
// 2, 2 = ??? Set upon exiting Tiny Woods.
|
||||
// 3, 0 = Chose team name. See QUEST_SET_TEAM_NAME. Set in EVENT_M01E01A_L003
|
||||
// 3, 1 = ???
|
||||
// 3, 2 = ???
|
||||
// 3, 3 = ??? Bed tutorial related.
|
||||
// 3, 4 = ??? See QUEST_UNK1 also
|
||||
// 3, 5 = ???
|
||||
// 3, 6 = ??? Thunderwave cave related
|
||||
// 4, 0 = ??? Set upon exiting Thunderwave Cave.
|
||||
// 4, 1 = ???
|
||||
// 4, 2 = ???
|
||||
// 4, 3 = ???
|
||||
// 4, 4 = ??? See QUEST_CAN_ACCESS_JOBS also
|
||||
// 4, 5 = ??? Mt Steel related
|
||||
// 4, 6 = ???
|
||||
// 4, 7 = ???
|
||||
// 4, 8 = ???
|
||||
// 5, 0 = ???
|
||||
// 5, 1 = ??? See QUEST_CAN_RECRUIT also
|
||||
// 5, 2 = ???
|
||||
// 5, 3 = ???
|
||||
// 5, 4 = ???
|
||||
// 5, 5 = ??? See QUEST_UNK10 and QUEST_UNK11 also
|
||||
// 5, 6 = ???
|
||||
// 5, 7 = ??? See QUEST_MAZE_14 also
|
||||
// 5, 8 = ???
|
||||
// 5, 9 = ??? Sinister Woods related
|
||||
// 5, 10 = ???
|
||||
// 5, 11 = ???
|
||||
// 6, 0 = ???
|
||||
// 6, 1 = ???
|
||||
// 6, 2 = ???
|
||||
// 6, 3 = ??? Silent Chasm related
|
||||
// 7, 0 = ???
|
||||
// 7, 1 = ???
|
||||
// 7, 2 = ???
|
||||
// 7, 3 = ??? Mt Thunder related
|
||||
// 7, 4 = ???
|
||||
// 7, 5 = ???
|
||||
// 8, 0 = ??? See QUEST_LEGEND_ZAPDOS also
|
||||
// 8, 1 = ???
|
||||
// 8, 2 = ???
|
||||
// 8, 3 = ??? Great Canyon related
|
||||
// 8, 4 = ???
|
||||
// 9, 0 = ???
|
||||
// 9, 1 = ???
|
||||
// 9, 2 = ???
|
||||
// 9, 3 = ???
|
||||
// 9, 4 = ???
|
||||
// 9, 5 = ???
|
||||
// 10, 0 = ???
|
||||
// 10, 1 = ???
|
||||
// 10, 2 = ???
|
||||
// 10, 3 = ???
|
||||
// 11, 0 = Fugitive story begins. See QUEST_SQUARE_ASLEEP also
|
||||
// 11, 1 = ???
|
||||
// 11, 2 = ??? See QUEST_UNK12 also
|
||||
// 11, 3 = ??? See QUEST_UNK12 also
|
||||
// 11, 4 = ??? See QUEST_UNK5 also
|
||||
// 11, 5 = ???
|
||||
// 12, 0 = Lapis Cave completed? Mt Blaze story begins?
|
||||
// 12, 1 = ???
|
||||
// 12, 2 = ???
|
||||
// 12, 3 = ???
|
||||
// 12, 4 = ???
|
||||
// 13, 0 = Mt Blaze completed. Frosty Grotto story begins. See QUEST_SQUARE_ASLEEP and QUEST_LEGEND_MOLTRES also
|
||||
// 13, 1 = ???
|
||||
// 13, 2 = ???
|
||||
// 13, 3 = ???
|
||||
// 13, 4 = ???
|
||||
// 14, 0 = Frosty Grotto completed. Mt Freeze story begins? See QUEST_LEGEND_ARTICUNO also
|
||||
// 14, 1 = ???
|
||||
// 14, 2 = ???
|
||||
// 14, 3 = ???
|
||||
// 15, 0 = Mt Freeze completed? See QUEST_UNK5 and QUEST_MAZE_14 also
|
||||
// 15, 1 = ???
|
||||
// 15, 2 = ???
|
||||
// 15, 3 = ???
|
||||
// 15, 4 = ???
|
||||
// 15, 5 = ??? Uproar Forest related
|
||||
// 15, 6 = ???
|
||||
// 15, 7 = ???
|
||||
// 15, 8 = ???
|
||||
// 15, 9 = ???
|
||||
// 15, 10 = ??? Magma Cavern related
|
||||
// 15, 11 = ??? Magma Cavern related
|
||||
// 15, 12 = ???
|
||||
// 16, 0 = Magma Cavern completed. Sky Tower story begins. See QUEST_LEGEND_GROUDON also
|
||||
// 16, 1 = ???
|
||||
// 16, 2 = World calamity music is forced. Partner awaits in Pokémon Square for you to confirm you're ready for Sky Tower. You begin dreaming with Gardevoir and Gengar is there. See QUEST_IN_WORLD_CALAMITY
|
||||
// 16, 3 = ???
|
||||
// 16, 4 = ??? Sky Tower related
|
||||
// 16, 5 = ???
|
||||
// 16, 6 = ???
|
||||
// 17, 0 = Sky Tower completed. See QUEST_LEGEND_RAYQUAZA also
|
||||
// 17, 1 = ???
|
||||
// 18, 0 = ??? See QUEST_REACHED_POSTGAME also
|
||||
// 18, 1 = ???
|
||||
// 18, 2 = ??? See QUEST_UNLOCKED_EVOLUTIONS also
|
||||
// 18, 3 = ??? See QUEST_CAN_CHANGE_LEADER also
|
||||
// 18, 4 = ???
|
||||
// 19, 0 = ??? See QUEST_CAN_DEPOSIT_PARTNER also
|
||||
// 19, 1 = ???
|
||||
// 19, 2 = ???
|
||||
// 20, 1 = ???
|
||||
// 20, 2 = ???
|
||||
// 21, 1 = ???
|
||||
// 21, 2 = ???
|
||||
// 22, 1 = ???
|
||||
// 22, 2 = ???
|
||||
// 23, 1 = ???
|
||||
// 23, 2 = ???
|
||||
// 24, 1 = ???
|
||||
// 24, 2 = ???
|
||||
// 25, 1 = ???
|
||||
// 25, 2 = ???
|
||||
// 26, 1 = ???
|
||||
// 26, 2 = ???
|
||||
// 27, 1 = ??? Set from EVENT_DIVIDE_AFTER
|
||||
// 27, 2 = ???
|
||||
// 58, 1 = ???
|
||||
|
||||
// SCENARIO_SUB1:
|
||||
// 29, 1 = Mankey Quest activated.
|
||||
// 29, 2 = ??? Uproar Forest related
|
||||
// 29, 3 = ??? Uproar Forest related
|
||||
// 30, 0 = Mankey gang brought to base?
|
||||
// 30, 2 = Enough chestnuts collected to complete team base renovation.
|
||||
// 31, 0 = ??? Uproar Forest related
|
||||
// 31, 1 = ??? Howling Forest related
|
||||
// 31, 2 = ??? Howling Forest related
|
||||
// 31, 3 = ???
|
||||
// 32, 0 = ??? Howling Forest related
|
||||
// 32, 2 = Smeargle cannot join because its friend area is full.
|
||||
// 32, 3 = Smeargle joined.
|
||||
|
||||
// SCENARIO_SUB2:
|
||||
// 33, 1 = Stormy Sea story activated.
|
||||
// 33, 2 = Heard Lombre's story about the Stormy Sea.
|
||||
// 33, 3 = Ready to speak to Whiscash about Stormy Sea.
|
||||
// 33, 4 = Stormy Sea unlocked from Whiscash.
|
||||
// 33, 5 = ???
|
||||
// 34, 0 = Stormy Sea completed. See QUEST_LEGEND_KYOGRE
|
||||
// 34, 1 = ???
|
||||
// 34, 2 = ??? Legendary Island friend area related
|
||||
// 34, 3 = ??? Silver Trench related
|
||||
// 34, 5 = ???
|
||||
// 35, 0 = Silver Trench completed. See QUEST_LEGEND_LUGIA
|
||||
|
||||
// SCENARIO_SUB3:
|
||||
// 36, 1 = Meteor Cave story activated.
|
||||
// 36, 2 = ??? Meteor Cave related
|
||||
// 36, 3 = ???
|
||||
// 37, 0 = Meteor Cave completed. See QUEST_LEGEND_DEOXYS
|
||||
|
||||
// SCENARIO_SUB4:
|
||||
// 38, 1 = Ho-Oh story activated.
|
||||
// 38, 2 = Xatu awaits for Ho-Oh story.
|
||||
// 39, 0 = Xatu met for Ho-Oh story. Fiery Field opens.
|
||||
// 39, 3 = ???
|
||||
// 40, 0 = Fiery Field completed. Lightning Field opens.
|
||||
// 40, 3 = ???
|
||||
// 41, 0 = Lightning Field completed. Northwind Field opens.
|
||||
// 41, 3 = ???
|
||||
// 42, 0 = Northwind Field completed. Mt Faraway opens.
|
||||
// 42, 3 = ???
|
||||
// 43, 0 = Mt Faraway completed. See QUEST_LEGEND_HO_OH
|
||||
// 43, 2 = ??? RESCUE_DUNGEON_GREAT_CANYON_2 and Fields/MtFaraway related
|
||||
|
||||
// SCENARIO_SUB5:
|
||||
// 44, 1 = Western Cave story activated.
|
||||
// 44, 2 = Western Cave opens.
|
||||
// 44, 3 = ???
|
||||
// 45, 0 = Western Cave completed. See QUEST_LEGEND_MEWTWO
|
||||
|
||||
// SCENARIO_SUB6:
|
||||
// 46, 1 = Latios/Latias story activated.
|
||||
// 46, 2 = Northern Range opens.
|
||||
// 46, 3 = ???
|
||||
// 47, 2 = Pitfall Valley opens.
|
||||
// 47, 3 = ???
|
||||
// 48, 0 = Latios/Latias story completed.
|
||||
|
||||
// SCENARIO_SUB7:
|
||||
// 49, 1 = Buried Relic story activated.
|
||||
// 49, 2 = Read Buried Relic news
|
||||
// 49, 3 = Buried Relic opens.
|
||||
// 49, 4 = ???
|
||||
// 50, 0 = Buried Relic completed. See QUEST_LEGEND_MEW
|
||||
|
||||
// SCENARIO_SUB8:
|
||||
// 51, 1 = Wish Cave story activated.
|
||||
// 51, 2 = ???
|
||||
// 51, 3 = ???
|
||||
// 51, 4 = ???
|
||||
// 51, 5 = ???
|
||||
// 51, 6 = ???
|
||||
// 51, 7 = ??? Wish Cave related
|
||||
// 51, 8 = ??? Wish Cave related
|
||||
// 51, 9 = ??? Set upon exiting Wish Cave.
|
||||
// 52, 0 = Wish Cave completed.
|
||||
|
||||
// SCENARIO_SUB9:
|
||||
// 53, 1 = Curse lifting story activated.
|
||||
// 53, 2 = ???
|
||||
// 53, 3 = ???
|
||||
// 53, 4 = ??? Genger Mt Freeze related
|
||||
// 53, 5 = ???
|
||||
// 53, 6 = ??? RESCUE_DUNGEON_MT_FREEZE_2 related
|
||||
// 54, 0 = ??? RESCUE_DUNGEON_MT_FREEZE_2 related
|
||||
// 54, 2 = ??? Murky Cave related (EVENT_S09E01B_L001)
|
||||
// 54, 4 = ??? Set upon exiting Murky Cave.
|
||||
// 55, 2 = ??? RESCUE_DUNGEON_MT_FREEZE_2 and Murky Cave related
|
||||
// 55, 3 = Gardevoir recruited
|
||||
|
||||
enum ScriptVarId
|
||||
{
|
||||
/* 0x00 */ VERSION,
|
||||
/* 0x01 */ CONDITION,
|
||||
/* 0x02 */ SCENARIO_SELECT,
|
||||
|
|
@ -55,7 +355,7 @@ enum ScriptVarId {
|
|||
/* 0x15 */ DUNGEON_ENTER_FREQUENCY,
|
||||
/* 0x16 */ DUNGEON_RESULT,
|
||||
/* 0x17 */ SCRIPT_MODE,
|
||||
/* 0x18 */ START_MODE,
|
||||
/* 0x18 */ START_MODE, // See enum "StartModeVal"
|
||||
/* 0x19 */ CLEAR_COUNT,
|
||||
/* 0x1a */ CONDITION_KIND,
|
||||
/* 0x1b */ WEATHER_KIND,
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@
|
|||
|
||||
enum FixedRoomID
|
||||
{
|
||||
// floorwide fixed rooms
|
||||
FIXED_ROOM_MT_STEEL_SKARMORY = 1,
|
||||
// Floorwide fixed rooms
|
||||
|
||||
FIXED_ROOM_NONE,
|
||||
FIXED_ROOM_MT_STEEL_SKARMORY,
|
||||
FIXED_ROOM_SINISTER_WOODS_TEAM_MEANIES,
|
||||
FIXED_ROOM_MT_THUNDER_PEAK_ZAPDOS,
|
||||
FIXED_ROOM_MT_BLAZE_PEAK_MOLTRES,
|
||||
|
|
@ -30,6 +32,9 @@ enum FixedRoomID
|
|||
FIXED_ROOM_HOWLING_FOREST_SMEARGLE,
|
||||
FIXED_ROOM_PURITY_FOREST_CELEBI,
|
||||
FIXED_ROOM_WISH_CAVE_MEDICHAM,
|
||||
|
||||
// Mazes
|
||||
|
||||
FIXED_ROOM_NORMAL_MAZE_BOSS,
|
||||
FIXED_ROOM_FIRE_MAZE_BOSS,
|
||||
FIXED_ROOM_WATER_MAZE_BOSS,
|
||||
|
|
@ -53,7 +58,9 @@ enum FixedRoomID
|
|||
FIXED_ROOM_TEAM_RUMBLEROCK_BOSS,
|
||||
FIXED_ROOM_RESCUE_TEAM_2_BOSS,
|
||||
FIXED_ROOM_RESCUE_TEAM_MAZE_BOSS,
|
||||
// non-floorwide fixed rooms
|
||||
|
||||
// Non-floorwide fixed rooms
|
||||
|
||||
FIXED_ROOM_WYVERN_HILL_HM_FLY,
|
||||
FIXED_ROOM_SOLAR_CAVE_HM_DIVE,
|
||||
FIXED_ROOM_SOLAR_CAVE_HM_WATERFALL,
|
||||
|
|
@ -75,8 +82,7 @@ enum FixedRoomID
|
|||
|
||||
#define FIRST_DOJO_MAZE_BOSS_ROOM FIXED_ROOM_NORMAL_MAZE_BOSS
|
||||
#define LAST_DOJO_MAZE_BOSS_ROOM FIXED_ROOM_RESCUE_TEAM_MAZE_BOSS
|
||||
#define NUM_MAZE_BOSS_ROOMS LAST_DOJO_MAZE_BOSS_ROOM - FIRST_DOJO_MAZE_BOSS_ROOM
|
||||
#define LAST_FLOORWIDE_FIXED_ROOM FIXED_ROOM_RESCUE_TEAM_MAZE_BOSS
|
||||
#define FIRST_NON_FLOORWIDE_FIXED_ROOM LAST_FLOORWIDE_FIXED_ROOM + 1
|
||||
|
||||
#endif
|
||||
#endif // GUARD_CONSTANTS_FIXED_ROOMS_H
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef GUARD_CONSTANTS_GROUND_MAP_H
|
||||
#define GUARD_CONSTANTS_GROUND_MAP_H
|
||||
|
||||
enum {
|
||||
enum GroundMapID
|
||||
{
|
||||
MAP_SQUARE,
|
||||
MAP_POKEMON_SQUARE,
|
||||
MAP_WHISCASH_POND,
|
||||
|
|
|
|||
|
|
@ -430,6 +430,8 @@
|
|||
#define NUM_MONSTERS MONSTER_JIRACHI
|
||||
#define MONSTER_MAX (MONSTER_RAYQUAZA_CUTSCENE + 1)
|
||||
|
||||
#define MONSTER_FLAGS_U32STORAGE 14
|
||||
|
||||
#define IS_CASTFORM_FORM_MONSTER(id)((id == MONSTER_CASTFORM_SNOWY || id == MONSTER_CASTFORM_SUNNY || id == MONSTER_CASTFORM_RAINY))
|
||||
#define IS_DEOXYS_FORM_MONSTER(id)((id == MONSTER_DEOXYS_ATTACK || id == MONSTER_DEOXYS_DEFENSE || id == MONSTER_DEOXYS_SPEED))
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
enum RescueDungeonId
|
||||
{
|
||||
RESCUE_DUNGEON_INVALID = -1,
|
||||
|
||||
RESCUE_DUNGEON_TINY_WOODS,
|
||||
RESCUE_DUNGEON_THUNDERWAVE_CAVE,
|
||||
RESCUE_DUNGEON_MT_STEEL,
|
||||
|
|
@ -34,6 +36,9 @@ enum RescueDungeonId
|
|||
RESCUE_DUNGEON_WISH_CAVE,
|
||||
RESCUE_DUNGEON_MT_FREEZE_2,
|
||||
RESCUE_DUNGEON_MURKY_CAVE,
|
||||
|
||||
// Non-story rescues:
|
||||
|
||||
RESCUE_DUNGEON_DESERT_REGION,
|
||||
RESCUE_DUNGEON_SOUTHERN_CAVERN,
|
||||
RESCUE_DUNGEON_WYVERN_HILL,
|
||||
|
|
@ -49,7 +54,11 @@ enum RescueDungeonId
|
|||
RESCUE_DUNGEON_REMAINS_ISLAND,
|
||||
RESCUE_DUNGEON_MARVELOUS_SEA,
|
||||
RESCUE_DUNGEON_FANTASY_STRAIT,
|
||||
|
||||
RESCUE_DUNGEON_COUNT,
|
||||
};
|
||||
|
||||
#define MAX_STORY_MISSION RESCUE_DUNGEON_MURKY_CAVE
|
||||
#define NUM_STORY_MISSIONS (MAX_STORY_MISSION + 1)
|
||||
|
||||
#endif // GUARD_CONSTANTS_RESCUE_DUNGEON_ID_H
|
||||
|
|
|
|||
306
include/constants/script_cmd.h
Normal file
306
include/constants/script_cmd.h
Normal file
|
|
@ -0,0 +1,306 @@
|
|||
#ifndef GUARD_CONSTANTS_SCRIPT_CMD_H
|
||||
#define GUARD_CONSTANTS_SCRIPT_CMD_H
|
||||
|
||||
enum ScriptOpID
|
||||
{
|
||||
CMD_BYTE_00, // Corresponds to "None"
|
||||
CMD_BYTE_01,
|
||||
CMD_BYTE_02,
|
||||
CMD_BYTE_03,
|
||||
CMD_BYTE_04,
|
||||
CMD_BYTE_05,
|
||||
CMD_BYTE_06,
|
||||
CMD_BYTE_07,
|
||||
CMD_BYTE_08,
|
||||
CMD_BYTE_09,
|
||||
CMD_BYTE_0A,
|
||||
CMD_BYTE_0B,
|
||||
CMD_BYTE_0C,
|
||||
CMD_BYTE_0D,
|
||||
CMD_BYTE_0E,
|
||||
CMD_BYTE_0F,
|
||||
CMD_BYTE_10,
|
||||
CMD_BYTE_11,
|
||||
CMD_BYTE_12,
|
||||
CMD_BYTE_13,
|
||||
CMD_BYTE_14,
|
||||
CMD_BYTE_15,
|
||||
CMD_BYTE_16,
|
||||
CMD_BYTE_17,
|
||||
CMD_BYTE_18,
|
||||
CMD_BYTE_19,
|
||||
CMD_BYTE_1A,
|
||||
CMD_BYTE_1B,
|
||||
CMD_BYTE_1C,
|
||||
CMD_BYTE_1D,
|
||||
CMD_BYTE_1E,
|
||||
CMD_BYTE_1F,
|
||||
CMD_BYTE_20,
|
||||
CMD_BYTE_21,
|
||||
CMD_BYTE_22,
|
||||
CMD_BYTE_23,
|
||||
CMD_BYTE_24,
|
||||
CMD_BYTE_25,
|
||||
CMD_BYTE_26,
|
||||
CMD_BYTE_27,
|
||||
CMD_BYTE_28,
|
||||
CMD_BYTE_29,
|
||||
CMD_BYTE_2A,
|
||||
CMD_BYTE_2B,
|
||||
CMD_BYTE_2C,
|
||||
CMD_BYTE_2D,
|
||||
CMD_BYTE_2E,
|
||||
CMD_BYTE_2F,
|
||||
CMD_BYTE_30,
|
||||
CMD_BYTE_31,
|
||||
CMD_BYTE_32,
|
||||
CMD_BYTE_33,
|
||||
CMD_BYTE_34,
|
||||
CMD_BYTE_35,
|
||||
CMD_BYTE_36,
|
||||
CMD_BYTE_37,
|
||||
CMD_BYTE_38,
|
||||
CMD_BYTE_39,
|
||||
CMD_BYTE_3A,
|
||||
CMD_BYTE_3B,
|
||||
CMD_BYTE_3C,
|
||||
CMD_BYTE_3D,
|
||||
CMD_BYTE_3E,
|
||||
CMD_BYTE_3F,
|
||||
CMD_BYTE_40,
|
||||
CMD_BYTE_41,
|
||||
CMD_BYTE_42,
|
||||
CMD_BYTE_43,
|
||||
CMD_BYTE_44,
|
||||
CMD_BYTE_45,
|
||||
CMD_BYTE_46,
|
||||
CMD_BYTE_47,
|
||||
CMD_BYTE_48,
|
||||
CMD_BYTE_49,
|
||||
CMD_BYTE_4A,
|
||||
CMD_BYTE_4B,
|
||||
CMD_BYTE_4C,
|
||||
CMD_BYTE_4D,
|
||||
CMD_BYTE_4E,
|
||||
CMD_BYTE_4F,
|
||||
CMD_BYTE_50,
|
||||
CMD_BYTE_51,
|
||||
CMD_BYTE_52,
|
||||
CMD_BYTE_53,
|
||||
CMD_BYTE_54,
|
||||
CMD_BYTE_55,
|
||||
CMD_BYTE_56,
|
||||
CMD_BYTE_57,
|
||||
CMD_BYTE_58,
|
||||
CMD_BYTE_59,
|
||||
CMD_BYTE_5A,
|
||||
CMD_BYTE_5B,
|
||||
CMD_BYTE_5C,
|
||||
CMD_BYTE_5D,
|
||||
CMD_BYTE_5E,
|
||||
CMD_BYTE_5F,
|
||||
CMD_BYTE_60,
|
||||
CMD_BYTE_61,
|
||||
CMD_BYTE_62,
|
||||
CMD_BYTE_63,
|
||||
CMD_BYTE_64,
|
||||
CMD_BYTE_65,
|
||||
CMD_BYTE_66,
|
||||
CMD_BYTE_67,
|
||||
CMD_BYTE_68,
|
||||
CMD_BYTE_69,
|
||||
CMD_BYTE_6A,
|
||||
CMD_BYTE_6B,
|
||||
CMD_BYTE_6C,
|
||||
CMD_BYTE_6D,
|
||||
CMD_BYTE_6E,
|
||||
CMD_BYTE_6F,
|
||||
CMD_BYTE_70,
|
||||
CMD_BYTE_71,
|
||||
CMD_BYTE_72,
|
||||
CMD_BYTE_73,
|
||||
CMD_BYTE_74,
|
||||
CMD_BYTE_75,
|
||||
CMD_BYTE_76,
|
||||
CMD_BYTE_77,
|
||||
CMD_BYTE_78,
|
||||
CMD_BYTE_79,
|
||||
CMD_BYTE_7A,
|
||||
CMD_BYTE_7B,
|
||||
CMD_BYTE_7C,
|
||||
CMD_BYTE_7D,
|
||||
CMD_BYTE_7E,
|
||||
CMD_BYTE_7F,
|
||||
CMD_BYTE_80,
|
||||
CMD_BYTE_81,
|
||||
CMD_BYTE_82,
|
||||
CMD_BYTE_83,
|
||||
CMD_BYTE_84,
|
||||
CMD_BYTE_85,
|
||||
CMD_BYTE_86,
|
||||
CMD_BYTE_87,
|
||||
CMD_BYTE_88,
|
||||
CMD_BYTE_89,
|
||||
CMD_BYTE_8A,
|
||||
CMD_BYTE_8B,
|
||||
CMD_BYTE_8C,
|
||||
CMD_BYTE_8D,
|
||||
CMD_BYTE_8E,
|
||||
CMD_BYTE_8F,
|
||||
CMD_BYTE_90,
|
||||
CMD_BYTE_91,
|
||||
CMD_BYTE_92,
|
||||
CMD_BYTE_93,
|
||||
CMD_BYTE_94,
|
||||
CMD_BYTE_95,
|
||||
CMD_BYTE_96,
|
||||
CMD_BYTE_97,
|
||||
CMD_BYTE_98,
|
||||
CMD_BYTE_99,
|
||||
CMD_BYTE_9A,
|
||||
CMD_BYTE_9B,
|
||||
CMD_BYTE_9C,
|
||||
CMD_BYTE_9D,
|
||||
CMD_BYTE_9E,
|
||||
CMD_BYTE_9F,
|
||||
CMD_BYTE_A0,
|
||||
CMD_BYTE_A1,
|
||||
CMD_BYTE_A2,
|
||||
CMD_BYTE_A3,
|
||||
CMD_BYTE_A4,
|
||||
CMD_BYTE_A5,
|
||||
CMD_BYTE_A6,
|
||||
CMD_BYTE_A7,
|
||||
CMD_BYTE_A8,
|
||||
CMD_BYTE_A9,
|
||||
CMD_BYTE_AA,
|
||||
CMD_BYTE_AB,
|
||||
CMD_BYTE_AC,
|
||||
CMD_BYTE_AD,
|
||||
CMD_BYTE_AE,
|
||||
CMD_BYTE_AF,
|
||||
CMD_BYTE_B0,
|
||||
CMD_BYTE_B1,
|
||||
CMD_BYTE_B2,
|
||||
CMD_BYTE_B3,
|
||||
CMD_BYTE_B4,
|
||||
CMD_BYTE_B5,
|
||||
CMD_BYTE_B6,
|
||||
CMD_BYTE_B7,
|
||||
CMD_BYTE_B8,
|
||||
CMD_BYTE_B9,
|
||||
CMD_BYTE_BA,
|
||||
CMD_BYTE_BB,
|
||||
CMD_BYTE_BC,
|
||||
CMD_BYTE_BD,
|
||||
CMD_BYTE_BE,
|
||||
CMD_BYTE_BF,
|
||||
CMD_BYTE_C0,
|
||||
CMD_BYTE_C1,
|
||||
CMD_BYTE_C2,
|
||||
CMD_BYTE_C3,
|
||||
CMD_BYTE_C4,
|
||||
CMD_BYTE_C5,
|
||||
CMD_BYTE_C6,
|
||||
CMD_BYTE_C7,
|
||||
CMD_BYTE_C8,
|
||||
CMD_BYTE_C9,
|
||||
CMD_BYTE_CA,
|
||||
CMD_BYTE_CB,
|
||||
CMD_BYTE_CC,
|
||||
CMD_BYTE_CD,
|
||||
CMD_BYTE_CE,
|
||||
CMD_BYTE_CF,
|
||||
CMD_BYTE_D0,
|
||||
CMD_BYTE_D1,
|
||||
CMD_BYTE_D2,
|
||||
CMD_BYTE_D3,
|
||||
CMD_BYTE_D4,
|
||||
CMD_BYTE_D5,
|
||||
CMD_BYTE_D6,
|
||||
CMD_BYTE_D7,
|
||||
CMD_BYTE_D8,
|
||||
CMD_BYTE_D9,
|
||||
CMD_BYTE_DA,
|
||||
CMD_BYTE_DB,
|
||||
CMD_BYTE_DC,
|
||||
CMD_BYTE_DD,
|
||||
CMD_BYTE_DE,
|
||||
CMD_BYTE_DF,
|
||||
CMD_BYTE_E0,
|
||||
CMD_BYTE_E1,
|
||||
CMD_BYTE_E2,
|
||||
CMD_BYTE_E3,
|
||||
CMD_BYTE_E4,
|
||||
CMD_BYTE_E5,
|
||||
CMD_BYTE_E6,
|
||||
CMD_BYTE_E7,
|
||||
CMD_BYTE_E8,
|
||||
CMD_BYTE_E9,
|
||||
CMD_BYTE_EA,
|
||||
CMD_BYTE_EB,
|
||||
CMD_BYTE_EC,
|
||||
CMD_BYTE_ED,
|
||||
CMD_BYTE_EE,
|
||||
CMD_BYTE_EF,
|
||||
CMD_BYTE_F0,
|
||||
CMD_BYTE_F1,
|
||||
CMD_BYTE_F2,
|
||||
CMD_BYTE_F3,
|
||||
CMD_BYTE_F4,
|
||||
CMD_BYTE_F5,
|
||||
CMD_BYTE_F6,
|
||||
};
|
||||
|
||||
enum SpecialTextKind
|
||||
{
|
||||
SPECIAL_TEXT_UNK_0,
|
||||
SPECIAL_TEXT_UNK_1,
|
||||
SPECIAL_TEXT_WAITING,
|
||||
SPECIAL_TEXT_UNK_3,
|
||||
SPECIAL_TEXT_PLAYER_NAME_INPUT,
|
||||
SPECIAL_TEXT_TEAM_NAME_INPUT,
|
||||
SPECIAL_TEXT_PASSWORD_INPUT,
|
||||
SPECIAL_TEXT_FRIEND_MENU,
|
||||
SPECIAL_TEXT_MENU,
|
||||
SPECIAL_TEXT_YES_NO_WITH_LARGE_BOX,
|
||||
SPECIAL_TEXT_LARGE_TEXT_BOX,
|
||||
SPECIAL_TEXT_BUY_FRIEND_AREAS,
|
||||
SPECIAL_TEXT_DUNGEON_LIST,
|
||||
SPECIAL_TEXT_DOJO_LIST,
|
||||
SPECIAL_TEXT_SAVE_1,
|
||||
SPECIAL_TEXT_SAVE_2,
|
||||
SPECIAL_TEXT_STORAGE_WITH_DIALOG,
|
||||
SPECIAL_TEXT_STORAGE,
|
||||
SPECIAL_TEXT_UNK_12,
|
||||
SPECIAL_TEXT_BANK,
|
||||
SPECIAL_TEXT_UNK_14,
|
||||
SPECIAL_TEXT_UNK_15,
|
||||
SPECIAL_TEXT_FRIEND_AREA_SELECT,
|
||||
SPECIAL_TEXT_GREEN_KECLEON_SHOP,
|
||||
SPECIAL_TEXT_PURPLE_KECLEON_SHOP,
|
||||
SPECIAL_TEXT_LINK_SHOP,
|
||||
SPECIAL_TEXT_LUMINOUS_CAVE,
|
||||
SPECIAL_TEXT_FRIEND_SHOP,
|
||||
SPECIAL_TEXT_FRIEND_RESCUE,
|
||||
SPECIAL_TEXT_UNK_1D,
|
||||
SPECIAL_TEXT_THANK_YOU_MAIL,
|
||||
SPECIAL_TEXT_PPO_HELP_COUNTER,
|
||||
SPECIAL_TEXT_BULLETIN_BOARD_JOBS,
|
||||
SPECIAL_TEXT_BULLETIN_BOARD,
|
||||
SPECIAL_TEXT_UNK_22,
|
||||
SPECIAL_TEXT_UNK_23,
|
||||
SPECIAL_TEXT_DOJO_ENTER,
|
||||
SPECIAL_TEXT_DOJO_SUCCESS,
|
||||
SPECIAL_TEXT_DOJO_FAILURE,
|
||||
SPECIAL_TEXT_DOJO_ALL_CLEARED,
|
||||
SPECIAL_TEXT_PERSONALITY_QUIZ,
|
||||
SPECIAL_TEXT_UNK_29,
|
||||
SPECIAL_TEXT_SCRIPTING_MENU,
|
||||
SPECIAL_TEXT_ITEM_REWARD,
|
||||
SPECIAL_TEXT_UNK_2C,
|
||||
SPECIAL_TEXT_TOOL_BOX,
|
||||
SPECIAL_TEXT_CREDITS_NAME,
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_SCRIPT_CMD_H
|
||||
|
|
@ -24,7 +24,7 @@ enum ScriptDungeonId
|
|||
SCRIPT_DUNGEON_MAGMA_CAVERN_PIT,
|
||||
SCRIPT_DUNGEON_SKY_TOWER,
|
||||
SCRIPT_DUNGEON_SKY_TOWER_SUMMIT,
|
||||
SCRIPT_DUNGEON_21,
|
||||
SCRIPT_DUNGEON_DUMMY,
|
||||
SCRIPT_DUNGEON_UPROAR_FOREST,
|
||||
SCRIPT_DUNGEON_HOWLING_FOREST,
|
||||
SCRIPT_DUNGEON_STORMY_SEA,
|
||||
|
|
@ -43,6 +43,7 @@ enum ScriptDungeonId
|
|||
SCRIPT_DUNGEON_MT_FREEZE_2,
|
||||
SCRIPT_DUNGEON_MT_FREEZE_PEAK_2,
|
||||
SCRIPT_DUNGEON_MURKY_CAVE,
|
||||
|
||||
SCRIPT_DUNGEON_DESERT_REGION,
|
||||
SCRIPT_DUNGEON_SOUTHERN_CAVERN,
|
||||
SCRIPT_DUNGEON_WYVERN_HILL,
|
||||
|
|
@ -58,6 +59,7 @@ enum ScriptDungeonId
|
|||
SCRIPT_DUNGEON_REMAINS_ISLAND,
|
||||
SCRIPT_DUNGEON_MARVELOUS_SEA,
|
||||
SCRIPT_DUNGEON_FANTASY_STRAIT,
|
||||
|
||||
SCRIPT_DUNGEON_NORMAL_MAZE_2,
|
||||
SCRIPT_DUNGEON_FIRE_MAZE,
|
||||
SCRIPT_DUNGEON_WATER_MAZE,
|
||||
|
|
@ -83,6 +85,9 @@ enum ScriptDungeonId
|
|||
SCRIPT_DUNGEON_RESCUE_TEAM_MAZE,
|
||||
SCRIPT_DUNGEON_ROCK_PATH,
|
||||
SCRIPT_DUNGEON_SNOW_PATH,
|
||||
|
||||
// OutOnRescue dungeons
|
||||
|
||||
SCRIPT_DUNGEON_80,
|
||||
SCRIPT_DUNGEON_81,
|
||||
SCRIPT_DUNGEON_82,
|
||||
|
|
|
|||
484
include/constants/script_id.h
Normal file
484
include/constants/script_id.h
Normal file
|
|
@ -0,0 +1,484 @@
|
|||
#ifndef GUARD_CONSTANTS_SCRIPT_ID_H
|
||||
#define GUARD_CONSTANTS_SCRIPT_ID_H
|
||||
|
||||
enum ScriptID
|
||||
{
|
||||
END_TALK,
|
||||
WAIT_END_TALK_FUNC,
|
||||
WAIT_END_EVENT_FUNC,
|
||||
WAIT_START_FUNC,
|
||||
INCOMPLETE_TALK,
|
||||
NORMAL_WAIT_END_TALK,
|
||||
LIVES_REPLY_NORMAL,
|
||||
LIVES_REPLY,
|
||||
OBJECT_REPLY_NORMAL,
|
||||
EXAMINE_MISS,
|
||||
ENTER_WAIT_FUNC,
|
||||
UNIT_TALK,
|
||||
HABITAT_TALK,
|
||||
HABITAT_TALK_S01E02A,
|
||||
HABITAT_MOVE1,
|
||||
HABITAT_MOVE2,
|
||||
HABITAT_MOVE_PAUSE,
|
||||
HABITAT_MOVE_STAY_FIX,
|
||||
HABITAT_MOVE_STAY_TURN,
|
||||
LIVES_MOVE_NORMAL,
|
||||
LIVES_MOVE_CHANGE,
|
||||
OBJECT_MOVE_NORMAL,
|
||||
OBJECT_MOVE_CHANGE,
|
||||
EFFECT_MOVE_NORMAL,
|
||||
EFFECT_MOVE_CHANGE,
|
||||
MOVE_INIT,
|
||||
MOVE_PAUSE,
|
||||
MOVE_STAY,
|
||||
MOVE_SLEEP,
|
||||
MOVE_RANDOM,
|
||||
MOVE_BOY,
|
||||
MOVE_GIRL,
|
||||
WAKEUP_FUNC,
|
||||
LOOK_AROUND_FUNC,
|
||||
LOOK_AROUND_DOWN_FUNC,
|
||||
LOOK_AROUND_RIGHT_FUNC,
|
||||
LOOK_AROUND_LEFT_FUNC,
|
||||
JUMP_HAPPY_FUNC,
|
||||
JUMP_SURPRISE_FUNC,
|
||||
JUMP_ANGRY_FUNC,
|
||||
NOTICE_FUNC,
|
||||
QUESTION_FUNC,
|
||||
SWEAT_FUNC,
|
||||
SHOCK_FUNC,
|
||||
SPREE_START_FUNC,
|
||||
SPREE_END_FUNC,
|
||||
SMILE_START_FUNC,
|
||||
SMILE_END_FUNC,
|
||||
ANGRY_START_FUNC,
|
||||
ANGRY_END_FUNC,
|
||||
MOVE_PLAZA_SLEEP,
|
||||
INIT_PLAZA_SLEEP_STAY_FUNC,
|
||||
INIT_PLAZA_SLEEP_TALK_FUNC,
|
||||
INIT_SLEEP_FUNC,
|
||||
INIT_BASE_FUNC,
|
||||
INIT_DEBUG_HABITAT,
|
||||
|
||||
NORMAL_MESSAGE,
|
||||
NORMAL_EVENT,
|
||||
|
||||
NORMAL_CAMERA,
|
||||
// Disperses team members to their friend areas and alerts the player.
|
||||
DISMISSAL_SALLY_MEMBER_FUNC,
|
||||
// Seems identical to DISMISSAL_SALLY_MEMBER_FUNC
|
||||
DISMISSAL_SALLY_MEMBER2_FUNC,
|
||||
// Seems identical to DISMISSAL_SALLY_MEMBER_FUNC
|
||||
DISMISSAL_SALLY_MEMBER3_FUNC,
|
||||
// Seems identical to DISMISSAL_SALLY_MEMBER_FUNC
|
||||
DISMISSAL_SALLY_MEMBER4_FUNC,
|
||||
// Save prompt followed by SPECIAL_TEXT_SAVE_1
|
||||
NEXT_SAVE_FUNC,
|
||||
// Save prompt followed by SPECIAL_TEXT_SAVE_2
|
||||
NEXT_SAVE2_FUNC,
|
||||
SAVE_POINT,
|
||||
WAREHOUSE_POINT,
|
||||
// Save and storage statue before fugitive dungeons.
|
||||
SAVE_AND_WAREHOUSE_POINT,
|
||||
WORLD_MAP_POINT,
|
||||
FORMATION_HERO,
|
||||
EVOLUTION_HERO,
|
||||
WARP_LIVES_START,
|
||||
WARP_LIVES_START2,
|
||||
WARP_LIVES_START3,
|
||||
WARP_LIVES_ARRIVE,
|
||||
WARP_LIVES_ARRIVE2,
|
||||
WARP_LIVES_ARRIVE3,
|
||||
LIVES_WARP_START_FUNC,
|
||||
LIVES_WARP_START2_FUNC,
|
||||
LIVES_WARP_START3_FUNC,
|
||||
LIVES_WARP_START_SUB,
|
||||
LIVES_WARP_ARRIVE_FUNC,
|
||||
LIVES_WARP_ARRIVE2_FUNC,
|
||||
LIVES_WARP_ARRIVE3_FUNC,
|
||||
LIVES_WARP_ARRIVE_SUB,
|
||||
GET_ITEM_FUNC,
|
||||
GET_ITEM_WAIT_FUNC,
|
||||
GET_ITEM2_FUNC,
|
||||
GET_ITEM2_WAIT_FUNC,
|
||||
JOIN_FUNC,
|
||||
LODGE_START_FUNC,
|
||||
LODGE_WAIT_FUNC,
|
||||
LODGE_END_FUNC,
|
||||
LODGE_SOUND_FUNC,
|
||||
SAVE_START_FUNC,
|
||||
SAVE_WAIT_FUNC,
|
||||
SAVE_END_FUNC,
|
||||
SAVE_SOUND_FUNC,
|
||||
EFFECT_TEST1,
|
||||
EFFECT_TEST2,
|
||||
EFFECT_MOVE_DIVE,
|
||||
EFFECT_MOVE_WAVE,
|
||||
// Some general purpose script helper.
|
||||
EVENT_DIVIDE,
|
||||
EVENT_DIVIDE_NEXT,
|
||||
EVENT_DIVIDE_INIT_FUNC,
|
||||
EVENT_DIVIDE_NEXT_DAY_FUNC,
|
||||
EVENT_DIVIDE_NEXT_DAY2_FUNC,
|
||||
EVENT_DIVIDE_FIRST,
|
||||
EVENT_DIVIDE_SECOND,
|
||||
EVENT_DIVIDE_AFTER,
|
||||
EVENT_DIVIDE_WARP_LOCK_FUNC,
|
||||
EVENT_RESCUE_ENTER_CHECK,
|
||||
EVENT_RESCUE,
|
||||
DEBUG_SCRIPT,
|
||||
DEMO_CANCEL,
|
||||
DEMO_01,
|
||||
DEMO_02,
|
||||
DEMO_03,
|
||||
DEMO_04,
|
||||
EVENT_M00E01A_L001,
|
||||
EVENT_M01E01A_L001,
|
||||
EVENT_M01E01A_L002,
|
||||
EVENT_M01E01A_L003,
|
||||
EVENT_M01E02A_L001,
|
||||
EVENT_M01E02A_L001B,
|
||||
EVENT_M01E02A_L001C,
|
||||
EVENT_M01E02A_L002,
|
||||
EVENT_M01E02A_L003,
|
||||
EVENT_M01E02A_L004,
|
||||
EVENT_M01E02A_L005,
|
||||
// Completes the Thunderwave Cave Magnemite story.
|
||||
EVENT_M01E02A_L006,
|
||||
EVENT_M01E02B_L001,
|
||||
EVENT_M01E02B_L002,
|
||||
EVENT_M01E02B_L003,
|
||||
EVENT_M01E02B_L004,
|
||||
EVENT_M01E02B_L004B,
|
||||
EVENT_M01E02B_L005,
|
||||
EVENT_M01E02B_L006,
|
||||
EVENT_M01E02B_L007,
|
||||
EVENT_M01E02B_L008,
|
||||
EVENT_M01E03A_L000,
|
||||
EVENT_M01E03A_L001,
|
||||
EVENT_M01E03A_L002,
|
||||
EVENT_M01E03A_L003,
|
||||
EVENT_M01E03A_L004,
|
||||
EVENT_M01E03A_L005,
|
||||
EVENT_M01E03A_L006,
|
||||
EVENT_M01E03A_L007,
|
||||
EVENT_M01E03A_L008,
|
||||
EVENT_M01E03A_L009,
|
||||
EVENT_M01E03A_L010,
|
||||
EVENT_M01E03A_L011,
|
||||
EVENT_M01E04A_L000,
|
||||
EVENT_M01E04A_L001,
|
||||
EVENT_M01E04A_L002,
|
||||
EVENT_M01E04A_L003,
|
||||
EVENT_M01E04A_L004,
|
||||
EVENT_M01E04A_L005,
|
||||
EVENT_M01E04A_L006,
|
||||
EVENT_M01E04B_L000,
|
||||
EVENT_M01E04B_L001,
|
||||
EVENT_M01E04B_L002,
|
||||
EVENT_M01E04B_L003,
|
||||
EVENT_M01E04B_L004,
|
||||
EVENT_M01E04B_L005,
|
||||
EVENT_M01E04B_L006,
|
||||
EVENT_M01E04B_L007,
|
||||
EVENT_M01E05A_L000,
|
||||
EVENT_M01E05A_L001,
|
||||
EVENT_M01E05A_L002,
|
||||
EVENT_M01E05A_L003,
|
||||
EVENT_M01E05A_L004,
|
||||
EVENT_M01E05A_L005,
|
||||
EVENT_M01E05A_L006,
|
||||
EVENT_M01E05B_L000,
|
||||
EVENT_M01E05B_L001,
|
||||
EVENT_M01E05B_L002,
|
||||
EVENT_M01E05B_L003,
|
||||
EVENT_M01E05B_L004,
|
||||
EVENT_M01E05B_L005,
|
||||
EVENT_M01E06A_L001,
|
||||
EVENT_M01E06A_L002,
|
||||
EVENT_M01E06A_L003,
|
||||
EVENT_M01E07A_L001,
|
||||
EVENT_M01E07A_L002,
|
||||
EVENT_M01E07A_L003,
|
||||
EVENT_M01E07A_L004,
|
||||
EVENT_M01E07A_L005,
|
||||
EVENT_M01E07A_T001,
|
||||
EVENT_M01E07A_T002,
|
||||
EVENT_M01E07B_L001,
|
||||
EVENT_M01E07B_L002,
|
||||
EVENT_M01E07B_L003,
|
||||
EVENT_M01E07B_L004,
|
||||
EVENT_M01E07B_L005,
|
||||
EVENT_M01E07B_T001,
|
||||
EVENT_M01E07B_T002,
|
||||
EVENT_M01E08A_L001,
|
||||
EVENT_M01E08A_L002,
|
||||
EVENT_M01E08A_L003,
|
||||
EVENT_M01E08A_L004,
|
||||
EVENT_M01E08A_L005,
|
||||
EVENT_M01E08A_T001,
|
||||
EVENT_M01E08A_T002,
|
||||
EVENT_M01E08B_L001,
|
||||
EVENT_M01E08B_L002,
|
||||
EVENT_M01E08B_L003,
|
||||
EVENT_M01E08B_L004,
|
||||
EVENT_M01E08B_L005,
|
||||
EVENT_M01E08B_L006,
|
||||
EVENT_M01E08B_T001,
|
||||
EVENT_M01E08B_T002,
|
||||
EVENT_M01E09A_L001,
|
||||
EVENT_M01E09A_L002,
|
||||
EVENT_M01E09A_L003,
|
||||
EVENT_M01E09A_L004,
|
||||
EVENT_M01E09A_L005,
|
||||
EVENT_M01E09A_L006,
|
||||
EVENT_M01E09A_L007,
|
||||
EVENT_M01E09A_L008,
|
||||
EVENT_M01E09A_L009,
|
||||
EVENT_M01E09A_L010,
|
||||
EVENT_M01E09A_L011,
|
||||
EVENT_M01E09A_L012,
|
||||
EVENT_M01E09A_L013,
|
||||
EVENT_M01E09A_L014,
|
||||
EVENT_M01E09A_L015,
|
||||
EVENT_M01E10A_L001,
|
||||
EVENT_M01E10A_L002,
|
||||
EVENT_M01E10A_L003,
|
||||
EVENT_M01E10A_L004,
|
||||
EVENT_M01E10A_L005,
|
||||
EVENT_M01E10A_L006,
|
||||
EVENT_M01E10A_L007,
|
||||
EVENT_M01E10A_L008,
|
||||
EVENT_M01END_L001,
|
||||
EVENT_M01END_L002,
|
||||
EVENT_M02E01A_L001,
|
||||
EVENT_M02E01A_L002,
|
||||
EVENT_M02E01A_L003,
|
||||
EVENT_M02E02A_L001,
|
||||
EVENT_M02E02B_L001,
|
||||
EVENT_M02E02C_L001,
|
||||
EVENT_M02E02D_L001,
|
||||
EVENT_M02E02E_L001,
|
||||
EVENT_M02E02F_L001,
|
||||
EVENT_M02E02G_L001,
|
||||
EVENT_M02E02H_L001,
|
||||
EVENT_M02END_L001,
|
||||
EVENT_S00E01A_L001,
|
||||
EVENT_S00E01A_L002,
|
||||
EVENT_S00E01A_L003,
|
||||
EVENT_S00E01A_L004,
|
||||
EVENT_S01E01A_START,
|
||||
EVENT_S01E01A_CONTINUE,
|
||||
EVENT_S01E01A_END,
|
||||
EVENT_S01E01A_L001,
|
||||
EVENT_S01E01A_L002,
|
||||
EVENT_S01E01A_L003,
|
||||
EVENT_S01E01B_L001,
|
||||
EVENT_S01E01B_L001L,
|
||||
EVENT_S01E01C_L001,
|
||||
EVENT_S01E02A_START,
|
||||
EVENT_S01E02A_END,
|
||||
EVENT_S01E02A_L001,
|
||||
EVENT_S01E02A_L002,
|
||||
EVENT_S01E02A_L002L,
|
||||
EVENT_S01E02B_L001,
|
||||
EVENT_S01E02B_L002,
|
||||
EVENT_S02E01A_START,
|
||||
EVENT_S02E01A_END,
|
||||
EVENT_S02E01A_L001,
|
||||
EVENT_S02E01A_L002,
|
||||
EVENT_S02E01A_L003,
|
||||
EVENT_S02E01A_L004,
|
||||
EVENT_S02E01A_L004L,
|
||||
EVENT_S02E02A_START,
|
||||
EVENT_S02E02A_END,
|
||||
EVENT_S02E02A_L001,
|
||||
EVENT_S02E02A_L002,
|
||||
EVENT_S02E02A_L003,
|
||||
EVENT_S02E02A_L003L,
|
||||
EVENT_S03E01A_START,
|
||||
EVENT_S03E01A_CONTINUE,
|
||||
EVENT_S03E01A_END,
|
||||
EVENT_S03E01A_L001,
|
||||
EVENT_S03E01A_L002,
|
||||
EVENT_S03E01A_L002L,
|
||||
EVENT_S04E01A_START,
|
||||
EVENT_S04E01A_LAST,
|
||||
EVENT_S04E01A_END,
|
||||
EVENT_S04E01A_L001,
|
||||
EVENT_S04E01A_L002,
|
||||
EVENT_S04E01A_L002L,
|
||||
EVENT_S04E01B_L001,
|
||||
EVENT_S04E01B_L001L,
|
||||
EVENT_S04E01C_L001,
|
||||
EVENT_S04E01C_L001L,
|
||||
EVENT_S04E01D_L001,
|
||||
EVENT_S04E01D_L001L,
|
||||
EVENT_S04E01E_L001,
|
||||
EVENT_S04E01E_L001L,
|
||||
EVENT_S04E01F_L001,
|
||||
EVENT_S05E01A_START,
|
||||
EVENT_S05E01A_CONTINUE,
|
||||
EVENT_S05E01A_END,
|
||||
EVENT_S05E01A_L001,
|
||||
EVENT_S05E01A_L002,
|
||||
EVENT_S05E01A_L002L,
|
||||
EVENT_S06E01A_START,
|
||||
EVENT_S06E01A_CONTINUE,
|
||||
EVENT_S06E01A_END,
|
||||
EVENT_S06E01A_L001,
|
||||
EVENT_S06E01A_L002,
|
||||
EVENT_S06E01A_L002L,
|
||||
EVENT_S06E01B_L001,
|
||||
EVENT_S06E01B_L002,
|
||||
EVENT_S06E01B_L002L,
|
||||
// Activates the Buried Relic story.
|
||||
EVENT_S07E01A_START,
|
||||
// Jumped from EVENT_DIVIDE_AFTER. Completes the Buried Relic story.
|
||||
EVENT_S07E01A_END,
|
||||
// Debug script. Advances the Buried Relic story as if we learned the news.
|
||||
EVENT_S07E01A_L001,
|
||||
// Debug script. Opens the Buried Relic as if we talked to Lombre.
|
||||
EVENT_S07E01A_L002,
|
||||
// Debug script. Completes the Buried Relic story and prompts a save at home.
|
||||
EVENT_S07E01A_L003,
|
||||
// Jumped from EVENT_DIVIDE. Buried Relic related, next day?
|
||||
EVENT_S07E01A_L003L,
|
||||
EVENT_S08E01A_START,
|
||||
EVENT_S08E01A_END,
|
||||
EVENT_S08E01A_L001,
|
||||
EVENT_S08E01A_L002,
|
||||
EVENT_S08E01A_L003,
|
||||
EVENT_S08E01A_L004,
|
||||
EVENT_S08E01A_L005,
|
||||
EVENT_S08E01A_L005B,
|
||||
EVENT_S08E01A_L006,
|
||||
EVENT_S08E01A_L006L,
|
||||
EVENT_S08E01A_L007,
|
||||
EVENT_S08E01A_L008,
|
||||
EVENT_S08E01A_L008L,
|
||||
EVENT_S08E01A_L008A,
|
||||
EVENT_S08E01A_L008B,
|
||||
EVENT_S08E01A_L008C,
|
||||
EVENT_S09E01A_START,
|
||||
EVENT_S09E01A_END,
|
||||
EVENT_S09E01A_L001,
|
||||
EVENT_S09E01A_L002,
|
||||
EVENT_S09E01A_L003,
|
||||
EVENT_S09E01A_L004,
|
||||
EVENT_S09E01A_L004B,
|
||||
EVENT_S09E01A_L005,
|
||||
EVENT_S09E01A_L005L,
|
||||
// Sets the "GO" icon for Murky Cave.
|
||||
EVENT_S09E01B_L001,
|
||||
// Sets up the Murky Cave dungeon.
|
||||
EVENT_S09E01B_L001B,
|
||||
EVENT_S09E01B_L002,
|
||||
EVENT_S09E01B_L002L,
|
||||
EVENT_S09E01C_L001,
|
||||
EVENT_R00E01A_L001,
|
||||
// Helper script
|
||||
COMMON_ENTER,
|
||||
DEBUG_ENTER,
|
||||
|
||||
// Exit script, not sure how it works though.
|
||||
GETOUT_NORMAL,
|
||||
|
||||
// Exit script for friend areas.
|
||||
GETOUT_HABITAT,
|
||||
// Exit script for Tiny Woods.
|
||||
GETOUT_M01E01A,
|
||||
// Exit script for Thunderwave Cave.
|
||||
GETOUT_M01E02A,
|
||||
// Exit script for Mt Steel and Dungeon 3.
|
||||
GETOUT_M01E02B,
|
||||
// Exit script for Sinister Woods and Dungeon 5.
|
||||
GETOUT_M01E03A,
|
||||
// Exit script for Silent Chasm.
|
||||
GETOUT_M01E04A,
|
||||
// Exit script for Mt Thunder and Mt Thunder Peak.
|
||||
GETOUT_M01E04B,
|
||||
// Exit script for Great Canyon.
|
||||
GETOUT_M01E05A,
|
||||
// Exit script for Lapis Cave.
|
||||
GETOUT_M01E07A,
|
||||
// Exit script for Mt Blaze and Mt Blaze Peak.
|
||||
GETOUT_M01E07B,
|
||||
// Exit script for Frosty Forest and Frosty Grotto.
|
||||
GETOUT_M01E08A,
|
||||
// Exit script for Mt Freeze and Mt Freeze Peak.
|
||||
GETOUT_M01E08B,
|
||||
// Exit script for Magma Cavern and Magma Cavern Pit.
|
||||
GETOUT_M01E09A,
|
||||
// Exit script for Sky Tower and Sky Tower Summit.
|
||||
GETOUT_M01E10A,
|
||||
// Exit script for the Dummy dungeon.
|
||||
GETOUT_S00E01A,
|
||||
// Exit script for Uproar Forest.
|
||||
GETOUT_S01E01A,
|
||||
// Exit script for Howling Forest.
|
||||
GETOUT_S01E02A,
|
||||
// Exit script for Stormy Sea.
|
||||
GETOUT_S02E01A,
|
||||
// Exit script for Silver Trench.
|
||||
GETOUT_S02E02A,
|
||||
// Exit script for Meteor Cave.
|
||||
GETOUT_S03E01A,
|
||||
// Exit script for Great Canyon 2.
|
||||
GETOUT_S04E01A,
|
||||
// Exit script for Fiery Field.
|
||||
GETOUT_S04E01B,
|
||||
// Exit script for Lightning Field.
|
||||
GETOUT_S04E01C,
|
||||
// Exit script for Northwind Field.
|
||||
GETOUT_S04E01D,
|
||||
// Exit script for Mt Faraway.
|
||||
GETOUT_S04E01E,
|
||||
// Exit script for Western Cave.
|
||||
GETOUT_S05E01A,
|
||||
// Exit script for Northern Range.
|
||||
GETOUT_S06E01A,
|
||||
// Exit script for Pitfall Valley.
|
||||
GETOUT_S06E01B,
|
||||
// Exit script for Buried Relic.
|
||||
GETOUT_S07E01A,
|
||||
// Exit script for Wish Cave.
|
||||
GETOUT_S08E01A,
|
||||
// Exit script for Mt Freeze 2 and Mt Freeze Peak 2.
|
||||
GETOUT_S09E01A,
|
||||
// Exit script for Murky Cave.
|
||||
GETOUT_S09E01B,
|
||||
// Exit script for Purity Forest.
|
||||
GETOUT_D62E01A,
|
||||
// Exit script for Oddity Cave.
|
||||
GETOUT_D43E01A,
|
||||
// Exit script for Remains Island.
|
||||
GETOUT_D44E01A,
|
||||
// Exit script for Marvelous Sea.
|
||||
GETOUT_D45E01A,
|
||||
// Exit script for Fantasy Strait.
|
||||
GETOUT_D46E01A,
|
||||
// Exit script for Dungeon 80.
|
||||
GETOUT_U00E01A,
|
||||
// Some kind of general exit script helper.
|
||||
GETOUT_R00E01A,
|
||||
// Exit script for the maze dungeons and Dungeon 82.
|
||||
GETOUT_T00E01A,
|
||||
// Exit script for Rock Path.
|
||||
GETOUT_M01E07T,
|
||||
// Exit script for Snow Path.
|
||||
GETOUT_M01E08T,
|
||||
|
||||
EVENT_CONTROL,
|
||||
EVENT_WAKEUP,
|
||||
EVENT_STATION,
|
||||
STATION_CONTROL,
|
||||
ENTER_CONTROL,
|
||||
|
||||
SETUP_DEBUG_CAMERA,
|
||||
MOVE_DEBUG_CAMERA,
|
||||
|
||||
NUM_SCRIPT_IDS
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_SCRIPT_ID_H
|
||||
28
include/constants/tutorial_id.h
Normal file
28
include/constants/tutorial_id.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef GUARD_CONSTANTS_TUTORIAL_ID_H
|
||||
#define GUARD_CONSTANTS_TUTORIAL_ID_H
|
||||
|
||||
enum TutorialFlagID
|
||||
{
|
||||
TUTORIAL_FLAG_STAIRS_AND_SURVIVE,
|
||||
TUTORIAL_FLAG_OPEN_MENU,
|
||||
TUTORIAL_FLAG_REGAIN_HP,
|
||||
TUTORIAL_FLAG_MANAGE_BELLY1,
|
||||
TUTORIAL_FLAG_ORAN_BERRY,
|
||||
TUTORIAL_FLAG_CHERI_BERRY,
|
||||
TUTORIAL_FLAG_BLAST_SEED,
|
||||
TUTORIAL_FLAG_GRAVELEROCK,
|
||||
TUTORIAL_FLAG_UNK8,
|
||||
TUTORIAL_FLAG_PECHA_BERRY,
|
||||
TUTORIAL_FLAG_SLEEP_SEED,
|
||||
TUTORIAL_FLAG_MONEY,
|
||||
TUTORIAL_FLAG_MOVES,
|
||||
TUTORIAL_FLAG_TEAM_MANAGEMENT,
|
||||
TUTORIAL_FLAG_MOVEMENT,
|
||||
TUTORIAL_FLAG_MANAGE_BELLY2,
|
||||
|
||||
NUM_TUTORIAL_FLAGS = 31
|
||||
};
|
||||
|
||||
#define TUTORIAL_FLAGS_U32STORAGE 1
|
||||
|
||||
#endif // GUARD_CONSTANTS_TUTORIAL_ID_H
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,10 +1,12 @@
|
|||
#ifndef GUARD_DIRECTION_UTIL_H
|
||||
#define GUARD_DIRECTION_UTIL_H
|
||||
|
||||
#include "constants/direction.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
s32 sub_8002984(s32 _direction1, u32 caseID);
|
||||
s32 sub_8002A70(s32 _direction1, s32 _direction2, s32 _caseId);
|
||||
// See enum "DirectionTransformation"
|
||||
s32 TransformDirection1(s32 _direction1, u32 caseID);
|
||||
s32 TransformDirection2(s32 _direction1, s32 _direction2, s32 _caseId);
|
||||
s32 sub_8002B04(s32 _direction1, s32 _direction2);
|
||||
PixelPos SetVecFromDirectionSpeed(s32 _dir, u32 speed);
|
||||
s32 VecDirection8Radial(PixelPos *pixelPos);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "structs/str_stat_index.h"
|
||||
|
||||
s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3);
|
||||
void sub_804178C(u8 param_1);
|
||||
void sub_804178C_Async(u8 param_1);
|
||||
u32 EntityGetStatusSprites(Entity *entity);
|
||||
void sub_8041888(u8 param_1);
|
||||
void UpdateStatusIconFlags(Entity *entity);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
extern u8 gUnknown_202F32C;
|
||||
extern u8 gUnknown_202F32D;
|
||||
|
||||
bool8 ExecuteEntityDungeonAction(Entity *entity);
|
||||
bool8 ExecuteEntityDungeonAction_Async(Entity *entity);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
#include "structs/dungeon_entity.h"
|
||||
|
||||
void HandlePickUpPlayerAction(Entity *entity);
|
||||
void HandleSetItemAction(Entity *param_1, bool8 param_2);
|
||||
void HandleUnsetItemAction(Entity *entity, bool8 enableMessage);
|
||||
void HandleGiveItemAction(Entity *param_1);
|
||||
void HandleTakeItemAction(Entity *param_1);
|
||||
void sub_8066BD4(Entity *param_1);
|
||||
void HandlePickUpPlayerAction_Async(Entity *entity);
|
||||
void HandleSetItemAction_Async(Entity *param_1, bool8 param_2);
|
||||
void HandleUnsetItemAction_Async(Entity *entity, bool8 enableMessage);
|
||||
void HandleGiveItemAction_Async(Entity *param_1);
|
||||
void HandleTakeItemAction_Async(Entity *param_1);
|
||||
void sub_8066BD4_Async(Entity *param_1);
|
||||
void HandleUseItemAction(Entity *param_1);
|
||||
void HandlePlaceItemAction(Entity *entity);
|
||||
void HandlePlaceItemAction_Async(Entity *entity);
|
||||
void sub_8066E14(Entity *entity);
|
||||
void sub_8066FA4(Entity *entity);
|
||||
void sub_8067110(Entity *entity);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ void ChooseAIMove(Entity *pokemon);
|
|||
s32 AIConsiderMove(struct AIPossibleMove *aiPossibleMove, Entity *pokemon, Move *move);
|
||||
bool8 IsTargetInRange(Entity *pokemon, Entity *targetPokemon, s32 direction, s32 maxRange);
|
||||
void HandleUseMoveAIAction(Entity *target);
|
||||
void HandleUseOrbAction(Entity *pokemon);
|
||||
void HandleUseOrbAction_Async(Entity *pokemon);
|
||||
s16 GetMoveTargetAndRangeForPokemon(Entity *pokemon, Move *move, bool32 isAI);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef GUARD_CLEARED_WINDOW_H
|
||||
#define GUARD_CLEARED_WINDOW_H
|
||||
|
||||
void ShowDungeonClearedWindow(void);
|
||||
void ShowDungeonClearedWindow_Async(void);
|
||||
|
||||
#endif // GUARD_CLEARED_WINDOW_H
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ void sub_80847D4(void);
|
|||
bool8 ShouldShowDungeonBanner(void);
|
||||
void sub_80848F0(void);
|
||||
void DisplayPreFightDialogue(void);
|
||||
void sub_8084E00(Entity *entity, u8 param_2, bool8 param_3);
|
||||
void sub_8085140(void);
|
||||
bool8 sub_808529C(s32 speciesId_);
|
||||
void HandleBossFaint_Async(Entity *entity, u8 monsterBehavior, bool8 transformedIntoFriend);
|
||||
void sub_8085140_Async(void);
|
||||
bool8 MonCutsceneCompleted(s32 speciesId_);
|
||||
void sub_8085374(void);
|
||||
Entity *CutsceneGetLeader(void);
|
||||
Entity *CutsceneGetPartner(void);
|
||||
|
|
@ -42,8 +42,8 @@ void sub_8085EB0(void);
|
|||
u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32 param_5);
|
||||
void sub_8085F44(s32 param_1);
|
||||
void sub_8085F78(void);
|
||||
bool8 sub_80860A8(u8 id);
|
||||
void sub_8086130(void);
|
||||
bool8 ItemInInventoryOrHeld(u8 id);
|
||||
void FrostyForestIntrusionCutscene_Async(void);
|
||||
void sub_80861A8(Entity *a0);
|
||||
void sub_80861B8(Entity *a0, u8 r1, s32 direction);
|
||||
void sub_80861D4(Entity *a0, u8 r1, s32 direction);
|
||||
|
|
@ -69,12 +69,12 @@ void sub_8086854(void);
|
|||
void sub_80868F4(Entity *entity);
|
||||
void sub_8086910(Entity *entity);
|
||||
void sub_808692C(void);
|
||||
void SpriteLookAroundEffect(Entity *entity);
|
||||
void sub_80869E4(struct Entity *entity, s32 a1, u8 a2, s32 _someDirection);
|
||||
void CutsceneLookAroundEffect_Async(Entity *entity);
|
||||
void CutsceneLookDir_Async(struct Entity *entity, s32 numFrames, u8 dirTrans, s32 _someDirection);
|
||||
void sub_8086A3C(Entity *pokemon);
|
||||
void sub_8086A54(Entity *pokemon);
|
||||
void SetupBossFightHP(Entity *pokemon, s32 newHP, u16 songIndex);
|
||||
void sub_8086AC0(void);
|
||||
u8 sub_8086AE4(s16 _index);
|
||||
bool8 sub_8086AE4(s16 _index);
|
||||
|
||||
#endif
|
||||
#endif // GUARD_DUNGEON_CUTSCENE_H
|
||||
|
|
|
|||
|
|
@ -52,25 +52,25 @@ void TeamMeaniesReFightDialogue(void);
|
|||
void ZapdosPostStoryPreFightDialogue(void);
|
||||
void ZapdosPreFightDialogue(void);
|
||||
void ZapdosReFightDialogue(void);
|
||||
void nullsub_100(u8, u8, u8);
|
||||
void HandleCelebiBossFaint(u8, u8, u8);
|
||||
void sub_8086B14(void);
|
||||
void sub_8086B94(void);
|
||||
void sub_8086BDC(u8, u8);
|
||||
void HandleSkarmoryBossFaint(u8, u8);
|
||||
void sub_8086E40(void);
|
||||
void sub_8086E9C(void);
|
||||
void sub_8086F00(void);
|
||||
void sub_8086F54(u8, u8);
|
||||
void HandleMeaniesBossFaint(u8, u8);
|
||||
void sub_8087130(void);
|
||||
void sub_8087230(void);
|
||||
void sub_808729C(void);
|
||||
void sub_8087334(u8, u8);
|
||||
void HandleZapdosBossFaint(u8, u8);
|
||||
void sub_80877E8(void);
|
||||
void sub_8087848(void);
|
||||
void sub_80878F4(u8, u8);
|
||||
void HandleMoltresBossFaint(u8, u8);
|
||||
void sub_8087F54(void);
|
||||
void sub_8087FB4(void);
|
||||
void sub_8087FF8(void);
|
||||
void sub_8088088(u8, u8);
|
||||
void HandleArticunoBossFaint(u8, u8);
|
||||
void sub_80885A0(void);
|
||||
void sub_80885C4(void);
|
||||
void sub_8088608(void);
|
||||
|
|
@ -78,62 +78,62 @@ void sub_8088618(void);
|
|||
void sub_808862C(void);
|
||||
void sub_80886C4(void);
|
||||
void sub_808875C(void);
|
||||
void sub_8088818(u8, u8);
|
||||
void HandleGroudonBossFaint(u8, u8);
|
||||
void sub_8088DC0(void);
|
||||
void sub_8088E5C(void);
|
||||
void sub_8089168(void);
|
||||
void sub_80892C8(void);
|
||||
void sub_8089328(void);
|
||||
void sub_80893B4(u8, u8);
|
||||
void HandleRayquazaBossFaint(u8, u8);
|
||||
void sub_808970C(void);
|
||||
void sub_808974C(void);
|
||||
void sub_8089788(Entity *entity, u8, u8);
|
||||
void HandleMankeyBossFaint(Entity *entity, u8, u8);
|
||||
void sub_80897F0(void);
|
||||
void sub_8089878(void);
|
||||
void sub_80898E4(void);
|
||||
void sub_8089914(void);
|
||||
void sub_8089978(void);
|
||||
void sub_8089A00(u8, u8);
|
||||
void HandleMewtwoBossFaint(u8, u8);
|
||||
void sub_8089C44(void);
|
||||
void sub_8089C90(void);
|
||||
void sub_8089CFC(u8, u8);
|
||||
void HandleEnteiBossFaint(u8, u8);
|
||||
void sub_8089EFC(void);
|
||||
void sub_8089F44(void);
|
||||
void sub_8089F8C(void);
|
||||
void sub_8089FF0(u8, u8);
|
||||
void HandleRaikouBossFaint(u8, u8);
|
||||
void sub_808A264(void);
|
||||
void sub_808A2C0(void);
|
||||
void sub_808A308(void);
|
||||
void sub_808A36C(u8, u8);
|
||||
void HandleSuicuneBossFaint(u8, u8);
|
||||
void sub_808A608(void);
|
||||
void sub_808A668(void);
|
||||
void sub_808A6E8(u8, u8);
|
||||
void HandleHoOhBossFaint(u8, u8);
|
||||
void sub_808A9E4(void);
|
||||
void sub_808AA3C(void);
|
||||
void sub_808AA94(void);
|
||||
void sub_808AAF0(u8, u8);
|
||||
void HandleLatiosBossFaint(u8, u8);
|
||||
void sub_808AC3C(void);
|
||||
void sub_808ACC0(void);
|
||||
void sub_808AD48(void);
|
||||
void sub_808ADCC(void);
|
||||
void sub_808AE54(u8, u8, DungeonPos *pos);
|
||||
void sub_808AEC8(u8, u8, DungeonPos *pos);
|
||||
void sub_808AF3C(u8, u8, DungeonPos *pos);
|
||||
void sub_808AFB0(u8);
|
||||
void sub_808B030(u8);
|
||||
void sub_808B0B0(u8);
|
||||
void HandleRegirockBossFaint_Async(u8, u8, DungeonPos *pos);
|
||||
void HandleRegiceBossFaint_Async(u8, u8, DungeonPos *pos);
|
||||
void HandleRegisteelBossFaint_Async(u8, u8, DungeonPos *pos);
|
||||
void sub_808AFB0_Async(u8);
|
||||
void sub_808B030_Async(u8);
|
||||
void sub_808B0B0_Async(u8);
|
||||
void sub_808B2F4(void);
|
||||
void sub_808B35C(void);
|
||||
void sub_808B3E4(u8, u8, u8);
|
||||
void HandleJirachiBossFaint_Async(u8 monsterBehavior, u8 cutscene, bool8 transformedIntoFriend);
|
||||
void sub_808BDEC(void);
|
||||
void sub_808BE70(u8, u8, u8);
|
||||
void HandleLugiaBossFaint(u8 monsterBehavior, u8 cutscene, bool8 transformedIntoFriend);
|
||||
void sub_808C10C(void);
|
||||
void sub_808C1A4(u8, u8, u8);
|
||||
void HandleKyogreBossFaint(u8, u8, u8);
|
||||
void sub_808C3A0(void);
|
||||
void sub_808C414(u8, u8, u8);
|
||||
void HandleDeoxysNormalBossFaint(u8, u8, u8);
|
||||
void sub_808C5C0(void);
|
||||
void sub_808C938(void);
|
||||
void sub_808C948(Entity *entity, u8);
|
||||
void HandleMazeBossFaint(Entity *entity, u8);
|
||||
void sub_808C998(void);
|
||||
void sub_808C9C4(void);
|
||||
void sub_808CB5C(void);
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@
|
|||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/str_damage.h"
|
||||
|
||||
void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *dmgStruct, bool32 isFalseSwipe, bool32 giveExp, s16 dungeonExitReason, bool32 arg8, s32 argC);
|
||||
void HandleDealingDamage_Async(Entity *attacker, Entity *target, struct DamageStruct *dmgStruct, bool32 isFalseSwipe, bool32 giveExp, s16 dungeonExitReason, bool32 arg8, s32 argC);
|
||||
s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType);
|
||||
void CalcDamage(Entity *attacker, Entity *target, u8 moveType, s32 movePower, s32 critChance, struct DamageStruct *dmgStruct, s24_8 arg8, u16 moveId, bool8 arg_10);
|
||||
void sub_806F2BC(Entity *attacker, Entity *target, u8 moveType, s32 a2, struct DamageStruct *dmgStruct);
|
||||
void DealDamageToEntity(Entity *entity, s32 dmg, s32 residualDmgType, s32 dungeonExitReason);
|
||||
void sub_806F370(Entity *pokemon, Entity *target, s32 dmg, s32 giveExp, bool8 *tookNoDamage, u8 moveType, s16 dungeonExitReason, s32 residualDmgType, s32 arg_10, s32 arg_14);
|
||||
void DealDamageToEntity_Async(Entity *entity, s32 dmg, s32 residualDmgType, s32 dungeonExitReason);
|
||||
void sub_806F370_Async(Entity *pokemon, Entity *target, s32 dmg, s32 giveExp, bool8 *tookNoDamage, u8 moveType, s16 dungeonExitReason, s32 residualDmgType, s32 arg_10, s32 arg_14);
|
||||
void SetShopkeeperAggression(Entity *pokemon, Entity *target);
|
||||
void sub_806F480(Entity *pokemon, bool8 attackEnemies);
|
||||
u8 sub_806F4A4(Entity *pokemon, u8 type);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
extern const s16 gSpeedTurns[NUM_SPEED_COUNTERS][25];
|
||||
|
||||
void RunFractionalTurn(bool8 param_1);
|
||||
void sub_80444F4(Entity *pokemon);
|
||||
void RunFractionalTurn_Async(bool8 param_1);
|
||||
void sub_80444F4_Async(Entity *pokemon);
|
||||
bool8 IsFloorOver(void);
|
||||
bool8 sub_8044B84(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
#include "structs/str_position.h"
|
||||
|
||||
void sub_8074FB0(Entity *entity, s32 a1, DungeonPos *pos);
|
||||
bool8 DisplayActions(Entity *a0);
|
||||
bool8 DisplayActions_Async(Entity *a0);
|
||||
void sub_8075680(bool8 unused);
|
||||
bool8 CheckEntityTileForInteraction(Entity *entity);
|
||||
void TryTriggerMonsterHouseWithMsg(Entity *pokemon, bool8 forcedMonsterHouse);
|
||||
void TryTriggerMonsterHouseWithMsg_Async(Entity *pokemon, bool8 forcedMonsterHouse);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
void SetUpDungeonExitData(s16 dungeonExitReason, Entity *target, Entity *entity);
|
||||
bool8 IsUnsuccessfulDungeonExit(void);
|
||||
bool8 sub_8083C50(void);
|
||||
bool8 sub_8083C88(u8 param_1);
|
||||
bool8 sub_8083C88(u8 dungeonMissionKind);
|
||||
|
||||
#endif // GUARD_DUNGEON_EXIT_H
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ void sub_8045C18(u8 *buffer, Item *item);
|
|||
#define FORCE_STICKY_NEVER 2
|
||||
void CreateItemWithStickyChance(Item *item, u8 itemID, u32 forceSticky);
|
||||
void CreateFloorItems(void);
|
||||
void TryLeaderItemPickUp(struct DungeonPos *pos, bool8 printMsg);
|
||||
void TryLeaderItemPickUp_Async(struct DungeonPos *pos, bool8 printMsg);
|
||||
bool8 SpawnItem(DungeonPos *pos, Item *item, bool8 a2);
|
||||
bool8 RemoveGroundItem(DungeonPos *pos, bool8 a2);
|
||||
bool8 sub_80462AC(Entity * entity, u8 hallucinating, u8 a2, u8 a3, u8 a4);
|
||||
|
|
@ -23,7 +23,7 @@ void SpawnDroppedItem(Entity *entity1, Entity *entity2, Item *item, bool8 a3, Du
|
|||
void sub_8046860(Entity *entity, DungeonPos *pos, Item *item, s32 a4);
|
||||
void sub_804687C(Entity *entity, DungeonPos *pos1, DungeonPos *pos2, Item *item, s32 count);
|
||||
bool8 HasHeldItem(Entity *pokemon, u8 id);
|
||||
void sub_8046D20(void);
|
||||
void PotentiallyCreateMusicBox_Async(void);
|
||||
bool8 sub_8046F00(Item *item);
|
||||
void ClearAllItemsWithFlag(s32 itemFlag);
|
||||
void AllItemsToPlainSeed(void);
|
||||
|
|
|
|||
|
|
@ -34,25 +34,24 @@ void sub_8052210(bool8 a0);
|
|||
void sub_805229C(void);
|
||||
|
||||
// These functions display the string if certain conditions are met. The conditions differ depending on the function. The string is then saved to the message log.
|
||||
void LogMessageByIdWithPopupCheckUser(Entity *pokemon, const u8 *str);
|
||||
void TryDisplayDungeonLoggableMessage2(Entity *pokemon, const u8 *str);
|
||||
void TryDisplayDungeonLoggableMessage3(Entity *attacker, Entity *target, const u8 *str);
|
||||
void TryDisplayDungeonLoggableMessage4(Entity *attacker, Entity *target, const u8 *str);
|
||||
void LogMessageByIdWithPopupCheckUserUnknown(Entity *pokemon, DungeonPos *pos, const u8 *str);
|
||||
void LogMessageByIdWithPopupCheckUser_Async(Entity *pokemon, const u8 *str);
|
||||
void TryDisplayDungeonLoggableMessage3_Async(Entity *attacker, Entity *target, const u8 *str);
|
||||
void TryDisplayDungeonLoggableMessage4_Async(Entity *attacker, Entity *target, const u8 *str);
|
||||
void LogMessageByIdWithPopupCheckUserUnknown_Async(Entity *pokemon, DungeonPos *pos, const u8 *str);
|
||||
|
||||
// As opposed to the above - these always display the string and save it in the message log. False/True stand for an unknown argument. Not sure what the practical difference is between these.
|
||||
void DisplayDungeonLoggableMessage(Entity *pokemon, const u8 *str);
|
||||
void DisplayDungeonLoggableMessageFalse(Entity *pokemon, const u8 *str);
|
||||
void DisplayDungeonLoggableMessageTrue(Entity *pokemon, const u8 *str);
|
||||
void DisplayDungeonLoggableMessageFalse_Async(Entity *pokemon, const u8 *str);
|
||||
void DisplayDungeonLoggableMessageTrue_Async(Entity *pokemon, const u8 *str);
|
||||
|
||||
void xxx_draw_string_80524F0(void);
|
||||
void sub_80526D0(s32 r0);
|
||||
void sub_8052740(s32 a0);
|
||||
void DisplayDungeonMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool8 a2);
|
||||
void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo);
|
||||
bool32 DisplayDungeonYesNoMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool32 defaultYes);
|
||||
void DisplayDungeonMessage_Async(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool8 a2);
|
||||
void DisplayDungeonDialogue_Async(const struct DungeonDialogueStruct *dialogueInfo);
|
||||
bool32 DisplayDungeonYesNoMessage_Async(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool32 defaultYes);
|
||||
s32 DisplayDungeonMenuMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, const MenuItem *menuItems, u16 unkArg);
|
||||
void sub_8052D44(s16 *ids, Entity *leader, Entity *partner);
|
||||
void BufferCutsceneProtagonists(s16 destIDs[2], Entity *leader, Entity *partner);
|
||||
void TryDisplayGeneralTutorialMessage(void);
|
||||
void DisplayItemTip(u8 itemId);
|
||||
void DisplayYouReachedDestFloorStr(void);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ void sub_8068A84(Pokemon *pokemon);
|
|||
void sub_8068BDC(bool8 a0);
|
||||
void sub_8068F28(void);
|
||||
void sub_8068F80(void);
|
||||
void HandleFaint(Entity *entity, s32 dungeonExitReason, Entity *param_3);
|
||||
void HandleFaint_Async(Entity *entity, s32 dungeonExitReason, Entity *param_3);
|
||||
void sub_80694C0(Entity *target,s32 x,s32 y,u8 param_4);
|
||||
void sub_80695EC(Entity *param_1,int x,int y);
|
||||
Entity * sub_8069660(Entity *target);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
bool8 TryRecruitMonster(Entity *attacker, Entity *target);
|
||||
bool8 IsMonsterRecruitable(s32 species);
|
||||
bool8 HandleMonsterJoinSequence(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *param_3);
|
||||
bool8 MonsterJoinSequence_Async(Entity *entity1, Entity *entity2, struct unkStruct_8069D4C *param_3);
|
||||
// These two functions are only used for Celebi's scene for some reason.
|
||||
bool8 CanEntityBeRecruited(Entity *param_1);
|
||||
bool8 HandleSpecialEntityJoinSequence(Entity *entity1,Entity *entity2,Entity **entityPtr);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@
|
|||
#include "structs/dungeon_entity.h"
|
||||
|
||||
void TryWakeSleepingWildPokemon(void);
|
||||
void TriggerMonsterHouse(Entity *entity, bool8 forcedMonsterHouse);
|
||||
void TriggerMonsterHouse_Async(Entity *entity, bool8 forcedMonsterHouse);
|
||||
|
||||
#endif // GUARD_DUNGEON_MONSTER_HOUSE_H
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ void UseMoveAgainstTargets(Entity **targetsArray, Entity *attacker, Move *move,
|
|||
bool8 HandleRegularDamagingMove(Entity *attacker, Entity *target, Move *move, s32 itemId);
|
||||
s32 HandleDamagingMove(Entity *attacker, Entity *target, Move *move, s24_8 modifier, s32 itemId);
|
||||
s32 sub_80556BC(Entity *attacker, Entity *target, u8 moveType, Move *move, s24_8 modifier, s32 itemId);
|
||||
s32 sub_8055864(Entity *attacker, Entity *target, Move *move, s32 param_4, s32 itemId);
|
||||
s32 sub_8055864_Async(Entity *attacker, Entity *target, Move *move, s32 param_4, s32 itemId);
|
||||
bool8 sub_8055988(Entity *r2, Entity *r4);
|
||||
void sub_80559DC(Entity *entity1, Entity *entity2);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "structs/str_item_text.h"
|
||||
#include "constants/residual_damage.h"
|
||||
#include "constants/trap.h"
|
||||
#include "constants/tutorial_id.h"
|
||||
#include "constants/weather.h"
|
||||
|
||||
struct Struct_80F7C50
|
||||
|
|
@ -12,11 +13,11 @@ struct Struct_80F7C50
|
|||
s32 val;
|
||||
};
|
||||
|
||||
struct TutorialFlagMsg
|
||||
typedef struct TutorialFlagMsg
|
||||
{
|
||||
s32 flagId;
|
||||
s32 flagId; // See enum "TutorialFlagID"
|
||||
const u8 *str;
|
||||
};
|
||||
} TutorialFlagMsg;
|
||||
|
||||
extern const ItemText gActions[];
|
||||
extern const struct Struct_80F7C50 gUnknown_80F7C50[];
|
||||
|
|
@ -778,21 +779,21 @@ extern const u8 *const gUnknown_80FEF98;
|
|||
extern const u8 *const gUnknown_80FEFD0;
|
||||
extern const u8 *const gUnknown_80FEFF4;
|
||||
extern const u8 *const gUnknown_80FF01C;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF020;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF080;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF0D8;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF13C;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF1B4;
|
||||
extern const struct TutorialFlagMsg gMovementTutorial;
|
||||
extern const struct TutorialFlagMsg gHungerTutorial;
|
||||
extern const struct TutorialFlagMsg gFoodTutorial;
|
||||
extern const struct TutorialFlagMsg gOranTutorial;
|
||||
extern const struct TutorialFlagMsg gCheriTutorial;
|
||||
extern const struct TutorialFlagMsg gBlastSeedTutorial;
|
||||
extern const struct TutorialFlagMsg gUnknown_80FF4A0;
|
||||
extern const struct TutorialFlagMsg gPechaTutorial;
|
||||
extern const struct TutorialFlagMsg gSleepSeedTutorial;
|
||||
extern const struct TutorialFlagMsg gMoneyTutorial;
|
||||
extern const TutorialFlagMsg gUnknown_80FF020;
|
||||
extern const TutorialFlagMsg gUnknown_80FF080;
|
||||
extern const TutorialFlagMsg gUnknown_80FF0D8;
|
||||
extern const TutorialFlagMsg gUnknown_80FF13C;
|
||||
extern const TutorialFlagMsg gUnknown_80FF1B4;
|
||||
extern const TutorialFlagMsg gMovementTutorial;
|
||||
extern const TutorialFlagMsg gHungerTutorial;
|
||||
extern const TutorialFlagMsg gFoodTutorial;
|
||||
extern const TutorialFlagMsg gOranTutorial;
|
||||
extern const TutorialFlagMsg gCheriTutorial;
|
||||
extern const TutorialFlagMsg gBlastSeedTutorial;
|
||||
extern const TutorialFlagMsg gUnknown_80FF4A0;
|
||||
extern const TutorialFlagMsg gPechaTutorial;
|
||||
extern const TutorialFlagMsg gSleepSeedTutorial;
|
||||
extern const TutorialFlagMsg gMoneyTutorial;
|
||||
extern const u8 *const gUnknown_80FF674;
|
||||
extern const u8 *const gUnknown_80FF678;
|
||||
extern const u8 *const gUnknown_80FF6A4;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "structs/dungeon_entity.h"
|
||||
|
||||
void ApplyEndOfTurnEffects(Entity *entity);
|
||||
void DoEndOfTurnEffects_Async(Entity *entity);
|
||||
void TickStatusAndHealthRegen(Entity *entity);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef GUARD_DUNGEON_UTIL_H
|
||||
#define GUARD_DUNGEON_UTIL_H
|
||||
|
||||
#include "constants/colors.h"
|
||||
#include "constants/direction.h"
|
||||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/str_position.h"
|
||||
|
|
@ -38,7 +39,7 @@ bool8 CanTargetEntity(Entity *entity, Entity *targetEntity);
|
|||
bool8 sub_8045A70(Entity *entity, Entity *targetEntity);
|
||||
bool8 sub_8045AAC(Entity *entity, DungeonPos *pos);
|
||||
bool8 CanTargetPosition(Entity *entity, DungeonPos *pos);
|
||||
void SubstitutePlaceholderStringTags(u8 *buffer, Entity *entity, u32 param_3);
|
||||
void SubstitutePlaceholderStringTags(u8 *buffer, Entity *entity, u32 monsterColorNum);
|
||||
void sub_8045ACC(void);
|
||||
s32 GetTeamMemberEntityIndex(Entity *pokemon);
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
void sub_803E250(void);
|
||||
void DungeonRunFrameActions(u32 a0);
|
||||
void sub_803E668(u32 unused);
|
||||
void sub_803E708(s32 numFrames, u32 a1);
|
||||
void DungeonWaitFrames_Async(s32 numFrames, u32 a1);
|
||||
void sub_803E724(s32 r0);
|
||||
void sub_803E748(void);
|
||||
void sub_803E7C8(void);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ s32 GetScriptVarArrayValue(u8 *localVarBuf, s32 varId, s32 idx);
|
|||
void SetScriptVarValue(u8 *localVarBuf, s32 varId, s32 val);
|
||||
void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId, s32 idx, s32 val);
|
||||
s32 GetScriptVarArraySum(u8 *localVarBuf, s16 varId);
|
||||
void GetScriptVarScenario(s32 varId,u32 *outMain,u32 *outSub);
|
||||
void GetScriptVarScenario(s32 varID, u32 *outMain, u32 *outSub);
|
||||
void ScenarioCalc(s16 varId, s32 main, s32 sub);
|
||||
bool8 ScriptVarScenarioBefore(s16 varId, u32 main, s32 sub);
|
||||
bool8 ScriptVarScenarioEqual(s16 varId, u32 main, s32 sub);
|
||||
|
|
@ -34,11 +34,12 @@ void UpdateScriptVarWithVar(u8 *localVarBuf, s16 dstVarId, s16 srcVarId, enum Fl
|
|||
bool8 FlagJudge(s32 r0, s32 r1, enum FlagJudgeOperation operation);
|
||||
bool8 JudgeVarWithImmediate(u8 *localVarBuf, s16 varId, s32 val, enum FlagJudgeOperation operation);
|
||||
bool8 JudgeVarWithVar(u8 *localVarBuf, s16 varId1, s16 varId2, enum FlagJudgeOperation operation);
|
||||
bool8 sub_80023E4(u32 param_1); // some kind of helper for predefined scenario checks
|
||||
// See enum "MainQuest"
|
||||
bool8 CheckQuest(s32 questID);
|
||||
u8 MapIdToFriendAreaId(s16 mapId_); // map -> friend area lookup
|
||||
s16 FriendAreaIdToMapId(u8 friendAreaId); // friend area -> map lookup
|
||||
bool8 sub_80026CC(s16 r0);
|
||||
void sub_80026E8(s16 r0, bool8 r1);
|
||||
void ScriptUnlockFriendArea(s16 r0, bool8 r1);
|
||||
bool8 SaveGlobalScriptVars(void *dest);
|
||||
bool8 RestoreGlobalScriptVars(u8 *src);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,29 +1,29 @@
|
|||
#ifndef GUARD_EXCLUSIVE_POKEMON_H
|
||||
#define GUARD_EXCLUSIVE_POKEMON_H
|
||||
|
||||
#include "constants/cutscenes.h"
|
||||
#include "constants/tutorial_id.h"
|
||||
#include "data_serializer.h"
|
||||
|
||||
|
||||
#define NUM_EXCLUSIVE_POKEMON 12
|
||||
|
||||
// Size: 0x4
|
||||
struct ExclusivePokemon
|
||||
{
|
||||
s16 poke_id;
|
||||
bool8 in_rrt; // red rescue team
|
||||
bool8 in_brt; // blue rescue team
|
||||
/* 0x0 */ s16 poke_id;
|
||||
/* 0x2 */ bool8 in_rrt; // red rescue team
|
||||
/* 0x3 */ bool8 in_brt; // blue rescue team
|
||||
};
|
||||
|
||||
struct ExclusivePokemonData
|
||||
typedef struct ExclusivePokemonData
|
||||
{
|
||||
u8 unk0;
|
||||
u32 unk4[1];
|
||||
u8 fill8[0x3C - 8];
|
||||
u32 unk3C[1];
|
||||
u8 fill40[8];
|
||||
u32 unk48[3];
|
||||
u32 unk54[1];
|
||||
/* 0x58 */ bool8 Exclusives[NUM_EXCLUSIVE_POKEMON];
|
||||
};
|
||||
/* 0x00 */ bool8 unk0; // Initialized?
|
||||
/* 0x04 */ u32 monSeenFlags[MONSTER_FLAGS_U32STORAGE];
|
||||
/* 0x3C */ u32 cutsceneFlags[CUTSCENE_FLAGS_U32STORAGE];
|
||||
/* 0x48 */ u32 tempCutsceneFlags[CUTSCENE_FLAGS_U32STORAGE];
|
||||
/* 0x54 */ u32 tutorialFlags[TUTORIAL_FLAGS_U32STORAGE];
|
||||
/* 0x58 */ bool8 exclusives[NUM_EXCLUSIVE_POKEMON];
|
||||
} ExclusivePokemonData;
|
||||
|
||||
#define RED_EXCLUSIVE(species) \
|
||||
{ \
|
||||
|
|
@ -39,22 +39,22 @@ struct ExclusivePokemonData
|
|||
.in_brt = TRUE, \
|
||||
}
|
||||
|
||||
extern struct ExclusivePokemonData *gUnknown_203B498;
|
||||
extern ExclusivePokemonData *gExclusiveMonPtr;
|
||||
|
||||
void LoadExclusivePokemon(void);
|
||||
struct ExclusivePokemonData *GetExclusivePokemon(void);
|
||||
ExclusivePokemonData *GetExclusivePokemon(void);
|
||||
void InitializeExclusivePokemon(void);
|
||||
void sub_8097FA8(u8 param_1);
|
||||
void sub_8097FD0(u8 param_1);
|
||||
void sub_8097FF8(void);
|
||||
void sub_8098044(u8 param_1);
|
||||
void sub_8098080(void);
|
||||
u8 sub_80980A4(void);
|
||||
void sub_80980B4(s16 pokeID);
|
||||
bool8 sub_8098100(u8 param_1);
|
||||
bool8 sub_8098134(s16 pokeID);
|
||||
void SetTutorialFlag(s32 param_1);
|
||||
bool32 GetTutorialFlag(s32 param_1);
|
||||
void SetTempCutsceneFlag(u8 flag);
|
||||
void SetCutsceneFlag(u8 flag);
|
||||
void FlushTempCutsceneFlags(void);
|
||||
void UnsetCutsceneFlag(u8 flag);
|
||||
void ClearTempCutsceneFlags(void);
|
||||
bool8 sub_80980A4(void);
|
||||
void SetMonSeenFlag(s16 monID);
|
||||
bool8 GetCutsceneFlag(u8 flag);
|
||||
bool8 GetMonSeenFlag(s16 monID);
|
||||
void SetTutorialFlag(s32 flag);
|
||||
bool8 GetTutorialFlag(s32 flag);
|
||||
bool8 IsExclusivePokemonUnlocked(s32 pokeID);
|
||||
void UnlockExclusivePokemon(s16 pokeID);
|
||||
void WriteExclusivePokemon(DataSerializer *r0);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "structs/axdata.h"
|
||||
|
||||
extern RGB gFontPalette[128];
|
||||
extern RGB_Struct gFontPalette[128];
|
||||
|
||||
struct unkStruct_8009A1C_ptr
|
||||
{
|
||||
|
|
@ -19,7 +19,7 @@ void ScheduleMemCopy(u32 *, const u32 *, u32);
|
|||
void ScheduleBgTilemapCopy(u32);
|
||||
void DoScheduledMemCopies(void);
|
||||
void CopyBgTilemaps0And1(void);
|
||||
void SetFontsBaseColor(RGB);
|
||||
void SetFontsBaseColor(RGB_Struct);
|
||||
bool8 sub_8009A7C(struct EfbFileData *a0, s32 a1, s32 a2, s32 a3, bool8 a4, s32 *a5, s16 *a6);
|
||||
|
||||
#endif // GUARD_GRAPHICS_MEMORY_H
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
void AllocGroundLives(void);
|
||||
void DeleteGroundLives(void);
|
||||
void FreeGroundLives(void);
|
||||
void GroundLives_Select(s32 scriptID, s32 group, s32 sector);
|
||||
void GroundLives_Select(s32 mapID, s32 group, s32 sector);
|
||||
void GroundLives_Cancel(s32 scriptID, s32 sector);
|
||||
void GroundLives_CancelBlank_1(void);
|
||||
void GroundLives_CancelBlank_2(void);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef GUARD_GROUND_MAIN_H
|
||||
#define GUARD_GROUND_MAIN_H
|
||||
|
||||
#include "constants/rescue_dungeon_id.h"
|
||||
#include "structs/str_dungeon_setup.h"
|
||||
|
||||
u32 xxx_script_related_8098468(s32 param_1);
|
||||
|
|
@ -19,7 +20,8 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s32 param_2);
|
|||
u8 sub_80991E0(struct DungeonSetupInfo *param_1, s16 *param_2);
|
||||
void sub_8099220(struct DungeonSetupInfo *param_1, s32 param_2);
|
||||
void sub_809927C(u8 param_1);
|
||||
bool8 sub_80992E0(s16 *param_1, s16 *param_2);
|
||||
// See enum "RescueDungeonId"
|
||||
bool8 sub_80992E0(s16 *param_1, s16 *rescueDungeonId);
|
||||
bool8 sub_8099328(u8 *dungeonId);
|
||||
bool8 sub_8099360(u8 *dungeonId);
|
||||
bool8 sub_8099394(u8 *param);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef GUARD_GROUND_MAP_H
|
||||
#define GUARD_GROUND_MAP_H
|
||||
|
||||
#include "constants/script_id.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "structs/str_ground_script.h"
|
||||
#include "structs/str_dungeon_location.h"
|
||||
|
|
@ -11,7 +12,8 @@ void GroundMap_Reset(void);
|
|||
void sub_80A4B38(void);
|
||||
void sub_80A4B54(void);
|
||||
void GroundMap_GetStationScript(ScriptInfoSmall *r0, s32 _groundScriptId, s32 _groupId, s32 _sectorId);
|
||||
void GroundMap_ExecuteEvent(s16 scriptIndex, u32 param_2);
|
||||
// See enum "ScriptID"
|
||||
void GroundMap_ExecuteEvent(s16 scriptIndex, bool32 param_2);
|
||||
void GroundMap_ExecuteStation(s32 _map, s32 _group, s32 _sector, bool32 _setScriptState);
|
||||
void GroundMap_ExecuteEnter(s16 param_1);
|
||||
bool8 GroundMapNotifyAll(s16 param_1);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ bool8 sub_809D678(Action *action);
|
|||
bool8 sub_809D684(Action *action, ScriptInfoSmall *scriptInfo);
|
||||
void SetPredefinedScript(Action *param_1, s16 index, const ScriptCommand *param_3);
|
||||
bool8 GetPredefinedScript(Action *param_1, ScriptInfoSmall *script, s32 _index);
|
||||
void GetFunctionScript(Action *param_1, ScriptInfoSmall *script, s16 index);
|
||||
void GetFunctionScript(Action *param_1, ScriptInfoSmall *script, s16 scriptID);
|
||||
bool8 ActionResetScriptData(Action *param_1, const DebugLocation *unused);
|
||||
bool8 GroundScript_ExecutePP(Action *action, ActionUnkIds *param_2, ScriptInfoSmall *param_3, const DebugLocation *unused);
|
||||
bool8 ExecutePredefinedScript(Action *param_1, ActionUnkIds *param_2, s16 index, const DebugLocation *debug);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "personality_test1.h"
|
||||
|
||||
void GameLoop(void);
|
||||
void GameLoop_Async(void);
|
||||
void nullsub_3(s32 yPos, s32 a1);
|
||||
s32 sub_8000728(void);
|
||||
void ReadTeamBasicInfo(TeamBasicInfo *dst);
|
||||
|
|
|
|||
|
|
@ -6,80 +6,80 @@
|
|||
#include "structs/sprite_oam.h"
|
||||
#include "structs/rgb.h"
|
||||
|
||||
extern const RGB gFlag00Pal[];
|
||||
extern const RGB_Struct gFlag00Pal[];
|
||||
extern const SiroArchive gAxFlag00;
|
||||
extern const RGB gFlag01Pal[];
|
||||
extern const RGB_Struct gFlag01Pal[];
|
||||
extern const SiroArchive gAxFlag01;
|
||||
extern const RGB gFlag02Pal[];
|
||||
extern const RGB_Struct gFlag02Pal[];
|
||||
extern const SiroArchive gAxFlag02;
|
||||
extern const RGB gFlag03Pal[];
|
||||
extern const RGB_Struct gFlag03Pal[];
|
||||
extern const SiroArchive gAxFlag03;
|
||||
extern const RGB gFlag04Pal[];
|
||||
extern const RGB_Struct gFlag04Pal[];
|
||||
extern const SiroArchive gAxFlag04;
|
||||
extern const RGB gFlag05Pal[];
|
||||
extern const RGB_Struct gFlag05Pal[];
|
||||
extern const SiroArchive gAxFlag05;
|
||||
extern const RGB gFlag06Pal[];
|
||||
extern const RGB_Struct gFlag06Pal[];
|
||||
extern const SiroArchive gAxFlag06;
|
||||
extern const RGB gFlag07Pal[];
|
||||
extern const RGB_Struct gFlag07Pal[];
|
||||
extern const SiroArchive gAxFlag07;
|
||||
extern const RGB gFlag08Pal[];
|
||||
extern const RGB_Struct gFlag08Pal[];
|
||||
extern const SiroArchive gAxFlag08;
|
||||
extern const RGB gFlag09Pal[];
|
||||
extern const RGB_Struct gFlag09Pal[];
|
||||
extern const SiroArchive gAxFlag09;
|
||||
extern const RGB gFlag100Pal[];
|
||||
extern const RGB_Struct gFlag100Pal[];
|
||||
extern const SiroArchive gAxFlag100;
|
||||
extern const RGB gFlag101Pal[];
|
||||
extern const RGB_Struct gFlag101Pal[];
|
||||
extern const SiroArchive gAxFlag101;
|
||||
extern const RGB gFlag102Pal[];
|
||||
extern const RGB_Struct gFlag102Pal[];
|
||||
extern const SiroArchive gAxFlag102;
|
||||
extern const RGB gFlag103Pal[];
|
||||
extern const RGB_Struct gFlag103Pal[];
|
||||
extern const SiroArchive gAxFlag103;
|
||||
extern const RGB gFlag104Pal[];
|
||||
extern const RGB_Struct gFlag104Pal[];
|
||||
extern const SiroArchive gAxFlag104;
|
||||
extern const RGB gFlag105Pal[];
|
||||
extern const RGB_Struct gFlag105Pal[];
|
||||
extern const SiroArchive gAxFlag105;
|
||||
extern const RGB gFlag106Pal[];
|
||||
extern const RGB_Struct gFlag106Pal[];
|
||||
extern const SiroArchive gAxFlag106;
|
||||
extern const RGB gFlag107Pal[];
|
||||
extern const RGB_Struct gFlag107Pal[];
|
||||
extern const SiroArchive gAxFlag107;
|
||||
extern const RGB gFlag108Pal[];
|
||||
extern const RGB_Struct gFlag108Pal[];
|
||||
extern const SiroArchive gAxFlag108;
|
||||
extern const RGB gFlag109Pal[];
|
||||
extern const RGB_Struct gFlag109Pal[];
|
||||
extern const SiroArchive gAxFlag109;
|
||||
extern const RGB gFlag10Pal[];
|
||||
extern const RGB_Struct gFlag10Pal[];
|
||||
extern const SiroArchive gAxFlag10;
|
||||
extern const RGB gFlag110Pal[];
|
||||
extern const RGB_Struct gFlag110Pal[];
|
||||
extern const SiroArchive gAxFlag110;
|
||||
extern const RGB gFlag111Pal[];
|
||||
extern const RGB_Struct gFlag111Pal[];
|
||||
extern const SiroArchive gAxFlag111;
|
||||
extern const RGB gFlag112Pal[];
|
||||
extern const RGB_Struct gFlag112Pal[];
|
||||
extern const SiroArchive gAxFlag112;
|
||||
extern const RGB gFlag113Pal[];
|
||||
extern const RGB_Struct gFlag113Pal[];
|
||||
extern const SiroArchive gAxFlag113;
|
||||
extern const RGB gFlag114Pal[];
|
||||
extern const RGB_Struct gFlag114Pal[];
|
||||
extern const SiroArchive gAxFlag114;
|
||||
extern const RGB gFlag11Pal[];
|
||||
extern const RGB_Struct gFlag11Pal[];
|
||||
extern const SiroArchive gAxFlag11;
|
||||
extern const RGB gFlag12Pal[];
|
||||
extern const RGB_Struct gFlag12Pal[];
|
||||
extern const SiroArchive gAxFlag12;
|
||||
extern const RGB gFlag13Pal[];
|
||||
extern const RGB_Struct gFlag13Pal[];
|
||||
extern const SiroArchive gAxFlag13;
|
||||
extern const RGB gFlag14Pal[];
|
||||
extern const RGB_Struct gFlag14Pal[];
|
||||
extern const SiroArchive gAxFlag14;
|
||||
extern const RGB gFlag15Pal[];
|
||||
extern const RGB_Struct gFlag15Pal[];
|
||||
extern const SiroArchive gAxFlag15;
|
||||
extern const RGB gFlag16Pal[];
|
||||
extern const RGB_Struct gFlag16Pal[];
|
||||
extern const SiroArchive gAxFlag16;
|
||||
extern const SiroArchive gAxItem01;
|
||||
extern const SiroArchive gAxNpc01;
|
||||
extern const SiroArchive gAxNpc02;
|
||||
extern const SiroArchive gAxNpc03;
|
||||
extern const SiroArchive gAxNpc04;
|
||||
extern const RGB gStoneimPal[];
|
||||
extern const RGB_Struct gStoneimPal[];
|
||||
extern const SiroArchive gAxTitlebg1;
|
||||
extern const RGB gTitlebgPal[];
|
||||
extern const RGB_Struct gTitlebgPal[];
|
||||
extern const SiroArchive gAxTitleop1;
|
||||
extern const SiroArchive gAxTitleop2;
|
||||
extern const RGB gTitleopPal[];
|
||||
extern const RGB_Struct gTitleopPal[];
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef GUARD_OTHER_RANDOM_H
|
||||
#define GUARD_OTHER_RANDOM_H
|
||||
|
||||
s32 OtherRandInt(s32 cap);
|
||||
s32 OtherRandInt(s32 exclusiveMax);
|
||||
s32 OtherRandRange(s32 a, s32 b);
|
||||
|
||||
#endif // GUARD_OTHER_RANDOM_H
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@ Pokemon *TryAddPokemonToRecruited(Pokemon*);
|
|||
Pokemon *sub_808D278(s32 species);
|
||||
Pokemon *TryAddLevel1PokemonToRecruited(s32 species, u8 *name, u32 _itemID, const DungeonLocation *location, u16 *moveID);
|
||||
void TryResetPokemonFlags(Pokemon *pokemon);
|
||||
Pokemon *GetPlayerPokemonStruct(void);
|
||||
Pokemon *GetPartnerPokemonStruct(void);
|
||||
Pokemon *sub_808D3BC(void);
|
||||
Pokemon *sub_808D3F8(void);
|
||||
Pokemon *GetLeaderMon1(void);
|
||||
Pokemon *GetPartnerMon(void);
|
||||
Pokemon *GetLeaderMon2(void);
|
||||
Pokemon *GetPartnerMon2(void);
|
||||
Pokemon *GetRecruitedMonBySpecies(s16 species_, s32 sameSpeciesCounter);
|
||||
s32 GetFriendSum_808D480(void);
|
||||
bool8 sub_808D4B0(void);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ enum
|
|||
SUB_WINDOW_INFO,
|
||||
};
|
||||
|
||||
#define MON_SUMMARY_UNK58_COUNT 12
|
||||
|
||||
struct MonSummaryInfo
|
||||
{
|
||||
// size: 0x64
|
||||
|
|
@ -45,7 +47,7 @@ struct MonSummaryInfo
|
|||
u8 tactic;
|
||||
u8 fill55[1];
|
||||
s16 unk56;
|
||||
u8 unk58[12];
|
||||
u8 unk58[MON_SUMMARY_UNK58_COUNT];
|
||||
};
|
||||
|
||||
struct UnkInfoTabStruct
|
||||
|
|
@ -55,6 +57,6 @@ struct UnkInfoTabStruct
|
|||
};
|
||||
|
||||
void ShowPokemonSummaryWindow(s32 which, s32 currSubWindowId, struct MonSummaryInfo *monInfo, struct UnkInfoTabStruct *param_4, u32 windowId);
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 param_3);
|
||||
void SetMonSummaryInfo(struct MonSummaryInfo *dst, struct Pokemon *pokemon, bool8 unlockedEvolutions);
|
||||
|
||||
#endif // GUARD_POKEMON_SUMMARY_WINDOW_H
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
typedef struct unkStruct_203B330
|
||||
{
|
||||
/* 0x0 */ TouchScreenMenuInput input;
|
||||
u8 unkC;
|
||||
u8 dungeonMissionKind; // See enum "DungeonMissionKind"
|
||||
/* 0xD */ u8 dungeonIndex;
|
||||
u32 unk10;
|
||||
WindowTemplate *unk14;
|
||||
WindowTemplates unk18;
|
||||
} unkStruct_203B330;
|
||||
|
||||
bool8 sub_80319A4(u8, u8 dungeon, s32);
|
||||
bool8 sub_80319A4(u8 dungeonMissionKind, u8 dungeon, s32);
|
||||
u32 sub_80319F8(void);
|
||||
void sub_8031A3C(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,20 @@
|
|||
#ifndef GUARD_RESCUE_SCENARIO_H
|
||||
#define GUARD_RESCUE_SCENARIO_H
|
||||
|
||||
#include "constants/rescue_dungeon_id.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
void sub_80972F4(void);
|
||||
void nullsub_128(void);
|
||||
bool8 sub_8097318(s16 param_1);
|
||||
void sub_809733C(s16 param_1, u32 param_2);
|
||||
bool8 sub_8097384(s32 param_1);
|
||||
void sub_80973A8(s32 param_1, u32 param_2);
|
||||
bool8 RescueScenarioConquered(s32 param_1);
|
||||
void sub_8097418(s32 index, bool32);
|
||||
void sub_809733C(s32 _rescueDungId, bool32 param_2);
|
||||
bool8 sub_8097384(s32 rescueDungeon);
|
||||
void sub_80973A8(s32 _rescueDungId, bool32 param_2);
|
||||
bool8 RescueScenarioConquered(s32 rescueDungeonID_);
|
||||
// See enum "RescueDungeonId"
|
||||
void SetRescueScenarioConquered(s32 rescueDungeonID_, bool32 conquered);
|
||||
const u8 *GetRescueDungeonName(s16 rescueDungeonId);
|
||||
const u8 *GetCurrentMissionText(s16 index);
|
||||
// See enum "RescueDungeonId"
|
||||
const u8 *GetCurrentMissionText(s16 rescueDungeonId);
|
||||
|
||||
#endif // GUARD_RESCUE_SCENARIO_H
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ struct UnkStruct_203B414
|
|||
extern struct UnkStruct_203B414 *gUnknown_203B414;
|
||||
extern Dungeon *gDungeon;
|
||||
|
||||
void RunDungeon_Async(DungeonSetupStruct *r8);
|
||||
void RunDungeon_Async(DungeonSetupStruct *setupPtr);
|
||||
bool8 sub_8043CE4(s32 dungeonId);
|
||||
u8 GetFloorType(void);
|
||||
void sub_8043D50(s32 *a0, s32 *a1);
|
||||
void sub_8043D60(void);
|
||||
bool8 TryForcedLoss(bool8 a0);
|
||||
bool8 TryForcedLoss_Async(bool8 a0);
|
||||
void EnforceMaxItemsAndMoney(void);
|
||||
bool8 IsFloorwideFixedRoom(void);
|
||||
bool8 IsCurrentFixedRoomBossFight(void);
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ struct UnkStruct_sub_8011DAC
|
|||
|
||||
// size: 0x5C
|
||||
// This is most likely a debug savestate
|
||||
struct UnkStruct_203B184
|
||||
typedef struct UnkStruct_203B184
|
||||
{
|
||||
/* 0x0 */ TeamInventory *MoneyItems;
|
||||
/* 0x4 */ RecruitedMon *recruitedPokemon;
|
||||
|
|
@ -61,7 +61,7 @@ struct UnkStruct_203B184
|
|||
/* 0x18 */ unkStruct_203B490 *mailInfo;
|
||||
/* 0x1C */ struct RescueTeamData *RescueTeamInfo;
|
||||
/* 0x20 */ struct unkStruct_203B494 *unk20;
|
||||
/* 0x24 */ struct ExclusivePokemonData *ExclusivePokemon;
|
||||
/* 0x24 */ ExclusivePokemonData *exclusivePokemon;
|
||||
/* 0x28 */ bool8 *BoughtFriendAreas;
|
||||
/* 0x2C */ GameOptions *gameOptions;
|
||||
/* 0x30 */ struct PlayTimeStruct *playTime;
|
||||
|
|
@ -75,7 +75,7 @@ struct UnkStruct_203B184
|
|||
u32 unk050;
|
||||
u32 unk054;
|
||||
u32 RngState;
|
||||
};
|
||||
} UnkStruct_203B184;
|
||||
|
||||
void nullsub_33(void);
|
||||
u32 sub_8011C1C(void);
|
||||
|
|
|
|||
|
|
@ -51,11 +51,11 @@ void SetSavingIconCoords(DungeonPos *pos);
|
|||
void sub_8004E8C(unkStruct_2039DB0 *);
|
||||
void sub_8005180(void);
|
||||
void sub_8005304(void);
|
||||
void sub_8005610(OpenedFile *, s32 vramIdx, s32 brightness, const RGB *ramp);
|
||||
const RGB *sub_8005674(const EfoFileData *, s32 vramIdx);
|
||||
void sub_8005610(OpenedFile *, s32 vramIdx, s32 brightness, const RGB_Struct *ramp);
|
||||
const RGB_Struct *sub_8005674(const EfoFileData *, s32 vramIdx);
|
||||
void sub_800569C(DungeonPos *, axdata *, u8);
|
||||
void sub_8005700(DungeonPos *dstPos, axdata *axData);
|
||||
void sub_8005770(s32, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
void sub_8005770(s32, const RGB_Struct *color, s32 brightness, const RGB_Struct *ramp);
|
||||
|
||||
static inline bool8 AxFlag8000(axdata *ax)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ void CreateYesNoDialogueBoxAndPortrait_DefaultNo(const u8 *text, MonPortraitMsg
|
|||
void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const MenuItem *menuItems, void *arg_0, u32 a5, u32 unknownUnused, MonPortraitMsg *monPortraitPtr, u16 flags);
|
||||
void sub_8014490(void);
|
||||
s32 sub_80144A4(s32 *a0);
|
||||
void DrawDialogueBoxString(void);
|
||||
void DrawDialogueBoxString_Async(void);
|
||||
const u8 *FormatString(const u8 *str, u8 *dst, u8 *dstMax, u16 flags);
|
||||
void PrintFormattedStringOnWindow(s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr);
|
||||
void PrintFormattedStringOnWindow2(s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr, s32 lineSpacing);
|
||||
|
|
@ -39,5 +39,6 @@ void PrintFormattedStringOnWindow2(s32 x, s32 y, const u8 *str, u32 windowId, u3
|
|||
#define STR_FORMAT_FLAG_INSTANT_TEXT_ON_AB_PRESS 0x40
|
||||
#define STR_FORMAT_FLAG_NEW_LINE_TERMINATES 0x80
|
||||
#define STR_FORMAT_FLAG_WAIT_FOR_BUTTON_PRESS 0x100
|
||||
#define STR_FORMAT_FLAG_x200 0x200
|
||||
|
||||
#endif // GUARD_STRING_FORMAT_H
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ typedef struct axObject
|
|||
|
||||
typedef struct Palette256
|
||||
{
|
||||
RGB pal[256];
|
||||
RGB_Struct pal[256];
|
||||
} Palette256;
|
||||
|
||||
// size: 0x20
|
||||
|
|
@ -140,7 +140,7 @@ typedef struct EfoFileData
|
|||
/* 0xC */ void *spriteData; // ?
|
||||
/* 0x10 */ Palette256 *unk10; // ?
|
||||
/* 0x14 */ const u32 *tiles;
|
||||
/* 0x18 */ const RGB *pal;
|
||||
/* 0x18 */ const RGB_Struct *pal;
|
||||
/* 0x1C */ s32 tileCount;
|
||||
} EfoFileData;
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ typedef struct EfbFileData
|
|||
const u16 *const *frames;
|
||||
s32 tileCount;
|
||||
const u32 *tiles;
|
||||
const RGB *pal;
|
||||
const RGB_Struct *pal;
|
||||
} EfbFileData;
|
||||
|
||||
#endif // GUARD_AXDATA_H
|
||||
|
|
|
|||
|
|
@ -438,7 +438,7 @@ enum MonsterBehavior
|
|||
BEHAVIOR_JIRACHI,
|
||||
BEHAVIOR_LUGIA,
|
||||
BEHAVIOR_KYOGRE,
|
||||
BEHAVIOR_29,
|
||||
BEHAVIOR_DEOXYS_NORMAL,
|
||||
BEHAVIOR_CELEBI,
|
||||
BEHAVIOR_SMEARGLE,
|
||||
BEHAVIOR_32,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "structs/str_text.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
// size: R=0xC | NDS=0xA?
|
||||
// size: R=0xC | NDS=0xA
|
||||
typedef struct TouchScreenMenuInput
|
||||
{
|
||||
/* R=0x0 | B=0x0 */ u8 unk0;
|
||||
|
|
@ -20,24 +20,24 @@ typedef struct TouchScreenMenuInput
|
|||
#define DEFAULT_MENU_ENTRY_HEIGHT 12
|
||||
#define TWO_LINES_MENU_ENTRY_HEIGHT 24
|
||||
|
||||
// size: R=0x34 | NDS=0x32?
|
||||
// size: R=0x34 | B=0x30
|
||||
typedef struct MenuInputStruct
|
||||
{
|
||||
/* 0x0 */ s32 windowId;
|
||||
/* 0x4 */ u16 unk4;
|
||||
/* 0x6 */ s16 firstEntryY;
|
||||
/* 0x8 */ DungeonPos cursorArrowPos;
|
||||
/* 0xC */ DungeonPos leftRightArrowsPos;
|
||||
/* 0x10 */ s32 entryHeight; // Either 12, or 24 when each entry has text on two lines.
|
||||
/* 0x14 */ DungeonPos unk14;
|
||||
/* 0x18 */ s16 menuIndex;
|
||||
/* 0x1A */ s16 currPageEntries;
|
||||
/* 0x1C */ s16 entriesPerPage;
|
||||
/* 0x1E */ s16 currPage;
|
||||
/* 0x20 */ s16 pagesCount;
|
||||
/* 0x22 */ s16 totalEntriesCount;
|
||||
/* 0x24 */ u16 unk24;
|
||||
/* 0x28 */ TouchScreenMenuInput touchScreen; // For obvious reason unused on GBA
|
||||
/* 0x00 | B=0x00 */ s32 windowId;
|
||||
/* 0x04 | B=0x04 */ u16 unk4;
|
||||
/* 0x06 | B=0x06 */ s16 firstEntryY;
|
||||
/* 0x08 | B=0x08 */ DungeonPos cursorArrowPos;
|
||||
/* 0x0C | B=0x0C */ DungeonPos leftRightArrowsPos;
|
||||
/* 0x10 | B=0x10 */ s32 entryHeight; // Either 12, or 24 when each entry has text on two lines.
|
||||
/* 0x14 | B=0x14 */ DungeonPos unk14;
|
||||
/* 0x18 | B=0x18 */ s16 menuIndex;
|
||||
/* 0x1A | B=0x1A */ s16 currPageEntries;
|
||||
/* 0x1C | B=0x1C */ s16 entriesPerPage;
|
||||
/* 0x1E | B=0x1E */ s16 currPage;
|
||||
/* 0x20 | B=0x20 */ s16 pagesCount;
|
||||
/* 0x22 | B=0x22 */ s16 totalEntriesCount;
|
||||
/* 0x24 | B=0x24 */ u16 unk24;
|
||||
/* 0x28 | B=0x26 */ TouchScreenMenuInput touchScreen; // For obvious reason unused on GBA
|
||||
} MenuInputStruct;
|
||||
|
||||
// size: 0x8
|
||||
|
|
@ -81,66 +81,67 @@ typedef struct unkStructFor8013AA0
|
|||
} unkStructFor8013AA0;
|
||||
|
||||
// Used for creating windows with an input menu.
|
||||
// size: R=0x9C | B=?
|
||||
// size: R=0x9C | B=0x98
|
||||
typedef struct MenuWindow
|
||||
{
|
||||
/* 0x0 */ MenuInputStruct input;
|
||||
/* 0x34 */ u32 menuWinId;
|
||||
/* 0x38 */ WindowTemplate *menuWindow;
|
||||
/* 0x3C */ WindowTemplates windows;
|
||||
/* R=0x00 | B=0x00 */ MenuInputStruct input;
|
||||
/* R=0x34 | B=0x30 */ u32 menuWinId;
|
||||
/* R=0x38 | B=0x34 */ WindowTemplate *menuWindow;
|
||||
/* R=0x3C | B=0x38 */ WindowTemplates windows;
|
||||
} MenuWindow;
|
||||
|
||||
// Same as above, but has one additional WindowHeader field.
|
||||
// size: R=0xA0 | B=0x9C?
|
||||
// Same as MenuWindow, but has one additional WindowHeader field.
|
||||
// size: R=0xA0 | B=0x9C
|
||||
typedef struct MenuHeaderWindow
|
||||
{
|
||||
/* 0x0 */ MenuWindow m; // short name so it's easier to write. 'm' standing for 'menu' or 'menuWindow'
|
||||
/* 0x9C */ WindowHeader header;
|
||||
/* R=0x00 | B=0x00 */ MenuWindow m; // short name so it's easier to write. 'm' standing for 'menu' or 'menuWindow'
|
||||
/* R=0x9C | B=0x98 */ WindowHeader header;
|
||||
} MenuHeaderWindow;
|
||||
|
||||
// I think the `+ 2`s below are actually `+ WINDOW_HEADER_HEIGHT`...
|
||||
|
||||
// These macros are used for updating menu windows, as the last page can have less entries than other pages, so the window's height needs to reflect that.
|
||||
// Note: In order to get matching ASM, this macro had to be created.
|
||||
// It's probable the code below is not exactly how it was originally written, but it generates the same asm.
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT_INTERNAL(ptr, _newHeight) \
|
||||
{ \
|
||||
UNUSED s32 new10; \
|
||||
s16 newHeight; \
|
||||
s16 newHeightVal = (_newHeight); \
|
||||
UNUSED s32 dummyMatch = newHeightVal; \
|
||||
UNUSED s16 oldHeight = (ptr).windows.id[(ptr).menuWinId].height; \
|
||||
dummyMatch = 0; \
|
||||
new10 = newHeightVal + 2; \
|
||||
newHeight = newHeightVal; \
|
||||
\
|
||||
(ptr).windows.id[(ptr).menuWinId].height = newHeight; \
|
||||
(ptr).windows.id[(ptr).menuWinId].unk10 = newHeightVal + 2; \
|
||||
\
|
||||
ResetUnusedInputStruct(); \
|
||||
ShowWindows(&(ptr).windows, TRUE, TRUE); \
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT_INTERNAL(ptr, _newHeight) \
|
||||
{ \
|
||||
UNUSED s32 newtotalHeight; \
|
||||
s16 newHeight; \
|
||||
s16 newHeightVal = (_newHeight); \
|
||||
UNUSED s32 dummyMatch = newHeightVal; \
|
||||
UNUSED s16 oldHeight = (ptr).windows.id[(ptr).menuWinId].height; \
|
||||
dummyMatch = 0; \
|
||||
newtotalHeight = newHeightVal + 2; \
|
||||
newHeight = newHeightVal; \
|
||||
\
|
||||
(ptr).windows.id[(ptr).menuWinId].height = newHeight; \
|
||||
(ptr).windows.id[(ptr).menuWinId].totalHeight = newHeightVal + 2; \
|
||||
\
|
||||
ResetUnusedInputStruct(); \
|
||||
ShowWindows(&(ptr).windows, TRUE, TRUE); \
|
||||
}
|
||||
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT(ptr) \
|
||||
{ \
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT(ptr) \
|
||||
{ \
|
||||
UPDATE_MENU_WINDOW_HEIGHT_INTERNAL(ptr, CalcEntriesTotalHeight((ptr).input.currPageEntries, DEFAULT_MENU_ENTRY_HEIGHT) + 2) \
|
||||
}
|
||||
|
||||
// For Windows where height is the same as unk10.
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT_2(ptr) \
|
||||
{ \
|
||||
s32 newHeightVal = CalcEntriesTotalHeight((ptr).input.currPageEntries, DEFAULT_MENU_ENTRY_HEIGHT) + 2; \
|
||||
UNUSED s16 oldHeight = (ptr).windows.id[(ptr).menuWinId].height; \
|
||||
s16 newHeight = newHeightVal; \
|
||||
\
|
||||
(ptr).windows.id[(ptr).menuWinId].height = newHeight; \
|
||||
(ptr).windows.id[(ptr).menuWinId].unk10 = newHeight; \
|
||||
\
|
||||
ResetUnusedInputStruct(); \
|
||||
ShowWindows(&(ptr).windows, TRUE, TRUE); \
|
||||
#define UPDATE_MENU_WINDOW_HEIGHT_2(ptr) \
|
||||
{ \
|
||||
s32 newHeightVal = CalcEntriesTotalHeight((ptr).input.currPageEntries, DEFAULT_MENU_ENTRY_HEIGHT) + 2; \
|
||||
UNUSED s16 oldHeight = (ptr).windows.id[(ptr).menuWinId].height; \
|
||||
s16 newHeight = newHeightVal; \
|
||||
\
|
||||
(ptr).windows.id[(ptr).menuWinId].height = newHeight; \
|
||||
(ptr).windows.id[(ptr).menuWinId].totalHeight = newHeight; \
|
||||
\
|
||||
ResetUnusedInputStruct(); \
|
||||
ShowWindows(&(ptr).windows, TRUE, TRUE); \
|
||||
}
|
||||
|
||||
// For menu windows with two lines entries(for example job mail)
|
||||
#define UPDATE_TWO_LINES_MENU_WINDOW_HEIGHT(ptr) \
|
||||
{ \
|
||||
#define UPDATE_TWO_LINES_MENU_WINDOW_HEIGHT(ptr) \
|
||||
{ \
|
||||
UPDATE_MENU_WINDOW_HEIGHT_INTERNAL(ptr, CalcTwoLinesEntriesTotalHeight((ptr).input.currPageEntries, TWO_LINES_MENU_ENTRY_HEIGHT) + 2) \
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
#ifndef GUARD_RGB_H
|
||||
#define GUARD_RGB_H
|
||||
|
||||
typedef struct RGB
|
||||
// Size: 0x4
|
||||
typedef struct RGB_Struct
|
||||
{
|
||||
u8 r;
|
||||
u8 g;
|
||||
u8 b;
|
||||
u8 unk4; // Never read, always 0x80. Unused transparency/alpha flag?
|
||||
} RGB;
|
||||
} RGB_Struct;
|
||||
|
||||
#define RGB_R 0
|
||||
#define RGB_G 1
|
||||
|
|
@ -15,17 +16,25 @@ typedef struct RGB
|
|||
#define RGB_UNK 3
|
||||
#define RGB_FIELDS_COUNT 4
|
||||
|
||||
// Size: 0x4
|
||||
typedef struct RGB_Array
|
||||
{
|
||||
u8 c[RGB_FIELDS_COUNT];
|
||||
} RGB_Array;
|
||||
|
||||
// Size: 0x4
|
||||
typedef union RGB_Union
|
||||
{
|
||||
RGB_Array asArr;
|
||||
RGB separate;
|
||||
RGB_Struct separate;
|
||||
} RGB_Union;
|
||||
|
||||
// Size: 0x40
|
||||
typedef struct RGB_Palette
|
||||
{
|
||||
/* 0x0 */ RGB_Struct colors[16];
|
||||
} RGB_Palette;
|
||||
|
||||
#define RGB_TO_GBA(r, g, b) RGB2(((u32)(r) & 0xF8) >> 3, ((g) & 0xF8) >> 3, ((b) & 0xF8) >> 3)
|
||||
// Needed to match, functionally equivalent to the above.
|
||||
#define RGB_TO_GBA2(r, g, b)(((u32)((b) & 0xF8) >> 2 << 9) | (((u32)(g) & 0xF8) >> 3 << 5) | (((u32)(r) & 0xF8) >> 3))
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@ typedef struct unkStruct_202EE8C
|
|||
u32 unk0;
|
||||
u16 unk4;
|
||||
s16 unk6;
|
||||
RGB *unk8;
|
||||
RGB *unkC;
|
||||
RGB *unk10;
|
||||
RGB unk14;
|
||||
RGB_Struct *unk8;
|
||||
RGB_Struct *unkC;
|
||||
RGB_Struct *unk10;
|
||||
RGB_Struct unk14;
|
||||
} unkStruct_202EE8C;
|
||||
|
||||
#endif // GUARD_STR_202EE8C_H
|
||||
|
|
|
|||
|
|
@ -238,6 +238,14 @@ struct MinMaxPosition
|
|||
s32 maxY;
|
||||
};
|
||||
|
||||
enum DungeonMissionKind
|
||||
{
|
||||
DUNGEON_MISSION_UNK0,
|
||||
DUNGEON_MISSION_OUTONRESCUE,
|
||||
DUNGEON_MISSION_ACCEPTEDJOB_RELATED,
|
||||
DUNGEON_MISSION_UNK3,
|
||||
};
|
||||
|
||||
// size: 0x58
|
||||
typedef struct unkDungeon644
|
||||
{
|
||||
|
|
@ -247,10 +255,10 @@ typedef struct unkDungeon644
|
|||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 fill11[3];
|
||||
/* 0x14 */ bool8 canRecruit;
|
||||
/* 0x15 */ u8 unk15;
|
||||
/* 0x16 */ u8 unk16;
|
||||
/* 0x15 */ bool8 canRecruitRescueTeamMazeBosses;
|
||||
/* 0x16 */ bool8 unlockedEvolutions;
|
||||
/* 0x17 */ bool8 hasInventory;
|
||||
/* 0x18 */ u8 unk18;
|
||||
/* 0x18 */ bool8 canChangeLeader;
|
||||
/* 0x19 */ u8 unk19;
|
||||
/* 0x1A */ u8 fill1A[2];
|
||||
/* 0x1C */ s16 fractionalTurn; // Handles turn order when Pokémon have different movement speeds.
|
||||
|
|
@ -271,7 +279,7 @@ typedef struct unkDungeon644
|
|||
/* 0x31 */ u8 unk31;
|
||||
/* 0x32 */ bool8 itemHoldersIdentified;
|
||||
/* 0x33 */ u8 unk33;
|
||||
/* 0x34 */ u8 unk34;
|
||||
/* 0x34 */ u8 missionKind; // See enum "DungeonMissionKind"
|
||||
/* 0x35 */ u8 emptyBellyAlert; // which alert message to show when belly gets empty.
|
||||
/* 0x36 */ u8 windPhase;
|
||||
/* 0x37 */ s8 unk37;
|
||||
|
|
@ -360,18 +368,25 @@ struct DungeonMap
|
|||
|
||||
#define MONSTER_SPAWNS_ARR_COUNT 32
|
||||
|
||||
enum DungeonUnk2Kind
|
||||
{
|
||||
DUNGEON_UNK2_0,
|
||||
DUNGEON_UNK2_1,
|
||||
DUNGEON_UNK2_PITFALL_TRAP,
|
||||
};
|
||||
|
||||
// size: 0x1CEDC
|
||||
typedef struct Dungeon
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk2; // Cutscene-related. See enum "DungeonUnk2Kind"
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
bool8 unk8; // Related to a yes/no prompt for the Music Box creation
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
|
|
@ -379,7 +394,7 @@ typedef struct Dungeon
|
|||
u8 unkD;
|
||||
u8 unkE;
|
||||
/* 0xF */ bool8 noActionInProgress; // Whether the game is currently accepting input. Set to false while action animations play.
|
||||
u8 unk10;
|
||||
u8 unk10; // Forced-loss reason? 0 = partner felled ... 1 = failed to protect client ... 2 = failed to protect client
|
||||
u8 unk11;
|
||||
s16 unk12;
|
||||
s16 startFloorId; // It's always 0 by default(see sDungeonStartingFloor table). If changed, it would be possible for the first entered floor to be displayed as not B1, but the specified number.
|
||||
|
|
@ -389,7 +404,7 @@ typedef struct Dungeon
|
|||
Entity *unkBC;
|
||||
Entity unkC0;
|
||||
struct unkStruct_Dungeon134_sub unk134;
|
||||
/* 0x17C */ RGB colorRamp[COLOR_RAMP_COUNT];
|
||||
/* 0x17C */ RGB_Struct colorRamp[COLOR_RAMP_COUNT];
|
||||
/* 0x57C */ unkDungeon57C unk57C;
|
||||
/* 0x5C0 */ s32 unk5C0;
|
||||
/* 0x5C4 */ struct unkStruct_Dungeon5C4_sub unk5C4[3];
|
||||
|
|
@ -422,7 +437,7 @@ typedef struct Dungeon
|
|||
/* 0x3A0A */ bool8 unk3A0A;
|
||||
/* 0x3A0B */ bool8 unk3A0B;
|
||||
/* 0x3A0C */ u8 monsterHouseRoom; // room index of monster house
|
||||
/* 0x3A0D */ u8 unk3A0D;
|
||||
/* 0x3A0D */ u8 cutscene; // See enum "CutsceneKind"
|
||||
/* 0x3A0E */ s16 tileset;
|
||||
/* 0x3A10 */ s16 unk3A10;
|
||||
/* 0x3A12 */ s16 unk3A12;
|
||||
|
|
@ -449,7 +464,7 @@ typedef struct Dungeon
|
|||
u8 ALIGNED(4) unk12C24[0x930];
|
||||
u16 unk13554[10];
|
||||
OpenedFile *unk13568;
|
||||
u8 unk1356C;
|
||||
bool8 unk1356C; // Cutscene-related
|
||||
u8 fill1356D[0x13570 - 0x1356D];
|
||||
/* 0x13570 */ u8 unk13570;
|
||||
/* 0x13574 */ DungeonPos trapPos;
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@ typedef struct DungeonSetupSubstruct
|
|||
{
|
||||
DungeonLocation unk0;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
/* 0x5 */ bool8 canChangeLeader;
|
||||
/* 0x6 */ bool8 canRecruit;
|
||||
/* 0x7 */ bool8 canRecruitRescueTeamMazeBosses;
|
||||
/* 0x8 */ bool8 unlockedEvolutions;
|
||||
/* 0x9 */ bool8 hasInventory;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
/* 0xB */ u8 missionKind; // See enum "DungeonMissionKind"
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
} DungeonSetupSubstruct;
|
||||
|
|
@ -30,7 +30,7 @@ typedef struct DungeonSetupInfo
|
|||
Pokemon mon;
|
||||
u8 *unk74;
|
||||
Dungeon *dungeon;
|
||||
s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed)
|
||||
s16 unk7C; // 4 = OutOnRescue related ... 5 = dungeon was skipped (quicksave read failed)
|
||||
u8 unk7E;
|
||||
DungeonLocation unk80;
|
||||
DungeonMailSeed unk84;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
#ifndef GUARD_STR_GROUND_SCRIPT_H
|
||||
#define GUARD_STR_GROUND_SCRIPT_H
|
||||
|
||||
#include "constants/script_id.h"
|
||||
#include "constants/script_cmd.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
// size: 0x10
|
||||
typedef struct ScriptCommand
|
||||
{
|
||||
/* 0x0 */ u8 op;
|
||||
/* 0x0 */ u8 op; // See enum "ScriptOpID"
|
||||
/* 0x1 */ u8 argByte;
|
||||
/* 0x2 */ s16 argShort;
|
||||
/* 0x4 */ s32 arg1;
|
||||
|
|
@ -46,13 +48,13 @@ typedef struct ScriptData
|
|||
/* 0x04 */ ScriptInfo script;
|
||||
/* 0x10 */ ScriptInfo savedScript;
|
||||
/* 0x1C */ const ScriptCommand *curPtr;
|
||||
/* 0x20 */ u8 curScriptOp;
|
||||
/* 0x20 */ u8 curScriptOp; // See enum "ScriptOpID"
|
||||
/* 0x22 */ s16 unk22;
|
||||
/* 0x24 */ u16 unk24;
|
||||
/* 0x26 */ s8 unk26;
|
||||
/* 0x26 */ s8 storedDir; // Can be -1.
|
||||
/* 0x28 */ s16 branchDiscriminant;
|
||||
/* 0x2A */ s16 unk2A;
|
||||
/* 0x2C */ s16 unk2C;
|
||||
/* 0x2A */ s16 unk2A; // Seems to be a frame counter for async script commands
|
||||
/* 0x2C */ s16 unk2C; // Another counter for async script commands
|
||||
/* 0x30 */ s32 unk30;
|
||||
/* 0x34 */ PixelPos pos1;
|
||||
/* 0x3C */ PixelPos pos2;
|
||||
|
|
@ -127,15 +129,16 @@ typedef struct GroundMapAction
|
|||
u32 unk10C;
|
||||
} GroundMapAction;
|
||||
|
||||
// Size: 0xC
|
||||
typedef struct ScriptRef
|
||||
{
|
||||
s16 id;
|
||||
s16 type;
|
||||
u8 *name;
|
||||
const ScriptCommand *script;
|
||||
/* 0x0 */ s16 id; // See enum "ScriptID"
|
||||
/* 0x2 */ s16 type;
|
||||
/* 0x4 */ const u8 *name;
|
||||
/* 0x8 */ const ScriptCommand *script;
|
||||
} ScriptRef;
|
||||
|
||||
extern const ScriptRef gFunctionScriptTable[];
|
||||
extern const ScriptRef gFunctionScriptTable[NUM_SCRIPT_IDS];
|
||||
|
||||
struct GroundLink {
|
||||
CompactPos pos;
|
||||
|
|
@ -193,10 +196,10 @@ struct GroundScriptGroup {
|
|||
u32 nSectors;
|
||||
const struct GroundScriptSector *sectors;
|
||||
};
|
||||
struct GroundScriptHeader {
|
||||
typedef struct GroundScriptHeader {
|
||||
u32 nGroups;
|
||||
const struct GroundScriptGroup *groups;
|
||||
const struct GroundLink *links;
|
||||
};
|
||||
} GroundScriptHeader;
|
||||
|
||||
#endif // GUARD_STR_GROUND_SCRIPT_H
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
// size: 0x8
|
||||
typedef struct PortraitGfxSub
|
||||
{
|
||||
/* 0x0 */ const RGB *pal;
|
||||
/* 0x0 */ const RGB_Struct *pal;
|
||||
/* 0x4 */ const u8 *gfx;
|
||||
} PortraitGfxSub;
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ typedef struct MonsterDataEntry
|
|||
/* 0x9 */ u8 bodySize;
|
||||
/* 0xC */ s32 movementSpeed;
|
||||
/* 0x10 */ u16 dialogueSprites; // Bitwise flags for whether a dialogue sprite/portrait is available for each emotion.
|
||||
bool8 unk12;
|
||||
bool8 unk12; // Appears to control whether the "has friend area" check is skipped
|
||||
/* 0x13 */ u8 types[2];
|
||||
/* 0x15 */ u8 movementType;
|
||||
/* 0x16 */ u8 friendArea;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,16 @@
|
|||
|
||||
#include "structs/str_position.h"
|
||||
|
||||
#define WINDOW_HEADER_HEIGHT 2
|
||||
|
||||
enum WinTemplateFlag
|
||||
{
|
||||
WINTEMPLATE_FLAG_NONE = 0,
|
||||
WINTEMPLATE_FLAG_x20 = (1 << 5),
|
||||
WINTEMPLATE_FLAG_x40 = (1 << 6),
|
||||
WINTEMPLATE_FLAG_x80 = (1 << 7), // Appears to skip the border and preparation in `AddWindow()`
|
||||
};
|
||||
|
||||
// size: 0xC
|
||||
typedef struct unkChar
|
||||
{
|
||||
|
|
@ -21,25 +31,25 @@ typedef struct Window
|
|||
/* 0x0 */ s16 x;
|
||||
/* 0x2 */ s16 y;
|
||||
/* 0x4 */ s16 width;
|
||||
/* 0x6 */ s16 height;
|
||||
/* 0x8 */ s16 unk8;
|
||||
/* 0x6 */ s16 height; // Inner height
|
||||
/* 0x8 */ s16 totalHeight; // Including header
|
||||
/* 0xC */ s32 type;
|
||||
/* 0x10 */ u32 unk10;
|
||||
/* 0x14 */ u32 unk14;
|
||||
/* 0x18 */ u32 *unk18;
|
||||
/* 0x1C */ u32 *unk1C;
|
||||
/* 0x20 */ s32 unk20;
|
||||
/* 0x24 */ s32 unk24;
|
||||
/* 0x10 */ u32 unk10; // winGFX start tile?
|
||||
/* 0x14 */ u32 unk14; // unk1C start tile?
|
||||
/* 0x18 */ u32 *winGFX; // 8 packed pixels. Each pixel is 4 bits wide.
|
||||
/* 0x1C */ u32 *unk1C; // Similar to winGFX
|
||||
/* 0x20 */ s32 unk20; // Some width relation to winGFX (stride?)
|
||||
/* 0x24 */ s32 unk24; // Set from winTemplate unk12
|
||||
/* 0x28 */ u32 *unk28; // Somewhere in VRAM
|
||||
/* 0x2C */ s32 unk2C;
|
||||
/* 0x30 */ u32 *unk30; // Somewhere in VRAM?
|
||||
/* 0x34 */ u32 *unk34;
|
||||
/* 0x38 */ s32 unk38;
|
||||
/* 0x3C */ u32 *unk3C;
|
||||
/* 0x40 */ u32 *unk40;
|
||||
/* 0x44 */ u8 unk44;
|
||||
/* 0x45 */ bool8 unk45;
|
||||
/* 0x46 */ u8 unk46;
|
||||
/* 0x2C */ s32 unk2C; // Related to unk38
|
||||
/* 0x30 */ u32 *unk30; // Somewhere in VRAM
|
||||
/* 0x34 */ u32 *unk34; // Related to unk1C and unk3C
|
||||
/* 0x38 */ s32 unk38; // Related to unk2C and unk44
|
||||
/* 0x3C */ u32 *unk3C; // Somewhere in winGFX or unk1C
|
||||
/* 0x40 */ u32 *unk40; // Somewhere in winGFX or unk1C
|
||||
/* 0x44 */ bool8 unk44; // Related to unk38 not being 0
|
||||
/* 0x45 */ bool8 isWinType0;
|
||||
/* 0x46 */ bool8 unk46;
|
||||
} Window;
|
||||
|
||||
// size: 0x4
|
||||
|
|
@ -54,14 +64,14 @@ typedef struct WindowHeader
|
|||
// size: 0x18
|
||||
typedef struct WindowTemplate
|
||||
{
|
||||
u8 unk0;
|
||||
/* 0x4 */ s32 type;
|
||||
/* 0x8 */ DungeonPos pos;
|
||||
/* 0xC */ s16 width;
|
||||
/* 0xE */ s16 height;
|
||||
s16 unk10; // In most cases it's the same as height. If it's smaller than height, the window may look glitchy. Maybe something with tile allocation/how the window is filled?
|
||||
s16 unk12;
|
||||
const WindowHeader *header;
|
||||
/* 0x00 */ u8 flags; // See enum "WinTemplateFlag"
|
||||
/* 0x04 */ s32 type;
|
||||
/* 0x08 */ DungeonPos pos;
|
||||
/* 0x0C */ s16 width;
|
||||
/* 0x0E */ s16 height; // Inner height
|
||||
/* 0x10 */ s16 totalHeight; // Including header
|
||||
/* 0x12 */ s16 unk12; // Related to startTileNum and width
|
||||
/* 0x14 */ const WindowHeader *header;
|
||||
} WindowTemplate;
|
||||
|
||||
#define WINDOW_TYPE_0 0
|
||||
|
|
@ -76,7 +86,7 @@ typedef struct WindowTemplate
|
|||
#define MAX_WINDOWS 4
|
||||
|
||||
// All fields are zeroed out except for type which is set to WINDOW_TYPE_NORMAL.
|
||||
#define WIN_TEMPLATE_DUMMY (WindowTemplate) { .unk0 = 0, .type = WINDOW_TYPE_NORMAL, .pos = { .x = 0, .y = 0 }, .width = 0, .height = 0, .unk10 = 0, .unk12 = 0, .header = NULL }
|
||||
#define WIN_TEMPLATE_DUMMY (WindowTemplate) { .flags = WINTEMPLATE_FLAG_NONE, .type = WINDOW_TYPE_NORMAL, .pos = { .x = 0, .y = 0 }, .width = 0, .height = 0, .totalHeight = 0, .unk12 = 0, .header = NULL }
|
||||
|
||||
// size: 0x60
|
||||
typedef struct WindowTemplates
|
||||
|
|
|
|||
|
|
@ -6,14 +6,15 @@
|
|||
void AddDoubleUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color);
|
||||
void AddUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color);
|
||||
void CallPrepareTextbox_8008C54(u32 windowId);
|
||||
void DisplayMonPortraitSprite(s32 a0, const u8 *compressedData, s32 a2);
|
||||
void DisplayMonPortraitSpriteFlipped(s32 a0, const u8 *compressedData, s32 a1);
|
||||
void DisplayMonPortraitSprite(s32 winID, const u8 *compressedData, s32 palNum);
|
||||
void DisplayMonPortraitSpriteFlipped(s32 winID, const u8 *compressedData, s32 palNum);
|
||||
const unkChar *GetCharacter(s32 chr);
|
||||
void PrepareTextbox_8008C6C(Window *windows, u32 windowId);
|
||||
void ResetWindowBgData(void);
|
||||
void sub_8007A78(u32 a0, s32 x, s32 y, s32 a3, u32 color);
|
||||
void sub_8007B7C(u32 a0, s32 x, s32 y, s32 a3, u32 color);
|
||||
void sub_8007E20(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 *a5, u32 a6);
|
||||
// srcGFX: Each u32 is 8 packed pixels, 4 bits per pixel.
|
||||
void WriteGFXToBG0Window(u32 winID, u32 x, u32 y, u32 w, u32 h, u32 *srcGFX, u32 palNum);
|
||||
void sub_80087EC(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
|
||||
void sub_80089AC(const WindowTemplate *r4, DungeonPos *r5_Str);
|
||||
u32 DrawCharOnWindow(s32 x, s32 y, u32 chr, u32 color, u32 windowId);
|
||||
|
|
|
|||
|
|
@ -1,18 +1,33 @@
|
|||
#ifndef GUARD_TEXTBOX_H
|
||||
#define GUARD_TEXTBOX_H
|
||||
|
||||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_position.h"
|
||||
#include "structs/menu.h"
|
||||
|
||||
enum
|
||||
{
|
||||
SCRIPT_TEXT_TYPE_INSTANT, // 0x32 Used for narration and signposts
|
||||
SCRIPT_TEXT_TYPE_PLAYER, // 0x33 Used for player's thoughts, player's dialogue and Murky Cave's judge of darkness
|
||||
SCRIPT_TEXT_TYPE_QUIET, // 0x33 Used for player's thoughts, player's dialogue and Murky Cave's judge of darkness
|
||||
SCRIPT_TEXT_TYPE_NPC, // 0x34 Used for all NPCs, has the speaker's name and dialogue sound
|
||||
SCRIPT_TEXT_TYPE_LETTER, // 0x35 Used for Mails/Letters. Has a dialogue sound when priting text, similarly to SCRIPT_TEXT_TYPE_NPC
|
||||
SCRIPT_TEXT_TYPE_4, // 0x36 Used for sound-like texts such as "Flap-flap" or roars "Gyaaaaaaaah". It doesn't wait for button press, so the message just closes after printing unless WAIT command is used afterwards.
|
||||
SCRIPT_TEXT_TYPE_OVERHEARD, // 0x36 Used for sound-like texts such as "Flap-flap" or roars "Gyaaaaaaaah". It doesn't wait for button press, so the message just closes after printing unless WAIT command is used afterwards.
|
||||
};
|
||||
|
||||
typedef union MonOrStringPtr
|
||||
{
|
||||
u8 *str;
|
||||
Pokemon *mon;
|
||||
} MonOrStringPtr;
|
||||
|
||||
typedef void* MonOrStrPtr_Arg;
|
||||
|
||||
#define NULL_MONORSTRPTR ((MonOrStrPtr_Arg)NULL)
|
||||
#define MON_TO_MONORSTRPTR(m) ((MonOrStrPtr_Arg)m)
|
||||
#define STR_TO_MONORSTRPTR(s) ((MonOrStrPtr_Arg)s)
|
||||
|
||||
#define SET_MONORSTRPTR(d, m) (d).str = (m)
|
||||
|
||||
void TextboxInit(void);
|
||||
void TextboxFree(void);
|
||||
void TextboxResetAll(void);
|
||||
|
|
@ -30,17 +45,19 @@ bool8 sub_809ABB4(s32 id_, s32 a1_);
|
|||
bool8 sub_809AC18(s32 a0_, s32 a1_);
|
||||
bool8 ScriptSetPortraitInfo(s32 portraitId_, s32 spriteId_, s32 placementId_);
|
||||
bool8 ScriptSetPortraitPosDelta(s32 portraitId_, PixelPos *newPosDelta);
|
||||
bool8 ScriptPrintText(s32 scriptMsgType, s32 speakerId_, const char *text);
|
||||
bool8 ScriptPrintTextOnBg(const char *text);
|
||||
bool8 ScriptPrintTextOnBg2(const char *text);
|
||||
bool8 ScriptPrintTextOnBgAuto(s32 unused, const char *text);
|
||||
bool8 ScriptPrintText(s32 scriptMsgType, s32 speakerId_, const u8 *text);
|
||||
bool8 ScriptPrintTextOnBg(const u8 *text);
|
||||
bool8 ScriptPrintTextOnBg2(const u8 *text);
|
||||
bool8 ScriptPrintTextOnBgAuto(s32 unused, const u8 *text);
|
||||
bool8 sub_809AFAC(void);
|
||||
void sub_809AFC8(s32 a0_, s32 a1, s32 a2_, const char *text);
|
||||
void sub_809AFC8(s32 a0_, s32 a1, s32 a2_, const u8 *text);
|
||||
bool8 sub_809AFFC(u8 *a0);
|
||||
void sub_809B028(const MenuItem * menuItems, s32 a1_, s32 a2, s32 a3, s32 a4_, const char *text);
|
||||
void sub_809B028(const MenuItem * menuItems, s32 a1_, s32 a2, s32 a3, s32 a4_, const u8 *text);
|
||||
bool8 sub_809B18C(s32 *sp);
|
||||
bool8 sub_809B1C0(s32 a0, u32 kind, void *a2);
|
||||
bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, void *a3);
|
||||
// kind: See enum "SpecialTextKind"
|
||||
bool8 ScriptSpecialTextHandler2(s32 kind, u32 a1, MonOrStrPtr_Arg monOrStr);
|
||||
// kind: See enum "SpecialTextKind"
|
||||
bool8 ScriptSpecialTextHandler(s32 kind, u32 a1, s32 a2, MonOrStrPtr_Arg monOrStr);
|
||||
bool8 sub_809B260(s32 *a0);
|
||||
void sub_809B474(void);
|
||||
void sub_809B57C(void);
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@ struct WorldMap
|
|||
|
||||
struct WorldMapInfo
|
||||
{
|
||||
DungeonLocation startLocation;
|
||||
/* 0x0 */ DungeonLocation startLocation;
|
||||
DungeonSetupSubstruct unk4;
|
||||
Pokemon mon;
|
||||
u8 unk6C;
|
||||
/* 0x14 */ Pokemon mon;
|
||||
/* 0x6C */ bool8 canChangeLeader;
|
||||
u8 unk6D[WORLD_MAP_UNK_6D_COUNT];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ void InitBGPaletteBuffer(void)
|
|||
}
|
||||
|
||||
// arm9.bin::020011A0
|
||||
void SetBGPaletteBufferColorRGB(s32 index, const RGB *color, s32 brightnessRaw, const RGB *ramp)
|
||||
void SetBGPaletteBufferColorRGB(s32 index, const RGB_Struct *color, s32 brightnessRaw, const RGB_Struct *ramp)
|
||||
{
|
||||
s32 brightness = brightnessRaw;
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ void SetBGPaletteBufferColorRGB(s32 index, const RGB *color, s32 brightnessRaw,
|
|||
}
|
||||
|
||||
// arm9.bin::02001130
|
||||
void SetBGPaletteBufferColorArray(s32 index, const RGB *color32)
|
||||
void SetBGPaletteBufferColorArray(s32 index, const RGB_Struct *color32)
|
||||
{
|
||||
sBGPaletteRowDirty[index / BG_PALETTE_ROW_SIZE] = TRUE;
|
||||
sBGPaletteBuffer[index] = RGB2(color32->r >> 3, color32->g >> 3, color32->b >> 3);
|
||||
|
|
@ -61,12 +61,12 @@ void SetBGPaletteBufferColor(s32 index, u16 *color)
|
|||
}
|
||||
|
||||
// arm9.bin::02000FC8
|
||||
void nullsub_4(s32 index, const RGB *colorArray, s32 brightness, const RGB *ramp)
|
||||
void nullsub_4(s32 index, const RGB_Struct *colorArray, s32 brightness, const RGB_Struct *ramp)
|
||||
{
|
||||
}
|
||||
|
||||
// arm9.bin::02000F58
|
||||
void nullsub_5(s32 index, const RGB *colorArray)
|
||||
void nullsub_5(s32 index, const RGB_Struct *colorArray)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,25 +42,25 @@ void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction)
|
|||
|
||||
counter = 10;
|
||||
if (IsCurrentFixedRoomBossFight()) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,gUnknown_80FC9E8); // It couldn't be knocked flying!
|
||||
TryDisplayDungeonLoggableMessage3_Async(pokemon,target,gUnknown_80FC9E8); // It couldn't be knocked flying!
|
||||
return;
|
||||
}
|
||||
|
||||
if (pokemon == target) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,gUnknown_80FCA10); // {POKEMON_0} couldn't be knocked flying!
|
||||
TryDisplayDungeonLoggableMessage3_Async(pokemon,target,gUnknown_80FCA10); // {POKEMON_0} couldn't be knocked flying!
|
||||
return;
|
||||
}
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if (AbilityIsActive(target,ABILITY_SUCTION_CUPS)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,gUnknown_80FCBCC); // {POKEMON_0} is anchored! It can't be knocked flying!
|
||||
TryDisplayDungeonLoggableMessage3_Async(pokemon,target,gUnknown_80FCBCC); // {POKEMON_0} is anchored! It can't be knocked flying!
|
||||
return;
|
||||
}
|
||||
|
||||
GetEntInfo(target)->action.direction = (direction + 4) & DIRECTION_MASK;
|
||||
sub_806CDD4(target, 6, (direction + 4) & DIRECTION_MASK);
|
||||
sub_80421C0(target,0x1a3);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,gUnknown_80F8A0C); // {POKEMON_0} was blown away!
|
||||
TryDisplayDungeonLoggableMessage3_Async(pokemon,target,gUnknown_80F8A0C); // {POKEMON_0} was blown away!
|
||||
flag = TRUE;
|
||||
entity = NULL;
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction)
|
|||
|
||||
if (!flag) {
|
||||
sub_807D068(target,&target->pos);
|
||||
sub_806F370(pokemon,target,gBlowAwayDmgValue,0,0,0,DUNGEON_EXIT_FAINTED_FROM_BEING_KNOCKED,RESIDUAL_DAMAGE_REGULAR,0,0);
|
||||
sub_806F370_Async(pokemon,target,gBlowAwayDmgValue,0,0,0,DUNGEON_EXIT_FAINTED_FROM_BEING_KNOCKED,RESIDUAL_DAMAGE_REGULAR,0,0);
|
||||
}
|
||||
if (IsFloorOver()) {
|
||||
return;
|
||||
|
|
@ -115,7 +115,7 @@ void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction)
|
|||
InitPokemonMove(&move, MOVE_REGULAR_ATTACK);
|
||||
if (!sub_80571F0(entity,&move)) {
|
||||
TrySendImmobilizeSleepEndMsg(pokemon,entity);
|
||||
sub_806F370(pokemon,entity,gBlowAwayDmgValue,0,0,0,DUNGEON_EXIT_FELLED_BY_POKEMON_FLYING,RESIDUAL_DAMAGE_REGULAR,0,0);
|
||||
sub_806F370_Async(pokemon,entity,gBlowAwayDmgValue,0,0,0,DUNGEON_EXIT_FELLED_BY_POKEMON_FLYING,RESIDUAL_DAMAGE_REGULAR,0,0);
|
||||
}
|
||||
}
|
||||
if (IsFloorOver())
|
||||
|
|
@ -138,7 +138,7 @@ void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction)
|
|||
sub_807EC28(FALSE);
|
||||
}
|
||||
sub_806A5B8(target);
|
||||
TryTriggerMonsterHouseWithMsg(target,gDungeon->forceMonsterHouse);
|
||||
TryTriggerMonsterHouseWithMsg_Async(target,gDungeon->forceMonsterHouse);
|
||||
}
|
||||
|
||||
void sub_807D068(Entity *pokemon, DungeonPos *pos)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ void sub_8004AA4(unkStruct_202EE8C *a0, OpenedFile *a1, s32 a2)
|
|||
}
|
||||
}
|
||||
|
||||
bool8 sub_8004AF0(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3, s32 a4, const RGB *a5)
|
||||
bool8 sub_8004AF0(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3, s32 a4, const RGB_Struct *a5)
|
||||
{
|
||||
bool8 bVar3;
|
||||
bool8 ret;
|
||||
|
|
@ -65,7 +65,7 @@ bool8 sub_8004AF0(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3, s32 a4, const
|
|||
return ret;
|
||||
}
|
||||
|
||||
UNUSED static bool8 sub_8004B78(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3, s32 a4, const RGB *a5)
|
||||
UNUSED static bool8 sub_8004B78(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3, s32 a4, const RGB_Struct *a5)
|
||||
{
|
||||
bool8 bVar3;
|
||||
bool8 ret;
|
||||
|
|
@ -97,14 +97,14 @@ UNUSED static bool8 sub_8004B78(bool8 a0, unkStruct_202EE8C *a1, s32 a2, s32 a3,
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool8 sub_8004C00(unkStruct_202EE8C *a0, s32 a1, s32 a2, s32 brightness, const RGB *ramp, s16 *a5)
|
||||
bool8 sub_8004C00(unkStruct_202EE8C *a0, s32 a1, s32 a2, s32 brightness, const RGB_Struct *ramp, s16 *a5)
|
||||
{
|
||||
bool8 ret;
|
||||
s32 i;
|
||||
s32 r;
|
||||
s32 g;
|
||||
s32 b;
|
||||
RGB color;
|
||||
RGB_Struct color;
|
||||
|
||||
ret = FALSE;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
void Hang(void)
|
||||
{
|
||||
while(1)
|
||||
while (TRUE)
|
||||
{
|
||||
asm("swi 0x2");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ bool8 sub_801B60C(u32 r0, u8 id, u8 quantity)
|
|||
sUnknown_203B234->unk14.unk0 = 0;
|
||||
sUnknown_203B234->unk14.unk4 = 0;
|
||||
sUnknown_203B234->unk14.unk8 = 1;
|
||||
PrintColoredPokeNameToBuffer(gFormatBuffer_Monsters[0], GetPlayerPokemonStruct(), COLOR_YELLOW);
|
||||
PrintColoredPokeNameToBuffer(gFormatBuffer_Monsters[0], GetLeaderMon1(), COLOR_YELLOW);
|
||||
sub_8090E14(gFormatBuffer_Items[0], &sUnknown_203B234->unk10, &sUnknown_203B234->unk14);
|
||||
sub_801B748(0);
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -32,12 +32,23 @@
|
|||
#include "wonder_mail_802C4C8.h"
|
||||
#include "wonder_mail_802C860.h"
|
||||
|
||||
#define RANK_ICON_W 16
|
||||
#define RANK_ICON_H 16
|
||||
#define RANK_ICON_4BPP_LEN (RANK_ICON_W * RANK_ICON_H / 8)
|
||||
|
||||
// size: 0x8
|
||||
struct TeamBadgeData
|
||||
{
|
||||
/* 0x0 */ u32 *gfx; // Array of (MAX_TEAM_RANKS * RANK_ICON_4BPP_LEN)
|
||||
/* 0x4 */ RGB_Struct *palette; // Array of 16
|
||||
};
|
||||
|
||||
static EWRAM_INIT struct unk_203B250 *sUnknown_203B250 = {NULL};
|
||||
static EWRAM_INIT u32 sUnknown_203B254 = {0};
|
||||
|
||||
#include "data/code_801D014.h"
|
||||
|
||||
static void LoadTeamRankBadge(u32, u32, u32);
|
||||
static void LoadTeamRankBadge(u32 winID, u32 x, u32 y);
|
||||
|
||||
static void sub_801D208(u32 newState);
|
||||
static void sub_801D220(void);
|
||||
|
|
@ -85,7 +96,7 @@ bool8 sub_801D014(Pokemon *a0)
|
|||
sUnknown_203B250->currFriendAreaLocation = MapIdToFriendAreaId(GetGroundMapID());
|
||||
sUnknown_203B250->unk8 = 0;
|
||||
sUnknown_203B250->unk9 = 0;
|
||||
sUnknown_203B250->unkC = GetPlayerPokemonStruct();
|
||||
sUnknown_203B250->unkC = GetLeaderMon1();
|
||||
sUnknown_203B250->unk7 = 0;
|
||||
|
||||
if (sUnknown_203B250->pokeStruct != NULL)
|
||||
|
|
@ -148,13 +159,13 @@ u32 sub_801D178(void)
|
|||
if (sUnknown_203B250->unk8 != 0)
|
||||
return 1;
|
||||
|
||||
if (sUnknown_203B250->unkC != GetPlayerPokemonStruct())
|
||||
if (sUnknown_203B250->unkC != GetLeaderMon1())
|
||||
return 4;
|
||||
|
||||
if ((s16) sub_80A7AE8(7) < 0)
|
||||
return 0;
|
||||
|
||||
if (PokemonIsOnTeam(sub_808D3F8()))
|
||||
if (PokemonIsOnTeam(GetPartnerMon2()))
|
||||
return 0;
|
||||
|
||||
return 4;
|
||||
|
|
@ -304,7 +315,7 @@ static void sub_801D4C0(void)
|
|||
sUnknown_203B250->unk68[loopMax].menuAction = 4;
|
||||
|
||||
loopMax++;
|
||||
if (sub_80023E4(2)) {
|
||||
if (CheckQuest(QUEST_CAN_ACCESS_JOBS)) {
|
||||
sUnknown_203B250->unk68[loopMax].text = sJobList;
|
||||
sUnknown_203B250->unk68[loopMax].menuAction = 9;
|
||||
if (HasNoAcceptedJobs())
|
||||
|
|
@ -588,25 +599,27 @@ static void sub_801D894(void)
|
|||
sub_80073E0(2);
|
||||
}
|
||||
|
||||
static void LoadTeamRankBadge(u32 a0, u32 a1, u32 a2)
|
||||
static void LoadTeamRankBadge(u32 winID, u32 x, u32 y)
|
||||
{
|
||||
OpenedFile *teamBadgeFile;
|
||||
s32 paletteIndex;
|
||||
u8 rank;
|
||||
RGB *colorArray;
|
||||
u8 *teamBadgePic;
|
||||
u32 *gfx;
|
||||
RGB_Struct *pal;
|
||||
s32 i;
|
||||
|
||||
teamBadgeFile = OpenFileAndGetFileDataPtr(sTeamRankBadgeFileName, &gTitleMenuFileArchive);
|
||||
teamBadgePic = ((struct TeamBadgeData *)(teamBadgeFile->data))->pics;
|
||||
colorArray = ((struct TeamBadgeData *)(teamBadgeFile->data))->palette;
|
||||
#define TMRKPAT_DATA ((struct TeamBadgeData *)teamBadgeFile->data)
|
||||
|
||||
for (paletteIndex = 0; paletteIndex < 16; paletteIndex++) {
|
||||
SetBGPaletteBufferColorArray(paletteIndex + 224, colorArray);
|
||||
colorArray++;
|
||||
gfx = TMRKPAT_DATA->gfx;
|
||||
pal = TMRKPAT_DATA->palette;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
SetBGPaletteBufferColorArray(i + 0xE0, pal);
|
||||
pal++;
|
||||
}
|
||||
|
||||
rank = GetRescueTeamRank();
|
||||
teamBadgePic = &teamBadgePic[rank * 128];
|
||||
sub_8007E20(a0, a1, a2, 16, 16, (void *) teamBadgePic, 14);
|
||||
gfx = &gfx[GetRescueTeamRank() * RANK_ICON_4BPP_LEN];
|
||||
WriteGFXToBG0Window(winID, x, y, RANK_ICON_W, RANK_ICON_H, gfx, 14);
|
||||
|
||||
#undef TMRKPAT_DATA
|
||||
CloseFile(teamBadgeFile);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ static u32 sub_80236A4(void)
|
|||
gUnknown_3001B5C->unk8 = 0;
|
||||
|
||||
for (index = 0; index < MONSTER_MAX; index++) {
|
||||
if (sub_8098134(index) && (s16)index == GetBaseSpeciesNoUnown(index))
|
||||
if (GetMonSeenFlag(index) && (s16)index == GetBaseSpeciesNoUnown(index))
|
||||
gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8++] = index;
|
||||
}
|
||||
|
||||
|
|
@ -211,10 +211,10 @@ static u32 sub_80236A4(void)
|
|||
|
||||
static bool8 sub_8023704(u8 unused)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
for (index = 0; index < MONSTER_MAX; index++) {
|
||||
if (sub_8098134(index))
|
||||
for (i = 0; i < MONSTER_MAX; i++) {
|
||||
if (GetMonSeenFlag(i))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,5 +98,5 @@ static void sub_8024604(void)
|
|||
CreateMenuOnWindow(&sUnknown_203B2AC->input, 3, 1, sUnknown_203B2AC->unkE0);
|
||||
iVar3 = &sUnknown_203B2AC->unk4C;
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[sUnknown_203B2AC->speciesNum];
|
||||
SetMonSummaryInfo(iVar3, pokeStruct, sub_80023E4(7));
|
||||
SetMonSummaryInfo(iVar3, pokeStruct, CheckQuest(QUEST_UNLOCKED_EVOLUTIONS));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,124 +9,152 @@
|
|||
#include "text_2.h"
|
||||
#include "text_3.h"
|
||||
|
||||
struct unkStruct_203B3FC
|
||||
// Size: R=0x3D0 | B=0x3CC
|
||||
typedef struct unkStruct_203B3FC
|
||||
{
|
||||
// size: 0x3D0
|
||||
MenuHeaderWindow mh;
|
||||
s16 unkA0[10];
|
||||
};
|
||||
EWRAM_INIT struct unkStruct_203B3FC *gUnknown_203B3FC = NULL;
|
||||
/* R=0x00 | B=0x00 */ MenuHeaderWindow mh;
|
||||
/* R=0xA0 | B=0x9C */ s16 scriptIDs[NUM_SCRIPT_IDS + 1]; // See enum "ScriptID"
|
||||
} unkStruct_203B3FC;
|
||||
|
||||
const WindowTemplate gUnknown_80E7F3C =
|
||||
{
|
||||
0,
|
||||
0x03,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
EWRAM_INIT unkStruct_203B3FC *gUnknown_203B3FC = NULL; // arm9.bin::020EAF84
|
||||
|
||||
const WindowTemplate gUnknown_80E7F54 =
|
||||
{
|
||||
0,
|
||||
0x06,
|
||||
0x02, 0x02,
|
||||
0x18, 0x11,
|
||||
0x11, 0x00,
|
||||
NULL
|
||||
const WindowTemplate gUnknown_80E7F3C = WIN_TEMPLATE_DUMMY;
|
||||
|
||||
const WindowTemplate gUnknown_80E7F54 = {
|
||||
.flags = WINTEMPLATE_FLAG_NONE,
|
||||
.type = WINDOW_TYPE_WITH_HEADER,
|
||||
.pos = { 2, 2 },
|
||||
.width = 24,
|
||||
.height = 17,
|
||||
.totalHeight = 17,
|
||||
.unk12 = 0,
|
||||
.header = NULL
|
||||
};
|
||||
|
||||
static void sub_803B204(void);
|
||||
static void sub_803B284(void);
|
||||
|
||||
// https://decomp.me/scratch/xx1GB - 91.35% matched (Seth)
|
||||
// https://decomp.me/scratch/Gyv2d - Red 90+%
|
||||
// https://decomp.me/scratch/kQeVC - Blue 100%
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
bool8 sub_803B050(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tmovs r0, 0xF4\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tbl MemoryAlloc\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r1, 0x3\n"
|
||||
"\tstr r1, [r0, 0x34]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x84\n"
|
||||
"\tstr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tbl RestoreSavedWindows\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tldr r2, [r1, 0x34]\n"
|
||||
"\tlsls r0, r2, 1\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tadds r1, 0x3C\n"
|
||||
"\tldr r0, _0803B0F8\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x9C\n"
|
||||
"\tstr r0, [r1, 0x14]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl ShowWindows\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tmovs r7, 0xCB\n"
|
||||
"\tlsls r7, 1\n"
|
||||
"\tmovs r6, 0x80\n"
|
||||
"\tlsls r6, 9\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tmovs r0, 0xF4\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tbl MemoryAlloc\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tmovs r1, 0x3\n"
|
||||
"\tstr r1, [r0, 0x34]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x84\n"
|
||||
"\tstr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tbl RestoreSavedWindows\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tldr r2, [r1, 0x34]\n"
|
||||
"\tlsls r0, r2, 1\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tadds r1, 0x3C\n"
|
||||
"\tldr r0, _0803B0F8\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldm r0!, {r2,r3,r5}\n"
|
||||
"\tstm r1!, {r2,r3,r5}\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, [r0, 0x38]\n"
|
||||
"\tadds r0, 0x9C\n"
|
||||
"\tstr r0, [r1, 0x14]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl ShowWindows\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tmovs r7, 0xCB\n"
|
||||
"\tlsls r7, 1\n"
|
||||
"\tmovs r6, 0x80\n"
|
||||
"\tlsls r6, 9\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"_0803B0AE:\n"
|
||||
"\tldr r0, _0803B0FC\n"
|
||||
"\tadds r0, r5, r0\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tcmp r0, 0xA\n"
|
||||
"\tbne _0803B0C8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r0, 0xA0\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrh r3, [r0]\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tldr r0, _0803B0FC\n"
|
||||
"\tadds r0, r5, r0\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tldr r4, _0803B0F4\n"
|
||||
"\tcmp r0, 0xA\n"
|
||||
"\tbne _0803B0C8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r0, 0xA0\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrh r3, [r0]\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"_0803B0C8:\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r3, 0x80\n"
|
||||
"\tlsls r3, 9\n"
|
||||
"\tadds r6, r3\n"
|
||||
"\tadds r5, 0xC\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tcmp r3, r7\n"
|
||||
"\tble _0803B0AE\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl CreateMenuOnWindow\n"
|
||||
"\tbl sub_803B204\n"
|
||||
"\tbl sub_803B284\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1\n"
|
||||
"\t.align 2, 0\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r3, 0x80\n"
|
||||
"\tlsls r3, 9\n"
|
||||
"\tadds r6, r3\n"
|
||||
"\tadds r5, 0xC\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tcmp r3, r7\n"
|
||||
"\tble _0803B0AE\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tbl CreateMenuOnWindow\n"
|
||||
"\tbl sub_803B204\n"
|
||||
"\tbl sub_803B284\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803B0F4: .4byte gUnknown_203B3FC\n"
|
||||
"_0803B0F8: .4byte gUnknown_80E7F54\n"
|
||||
"_0803B0FC: .4byte gFunctionScriptTable");
|
||||
}
|
||||
#else // NONMATCHING
|
||||
// arm9.bin::020566EC
|
||||
bool8 sub_803B050(void)
|
||||
{
|
||||
s32 i;
|
||||
s32 count;
|
||||
s32 max;
|
||||
|
||||
gUnknown_203B3FC = MemoryAlloc(sizeof(unkStruct_203B3FC), 8);
|
||||
gUnknown_203B3FC->mh.m.menuWinId = 3;
|
||||
gUnknown_203B3FC->mh.m.menuWindow = &gUnknown_203B3FC->mh.m.windows.id[gUnknown_203B3FC->mh.m.menuWinId];
|
||||
RestoreSavedWindows(&gUnknown_203B3FC->mh.m.windows);
|
||||
gUnknown_203B3FC->mh.m.windows.id[gUnknown_203B3FC->mh.m.menuWinId] = gUnknown_80E7F54;
|
||||
gUnknown_203B3FC->mh.m.menuWindow->header = &gUnknown_203B3FC->mh.header;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
ShowWindows(&gUnknown_203B3FC->mh.m.windows, TRUE, TRUE);
|
||||
count = 0;
|
||||
|
||||
for (i = 0, max = NUM_SCRIPT_IDS - 1; i <= max; i = (s16)(i + 1)) {
|
||||
const ScriptRef *info = &gFunctionScriptTable[i];
|
||||
if (info->type == 10) {
|
||||
gUnknown_203B3FC->scriptIDs[count++] = i;
|
||||
}
|
||||
}
|
||||
|
||||
CreateMenuOnWindow(&gUnknown_203B3FC->mh.m.input, count, 10, gUnknown_203B3FC->mh.m.menuWinId);
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_803B100(s32 _id)
|
||||
{
|
||||
|
|
@ -139,8 +167,7 @@ void sub_803B100(s32 _id)
|
|||
|
||||
u32 sub_803B120(void)
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B3FC->mh.m.input))
|
||||
{
|
||||
switch (GetKeyPress(&gUnknown_203B3FC->mh.m.input)) {
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
|
|
@ -149,36 +176,35 @@ u32 sub_803B120(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
if((MenuCursorUpdate(&gUnknown_203B3FC->mh.m.input, TRUE) != FALSE))
|
||||
{
|
||||
|
||||
if (MenuCursorUpdate(&gUnknown_203B3FC->mh.m.input, TRUE)) {
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s16 sub_803B168(void)
|
||||
{
|
||||
return gUnknown_203B3FC->unkA0[GET_CURRENT_MENU_ENTRY(gUnknown_203B3FC->mh.m.input)];
|
||||
return gUnknown_203B3FC->scriptIDs[GET_CURRENT_MENU_ENTRY(gUnknown_203B3FC->mh.m.input)];
|
||||
}
|
||||
|
||||
UNUSED static void sub_803B18C(u8 r0)
|
||||
UNUSED static void sub_803B18C(bool8 addSprite)
|
||||
{
|
||||
gUnknown_203B3FC->mh.m.input.totalEntriesCount = 0xE5;
|
||||
gUnknown_203B3FC->mh.m.input.totalEntriesCount = 229;
|
||||
MenuUpdatePagesData(&gUnknown_203B3FC->mh.m.input);
|
||||
sub_803B204();
|
||||
sub_803B284();
|
||||
|
||||
if(r0)
|
||||
if (addSprite)
|
||||
AddMenuCursorSprite(&gUnknown_203B3FC->mh.m.input);
|
||||
}
|
||||
|
||||
void sub_803B1BC(void)
|
||||
{
|
||||
if(gUnknown_203B3FC)
|
||||
{
|
||||
if (gUnknown_203B3FC != NULL) {
|
||||
gUnknown_203B3FC->mh.m.windows.id[gUnknown_203B3FC->mh.m.menuWinId] = gUnknown_80E7F3C;
|
||||
ResetUnusedInputStruct();
|
||||
ShowWindows(&gUnknown_203B3FC->mh.m.windows, TRUE, TRUE);
|
||||
|
|
@ -187,7 +213,7 @@ void sub_803B1BC(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void sub_803B204(void)
|
||||
static void sub_803B204(void)
|
||||
{
|
||||
gUnknown_203B3FC->mh.header.count = 1;
|
||||
gUnknown_203B3FC->mh.header.currId = 0;
|
||||
|
|
@ -198,28 +224,27 @@ static void sub_803B204(void)
|
|||
UPDATE_MENU_WINDOW_HEIGHT(gUnknown_203B3FC->mh.m);
|
||||
}
|
||||
|
||||
static void sub_803B284(void)
|
||||
static void sub_803B284(void)
|
||||
{
|
||||
s32 x, y, i;
|
||||
s32 pageNum;
|
||||
const ScriptRef *ptr;
|
||||
|
||||
|
||||
CallPrepareTextbox_8008C54(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
sub_80073B8(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
PrintStringOnWindow(0xA, 0, "Script", gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
|
||||
PrintStringOnWindow(10, 0, "Script", gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
|
||||
x = (gUnknown_203B3FC->mh.header.width * 8) - 2;
|
||||
pageNum = gUnknown_203B3FC->mh.m.input.currPage + 1;
|
||||
PrintNumOnWindow(x, 0, pageNum, 2, 7, gUnknown_203B3FC->mh.m.menuWinId);
|
||||
|
||||
|
||||
// This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. It can be removed if you don't care about matching.
|
||||
if (x) { i = 0; }
|
||||
|
||||
|
||||
for (i = 0; i < gUnknown_203B3FC->mh.m.input.currPageEntries; i++) {
|
||||
ptr = &gFunctionScriptTable[gUnknown_203B3FC->unkA0[(gUnknown_203B3FC->mh.m.input.currPage * gUnknown_203B3FC->mh.m.input.entriesPerPage) + i]];
|
||||
const ScriptRef *info = &gFunctionScriptTable[gUnknown_203B3FC->scriptIDs[(gUnknown_203B3FC->mh.m.input.currPage * gUnknown_203B3FC->mh.m.input.entriesPerPage) + i]];
|
||||
y = GetMenuEntryYCoord(&gUnknown_203B3FC->mh.m.input, i);
|
||||
PrintStringOnWindow(8, y, ptr->name, gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
PrintStringOnWindow(8, y, info->name, gUnknown_203B3FC->mh.m.menuWinId, 0);
|
||||
}
|
||||
|
||||
|
||||
sub_80073E0(gUnknown_203B3FC->mh.m.menuWinId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ bool8 sub_803C580(WonderMail *param_1)
|
|||
counter = 0;
|
||||
ptr = gUnknown_80E8180;
|
||||
|
||||
if (!sub_80023E4(6))
|
||||
if (!CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
return FALSE;
|
||||
|
||||
for (id = 0; id < ARRAY_COUNT_INT(gUnknown_80E8180); ptr++, id++) {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ EWRAM_DATA OpenedFile *gUnknown_202EC94 = NULL;
|
|||
EWRAM_DATA OpenedFile *gUnknown_202EC98 = NULL;
|
||||
EWRAM_DATA OpenedFile *gUnknown_202EC9C = NULL;
|
||||
EWRAM_DATA OpenedFile *gUnknown_202ECA0 = NULL;
|
||||
EWRAM_DATA RGB gUnknown_202ECA4[33] = {0};
|
||||
EWRAM_DATA RGB_Struct gUnknown_202ECA4[33] = {0};
|
||||
|
||||
struct FileStruct2
|
||||
{
|
||||
|
|
@ -121,7 +121,7 @@ void sub_803E02C(void)
|
|||
void sub_803E13C(void)
|
||||
{
|
||||
s32 i;
|
||||
RGB *pal;
|
||||
RGB_Struct *pal;
|
||||
|
||||
SetWindowBGColor();
|
||||
if (gGameOptionsRef->playerGender != 0)
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ static void sub_8040C4C(Entity *entity, Move *move, bool32 hasSpecialEffect)
|
|||
r4 = sub_800EA84(&sp);
|
||||
sub_8042DD4(r4, entity, 5);
|
||||
savedUnkVar = gUnknown_203B40D;
|
||||
while (1) {
|
||||
while (TRUE) {
|
||||
if (!sub_800E9A8(r4))
|
||||
break;
|
||||
if (!r8)
|
||||
|
|
@ -157,7 +157,7 @@ void sub_8040DA0(Entity *entity, Move *move)
|
|||
gUnknown_202F224 = DungeonRandInt(7);
|
||||
gDungeon->unk181e8.unk18204 = gDungeon->unk181e8.unk18200 = gUnknown_8106A8C[gUnknown_202F224];
|
||||
gFormatArgs[0] = gUnknown_202F224 + 4;
|
||||
LogMessageByIdWithPopupCheckUser(anotherEntity, gPtrMagnitudeMessage);
|
||||
LogMessageByIdWithPopupCheckUser_Async(anotherEntity, gPtrMagnitudeMessage);
|
||||
sub_80421C0(anotherEntity, 0x1A4);
|
||||
}
|
||||
else if (move->id == MOVE_EARTHQUAKE) {
|
||||
|
|
@ -178,7 +178,7 @@ void sub_8040DA0(Entity *entity, Move *move)
|
|||
direction--;
|
||||
direction &= DIRECTION_MASK;
|
||||
sub_806CDD4(entity, 0, direction);
|
||||
sub_803E708(2, 0x15);
|
||||
DungeonWaitFrames_Async(2, 0x15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -189,7 +189,7 @@ void sub_8040DA0(Entity *entity, Move *move)
|
|||
for (i = 0; i < NUM_DIRECTIONS + 1; i++) {
|
||||
direction &= DIRECTION_MASK;
|
||||
sub_806CDD4(entity, 0, direction);
|
||||
sub_803E708(2, 0x15);
|
||||
DungeonWaitFrames_Async(2, 0x15);
|
||||
direction++;
|
||||
}
|
||||
}
|
||||
|
|
@ -323,7 +323,7 @@ void sub_8041168(Entity *entity, Entity *entity2, Move *move, DungeonPos *pos)
|
|||
var3 = sub_800EBC8(&sp);
|
||||
DungeonRunFrameActions(0x5B);
|
||||
sub_8042DD4(var3, entity2, 6);
|
||||
while (1) {
|
||||
while (TRUE) {
|
||||
if (!sub_800E9A8(var3))
|
||||
break;
|
||||
DungeonRunFrameActions(0x28);
|
||||
|
|
|
|||
|
|
@ -275,8 +275,8 @@ void sub_809542C(DungeonMailSeed *param_1)
|
|||
gUnknown_203B480->dungeonSeed = *param_1;
|
||||
MersenneTwister_InitializeState(Rand32Bit());
|
||||
gUnknown_203B480->unk10.unk10 = Random32MersenneTwister();
|
||||
gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum;
|
||||
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
|
||||
gUnknown_203B480->clientSpecies = GetLeaderMon1()->speciesNum;
|
||||
PrintPokeNameToBuffer(buffer, GetLeaderMon1());
|
||||
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
|
||||
gUnknown_203B480->unk24 = sub_8011C34();
|
||||
gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeonSeed.location.id);
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ bool8 sub_80961D8(void)
|
|||
if(!gUnknown_203B490->PKMNNewsReceived[0x35])
|
||||
if(!sub_8096E80(0x35)) floor = 0x35;
|
||||
}
|
||||
if(sub_80023E4(0xF))
|
||||
if(CheckQuest(QUEST_MAZE_15))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x34])
|
||||
if(!sub_8096E80(0x34)) floor = 0x34;
|
||||
|
|
@ -589,7 +589,7 @@ bool8 sub_80961D8(void)
|
|||
if(!gUnknown_203B490->PKMNNewsReceived[0x36])
|
||||
if(!sub_8096E80(0x36)) floor = 0x36;
|
||||
}
|
||||
if(sub_80023E4(6))
|
||||
if(CheckQuest(QUEST_REACHED_POSTGAME))
|
||||
{
|
||||
if(!gUnknown_203B490->PKMNNewsReceived[0x37])
|
||||
if(!sub_8096E80(0x37)) floor = 0x37;
|
||||
|
|
@ -598,7 +598,7 @@ bool8 sub_80961D8(void)
|
|||
if(floor != 0x38) goto _slot;
|
||||
if(num > index) goto _08096392;
|
||||
floor = sub_8096E2C();
|
||||
if(!sub_80023E4(0xE) && (floor > 2)) goto _0809638E;
|
||||
if(!CheckQuest(QUEST_MAZE_14) && (floor > 2)) goto _0809638E;
|
||||
if (floor > 0x31) goto _0809638E;
|
||||
_slot:
|
||||
slot = GetMailboxSlotInfo(num);
|
||||
|
|
@ -653,7 +653,7 @@ bool8 sub_80963B4(void)
|
|||
floor = sub_8096E2C();
|
||||
num = CountFilledMailboxSlots();
|
||||
if(num >= NUM_MAILBOX_SLOTS) return FALSE;
|
||||
if(sub_80023E4(0xE))
|
||||
if(CheckQuest(QUEST_MAZE_14))
|
||||
{
|
||||
if(floor < 0x32)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,38 +32,40 @@ void sub_809965C(void)
|
|||
|
||||
void sub_8099690(u32 param_1)
|
||||
{
|
||||
OpenedFile *temp;
|
||||
RGB *pal;
|
||||
RGB *var2;
|
||||
OpenedFile *file;
|
||||
RGB_Struct *pal;
|
||||
RGB_Struct *var2;
|
||||
u8 gender;
|
||||
|
||||
s32 index;
|
||||
|
||||
temp = OpenFileAndGetFileDataPtr("fontpal", &gSystemFileArchive);
|
||||
file = OpenFileAndGetFileDataPtr("fontpal", &gSystemFileArchive);
|
||||
|
||||
switch(param_1)
|
||||
{
|
||||
default:
|
||||
switch (param_1) {
|
||||
default: {
|
||||
gender = gGameOptionsRef->playerGender;
|
||||
pal = &gFontPalette[0x10];
|
||||
if(gender != 0)
|
||||
pal = &gFontPalette[0x10];
|
||||
if (gender != MALE)
|
||||
pal += 0x40;
|
||||
break;
|
||||
case 1:
|
||||
}
|
||||
case 1: {
|
||||
pal = &gFontPalette[0x60];
|
||||
break;
|
||||
case 2:
|
||||
}
|
||||
case 2: {
|
||||
pal = &gFontPalette[0x70];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sub_800388C(0xF0, (const RGB_Union *)pal, 0x10);
|
||||
var2 = pal;
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
for (index = 0; index < 0x10; index++) {
|
||||
nullsub_5(index + 0xF0, var2++);
|
||||
}
|
||||
CloseFile(temp);
|
||||
|
||||
CloseFile(file);
|
||||
}
|
||||
|
||||
UNUSED static void sub_8099708(u16 a0, RGB_Array a1)
|
||||
|
|
|
|||
1768
src/code_80A26CC.c
1768
src/code_80A26CC.c
File diff suppressed because it is too large
Load Diff
|
|
@ -12,12 +12,12 @@ EWRAM_INIT static Credits1Work *sCredits1Work = {NULL};
|
|||
|
||||
static const WindowTemplate sDummyWinTemplate = WIN_TEMPLATE_DUMMY;
|
||||
static const WindowTemplate gUnknown_80E4A28 = {
|
||||
.unk0 = 0,
|
||||
.flags = WINTEMPLATE_FLAG_NONE,
|
||||
.type = WINDOW_TYPE_ONLY_TEXT,
|
||||
.pos = {2, 2},
|
||||
.pos = { 2, 2 },
|
||||
.width = 26,
|
||||
.height = 16,
|
||||
.unk10 = 16,
|
||||
.totalHeight = 16,
|
||||
.unk12 = 0,
|
||||
.header = NULL,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ const u16 *const gUnknown_9747A00[] = {
|
|||
gUnknown_9746BEC,
|
||||
gUnknown_97472F6,
|
||||
};
|
||||
const RGB gUnknown_9747A40[] = INCBIN_U8("data/effects/efbg000.pmdpal");
|
||||
const RGB_Struct gUnknown_9747A40[] = INCBIN_U8("data/effects/efbg000.pmdpal");
|
||||
const u32 gUnknown_9747E40[] = INCBIN_U32("data/effects/efbg000.4bpp");
|
||||
const struct EfbFileData gUnknown_974BE40 = {
|
||||
ARRAY_COUNT(gUnknown_9747A00), // 16
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ const u16 *const gUnknown_9752F04[] = {
|
|||
gUnknown_97520F0,
|
||||
gUnknown_97527FA,
|
||||
};
|
||||
const RGB gUnknown_9752F44[] = INCBIN_U8("data/effects/efbg001.pmdpal");
|
||||
const RGB_Struct gUnknown_9752F44[] = INCBIN_U8("data/effects/efbg001.pmdpal");
|
||||
const u32 gUnknown_9753344[] = INCBIN_U32("data/effects/efbg001.4bpp");
|
||||
const struct EfbFileData gUnknown_97547C4 = {
|
||||
ARRAY_COUNT(gUnknown_9752F04), // 16
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@ const u16 *const gUnknown_9755E2C[] = {
|
|||
gUnknown_9755DE0,
|
||||
gUnknown_9755E06,
|
||||
};
|
||||
const RGB gUnknown_9755F40[] = INCBIN_U8("data/effects/efbg002.pmdpal");
|
||||
const RGB_Struct gUnknown_9755F40[] = INCBIN_U8("data/effects/efbg002.pmdpal");
|
||||
const u32 gUnknown_9756340[] = INCBIN_U32("data/effects/efbg002.4bpp");
|
||||
const struct EfbFileData gUnknown_9756660 = {
|
||||
ARRAY_COUNT(gUnknown_9755E2C), // 69
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ const u16 *const gUnknown_97647C4[] = {
|
|||
gUnknown_97639B0,
|
||||
gUnknown_97640BA,
|
||||
};
|
||||
const RGB gUnknown_9764844[] = INCBIN_U8("data/effects/efbg003.pmdpal");
|
||||
const RGB_Struct gUnknown_9764844[] = INCBIN_U8("data/effects/efbg003.pmdpal");
|
||||
const u32 gUnknown_9764C44[] = INCBIN_U32("data/effects/efbg003.4bpp");
|
||||
const struct EfbFileData gUnknown_9766A64 = {
|
||||
ARRAY_COUNT(gUnknown_97647C4), // 32
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ const u16 *const gUnknown_97688F8[] = {
|
|||
gUnknown_97688CC,
|
||||
gUnknown_97688E2,
|
||||
};
|
||||
const RGB gUnknown_97689F4[] = INCBIN_U8("data/effects/efbg004.pmdpal");
|
||||
const RGB_Struct gUnknown_97689F4[] = INCBIN_U8("data/effects/efbg004.pmdpal");
|
||||
const u32 gUnknown_9768DF4[] = INCBIN_U32("data/effects/efbg004.4bpp");
|
||||
const struct EfbFileData gUnknown_9769074 = {
|
||||
ARRAY_COUNT(gUnknown_97688F8), // 63
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ const u16 *const gUnknown_9772B74[] = {
|
|||
gUnknown_9771D60,
|
||||
gUnknown_977246A,
|
||||
};
|
||||
const RGB gUnknown_9772BCC[] = INCBIN_U8("data/effects/efbg005.pmdpal");
|
||||
const RGB_Struct gUnknown_9772BCC[] = INCBIN_U8("data/effects/efbg005.pmdpal");
|
||||
const u32 gUnknown_9772FCC[] = INCBIN_U32("data/effects/efbg005.4bpp");
|
||||
const struct EfbFileData gUnknown_9773AEC = {
|
||||
ARRAY_COUNT(gUnknown_9772B74), // 22
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ const u16 *const gUnknown_9781C50[] = {
|
|||
gUnknown_9780E3C,
|
||||
gUnknown_9781546,
|
||||
};
|
||||
const RGB gUnknown_9781CD0[] = INCBIN_U8("data/effects/efbg006.pmdpal");
|
||||
const RGB_Struct gUnknown_9781CD0[] = INCBIN_U8("data/effects/efbg006.pmdpal");
|
||||
const u32 gUnknown_97820D0[] = INCBIN_U32("data/effects/efbg006.4bpp");
|
||||
const struct EfbFileData gUnknown_9783EF0 = {
|
||||
ARRAY_COUNT(gUnknown_9781C50), // 32
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ const u16 *const gUnknown_978BC8C[] = {
|
|||
gUnknown_978B2F4,
|
||||
gUnknown_978B830,
|
||||
};
|
||||
const RGB gUnknown_978BD0C[] = INCBIN_U8("data/effects/efbg007.pmdpal");
|
||||
const RGB_Struct gUnknown_978BD0C[] = INCBIN_U8("data/effects/efbg007.pmdpal");
|
||||
const u32 gUnknown_978C10C[] = INCBIN_U32("data/effects/efbg007.4bpp");
|
||||
const struct EfbFileData gUnknown_978C7AC = {
|
||||
ARRAY_COUNT(gUnknown_978BC8C), // 32
|
||||
|
|
|
|||
|
|
@ -6193,7 +6193,7 @@ const ax_anim gUnknown_9798AD8[] = {
|
|||
{ 0, 0, 0, { 0, 0 }, { 0, 0 } },
|
||||
};
|
||||
const u32 gUnknown_9798B44[] = INCBIN_U32("data/effects/efob000.4bpp");
|
||||
const RGB gUnknown_979A6A4[] = INCBIN_U8("data/effects/efob000.pmdpal");
|
||||
const RGB_Struct gUnknown_979A6A4[] = INCBIN_U8("data/effects/efob000.pmdpal");
|
||||
const ax_pose *const gUnknown_979A6E4[] = {
|
||||
gUnknown_978C7D0,
|
||||
gUnknown_978C802,
|
||||
|
|
|
|||
|
|
@ -332,7 +332,7 @@ const ax_anim gUnknown_979C054[] = {
|
|||
{ 0, 0, 0, { 0, 0 }, { 0, 0 } },
|
||||
};
|
||||
const u32 gUnknown_979C084[] = INCBIN_U32("data/effects/efob001.4bpp");
|
||||
const RGB gUnknown_979DA44[] = INCBIN_U8("data/effects/efob001.pmdpal");
|
||||
const RGB_Struct gUnknown_979DA44[] = INCBIN_U8("data/effects/efob001.pmdpal");
|
||||
const ax_pose *const gUnknown_979DA84[] = {
|
||||
gUnknown_979B740,
|
||||
gUnknown_979B754,
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ const ax_anim gUnknown_979DEA4[] = {
|
|||
{ 0, 0, 0, { 0, 0 }, { 0, 0 } },
|
||||
};
|
||||
const u32 gUnknown_979DF1C[] = INCBIN_U32("data/effects/efob002.4bpp");
|
||||
const RGB gUnknown_979EC1C[] = INCBIN_U8("data/effects/efob002.pmdpal");
|
||||
const RGB_Struct gUnknown_979EC1C[] = INCBIN_U8("data/effects/efob002.pmdpal");
|
||||
const ax_pose *const gUnknown_979EC5C[] = {
|
||||
gUnknown_979DD04,
|
||||
gUnknown_979DD22,
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user