Decomped ExplorerMazeMonsterExists

Decomped by @slaw-22
This commit is contained in:
AnonymousRandomPerson
2026-03-15 23:11:09 -04:00
parent 79d18c4c22
commit 7bd7b148e1
11 changed files with 21877 additions and 21810 deletions

View File

@@ -28,7 +28,7 @@ struct ground_monster {
s8 level; // 0x1: Monster level
u8 joined_at; // 0x2
u8 joined_at_floor; // 0x3: See struct monster::joined_at_floor
u16 id; // 0x4: Monster ID
s16 id; // 0x4: Monster ID
s8 level_at_first_evo; // 0x6: Level upon first evolution, or 0 if not applicable
s8 level_at_second_evo; // 0x7: Level upon second evolution, or 0 if not applicable
u16 iq; // 0x8
@@ -87,4 +87,54 @@ struct team_member {
char name[10]; // 0x5E: Display name of the monster
};
// Table with information about all team members, which are active, and on which teams
struct team_member_table {
// 0x0: List of all recruited team members. Appears to be in chronological order of recruitment.
//
// The first two entries are fixed to the hero and partner. The next three entries are reserved
// for special episode main characters, which differ (and will be updated here) depending on the
// special episode. For example, in SE5, the third entry becomes Grovyle, with the fourth and
// fifth entries becoming Dusknoir after progressing far enough into the special episode.
//
// Subsequent entries are normal recruits. If a member is released, all subsequent members will
// be shifted up, so there should be no gaps in the list.
struct ground_monster members[555];
// 0x936C: Currently active team members for each team, listed in team order. The first index is
// the team ID (see enum team_id), the second is the roster index within the given team.
//
// This struct is updated relatively infrequently. For example, in dungeon mode, it's typically
// only updated at the start of the floor; refer to DUNGEON_STRUCT instead for live data.
struct team_member active_team_rosters[3][4];
// 0x984C: Pointer into active_team_rosters for the currently active team, i.e.,
// &active_team_rosters[active_team]
struct team_member* active_roster;
// 0x9850: Number of active members on TEAM_MAIN
s16 number_active_team_members_main;
// 0x9852: Number of active members on TEAM_SPECIAL_EPISODE
s16 number_active_team_members_se;
// 0x9854: Number of active members on TEAM_RESCUE
s16 number_active_team_members_rescue;
// 0x9856: member indexes (into the members array) for the active rosters of each team
s16 active_team_roster_member_idxs[3][4];
// 0x9870: Pointer into active_team_roster_member_idxs for the currently active team, i.e.,
// &active_team_roster_member_idxs[active_team]
s16* active_roster_member_idxs;
u8 field_0x9874; // Related to TEAM_MAIN (Guess)
u8 field_0x9875; // Related to TEAM_SPECIAL_EPISODE
u8 field_0x9876; // Related to TEAM_RESCUE
enum team_id active_team; // 0x9877: Currently active team
s32 field_0x9878; // Somehow related to explorer maze team.
s32 field_0x987C; // Somehow related to explorer maze team.
// 0x9880: language type of explorer maze team
s8 explorer_maze_team_native_language;
u8 field_0x9881; // Somehow related to explorer maze team.
// 0x9882: Name of the explorer maze team. If the native language of the team doesn't match
// our native language, use the default team name ("Pokémones" for NA) for the explorer
// maze team. When initally saving the team name, it will use all 20 bytes, but when
// copying the name to use in game, it will only use the first 10 bytes.
u8 explorer_maze_team_name[20];
// 0x9898: The 4 explorer maze monsters from selecting 'Team Trade'.
struct ground_monster explorer_maze_monsters[4];
};
#endif

View File

@@ -3,6 +3,13 @@
#define NUM_TACTICS TACTIC_NONE + 1
// There are 3 independent teams that the player can control, depending on the game mode
enum team_id {
TEAM_MAIN = 0, // main team (GAME_MODE_NORMAL)
TEAM_SPECIAL_EPISODE = 1, // team during a special episode (GAME_MODE_SPECIAL_EPISODE)
TEAM_RESCUE = 2, // team during a Pelipper Island rescue (GAME_MODE_RESCUE)
};
// Tactic ID. These are usually encoded as bitvectors.
enum tactic_id {
TACTIC_LETS_GO_TOGETHER = 0,

8
include/main_02058FA4.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef PMDSKY_MAIN_02058FA4_H
#define PMDSKY_MAIN_02058FA4_H
#include "util.h"
bool8 ExplorerMazeMonsterExists(void);
#endif //PMDSKY_MAIN_02058FA4_H