The first commit

This commit is contained in:
Banjo Kazooie
2022-07-15 17:09:41 -05:00
commit dd13d34074
1087 changed files with 391897 additions and 0 deletions

437
src/core2/code_BEF20.c Normal file
View File

@@ -0,0 +1,437 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
f32 time_getDelta(void);
void func_80346DB4(s32);
s32 func_803463D4(enum item_e item, s32 diff);
s32 notescore_getLevelScore(enum level_e lvl_id);
void func_80347060(void);
extern s32 D_80385F30[];
extern s32 D_80385FE0;
extern s32 D_80385FE4;
extern s32 D_80385FE8;
extern f32 D_80385FEC;
extern u8 D_80385FF0[];
extern f32 D_80386000[];
void func_80345EB0(enum item_e item){
if(func_802FAFE8(item)){
func_803463D4(item, (s32)(-time_getDelta()*60.0f * 1.1));
}else{
func_802FACA4(item);
}
}
void item_inc(enum item_e item){
func_803463D4(item, 1);
}
void item_dec(enum item_e item){
if(!func_802E4A08())
func_803463D4(item, -1);
}
s32 item_empty(enum item_e item){
return (D_80385F30[item] != 0)? 0 : 1;
}
s32 item_getCount(enum item_e item){
return D_80385F30[item];
}
#ifdef NONMATCHING
/* &D_80385F30[item] saving to sp18 but should be sp1C,
cannot access sp1C with newVal at sp18.
may be -O3 issue given func_803465DC() is null
*/
s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
s32 oldVal;
s32 sp40;
s32 sp3C;
s32 sp38;
s32 sp34;
s32 sp30;
s32 sp2C;
s32 sp28;
s32 sp24;
s32 newVal;
oldVal = D_80385F30[item];
if(func_80255D04())
diff = 0;
if(diff < 0){
if( (item == ITEM_D_EGGS && func_803203FC(UNKFLAGS1_74_SANDCASTLE_INFINITE_EGGS))
|| (item == ITEM_16_LIFE && func_803203FC(UNKFLAGS1_73_SANDCASTLE_INFINITE_LIVES))
|| (item == ITEM_F_RED_FEATHER && func_803203FC(UNKFLAGS1_75_SANDCASTLE_INFINITE_RED_FEATHERS))
|| (item == ITEM_10_GOLD_FEATHER && func_803203FC(UNKFLAGS1_76_SANDCASTLE_INFINITE_GOLD_FEATHERS))
|| (item == ITEM_17_AIR && func_803203FC(UNKFLAGS1_96_SANDCASTLE_INFINITE_AIR)))
diff = 0;
}
newVal = MAX(0, D_80385F30[item] + diff);
D_80385F30[item] = newVal;
sp34 = (func_8031FF1C(BKPROG_B9_DOUBLE_HEALTH))? 2 : 1 ;
D_80385F30[ITEM_15_HEALTH_TOTAL] = MIN(sp34*8, D_80385F30[ITEM_15_HEALTH_TOTAL]);
D_80385F30[ITEM_14_HEALTH]= MIN(D_80385F30[ITEM_15_HEALTH_TOTAL], D_80385F30[ITEM_14_HEALTH]);
D_80385F30[ITEM_17_AIR] = MIN(3600, D_80385F30[ITEM_17_AIR]);
D_80385F30[ITEM_25_MUMBO_TOKEN_TOTAL] = D_80385F30[ITEM_1C_MUMBO_TOKEN];
D_80385F30[ITEM_16_LIFE] = MIN(0xFF, D_80385F30[ITEM_16_LIFE]);
switch(item){
case ITEM_D_EGGS:
sp38 = (func_8031FF1C(BKPROG_BE_CHEATO_BLUEEGGS))? 200 : 100;
break;
case ITEM_F_RED_FEATHER:
sp38 = (func_8031FF1C(BKPROG_BF_CHEATO_REDFEATHERS))? 100 : 50;
break;
case ITEM_10_GOLD_FEATHER:
sp38 = (func_8031FF1C(BKPROG_C0_CHEATO_GOLDFEATHERS))? 20 : 10;
break;
default:
sp38 = 0;
break;
}
if(sp38){
D_80385F30[item] = MIN(sp38, D_80385F30[item]);
}
if(!arg2){
func_802FACA4(item); //displays item on HUD
if(item == ITEM_14_HEALTH || item == ITEM_17_AIR)
func_802FACA4(ITEM_16_LIFE);
}
sp3C = item_empty(item);
if(item < 6 && sp3C)
D_80385F30[item + ITEM_6_HOURGLASS] = 0;
switch(item){
case ITEM_14_HEALTH:
if(sp3C)
D_80385FE4 = 1;
break;
case ITEM_17_AIR:
sp30 = func_80301D24(oldVal);
sp2C = func_80301D24(newVal);
if(sp3C){
bs_checkInterrupt(0x11);
D_80385FE4 = 1;
}
if(sp2C && sp30 != sp2C ){
if(sp2C < sp30){
func_8025A6EC(SFX_AIR_METER_DROPPING, 28000);
}
else{
func_8030E760(0x3e9, 1.2f, 28000);
}
}
break;
case ITEM_C_NOTE:
sp28 = notescore_getLevelScore(level_get());
func_80346DB4(D_80385F30[item]);
if(D_80385F30[item] == 100 && sp28 != 100){
func_8025A6EC(COMUSIC_36_100TH_NOTE_COLLECTED, 20000);
item_inc(ITEM_16_LIFE);
}
break;
case ITEM_26_JIGGY_TOTAL:
D_80385F30[0x2b] += diff;
break;
}
return D_80385F30[item];
}
#else
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80345FB4.s")
#endif
s32 func_803463D4(enum item_e item, s32 diff){
func_80345FB4(item, diff, 0);
}
void func_803463F4(enum item_e item, s32 diff){
func_80345FB4(item, diff, 1);
}
void item_set(s32 item, s32 val){
func_803463D4(item, val - item_getCount(item));
}
void func_80346448(s32 item){
func_803463D4(item, 9999999);
}
void func_8034646C(void){
int i;
for(i = 0; i < 0x2C; i++){
D_80385F30[i] = 0;
}
D_80385F30[ITEM_D_EGGS] = 0;
D_80385F30[ITEM_F_RED_FEATHER] = 0;
D_80385F30[ITEM_10_GOLD_FEATHER] = 0;
D_80385F30[ITEM_14_HEALTH] = D_80385F30[ITEM_15_HEALTH_TOTAL] = 5;
D_80385F30[ITEM_16_LIFE] = 3;
D_80385F30[ITEM_17_AIR] = 3600;
D_80385F30[ITEM_1C_MUMBO_TOKEN] = 0;
D_80385F30[0x2B] = 0;
D_80385F30[ITEM_26_JIGGY_TOTAL] = 0;
func_80346D78();
func_80347060();
D_80385FE4 = FALSE;
}
void func_803464F8(s32 level){
int i;
for(i = 0; i < 6; i++){
D_80385F30[ITEM_0_HOURGLASS_TIMER + i] = 0;
D_80385F30[ITEM_6_HOURGLASS + i] = 0;
}
D_80385F30[ITEM_C_NOTE] = 0;
D_80385F30[ITEM_E_JIGGY] = jiggyscore_leveltotal(level);
D_80385F30[ITEM_12_JINJOS] = 0;
D_80385F30[ITEM_17_AIR] = 3600;
D_80385F30[ITEM_18_GOLD_BULLIONS] = 0;
D_80385F30[ITEM_19_ORANGE] = 0;
D_80385F30[ITEM_23_ACORNS] = 0;
D_80385F30[ITEM_1A_PLAYER_VILE_SCORE] = 0;
D_80385F30[ITEM_1B_VILE_VILE_SCORE] = 0;
D_80385F30[ITEM_1F_GREEN_PRESENT] = 0;
D_80385F30[ITEM_20_BLUE_PRESENT] = 0;
D_80385F30[ITEM_21_RED_PRESENT] = 0;
D_80385F30[ITEM_22_CATERPILLAR] = 0;
func_802FA5D0();
D_80385FE8 = 1;
}
void func_803465BC(void){
func_802FBDFC();
}
void func_803465DC(void){}
void func_803465E4(void){
s32 sp54 = bs_getState();
s32 sp50 = 0;
s32 sp4C = level_get();
s32 i;
int is_underwater;
int is_on_water_surface;
int is_in_polluted_or_winter_water;
if(func_80334904() != 2) return;
if(D_80385FE8){
if( func_802BC248() != 3
&& func_8028F070()
&& map_get() != MAP_33_UNUSED
&& map_get() != MAP_91_FILE_SELECT
){
D_80385FE0 = TRUE;
}//L80346674
D_80385FE8 = FALSE;
}//L8034667C
if(D_80385FE0){
if(gctransition_8030BD98() || func_803203FC(0)){
if(D_80385FE4){
item_dec(ITEM_16_LIFE);
func_802FACA4(ITEM_14_HEALTH);
}
D_80385FE4 = FALSE;
sp50 = TRUE;
D_80385FE0 = FALSE;
}
}
else{//L803466E8
if( D_80385F30[ITEM_14_HEALTH] != 0
&& D_80385F30[ITEM_14_HEALTH] < 3
&& func_80347A4C()
){
sp50 = TRUE;
}
}//L80346710
if(sp50){
func_803463D4(ITEM_14_HEALTH, 0);
}
if(sp54 == BS_24_FLY || sp54 == BS_23_FLY_ENTER){
func_803463D4(ITEM_F_RED_FEATHER, 0);
}
if(!func_8028EC04() && func_8028F070()){
if(level_get() != LEVEL_2_TREASURE_TROVE_COVE || !levelSpecificFlags_get(5)){
is_underwater = (func_8028EE84() == BSWATERGROUP_2_UNDERWATER);
is_on_water_surface = (func_8028EE84() == BSWATERGROUP_1_SURFACE);
is_in_polluted_or_winter_water = ((level_get() == LEVEL_9_RUSTY_BUCKET_BAY) || (map_get() == MAP_46_CCW_WINTER));
if( is_in_polluted_or_winter_water && (is_underwater || is_on_water_surface)){ //L803467EC
D_80385FEC = 2.0f;
}
else{//L80346804
D_80385FEC = MAX(0.0, D_80385FEC - time_getDelta());
}//L80346870
if( (!is_in_polluted_or_winter_water && is_underwater) || (is_in_polluted_or_winter_water && is_on_water_surface) ){//L80346894
func_803463D4(ITEM_17_AIR, (s32)((f64)((-time_getDelta())*60.0f)*1.1));
}
else{
if(is_in_polluted_or_winter_water && is_underwater){//L803468D8
func_803463D4(ITEM_17_AIR, (s32)(f64)((-time_getDelta()*60.0f)*2.1));
}//L80346930
if(!is_in_polluted_or_winter_water || D_80385FEC == 0.0f){
if(!D_80385FE4 && D_80385F30[ITEM_17_AIR] < 3600){
func_803463D4(ITEM_17_AIR, (s32)(((time_getDelta()*60.0f)*100.0)*1.1));
D_80385F30[ITEM_17_AIR] = MIN(D_80385F30[ITEM_17_AIR], 3600);
}
}
}
}//L803469E4
}//L803469E4
if(!func_803203FC(0xbf)){
for(i = 0; i < 6; i++){
if(D_80385F30[ITEM_6_HOURGLASS + i]){
func_80345EB0(ITEM_0_HOURGLASS_TIMER + i);
}
}
}//L80346A2C
if( getGameMode() != GAME_MODE_4_PAUSED
&& func_8028F070()
){
if(sp4C == 0xC)
sp4C = 6;
if(sp4C > 0 && sp4C < 0xC && map_get() != MAP_91_FILE_SELECT){
D_80386000[sp4C] = MAX(1.0, MIN(65535.0, D_80386000[sp4C] + time_getDelta()));
}
}//L80346B6C
if((func_8023DB5C() & 7) == 6){
if(!func_80320708() || !func_80320248()){
D_80385F30[randi2(0, 0x2C)] = 1;
D_80385FF0[randi2(0, 0xE)] = 1;
D_80386000[randi2(0, 0xE)] = 1.0f;
}
}
}
void func_80346C10(enum bs_e *retVal, enum bs_e fail_state, enum bs_e success_state, enum item_e item_id, int use_item){
if(item_empty(item_id)){
func_803463D4(item_id, 0);
func_8025A6EC(COMUSIC_2C_BUZZER, 22000);
if(fail_state != -1){
*retVal = fail_state;
}
}
else{
if(use_item){
item_dec(item_id);
}
if(success_state != -1)
*retVal = success_state;
}
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346CA8.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346CE8.s")
enum item_e func_80346CF4(enum actor_e actor_id){
switch(actor_id){
case ACTOR_29_ORANGE_COLLECTABLE: return ITEM_19_ORANGE;
case ACTOR_2A9_ACORN: return ITEM_23_ACORNS;
case ACTOR_2A2_CATERPILLAR: return ITEM_22_CATERPILLAR;
case ACTOR_2A_GOLD_BULLION: return ITEM_18_GOLD_BULLIONS;
case ACTOR_1ED_BLUE_PRESENT_COLLECTABLE: return ITEM_20_BLUE_PRESENT;
case ACTOR_1EF_GREEN_PRESENT_COLLECTABLE: return ITEM_1F_GREEN_PRESENT;
case ACTOR_1F1_RED_PRESENT_COLLECTABLE: return ITEM_21_RED_PRESENT;
}
return 0;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346D78.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346DB4.s")
s32 notescore_getTotal(void){
int i = 1;
s32 total = 0;
do{
total += D_80385FF0[i++];
}while(i < 0xe);
return total;
}
s32 notescore_getLevelScore(enum level_e lvl_id){
return D_80385FF0[lvl_id];
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346F44.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347018.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347060.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803470A0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034717C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034722C.s")
extern u8 D_80386060[]; //saved item array
extern s32 D_80385F68;
//itemscore_getSavedItemArray
void func_80347630(s32 *size, u8 **buffer){
D_80386060[0] = item_getCount(ITEM_1C_MUMBO_TOKEN);
D_80386060[1] = item_getCount(ITEM_D_EGGS);
D_80386060[2] = item_getCount(ITEM_F_RED_FEATHER);
D_80386060[3] = item_getCount(ITEM_10_GOLD_FEATHER);
D_80386060[4] = item_getCount(ITEM_26_JIGGY_TOTAL);
*size = 5;
*buffer = D_80386060;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803476B0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034774C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034789C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347958.s")
void func_80347984(void){}
void func_8034798C(void){
D_80385F68 = jiggyscore_leveltotal(level_get());
func_802FA5D0();
}
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803479C0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A14.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A4C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A70.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347A7C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347AA8.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347B10.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347B54.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347B80.s")
void func_80347C5C(s32 arg0, s32 arg1, s32 arg2, s32 arg3){}
void func_80347C70(s32 arg0){}