misc core1 progress

This commit is contained in:
Banjo Kazooie 2022-10-14 21:18:41 -05:00
parent 59f32adc6b
commit 237a00e999
16 changed files with 770 additions and 318 deletions

View File

@ -1,4 +1,4 @@
# banjo (90.6955%)
# banjo (90.5890%)
<img src="./progress/progress_total.svg">

View File

@ -357,6 +357,7 @@ enum button_e{
};
#define FACE_BUTTON(button) (button - BUTTON_A)
#define SIDE_BUTTON(button) (button - BUTTON_Z)
enum joystick_e{
JOYSTICK_X = 0x0,

View File

@ -581,7 +581,7 @@ f32 climbGetBottomY(void);
f32 climbGetTopY(void);
void func_802596AC(f32 a0[3], f32 a1[3], f32 a2[3], f32 a3[3]);
void func_8024E55C(s32, void *);
void func_8024E55C(s32, s32 [6]);
void __spawnqueue_add_1(GenMethod_1, s32);
#define SPAWNQUEUE_ADD_1(method, arg0) __spawnqueue_add_1((GenMethod_1) (method), reinterpret_cast(s32, (arg0)))

View File

@ -28,7 +28,7 @@ typedef struct music_track_s{
typedef struct music_track_meta_s{
char *name;
u16 unk4;
u8 pad6[2];
// u8 pad6[2];
}MusicTrackMeta;
#endif

View File

@ -9,7 +9,7 @@
</mask>
<g mask="url(#anybadge_1)">
<path fill="#555" d="M0 0h44v20H0z"/>
<path fill="#52e000" d="M44 0h67v20H44z"/>
<path fill="#55e000" 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">core1</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">81.7847%</text>
<text x="77.5" y="14">81.7847%</text>
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">81.0507%</text>
<text x="77.5" y="14">81.0507%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -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">90.6955%</text>
<text x="183.5" y="14">90.6955%</text>
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">90.5890%</text>
<text x="183.5" y="14">90.5890%</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -4,7 +4,6 @@
//extern
Actor *func_802D94B4(ActorMarker *, Gfx **, Mtx **, Vtx**);
void func_8024E55C(s32, void *);
void func_80324E88(f32);
//public

346
src/core1/code_10A00.c Normal file
View File

@ -0,0 +1,346 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#ifndef CORE2_DATA_CRC2
#define CORE2_DATA_CRC2 0
#endif
extern s32 D_803727F4 = CORE2_DATA_CRC2;
extern struct {
u8 pad0[4];
s32 unk4;
u8 pad8[4];
s32 unkC;
} D_80379B90;
typedef struct {
s32 face_button[6];
s32 side_button[3];
s32 unk24[4];
s32 start_button;
}Struct_core1_10A00_0;
typedef struct {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
f32 unk8;
f32 unkC;
f32 joystick[2];
}Struct_core1_10A00_1;
/* .data */
extern s32 D_80275D38;
extern s32 D_80276574;
/* .bss */
UNK_TYPE(s32) D_802810E0[4][5];
u8 D_80281130;
Struct_core1_10A00_0 D_80281138[4];
Struct_core1_10A00_0 D_80281218;
// u8 pad_80281230[0x20];
Struct_core1_10A00_1 D_80281250[4];
OSMesg D_802812B0;
OSMesg D_802812B4;
OSContPad D_802812B8[4];
OSContPad D_802812D0;
OSMesgQueue D_802812D8;
OSMesgQueue D_802812F0;
f32 D_80281308[4];
OSContStatus D_80281318;
u8 pad_D_80281320[0x8];
s32 D_80281328;
OSThread D_80281330;
u8 pad_D_802814E0[0x200];
f32 D_802816E0;
OSMesgQueue D_802816E8;
OSMesg D_80281700[4];
u8 pad_D_80281710[1];
/* .h */
void func_8024F224(void);
void func_8024F35C(bool arg0);
void func_8024F450(void);
void func_8024F4AC(void);
/* .code */
f32 func_8024E420(s32 arg0, s32 arg1, s32 arg2) {
f32 phi_f2;
phi_f2 = 0.0125f;
if ((D_80379B90.unk4 != D_803727F4) || (D_80379B90.unkC != D_80276574)) {
phi_f2 = 0.00625f;
}
if (arg0 > 0) {
arg0 = (arg2 < arg0) ? arg2 : (arg0 < arg1) ? arg1 : arg0;
arg0 = (s32) ((arg0 - arg1) * 0x50) / (s32) (arg2 - arg1);
} else {
if (arg0 < 0) {
arg0 = (arg0 < -arg2) ? -arg2 : (-arg1 < arg0) ? -arg1 : arg0;
arg0 = (s32) ((arg0 + arg1) * 0x50) / (s32) (arg2 - arg1);
}
}
return phi_f2 *= arg0;
}
void func_8024E55C(s32 controller_index, s32 dst[6]){
dst[FACE_BUTTON(BUTTON_A)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_A)];
dst[FACE_BUTTON(BUTTON_B)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_B)];
dst[FACE_BUTTON(BUTTON_C_LEFT)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_LEFT)];
dst[FACE_BUTTON(BUTTON_C_DOWN)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_DOWN)];
dst[FACE_BUTTON(BUTTON_C_UP)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_UP)];
dst[FACE_BUTTON(BUTTON_C_RIGHT)] = D_80281138[controller_index].face_button[FACE_BUTTON(BUTTON_C_RIGHT)];
}
void func_8024E5A8(s32 controller_index, s32 dst[6]){
dst[FACE_BUTTON(BUTTON_A)] = D_80281218.face_button[FACE_BUTTON(BUTTON_A)];
dst[FACE_BUTTON(BUTTON_B)] = D_80281218.face_button[FACE_BUTTON(BUTTON_B)];
dst[FACE_BUTTON(BUTTON_C_LEFT)] = D_80281218.face_button[FACE_BUTTON(BUTTON_C_LEFT)];
dst[FACE_BUTTON(BUTTON_C_DOWN)] = D_80281218.face_button[FACE_BUTTON(BUTTON_C_DOWN)];
dst[FACE_BUTTON(BUTTON_C_UP)] = D_80281218.face_button[FACE_BUTTON(BUTTON_C_UP)];
dst[FACE_BUTTON(BUTTON_C_RIGHT)] = D_80281218.face_button[FACE_BUTTON(BUTTON_C_RIGHT)];
}
s32 func_8024E5E8(s32 arg0, s32 arg1){
return D_802810E0[arg0][arg1];
}
s32 func_8024E60C(s32 controller_index, s32 dst[3]){
dst[SIDE_BUTTON(BUTTON_Z)] = D_80281138[controller_index].side_button[SIDE_BUTTON(BUTTON_Z)];
dst[SIDE_BUTTON(BUTTON_L)] = D_80281138[controller_index].side_button[SIDE_BUTTON(BUTTON_L)];
dst[SIDE_BUTTON(BUTTON_R)] = D_80281138[controller_index].side_button[SIDE_BUTTON(BUTTON_R)];
}
s32 func_8024E640(s32 controller_index, s32 dst[3]){
dst[SIDE_BUTTON(BUTTON_Z)] = D_80281218.side_button[SIDE_BUTTON(BUTTON_Z)];
dst[SIDE_BUTTON(BUTTON_L)] = D_80281218.side_button[SIDE_BUTTON(BUTTON_L)];
dst[SIDE_BUTTON(BUTTON_R)] = D_80281218.side_button[SIDE_BUTTON(BUTTON_R)];
}
f32 func_8024E668(s32 controller_index){
return D_80281308[controller_index];
}
s32 func_8024E67C(s32 controller_index){
return D_80281138[controller_index].start_button;
}
s32 func_8024E698(s32 controller_index){
if(func_8023DB5C() < 2){
return 0;
}
return D_80281138[controller_index].start_button;
}
void func_8024E6E0(s32 controller_index, s32 *dst[4]){
dst[0] = D_80281138[controller_index].unk24[0];
dst[1] = D_80281138[controller_index].unk24[1];
dst[2] = D_80281138[controller_index].unk24[2];
dst[3] = D_80281138[controller_index].unk24[3];
}
void func_8024E71C(s32 controller_index, f32 dst[2]){
if(func_802E4A08()){
dst[0] = D_80281250[controller_index].joystick[0];
dst[1] = D_80281250[controller_index].joystick[1];
}
else{
dst[0] = func_8024E420(D_802812B8[controller_index].stick_x, 7, 0x3B);
dst[1] = func_8024E420(D_802812B8[controller_index].stick_y, 7, 0x3D);
}
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_10A00/func_8024E7C8.s")
#else
void func_8024E7C8(void){
u32 s0;
s32 sp5C;
if(func_8023E000() == 3)
func_802E4384();
osSetThreadPri(NULL, 0x29);
D_802812D0.stick_x = D_802812B8[0].stick_x;
D_802812D0.stick_y = D_802812B8[0].stick_y;
D_802812D0.button = D_802812B8[0].button;
if( getGameMode() == GAME_MODE_6_FILE_PLAYBACK
|| getGameMode() == GAME_MODE_7_ATTRACT_DEMO
|| getGameMode() == GAME_MODE_8_BOTTLES_BONUS
|| getGameMode() == GAME_MODE_A_SNS_PICTURE
|| getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE
){
s0 = START_BUTTON;
if(gctransition_8030BD98()){
D_802816E0 += time_getDelta();
}
if(D_802816E0 < 1.0 || getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){
s0 = 0;
}
if(D_802812D0.button & s0 || demo_readInput(D_802812B8, &sp5C) < 1){
if(D_802812D0.button & s0){
func_803204E4(0x64, 1);
}
else{
func_803204E4(0x63, 1);
}
func_8033DD90();
}//L8024E944
}//L8024E94C
}
#endif
void func_8024EF74(void){
func_8024F35C(0);
if(!D_80281318.errno)
osContGetReadData(D_802812B8);
}
#ifndef NONMATCHING
void func_8024EFB0(void *);
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_10A00/func_8024EFB0.s")
#else
void func_8024EFB0(void *arg0){
while(1){
osRecvMesg(&D_802812D8, &D_802812F0, 1);
if(D_80281328 == TRUE){
func_8024EF74();
}
else{
osSendMesg(&D_802812D8, 0, 0);
}
}
}
#endif
void func_8024F05C(void){
osCreateMesgQueue(&D_802812D8, &D_802812B0, 1);
osCreateMesgQueue(&D_802812F0, &D_802812B4, 1);
osCreateThread(&D_80281330, 7, func_8024EFB0, NULL, &D_802816E0, 0x28);
osSetEventMesg(OS_EVENT_SI, &D_802812D8, &D_802812B0);
osContInit(&D_802812D8, &D_80281130, &D_80281318);
osContSetCh(1);
func_8024F224();
func_802476DC();
osStartThread(&D_80281330);
}
int func_8024F12C(void){
return D_80281318.errno ? 1 : 0;
}
void func_8024F150(void){
if(func_8024F12C())
func_802DD008(0,0);
}
void func_8024F180(void){
if(func_8024F12C())
func_802DD040(0,0);
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_10A00/func_8024F1B0.s")
#else
void func_8024F1B0(void){
if(D_80281328 == 0){
func_8024F35C(1);
osContStartReadData(&D_802812D8);
}
}
#endif
void func_8024F1F0(void){
osRecvMesg(&D_802812D8, NULL, 1);
func_8024E7C8();
}
void func_8024F224(void){
s32 iController, j;
for(iController = 0; iController < 4; iController++){
D_80281250[iController].unk0 = 0;
D_80281250[iController].unk2 = 0;
D_80281250[iController].unk4 = 0;
D_80281250[iController].unk6 = 0;
D_80281250[iController].joystick[0] = 0.0f;
D_80281250[iController].joystick[1] = 0.0f;
D_80281250[iController].unk8 = 0.0f;
D_80281250[iController].unkC = 0.0f;
for(j = 0; j < 5; j++){
D_802810E0[iController][j] = 0;
}
for(j = 0; j < 14; j++){
D_80281138[iController].face_button[j] = 0;
}
D_80281308[iController] = 0.0f;
}
}
void func_8024F2E4(s32 arg0, Struct_core1_10A00_1 *arg1){
memcpy(arg1, D_80281250 + arg0, sizeof(Struct_core1_10A00_1));
}
void func_8024F328(s32 controller_index, s32 arg1){
D_80281138[controller_index].side_button[SIDE_BUTTON(BUTTON_Z)] = arg1;
}
OSMesgQueue * func_8024F344(void){
return &D_802812F0;
}
OSMesgQueue *func_8024F350(void){
return &D_802812D8;
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_10A00/func_8024F35C.s")
#else
void func_8024F35C(bool arg0){
s32 *ptr = &D_80281328;
if(!arg0)
func_8024F4AC();
else
func_8024F450();
if(arg0 || D_802816E8.validCount == 1)
*ptr = arg0;
}
#endif
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_10A00/func_8024F3B4.s")
int func_8024F3C4(int arg0){
return D_802812B8[arg0].button + D_802812B8[arg0].stick_x + D_802812B8[arg0].stick_y;
}
OSContPad *func_8024F3F4(void){
return &D_802812D0;
}
/* initilizes D_802816E8 message queue */
void func_8024F400(void){
D_80275D38 = TRUE;
osCreateMesgQueue(&D_802816E8, &D_80281700, 5);
osSendMesg(&D_802816E8, 0, 0);
}
void func_8024F450(void){
if(!D_80275D38)
func_8024F400();
osRecvMesg(&D_802816E8, 0, 1);
osSetEventMesg(OS_EVENT_SI, &D_802812D8, &D_802812B0);
}
void func_8024F4AC(void){
osSendMesg(&D_802816E8, 0, 0);
}

View File

@ -3,6 +3,7 @@
#include "variables.h"
#include "music.h"
#include "n_libaudio.h"
extern void func_8025F570(ALCSPlayer *, u8);
extern void func_8025F510(ALCSPlayer *, u8, u8);
@ -23,16 +24,188 @@ void func_8024AF48(void);
void func_8024FB8C(void);
/* .data */
extern MusicTrackMeta D_80275D40[0xB0];
extern s32 D_802762C0;
extern s32 D_802762C4;
MusicTrackMeta D_80275D40[0xB0] = {
{"Blank", 15000},
{"Scrap", 15000},
{"Jungle 2", 20000},
{"Snow 2", 20000},
{"Bells", 21000},
{"Beach", 20000},
{"Swamp", 15000},
{"Crab Cave", 20000},
{"Title", 15000},
{"Notes", 15000},
{"Jinjo", 15000},
{"Feather", 15000},
{"Egg", 15000},
{"Jigpiece", 28000},
{"Sky", 0x7FFF},
{"Spooky", 21000},
{"Training", 15000},
{"Lighthouse", 24000},
{"Crab", 15000},
{"Shell", 0x7FFF},
{"Feather Inv", 15000},
{"Extra life", 15000},
{"Honeycomb", 15000},
{"Empty honey piece", 15000},
{"Extra honey", 15000},
{"Mystery", 15000},
{"You lose", 20000},
{"Termite nest", 0x7FFF},
{"Outside whale", 15000},
{"Spell", 15000},
{"Witch House", 23000},
{"In whale", 0x4650},
{"Desert", 20000},
{"In spooky", 0x4650},
{"Grave", 24000},
{"Church", 28000},
{"Sphinx", 20000},
{"Invulnerabilty", 28000},
{"Collapse", 15000},
{"Snake", 15000},
{"Sandcastle", 15000},
{"Summer", 20000},
{"Winter", 0x6978},
{"Right", 28000},
{"Wrong", 0x7D00},
{"Achieve", 0x7D00},
{"Autumn", 0x55F0},
{"Default forest", 0x7530},
{"5 Jinjos", 15000},
{"Game over", 15000},
{"Nintendo", 15000},
{"Ship", 24000},
{"Shark", 15000},
{"Ship inside", 24000},
{"100 Notes", 15000},
{"Door Open", 15000},
{"Organ sequence", 0x4650},
{"Advent", 15000},
{"Slalom", 15000},
{"Race win", 15000},
{"Race lose", 15000},
{"Jigsaw magic", 15000},
{"Oh dear", 15000},
{"Up", 15000},
{"Down", 15000},
{"Shamen Hut", 0x4A38},
{"Jig 10", 0x61A8},
{"Carpet", 15000},
{"Squirrel", 15000},
{"Hornet", 15000},
{"Treetop", 0x7D00},
{"Turtle Shell", 0x61A8},
{"House Summer", 15000},
{"House Autumn", 15000},
{"Out Buildings", 15000},
{"Hornet 2", 15000},
{"Cabins", 15000},
{"Rain", 15000},
{"Jigsaw Open", 15000},
{"Jigsaw Close", 15000},
{"Witch 1", 23000},
{"Witch 2", 23000},
{"Witch 3", 23000},
{"Witch 4", 23000},
{"Witch 5", 23000},
{"Mr Vile", 15000},
{"Bridge", 0x55F0},
{"Turbo Talon Trot", 28000},
{"Long legs", 28000},
{"Witch 6", 23000},
{"Boggy sad", 15000},
{"Boggy happy", 15000},
{"Quit", 15000},
{"Witch 7", 23000},
{"Witch 8", 23000},
{"Spring", 0x4650},
{"Squirrel attic", 0x6590},
{"Lights", 15000},
{"Box", 0x4268},
{"Witch 9", 23000},
{"Open up", 15000},
{"Puzzle complete", 0x61A8},
{"Xmas tree", 15000},
{"Puzzle in", 15000},
{"Lite tune", 15000},
{"Open extra", 15000},
{"Ouija", 0x7148},
{"Wozza", 15000},
{"Intro", 20000},
{"Gnawty", 15000},
{"Banjo's Pad", 15000},
{"Pause", 15000},
{"Cesspit", 0x61A8},
{"Quiz", 15000},
{"Frog", 20000},
{"GameBoy", 15000},
{"Lair", 15000},
{"Red Extra", 0x7D00},
{"Gold Extra", 0x7D00},
{"Egg Extra", 0x7D00},
{"Note door", 15000},
{"Cheaty", 15000},
{"Fairy", 20000},
{"Skull", 0x61A8},
{"Square Grunty", 0x61A8},
{"Square Banjo", 0x61A8},
{"Square Joker", 0x7530},
{"Square Music", 0x61A8},
{"Lab", 20000},
{"Fade Up", 0x61A8},
{"Puzzle Out", 15000},
{"Secret Gobi", 20000},
{"Secret Beach", 20000},
{"Secret Ice", 20000},
{"Secret Spooky", 20000},
{"Secret Squirrel", 20000},
{"Secret Egg", 20000},
{"Jinjup", 0x7D00},
{"Turbo Talon Trot short", 28000},
{"Fade Down", 0x61A8},
{"Big Jinjo", 0x7D00},
{"T1000", 15000},
{"Credits", 15000},
{"T1000x", 20000},
{"Big Door", 20000},
{"Descent", 20000},
{"Wind up", 20000},
{"Air", 20000},
{"Do jig", 20000},
{"Picture", 28000},
{"Piece up", 20000},
{"Piece down", 20000},
{"Spin", 20000},
{"BarBQ", 15000},
{"Chord1", 20000},
{"Chord2", 20000},
{"Chord3", 20000},
{"Chord4", 20000},
{"Chord5", 20000},
{"Chord6", 20000},
{"Chord7", 20000},
{"Chord8", 20000},
{"Chord9", 20000},
{"Chord10", 20000},
{"Shock1", 20000},
{"Shock2", 20000},
{"Shock3", 20000},
{"Shock4", 20000},
{"Sad grunt", 20000},
{"Podium", 20000},
{"Endbit", 20000},
{"Rock", 20000},
{"Last Bit", 20000},
{"Unnamed piece", 15000},
{"Unnamed piece", 15000},
0
};
s32 D_802762C0 = 0;
s32 D_802762C4 = 0;
/* .rodata */
extern f32 D_80278180;
extern f32 D_80278184;
/* .data */
/* .bss */
MusicTrack D_80281720[6];
MusicTrack **D_802820E0;
ALSeqpConfig D_802820E8;
@ -40,10 +213,6 @@ u16 D_80282104; //called as u16 someplaces and s16 others
ALBank * D_80282108;
structBs D_80282110[0x20];
/* .rodata */
/* .code */
void func_8024F4E0(void){
s32 size;
@ -70,7 +239,7 @@ void func_8024F4E0(void){
D_802820E8.stopOsc = NULL;
func_8023FA64(&D_802820E8);
for(i = 0; i < 6; i++){
n_alCSPNew(&D_80281720[i].cseqp, &D_802820E8); //alCSPNew
n_alCSPNew(&D_80281720[i].cseqp, &D_802820E8);
}
alBnkfNew(bnk_f, (u8 *)&D_EADE60);
@ -322,7 +491,7 @@ s32 func_802500C0(void){
return *(s16 *)&D_80282104;
}
ALCSPlayer *func_802500CC(s32 arg0){
N_ALCSPlayer *func_802500CC(s32 arg0){
return &D_80281720[arg0].cseqp;
}
@ -362,8 +531,8 @@ void func_80250200(s32 arg0, s16 chan, s16 arg2, f32 arg3){
mask = osSetIntMask(OS_IM_NONE);
tmpf = (!func_80250074(arg0))? func_8025F4A0(sp28, chan) :127.0f;
if(arg3 < D_80278180){
arg3 = D_80278180;
if(arg3 < 0.0333333351f){
arg3 = 0.0333333351f;
}
for(i = 0; i< 0x20; i++){
@ -391,8 +560,8 @@ void func_80250360(s32 arg0, s32 arg1, f32 arg2){
sp24 = func_802500CC(arg0);
sp1C = osSetIntMask(1);
tempo = alCSPGetTempo(sp24);
if( arg2 < D_80278184){
arg2 = D_80278184;
if( arg2 < 0.0333333351f){
arg2 = 0.0333333351f;
}
for(i = 0; i < 0x20; i++){
if(D_80282110[i].unk8 == D_80282110[i].unk10
@ -466,9 +635,8 @@ void func_80250604(s32 arg0, s32 arg1, f32 arg2){
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_11AC0/func_80250650.s")
#else
void func_80250650(void) {
ALCSPlayer *csplayer;
N_ALCSPlayer *csplayer;
s32 i;
s32 mask;
for(i = 0; i < 0x20; i++){
csplayer = func_802500CC(D_80282110[i].unk0);
@ -482,7 +650,7 @@ void func_80250650(void) {
alCSPSetTempo(csplayer, (s32) D_80282110[i].unk8);
} else {
func_8025F510(csplayer,D_80282110[i].chan, D_80282110[i].unk8);
if ((csplayer->chanMask) & (1U << D_80282110[i].chan)) {
if (((csplayer->chanMask) & (1 << D_80282110[i].chan))) {
if (D_80282110[i].unk8 == 0.0) {
func_8025F5C0(csplayer, D_80282110[i].chan);
}

View File

@ -16,15 +16,11 @@ typedef struct struct_2a_s{
u32 bss_end;
} struct2As;
extern u8 D_80363590;
extern u8 D_80379B90;
extern u8 D_803A5D00;
extern u8 D_F55960;
extern u8 D_1048560;
extern struct2As D_802762D0[] = {
/* .data */
struct2As D_802762D0[] = {
{"gs", 0x80286F90, 0x803863F0, 0x00F55960, 0x01048560, 0x80286F90, 0x80363590, 0x80363590, 0x80379B90, 0x80379B90, 0x803863F0},
{"coshow", 0x803863F0, 0x80386430, 0x010BCD00, 0x010BCD20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
{"whale", 0x803863F0, 0x8038A000, 0x01048560, 0x0104C0E0, 0x803863F0, 0x80389AA0, 0x80389AA0, 0x80389F70, 0x80389F70, 0x8038A000},
@ -41,12 +37,11 @@ extern struct2As D_802762D0[] = {
{"witch", 0x803863F0, 0x80395470, 0x01098070, 0x010A6FD0, 0x803863F0, 0x80392CB0, 0x80392CB0, 0x80395350, 0x80395350, 0x80395470},
{"battle", 0x803863F0, 0x80392930, 0x010A6FD0, 0x010B3320, 0x803863F0, 0x80391380, 0x80391380, 0x80392740, 0x80392740, 0x80392930},
};
extern u8 D_80286F90;
extern s32 D_80276564 = 15;
s32 D_80276564 = 15;
/* .bss */
enum overlay_e D_80282800;
extern u8 D_803863F0;
void func_802513A4(void);
@ -115,8 +110,6 @@ int is_overlay_loaded(int overlay_id){
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_136D0/load_overlay.s")
#else
bool load_overlay(enum overlay_e overlay_id){
struct2As *rom_info;
if(overlay_id == 0)
return FALSE;
@ -124,14 +117,13 @@ bool load_overlay(enum overlay_e overlay_id){
return FALSE;
D_80282800 = overlay_id;
rom_info = &D_802762D0[D_80282800];
func_80253050(
overlay_id,
rom_info->ram_start, rom_info->ram_end,
rom_info->unkC, rom_info->unk10,
rom_info->code_start, rom_info->code_end,
rom_info->data_start, rom_info->data_end,
rom_info->bss_start, rom_info->bss_end
D_802762D0[overlay_id].ram_start, D_802762D0[overlay_id].ram_end,
D_802762D0[overlay_id].unkC, D_802762D0[overlay_id].unk10,
D_802762D0[overlay_id].code_start, D_802762D0[overlay_id].code_end,
D_802762D0[overlay_id].data_start, D_802762D0[overlay_id].data_end,
D_802762D0[overlay_id].bss_start, D_802762D0[overlay_id].bss_end
);
return TRUE;
}
@ -143,11 +135,32 @@ s32 func_802512FC(void){
}
#ifdef NONMATCHING
//this matches, but requires core2 section address to be linked to core
//needed for shiftability
extern u8 core2_VRAM_START[]; //core2 RAM start
extern u8 core2_VRAM_END[]; //core2 RAM end
extern u8 core2_us_v10_rzip_ROM_START[];
extern u8 core2_us_v10_rzip_ROM_END[];
extern u8 core2_TEXT_START[];
extern u8 core2_TEXT_END[];
extern u8 core2_DATA_START[];
extern u8 core2_DATA_END[];
extern u8 core2_BSS_START[];
extern u8 core2_BSS_END[];
void func_80251308(void){
func_802512FC();
func_80253050(0, &D_80286F90, &D_803863F0, &D_F55960, &D_1048560, &D_80286F90, &D_80363590, &D_80363590, &D_80379B90, &D_80379B90, &D_803863F0);
func_80253050(0,
core2_VRAM_START, core2_VRAM_END,
core2_us_v10_rzip_ROM_START, core2_us_v10_rzip_ROM_END,
core2_TEXT_START, core2_TEXT_END,
core2_DATA_START, core2_DATA_END,
core2_BSS_START, core2_BSS_END
);
func_802511C4();
}
#else
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_136D0/func_80251308.s")
#endif

View File

@ -3,7 +3,7 @@
#include "variables.h"
extern struct {
void *unk0;
u16 *unk0;
int unk4;
} D_80282FE0;

View File

@ -2,6 +2,7 @@
#include "functions.h"
#include "variables.h"
extern f32 D_80275908;
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80245980.s")
@ -47,12 +48,53 @@ void _guMtxIdentF_80245D44(float mf[4][4]) //static
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_8024632C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_802464B0.s")
void func_802464B0(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
c = cosf(arg1);
mf[1][1] = c;
mf[2][2] = c;
s = sinf(arg1);
mf[1][2] = s;
mf[2][1] = -s;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80246510.s")
void func_80246510(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
c = cosf(arg1);
mf[0][0] = c;
mf[2][2] = c;
s = sinf(arg1);
mf[2][0] = s;
mf[0][2] = -s;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80246570.s")
void func_80246570(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
c = cosf(arg1);
mf[0][0] = c;
mf[1][1] = c;
s = sinf(arg1);
mf[0][1] = s;
mf[1][0] = -s;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_802465D0.s")
void func_802465D0(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF_80245D44(mf);
mf[0][0] = arg1;
mf[1][1] = arg2;
mf[2][2] = arg3;
mf[3][3] = 1.0f;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80246624.s")
void func_80246624(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF_80245D44(mf);
mf[3][0] = arg1;
mf[3][1] = arg2;
mf[3][2] = arg3;
}

View File

@ -3,6 +3,7 @@
#include "variables.h"
extern void guPerspective(Mtx *, u16*, f32, f32, f32, f32, f32);
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
extern s32 D_A00001D8;
/* .data */
@ -11,7 +12,6 @@ extern f32 D_80275D24; //aspect
extern f32 D_80275D28; //near
extern f32 D_80275D2C; //far
extern s32 D_80275D38;
/* .rodata */
extern f64 D_802779F0;
@ -34,27 +34,20 @@ f32 D_80280ECC;
f32 D_80280ED0[4][4];
Vp D_80280F10[8];
int D_80280F90;
Mtx D_80280F98;
f32 D_80280F98[4][4];
Mtx D_80280FD8;
s32 D_80281018; //viewport indx
u8 pad_D_8028101C[0x104];
u8 D_80281130[0x188];
OSMesg D_802812B0;
OSMesg D_802812B4;
OSContPad D_802812B8[4];
OSContPad D_802812D0;
OSMesgQueue D_802812D8;
OSMesgQueue D_802812F0;
u8 pad_D_80281308[0x10];
OSContStatus D_80281318;
u8 pad_D_80281320[0x8];
s32 D_80281328;
OSThread D_80281330;
u8 pad_D_802814E0[0x200];
f32 D_802816E0;
OSMesgQueue D_802816E8;
OSMesg D_80281700[4];
u8 pad_D_80281710[1];
u8 pad_8028101C[0x8];
f32 D_80281028[3];
f32 D_80281038[3];
f32 D_80281048[3];
f32 D_80281058[3];
f32 D_80281068[3];
f32 D_80281078[3];
f32 D_80281088[3];
f32 D_80281098[4][4];
void func_8024F450(void);
void func_8024F4AC(void);
@ -125,9 +118,9 @@ void func_8024C7B8(Gfx **gfx, Mtx **mtx){
f32 tmp_f18;
gSPViewport((*gfx)++, &D_80280F10[D_80281018]);
tmp_f0 = 2*(f32)D_80276588;
tmp_f2 = 2*(f32)D_8027658C;
guOrtho(*mtx, -tmp_f0, tmp_f0, -tmp_f2, tmp_f2, 1.0f, 20.0f, 1.0f);
tmp_f0 = D_80276588;
tmp_f2 = D_8027658C;
guOrtho(*mtx, -(2*tmp_f0), (2*tmp_f0), -(2*tmp_f2), (2*tmp_f2), 1.0f, 20.0f, 1.0f);
gSPMatrix((*gfx)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guTranslate(*mtx, 0.0f, 0.0f, 0.0f);
@ -150,8 +143,8 @@ void func_8024C964(Gfx **gfx, Mtx **mtx, f32 near, f32 far){
far = MIN(D_80275D2C, far);
if(D_A00001D8 + 0x53D4FFF0){
near = D_80277A00;
far = D_80277A04;
near = 750.0f;
far = 1250.0f;
}
guPerspective(*mtx, &sp5e, D_80275D20, D_80275D24, near, far, 0.5f);
@ -197,7 +190,7 @@ void func_8024CCC4(void){
func_8024CDF8(0.0f, 0.0f, 0.0f);
func_8024CE40(0.0f, 0.0f, 0.0f);
func_8024CC08(40.0f);
func_8024CE60(1.0f, D_80277A08);
func_8024CE60(1.0f, 10000.0f);
func_8024CC5C();
func_8024DDB4(40.0f);
mlMtxIdent();
@ -268,10 +261,10 @@ void func_8024CF10(f32 arg0, f32 arg1, f32 arg2, f32 arg3){
}
void func_8024CFD4(void){
func_80256E24(D_80280ED0[0], D_80280EC0[0], D_80280EC0[1], -89.21774f, 0.0f, D_80277A0C);
func_80256E24(D_80280ED0[1], D_80280EC0[0], D_80280EC0[1], 89.21774f, 0.0f, D_80277A10);
func_80256E24(D_80280ED0[2], D_80280EC0[0], D_80280EC0[1], 0.0f, D_80277A14, D_80277A18);
func_80256E24(D_80280ED0[3], D_80280EC0[0], D_80280EC0[1], 0.0f, D_80277A1C, D_80277A20);
func_80256E24(D_80280ED0[0], D_80280EC0[0], D_80280EC0[1], -89.21774f, 0.0f, 45.168514251708984f);
func_80256E24(D_80280ED0[1], D_80280EC0[0], D_80280EC0[1], 89.21774f, 0.0f, 45.168514251708984f);
func_80256E24(D_80280ED0[2], D_80280EC0[0], D_80280EC0[1], 0.0f, 93.9692611694336f, 34.20201110839844f);
func_80256E24(D_80280ED0[3], D_80280EC0[0], D_80280EC0[1], 0.0f, -93.9692611694336f, 34.20201110839844f);
ml_vec3f_normalize(D_80280ED0[0]);
ml_vec3f_normalize(D_80280ED0[1]);
ml_vec3f_normalize(D_80280ED0[2]);
@ -321,255 +314,139 @@ void func_8024D1EC(f32 arg0[4], f32 arg1[4], f32 arg2[4], f32 arg3[4]){
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024D9B0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DB50.s")
bool func_8024DB50(f32 arg0[3], f32 arg1) {
f32 sp3C[3];
s32 i;
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DC04.s")
sp3C[0] = arg0[0] - D_80280EB0[0];
sp3C[1] = arg0[1] - D_80280EB0[1];
sp3C[2] = arg0[2] - D_80280EB0[2];
for(i = 0; i < 4; i++){
if(arg1 <= ml_vec3f_dot_product(sp3C, D_80280ED0[i])){
return FALSE;
}
}
return TRUE;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DD0C.s")
bool func_8024DC04(f32 arg0, f32 arg1, f32 arg2) {
if (
(((D_80280ED0[0][0] * arg0) + (D_80280ED0[0][1] * arg1) + (D_80280ED0[0][2] * arg2) + D_80280ED0[0][3]) <= 0.0f)
&& (((D_80280ED0[1][0] * arg0) + (D_80280ED0[1][1] * arg1) + (D_80280ED0[1][2] * arg2) + D_80280ED0[1][3]) <= 0.0f)
&& (((D_80280ED0[2][0] * arg0) + (D_80280ED0[2][1] * arg1) + (D_80280ED0[2][2] * arg2) + D_80280ED0[2][3]) <= 0.0f)
&& (((D_80280ED0[3][0] * arg0) + (D_80280ED0[3][1] * arg1) + (D_80280ED0[3][2] * arg2) + D_80280ED0[3][3]) <= 0.0f)
) {
return TRUE;
}
return FALSE;
}
bool func_8024DD0C(f32 arg0[3]){
return func_8024DC04(arg0[0], arg0[1], arg0[2]);
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DD34.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DD90.s")
Mtx *func_8024DD90(void){
return &D_80280F98;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DD9C.s")
Mtx *func_8024DD9C(void){
return &D_80280FD8;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DDA8.s")
f32 func_8024DDA8(void){
return D_80275D20;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DDB4.s")
void func_8024DDB4(f32 arg0){
D_80275D20 = arg0;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DDC0.s")
f32 func_8024DDC0(void){
return D_80275D24;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DDCC.s")
f32 func_8024DDCC(void){
return D_80275D28;
}
f32 func_8024DDD8(s32 arg0, f32 arg1){
return mlNormalizeAngle((D_80280EC0[1] + arg1) + D_80277A30);
return mlNormalizeAngle((D_80280EC0[1] + arg1) + 90.0);
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DE1C.s")
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E030.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E258.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E2FC.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E3A8.s")
#ifndef CORE2_DATA_CRC2
#define CORE2_DATA_CRC2 0
#endif
extern s32 D_803727F4 = CORE2_DATA_CRC2;
extern s32 D_80276574;
extern f32 D_80277A70;
extern f32 D_80277A74;
extern struct {
u8 pad0[4];
s32 unk4;
u8 pad8[4];
s32 unkC;
} D_80379B90;
f32 func_8024E420(s32 arg0, s32 arg1, s32 arg2) {
f32 phi_f2;
phi_f2 = D_80277A70;
if ((D_80379B90.unk4 != D_803727F4) || (D_80379B90.unkC != D_80276574)) {
phi_f2 = D_80277A74;
}
if (arg0 > 0) {
arg0 = (arg2 < arg0) ? arg2 : (arg0 < arg1) ? arg1 : arg0;
arg0 = (s32) ((arg0 - arg1) * 0x50) / (s32) (arg2 - arg1);
} else {
if (arg0 < 0) {
arg0 = (arg0 < -arg2) ? -arg2 : (-arg1 < arg0) ? -arg1 : arg0;
arg0 = (s32) ((arg0 + arg1) * 0x50) / (s32) (arg2 - arg1);
}
}
return phi_f2 *= arg0;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E55C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E5A8.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E5E8.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E60C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E640.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E668.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E67C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E698.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E6E0.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E71C.s")
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024E7C8.s")
#else
void func_8024E7C8(void){
u32 s0;
s32 sp5C;
bool func_8024E030(f32 arg0[3], f32 *arg1) {
f32 sp34[3];
f32 sp28;
f32 sp24;
f32 temp_f0;
f32 temp_f12;
f32 temp_f12_2;
f32 temp_f16;
f32 temp_f2;
f32 temp_f2_2;
if(func_8023E000() == 3)
func_802E4384();
osSetThreadPri(NULL, 0x29);
D_802812D0.stick_x = D_802812B8[0].stick_x;
D_802812D0.stick_y = D_802812B8[0].stick_y;
D_802812D0.button = D_802812B8[0].button;
if( getGameMode() == GAME_MODE_6_FILE_PLAYBACK
|| getGameMode() == GAME_MODE_7_ATTRACT_DEMO
|| getGameMode() == GAME_MODE_8_BOTTLES_BONUS
|| getGameMode() == GAME_MODE_A_SNS_PICTURE
|| getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE
){
s0 = START_BUTTON;
if(gctransition_8030BD98()){
D_802816E0 += time_getDelta();
}
if(D_802816E0 < 1.0 || getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){
s0 = 0;
}
if(D_802812D0.button & s0 || demo_readInput(D_802812B8, &sp5C) < 1){
if(D_802812D0.button & s0){
func_803204E4(0x64, 1);
}
else{
func_803204E4(0x63, 1);
}
func_8033DD90();
}//L8024E944
}//L8024E94C
sp28 = (D_80275D20 * M_PI) / 360.0;
sp34[0] = arg0[0] - D_80280EB0[0];
sp34[1] = arg0[1] - D_80280EB0[1];
sp34[2] = arg0[2] - D_80280EB0[2];
ml_vec3f_yaw_rotate_copy(sp34, sp34, -D_80280EC0[1]);
ml_vec3f_pitch_rotate_copy(&sp34, &sp34, -D_80280EC0[0]);
if (-D_80275D28 <= sp34[2]) {
return FALSE;
}
temp_f2 = gu_sqrtf((sp34[1] * sp34[1]) + (sp34[2] * sp34[2]))*sinf(sp28);
arg1[0] = (f32) ((1 + (sp34[0] / (((f32)D_80276588 / (f32) D_8027658C) * temp_f2))) * ((f32)D_80276588 / 2));
arg1[1] = (f32) ((1 - (sp34[1] / temp_f2)) * ((f32) D_8027658C / 2));
if ((arg1[0] < -(f32)D_80276588) || (((f32)D_80276588 * 2) < arg1[0])) {
return 0;
}
if ((arg1[1] < -(f32)D_8027658C) || (((f32)D_8027658C * 2) < arg1[1])) {
return 0;
}
return 1;
}
#endif
void func_8024EF74(void){
func_8024F35C(0);
if(!D_80281318.errno)
osContGetReadData(D_802812B8);
}
#ifndef NONMATCHING
void func_8024EFB0(void *);
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024EFB0.s")
#else
void func_8024EFB0(void *arg0){
while(1){
osRecvMesg(&D_802812D8, &D_802812F0, 1);
if(D_80281328 == TRUE){
func_8024EF74();
}
else{
osSendMesg(&D_802812D8, 0, 0);
void func_8024E258(void){
s32 i, j;
func_8024C5CC(D_80281028);
func_8024C764(D_80281038);
func_8024D1EC(D_80281048, D_80281058, D_80281068, D_80281078);
func_8024C5A8(D_80281088);
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
D_80281098[i][j] = D_80280F98[i][j];
}
}
}
#endif
void func_8024F05C(void){
osCreateMesgQueue(&D_802812D8, &D_802812B0, 1);
osCreateMesgQueue(&D_802812F0, &D_802812B4, 1);
osCreateThread(&D_80281330, 7, func_8024EFB0, NULL, &D_802816E0, 0x28);
osSetEventMesg(OS_EVENT_SI, &D_802812D8, &D_802812B0);
osContInit(&D_802812D8, &D_80281130, &D_80281318);
osContSetCh(1);
func_8024F224();
func_802476DC();
osStartThread(&D_80281330);
}
int func_8024F12C(void){
return D_80281318.errno ? 1 : 0;
}
void func_8024F150(void){
if(func_8024F12C())
func_802DD008(0,0);
}
void func_8024F180(void){
if(func_8024F12C())
func_802DD040(0,0);
}
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F1B0.s")
#else
void func_8024F1B0(void){
if(D_80281328 == 0){
func_8024F35C(1);
osContStartReadData(&D_802812D8);
void func_8024E2FC(void){
s32 i, j;
func_8024CD88(D_80281028);
func_8024CE18(D_80281038);
func_8024D2B0(D_80281048, D_80281058, D_80281068, D_80281078);
ml_vec3f_copy(D_80280EA0, D_80281088);
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
D_80280F98[i][j] = D_80281098[i][j];
}
}
}
#endif
void func_8024F1F0(void){
osRecvMesg(&D_802812D8, NULL, 1);
func_8024E7C8();
void func_8024E3A8(f32 arg0[3], f32 arg1){
f32 sp1C[3];
ml_vec3f_diff_copy(sp1C, D_80280EB0, arg0);
ml_vec3f_set_length_copy(sp1C, sp1C, arg1);
arg0[0] += sp1C[0];
arg0[1] += sp1C[1];
arg0[2] += sp1C[2];
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F224.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F2E4.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F328.s")
OSMesgQueue * func_8024F344(void){
return &D_802812F0;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F350.s")
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F35C.s")
#else
void func_8024F35C(int arg0){
if(!arg0)
func_8024F4AC();
else
func_8024F450();
if(arg0 || D_802816E8.validCount == 1)
D_80281328[0] = arg0;
}
#endif
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024F3B4.s")
int func_8024F3C4(int arg0){
return D_802812B8[arg0].button + D_802812B8[arg0].stick_x + D_802812B8[arg0].stick_y;
}
OSContPad *func_8024F3F4(void){
return &D_802812D0;
}
/* initilizes D_802816E8 message queue */
void func_8024F400(void){
D_80275D38 = TRUE;
osCreateMesgQueue(&D_802816E8, &D_80281700, 5);
osSendMesg(&D_802816E8, 0, 0);
}
void func_8024F450(void){
if(!D_80275D38)
func_8024F400();
osRecvMesg(&D_802816E8, 0, 1);
osSetEventMesg(OS_EVENT_SI, &D_802812D8, &D_802812B0);
}
void func_8024F4AC(void){
osSendMesg(&D_802816E8, 0, 0);
}

View File

@ -142,7 +142,7 @@ void func_802DD080(Gfx **gfx, Mtx **mtx) {
}
void func_802DD158(Gfx **gfx, Mtx** mtx){
func_8024E2FC(gfx, mtx);
func_8024E2FC();
func_8024C904(gfx, mtx);
}

View File

@ -36,13 +36,12 @@ void gczoombox_update(gczoombox_t *);
void func_8024E6E0(s32, void *);
void func_8024E60C(s32, void *);
void func_8024E71C(s32, void *);
void func_8024E55C(s32, void *);
s32 getGameMode(void);
void gczoombox_highlight(gczoombox_t *, int);
void func_802DC5B8(void);
void func_802DC560(s32, s32);
s32 func_8024E67C(enum button_e);
s32 func_8024E67C(s32 controller_index);
bool func_803188B4(gczoombox_t*);
bool func_803183A4(gczoombox_t*, char *);
bool func_8031FF1C(enum bkprog_e);
@ -912,7 +911,7 @@ s32 gcPauseMenu_update(void){
gcPauseMenu_setState(2);
}
}
if(func_8024E67C(BUTTON_START) == 1){
if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6);
}
break;
@ -926,7 +925,7 @@ s32 gcPauseMenu_update(void){
func_802FACA4(ITEM_16_LIFE);
D_80383010.unk70_30 = 0;
}
if(func_8024E67C(BUTTON_START) == 1){
if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6);
}else if(face_button[FACE_BUTTON(BUTTON_A)] == 1){
switch(D_80383010.selection){
@ -1042,7 +1041,7 @@ s32 gcPauseMenu_update(void){
if(D_8036C4E0[D_80383010.selection].unkF = func_803183A4(D_80383010.zoombox[D_80383010.selection], (D_80383010.unk3_6)? "ARE YOU SURE?" : "A - YES, B - NO"))
D_80383010.unkC = 0.0;
}//L80313AF4
if(func_8024E67C(BUTTON_START) == 1){
if(func_8024E67C(0) == 1){
gcPauseMenu_setState(6);
}else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
D_80383010.unk4 = (D_80383010.return_to_lair_disabled)? 3 : 4;
@ -1079,7 +1078,7 @@ s32 gcPauseMenu_update(void){
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_80312FD0(1);
gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(BUTTON_START) == 1){
if(func_8024E67C(0) == 1){
D_80383010.unk1 = 3;
gcPauseMenu_setState(0xA);
}else if(face_button[FACE_BUTTON(BUTTON_B)] == 1){
@ -1159,7 +1158,7 @@ s32 gcPauseMenu_update(void){
case 0x10:
gcpausemenu_printTotalsHeader(D_80383010.selection);
gcpausemenu_updateBButtonAndJoystickSprites();
if(func_8024E67C(BUTTON_START) == 1){
if(func_8024E67C(0) == 1){
D_80383010.unk1 = 3;
gcPauseMenu_setState(0x11);
}//L80313EFC

View File

@ -44,8 +44,9 @@ segments:
- [0x8C50, c, code_8C50] #DONE
- [0x9D30, c, code_9D30]
- [0xCE60, c, done/code_CE60] #DONE
- [0xE360, c, code_E360]
- [0xE360, c, code_E360] #DONE
- [0xEAF0, c, code_EAF0]
- [0x10A00, c,code_10A00]
- [0x11AC0, c, code_11AC0]
- [0x12F10, c, code_12F10] #DONE
- [0x13640, c, code_13640] #DONE
@ -251,6 +252,9 @@ segments:
- [0x38030, bin, data_38030]
- [0x381F0, bin, data_381F0] # .data, done/code_CE60]
- [0x38260, bin, data_38260]
- [0x38320, .data, code_11AC0]
- [0x388B0, .data, code_136D0]
- [0x38B50, bin, data_38B50]
- [0x38BA0, .data, code_18310]
- [0x39290, bin, data_39290]
- [0x39470, .data, done/audio/n_drvrNew]
@ -280,8 +284,10 @@ segments:
- [0x39CE0, bin, data_39CE0] # .rodata, code_9D30]
- [0x39D00, .rodata, done/code_CE60]
- [0x39FD0, .rodata, code_EAF0]
- [0x39FE0, bin, data_39FD0] # .rodata, code_EAF0] #continued
- [0x3A760, bin, data_3A760] # .rodata, code_11AC0]
- [0x3A050, .rodata, code_10A00]
- [0x3A760, .rodata, code_11AC0]
- [0x3A770, bin, data_3A770]
- [0x3A780, .rodata, code_136D0]
- [0x3A800, bin, data_3A800] # .rodata, code_13990]
- [0x3A820, .rodata, code_18350]
- [0x3A920, .rodata, code_1BE90]
@ -326,6 +332,7 @@ segments:
- [0x3c710, .bss, done/code_CE60]
- [0x3c710, .bss, code_E360]
- [0x3c710, .bss, code_EAF0]
- [0x3c710, .bss, code_10A00]
- [0x3c710, .bss, code_11AC0]
- [0x3c710, .bss, code_12F10]
- [0x3c710, .bss, code_13640]