Files
banjo-kazooie/src/core2/mapModel.c
2024-10-08 06:07:42 +00:00

658 lines
38 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/modelRender.h"
#include "core2/coords.h"
extern UNK_TYPE(s32) func_802E8E88(BKCollisionList *, BKVertexList *, f32[3], f32[3], f32, f32[3], s32, s32);
extern UNK_TYPE(s32) func_802E92AC(BKCollisionList *, BKVertexList *, f32[3], f32, f32[3], s32);
extern s32 func_802EC394(BKModelUnk14List *arg0, s32 arg1, s32 arg2, f32 arg3, s32 arg4, s32 arg5, s32 arg6);
extern void vtxList_getBounds_s32(BKVertexList *, s32[3], s32[3]);
extern void func_802F7BC0(Gfx **, Mtx **, Vtx **);
extern void func_8033A45C(s32, s32);
extern struct5Bs *func_8034A348(struct5Bs *this);
BKCollisionTri *func_80309B48(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 arg3) ;
typedef struct {
s16 map_id; //enum map_e
s16 opa_model_id; //enum asset_e level_model_id
s16 xlu_model_id; //enum asset_e level2_model_id
s16 unk6[3];
s16 unkC[3];
// u8 pad12[0x2];
f32 scale;
}MapModelDescription;
/* .data */
MapModelDescription D_8036ABE0[] = {
{MAP_1_SM_SPIRAL_MOUNTAIN, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 1, 0, 1}, { -3, -4, -2}, 1.0f},
{MAP_2_MM_MUMBOS_MOUNTAIN, ASSET_14AA_MODEL_MM_MUMBOS_MOUNTAIN_OPA, ASSET_14AB_MODEL_MM_MUMBOS_MOUNTAIN_XLU, { 1, 0, 2}, { -2, 0, -2}, 1.0f},
{MAP_5_TTC_BLUBBERS_SHIP, ASSET_146F_MODEL_TTC_BLUBBERS_SHIP_OPA, ASSET_1470_MODEL_TTC_BLUBBERS_SHIP_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6_TTC_NIPPERS_SHELL, ASSET_146D_MODEL_TTC_NIPPERS_SHELL_OPA, ASSET_146E_MODEL_TTC_NIPPERS_SHELL_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_7_TTC_TREASURE_TROVE_COVE, ASSET_146B_MODEL_TTC_TREASURE_TROVE_COVE_OPA, ASSET_146C_MODEL_TTC_TREASURE_TROVE_COVE_XLU, {11, 2, 12}, {-12, -4, -5}, 1.0f},
{MAP_8F_TTC_SHARKFOOD_ISLAND, ASSET_1473_MODEL_TTC_SHARKFOOD_ISLAND_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_A_TTC_SANDCASTLE, ASSET_1471_MODEL_TTC_SANDCASTLE_OPA, ASSET_1472_MODEL_TTC_SANDCASTLE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_B_CC_CLANKERS_CAVERN, ASSET_14ED_MODEL_CC_CLANKERS_CAVERN_OPA, ASSET_14EE_MODEL_CC_CLANKERS_CAVERN_XLU, { 0, 0, 0}, { 0, -2, -1}, 1.0f},
{MAP_C_MM_TICKERS_TOWER, ASSET_14AC_MODEL_SM_TICKERS_TOWER_OPA, ASSET_14AD_MODEL_SM_TICKERS_TOWER_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_D_BGS_BUBBLEGLOOP_SWAMP, ASSET_14D1_MODEL_BGS_BUBBLEGLOOP_SWAMP_OPA, ASSET_14D2_MODEL_BGS_BUBBLEGLOOP_SWAMP_XLU, { 0, 1, 1}, { -1, -1, -1}, 1.0f},
{MAP_E_MM_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_10_BGS_MR_VILE, ASSET_14D3_MODEL_BGS_MR_VILE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_11_BGS_TIPTUP, ASSET_14D4_MODEL_BGS_TIPTUP_OPA, ASSET_14D5_MODEL_BGS_TIPTUP_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_12_GV_GOBIS_VALLEY, ASSET_1474_MODEL_GV_GOBIS_VALLEY_OPA, ASSET_1475_MODEL_GV_GOBIS_VALLEY_XLU, { 4, 0, 4}, { -4, -4, -5}, 1.0f},
{MAP_92_GV_SNS_CHAMBER, ASSET_147E_MODEL_GV_SNS_CHAMBER_OPA, 0, { 0, 1, 0}, { 0, -1, 0}, 1.0f},
{MAP_13_GV_MEMORY_GAME, ASSET_1476_MODEL_GV_MEMORY_GAME_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_14_GV_SANDYBUTTS_MAZE, ASSET_1478_MODEL_GV_SANDYBUTTS_MAZE_OPA, ASSET_1479_MODEL_GV_SANDYBUTTS_MAZE_XLU, { 0, 0, 1}, { 0, -2, 0}, 1.0f},
{MAP_15_GV_WATER_PYRAMID, ASSET_147A_MODEL_GV_WATER_PYRAMIDS_OPA, ASSET_147B_MODEL_GV_WATER_PYRAMIDS_XLU, { 0, 1, 0}, { 0, 0, -1}, 1.0f},
{MAP_16_GV_RUBEES_CHAMBER, ASSET_147C_MODEL_GV_RUBEES_CHAMBER_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_1A_GV_INSIDE_JINXY, ASSET_147D_MODEL_GV_INSIDE_JINXY_OPA, 0, { 0, 1, 1}, { 0, 0, 0}, 1.0f},
{MAP_1B_MMM_MAD_MONSTER_MANSION, ASSET_147F_MODEL_MMM_MAD_MONSTER_MANSION_OPA, ASSET_1480_MODEL_MMM_MAD_MONSTER_MANSION_XLU, { 2, 0, 2}, { -3, 1, -2}, 1.0f},
{MAP_1C_MMM_CHURCH, ASSET_1486_MODEL_MMM_CHURCH_OPA, ASSET_1487_MODEL_MMM_CHURCH_XLU, { 0, 0, 0}, { 0, -1, 0}, 1.0f},
{MAP_1D_MMM_CELLAR, ASSET_1482_MODEL_MMM_CELLAR_OPA, ASSET_149B_MODEL_MMM_CELLAR_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_1E_CS_START_NINTENDO, ASSET_149D_MODEL_CS_START_NINTENDO_OPA, ASSET_14A1_MODEL_CS_START_NINTENDO_XLU, { 0, 1, 0}, { 0, -1, 0}, 1.0f},
{MAP_1F_CS_START_RAREWARE, ASSET_149E_MODEL_CS_START_RAREWARE_OPA, ASSET_14A0_MODEL_CS_START_RAREWARE_XLU, {-1, -1, 1}, { 1, 1, 1}, 1.0f},
{MAP_20_CS_END_NOT_100, ASSET_14A9_MODEL_CS_BEACH_OPA, ASSET_14A5_MODEL_CS_BEACH_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_21_CC_WITCH_SWITCH_ROOM, ASSET_14EF_MODEL_CC_WITCH_SWITCH_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_22_CC_INSIDE_CLANKER, ASSET_14F0_MODEL_CC_INSIDE_CLANKER_OPA, ASSET_14F1_MODEL_CC_INSIDE_CLANKER_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_23_CC_GOLDFEATHER_ROOM, ASSET_14F2_MODEL_CC_GOLD_FEATHER_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_24_MMM_TUMBLARS_SHED, ASSET_1488_MODEL_MMM_TUMBLARS_SHED_OPA, 0, { 0, 1, 0}, { 0, -1, 0}, 1.0f},
{MAP_25_MMM_WELL, ASSET_1495_MODEL_MMM_WELL_OPA, ASSET_1496_MODEL_MMM_WELL_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_26_MMM_NAPPERS_ROOM, ASSET_1485_MODEL_MMM_NAPPERS_ROOM_OPA, ASSET_149A_MODEL_MMM_NAPPERS_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_27_FP_FREEZEEZY_PEAK, ASSET_14C8_MODEL_FP_FREEZEEZY_PEAK_OPA, ASSET_14C9_MODEL_FP_FREEZEEZY_PEAK_XLU, { 2, 0, 2}, { -1, -1, -2}, 1.0f},
{MAP_28_MMM_EGG_ROOM, ASSET_1489_MODEL_MMM_EGG_ROOM_OPA, ASSET_148A_MODEL_MMM_EGG_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_29_MMM_NOTE_ROOM, ASSET_148B_MODEL_MMM_NOTE_ROOM_OPA, ASSET_148C_MODEL_MMM_NOTE_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2A_MMM_FEATHER_ROOM, ASSET_148D_MODEL_MMM_FEATHER_ROOM_OPA, ASSET_148E_MODEL_MMM_FEATHER_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2B_MMM_SECRET_CHURCH_ROOM, ASSET_1483_MODEL_MMM_SECRET_CHURCH_ROOM_OPA, ASSET_1484_MODEL_MMM_SECRET_CHURCH_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2C_MMM_BATHROOM, ASSET_148F_MODEL_MMM_BATHROOM_OPA, ASSET_1490_MODEL_MMM_BATHROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2D_MMM_BEDROOM, ASSET_1491_MODEL_MMM_BEDROOM_OPA, ASSET_1492_MODEL_MMM_BEDROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2E_MMM_HONEYCOMB_ROOM, ASSET_1493_MODEL_MMM_HONEYCOMB_ROOM_OPA, ASSET_1494_MODEL_MMM_HONEYCOMB_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_2F_MMM_WATERDRAIN_BARREL, ASSET_1481_MODEL_MMM_RAINBARREL_OPA, ASSET_1497_MODEL_MMM_RAINBARREL_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_30_MMM_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_8D_MMM_INSIDE_LOGGO, ASSET_1498_MODEL_MMM_INSIDE_LOGGO_OPA, ASSET_1499_MODEL_MMM_INSIDE_LOGGO_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_31_RBB_RUSTY_BUCKET_BAY, ASSET_14B0_MODEL_RBB_RUSTY_BUCKET_BAY_OPA, ASSET_14B1_MODEL_RBB_RUSTY_BUCKET_BAY_XLU, { 8, 0, 3}, { -2, -8, -7}, 1.0f},
{MAP_8B_RBB_ANCHOR_ROOM, ASSET_14C5_MODEL_RBB_ANCHOR_ROOM_OPA, ASSET_14C6_MODEL_RBB_ANCHOR_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_34_RBB_ENGINE_ROOM, ASSET_14B2_MODEL_RBB_ENGINE_ROOM_OPA, ASSET_14B3_MODEL_RBB_ENGINE_ROOM_XLU, { 0, 0, 0}, { 0, -3, 0}, 1.0f},
{MAP_35_RBB_WAREHOUSE, ASSET_14B4_MODEL_RBB_WAREHOUSE_OPA, ASSET_14B5_MODEL_RBB_WAREHOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_36_RBB_BOATHOUSE, ASSET_14B6_MODEL_RBB_BOATHOUSE_OPA, ASSET_14B7_MODEL_RBB_BOATHOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_37_RBB_CONTAINER_1, ASSET_14B8_MODEL_RBB_CONTAINER_1_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_38_RBB_CONTAINER_3, ASSET_14BA_MODEL_RBB_CONTAINER_3_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_39_RBB_CREW_CABIN, ASSET_14BD_MODEL_RBB_CREW_CABIN_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_3A_RBB_BOSS_BOOM_BOX, ASSET_14BE_MODEL_RBB_BOSS_BOOM_BOX_OPA, ASSET_14BF_MODEL_RBB_BOSS_BOOM_BOX_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_3B_RBB_STORAGE_ROOM, ASSET_14C1_MODEL_RBB_STORAGE_ROOM_OPA, ASSET_14C2_MODEL_RBB_STORAGE_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_3C_RBB_KITCHEN, ASSET_14C3_MODEL_RBB_KITCHEN_OPA, ASSET_14C4_MODEL_RBB_KITCHEN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_3D_RBB_NAVIGATION_ROOM, ASSET_14C0_MODEL_RBB_NAVIGATION_ROOM_OPA, ASSET_14C7_MODEL_RBB_NAVIGATION_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_3E_RBB_CONTAINER_2, ASSET_14B9_MODEL_RBB_CONTAINER_2_OPA, 0, { 0, 0, 0}, { 0, 1, 0}, 1.0f},
{MAP_3F_RBB_CAPTAINS_CABIN, ASSET_14BB_MODEL_RBB_CAPTIANS_CABIN_OPA, ASSET_14BC_MODEL_RBB_CAPTIANS_CABIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_40_CCW_HUB, ASSET_14D8_MODEL_CCW_HUB_OPA, ASSET_14E3_MODEL_CCW_HUB_XLU, { 0, 0, 0}, { 0, -3, 0}, 1.0f},
{MAP_41_FP_BOGGYS_IGLOO, ASSET_14CA_MODEL_FP_BOGGYS_IGLOO_OPA, ASSET_14CE_MODEL_FP_BOGGYS_IGLOO_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_7F_FP_WOZZAS_CAVE, ASSET_14CC_MODEL_FP_WOZZAS_CAVE_OPA, ASSET_14CD_MODEL_FP_WOZZAS_CAVE_XLU, { 0, 0, 0}, { 0, -1, 0}, 1.0f},
{MAP_43_CCW_SPRING, ASSET_14D9_MODEL_CCW_SPRING_OPA, ASSET_14E4_MODEL_CCW_SPRING_XLU, { 1, 0, 1}, { -1, -5, 0}, 1.0f},
{MAP_44_CCW_SUMMER, ASSET_14DA_MODEL_CCW_SUMMER_OPA, ASSET_14E5_MODEL_CCW_SUMMER_XLU, { 1, 0, 1}, { -1, -5, 0}, 1.0f},
{MAP_45_CCW_AUTUMN, ASSET_14DB_MODEL_CCW_AUTUMN_OPA, ASSET_14E6_MODEL_CCW_AUTUMN_XLU, { 1, 0, 1}, { -1, -6, 0}, 1.0f},
{MAP_46_CCW_WINTER, ASSET_14DC_MODEL_CCW_WINTER_OPA, ASSET_14E7_MODEL_CCW_WINTER_XLU, { 1, 0, 1}, { -1, -5, 0}, 1.0f},
{MAP_47_BGS_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_48_FP_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_4A_CCW_SPRING_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_4B_CCW_SUMMER_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_4C_CCW_AUTUMN_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_4D_CCW_WINTER_MUMBOS_SKULL, ASSET_14AE_MODEL_MUMBOS_SKULL_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_53_FP_CHRISTMAS_TREE, ASSET_14CB_MODEL_FP_XMAS_TREE_OPA, 0, { 2, 1, 2}, { -2, -1, -2}, 1.0f},
{MAP_5A_CCW_SUMMER_ZUBBA_HIVE, ASSET_14DD_MODEL_CCW_ZUBBA_HIVE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_5B_CCW_SPRING_ZUBBA_HIVE, ASSET_14DD_MODEL_CCW_ZUBBA_HIVE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_5C_CCW_AUTUMN_ZUBBA_HIVE, ASSET_14DD_MODEL_CCW_ZUBBA_HIVE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_5E_CCW_SPRING_NABNUTS_HOUSE, ASSET_14DE_MODEL_CCW_NABNUTS_HOUSE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_5F_CCW_SUMMER_NABNUTS_HOUSE, ASSET_14DE_MODEL_CCW_NABNUTS_HOUSE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_60_CCW_AUTUMN_NABNUTS_HOUSE, ASSET_14DE_MODEL_CCW_NABNUTS_HOUSE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_61_CCW_WINTER_NABNUTS_HOUSE, ASSET_14DE_MODEL_CCW_NABNUTS_HOUSE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_62_CCW_WINTER_HONEYCOMB_ROOM, ASSET_14E0_MODEL_CCW_HONEYCOMB_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_63_CCW_AUTUMN_NABNUTS_WATER_SUPPLY, ASSET_14E1_MODEL_CCW_NABBUTS_STASH_OPA, ASSET_14E2_MODEL_CCW_NABBUTS_STASH_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_64_CCW_WINTER_NABNUTS_WATER_SUPPLY, ASSET_14E1_MODEL_CCW_NABBUTS_STASH_OPA, ASSET_14E2_MODEL_CCW_NABBUTS_STASH_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_65_CCW_SPRING_WHIPCRACK_ROOM, ASSET_14DF_MODEL_CCW_WHIPCRACK_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_66_CCW_SUMMER_WHIPCRACK_ROOM, ASSET_14DF_MODEL_CCW_WHIPCRACK_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_67_CCW_AUTUMN_WHIPCRACK_ROOM, ASSET_14DF_MODEL_CCW_WHIPCRACK_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_68_CCW_WINTER_WHIPCRACK_ROOM, ASSET_14DF_MODEL_CCW_WHIPCRACK_ROOM_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_69_GL_MM_LOBBY, ASSET_14F3_MODEL_GL_MM_LOBBY_OPA, ASSET_150B_MODEL_GL_MM_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6A_GL_TTC_AND_CC_PUZZLE, ASSET_14F4_MODEL_GL_TTC_AND_CC_PUZZLE_OPA, ASSET_150C_MODEL_GL_TTC_AND_CC_PUZZLE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6B_GL_180_NOTE_DOOR, ASSET_14F5_MODEL_GL_180_NOTE_DOOR_OPA, ASSET_1510_MODEL_GL_180_NOTE_DOOR_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6C_GL_RED_CAULDRON_ROOM, ASSET_14F6_MODEL_GL_RED_CAULDRON_ROOM_OPA, ASSET_150D_MODEL_GL_RED_CAULDRON_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6D_GL_TTC_LOBBY, ASSET_14F7_MODEL_GL_TTC_LOBBY_OPA, ASSET_1512_MODEL_GL_TTC_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6E_GL_GV_LOBBY, ASSET_14F8_MODEL_GL_GV_LOBBY_OPA, ASSET_14A8_MODEL_GL_GV_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_6F_GL_FP_LOBBY, ASSET_14F9_MODEL_GL_FP_LOBBY_OPA, ASSET_14FA_MODEL_GL_FP_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_74_GL_GV_PUZZLE, ASSET_14FD_MODEL_GL_GV_PUZZLE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_70_GL_CC_LOBBY, ASSET_14FB_MODEL_GL_CC_LOBBY_OPA, ASSET_1507_MODEL_GL_CC_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_75_GL_MMM_LOBBY, ASSET_14FE_MODEL_GL_MMM_LOBBY_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_7A_GL_CRYPT, ASSET_14FF_MODEL_GL_CRYPT_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_71_GL_STATUE_ROOM, ASSET_1500_MODEL_GL_STATUE_ROOM_OPA, ASSET_150E_MODEL_GL_STATUE_ROOM_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_72_GL_BGS_LOBBY, ASSET_1501_MODEL_GL_BGS_LOBBY_OPA, ASSET_1511_MODEL_GL_BGS_LOBBY_XLU, { 1, 0, 1}, { 0, -2, -1}, 1.0f},
{MAP_76_GL_640_NOTE_DOOR, ASSET_1502_MODEL_GL_640_NOTE_DOOR_OPA, ASSET_1508_MODEL_GL_640_NOTE_DOOR_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_77_GL_RBB_LOBBY, ASSET_1503_MODEL_GL_RBB_LOBBY_OPA, ASSET_1509_MODEL_GL_RBB_LOBBY_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_78_GL_RBB_AND_MMM_PUZZLE, ASSET_1504_MODEL_RBB_AND_MMM_PUZZLE_OPA, ASSET_150A_MODEL_RBB_AND_MMM_PUZZLE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_79_GL_CCW_LOBBY, ASSET_1505_MODEL_GL_CCW_LOBBY_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_80_GL_FF_ENTRANCE, ASSET_1506_MODEL_GL_FF_ENTRANCE_OPA, ASSET_1514_MODEL_GL_FF_ENTRANCE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_93_GL_DINGPOT, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, ASSET_1513_MODEL_CS_KLUNGOS_LAB_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_90_GL_BATTLEMENTS, ASSET_14FC_MODEL_GL_BATTLEMENTS_OPA, ASSET_1515_MODEL_GL_BATTLEMENTS_XLU, { 6, 2, 7}, { -6, -3, -5}, 1.0f},
{MAP_7B_CS_INTRO_GL_DINGPOT_1, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, 0, { 0, 0, 0}, { 0, -1, 0}, 1.6666666f},
{MAP_7C_CS_INTRO_BANJOS_HOUSE_1, ASSET_14A2_MODEL_CS_BANJOS_HOUSE_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.6666666f},
{MAP_7D_CS_SPIRAL_MOUNTAIN_1, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 2}, { 0, -4, -2}, 1.0f},
{MAP_7E_CS_SPIRAL_MOUNTAIN_2, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 2}, { 0, -4, -2}, 1.0f},
{MAP_81_CS_INTRO_GL_DINGPOT_2, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, 0, { 0, 0, 0}, { 0, -1, 0}, 1.6666666f},
{MAP_82_CS_ENTERING_GL_MACHINE_ROOM, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_83_CS_GAME_OVER_MACHINE_ROOM, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_84_CS_UNUSED_MACHINE_ROOM, ASSET_150F_MODEL_CS_KLUNGOS_LAB_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_85_CS_SPIRAL_MOUNTAIN_3, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_86_CS_SPIRAL_MOUNTAIN_4, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, -4, 0}, 1.0f},
{MAP_87_CS_SPIRAL_MOUNTAIN_5, ASSET_14A6_MODEL_CS_INTRO_SPIRAL_MOUNTAIN_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_88_CS_SPIRAL_MOUNTAIN_6, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_94_CS_INTRO_SPIRAL_7, ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA, ASSET_14D0_MODEL_SM_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_98_CS_END_SPIRAL_MOUNTAIN_1, ASSET_149F_MODEL_CS_END_SPIRAL_MOUNTAIN_OPA, ASSET_14A3_MODEL_CS_END_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_99_CS_END_SPIRAL_MOUNTAIN_2, ASSET_149F_MODEL_CS_END_SPIRAL_MOUNTAIN_OPA, ASSET_14A3_MODEL_CS_END_SPIRAL_MOUNTAIN_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_95_CS_END_ALL_100, ASSET_14A9_MODEL_CS_BEACH_OPA, ASSET_14A5_MODEL_CS_BEACH_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_89_CS_INTRO_BANJOS_HOUSE_2, ASSET_14A2_MODEL_CS_BANJOS_HOUSE_OPA, ASSET_14A4_MODEL_CS_BANJOS_HOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.6666666f},
{MAP_8A_CS_INTRO_BANJOS_HOUSE_3, ASSET_14A2_MODEL_CS_BANJOS_HOUSE_OPA, ASSET_14A4_MODEL_CS_BANJOS_HOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.6666666f},
{MAP_96_CS_END_BEACH_1, ASSET_14A9_MODEL_CS_BEACH_OPA, ASSET_14A5_MODEL_CS_BEACH_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_97_CS_END_BEACH_2, ASSET_14A9_MODEL_CS_BEACH_OPA, ASSET_14A5_MODEL_CS_BEACH_XLU, { 2, 0, -3}, { 4, 0, -1}, 1.0f},
{MAP_91_FILE_SELECT, ASSET_14A2_MODEL_CS_BANJOS_HOUSE_OPA, ASSET_14A4_MODEL_CS_BANJOS_HOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.6666666f},
{MAP_8C_SM_BANJOS_HOUSE, ASSET_14A2_MODEL_CS_BANJOS_HOUSE_OPA, ASSET_14A4_MODEL_CS_BANJOS_HOUSE_XLU, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
{MAP_8E_GL_FURNACE_FUN, ASSET_14E8_MODEL_GL_FURNACE_FUN_OPA, 0, { 0, 0, 0}, { 0, 0, 0}, 1.0f},
0
};
/* .bss */
struct {
void *unk0;
void *unk4;
BKCollisionList *collision_opa;
BKCollisionList *collision_xlu;
BKModel *model_opa;
BKModel *model_xlu;
BKModelBin *model_bin_opa;
BKModelBin *model_bin_xlu;
s32 unk20;
struct5Bs *unk24;
MapModelDescription *description;
u8 env_red;
u8 env_green;
u8 env_blue;
f32 scale;
}mapModel;
enum asset_e mapModel_getOpaModelId(void);
/* .code */
static MapModelDescription *_mapModel_mapIdToDescription(enum map_e map_id){
MapModelDescription *i_ptr;
for(i_ptr = D_8036ABE0; i_ptr->map_id != 0; i_ptr++){
if(map_id == i_ptr->map_id){
return i_ptr;
}
}
return NULL;
}
f32 func_80308FDC(f32 arg0[3], u32 arg1) {
s32 phi_s2;
f32 sp70[3];
f32 sp64[3];
f32 sp58[3];
s32 temp_s1;
s32 phi_s1;
sp64[0] = arg0[0];
sp64[1] = arg0[1];
sp64[2] = arg0[2];
sp64[1] += 200.0f;
sp58[0] = arg0[0];
sp58[1] = arg0[1];
sp58[2] = arg0[2];
sp58[1] -= 2000.0f;
if (func_80309B48(sp64, sp58, sp70, arg1)) {
return sp58[1];
}
phi_s2 = 150;
phi_s1 = 1000;
do{
sp64[0] = arg0[0];
sp64[1] = arg0[1];
sp64[2] = arg0[2];
sp64[0] += randf2(-1.0f, 1.0f);
sp64[1] += (f32) phi_s2;
sp64[2] += randf2(-1.0f, 1.0f);
sp58[0] = arg0[0];
sp58[1] = arg0[1];
sp58[2] = arg0[2];
sp58[0] += randf2(-1.0f, 1.0f);
sp58[1] -= (f32) phi_s1;
sp58[2] += randf2(-1.0f, 1.0f);
if (func_80309B48(&sp64, &sp58, &sp70, arg1)) {
return sp58[1];
}
phi_s1 += 2000;
phi_s2 += 300;
}while(phi_s1!= 51000);
return 0.0f;
}
void mapModel_opa_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
s32 temp_a0;
if (func_80320708() && levelSpecificFlags_validateCRC2() && dummy_func_80320248()) {
if (mapModel_getOpaModelId() == ASSET_14CF_MODEL_SM_SPIRAL_MOUNTAIN_OPA) {
func_8033A45C(1, 0);
func_8033A45C(2, 1);
}
switch (map_get()) { /* irregular */
case MAP_88_CS_SPIRAL_MOUNTAIN_6:
if (mapSpecificFlags_get(0) != 0) {
func_8033A45C(1, 1);
func_8033A45C(2, 0);
}
break;
case MAP_12_GV_GOBIS_VALLEY:
func_8033A45C(1, levelSpecificFlags_get(LEVEL_FLAG_6_GV_UNKNOWN) ? 1 : 0);
func_8033A45C(2, jiggyscore_isCollected(JIGGY_42_GV_WATER_PYRAMID) ? 0 : 1);
func_8033A45C(5, jiggyscore_isCollected(JIGGY_42_GV_WATER_PYRAMID) ? 1 : 0);
break;
case MAP_14_GV_SANDYBUTTS_MAZE:
func_8033A45C(5, (func_8028ECAC() == 4) ? 1 : 0);
break;
case MAP_E_MM_MUMBOS_SKULL:
func_8033A45C(1, 1);
func_8033A45C(5, 1);
break;
case MAP_47_BGS_MUMBOS_SKULL:
func_8033A45C(1, 2);
func_8033A45C(5, 2);
break;
case MAP_48_FP_MUMBOS_SKULL:
func_8033A45C(1, 3);
func_8033A45C(5, 3);
break;
case MAP_30_MMM_MUMBOS_SKULL:
func_8033A45C(1, 4);
func_8033A45C(5, 4);
break;
case MAP_4A_CCW_SPRING_MUMBOS_SKULL:
func_8033A45C(1, 5);
func_8033A45C(5, 5);
break;
case MAP_4B_CCW_SUMMER_MUMBOS_SKULL:
func_8033A45C(1, 6);
func_8033A45C(5, 6);
break;
case MAP_4C_CCW_AUTUMN_MUMBOS_SKULL:
func_8033A45C(1, 7);
func_8033A45C(5, 7);
break;
case MAP_4D_CCW_WINTER_MUMBOS_SKULL:
func_8033A45C(1, 8);
func_8033A45C(5, 8);
break;
case MAP_5E_CCW_SPRING_NABNUTS_HOUSE:
case MAP_5F_CCW_SUMMER_NABNUTS_HOUSE:
case MAP_60_CCW_AUTUMN_NABNUTS_HOUSE:
func_8033A45C(1, 1);
func_8033A45C(2, 0);
break;
case MAP_61_CCW_WINTER_NABNUTS_HOUSE:
func_8033A45C(1, 0);
func_8033A45C(2, 1);
break;
case MAP_1D_MMM_CELLAR:
func_8033A45C(1, actorArray_findActorFromActorId(0x191) ? 0 : 1);
break;
case MAP_7C_CS_INTRO_BANJOS_HOUSE_1:
case MAP_89_CS_INTRO_BANJOS_HOUSE_2:
case MAP_8A_CS_INTRO_BANJOS_HOUSE_3:
case MAP_8C_SM_BANJOS_HOUSE:
case MAP_91_FILE_SELECT:
func_8033A45C(5, 1);
break;
case MAP_7B_CS_INTRO_GL_DINGPOT_1:
case MAP_81_CS_INTRO_GL_DINGPOT_2:
func_8033A45C(4, 0);
func_8033A45C(5, 0);
func_8033A45C(6, 0);
break;
case MAP_82_CS_ENTERING_GL_MACHINE_ROOM:
case MAP_83_CS_GAME_OVER_MACHINE_ROOM:
case MAP_84_CS_UNUSED_MACHINE_ROOM:
func_8033A45C(4, 1);
func_8033A45C(5, 1);
func_8033A45C(6, 1);
break;
case MAP_93_GL_DINGPOT:
func_8033A45C(4, 1);
func_8033A45C(5, 1);
func_8033A45C(6, (func_8038EAE0(0xA) || fileProgressFlag_get(FILEPROG_E2_DOOR_OF_GRUNTY_OPEN) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)));
break;
}
func_8033A450(mapModel.unk24);
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
temp_a0 = mapModel.unk0;
if (temp_a0 != 0) {
modelRender_setAnimatedTexturesCacheId(temp_a0);
}
modelRender_setEnvColor(mapModel.env_red, mapModel.env_green, mapModel.env_blue, 0xFF);
modelRender_draw(gfx, mtx, NULL, NULL, mapModel.description->scale, NULL, mapModel.model_bin_opa);
if (!mapModel_has_xlu_bin()) {
func_802F7BC0(gfx, mtx, vtx);
}
}
}
void mapModel_xlu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
s32 temp_a0;
if (mapModel.model_bin_xlu != NULL) {
if (map_get() == MAP_1D_MMM_CELLAR) {
func_8033A45C(1, (actorArray_findActorFromActorId(0x191) != NULL) ? 0 : 1);
}
modelRender_setDepthMode(MODEL_RENDER_DEPTH_COMPARE);
temp_a0 = mapModel.unk4;
if (temp_a0 != 0) {
modelRender_setAnimatedTexturesCacheId(temp_a0);
}
modelRender_setEnvColor(mapModel.env_red, mapModel.env_green, mapModel.env_blue, 0xFF);
modelRender_draw(gfx, mtx, NULL, NULL, mapModel.description->scale, NULL, mapModel.model_bin_xlu);
func_802F7BC0(gfx, mtx, vtx);
}
}
void func_80309704(s32 arg0, s32 arg1, s32 arg2){}
s32 func_80309714(void){
return mapModel.collision_opa->unk12;
}
f32 mapModel_getFloorY(f32 arg0[3]){
return func_80308FDC(arg0, 0x1e0000);
}
BKModel *mapModel_getModel(s32 arg0){
return (arg0) ? mapModel.model_xlu : mapModel.model_opa;
}
BKModelBin *mapModel_getModelBin(s32 arg0){
if(arg0 == 0)
return mapModel.model_bin_opa;
if(arg0 == 1)
return mapModel.model_bin_xlu;
return 0;
}
s32 func_80309794(void){
return mapModel.unk20;
}
struct5Bs *func_803097A0(void){
return mapModel.unk24;
}
void mapModel_getCubeBounds(s32 min[3], s32 max[3]) {
vtxList_getBounds_s32(model_getVtxList(mapModel.model_bin_opa), min, max);
coords_scale(min, max, 1000);
min[0] = min[0] + mapModel.description->unk6[0];
min[1] = min[1] + mapModel.description->unk6[1];
min[2] = min[2] + mapModel.description->unk6[2];
max[0] = max[0] + mapModel.description->unkC[0];
max[1] = max[1] + mapModel.description->unkC[1];
max[2] = max[2] + mapModel.description->unkC[2];
}
void mapModel_getOpaBounds(s32 min[3], s32 max[3]) {
s32 i;
vtxList_getBounds_s32(model_getVtxList(mapModel.model_bin_opa), min, max);
for(i = 0; i < 3; i++){
min[i] *= mapModel.scale;
max[i] *= mapModel.scale;
}
}
void mapModel_getBounds(s32 min[3], s32 max[3]) {
s32 i, j;
s32 xlu_min[3];
s32 xlu_max[3];
vtxList_getBounds_s32(model_getVtxList(mapModel.model_bin_opa), min, max);
for(i = 0; i < 3; i++){
min[i] *= mapModel.scale;
max[i] *= mapModel.scale;
}
if (mapModel.model_bin_xlu != NULL) {
vtxList_getBounds_s32(model_getVtxList(mapModel.model_bin_xlu), xlu_min, xlu_max);
for(j = 0; j < 3; j++){
if(xlu_min[j] < min[j]){
min[j] = xlu_min[j];
}
if(max[j] < xlu_max[j]){
max[j] = xlu_max[j];
}
}
}
}
f32 func_80309B24(f32 arg0[3]){
return func_80308FDC(arg0, 0xf800ff0f);
}
BKCollisionTri *func_80309B48(f32 startPoint[3], f32 endPoint[3], f32 arg2[3], s32 flagFilter) {
BKCollisionTri *opaqueTri;
BKCollisionTri *transparentTri;
mapModel.unk20 = 0;
if (mapModel.collision_xlu != NULL) {
if ((flagFilter & 0x80001F00) == 0x80001F00) {
opaqueTri = NULL;
}
else {
opaqueTri = func_802E76B0(mapModel.collision_opa, model_getVtxList(mapModel.model_bin_opa), startPoint, endPoint, arg2, flagFilter);
}
transparentTri = func_802E76B0(mapModel.collision_xlu, model_getVtxList(mapModel.model_bin_xlu), startPoint, endPoint, arg2, flagFilter);
if (transparentTri != NULL) {
mapModel.unk20 = (s32) mapModel.model_bin_xlu;
return transparentTri;
}
if (opaqueTri != NULL) {
mapModel.unk20 = (s32) mapModel.model_bin_opa;
}
return opaqueTri;
}
else{
opaqueTri = func_802E76B0(mapModel.collision_opa, model_getVtxList(mapModel.model_bin_opa), startPoint, endPoint, arg2, flagFilter);
if (opaqueTri != NULL) {
mapModel.unk20 = (s32) mapModel.model_bin_opa;
}
}
return opaqueTri;
}
BKCollisionTri *func_80309C74(f32 arg0[3], f32 arg1[3], f32 arg2[3], s32 flagFilter, BKModelBin **arg4) {
BKCollisionTri *sp2C;
BKCollisionTri *phi_v0;
sp2C = func_802E76B0(mapModel.collision_opa, model_getVtxList(mapModel.model_bin_opa), arg0, arg1, arg2, flagFilter);
if (sp2C != NULL) {
*arg4 = mapModel.model_bin_opa;
}
if (mapModel.collision_xlu == NULL) {
return sp2C;
}
phi_v0 = func_802E76B0(mapModel.collision_xlu, model_getVtxList(mapModel.model_bin_xlu), arg0, arg1, arg2, flagFilter);
if (phi_v0 != 0) {
*arg4 = mapModel.model_bin_xlu;
}
return (phi_v0 != NULL) ? phi_v0 : sp2C;
}
bool func_80309D58(f32 arg0[3], UNK_TYPE(s32) arg1) {
BKModelUnk14List *temp_v0;
temp_v0 = func_8033A12C(mapModel.model_bin_opa);
if (temp_v0 != NULL) {
return func_802EC394(temp_v0, NULL, NULL, 1.0f, NULL, arg0, arg1);
}
return 0;
}
UNK_TYPE(s32) func_80309DBC(f32 currentPosition[3], f32 next_position[3], f32 arg2, f32 arg3[3], s32 arg4, s32 arg5) {
s32 sp34;
s32 temp_v0_2;
mapModel.unk20 = 0;
sp34 = func_802E8E88(mapModel.collision_opa, model_getVtxList(mapModel.model_bin_opa), currentPosition, next_position, arg2, arg3, arg4, arg5);
if (sp34 != 0) {
mapModel.unk20 = (s32) mapModel.model_bin_opa;
}
if (mapModel.collision_xlu == 0) {
return sp34;
}
temp_v0_2 = func_802E8E88(mapModel.collision_xlu, model_getVtxList(mapModel.model_bin_xlu), currentPosition, next_position, arg2, arg3, arg4, arg5);
if (temp_v0_2 != 0) {
mapModel.unk20 = (s32) mapModel.model_bin_xlu;
return temp_v0_2;
}
return sp34;
}
UNK_TYPE(s32) func_80309EB0(f32 arg0[3], f32 arg1, f32 arg2[3], s32 arg3) {
s32 sp24;
s32 temp_v0_2;
sp24 = func_802E92AC(mapModel.collision_opa, model_getVtxList(mapModel.model_bin_opa), arg0, arg1, arg2, arg3);
if (mapModel.collision_xlu == 0) {
return sp24;
}
temp_v0_2 = func_802E92AC(mapModel.collision_xlu, model_getVtxList(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3);
return (temp_v0_2 != 0) ? temp_v0_2 : sp24;
}
bool mapModel_has_xlu_bin(void) {
return (mapModel.model_bin_opa != NULL) && (mapModel.model_bin_xlu != NULL);
}
bool func_80309FA4(enum map_e map_id){
MapModelDescription *i_ptr;
for(i_ptr = D_8036ABE0; i_ptr->map_id != 0; i_ptr++){
if(map_id == i_ptr->map_id){
return TRUE;
}
}
return FALSE;
}
void mapModel_free(void){
assetcache_release(mapModel.model_bin_opa);
if(mapModel.model_bin_xlu)
assetcache_release(mapModel.model_bin_xlu);
if(mapModel.model_opa)
model_free(mapModel.model_opa);
if(mapModel.model_xlu)
model_free(mapModel.model_xlu);
func_8034A2A8(mapModel.unk24);
}
enum asset_e mapModel_getOpaModelId(void){
return mapModel.description->opa_model_id;
}
void func_8030A078(void) {
BKMeshList *sp24;
MapModelDescription *description;
mapModel.env_blue = 0xFF;
mapModel.env_green = 0xFF;
mapModel.env_red = 0xFF;
description = _mapModel_mapIdToDescription(map_get());;
mapModel.description = description;
mapModel.scale = (f32) description->scale;
mapModel.model_bin_opa = (BKModelBin *)assetcache_get(mapModel.description->opa_model_id);
mapModel.collision_opa = model_getCollisionList(mapModel.model_bin_opa);
mapModel.unk20 = 0;
if (mapModel.description->xlu_model_id != 0) {
mapModel.model_bin_xlu = (BKModelBin *)assetcache_get(mapModel.description->xlu_model_id);
mapModel.collision_xlu = model_getCollisionList(mapModel.model_bin_xlu);
} else {
mapModel.model_bin_xlu = NULL;
mapModel.collision_xlu = NULL;
}
sp24 = func_8033A0B0(mapModel.model_bin_opa);
if (sp24 != NULL) {
mapModel.model_opa = func_8033F5F8(sp24, model_getVtxList(mapModel.model_bin_opa));
} else {
mapModel.model_opa = NULL;
}
if (mapModel.model_opa != NULL) {
func_8034C6DC(mapModel.model_opa);
}
if (mapModel.model_bin_xlu != NULL) {
sp24 = func_8033A0B0(mapModel.model_bin_xlu);
}
else{
sp24 = NULL;
}
if (sp24 != NULL) {
mapModel.model_xlu = func_8033F5F8(sp24, model_getVtxList(mapModel.model_bin_xlu));
} else {
mapModel.model_xlu = 0;
}
if (mapModel.model_xlu != NULL) {
func_8034C6DC(mapModel.model_xlu);
}
mapModel.unk24 = func_8034A2C8();
func_80320B44(func_80309B48, func_80309DBC, func_80309EB0, func_80309794);
if (( mapModel.model_bin_opa != NULL) && (model_getAnimTextureList( mapModel.model_bin_opa) != NULL)) {
mapModel.unk0 = AnimTextureListCache_newList();
AnimTextureListCache_at(mapModel.unk0, model_getAnimTextureList(mapModel.model_bin_opa));
} else {
mapModel.unk0 = NULL;
}
if ((mapModel.model_bin_xlu != NULL) && (model_getAnimTextureList(mapModel.model_bin_xlu) != 0)) {
mapModel.unk4 = AnimTextureListCache_newList();
AnimTextureListCache_at(mapModel.unk4, model_getAnimTextureList(mapModel.model_bin_xlu));
}
else{
mapModel.unk4 = NULL;
}
}
void mapModel_setEnvColor(s32 r, s32 g, s32 b){
mapModel.env_red = r;
mapModel.env_green = g;
mapModel.env_blue = b;
}
void mapModel_defrag(void){
if(mapModel.unk24 != NULL){
mapModel.unk24 = func_8034A348(mapModel.unk24);
}
}