core2/code_D2180.c
This commit is contained in:
parent
dd7da1678d
commit
83dd7df9a3
|
@ -185,13 +185,13 @@ void func_802FE844(s32, struct8s *);
|
|||
void func_802FDEE0(s32, struct8s *, Gfx**, Mtx**, s32*);
|
||||
void func_802FDDC4(s32, struct8s *);
|
||||
|
||||
struct8s *func_802FF090(s32);
|
||||
void func_802FFA50(s32, struct8s *);
|
||||
void func_802FF3B8(s32, struct8s *, Gfx**, Mtx**, s32);
|
||||
void func_802FF358(s32, struct8s *);
|
||||
struct8s *func_802FF090(enum item_e);
|
||||
void func_802FFA50(enum item_e, struct8s *);
|
||||
void func_802FF3B8(s32, struct8s *, Gfx**, Mtx**, Vtx **);
|
||||
void func_802FF358(enum item_e, struct8s *);
|
||||
|
||||
struct8s *func_802FFE4C(s32);
|
||||
void func_803005BC(s32, struct8s *);
|
||||
void func_803005BC(enum item_e, struct8s *);
|
||||
void func_802FFF34(enum item_e, struct8s *, Gfx**, Mtx**, Vtx **);
|
||||
void func_802FFED4(s32, struct8s *);
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h44v20H0z"/>
|
||||
<path fill="#6be000" d="M44 0h67v20H44z"/>
|
||||
<path fill="#69e000" d="M44 0h67v20H44z"/>
|
||||
<path fill="url(#b)" d="M0 0h111v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
|
@ -17,7 +17,7 @@
|
|||
<text x="22.0" y="14">core2</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">76.0480%</text>
|
||||
<text x="77.5" y="14">76.0480%</text>
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">76.4903%</text>
|
||||
<text x="77.5" y="14">76.4903%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
@ -9,7 +9,7 @@
|
|||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h150v20H0z"/>
|
||||
<path fill="#55e000" d="M150 0h67v20H150z"/>
|
||||
<path fill="#54e000" d="M150 0h67v20H150z"/>
|
||||
<path fill="url(#b)" d="M0 0h217v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
|
@ -17,7 +17,7 @@
|
|||
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">81.0493%</text>
|
||||
<text x="183.5" y="14">81.0493%</text>
|
||||
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">81.3031%</text>
|
||||
<text x="183.5" y="14">81.3031%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -169,7 +169,7 @@ void func_802C4768(s32 gamenum){
|
|||
func_8031FBA0();
|
||||
if(func_8033D1BC(gamenum)){
|
||||
func_8033D13C(gamenum);
|
||||
D_8037DCCE[gamenum] = (func_8034717C(6)) ? 1 : 0;
|
||||
D_8037DCCE[gamenum] = (itemscore_timeScores_get(LEVEL_6_LAIR)) ? 1 : 0;
|
||||
|
||||
strcpy(D_8037DD48, "");
|
||||
strcat(D_8037DD48, "GAME ");
|
||||
|
@ -185,7 +185,7 @@ void func_802C4768(s32 gamenum){
|
|||
break;
|
||||
}//L802C4858
|
||||
strcat(D_8037DD48, ": TIME ");
|
||||
strcat(D_8037DD48, func_80311C64(func_803470A0()));
|
||||
strcat(D_8037DD48, func_80311C64(itemscore_timeScores_getTotal()));
|
||||
strcat(D_8037DD48, ",");
|
||||
strcat(D_8037DD48, "");
|
||||
|
||||
|
@ -196,9 +196,9 @@ void func_802C4768(s32 gamenum){
|
|||
strcat(D_8037DD68, "S");
|
||||
}
|
||||
strcat(D_8037DD68, ", ");
|
||||
strIToA(D_8037DD68, notescore_getTotal());
|
||||
strIToA(D_8037DD68, itemscore_noteScores_getTotal());
|
||||
strcat(D_8037DD68, " NOTE");
|
||||
if(notescore_getTotal() != 1){
|
||||
if(itemscore_noteScores_getTotal() != 1){
|
||||
strcat(D_8037DD68, "S");
|
||||
}
|
||||
strcat(D_8037DD68, ".");
|
||||
|
|
|
@ -635,7 +635,7 @@ void func_802D5058(enum map_e map_id, s32 arg1, bool arg2) {
|
|||
|
||||
|
||||
void func_802D5140(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
||||
notescore_getLevelScore(func_80320424(0x19, 4));
|
||||
itemscore_noteScores_get(func_80320424(0x19, 4));
|
||||
}
|
||||
|
||||
void func_802D5178(s32 arg0, enum bkprog_e arg1, s32 arg2, enum map_e arg3, s32 arg4, s32 arg5, enum actor_e arg6, s32 arg7){
|
||||
|
|
|
@ -278,7 +278,7 @@ void func_802FDAF4(enum item_e item_id, struct8s *arg1, Gfx **gfx, Mtx **mtx, Vt
|
|||
sp34 = 0.0f;
|
||||
if(item_id == ITEM_C_NOTE){
|
||||
if(level_get() == LEVEL_6_LAIR || level_get() == LEVEL_C_BOSS){
|
||||
sp38 = notescore_getTotal();
|
||||
sp38 = itemscore_noteScores_getTotal();
|
||||
}
|
||||
}
|
||||
if(item_id < 6){
|
||||
|
|
|
@ -2,13 +2,276 @@
|
|||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802FB0E4(struct8s *);
|
||||
|
||||
/* .data */
|
||||
extern u16 D_8036A070[0xD][0x10];
|
||||
extern enum asset_e D_8036A210[5];
|
||||
extern Gfx D_8036A228[];
|
||||
|
||||
/* .bss */
|
||||
extern u16 D_80381620[0xD][5][0x10];
|
||||
extern BKSprite *D_80381E40[5];
|
||||
extern f32 D_80381E54;
|
||||
extern u8 D_80381E58[5];
|
||||
extern f32 D_80381E60[5];
|
||||
extern f32 D_80381E78[5];
|
||||
extern struct8s D_80381E90;
|
||||
|
||||
|
||||
/* .code */
|
||||
#ifndef nonmatching
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_78100/func_802FF090.s")
|
||||
#else
|
||||
struct8s *func_802FF090(s32 arg0) {
|
||||
f32 *var_s6;
|
||||
f64 temp_f20;
|
||||
f64 temp_f22;
|
||||
f64 temp_f28;
|
||||
s32 temp_t6;
|
||||
s32 temp_t8;
|
||||
s32 green;
|
||||
s32 blue;
|
||||
s32 red;
|
||||
s32 alpha;
|
||||
s32 tmp_blue;
|
||||
s32 tmp_green;
|
||||
s32 tmp_red;
|
||||
s32 tmp_alpha;
|
||||
s32 var_t2;
|
||||
s8 *var_s5;
|
||||
u16 *var_ra;
|
||||
u16 *var_t3;
|
||||
u16 rgba;
|
||||
u32 jinjo_id;
|
||||
void *var_s3;
|
||||
void *var_t4;
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_78100/func_802FF358.s")
|
||||
D_80381E54 = 1.0f;
|
||||
for(jinjo_id = 0; jinjo_id < 5; jinjo_id++){
|
||||
D_80381E60[jinjo_id] = 0.0f;
|
||||
D_80381E58[jinjo_id] = (item_getCount(ITEM_12_JINJOS) & (1 << jinjo_id)) ? 3 : 0;
|
||||
for(i = 0; i < 0xD; i++){
|
||||
for(var_t2 = 0; var_t2 < 0x10; var_t2++){
|
||||
rgba = D_8036A070[i][var_t2];
|
||||
red = tmp_red = (rgba >> 0xB) & 0x1F;
|
||||
green = tmp_green = (rgba >> 6) & 0x1F;
|
||||
blue = tmp_blue = (rgba >> 1) & 0x1F;
|
||||
alpha = tmp_alpha = (rgba >> 0) & 0x1;
|
||||
if ((red < 0x10) || (green < 0x10) || (blue < 0x10)) {
|
||||
switch (jinjo_id) {
|
||||
case 3:
|
||||
red = tmp_red;
|
||||
green = tmp_green;
|
||||
blue = tmp_blue;
|
||||
alpha = tmp_alpha;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
green = tmp_green * 1.5;
|
||||
red = tmp_red * 0.25;
|
||||
blue = tmp_blue;
|
||||
alpha = tmp_alpha;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
red = tmp_red * 0.2;
|
||||
green = tmp_blue;
|
||||
blue = tmp_blue * 0.2;
|
||||
alpha = tmp_alpha;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
{s32 var_v1;
|
||||
red = tmp_red;
|
||||
blue = tmp_green * 0.4;
|
||||
green = tmp_blue * 0.6;
|
||||
alpha = tmp_alpha;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
red = tmp_red;
|
||||
green = tmp_blue;
|
||||
blue = tmp_green * 0.4;
|
||||
alpha = tmp_alpha;
|
||||
break;
|
||||
}
|
||||
}
|
||||
D_80381620[i][jinjo_id][var_t2] = ((red << 0xB) | (green << 6) | (blue << 1) | alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
return &D_80381E90;
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_802FF358(enum item_e item_id, struct8s * arg1){
|
||||
s32 i;
|
||||
|
||||
for(i = 0; i < 5; i++){
|
||||
if(D_80381E40[i] != NULL){
|
||||
func_8033BD4C(D_80381E40[i]);
|
||||
D_80381E40[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_78100/func_802FF3B8.s")
|
||||
#else
|
||||
void func_802FF3B8(s32 arg0, struct8s *arg1, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||
s32 sp11C;
|
||||
s32 sp118;
|
||||
s32 sp114;
|
||||
s32 spF0;
|
||||
f32 temp_f14;
|
||||
f32 temp_f20;
|
||||
f32 var_f28;
|
||||
f32 var_f30;
|
||||
BKSprite *temp_a1;
|
||||
s32 var_s5;
|
||||
s32 var_v0;
|
||||
s32 var_v0_2;
|
||||
s32 var_v1;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_78100/func_802FFA10.s")
|
||||
gSPDisplayList((*gfx)++, D_8036A228);
|
||||
func_8024C7B8(gfx, mtx);
|
||||
var_f30 = 44.0f;
|
||||
for(sp114 = 0; sp114 < 5; sp114++){
|
||||
temp_a1 = D_80381E40[sp114];
|
||||
spF0 = (D_80381E58[sp114] != 0) ? 1 : 0;
|
||||
if (temp_a1 != NULL) {
|
||||
var_f28 = 0.0f;
|
||||
func_80347FC0(gfx, temp_a1, (s32) D_80381E60[sp114], 0, 0, 0, 0, 2, 2, &sp11C, &sp118);
|
||||
gDPSetTextureImage((*gfx)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, D_80381620[(s32)D_80381E60[sp114]][sp114]);
|
||||
// gDPSetTextureImage((*gfx)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, 0);
|
||||
gDPTileSync((*gfx)++);
|
||||
gDPSetTile((*gfx)++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 0x0100, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync((*gfx)++);
|
||||
gDPLoadTLUTCmd((*gfx)++, G_TX_LOADTILE, 15);
|
||||
gDPPipeSync((*gfx)++);
|
||||
for (var_s5 = spF0; var_s5 >= 0; var_s5--){
|
||||
gDPPipeSync((*gfx)++);
|
||||
if (spF0) {
|
||||
gDPSetCombineLERP((*gfx)++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
|
||||
gDPSetPrimColor((*gfx)++, 0, 0, 0x00, 0x00, 0x00, 0x8C);
|
||||
} else {
|
||||
gDPSetCombineLERP((*gfx)++, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0);
|
||||
gDPSetPrimColor((*gfx)++, 0, 0, 0x00, 0x00, 0x00, spF0 ? 0xFF : 0x6E);
|
||||
}
|
||||
temp_f20 = (var_f30 - ((f32) D_80276588 / 2)) - var_f28;
|
||||
temp_f14 = ((((f32) D_8027658C / 2) + func_802FB0E4(arg1)) - 266.0f + 40.0f + var_f28) - D_80381E78[sp114];
|
||||
gSPVertex((*gfx)++, *vtx, 4, 0);
|
||||
for(var_v1 = 0; var_v1 < 2; var_v1++){
|
||||
for(var_v0_2 = 0; var_v0_2 < 2; var_v0_2++){
|
||||
(*vtx)->v.ob[0] = (s16) (s32) (((((sp11C * D_80381E54) * (f32) var_v0_2) - ((sp11C * D_80381E54) / 2)) + temp_f20) * 4);
|
||||
(*vtx)->v.ob[1] = (s16) (s32) (((((sp118 * D_80381E54) / 2) - ((sp118 * D_80381E54) * var_v1)) + temp_f14) * 4);
|
||||
(*vtx)->v.ob[2] = -0x14;
|
||||
(*vtx)->v.tc[0] = (s16) (((sp11C - 1) * var_v0_2) << 6);
|
||||
(*vtx)->v.tc[1] = (s16) (((sp118 - 1) * var_v1) << 6);
|
||||
(*vtx)++;
|
||||
}
|
||||
}
|
||||
gSP1Quadrangle((*gfx)++, 0, 1, 3, 2, 0);
|
||||
var_f28 += 2.0f;
|
||||
}
|
||||
}
|
||||
var_f30 += 32.0f;
|
||||
}
|
||||
gDPPipeSync((*gfx)++);
|
||||
gDPSetTextureLUT((*gfx)++, G_TT_NONE);
|
||||
gDPPipelineMode((*gfx)++, G_PM_NPRIMITIVE);
|
||||
func_8024C904(gfx, mtx);
|
||||
}
|
||||
#endif;
|
||||
|
||||
bool func_802FFA10(f32 arg0, s32 arg1, s32 arg2){
|
||||
if(arg1 == 0){
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return (D_80381E78[arg1 - 1] < arg0);
|
||||
}
|
||||
|
||||
void func_802FFA50(enum item_e item_id, struct8s *arg1) {
|
||||
f32 var_f24;
|
||||
s32 temp_s3;
|
||||
s32 jinjo_id;
|
||||
s32 sp78;
|
||||
|
||||
var_f24 = time_getDelta();
|
||||
temp_s3 = func_802FB0D4(arg1);
|
||||
sp78 = item_getCount(item_id);
|
||||
switch(temp_s3){
|
||||
case 1:
|
||||
for(jinjo_id = 0; jinjo_id < 5; jinjo_id++){
|
||||
if (D_80381E40[jinjo_id] == NULL) {
|
||||
D_80381E40[jinjo_id] = assetcache_get(D_8036A210[jinjo_id]);
|
||||
D_80381E78[jinjo_id] = 64.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0:
|
||||
func_802FF358(item_id, arg1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (temp_s3 != 0) {
|
||||
for(jinjo_id = 0; jinjo_id < 5; jinjo_id++){
|
||||
switch (D_80381E58[jinjo_id]) {
|
||||
case 0:
|
||||
if (((1 << jinjo_id) & sp78) && (temp_s3 == 2) && (D_80381E78[jinjo_id] < 1.0f)) {
|
||||
D_80381E58[jinjo_id] = 2;
|
||||
func_8030E560(SFX_3EE, 26000);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
D_80381E60[jinjo_id] += var_f24 * 15.0;
|
||||
if ((s32) D_80381E60[jinjo_id] >= 9) {
|
||||
D_80381E60[jinjo_id] = 9.0f;
|
||||
D_80381E58[jinjo_id] = 3;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (0.95 < randf2(0.0f, 1.0f)) {
|
||||
D_80381E58[jinjo_id] = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
D_80381E60[jinjo_id] += var_f24 * 30.0;
|
||||
if ((s32) D_80381E60[jinjo_id] >= 12) {
|
||||
D_80381E58[jinjo_id] = 3;
|
||||
D_80381E60[jinjo_id] = 12.0f;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
D_80381E60[jinjo_id] -= var_f24 * 30.0;
|
||||
if ((s32) D_80381E60[jinjo_id] < 10) {
|
||||
D_80381E60[jinjo_id] = 9.0f;
|
||||
D_80381E58[jinjo_id] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (temp_s3) { /* switch 1; irregular */
|
||||
case 3: /* switch 1 */
|
||||
break;
|
||||
case 1: /* switch 1 */
|
||||
case 2: /* switch 1 */
|
||||
if (func_802FFA10(15.0f, jinjo_id, 5)) {
|
||||
if (D_80381E78[jinjo_id] >= 1.0f) {
|
||||
D_80381E78[jinjo_id] *= 0.6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_78100/func_802FFA50.s")
|
||||
|
|
|
@ -134,9 +134,9 @@ void func_802FFED4(s32 item_id, struct8s *arg1){
|
|||
// }
|
||||
// //var_a1_2 = n
|
||||
// // temp_a0->words.w0 = ((((var_a1_2 * 0x10) - 1) | (var_v0 << 0xA)) & 0xFFFF) | 0x04000000;
|
||||
// var_fp = 4;
|
||||
// // temp_a0->words.w1 = *vtx;
|
||||
// gSPVertex((*gfx)++, *vtx, var_a1_2, var_v0);
|
||||
// var_fp = 4;
|
||||
// } else {
|
||||
// var_s4 = temp_v0_5 * 2;
|
||||
// var_s6 = var_s4 + 2;
|
||||
|
@ -167,12 +167,7 @@ void func_802FFED4(s32 item_id, struct8s *arg1){
|
|||
// (*vtx)->v.tc[1] = (s16) (((spEC - 1) * var_v1) << 6);
|
||||
// (*vtx)++;
|
||||
// }
|
||||
// temp_v0_6 = *gfx;
|
||||
// temp_t6 = (var_s4 & 0xFF) << 0x10;
|
||||
// temp_a1 = var_s7 & 0xFF;
|
||||
// *gfx = temp_v0_6 + 8;
|
||||
// temp_v0_6->words.w1 = temp_t6 | (temp_a1 << 8) | (var_fp & 0xFF);
|
||||
// temp_v0_6->words.w0 = temp_t6 | ((var_s6 & 0xFF) << 8) | temp_a1 | 0xB1000000;
|
||||
// gSP2Triangles((*gfx)++, var_s4/2, var_fp/2, var_s7/2, 0, var_s4/2, var_s7/2, var_fp/2, 0);
|
||||
// } while (sp10C != 0);
|
||||
// gDPPipeSync((*gfx)++);
|
||||
// gDPSetTextureLUT((*gfx)++, G_TT_NONE);
|
||||
|
@ -181,7 +176,7 @@ void func_802FFED4(s32 item_id, struct8s *arg1){
|
|||
// }
|
||||
// }
|
||||
|
||||
void func_803005BC(s32 item_id, struct8s *arg1) {
|
||||
void func_803005BC(enum item_e item_id, struct8s *arg1) {
|
||||
s32 var_v0;
|
||||
s32 sp20;
|
||||
s32 sp1C;
|
||||
|
|
|
@ -72,7 +72,7 @@ void func_8033C070(void){ //savedata_init
|
|||
mumboscore_get_size_and_ptr(&sp4C, &sp2C);
|
||||
func_8032008C(&sp40, &sp28);
|
||||
func_80346F44(&sp48, &sp24);
|
||||
func_8034722C(&sp44, &sp20);
|
||||
itemscore_timeScores_getSizeAndPtr(&sp44, &sp20);
|
||||
func_80347630(&sp3C, &sp1C);
|
||||
func_8029587C(&sp38, &sp18);
|
||||
D_80383CF0 = 0;
|
||||
|
@ -123,7 +123,7 @@ void __savedata_load_mumboScore(u8 *savedata){
|
|||
func_80347984();
|
||||
}
|
||||
|
||||
void func_8033C348(u8 *savedata){
|
||||
void __savedata_load_highNoteScores(u8 *savedata){
|
||||
s32 sp2C;
|
||||
u8 *sp28;
|
||||
int i;
|
||||
|
@ -132,19 +132,19 @@ void func_8033C348(u8 *savedata){
|
|||
for(i = D_80383D00; i < D_80383D00 + sp2C; i++){
|
||||
sp28[i - D_80383D00] = savedata[i];
|
||||
}
|
||||
func_803476B0(sp28);
|
||||
itemscore_highNoteScores_fromSaveData(sp28);
|
||||
}
|
||||
|
||||
void func_8033C3D4(u8 *savedata){
|
||||
void __savedata_load_timeScores(u8 *savedata){
|
||||
s32 sp2C;
|
||||
u8 *sp28;
|
||||
int i;
|
||||
|
||||
func_8034722C(&sp2C, &sp28);
|
||||
itemscore_timeScores_getSizeAndPtr(&sp2C, &sp28);
|
||||
for(i = D_80383D04; i < D_80383D04 + sp2C; i++){
|
||||
sp28[i - D_80383D04] = savedata[i];
|
||||
}
|
||||
func_8034774C(sp28);
|
||||
itemscore_timeScores_fromSaveData(sp28);
|
||||
}
|
||||
|
||||
void func_8033C460(u8 *savedata){ //global_progress
|
||||
|
@ -218,7 +218,7 @@ void __savedata_save_mumboScore(u8 *savedata){
|
|||
}
|
||||
}
|
||||
|
||||
void func_8033C798(u8 *savedata){
|
||||
void __savedata_save_highNoteScores(u8 *savedata){
|
||||
s32 sp2C;
|
||||
u8 *sp28;
|
||||
int i;
|
||||
|
@ -229,12 +229,12 @@ void func_8033C798(u8 *savedata){
|
|||
}
|
||||
}
|
||||
|
||||
void func_8033C81C(u8 *savedata){
|
||||
void __savedata_save_timeScores(u8 *savedata){
|
||||
s32 sp2C;
|
||||
u8 *sp28;
|
||||
int i;
|
||||
|
||||
func_8034722C(&sp2C, &sp28);
|
||||
itemscore_timeScores_getSizeAndPtr(&sp2C, &sp28);
|
||||
for(i = D_80383D04; i < D_80383D04 + sp2C; i++){
|
||||
savedata[i] = sp28[i - D_80383D04];
|
||||
}
|
||||
|
@ -313,8 +313,8 @@ void saveData_load(SaveData *savedata){
|
|||
__savedata_load_jiggyScore(savedata);
|
||||
__savedata_load_honeycombScore(savedata);
|
||||
__savedata_load_mumboScore(savedata);
|
||||
func_8033C348(savedata);
|
||||
func_8033C3D4(savedata);
|
||||
__savedata_load_highNoteScores(savedata);
|
||||
__savedata_load_timeScores(savedata);
|
||||
func_8033C4E4(savedata);
|
||||
func_8033C570(savedata);
|
||||
for(i = 0; D_80370A20[i].unk0 != -1; i++){
|
||||
|
@ -332,8 +332,8 @@ void saveData_create(SaveData *savedata){
|
|||
__savedata_save_jiggyScore(savedata);
|
||||
__savedata_save_honeycombScore(savedata);
|
||||
__savedata_save_mumboScore(savedata);
|
||||
func_8033C798(savedata);
|
||||
func_8033C81C(savedata);
|
||||
__savedata_save_highNoteScores(savedata);
|
||||
__savedata_save_timeScores(savedata);
|
||||
func_8033C8A0(savedata);
|
||||
func_8033C924(savedata);
|
||||
func_8033C9A8(savedata);
|
||||
|
|
|
@ -2,21 +2,26 @@
|
|||
#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);
|
||||
s32 func_803463D4(enum item_e item, s32 diff);
|
||||
void itemscore_noteScores_clear(void);
|
||||
s32 itemscore_noteScores_get(enum level_e lvl_id);
|
||||
void itemscore_timeScores_clear(void);
|
||||
|
||||
extern s32 D_80385F30[];
|
||||
s32 D_80385F30[0x2C];
|
||||
extern s32 D_80385FE0;
|
||||
extern s32 D_80385FE4;
|
||||
extern s32 D_80385FE8;
|
||||
extern f32 D_80385FEC;
|
||||
extern u8 D_80385FF0[];
|
||||
extern f32 D_80386000[];
|
||||
u8 D_80385FF0[0xB];
|
||||
f32 D_80386000[0xE]; //timescores
|
||||
extern s32 D_80386038;
|
||||
extern u64 D_80386040;
|
||||
extern u16 D_80386048[]; //timescores_truncated
|
||||
extern u8 D_80386060[]; //saved item array
|
||||
extern s32 D_80386068;
|
||||
|
||||
void func_80345EB0(enum item_e item){
|
||||
|
@ -46,11 +51,7 @@ s32 item_getCount(enum item_e 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 func_80345FB4(enum item_e item, s32 diff, s32 arg2){\
|
||||
s32 oldVal;
|
||||
s32 sp40;
|
||||
s32 sp3C;
|
||||
|
@ -72,8 +73,10 @@ s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
|
|||
|| (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)))
|
||||
|| (item == ITEM_17_AIR && func_803203FC(UNKFLAGS1_96_SANDCASTLE_INFINITE_AIR))
|
||||
){
|
||||
diff = 0;
|
||||
}
|
||||
}
|
||||
newVal = MAX(0, D_80385F30[item] + diff);
|
||||
D_80385F30[item] = newVal;
|
||||
|
@ -137,7 +140,7 @@ s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
|
|||
}
|
||||
break;
|
||||
case ITEM_C_NOTE:
|
||||
sp28 = notescore_getLevelScore(level_get());
|
||||
sp28 = itemscore_noteScores_get(level_get());
|
||||
func_80346DB4(D_80385F30[item]);
|
||||
if(D_80385F30[item] == 100 && sp28 != 100){
|
||||
func_8025A6EC(COMUSIC_36_100TH_NOTE_COLLECTED, 20000);
|
||||
|
@ -145,7 +148,7 @@ s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
|
|||
}
|
||||
break;
|
||||
case ITEM_26_JIGGY_TOTAL:
|
||||
D_80385F30[0x2b] += diff;
|
||||
D_80385F30[ITEM_2B_UNKNOWN] += diff;
|
||||
break;
|
||||
}
|
||||
return D_80385F30[item];
|
||||
|
@ -184,8 +187,8 @@ void func_8034646C(void){
|
|||
D_80385F30[ITEM_1C_MUMBO_TOKEN] = 0;
|
||||
D_80385F30[0x2B] = 0;
|
||||
D_80385F30[ITEM_26_JIGGY_TOTAL] = 0;
|
||||
func_80346D78();
|
||||
func_80347060();
|
||||
itemscore_noteScores_clear();
|
||||
itemscore_timeScores_clear();
|
||||
D_80385FE4 = FALSE;
|
||||
}
|
||||
|
||||
|
@ -341,9 +344,18 @@ void func_80346C10(enum bs_e *retVal, enum bs_e fail_state, enum bs_e success_st
|
|||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346CA8.s")
|
||||
void func_80346CA8(void) {
|
||||
D_80385FE0 = 0;
|
||||
if (D_80385FE4) {
|
||||
D_80385FE0 = TRUE;
|
||||
D_80385F30[ITEM_14_HEALTH] = D_80385F30[ITEM_15_HEALTH_TOTAL];
|
||||
D_80385F30[ITEM_17_AIR] = 60*60;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346CE8.s")
|
||||
void func_80346CE8(void){
|
||||
D_80385FE4 = FALSE;
|
||||
}
|
||||
|
||||
enum item_e func_80346CF4(enum actor_e actor_id){
|
||||
switch(actor_id){
|
||||
|
@ -358,11 +370,43 @@ enum item_e func_80346CF4(enum actor_e actor_id){
|
|||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346D78.s")
|
||||
void itemscore_noteScores_clear(void) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346DB4.s")
|
||||
for(i = 0; i < 0xe; i++){
|
||||
D_80385FF0[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 notescore_getTotal(void){
|
||||
//itemscore_noteScores_update
|
||||
void func_80346DB4(s32 note_count) {
|
||||
s32 level_id;
|
||||
|
||||
level_id = level_get();
|
||||
if (!func_802E4A08() && (level_id > 0) && (level_id < 0xE)) {
|
||||
if (D_80385FF0[level_id] < note_count) {
|
||||
D_80385FF0[level_id] = note_count;
|
||||
if ((level_get() == LEVEL_1_MUMBOS_MOUNTAIN) && (note_count == 50)) {
|
||||
func_80311480(0xF74, 4, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
if (note_count == 100) {
|
||||
func_80311480(0xF78, 4, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
if (note_count == 1) {
|
||||
levelSpecificFlags_set(0x34, TRUE);
|
||||
}
|
||||
if (!levelSpecificFlags_get(0x34) && (func_80311480(0xF76, 0, NULL, NULL, NULL, NULL))) {
|
||||
levelSpecificFlags_set(0x34, TRUE);
|
||||
}
|
||||
if (func_803203FC(0x17) == 0) {
|
||||
func_803204E4(0x17, 1);
|
||||
func_80320524(0x19, level_id, 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 itemscore_noteScores_getTotal(void){
|
||||
int i = 1;
|
||||
s32 total = 0;
|
||||
do{
|
||||
|
@ -371,23 +415,68 @@ s32 notescore_getTotal(void){
|
|||
return total;
|
||||
}
|
||||
|
||||
s32 notescore_getLevelScore(enum level_e lvl_id){
|
||||
s32 itemscore_noteScores_get(enum level_e lvl_id){
|
||||
return D_80385FF0[lvl_id];
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80346F44.s")
|
||||
#else
|
||||
void func_80346F44(s32 *size, void **ptr) {
|
||||
s32 var_s0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347018.s")
|
||||
*size = sizeof(u64);
|
||||
*ptr = (void *)&D_80386040;
|
||||
D_80386040 = 0;
|
||||
for(var_s0 = 1; var_s0 < 0xB; var_s0++){
|
||||
if(var_s0 != 6){
|
||||
D_80386040 <<= 7;
|
||||
D_80386040 |= D_80385FF0[var_s0];
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_80347060.s")
|
||||
void itemscore_noteScoress_maxAll(void) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803470A0.s")
|
||||
for(i = 1; i < 11; i++){
|
||||
D_80385FF0[i] = 100;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034717C.s")
|
||||
void itemscore_timeScores_clear(void) {
|
||||
s32 i;
|
||||
for(i = 0; i < 0xE; i++){
|
||||
D_80386000[i] = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034722C.s")
|
||||
s32 itemscore_timeScores_getTotal(void) {
|
||||
s32 total;
|
||||
s32 i;
|
||||
|
||||
extern u8 D_80386060[]; //saved item array
|
||||
total = 0;
|
||||
for(i = 0; i < 0xE; i++){
|
||||
total += D_80386000[i];
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
u16 itemscore_timeScores_get(enum level_e level_id) {
|
||||
return (u16) D_80386000[level_id];
|
||||
}
|
||||
|
||||
void itemscore_timeScores_getSizeAndPtr(s32 *size, void **ptr) {
|
||||
s32 i;
|
||||
|
||||
*size = 0xB*sizeof(s16);
|
||||
for(i = 0; i < 0xB; i++){
|
||||
D_80386048[i] = (u16) D_80386000[i + 1];
|
||||
|
||||
}
|
||||
*ptr = (void *)&D_80386048;
|
||||
}
|
||||
|
||||
//itemscore_getSavedItemArray
|
||||
void func_80347630(s32 *size, u8 **buffer){
|
||||
|
@ -400,11 +489,56 @@ void func_80347630(s32 *size, u8 **buffer){
|
|||
*buffer = D_80386060;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_803476B0.s")
|
||||
void itemscore_highNoteScores_fromSaveData(u8 *savedata) {
|
||||
u64 sp28;
|
||||
s32 temp_ret;
|
||||
s32 i;
|
||||
enum level_e level_id;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034774C.s")
|
||||
sp28 = *(u64*)savedata;
|
||||
level_id = 10;
|
||||
for( i = 0; i != 9; i++){
|
||||
D_80385FF0[level_id] = sp28 & 0x7F;
|
||||
level_id--;
|
||||
sp28 >>= 7;
|
||||
|
||||
if (level_id == LEVEL_6_LAIR) {
|
||||
level_id--;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_BEF20/func_8034789C.s")
|
||||
void itemscore_timeScores_fromSaveData(u16 *savedata) {
|
||||
s32 i;
|
||||
|
||||
itemscore_timeScores_clear();
|
||||
for(i = 0; i < 0xB; i++){
|
||||
D_80386000[i + 1] = savedata[i];
|
||||
}
|
||||
}
|
||||
|
||||
void func_8034789C(void) {
|
||||
s32 sp1C;
|
||||
s32 temp_v0;
|
||||
|
||||
sp1C = honeycombscore_get_total();
|
||||
D_80385F30[ITEM_13_EMPTY_HONEYCOMB] = sp1C % 6;
|
||||
if (func_8031FF1C(BKPROG_B9_DOUBLE_HEALTH)) {
|
||||
D_80385F30[ITEM_15_HEALTH_TOTAL] = 16;
|
||||
} else {
|
||||
D_80385F30[ITEM_15_HEALTH_TOTAL] = 5 + MIN(3, (sp1C / 6));
|
||||
}
|
||||
if (func_803203FC(0x94)) {
|
||||
temp_v0 = D_80385F30[ITEM_15_HEALTH_TOTAL];
|
||||
if (temp_v0 >= 9) {
|
||||
D_80385F30[ITEM_15_HEALTH_TOTAL] = temp_v0;
|
||||
}
|
||||
else{
|
||||
D_80385F30[ITEM_15_HEALTH_TOTAL] = 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80347958(void){
|
||||
func_8034789C();
|
||||
|
|
|
@ -102,14 +102,11 @@ void func_803591E8(Actor *this, s32 next_state){
|
|||
this->state = next_state;
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_D2180/func_8035933C.s")
|
||||
#else
|
||||
void func_8035933C(Actor *this){
|
||||
ActorLocal_core2_D2180 * local = (ActorLocal_core2_D2180 *) &this->local;
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
local->unk0 = &D_80372940[(this->modelCacheIndex - 0x2AE)];
|
||||
local->unk0 = D_80372940 + (this->modelCacheIndex - 0x2AE);
|
||||
func_803591E8(this, 1);
|
||||
}
|
||||
if(this->state == 1){
|
||||
|
@ -123,7 +120,6 @@ void func_8035933C(Actor *this){
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_80359424(Actor *this){
|
||||
if(func_803292E0(this))
|
||||
|
|
|
@ -216,7 +216,7 @@ void func_80311B44(void){
|
|||
}
|
||||
|
||||
void func_80311B9C(s32 level, s32 *valPtr, s32 *maxPtr){
|
||||
*valPtr = notescore_getLevelScore(level); //get note highscore
|
||||
*valPtr = itemscore_noteScores_get(level); //get note highscore
|
||||
*maxPtr = 100;
|
||||
}
|
||||
|
||||
|
@ -286,14 +286,14 @@ void func_80311D74(s32 level){
|
|||
|
||||
//gametime_2_sting
|
||||
strcpy(D_8036C520[3].str, empty);
|
||||
strcat(D_8036C520[3].str, func_80311C64(func_8034717C(level)));
|
||||
strcat(D_8036C520[3].str, func_80311C64(itemscore_timeScores_get(level)));
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/gc/pauseMenu/func_80311D74.s")
|
||||
#endif
|
||||
|
||||
void func_80311ED0(s32 *dst){
|
||||
*dst = notescore_getTotal(); //note_total
|
||||
*dst = itemscore_noteScores_getTotal(); //note_total
|
||||
}
|
||||
|
||||
void func_80311EF8(s32 *dst){
|
||||
|
@ -330,7 +330,7 @@ void func_80311F48(void){
|
|||
|
||||
//gametime_2_sting
|
||||
strcpy(D_8036C520[3].str, empty);
|
||||
strcat(D_8036C520[3].str, func_80311C64(func_803470A0()));
|
||||
strcat(D_8036C520[3].str, func_80311C64(itemscore_timeScores_getTotal()));
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/gc/pauseMenu/func_80311F48.s")
|
||||
|
|
|
@ -654,7 +654,7 @@ void func_80387730(Actor *this) {
|
|||
if ((ml_vec3f_distance(spAC, this->position) < 500.0f) && (func_803114C4() != 0xF64)) {
|
||||
func_802FACA4(0xC);
|
||||
}
|
||||
if (notescore_getTotal() >= D_8039347A[this->unkF4_8]) {
|
||||
if (itemscore_noteScores_getTotal() >= D_8039347A[this->unkF4_8]) {
|
||||
if (this->marker->unk14_21) {
|
||||
func_8032BC60(this, 5, sp90);
|
||||
func_8032BC60(this, 6, sp84);
|
||||
|
|
|
@ -384,7 +384,7 @@ segments:
|
|||
- [0xCFA60, c, ch/code_CFA60] #DONE
|
||||
- [0xD01C0, c, ch/clucker] #DONE
|
||||
- [0xD0CA0, c, code_D0CA0]
|
||||
- [0xD2180, c, code_D2180]
|
||||
- [0xD2180, c, code_D2180] #DONE
|
||||
- [0xD2500, c, ch/firefx] #DONE
|
||||
- [0xD2AB0, c, ch/drips] #DONE
|
||||
- [0xD2E10, c, ch/icecube] #DONE
|
||||
|
@ -729,7 +729,8 @@ segments:
|
|||
- [0xF0410, bin, data_F0410]
|
||||
- [0xF0420, bin, data_F0420] #this is first part of [.rodata, code_76D90], COMBINE WITH FOLLOWING SECTION ONCE CODE DONE
|
||||
- [0xF0440, .rodata, code_76D90]
|
||||
- [0xF0470, bin, data_F0470]
|
||||
- [0xF0470, bin, data_F0470] #.rodata, code_78100]
|
||||
- [0xF04A0, .rodata, code_78100]
|
||||
- [0xF04D0, .rodata, fxcommon3score]
|
||||
- [0xF04F0, bin, data_F04F0]
|
||||
- [0xF0520, .rodata, code_7AF80]
|
||||
|
|
|
@ -383,8 +383,8 @@ item_dec = 0x80345F44;
|
|||
item_empty = 0x80345F74;
|
||||
item_getCount = 0x80345FA0;
|
||||
item_set = 0x80346414;
|
||||
notescore_getTotal = 0x80346EEC;
|
||||
notescore_getLevelScore = 0x80346F34;
|
||||
itemscore_noteScores_getTotal = 0x80346EEC;
|
||||
itemscore_noteScores_get = 0x80346F34;
|
||||
demo_readInput = 0x80349EE4;
|
||||
demo_load = 0x8034A06C;
|
||||
demo_free = 0x8034A0EC;
|
||||
|
@ -410,6 +410,7 @@ D_80367DC4 = 0x80367DC4;
|
|||
D_803682D0 = 0x803682D0;
|
||||
D_803688E0 = 0x803688E0;
|
||||
D_803688E8 = 0x803688E8;
|
||||
D_8036A070 = 0x8036A070;
|
||||
sSpawnableActorSize = 0x8036A9B0;
|
||||
sSpawnableActorList = 0x8036A9B4;
|
||||
D_8036B810 = 0x8036B810;
|
||||
|
@ -516,6 +517,7 @@ print_sFonts = 0x80380AD0;
|
|||
print_sPrintBuffer = 0x80380AE0;
|
||||
print_sCurrentPtr = 0x80380AE4;
|
||||
print_sInFontFormatMode = 0x80380B08;
|
||||
D_80381E90 = 0x80381E90;
|
||||
jiggyscore = 0x803832C0;
|
||||
sHoneycombScore = 0x803832E0;
|
||||
sMumboTokenScore = 0x803832F0;
|
||||
|
|
Loading…
Reference in New Issue