core1: split code_5650.c from code_3A70.c
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# banjo (90.6686%)
|
# banjo (90.6988%)
|
||||||
|
|
||||||
<img src="./progress/progress_total.svg">
|
<img src="./progress/progress_total.svg">
|
||||||
|
|
||||||
|
@@ -896,4 +896,12 @@ typedef struct{
|
|||||||
// u8 pad16[2];
|
// u8 pad16[2];
|
||||||
void *unk18;
|
void *unk18;
|
||||||
}struct86s;
|
}struct86s;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
s32 unk0; //sound state cnt
|
||||||
|
s32 unk4;
|
||||||
|
s32 unk8; //maxSounds
|
||||||
|
ALHeap *unkC; //heap
|
||||||
|
u16 unk10;
|
||||||
|
}Struct87s;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
<text x="22.0" y="14">core1</text>
|
<text x="22.0" y="14">core1</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<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.5990%</text>
|
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">81.8075%</text>
|
||||||
<text x="77.5" y="14">81.5990%</text>
|
<text x="77.5" y="14">81.8075%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -17,7 +17,7 @@
|
|||||||
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
|
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<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.6686%</text>
|
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">90.6988%</text>
|
||||||
<text x="183.5" y="14">90.6686%</text>
|
<text x="183.5" y="14">90.6988%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1,12 +1,17 @@
|
|||||||
#include <ultra64.h>
|
#include <ultra64.h>
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "n_libaudio.h"
|
|
||||||
|
|
||||||
void func_802444C0(N_AL_Struct81s *arg0);
|
Gfx D_80275880[] = {
|
||||||
void func_80244050(ALEventQueue *arg0, N_AL_Struct81s *arg1, u16 arg2);
|
gsSPClearGeometryMode(G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0060CD00),
|
||||||
|
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF),
|
||||||
extern Gfx D_80275880[];
|
gsDPPipeSync(),
|
||||||
|
gsDPPipelineMode(G_PM_1PRIMITIVE),
|
||||||
|
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
|
||||||
|
gsDPSetCycleType(G_CYC_1CYCLE),
|
||||||
|
gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2),
|
||||||
|
gsSPEndDisplayList()
|
||||||
|
};
|
||||||
|
|
||||||
extern f64 D_80277650;
|
extern f64 D_80277650;
|
||||||
extern f64 D_80277658;
|
extern f64 D_80277658;
|
||||||
@@ -167,459 +172,4 @@ void func_802424D4(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 arg3[3], f32 arg4[3], f3
|
|||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_80242BE8.s")
|
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_80242BE8.s")
|
||||||
|
|
||||||
// BREAK???===
|
// BREAK???===
|
||||||
extern struct{
|
|
||||||
N_AL_Struct81s *unk0;
|
|
||||||
N_AL_Struct81s *unk4;
|
|
||||||
N_AL_Struct81s *unk8;
|
|
||||||
}D_802758C0;
|
|
||||||
|
|
||||||
extern N_ALSndPlayer *D_802758CC;
|
|
||||||
extern s32 D_802758D0;
|
|
||||||
extern s16 D_802758D4;
|
|
||||||
|
|
||||||
extern ALEventUnknown;
|
|
||||||
|
|
||||||
u8 pad_8027EEC0[0x54];
|
|
||||||
u16 *D_8027EF14;
|
|
||||||
extern struct {
|
|
||||||
u8 pad0[4];
|
|
||||||
s32 volume[3];
|
|
||||||
}D_8027EF18;
|
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_80243070.s")
|
|
||||||
// void func_80243070(void *arg0) {
|
|
||||||
// s16 sp40;
|
|
||||||
// ALLink *temp_a0;
|
|
||||||
// s32 var_s1;
|
|
||||||
// s32 var_v0;
|
|
||||||
// u32 var_s0;
|
|
||||||
// u32 var_s0_2;
|
|
||||||
// void *temp_s0;
|
|
||||||
// void *temp_s0_2;
|
|
||||||
// void *temp_s0_3;
|
|
||||||
|
|
||||||
// D_802758CC->maxSounds = (s32) arg0->unk8;
|
|
||||||
// D_802758CC->target = NULL;
|
|
||||||
// D_802758CC->frameTime = 33000;
|
|
||||||
// ;
|
|
||||||
// D_802758CC->sndState = alHeapDBAlloc(NULL, 0, arg0->unkC, 1, arg0->unk0 * sizeof(N_AL_Struct81s));
|
|
||||||
// alEvtqNew(&D_802758CC->evtq, alHeapDBAlloc(NULL, 0, arg0->unkC, 1, arg0->unk4 * 0x1C), arg0->unk4);
|
|
||||||
// // var_s0 = 1;
|
|
||||||
// // var_s1 = 0x50;
|
|
||||||
// D_802758C0.unk8 = D_802758CC->sndState;
|
|
||||||
// if ((u32) arg0->unk0 >= 2U) {
|
|
||||||
// do {
|
|
||||||
// temp_a0 = var_s1 + D_802758CC->unk40;
|
|
||||||
// alLink(temp_a0, temp_a0 - 0x50);
|
|
||||||
// var_s0 += 1;
|
|
||||||
// var_s1 += 0x50;
|
|
||||||
// } while (var_s0 < (u32) arg0->unk0);
|
|
||||||
// }
|
|
||||||
// D_8027EF14 = alHeapDBAlloc(NULL, 0, arg0->unkC, 2, (s32) arg0->unk10);
|
|
||||||
// var_v0 = 0;
|
|
||||||
// var_s0_2 = 0;
|
|
||||||
// if (arg0->unk10 != 0) {
|
|
||||||
// do {
|
|
||||||
// var_s0_2 += 1;
|
|
||||||
// *(D_8027EF14 + var_v0) = 0x7FFF;
|
|
||||||
// var_v0 += 2;
|
|
||||||
// } while (var_s0_2 < (u16) arg0->unk10);
|
|
||||||
// }
|
|
||||||
// D_802758CC->unk0 = 0;
|
|
||||||
// D_802758CC->unk8 = &func_8024324C;
|
|
||||||
// temp_s0 = D_802758CC;
|
|
||||||
// temp_s0->unk4 = temp_s0;
|
|
||||||
// n_alSynAddSndPlayer(D_802758CC);
|
|
||||||
// temp_s0_2 = D_802758CC;
|
|
||||||
// sp40 = 0x20;
|
|
||||||
// alEvtqPostEvent(temp_s0_2 + 0x14, (ALEvent *) &sp40, temp_s0_2->unk48);
|
|
||||||
// temp_s0_3 = D_802758CC;
|
|
||||||
// D_802758CC->unk4C = alEvtqNextEvent(temp_s0_3 + 0x14, temp_s0_3 + 0x28);
|
|
||||||
// }
|
|
||||||
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_8024324C.s")
|
|
||||||
#else
|
|
||||||
void func_8024324C(N_ALSndPlayer *arg0) {
|
|
||||||
N_ALEvent sp3C;
|
|
||||||
|
|
||||||
do {
|
|
||||||
if (arg0->nextEvent.type == 0x20) {
|
|
||||||
sp3C.type = 0x20;
|
|
||||||
alEvtqPostEvent(&arg0->evtq, (ALEvent *) &sp3C, arg0->frameTime);
|
|
||||||
func_80244190(arg0);
|
|
||||||
} else {
|
|
||||||
func_802432F8(arg0, &arg0->nextEvent);
|
|
||||||
}
|
|
||||||
arg0->nextDelta = alEvtqNextEvent(&arg0->evtq, &arg0->nextEvent);
|
|
||||||
} while (arg0->nextDelta == 0);
|
|
||||||
arg0->curTime += arg0->nextDelta;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_802432F8.s")
|
|
||||||
|
|
||||||
void func_80243F84(N_AL_Struct81s *arg0) {
|
|
||||||
if (arg0->unk3F & 4) {
|
|
||||||
n_alSynStopVoice(&arg0->voice);
|
|
||||||
n_alSynFreeVoice(&arg0->voice);
|
|
||||||
}
|
|
||||||
func_802444C0(arg0);
|
|
||||||
func_80244050(&D_802758CC->evtq, arg0, 0xFFFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80243FE4(N_AL_Struct81s *arg0) {
|
|
||||||
ALEvent evt;
|
|
||||||
f32 sp1C;
|
|
||||||
|
|
||||||
sp1C = alCents2Ratio(arg0->unk8->keyMap->detune)* arg0->unk2C;
|
|
||||||
evt.type = 0x10;
|
|
||||||
evt.msg.unk3A70.unk0 = arg0;
|
|
||||||
evt.msg.unk3A70.unk4 = reinterpret_cast(s32, sp1C);
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &evt, 33333);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244050(ALEventQueue *arg0, N_AL_Struct81s *arg1, u16 arg2) {
|
|
||||||
s32 pad[5];
|
|
||||||
u32 mask;
|
|
||||||
ALEventListItem *next_event_list;
|
|
||||||
ALEventListItem *event_list;
|
|
||||||
|
|
||||||
mask = osSetIntMask(OS_IM_NONE);
|
|
||||||
for(event_list = (ALEventListItem *)arg0->allocList.next; event_list != NULL; event_list = next_event_list) {
|
|
||||||
next_event_list = (ALEventListItem *)event_list->node.next;
|
|
||||||
if ((arg1 == event_list->evt.msg.unk3A70.unk0) && (reinterpret_cast(u16, event_list->evt.type) & arg2)) {
|
|
||||||
if (next_event_list != NULL) {
|
|
||||||
next_event_list->delta += event_list->delta;
|
|
||||||
}
|
|
||||||
alUnlink((ALLink *)event_list);
|
|
||||||
alLink((ALLink *)event_list, (ALLink *)arg0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
osSetIntMask(mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 func_80244110(u16 *arg0, u16 *arg1) {
|
|
||||||
N_AL_Struct81s *var_v0;
|
|
||||||
N_AL_Struct81s *var_v1_2;
|
|
||||||
N_AL_Struct81s *var_a2;
|
|
||||||
u16 var_a0;
|
|
||||||
u16 var_a3;
|
|
||||||
u16 var_v1;
|
|
||||||
|
|
||||||
var_v0 = D_802758C0.unk0;
|
|
||||||
var_v1_2 = D_802758C0.unk8;
|
|
||||||
var_a2 = D_802758C0.unk4;
|
|
||||||
|
|
||||||
for(var_a3 = 0; var_v0 != NULL; var_a3++){
|
|
||||||
var_v0 = (N_AL_Struct81s *) var_v0->node.next;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for(var_a0 = 0; var_v1_2 != NULL; var_a0++) {
|
|
||||||
var_v1_2 = (N_AL_Struct81s *) var_v1_2->node.next;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var_v1 = 0; var_a2 != NULL; var_v1++) {
|
|
||||||
var_a2 = (N_AL_Struct81s *) var_a2->node.prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
*arg0 = var_a0;
|
|
||||||
*arg1 = var_a3;
|
|
||||||
return var_v1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_80244190.s")
|
|
||||||
#else
|
|
||||||
void func_80244190(N_AL_Struct81s *arg0) {
|
|
||||||
ALMicroTime *temp_a1;
|
|
||||||
s32 prev_volume;
|
|
||||||
s32 temp_t1;
|
|
||||||
s32 temp_t5;
|
|
||||||
s32 var_t0;
|
|
||||||
ALMicroTime var_t1;
|
|
||||||
u8 temp_t6;
|
|
||||||
u8 var_a2;
|
|
||||||
ALEnvelope *envelope;
|
|
||||||
N_AL_Struct81s *var_v0;
|
|
||||||
N_AL_Struct81s *var_v1;
|
|
||||||
|
|
||||||
for(var_v0 = D_802758C0.unk0; var_v0 != NULL; var_v0 = (N_AL_Struct81s *)var_v0->node.next){
|
|
||||||
var_v1 = var_v0;
|
|
||||||
envelope = var_v0->unk8->envelope;
|
|
||||||
temp_a1 = &envelope->attackTime;
|
|
||||||
D_8027EF18.volume[AL_PHASE_ATTACK] = (s32) envelope->attackVolume;
|
|
||||||
D_8027EF18.volume[AL_PHASE_DECAY] = (s32) envelope->decayVolume;
|
|
||||||
while( var_v0->envPhase < AL_PHASE_RELEASE
|
|
||||||
&& var_v0->unk48 >= temp_a1[var_v0->envPhase]
|
|
||||||
&& temp_a1[var_v0->envPhase] != -1
|
|
||||||
){
|
|
||||||
var_v0->unk48 -= temp_a1[var_v0->envPhase];
|
|
||||||
var_v0->envPhase++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (var_v0->envPhase < AL_PHASE_RELEASE) {
|
|
||||||
if (temp_a1[var_v1->envPhase] != -1) {
|
|
||||||
var_v0->unk44 = D_8027EF18.volume[var_v0->envPhase - 1] + ((s32) ((D_8027EF18.volume[var_v0->envPhase] - D_8027EF18.volume[var_v0->envPhase - 1]) * var_v0->unk48) / temp_a1[var_v0->envPhase]);
|
|
||||||
} else {
|
|
||||||
var_v0->unk44 = D_8027EF18.volume[var_v0->envPhase - 1]; //
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var_v0->unk48 += arg0->unk48;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_3A70/func_8024431C.s")
|
|
||||||
#else
|
|
||||||
N_AL_Struct81s *func_8024431C(ALBank *bank, ALSound *sound) {
|
|
||||||
s32 pad;
|
|
||||||
ALKeyMap *sp30;
|
|
||||||
N_AL_Struct81s *temp_s0;
|
|
||||||
OSIntMask mask;
|
|
||||||
s32 sp24;
|
|
||||||
|
|
||||||
temp_s0 = D_802758C0.unk8;
|
|
||||||
sp30 = sound->keyMap;
|
|
||||||
if (temp_s0 != NULL) {
|
|
||||||
mask = osSetIntMask(OS_IM_NONE);
|
|
||||||
D_802758C0.unk8 = (N_AL_Struct81s *) temp_s0->unk0.next;
|
|
||||||
alUnlink((ALLink *)temp_s0);
|
|
||||||
if (D_802758C0.unk0 != NULL) {
|
|
||||||
temp_s0->unk0.next = D_802758C0.unk0;
|
|
||||||
temp_s0->unk0.prev = NULL;
|
|
||||||
D_802758C0.unk0->unk0.prev = temp_s0;
|
|
||||||
D_802758C0.unk0 = temp_s0;
|
|
||||||
} else {
|
|
||||||
temp_s0->unk0.prev = NULL;
|
|
||||||
temp_s0->unk0.next = NULL;
|
|
||||||
D_802758C0.unk0 = temp_s0;
|
|
||||||
D_802758C0.unk4 = temp_s0;
|
|
||||||
}
|
|
||||||
osSetIntMask(mask);
|
|
||||||
sp24 = ((sound->envelope->decayTime + 1) == 0) + 0x40;
|
|
||||||
temp_s0->unk36 = sp24;
|
|
||||||
temp_s0->unk40 = 5;
|
|
||||||
temp_s0->unk38 = 2;
|
|
||||||
temp_s0->unk8 = sound;
|
|
||||||
temp_s0->unk2C = 1.0f;
|
|
||||||
temp_s0->unk3F = sp30->keyMax & 0xF0;
|
|
||||||
temp_s0->unk30 = 0;
|
|
||||||
temp_s0->envPhase = AL_PHASE_ATTACK;
|
|
||||||
temp_s0->unk44 = 0.0f;
|
|
||||||
temp_s0->unk48 = 0;
|
|
||||||
if (temp_s0->unk3F & 0x20) {
|
|
||||||
temp_s0->unk28 = alCents2Ratio((sp30->keyBase * 0x64) - 0x1770);
|
|
||||||
} else {
|
|
||||||
temp_s0->unk28 = alCents2Ratio(((sp30->keyBase * 0x64) + sp30->detune) - 0x1770);
|
|
||||||
}
|
|
||||||
if (sp24 != 0x40) {
|
|
||||||
temp_s0->unk3F |= 2;
|
|
||||||
}
|
|
||||||
temp_s0->unk3E = 0;
|
|
||||||
temp_s0->unk3D = 0x40;
|
|
||||||
temp_s0->unk34 = 0x7FFF;
|
|
||||||
}
|
|
||||||
return temp_s0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void func_802444C0(N_AL_Struct81s *arg0){
|
|
||||||
N_AL_Struct81s *var_v0;
|
|
||||||
|
|
||||||
sizeof(ALVoice);
|
|
||||||
|
|
||||||
var_v0 = D_802758C0.unk0;
|
|
||||||
if(arg0 == D_802758C0.unk0){
|
|
||||||
D_802758C0.unk0 = (N_AL_Struct81s *)arg0->node.next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(arg0 == D_802758C0.unk4){
|
|
||||||
D_802758C0.unk4 = (N_AL_Struct81s *)arg0->node.prev;
|
|
||||||
}
|
|
||||||
|
|
||||||
alUnlink((ALLink *)arg0);
|
|
||||||
|
|
||||||
if(D_802758C0.unk8 != NULL){
|
|
||||||
arg0->node.next = (ALLink *)D_802758C0.unk8;
|
|
||||||
arg0->node.prev = NULL;
|
|
||||||
D_802758C0.unk8->node.prev = (ALLink *)arg0;
|
|
||||||
D_802758C0.unk8 = arg0;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
arg0->node.prev = NULL;
|
|
||||||
arg0->node.next = NULL;
|
|
||||||
D_802758C0.unk8 = arg0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(arg0->unk3F & 0x4){
|
|
||||||
D_802758D4--;
|
|
||||||
}
|
|
||||||
|
|
||||||
arg0->unk40 = 0;
|
|
||||||
if(arg0->unk30 != NULL){
|
|
||||||
if(*arg0->unk30 == arg0){
|
|
||||||
*arg0->unk30 = NULL;
|
|
||||||
}
|
|
||||||
arg0->unk30 = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244594(N_AL_Struct81s *arg0, u8 arg1){
|
|
||||||
if(arg0 != NULL)
|
|
||||||
arg0->unk36 = arg1;
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 func_802445AC(N_AL_Struct81s *arg0){
|
|
||||||
if(arg0 != NULL)
|
|
||||||
return arg0->unk40;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool func_802445C4(ALBank *bank, s16 arg1){
|
|
||||||
ALSound *snd = bank->instArray[0]->soundArray[arg1-1];
|
|
||||||
if (snd->envelope->decayTime == -1)
|
|
||||||
return TRUE;
|
|
||||||
else
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *func_80244608(ALBank *bank, s16 arg1, struct46s *arg2) {
|
|
||||||
ALKeyMap *temp_v0_2;
|
|
||||||
ALSound *temp_s2;
|
|
||||||
N_AL_Struct81s *temp_v0;
|
|
||||||
s32 var_s3;
|
|
||||||
s16 sp6E;
|
|
||||||
s32 sp68;
|
|
||||||
s32 var_s4;
|
|
||||||
N_AL_Struct81s *var_fp;
|
|
||||||
ALEvent sp50;
|
|
||||||
ALEvent sp40;
|
|
||||||
|
|
||||||
var_fp = NULL;
|
|
||||||
sp6E = 0;
|
|
||||||
var_s3 = 0;
|
|
||||||
if (arg1 == 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
do{
|
|
||||||
temp_s2 = bank->instArray[0]->soundArray[arg1-1];
|
|
||||||
temp_v0 = func_8024431C(bank, temp_s2);
|
|
||||||
if (temp_v0 != NULL) {
|
|
||||||
temp_v0->unk4C = (s32) (arg1 - 1);
|
|
||||||
D_802758CC->target = temp_v0;
|
|
||||||
sp50.type = AL_SEQ_MIDI_EVT;
|
|
||||||
((s32 *)&sp50.msg)[0] = temp_v0;
|
|
||||||
var_s4 = temp_s2->keyMap->velocityMax * 0x8235;
|
|
||||||
if (temp_v0->unk3F & 0x10) {
|
|
||||||
temp_v0->unk3F &= ~(0x10);
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, (ALEvent *) &sp50, var_s3 + 1);
|
|
||||||
sp68 = var_s4 + 1;
|
|
||||||
sp6E = arg1;
|
|
||||||
} else {
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, (ALEvent *) &sp50, var_s4 + 1);
|
|
||||||
}
|
|
||||||
var_fp = temp_v0;
|
|
||||||
}
|
|
||||||
temp_v0_2 = temp_s2->keyMap;
|
|
||||||
var_s3 += var_s4;
|
|
||||||
arg1 = temp_v0_2->velocityMin + ((temp_v0_2->keyMin & 0xC0) * 4);
|
|
||||||
} while (arg1 != 0 && temp_v0 != NULL);
|
|
||||||
|
|
||||||
if (var_fp != NULL) {
|
|
||||||
var_fp->unk3F |= 1;
|
|
||||||
var_fp->unk30 = arg2;
|
|
||||||
if (sp6E != 0) {
|
|
||||||
var_fp->unk3F |= 0x10;
|
|
||||||
sp40.type = 0x200;
|
|
||||||
((s32 *)&sp40.msg)[0] = var_fp;
|
|
||||||
((s32 *)&sp40.msg)[1] = sp6E;
|
|
||||||
((s32 *)&sp40.msg)[2] = bank;
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &sp40, sp68);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (arg2 != NULL) {
|
|
||||||
arg2->unk0 = (s32) var_fp;
|
|
||||||
}
|
|
||||||
return var_fp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244814(N_AL_Struct81s *arg0){
|
|
||||||
ALEvent evt;
|
|
||||||
|
|
||||||
evt.type = 0x400;
|
|
||||||
((s32 *)&evt.msg)[0] = arg0;
|
|
||||||
if(arg0 != NULL){
|
|
||||||
arg0->unk3F &= ~(0x10);
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244860(u8 arg0) {
|
|
||||||
OSIntMask mask;
|
|
||||||
ALEvent evt;
|
|
||||||
N_AL_Struct81s *var_s0;
|
|
||||||
|
|
||||||
mask = osSetIntMask(1U);
|
|
||||||
for(var_s0 = D_802758C0.unk0; var_s0 != NULL; var_s0 = (N_AL_Struct81s *)var_s0->node.next){
|
|
||||||
evt.type = 0x400;
|
|
||||||
((s32 *)&evt.msg)[0] = (s32)var_s0;
|
|
||||||
if ((var_s0->unk3F & arg0) == arg0) {
|
|
||||||
var_s0->unk3F &= ~(0x10);
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
osSetIntMask(mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244918(void){
|
|
||||||
func_80244860(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244938(void){
|
|
||||||
func_80244860(0x11);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244958(void){
|
|
||||||
func_80244860(3);
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244978(s32 arg0, s16 type, s32 arg2){
|
|
||||||
ALEvent sp18;
|
|
||||||
if(arg0){
|
|
||||||
sp18.type = type;
|
|
||||||
((s32 *)&sp18.msg)[0] = arg0;
|
|
||||||
((s32 *)&sp18.msg)[1] = arg2;
|
|
||||||
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &sp18, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 func_802449C4(u8 arg0){
|
|
||||||
return D_8027EF14[arg0];
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_802449E4(u8 arg0, u16 arg1) {
|
|
||||||
N_AL_Struct81s *var_s0;
|
|
||||||
s32 pad30;
|
|
||||||
ALEvent evt;
|
|
||||||
|
|
||||||
var_s0 = D_802758C0.unk0;
|
|
||||||
D_8027EF14[arg0] = arg1;
|
|
||||||
while(var_s0 != NULL){
|
|
||||||
if ((var_s0->unk8->keyMap->keyMin & 0x3F) == arg0) {
|
|
||||||
evt.type = 0x800;
|
|
||||||
((s32 *)&evt.msg)[0] = var_s0;
|
|
||||||
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
|
||||||
}
|
|
||||||
var_s0 = (N_AL_Struct81s *)var_s0->node.next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void func_80244A98(s32 arg0){
|
|
||||||
D_802758D0 = arg0;
|
|
||||||
}
|
|
||||||
|
448
src/core1/code_5650.c
Normal file
448
src/core1/code_5650.c
Normal file
@@ -0,0 +1,448 @@
|
|||||||
|
#include <ultra64.h>
|
||||||
|
#include "functions.h"
|
||||||
|
#include "variables.h"
|
||||||
|
#include "n_libaudio.h"
|
||||||
|
|
||||||
|
void func_802444C0(N_AL_Struct81s *arg0);
|
||||||
|
void func_80244050(ALEventQueue *arg0, N_AL_Struct81s *arg1, u16 arg2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void func_8024324C(N_ALSndPlayer *arg0);
|
||||||
|
|
||||||
|
// extern ALEventUnknown;
|
||||||
|
/* .bss */
|
||||||
|
N_ALSndPlayer D_8027EEC0;
|
||||||
|
u16 *D_8027EF14;
|
||||||
|
extern struct {
|
||||||
|
u8 pad0[4];
|
||||||
|
s32 volume[3];
|
||||||
|
}D_8027EF18;
|
||||||
|
|
||||||
|
/* .data */
|
||||||
|
extern struct{
|
||||||
|
N_AL_Struct81s *unk0;
|
||||||
|
N_AL_Struct81s *unk4;
|
||||||
|
N_AL_Struct81s *unk8;
|
||||||
|
}D_802758C0 = {NULL, NULL, NULL};
|
||||||
|
extern N_ALSndPlayer *D_802758CC = &D_8027EEC0;
|
||||||
|
extern s32 D_802758D0 = 1;
|
||||||
|
extern s16 D_802758D4 = 0;
|
||||||
|
|
||||||
|
/* .code */
|
||||||
|
void func_80243070(Struct87s *arg0) {
|
||||||
|
N_AL_Struct81s *temp_a0;
|
||||||
|
N_AL_Struct81s *var_v0;
|
||||||
|
ALEvent sp40;
|
||||||
|
u32 var_s0;
|
||||||
|
|
||||||
|
D_802758CC->maxSounds = (s32) arg0->unk8;
|
||||||
|
D_802758CC->target = NULL;
|
||||||
|
D_802758CC->frameTime = 33000;
|
||||||
|
D_802758CC->sndState = alHeapDBAlloc(NULL, 0, arg0->unkC, 1, arg0->unk0 * sizeof(N_AL_Struct81s));
|
||||||
|
alEvtqNew(&D_802758CC->evtq, alHeapDBAlloc(NULL, 0, arg0->unkC, 1, arg0->unk4 * 0x1C), arg0->unk4);
|
||||||
|
D_802758C0.unk8 = D_802758CC->sndState;
|
||||||
|
for(var_s0 = 1; var_s0 < arg0->unk0; var_s0++){
|
||||||
|
var_v0 = (N_AL_Struct81s *)D_802758CC->sndState;
|
||||||
|
temp_a0 = var_s0 + var_v0;
|
||||||
|
alLink((ALLink *)temp_a0, (ALLink*)(temp_a0 - 1));
|
||||||
|
}
|
||||||
|
D_8027EF14 = alHeapDBAlloc(NULL, 0, arg0->unkC, 2, (s32) arg0->unk10);
|
||||||
|
for(var_s0 = 0; var_s0 < arg0->unk10; var_s0++){
|
||||||
|
D_8027EF14[var_s0] = 0x7FFF;
|
||||||
|
}
|
||||||
|
D_802758CC->node.next = NULL;
|
||||||
|
D_802758CC->node.handler = (ALVoiceHandler)func_8024324C;
|
||||||
|
D_802758CC->node.clientData = D_802758CC;
|
||||||
|
n_alSynAddSndPlayer(D_802758CC);
|
||||||
|
sp40.type = 0x20;
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &sp40, D_802758CC->frameTime);
|
||||||
|
D_802758CC->nextDelta = alEvtqNextEvent(&D_802758CC->evtq, &D_802758CC->nextEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef NONMATCHING
|
||||||
|
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_5650/func_8024324C.s")
|
||||||
|
#else
|
||||||
|
void func_8024324C(N_ALSndPlayer *arg0) {
|
||||||
|
N_ALEvent sp3C;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (arg0->nextEvent.type == 0x20) {
|
||||||
|
sp3C.type = 0x20;
|
||||||
|
alEvtqPostEvent(&arg0->evtq, (ALEvent *) &sp3C, arg0->frameTime);
|
||||||
|
func_80244190(arg0);
|
||||||
|
} else {
|
||||||
|
func_802432F8(arg0, &arg0->nextEvent);
|
||||||
|
}
|
||||||
|
arg0->nextDelta = alEvtqNextEvent(&arg0->evtq, &arg0->nextEvent);
|
||||||
|
} while (arg0->nextDelta == 0);
|
||||||
|
arg0->curTime += arg0->nextDelta;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_5650/func_802432F8.s")
|
||||||
|
|
||||||
|
void func_80243F84(N_AL_Struct81s *arg0) {
|
||||||
|
if (arg0->unk3F & 4) {
|
||||||
|
n_alSynStopVoice(&arg0->voice);
|
||||||
|
n_alSynFreeVoice(&arg0->voice);
|
||||||
|
}
|
||||||
|
func_802444C0(arg0);
|
||||||
|
func_80244050(&D_802758CC->evtq, arg0, 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80243FE4(N_AL_Struct81s *arg0) {
|
||||||
|
ALEvent evt;
|
||||||
|
f32 sp1C;
|
||||||
|
|
||||||
|
sp1C = alCents2Ratio(arg0->unk8->keyMap->detune)* arg0->unk2C;
|
||||||
|
evt.type = 0x10;
|
||||||
|
evt.msg.unk3A70.unk0 = arg0;
|
||||||
|
evt.msg.unk3A70.unk4 = reinterpret_cast(s32, sp1C);
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &evt, 33333);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244050(ALEventQueue *arg0, struct struct_81_s *arg1, u16 arg2) {
|
||||||
|
s32 pad[5];
|
||||||
|
u32 mask;
|
||||||
|
ALEventListItem *next_event_list;
|
||||||
|
ALEventListItem *event_list;
|
||||||
|
|
||||||
|
mask = osSetIntMask(OS_IM_NONE);
|
||||||
|
for(event_list = (ALEventListItem *)arg0->allocList.next; event_list != NULL; event_list = next_event_list) {
|
||||||
|
next_event_list = (ALEventListItem *)event_list->node.next;
|
||||||
|
if ((arg1 == event_list->evt.msg.unk3A70.unk0) && (reinterpret_cast(u16, event_list->evt.type) & arg2)) {
|
||||||
|
if (next_event_list != NULL) {
|
||||||
|
next_event_list->delta += event_list->delta;
|
||||||
|
}
|
||||||
|
alUnlink((ALLink *)event_list);
|
||||||
|
alLink((ALLink *)event_list, (ALLink *)arg0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
osSetIntMask(mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 func_80244110(u16 *arg0, u16 *arg1) {
|
||||||
|
N_AL_Struct81s *var_v0;
|
||||||
|
N_AL_Struct81s *var_v1_2;
|
||||||
|
N_AL_Struct81s *var_a2;
|
||||||
|
u16 var_a0;
|
||||||
|
u16 var_a3;
|
||||||
|
u16 var_v1;
|
||||||
|
|
||||||
|
var_v0 = D_802758C0.unk0;
|
||||||
|
var_v1_2 = D_802758C0.unk8;
|
||||||
|
var_a2 = D_802758C0.unk4;
|
||||||
|
|
||||||
|
for(var_a3 = 0; var_v0 != NULL; var_a3++){
|
||||||
|
var_v0 = (N_AL_Struct81s *) var_v0->node.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for(var_a0 = 0; var_v1_2 != NULL; var_a0++) {
|
||||||
|
var_v1_2 = (N_AL_Struct81s *) var_v1_2->node.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var_v1 = 0; var_a2 != NULL; var_v1++) {
|
||||||
|
var_a2 = (N_AL_Struct81s *) var_a2->node.prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
*arg0 = var_a0;
|
||||||
|
*arg1 = var_a3;
|
||||||
|
return var_v1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NONMATCHING
|
||||||
|
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_5650/func_80244190.s")
|
||||||
|
#else
|
||||||
|
void func_80244190(N_AL_Struct81s *arg0) {
|
||||||
|
ALMicroTime *temp_a1;
|
||||||
|
s32 prev_volume;
|
||||||
|
s32 temp_t1;
|
||||||
|
s32 temp_t5;
|
||||||
|
s32 var_t0;
|
||||||
|
ALMicroTime var_t1;
|
||||||
|
u8 temp_t6;
|
||||||
|
u8 var_a2;
|
||||||
|
ALEnvelope *envelope;
|
||||||
|
N_AL_Struct81s *var_v0;
|
||||||
|
N_AL_Struct81s *var_v1;
|
||||||
|
|
||||||
|
for(var_v0 = D_802758C0.unk0; var_v0 != NULL; var_v0 = (N_AL_Struct81s *)var_v0->node.next){
|
||||||
|
var_v1 = var_v0;
|
||||||
|
envelope = var_v0->unk8->envelope;
|
||||||
|
temp_a1 = &envelope->attackTime;
|
||||||
|
D_8027EF18.volume[AL_PHASE_ATTACK] = (s32) envelope->attackVolume;
|
||||||
|
D_8027EF18.volume[AL_PHASE_DECAY] = (s32) envelope->decayVolume;
|
||||||
|
while( var_v0->envPhase < AL_PHASE_RELEASE
|
||||||
|
&& var_v0->unk48 >= temp_a1[var_v0->envPhase]
|
||||||
|
&& temp_a1[var_v0->envPhase] != -1
|
||||||
|
){
|
||||||
|
var_v0->unk48 -= temp_a1[var_v0->envPhase];
|
||||||
|
var_v0->envPhase++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (var_v0->envPhase < AL_PHASE_RELEASE) {
|
||||||
|
if (temp_a1[var_v1->envPhase] != -1) {
|
||||||
|
var_v0->unk44 = D_8027EF18.volume[var_v0->envPhase - 1] + ((s32) ((D_8027EF18.volume[var_v0->envPhase] - D_8027EF18.volume[var_v0->envPhase - 1]) * var_v0->unk48) / temp_a1[var_v0->envPhase]);
|
||||||
|
} else {
|
||||||
|
var_v0->unk44 = D_8027EF18.volume[var_v0->envPhase - 1]; //
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_v0->unk48 += arg0->unk48;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NONMATCHING
|
||||||
|
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_5650/func_8024431C.s")
|
||||||
|
#else
|
||||||
|
N_AL_Struct81s *func_8024431C(ALBank *bank, ALSound *sound) {
|
||||||
|
s32 pad;
|
||||||
|
ALKeyMap *sp30;
|
||||||
|
N_AL_Struct81s *temp_s0;
|
||||||
|
OSIntMask mask;
|
||||||
|
s32 sp24;
|
||||||
|
|
||||||
|
temp_s0 = D_802758C0.unk8;
|
||||||
|
sp30 = sound->keyMap;
|
||||||
|
if (temp_s0 != NULL) {
|
||||||
|
mask = osSetIntMask(OS_IM_NONE);
|
||||||
|
D_802758C0.unk8 = (N_AL_Struct81s *) temp_s0->unk0.next;
|
||||||
|
alUnlink((ALLink *)temp_s0);
|
||||||
|
if (D_802758C0.unk0 != NULL) {
|
||||||
|
temp_s0->unk0.next = D_802758C0.unk0;
|
||||||
|
temp_s0->unk0.prev = NULL;
|
||||||
|
D_802758C0.unk0->unk0.prev = temp_s0;
|
||||||
|
D_802758C0.unk0 = temp_s0;
|
||||||
|
} else {
|
||||||
|
temp_s0->unk0.prev = NULL;
|
||||||
|
temp_s0->unk0.next = NULL;
|
||||||
|
D_802758C0.unk0 = temp_s0;
|
||||||
|
D_802758C0.unk4 = temp_s0;
|
||||||
|
}
|
||||||
|
osSetIntMask(mask);
|
||||||
|
sp24 = ((sound->envelope->decayTime + 1) == 0) + 0x40;
|
||||||
|
temp_s0->unk36 = sp24;
|
||||||
|
temp_s0->unk40 = 5;
|
||||||
|
temp_s0->unk38 = 2;
|
||||||
|
temp_s0->unk8 = sound;
|
||||||
|
temp_s0->unk2C = 1.0f;
|
||||||
|
temp_s0->unk3F = sp30->keyMax & 0xF0;
|
||||||
|
temp_s0->unk30 = 0;
|
||||||
|
temp_s0->envPhase = AL_PHASE_ATTACK;
|
||||||
|
temp_s0->unk44 = 0.0f;
|
||||||
|
temp_s0->unk48 = 0;
|
||||||
|
if (temp_s0->unk3F & 0x20) {
|
||||||
|
temp_s0->unk28 = alCents2Ratio((sp30->keyBase * 0x64) - 0x1770);
|
||||||
|
} else {
|
||||||
|
temp_s0->unk28 = alCents2Ratio(((sp30->keyBase * 0x64) + sp30->detune) - 0x1770);
|
||||||
|
}
|
||||||
|
if (sp24 != 0x40) {
|
||||||
|
temp_s0->unk3F |= 2;
|
||||||
|
}
|
||||||
|
temp_s0->unk3E = 0;
|
||||||
|
temp_s0->unk3D = 0x40;
|
||||||
|
temp_s0->unk34 = 0x7FFF;
|
||||||
|
}
|
||||||
|
return temp_s0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void func_802444C0(N_AL_Struct81s *arg0){
|
||||||
|
N_AL_Struct81s *var_v0;
|
||||||
|
|
||||||
|
sizeof(ALVoice);
|
||||||
|
|
||||||
|
var_v0 = D_802758C0.unk0;
|
||||||
|
if(arg0 == D_802758C0.unk0){
|
||||||
|
D_802758C0.unk0 = (N_AL_Struct81s *)arg0->node.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(arg0 == D_802758C0.unk4){
|
||||||
|
D_802758C0.unk4 = (N_AL_Struct81s *)arg0->node.prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
alUnlink((ALLink *)arg0);
|
||||||
|
|
||||||
|
if(D_802758C0.unk8 != NULL){
|
||||||
|
arg0->node.next = (ALLink *)D_802758C0.unk8;
|
||||||
|
arg0->node.prev = NULL;
|
||||||
|
D_802758C0.unk8->node.prev = (ALLink *)arg0;
|
||||||
|
D_802758C0.unk8 = arg0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
arg0->node.prev = NULL;
|
||||||
|
arg0->node.next = NULL;
|
||||||
|
D_802758C0.unk8 = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(arg0->unk3F & 0x4){
|
||||||
|
D_802758D4--;
|
||||||
|
}
|
||||||
|
|
||||||
|
arg0->unk40 = 0;
|
||||||
|
if(arg0->unk30 != NULL){
|
||||||
|
if(*arg0->unk30 == arg0){
|
||||||
|
*arg0->unk30 = NULL;
|
||||||
|
}
|
||||||
|
arg0->unk30 = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244594(N_AL_Struct81s *arg0, u8 arg1){
|
||||||
|
if(arg0 != NULL)
|
||||||
|
arg0->unk36 = arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 func_802445AC(N_AL_Struct81s *arg0){
|
||||||
|
if(arg0 != NULL)
|
||||||
|
return arg0->unk40;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool func_802445C4(ALBank *bank, s16 arg1){
|
||||||
|
ALSound *snd = bank->instArray[0]->soundArray[arg1-1];
|
||||||
|
if (snd->envelope->decayTime == -1)
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *func_80244608(ALBank *bank, s16 arg1, struct46s *arg2) {
|
||||||
|
ALKeyMap *temp_v0_2;
|
||||||
|
ALSound *temp_s2;
|
||||||
|
N_AL_Struct81s *temp_v0;
|
||||||
|
s32 var_s3;
|
||||||
|
s16 sp6E;
|
||||||
|
s32 sp68;
|
||||||
|
s32 var_s4;
|
||||||
|
N_AL_Struct81s *var_fp;
|
||||||
|
ALEvent sp50;
|
||||||
|
ALEvent sp40;
|
||||||
|
|
||||||
|
var_fp = NULL;
|
||||||
|
sp6E = 0;
|
||||||
|
var_s3 = 0;
|
||||||
|
if (arg1 == 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
do{
|
||||||
|
temp_s2 = bank->instArray[0]->soundArray[arg1-1];
|
||||||
|
temp_v0 = func_8024431C(bank, temp_s2);
|
||||||
|
if (temp_v0 != NULL) {
|
||||||
|
temp_v0->unk4C = (s32) (arg1 - 1);
|
||||||
|
D_802758CC->target = temp_v0;
|
||||||
|
sp50.type = AL_SEQ_MIDI_EVT;
|
||||||
|
((s32 *)&sp50.msg)[0] = temp_v0;
|
||||||
|
var_s4 = temp_s2->keyMap->velocityMax * 0x8235;
|
||||||
|
if (temp_v0->unk3F & 0x10) {
|
||||||
|
temp_v0->unk3F &= ~(0x10);
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, (ALEvent *) &sp50, var_s3 + 1);
|
||||||
|
sp68 = var_s4 + 1;
|
||||||
|
sp6E = arg1;
|
||||||
|
} else {
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, (ALEvent *) &sp50, var_s4 + 1);
|
||||||
|
}
|
||||||
|
var_fp = temp_v0;
|
||||||
|
}
|
||||||
|
temp_v0_2 = temp_s2->keyMap;
|
||||||
|
var_s3 += var_s4;
|
||||||
|
arg1 = temp_v0_2->velocityMin + ((temp_v0_2->keyMin & 0xC0) * 4);
|
||||||
|
} while (arg1 != 0 && temp_v0 != NULL);
|
||||||
|
|
||||||
|
if (var_fp != NULL) {
|
||||||
|
var_fp->unk3F |= 1;
|
||||||
|
var_fp->unk30 = arg2;
|
||||||
|
if (sp6E != 0) {
|
||||||
|
var_fp->unk3F |= 0x10;
|
||||||
|
sp40.type = 0x200;
|
||||||
|
((s32 *)&sp40.msg)[0] = var_fp;
|
||||||
|
((s32 *)&sp40.msg)[1] = sp6E;
|
||||||
|
((s32 *)&sp40.msg)[2] = bank;
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &sp40, sp68);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (arg2 != NULL) {
|
||||||
|
arg2->unk0 = (s32) var_fp;
|
||||||
|
}
|
||||||
|
return var_fp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244814(N_AL_Struct81s *arg0){
|
||||||
|
ALEvent evt;
|
||||||
|
|
||||||
|
evt.type = 0x400;
|
||||||
|
((s32 *)&evt.msg)[0] = arg0;
|
||||||
|
if(arg0 != NULL){
|
||||||
|
arg0->unk3F &= ~(0x10);
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244860(u8 arg0) {
|
||||||
|
OSIntMask mask;
|
||||||
|
ALEvent evt;
|
||||||
|
N_AL_Struct81s *var_s0;
|
||||||
|
|
||||||
|
mask = osSetIntMask(1U);
|
||||||
|
for(var_s0 = D_802758C0.unk0; var_s0 != NULL; var_s0 = (N_AL_Struct81s *)var_s0->node.next){
|
||||||
|
evt.type = 0x400;
|
||||||
|
((s32 *)&evt.msg)[0] = (s32)var_s0;
|
||||||
|
if ((var_s0->unk3F & arg0) == arg0) {
|
||||||
|
var_s0->unk3F &= ~(0x10);
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
osSetIntMask(mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244918(void){
|
||||||
|
func_80244860(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244938(void){
|
||||||
|
func_80244860(0x11);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244958(void){
|
||||||
|
func_80244860(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244978(s32 arg0, s16 type, s32 arg2){
|
||||||
|
ALEvent sp18;
|
||||||
|
if(arg0){
|
||||||
|
sp18.type = type;
|
||||||
|
((s32 *)&sp18.msg)[0] = arg0;
|
||||||
|
((s32 *)&sp18.msg)[1] = arg2;
|
||||||
|
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &sp18, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 func_802449C4(u8 arg0){
|
||||||
|
return D_8027EF14[arg0];
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_802449E4(u8 arg0, u16 arg1) {
|
||||||
|
N_AL_Struct81s *var_s0;
|
||||||
|
s32 pad30;
|
||||||
|
ALEvent evt;
|
||||||
|
|
||||||
|
var_s0 = D_802758C0.unk0;
|
||||||
|
D_8027EF14[arg0] = arg1;
|
||||||
|
while(var_s0 != NULL){
|
||||||
|
if ((var_s0->unk8->keyMap->keyMin & 0x3F) == arg0) {
|
||||||
|
evt.type = 0x800;
|
||||||
|
((s32 *)&evt.msg)[0] = var_s0;
|
||||||
|
alEvtqPostEvent(&D_802758CC->evtq, &evt, 0);
|
||||||
|
}
|
||||||
|
var_s0 = (N_AL_Struct81s *)var_s0->node.next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80244A98(s32 arg0){
|
||||||
|
D_802758D0 = arg0;
|
||||||
|
}
|
@@ -38,6 +38,7 @@ segments:
|
|||||||
- [0x2FA0, c, code_2FA0] #DONE
|
- [0x2FA0, c, code_2FA0] #DONE
|
||||||
- [0x31C0, c, code_31C0]
|
- [0x31C0, c, code_31C0]
|
||||||
- [0x3A70, c, code_3A70]
|
- [0x3A70, c, code_3A70]
|
||||||
|
- [0x5650, c, code_5650]
|
||||||
- [0x7090, c, code_7090] #DONE
|
- [0x7090, c, code_7090] #DONE
|
||||||
- [0x72B0, c, code_72B0] #DONE
|
- [0x72B0, c, code_72B0] #DONE
|
||||||
- [0x7F60, c, code_7F60]
|
- [0x7F60, c, code_7F60]
|
||||||
@@ -247,7 +248,9 @@ segments:
|
|||||||
- [0x37E30, bin, data_37E30] #data Section
|
- [0x37E30, bin, data_37E30] #data Section
|
||||||
- [0x37E40, .data, code_2FA0]
|
- [0x37E40, .data, code_2FA0]
|
||||||
- [0x37E50, .data, code_31C0]
|
- [0x37E50, .data, code_31C0]
|
||||||
- [0x37E60, bin, data_37E60]
|
- [0x37E60, .data, code_3A70]
|
||||||
|
- [0x37EA0, bin, data_37EA0] # .data, code_5650]
|
||||||
|
- [0x37EC0, bin, data_37EC0]
|
||||||
- [0x37EF0, .data, code_8C50]
|
- [0x37EF0, .data, code_8C50]
|
||||||
- [0x38030, bin, data_38030]
|
- [0x38030, bin, data_38030]
|
||||||
- [0x381F0, bin, data_381F0] # .data, done/code_CE60]
|
- [0x381F0, bin, data_381F0] # .data, done/code_CE60]
|
||||||
@@ -279,6 +282,7 @@ segments:
|
|||||||
- [0x39C00, bin, data_39C00] # .rodata, code_1D00]
|
- [0x39C00, bin, data_39C00] # .rodata, code_1D00]
|
||||||
- [0x39C20, .rodata, code_31C0]
|
- [0x39C20, .rodata, code_31C0]
|
||||||
- [0x39C30, bin, data_39C30] # .rodata, code_3A70]
|
- [0x39C30, bin, data_39C30] # .rodata, code_3A70]
|
||||||
|
- [0x39C40, .rodata, code_5650]
|
||||||
- [0x39CA0, .rodata, code_72B0]
|
- [0x39CA0, .rodata, code_72B0]
|
||||||
- [0x39CC0, bin, data_39CC0]
|
- [0x39CC0, bin, data_39CC0]
|
||||||
- [0x39CD0, bin, data_39CD0] # .rodata, code_7F60]
|
- [0x39CD0, bin, data_39CD0] # .rodata, code_7F60]
|
||||||
@@ -325,7 +329,7 @@ segments:
|
|||||||
- [0x3c710, .bss, code_2BD0]
|
- [0x3c710, .bss, code_2BD0]
|
||||||
- [0x3c710, .bss, code_2DA0]
|
- [0x3c710, .bss, code_2DA0]
|
||||||
- [0x3c710, .bss, code_31C0]
|
- [0x3c710, .bss, code_31C0]
|
||||||
- [0x3c710, .bss, code_3A70]
|
- [0x3c710, .bss, code_5650]
|
||||||
- [0x3c710, .bss, code_7090]
|
- [0x3c710, .bss, code_7090]
|
||||||
- [0x3c710, .bss, code_72B0]
|
- [0x3c710, .bss, code_72B0]
|
||||||
- [0x3c710, .bss, code_8C50]
|
- [0x3c710, .bss, code_8C50]
|
||||||
|
Reference in New Issue
Block a user