banjo-kazooie/src/core2/code_C4320.c

366 lines
9.3 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_802E40A8(enum map_e, s32 exit);
typedef struct {
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
}Struct_core2_C4320_0;
s32 func_8034BAFC(void);
/* .data*/
//EAF70:
extern Struct_core2_C4320_0 D_80371F00[] ={
{MAP_2_MM_MUMBOS_MOUNTAIN, 4, 0x5B, 1, 2, 2},
{MAP_22_CC_INSIDE_CLANKER, 7, 0x5B, 1, 2, 2},
{MAP_D_BGS_BUBBLEGLOOP_SWAMP, 4, 0x5B, 1, 3, 3},
{MAP_1C_MMM_CHURCH, 7, 0x5B, 1, 2, 2},
{MAP_1F_CS_START_RAREWARE, 1, 0x00, 1, 2, 2},
{MAP_6_TTC_NIPPERS_SHELL, 4, 0x5B, 1, 2, 2},
{MAP_46_CCW_WINTER, 7, 0x5B, 1, 2, 2},
{MAP_34_RBB_ENGINE_ROOM, 4, 0x5B, 1, 2, 2},
{MAP_12_GV_GOBIS_VALLEY, 7, 0x5B, 1, 2, 2},
{MAP_1F_CS_START_RAREWARE, 1, 0x00, 1, 2, 2},
{MAP_91_FILE_SELECT, 0, 0x00, 1, 2, 2}
};
extern Struct_core2_C4320_0 D_80371F44[] = {
{MAP_8C_SM_BANJOS_HOUSE, 0, 0x5C, 0xA, 3, 3,},
{MAP_41_FP_BOGGYS_IGLOO, 0, 0x5C, 0xA, 3, 3,},
{MAP_3F_RBB_CAPTAINS_CABIN, 0, 0x5C, 0xA, 3, 3,},
{MAP_5E_CCW_SPRING_NABNUTS_HOUSE, 0, 0x5C, 0xA, 3, 3,},
{MAP_11_BGS_TIPTUP, 0, 0x5C, 0xA, 3, 3,},
{MAP_2D_MMM_BEDROOM, 0, 0x5C, 0xA, 3, 3,},
{MAP_5C_CCW_AUTUMN_ZUBBA_HIVE, 0, 0x5C, 0xA, 3, 3,}
};
extern Struct_core2_C4320_0 D_80371F70 = {MAP_41_FP_BOGGYS_IGLOO, 6, 0x5D, 7, 8, 3};
extern Struct_core2_C4320_0 D_80371F78[] ={
{MAP_7_TTC_TREASURE_TROVE_COVE, 0, 0x5F, 6, 9, 9},
{MAP_27_FP_FREEZEEZY_PEAK, 0, 0x5F, 9, 9, 9},
{MAP_12_GV_GOBIS_VALLEY, 0, 0x5F, 9, 5, 9}
};
extern s32 D_80371F8C = 0xA; //attract demo count
extern s32 D_80371F90 = 0x7; //bottles bonus demo count
extern s32 D_80371F94 = 1;
extern s32 D_80371F98 = 3;
extern s32 D_80371F9C = 1;
extern u16 D_80371FA0[] = { 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC };
//EB030:
/* .bss */
s32 D_80386110; //current attract demo index
Struct_core2_C4320_0 *D_80386114; //current attract demo ptr
s32 D_80386118;
s32 D_8038611C;
bool D_80386120;
s32 D_80386124;
f32 D_80386128;
/* .code */
void func_8034B2B0(s32 arg0) {
Struct_core2_C4320_0 *sp18;
sp18 = &D_80371F00[arg0];
func_802E40A8(sp18->unk0, sp18->unk2);
if ((map_getLevel(sp18->unk0) == LEVEL_D_CUTSCENE) || (arg0 == D_80371F8C)) {
func_802E40C4(1);
} else {
func_802E40C4(6);
}
func_802E40E8(1);
}
void func_8034B33C(s32 arg0) {
Struct_core2_C4320_0 *sp18;
sp18 = &D_80371F44[arg0];
func_802E40A8(sp18->unk0, sp18->unk2);
func_802E412C(1, 0xB);
func_802E40C4(7);
D_80386114 = sp18;
D_80386124 = func_802C5A30();
}
void func_8034B3A4(enum map_e map_id, s32 exit_id) {
func_802E40A8(map_id, exit_id);
func_802E412C(1, 8);
func_802E40C4(8);
D_80386114 = &D_80371F70;
D_80386124 = func_802C5A30();
}
void func_8034B3F0(s32 arg0) {
Struct_core2_C4320_0 *temp_s0;
temp_s0 = &D_80371F78[arg0];
func_802E40A8(temp_s0->unk0, temp_s0->unk2);
if (temp_s0 == &D_80371F78[0]) {
func_802E412C(1, 5);
} else {
func_802E40E8(0);
}
func_802E40C4(0xC);
D_80386114 = temp_s0;
D_80386124 = func_802C5A30();
}
void func_8034B474(void) {
D_80386114 = &D_80371F00[D_80386110];
D_80386110 = (D_80386110 + 1) % D_80371F8C;
}
void func_8034B4E4(s32 arg0){
D_80386128 = 0;
if(getGameMode() == GAME_MODE_8_BOTTLES_BONUS || getGameMode() == GAME_MODE_A_SNS_PICTURE){
return;
}
switch(arg0){
case 1: //L8034B544
case 3: //L8034B544
case 4: //L8034B544
func_802DC9A4(0,0);
/* fall-through */
case 2: //L8034B550
case 7: //L8034B550
chOverlayCopyright_spawn(0,0);
break;
case 5: //L8034B564
func_802DC9A4(0,0);
break;
}
}
void func_8034B580(s32 arg0) {
f32 sp1C;
sp1C = D_80386128;
if (gctransition_8030BD98() != 0) {
D_80386128 += time_getDelta();
}
if ((getGameMode() != GAME_MODE_8_BOTTLES_BONUS) && (getGameMode() != GAME_MODE_A_SNS_PICTURE)) {
switch (arg0) {
case 4:
if ((D_80386128 >= 2.5) && (sp1C < 2.5) && (D_80371F9C == 0)) {
chOverlayCopyright_func_802DCB0C(0, 0);
}
/* fallthrough */
case 3:
if ((D_80386128 >= 2.5) && (sp1C < 2.5) && (D_80371F9C == 0)) {
func_802DC9DC(0, 0);
}
if ((D_80386128 >= 4.0) && (sp1C < 4.0) && (func_8024F12C() == 0)) {
chOverlayPressStart_spawn(0, 0);
if (D_80371F9C != 0) {
chOverlayPressStart_func_802DCDB0();
return;
}
}
break;
case 7:
if ((D_80386128 >= 2.5) && (sp1C < 2.5)) {
chOverlayCopyright_func_802DCB0C(0, 0);
}
if ((D_80386128 >= 4.0) && (sp1C < 4.0) && (func_8024F12C() == 0)) {
chOverlayPressStart_spawn(0, 0);
}
break;
}
}
}
void func_8034B7F0(s32 arg0) {
func_802DC9DC(0, 0);
chOverlayCopyright_func_802DCB0C(0, 0);
chOverlayPressStart_func_802DCDC0(0, 0);
D_80371F9C = 0;
}
void func_8034B834(void) {
s32 i;
item_set(ITEM_D_EGGS, 100);
item_set(ITEM_F_RED_FEATHER, 50);
item_set(ITEM_10_GOLD_FEATHER, 10);
item_set(ITEM_1C_MUMBO_TOKEN, 25);
func_80295864(-1);
func_80295870(-1);
for(i = 0; i < 10; i++){
func_80320004(D_80371FA0[i], 1);
}
}
void func_8034B8C0(enum map_e map_id, s32 demo_id) {
demo_load(map_id,demo_id);
D_80386118 = D_8038611C = 0;
if (D_80386114->unk1 == 6) {
func_803204E4(0x1F, 1);
func_802E4A70();
}
if ((demo_id == 0x5B) || (demo_id == 0x5F)) {
sns_backup_items_and_unlock_all();
}
}
void func_8034B940(void){
demo_free();
sns_restore_backed_up_items();
}
void func_8034B968(void){
func_8034B2B0(D_80386110);
func_8034B474();
}
void func_8034B994(void){
func_8034B2B0(D_80371F8C);
D_80386110 = 0;
}
void func_8034B9BC(s32 arg0) {
func_80347A7C();
func_8034B33C(arg0);
}
void func_8034B9E4(void){
func_803219F4(5);
func_8034B3F0(D_80386110);
D_80386110++;
}
void func_8034BA20(void) {
func_803219F4(5);
func_802E412C(1, 5);
func_802E40A8(MAP_97_CS_END_BEACH_2, 0);
func_802E40C4(1);
if (func_8025AD7C(5)) {
func_8025A7DC(5);
}
D_80386110 = 0;
}
void func_8034BA7C(enum map_e map_id, s32 exit_id){
func_8034B3A4(map_id, exit_id);
}
void func_8034BA9C(void) {
if (func_8034BAFC() != -1) {
func_802C5A3C(func_8034BAFC());
func_8033D13C(func_8034BAFC());
func_80347AA8();
}
func_8031B010();
D_80386110 = 0;
}
s32 func_8034BAFC(void){
return D_80386124;
}
void func_8034BB08(bool arg0) {
D_80386120 = arg0;
func_802E412C(1, 3);
func_802E40A8(MAP_8C_SM_BANJOS_HOUSE, 2);
func_802E40C4(1);
}
bool func_8034BB48(void) {
if (D_80386120 && gctransition_8030BD98()) {
D_80386120 = FALSE;
return TRUE;
}
return FALSE;
}
void func_8034BB90(void) {
s32 sp1C;
s32 sp18;
sp1C = gctransition_8030BDC0();
sp18 = gctransition_8030BD98();
if (!D_80386118) {
func_8034B834();
func_8034B4E4(D_80386114->unk1);
D_80386118 = 1;
}
func_8034B580(D_80386114->unk1);
if (func_803203FC(0xC3)) {
func_803204E4(0xC3, 0);
func_8034B9E4();
}
if( !sp1C
&& sp18
&& !D_8038611C
&& (getGameMode() != GAME_MODE_8_BOTTLES_BONUS)
&& ((func_803203FC(0x64) && (getGameMode() != GAME_MODE_A_SNS_PICTURE))
|| func_803203FC(0x63))
) {
func_8034B7F0(D_80386114->unk1);
if (getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE) {
func_8034BA9C();
} else if (getGameMode() == GAME_MODE_A_SNS_PICTURE) {
if (D_80386110 == D_80371F98) {
func_8034BA20();
} else {
func_802DF0C8();
}
} else if (func_803203FC(0x64)) {
func_802E412C(1, D_80386114->unk5);
func_8034B994();
} else {
func_802E412C(1, D_80386114->unk4);
func_8034B2B0(D_80386110);
func_8034B474();
}
if (getGameMode() != GAME_MODE_A_SNS_PICTURE) {
func_8025A58C(0, 800);
func_8025AB00();
}
func_803204E4(0x64, 0);
func_803204E4(0x63, 0);
D_8038611C = 1;
}
}
s32 func_8034BDA4(enum map_e map_id, s32 exit_id) {
s32 phi_v0;
if (func_803203FC(UNKFLAGS1_1F_IN_CHARACTER_PARADE)) {
return D_80371F70.unk3;
}
for(phi_v0 = 0; phi_v0 < D_80371F8C; phi_v0++){
if( map_id == D_80371F00[phi_v0].unk0 && exit_id == D_80371F00[phi_v0].unk2){
return D_80371F00[phi_v0].unk3;
}
}
for(phi_v0 = 0; phi_v0 < D_80371F90; phi_v0++){
if( map_id == D_80371F44[phi_v0].unk0 && exit_id == D_80371F44[phi_v0].unk2){
return D_80371F44[phi_v0].unk3;
}
}
for(phi_v0 = 0; phi_v0 < D_80371F98; phi_v0++){
if( map_id == D_80371F78[phi_v0].unk0 && exit_id == D_80371F78[phi_v0].unk2){
return D_80371F78[phi_v0].unk3;
}
}
return 4;
}