mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-06-01 05:01:11 -05:00
242 lines
5.9 KiB
C
242 lines
5.9 KiB
C
#define _IN_MAP_HEADER_C
|
|
|
|
#include "global.h"
|
|
#include "constants/battle.h"
|
|
#include "constants/map_sections.h"
|
|
#include "constants/maps.h"
|
|
#include "constants/sndseq.h"
|
|
#include "fielddata/mapmatrix/map_matrix.naix"
|
|
#include "fielddata/eventdata/zone_event.naix"
|
|
#include "fielddata/script/scr_seq.naix"
|
|
#include "map_header.h"
|
|
#include "msgdata/msg.naix"
|
|
#include "encounter_tables_narc.h"
|
|
|
|
static const u16 sPokemonCenterMaps[] = {
|
|
MAP_T02PC0101,
|
|
MAP_T03PC0101,
|
|
MAP_T04PC0101,
|
|
MAP_T05PC0101,
|
|
MAP_T06PC0101,
|
|
MAP_T07PC0101,
|
|
MAP_T08PC0101,
|
|
MAP_T09PC0101,
|
|
MAP_T11PC0101,
|
|
MAP_T21PC0101,
|
|
MAP_T22PC0101,
|
|
MAP_T23PC0101,
|
|
MAP_T24PC0101,
|
|
MAP_T25PC0101,
|
|
MAP_T26PC0101,
|
|
MAP_T27PC0101,
|
|
MAP_T28PC0101,
|
|
MAP_T30PC0101,
|
|
MAP_T31PC0101,
|
|
MAP_R03PC0101,
|
|
MAP_R10PC0101,
|
|
MAP_R32PC0101,
|
|
MAP_D32PC0101,
|
|
MAP_D47PC0101,
|
|
MAP_EVERYWHERE,
|
|
};
|
|
|
|
#include "data/map_headers.h"
|
|
|
|
static u32 MapNumberBoundsCheck(u32 map_no) {
|
|
if (map_no >= NELEMS(sMapHeaders)) {
|
|
GF_ASSERT(FALSE);
|
|
map_no = MAP_NOTHING;
|
|
}
|
|
|
|
return map_no;
|
|
}
|
|
|
|
u8 MapHeader_GetAreaDataBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].area_data_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetMoveModelBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].move_model_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetMatrixId(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].matrix_id;
|
|
}
|
|
|
|
u16 MapHeader_GetMsgBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].msg_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetScriptsBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].scripts_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetScriptHeaderBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].script_header_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetDayMusicId(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].day_music_id;
|
|
}
|
|
|
|
u16 MapHeader_GetNightMusicId(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].night_music_id;
|
|
}
|
|
|
|
BOOL MapHeader_HasWildEncounters(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].wild_encounter_bank != ENCDATA_NA;
|
|
}
|
|
|
|
u8 MapHeader_GetWildEncounterBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].wild_encounter_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetEventsBank(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].events_bank;
|
|
}
|
|
|
|
u16 MapHeader_GetMapSec(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].mapsec;
|
|
}
|
|
|
|
u8 MapHeader_GetAreaIcon(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].area_icon;
|
|
}
|
|
|
|
u8 MapHeader_GetMomCallIntroParam(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].unk_12_C;
|
|
}
|
|
|
|
BOOL MapHeader_IsKanto(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].is_kanto;
|
|
}
|
|
|
|
u32 MapHeader_GetWeatherType(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].weather;
|
|
}
|
|
|
|
u32 MapHeader_GetCameraType(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].camera_type;
|
|
}
|
|
|
|
BattleBg MapHeader_GetBattleBg(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return (BattleBg)sMapHeaders[map_no].battle_bg;
|
|
}
|
|
|
|
BOOL MapHeader_IsEscapeRopeAllowed(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].escape_rope_allowed;
|
|
}
|
|
|
|
BOOL MapHeader_IsFlyAllowed(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].fly_allowed;
|
|
}
|
|
|
|
BOOL MapHeader_IsBikeAllowed(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].bike_allowed;
|
|
}
|
|
|
|
BOOL MapHeader_GetField14_1D(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].unk_14_1D;
|
|
}
|
|
|
|
BOOL MapHeader_GetField14_1E(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].unk_14_1E;
|
|
}
|
|
|
|
BOOL MapHeader_GetField14_1F(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].unk_14_1F;
|
|
}
|
|
|
|
u32 MapHeader_GetMapType(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].location_type;
|
|
}
|
|
|
|
u8 MapHeader_GetFollowMode(u32 map_no) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
return sMapHeaders[map_no].follow_mode;
|
|
}
|
|
|
|
void MapHeader_GetWorldMapCoords(u32 map_no, s16 *x, s16 *y) {
|
|
map_no = MapNumberBoundsCheck(map_no);
|
|
|
|
*x = sMapHeaders[map_no].world_map_x;
|
|
*y = sMapHeaders[map_no].world_map_y;
|
|
}
|
|
|
|
BOOL MapHeader_IsOutdoors(u32 map_no) {
|
|
if (MapHeader_IsFlyAllowed(map_no) == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
return MapHeader_GetMapType(map_no) != 1;
|
|
}
|
|
|
|
BOOL MapHeader_MapIsOnMainMatrix(u32 map_no) {
|
|
return MapHeader_GetMatrixId(map_no) == NARC_map_matrix_map_matrix_0000_EVERYWHERE_bin;
|
|
}
|
|
|
|
BOOL MapHeader_IsCave(u32 map_no) {
|
|
return MapHeader_GetMapType(map_no) == 3;
|
|
}
|
|
|
|
BOOL sub_0203B58C(u32 map_no) {
|
|
return MapHeader_GetMapType(map_no) == 4 || MapHeader_GetMapType(map_no) == 5;
|
|
}
|
|
|
|
BOOL sub_0203B5AC(u32 map_no) {
|
|
return MapHeader_GetMapType(map_no) == 1 || MapHeader_GetMapType(map_no) == 2;
|
|
}
|
|
|
|
BOOL MapHeader_MapIsUnionRoom(u32 map_no) {
|
|
return map_no == MAP_UNION;
|
|
}
|
|
|
|
BOOL MapHeader_MapIsAmitySquare(u32 map_no) {
|
|
// Leftover from D/P/Pl.
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL MapHeader_MapIsPokemonCenter(u32 map_no) {
|
|
for (s32 i = 0; i < (s32)NELEMS(sPokemonCenterMaps); i++) {
|
|
if (map_no == sPokemonCenterMaps[i]) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL MapHeader_MapIsPokemonLeagueLobby(u32 map_no) {
|
|
return map_no == MAP_T10R0101;
|
|
}
|
|
|
|
u16 MapHeader_GetMapEvolutionMethod(u32 map_no) {
|
|
// Leftover from D/P/Pl.
|
|
return 0;
|
|
}
|