core2/code_935F0.c done

This commit is contained in:
Banjo Kazooie
2022-08-17 23:03:46 -05:00
parent 1b417fb873
commit 51284af959
36 changed files with 787 additions and 527 deletions

File diff suppressed because it is too large Load Diff

283
src/core2/gc/section.c Normal file
View File

@@ -0,0 +1,283 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct {
s16 level_id;
s16 map_id;
s16 exit_id;
}Struct_core2_83D70_1;
typedef struct map_info{
s16 map_id;
s16 level_id;
char* name;
}MapInfo;
/* .data */
MapInfo D_8036B810[0x9B] ={
{0x0000, 0, "(gcSectionMin)"},
{MAP_1_SM_SPIRAL_MOUNTAIN, LEVEL_B_SPIRAL_MOUNTAIN, "Training - Spiral Mountain"},
{MAP_2_MM_MUMBOS_MOUNTAIN, LEVEL_1_MUMBOS_MOUNTAIN, "Jungle"},
{MAP_5_TTC_BLUBBERS_SHIP, LEVEL_2_TREASURE_TROVE_COVE, "Beach - Pirate Ship Hold"},
{MAP_6_TTC_NIPPERS_SHELL, LEVEL_2_TREASURE_TROVE_COVE, "Beach - Crab Shell"},
{MAP_7_TTC_TREASURE_TROVE_COVE, LEVEL_2_TREASURE_TROVE_COVE, "Beach"},
{MAP_8F_TTC_SHARKFOOD_ISLAND, LEVEL_2_TREASURE_TROVE_COVE, "Beach - Sea Castle"},
{MAP_A_TTC_SANDCASTLE, LEVEL_2_TREASURE_TROVE_COVE, "Beach - Sand Castle"},
{MAP_B_CC_CLANKERS_CAVERN, LEVEL_3_CLANKERS_CAVERN, "Whale"},
{MAP_C_MM_TICKERS_TOWER, LEVEL_1_MUMBOS_MOUNTAIN, "Jungle - Termite Hill"},
{MAP_D_BGS_BUBBLEGLOOP_SWAMP, LEVEL_4_BUBBLEGLOOP_SWAMP, "Swamp"},
{MAP_E_MM_MUMBOS_SKULL, LEVEL_1_MUMBOS_MOUNTAIN, "Jungle - Shamen Hut"},
{MAP_10_BGS_MR_VILE, LEVEL_4_BUBBLEGLOOP_SWAMP, "Swamp - Crocodile Head"},
{MAP_11_BGS_TIPTUP, LEVEL_4_BUBBLEGLOOP_SWAMP, "Swamp - Turtle"},
{MAP_12_GV_GOBIS_VALLEY, LEVEL_7_GOBIS_VALLEY, "Desert"},
{MAP_13_GV_MEMORY_GAME, LEVEL_7_GOBIS_VALLEY, "Desert - Pyramid 1 (Match the pairs)"},
{MAP_14_GV_SANDYBUTTS_MAZE, LEVEL_7_GOBIS_VALLEY, "Desert - Pyramid 2 (Maze)"},
{MAP_15_GV_WATER_PYRAMID, LEVEL_7_GOBIS_VALLEY, "Desert - Pyramid 3 (Water)"},
{MAP_16_GV_RUBEES_CHAMBER, LEVEL_7_GOBIS_VALLEY, "Desert - Pyramid 4 (Snake)"},
{MAP_1A_GV_INSIDE_JINXY, LEVEL_7_GOBIS_VALLEY, "Desert - Sphinx"},
{MAP_92_GV_SNS_CHAMBER, LEVEL_7_GOBIS_VALLEY, "Desert - Secret Chamber"},
{MAP_1B_MMM_MAD_MONSTER_MANSION, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House"},
{MAP_1C_MMM_CHURCH, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Organ"},
{MAP_1D_MMM_CELLAR, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Cellar"},
{MAP_1E_CS_START_NINTENDO, LEVEL_D_CUTSCENE, "Intro - Start - Nintendo"},
{MAP_1F_CS_START_RAREWARE, LEVEL_D_CUTSCENE, "Intro - Start - Rareware"},
{MAP_20_CS_END_NOT_100, LEVEL_D_CUTSCENE, "Intro - End Scene 2 : Not 100 "},
{MAP_7B_CS_INTRO_GL_DINGPOT_1, LEVEL_D_CUTSCENE, "Intro - Grunties Lair 1 - Scene 1"},
{MAP_81_CS_INTRO_GL_DINGPOT_2, LEVEL_D_CUTSCENE, "Intro - Grunties Lair 2"},
{MAP_82_CS_ENTERING_GL_MACHINE_ROOM,LEVEL_D_CUTSCENE, "Intro - Grunties Lair 3 - Machine 1"},
{MAP_83_CS_GAME_OVER_MACHINE_ROOM, LEVEL_D_CUTSCENE, "Intro - Grunties Lair 4 - Game Over"},
{MAP_84_CS_UNUSED_MACHINE_ROOM, LEVEL_D_CUTSCENE, "Intro - Grunties Lair 5"},
{MAP_7C_CS_INTRO_BANJOS_HOUSE_1, LEVEL_D_CUTSCENE, "Intro - Inside Banjo's Cave 1 - Scenes 3,7"},
{MAP_89_CS_INTRO_BANJOS_HOUSE_2, LEVEL_D_CUTSCENE, "Intro - Inside Banjo's Cave 2"},
{MAP_8A_CS_INTRO_BANJOS_HOUSE_3, LEVEL_D_CUTSCENE, "Intro - Inside Banjo's Cave 3"},
{MAP_7D_CS_SPIRAL_MOUNTAIN_1, LEVEL_D_CUTSCENE, "Intro - Spiral 'A' - Scenes 2,4"},
{MAP_7E_CS_SPIRAL_MOUNTAIN_2, LEVEL_D_CUTSCENE, "Intro - Spiral 'B' - Scenes 5,6"},
{MAP_85_CS_SPIRAL_MOUNTAIN_3, LEVEL_D_CUTSCENE, "Intro - Spiral 'C'"},
{MAP_86_CS_SPIRAL_MOUNTAIN_4, LEVEL_D_CUTSCENE, "Intro - Spiral 'D'"},
{MAP_87_CS_SPIRAL_MOUNTAIN_5, LEVEL_D_CUTSCENE, "Intro - Spiral 'E'"},
{MAP_88_CS_SPIRAL_MOUNTAIN_6, LEVEL_D_CUTSCENE, "Intro - Spiral 'F'"},
{MAP_94_CS_INTRO_SPIRAL_7, LEVEL_D_CUTSCENE, "Intro - Spiral 'G'"},
{MAP_95_CS_END_ALL_100, LEVEL_D_CUTSCENE, "Intro - End Scene 3 : All 100"},
{MAP_98_CS_END_SPIRAL_MOUNTAIN_1, LEVEL_D_CUTSCENE, "Intro - Grunty Threat 1"},
{MAP_99_CS_END_SPIRAL_MOUNTAIN_2, LEVEL_D_CUTSCENE, "Intro - Grunty Threat 2"},
{MAP_96_CS_END_BEACH_1, LEVEL_D_CUTSCENE, "Intro - End Scene"},
{MAP_97_CS_END_BEACH_2, LEVEL_D_CUTSCENE, "Intro - End Scene 4"},
{MAP_21_CC_WITCH_SWITCH_ROOM, LEVEL_3_CLANKERS_CAVERN, "Whale - Inside A"},
{MAP_22_CC_INSIDE_CLANKER, LEVEL_3_CLANKERS_CAVERN, "Whale - Inside B"},
{MAP_23_CC_GOLDFEATHER_ROOM, LEVEL_3_CLANKERS_CAVERN, "Whale - Inside C"},
{MAP_24_MMM_TUMBLARS_SHED, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Ouija Board"},
{MAP_25_MMM_WELL, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Well"},
{MAP_26_MMM_NAPPERS_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Dining Room"},
{MAP_28_MMM_EGG_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 1"},
{MAP_29_MMM_NOTE_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 2"},
{MAP_2A_MMM_FEATHER_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 3 : Fireplace"},
{MAP_2B_MMM_SECRET_CHURCH_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Church"},
{MAP_2C_MMM_BATHROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 4 : Bathroom"},
{MAP_2D_MMM_BEDROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 5 : Bedroom"},
{MAP_2E_MMM_HONEYCOMB_ROOM, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Room 6 : Floorboards"},
{MAP_2F_MMM_WATERDRAIN_BARREL, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Barrel"},
{MAP_30_MMM_MUMBOS_SKULL, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Shamen Hut"},
{MAP_8D_MMM_INSIDE_LOGGO, LEVEL_A_MAD_MONSTER_MANSION, "Haunted House - Septic Tank"},
{MAP_31_RBB_RUSTY_BUCKET_BAY, LEVEL_9_RUSTY_BUCKET_BAY, "Ship"},
{MAP_8B_RBB_ANCHOR_ROOM, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Anchor room"},
{MAP_34_RBB_ENGINE_ROOM, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Prop Room"},
{MAP_35_RBB_WAREHOUSE, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Warehouse 1"},
{MAP_36_RBB_BOATHOUSE, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Warehouse 2"},
{MAP_37_RBB_CONTAINER_1, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Container 1"},
{MAP_38_RBB_CONTAINER_3, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Container 3"},
{MAP_39_RBB_CREW_CABIN, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Crew Cabin"},
{MAP_3A_RBB_BOSS_BOOM_BOX, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Hold"},
{MAP_3B_RBB_STORAGE_ROOM, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Store Room"},
{MAP_3C_RBB_KITCHEN, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Galley"},
{MAP_3D_RBB_NAVIGATION_ROOM, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Navigation Room"},
{MAP_3E_RBB_CONTAINER_2, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Container 2"},
{MAP_3F_RBB_CAPTAINS_CABIN, LEVEL_9_RUSTY_BUCKET_BAY, "Ship - Captain's Cabin"},
{MAP_40_CCW_HUB, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Start"},
{MAP_43_CCW_SPRING, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Main (Spring)"},
{MAP_44_CCW_SUMMER, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Main (Summer)"},
{MAP_45_CCW_AUTUMN, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Main (Autumn)"},
{MAP_46_CCW_WINTER, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Main (Winter)"},
{MAP_47_BGS_MUMBOS_SKULL, LEVEL_4_BUBBLEGLOOP_SWAMP, "Swamp - Shamen Hut"},
{MAP_4A_CCW_SPRING_MUMBOS_SKULL, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Shamen Hut (Spring)"},
{MAP_4B_CCW_SUMMER_MUMBOS_SKULL, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Shamen Hut (Summer)"},
{MAP_4C_CCW_AUTUMN_MUMBOS_SKULL, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Shamen Hut (Autumn)"},
{MAP_4D_CCW_WINTER_MUMBOS_SKULL, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Shamen Hut (Winter)"},
{MAP_53_FP_CHRISTMAS_TREE, LEVEL_5_FREEZEEZY_PEAK, "Snow - Inside Xmas Tree"},
{MAP_41_FP_BOGGYS_IGLOO, LEVEL_5_FREEZEEZY_PEAK, "Snow - Igloo"},
{MAP_27_FP_FREEZEEZY_PEAK, LEVEL_5_FREEZEEZY_PEAK, "Snow"},
{MAP_48_FP_MUMBOS_SKULL, LEVEL_5_FREEZEEZY_PEAK, "Snow - Shamen Hut"},
{MAP_5A_CCW_SUMMER_ZUBBA_HIVE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Wasp Hive (Summer)"},
{MAP_5B_CCW_SPRING_ZUBBA_HIVE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Wasp Hive (Spring)"},
{MAP_5C_CCW_AUTUMN_ZUBBA_HIVE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Wasp Hive (Autumn)"},
{MAP_5E_CCW_SPRING_NABNUTS_HOUSE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel House (Spring)"},
{MAP_5F_CCW_SUMMER_NABNUTS_HOUSE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel House (Summer)"},
{MAP_60_CCW_AUTUMN_NABNUTS_HOUSE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel House (Autumn)"},
{MAP_61_CCW_WINTER_NABNUTS_HOUSE, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel House (Winter)"},
{MAP_62_CCW_WINTER_HONEYCOMB_ROOM, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel Room 1 (Winter)"},
{MAP_63_CCW_AUTUMN_NABNUTS_WATER_SUPPLY, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel Room 2 (Autumn)"},
{MAP_64_CCW_WINTER_NABNUTS_WATER_SUPPLY, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Squirrel Room 2 (Winter)"},
{MAP_65_CCW_SPRING_WHIPCRACK_ROOM, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Top (Spring)"},
{MAP_66_CCW_SUMMER_WHIPCRACK_ROOM, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Top (Summer)"},
{MAP_67_CCW_AUTUMN_WHIPCRACK_ROOM, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Top (Autumn)"},
{MAP_68_CCW_WINTER_WHIPCRACK_ROOM, LEVEL_8_CLICK_CLOCK_WOOD, "Tree - Top (Winter)"},
{MAP_69_GL_MM_LOBBY, LEVEL_6_LAIR, "Witch - Flr 1, Area 1 : Mumbo"},
{MAP_6A_GL_TTC_AND_CC_PUZZLE, LEVEL_6_LAIR, "Witch - Flr 1, Area 2"},
{MAP_6B_GL_180_NOTE_DOOR, LEVEL_6_LAIR, "Witch - Flr 1, Area 3"},
{MAP_6C_GL_RED_CAULDRON_ROOM, LEVEL_6_LAIR, "Witch - Flr 1, Area 3a : Cauldron"},
{MAP_6D_GL_TTC_LOBBY, LEVEL_6_LAIR, "Witch - Flr 1, Area 4 : Pirate ship"},
{MAP_70_GL_CC_LOBBY, LEVEL_6_LAIR, "Witch - Flr 1, Area 5 : Pipes room"},
{MAP_71_GL_STATUE_ROOM, LEVEL_6_LAIR, "Witch - Flr 1, Area 6 : Witch statue"},
{MAP_72_GL_BGS_LOBBY, LEVEL_6_LAIR, "Witch - Flr 1, Area 7 : Swamp/Snow"},
{MAP_6E_GL_GV_LOBBY, LEVEL_6_LAIR, "Witch - Flr 2, Area 1 : Sand Chamber"},
{MAP_6F_GL_FP_LOBBY, LEVEL_6_LAIR, "Witch - Flr 2, Area 2 : Spooky/Advent"},
{MAP_74_GL_GV_PUZZLE, LEVEL_6_LAIR, "Witch - Flr 2, Area 4 : Dark room"},
{MAP_75_GL_MMM_LOBBY, LEVEL_6_LAIR, "Witch - Flr 2, Area 5 : Crypt outside"},
{MAP_7A_GL_CRYPT, LEVEL_6_LAIR, "Witch - Flr 2, Area 5a : Crypt inside"},
{MAP_76_GL_640_NOTE_DOOR, LEVEL_6_LAIR, "Witch - Flr 3, Area 1"},
{MAP_77_GL_RBB_LOBBY, LEVEL_6_LAIR, "Witch - Flr 3, Area 2 : Ship side"},
{MAP_78_GL_RBB_AND_MMM_PUZZLE, LEVEL_6_LAIR, "Witch - Flr 3, Area 3"},
{MAP_79_GL_CCW_LOBBY, LEVEL_6_LAIR, "Witch - Flr 3, Area 4 : Tree trunks"},
{MAP_80_GL_FF_ENTRANCE, LEVEL_6_LAIR, "Witch - Flr 3, Area 4a"},
{MAP_8E_GL_FURNACE_FUN, LEVEL_6_LAIR, "Witch - Flr 4, Area 1 : Quiz Room"},
{MAP_93_GL_DINGPOT, LEVEL_6_LAIR, "Witch - Flr 5, Area 1 : Gruntie's rooms"},
{MAP_90_GL_BATTLEMENTS, LEVEL_C_BOSS, "Witch - Battlements"},
{MAP_7F_FP_WOZZAS_CAVE, LEVEL_5_FREEZEEZY_PEAK, "Snow - Wozza Cave"},
{MAP_8C_SM_BANJOS_HOUSE, LEVEL_B_SPIRAL_MOUNTAIN, "Training - Banjo Cave"},
{MAP_91_FILE_SELECT, LEVEL_B_SPIRAL_MOUNTAIN, "Training - Banjo Cave Save"},
{0, 0, "(gcSectionMax)"}
};
Struct_core2_83D70_1 D_8036BCE8[] = {
{LEVEL_1_MUMBOS_MOUNTAIN, MAP_2_MM_MUMBOS_MOUNTAIN, 0x5},
{LEVEL_2_TREASURE_TROVE_COVE, MAP_7_TTC_TREASURE_TROVE_COVE, 0x4},
{LEVEL_3_CLANKERS_CAVERN, MAP_B_CC_CLANKERS_CAVERN, 0x5},
{LEVEL_4_BUBBLEGLOOP_SWAMP, MAP_D_BGS_BUBBLEGLOOP_SWAMP, 0x2},
{LEVEL_5_FREEZEEZY_PEAK, MAP_27_FP_FREEZEEZY_PEAK, 0x1},
{LEVEL_7_GOBIS_VALLEY, MAP_12_GV_GOBIS_VALLEY, 0x8},
{LEVEL_8_CLICK_CLOCK_WOOD, MAP_40_CCW_HUB, 0x7},
{LEVEL_9_RUSTY_BUCKET_BAY, MAP_31_RBB_RUSTY_BUCKET_BAY, 0x10},
{LEVEL_A_MAD_MONSTER_MANSION, MAP_1B_MMM_MAD_MONSTER_MANSION, 0x14},
{LEVEL_B_SPIRAL_MOUNTAIN, MAP_1_SM_SPIRAL_MOUNTAIN, 0x12},
{LEVEL_D_CUTSCENE, MAP_7B_CS_INTRO_GL_DINGPOT_1, 0x0},
{LEVEL_6_LAIR, MAP_69_GL_MM_LOBBY, 0x0},
{LEVEL_C_BOSS, MAP_90_GL_BATTLEMENTS, 0x0}
};
/* .bss */
char D_803823A0[0x70];
/* .data */
MapInfo * func_8030AD00(enum map_e map_id){
MapInfo *phi_v1;
for(phi_v1 = &D_8036B810[1]; phi_v1->map_id != 0; phi_v1++){
if (map_id == phi_v1->map_id) {
return phi_v1;
}
}
return NULL;
}
enum level_e map_getLevel(enum map_e map){
return func_8030AD00(map)->level_id;
};
/* returns string containing the map name and index */
char *gcsection_getName(enum map_e map){
MapInfo *map_info = func_8030AD00(map);
D_803823A0[0] = 0;
strcat(D_803823A0, map_info->name);
strcat(D_803823A0, " (");
strIToA(D_803823A0, map);
strcat(D_803823A0, ")");
return D_803823A0;
}
enum map_e level_get_main_map(enum level_e level_id) {
Struct_core2_83D70_1 *phi_v1;
for(phi_v1 = D_8036BCE8; phi_v1->level_id != 0; phi_v1++){
if (level_id == phi_v1->level_id) {
return phi_v1->map_id;
}
}
return 0;
}
s32 level_get_main_exit(enum level_e level_id) {
Struct_core2_83D70_1 *phi_v1;
for(phi_v1 = D_8036BCE8; phi_v1->level_id != 0; phi_v1++){
if (level_id == phi_v1->level_id) {
return phi_v1->exit_id;
}
}
return 0;
}
void func_8030AE70(s32 *arg0) {
MapInfo *var_v0;
s16 var_v1;
s32 *var_s0;
s32 *var_s0_2;
s32 temp_t1;
s32 temp_v0;
s32 var_s1;
s32 i;
var_v0 = D_8036B810 + 1;
var_s1 = 0;
while(var_v0->map_id != 0) {
arg0[var_s1] = var_v0->map_id;
var_s1++;
var_v0++;
}
arg0[var_s1] = 0;
var_s1 = 0;
while(arg0[var_s1 + 1] != 0){
if (strcmp(func_8030AD00(arg0[var_s1])->name, func_8030AD00(arg0[var_s1 + 1])->name) > 0) {
temp_v0 = arg0[var_s1];
arg0[var_s1] = arg0[var_s1 + 1];
arg0[var_s1 + 1] = temp_v0;
var_s1 = 0;
} else {
var_s1++;
}
}
}
bool func_8030AF58(enum map_e arg0) {
MapInfo *phi_v0;
for(phi_v0 = &D_8036B810[1]; phi_v0->map_id != 0; phi_v0++) {
if(phi_v0->map_id == arg0){
return TRUE;
}
}
return FALSE;
}
void func_8030AFA0(enum map_e arg0){
s32 level = map_getLevel(arg0);
if(level > 0 && level < LEVEL_C_BOSS){
func_80332BEC(arg0);
}
}
void func_8030AFD8(s32 arg0){
s32 sp1C = level_get();
func_80321918(0);
if(arg0){
func_802C5994();
}
if(sp1C > 0 && sp1C < 0xC){
func_8033301C();
}
func_8034789C();
func_80250FC0(); //stop controller motor
gcpausemenu_80314B24();
func_80347A70();
}

131
src/core2/gc/sky.c Normal file
View File

@@ -0,0 +1,131 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_8024CE60(f32, f32);
typedef struct {
s16 model_id;
// u8 pad2[0x2];
f32 scale;
f32 rotation_speed;
}SkyInfo;
typedef struct {
s16 map;
// u8 pad2[2];
SkyInfo sky_list[3];
}MapSkyInfo;
/* .data */
MapSkyInfo D_8036BD40[] = {
{MAP_94_CS_INTRO_SPIRAL_7, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_99_CS_END_SPIRAL_MOUNTAIN_2, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_98_CS_END_SPIRAL_MOUNTAIN_1, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_95_CS_END_ALL_100, {{ASSET_7CD_MODEL_SKYBOX_BEACH_ENDING, 1.0f, 0.0f}}},
{MAP_20_CS_END_NOT_100, {{ASSET_7CD_MODEL_SKYBOX_BEACH_ENDING, 1.0f, 0.0f}}},
{MAP_89_CS_INTRO_BANJOS_HOUSE_2, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_8C_SM_BANJOS_HOUSE, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_96_CS_END_BEACH_1, {{ASSET_7CD_MODEL_SKYBOX_BEACH_ENDING, 1.0f, 0.0f}}},
{MAP_97_CS_END_BEACH_2, {{ASSET_7CD_MODEL_SKYBOX_BEACH_ENDING, 1.0f, 0.0f}}},
{MAP_85_CS_SPIRAL_MOUNTAIN_3, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_86_CS_SPIRAL_MOUNTAIN_4, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_87_CS_SPIRAL_MOUNTAIN_5, {{ASSET_7CC_MODEL_SKYBOX_GRUNTYS_FALL, 1.0f, 0.0f}}},
{MAP_88_CS_SPIRAL_MOUNTAIN_6, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_7D_CS_SPIRAL_MOUNTAIN_1, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_75_GL_MMM_LOBBY, {{ASSET_7CB_MODEL_CLOUDS_LAIR_MMM, 1.0f, 0.5f}, {ASSET_7CA_MODEL_SKYBOX_LAIR_MMM, 1.0f, 6.0f}}},
{MAP_1F_CS_START_RAREWARE, {{ASSET_7C9_MODEL_SKYBOX_INTRO_N64, 1.0f, 0.0f}}},
{MAP_7_TTC_TREASURE_TROVE_COVE, {{ASSET_7BF_MODEL_SKYBOX_TTC, 1.0f, 0.0f}, {ASSET_7C0_MODEL_CLOUDS_TTC, 2.0f, 0.5f}}},
{MAP_12_GV_GOBIS_VALLEY, {{ASSET_7C1_MODEL_SKYBOX_GV, 1.0f, 0.0f}, {0x000, 1.0f, 1.0f}}},
{MAP_1B_MMM_MAD_MONSTER_MANSION, {{ASSET_7C2_MODEL_SKYBOX_MMM, 1.0f, 0.0f}, {ASSET_7C3_MODEL_SKYBOX_MMM, 1.0f, 0.0f}}},
{MAP_2_MM_MUMBOS_MOUNTAIN, {{ASSET_7BD_MODEL_SKYBOX_MM, 1.0f, 0.0f}, {ASSET_7BE_MODEL_CLOUDS_MM, 1.0f, 1.0f}}},
{MAP_31_RBB_RUSTY_BUCKET_BAY, {{ASSET_7C5_MODEL_SKYBOX_RBB, 1.0f, 0.0f}}},
{MAP_1_SM_SPIRAL_MOUNTAIN, {{ASSET_7C4_MODEL_SKYBOX_SM, 1.0f, 0.0f}}},
{MAP_3_UNUSED, {{ASSET_7BF_MODEL_SKYBOX_TTC, 1.0f, 0.0f}, {ASSET_7C0_MODEL_CLOUDS_TTC, 2.0f, 0.5f}}},
{MAP_27_FP_FREEZEEZY_PEAK, {{ASSET_7C6_MODEL_SKYBOX_FP, 1.0f, 1.0f}, {ASSET_7C7_MODEL_CLOUDS_FP_A, 1.0f, 1.5f}, {ASSET_7C8_MODEL_CLOUDS_FP_B, 1.0f, 3.0f}}},
{MAP_C_MM_TICKERS_TOWER, {{ASSET_7BD_MODEL_SKYBOX_MM, 1.0f, 0.5f}}},
0
};
/* .bss */
struct
{
MapSkyInfo *sky_info;
BKModel *model[3];
BKModelBin *model_bins[3];
f32 timer;
}gcSky;
/* .code */
MapSkyInfo * sky_getMapSkyInfo(enum map_e map_id){
MapSkyInfo * v1 = D_8036BD40;
while(v1->map){
if(map_id == v1->map){
return v1;
}
v1++;
}
return v1;
}
void sky_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){
int i;
f32 position[3];
f32 rotation[3];
BKModelBin *iAsset;
func_8024CE60(5.0f, 15000.0f);
if(gcSky.model_bins[0]){
func_80254084(gfx, 0, 0, (s32)(f32) D_80276588, (s32)(f32)D_8027658C,0, 0, 0); //fill screen with black
func_8024C904(gfx, mtx);
func_8024C5CC(position);
for(i = 0; i < 3; i++){
iAsset = gcSky.model_bins[i];
if(iAsset){
rotation[0] = 0.0f;
rotation[1] = gcSky.sky_info->sky_list[i].rotation_speed * gcSky.timer;
rotation[2] = 0.0f;
func_803391A4(gfx, mtx, position, rotation, gcSky.sky_info->sky_list[i].scale, NULL, iAsset);
}
}
}
else{//L8030B200
func_80254084(gfx, 0, 0, (s32)(f32) D_80276588, (s32)(f32)D_8027658C, 0, 0, 0);
}//L8030B254
}
void sky_free(void){
int i;
for(i = 0; i < 3; i++){
if(gcSky.model[i]){
model_free(gcSky.model[i]);
}
if(gcSky.model_bins[i]){
assetcache_release(gcSky.model_bins[i]);
}
}
}
void sky_reset(void){
int i;
gcSky.sky_info = sky_getMapSkyInfo(map_get());
for(i = 0; i< 3; i++){
gcSky.model[i] = NULL;
gcSky.model_bins[i] = NULL;
if(gcSky.sky_info->sky_list[i].model_id){
gcSky.model_bins[i] = assetcache_get(gcSky.sky_info->sky_list[i].model_id);
if(func_8033A0B0(gcSky.model_bins[i])){
gcSky.model[i] = func_8033F5F8(func_8033A0B0(gcSky.model_bins[i]), func_8033A148( gcSky.model_bins[i]));
func_8034C6DC(gcSky.model[i]);
}
}
}
gcSky.timer = 0.0f;
}
void sky_update(void){
gcSky.timer += time_getDelta();
}

View File

@@ -911,7 +911,7 @@ void func_80316764(gczoombox_t *this, s32 arg1) {
return;
}
if (arg1 && this->unk1A4_12 && sp38[0]) {
if (arg1 && this->unk1A4_12 && sp38[FACE_BUTTON(BUTTON_A)]) {
if (this->unk110[0] == -1.0f) {
func_80315C90(this, 1);
} else {
@@ -1142,7 +1142,7 @@ void gczoombox_update(gczoombox_t *this){
if(this->unk1A4_19){
sp44 *= 1.5;
}
if(sp58[0] && this->unk1A4_12){
if(sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12){
sp44 *= 0.5;
}
else if(sp4C[0] && this->unk1A4_12){
@@ -1152,7 +1152,7 @@ void gczoombox_update(gczoombox_t *this){
while(sp44 < this->unk18C && this->unk15C >= this->unk15E){
this->unk15E++;
if(func_803156F0(this->unk60[this->unk15E], this->unk1A4_19)){
this->unk18C -= (sp58[0] && this->unk1A4_12) ? 0.05 : 0.1;
this->unk18C -= (sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12) ? 0.05 : 0.1;
}//L803172B4
this->unk18C -= sp44;
}//L803172EC
@@ -1171,7 +1171,7 @@ void gczoombox_update(gczoombox_t *this){
}
break;
case 0x3: //L80317360
if((sp58[0] && this->unk1A4_12) || this->unk181 < 0){
if((sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12) || this->unk181 < 0){
this->state = 4;
this->unk183 = 0.5*sp48*this->unk184;
@@ -1180,7 +1180,7 @@ void gczoombox_update(gczoombox_t *this){
}
break;
case 0x4: //L80317470
if(sp58[0] && this->unk1A4_12){
if(sp58[FACE_BUTTON(BUTTON_A)] && this->unk1A4_12){
this->unk183 = 0.5*sp48*(this->unk184 + 2);
this->unk1A4_23 = 0;
}