Split unknown_064830.c into unknown_065550.c and moved the rest of the rodata

This commit is contained in:
David Benepe
2021-06-04 19:35:42 -05:00
parent bc8d12f537
commit 4ba114e8bd
4 changed files with 225 additions and 207 deletions
+17 -2
View File
@@ -1,3 +1,12 @@
.late_rodata
glabel jpt_800E6EA0
.word L80064AD8, L80064AE4, L80064AFC, L80064B08, L80064AF0, L80064B14
glabel D_800E6EB8
.float 8.320827
glabel D_800E6EBC
.float 0.04680453
.text
glabel alFxNew
/* 065608 80064A08 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 06560C 80064A0C AFB00038 */ sw $s0, 0x38($sp)
@@ -45,27 +54,33 @@ glabel alFxNew
/* 0656B4 80064AB4 1020001C */ beqz $at, .L80064B28
/* 0656B8 80064AB8 2673D028 */ addiu $s3, %lo(D_800DD028) # addiu $s3, $s3, -0x2fd8
/* 0656BC 80064ABC 00094880 */ sll $t1, $t1, 2
/* 0656C0 80064AC0 3C01800E */ lui $at, %hi(D_800E6EA0) # $at, 0x800e
/* 0656C0 80064AC0 3C01800E */ lui $at, %hi(jpt_800E6EA0) # $at, 0x800e
/* 0656C4 80064AC4 00290821 */ addu $at, $at, $t1
/* 0656C8 80064AC8 8C296EA0 */ lw $t1, %lo(D_800E6EA0)($at)
/* 0656C8 80064AC8 8C296EA0 */ lw $t1, %lo(jpt_800E6EA0)($at)
/* 0656CC 80064ACC 00000000 */ nop
/* 0656D0 80064AD0 01200008 */ jr $t1
/* 0656D4 80064AD4 00000000 */ nop
glabel L80064AD8
/* 0656D8 80064AD8 3C13800E */ lui $s3, %hi(D_800DCEC0) # $s3, 0x800e
/* 0656DC 80064ADC 10000012 */ b .L80064B28
/* 0656E0 80064AE0 2673CEC0 */ addiu $s3, %lo(D_800DCEC0) # addiu $s3, $s3, -0x3140
glabel L80064AE4
/* 0656E4 80064AE4 3C13800E */ lui $s3, %hi(D_800DCF28) # $s3, 0x800e
/* 0656E8 80064AE8 1000000F */ b .L80064B28
/* 0656EC 80064AEC 2673CF28 */ addiu $s3, %lo(D_800DCF28) # addiu $s3, $s3, -0x30d8
glabel L80064AF0
/* 0656F0 80064AF0 3C13800E */ lui $s3, %hi(D_800DCFB0) # $s3, 0x800e
/* 0656F4 80064AF4 1000000C */ b .L80064B28
/* 0656F8 80064AF8 2673CFB0 */ addiu $s3, %lo(D_800DCFB0) # addiu $s3, $s3, -0x3050
glabel L80064AFC
/* 0656FC 80064AFC 3C13800E */ lui $s3, %hi(D_800DCFD8) # $s3, 0x800e
/* 065700 80064B00 10000009 */ b .L80064B28
/* 065704 80064B04 2673CFD8 */ addiu $s3, %lo(D_800DCFD8) # addiu $s3, $s3, -0x3028
glabel L80064B08
/* 065708 80064B08 3C13800E */ lui $s3, %hi(D_800DD000) # $s3, 0x800e
/* 06570C 80064B0C 10000006 */ b .L80064B28
/* 065710 80064B10 2673D000 */ addiu $s3, %lo(D_800DD000) # addiu $s3, $s3, -0x3000
glabel L80064B14
/* 065714 80064B14 00105080 */ sll $t2, $s0, 2
/* 065718 80064B18 004A5821 */ addu $t3, $v0, $t2
/* 06571C 80064B1C 8D730020 */ lw $s3, 0x20($t3)
@@ -1,3 +1,12 @@
.late_rodata
glabel jpt_800E6E70
.word L80063FE8, L8006401C, L8006407C, L80064050, L800640A8, L800640D4, L80064144, L800641C4
glabel D_800E6E90
.float 8.320827
glabel D_800E6E94
.float 0.04680453
.text
glabel alFxParamHdl
/* 064BAC 80063FAC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 064BB0 80063FB0 24A3FFFE */ addiu $v1, $a1, -2
@@ -8,12 +17,13 @@ glabel alFxParamHdl
/* 064BC4 80063FC4 10200093 */ beqz $at, .L80064214
/* 064BC8 80063FC8 00803825 */ move $a3, $a0
/* 064BCC 80063FCC 000E7080 */ sll $t6, $t6, 2
/* 064BD0 80063FD0 3C01800E */ lui $at, %hi(D_800E6E70) # $at, 0x800e
/* 064BD0 80063FD0 3C01800E */ lui $at, %hi(jpt_800E6E70) # $at, 0x800e
/* 064BD4 80063FD4 002E0821 */ addu $at, $at, $t6
/* 064BD8 80063FD8 8C2E6E70 */ lw $t6, %lo(D_800E6E70)($at)
/* 064BD8 80063FD8 8C2E6E70 */ lw $t6, %lo(jpt_800E6E70)($at)
/* 064BDC 80063FDC 00000000 */ nop
/* 064BE0 80063FE0 01C00008 */ jr $t6
/* 064BE4 80063FE4 00000000 */ nop
glabel L80063FE8
/* 064BE8 80063FE8 2401FFF8 */ li $at, -8
/* 064BEC 80063FEC 01017824 */ and $t7, $t0, $at
/* 064BF0 80063FF0 8CF80020 */ lw $t8, 0x20($a3)
@@ -28,6 +38,7 @@ glabel alFxParamHdl
/* 064C10 80064010 03095021 */ addu $t2, $t8, $t1
/* 064C14 80064014 1000007F */ b .L80064214
/* 064C18 80064018 AD4F0000 */ sw $t7, ($t2)
glabel L8006401C
/* 064C1C 8006401C 2401FFF8 */ li $at, -8
/* 064C20 80064020 01015824 */ and $t3, $t0, $at
/* 064C24 80064024 8CEC0020 */ lw $t4, 0x20($a3)
@@ -42,6 +53,7 @@ glabel alFxParamHdl
/* 064C44 80064044 018EC821 */ addu $t9, $t4, $t6
/* 064C48 80064048 10000072 */ b .L80064214
/* 064C4C 8006404C AF2B0004 */ sw $t3, 4($t9)
glabel L80064050
/* 064C50 80064050 8CF80020 */ lw $t8, 0x20($a3)
/* 064C54 80064054 04610003 */ bgez $v1, .L80064064
/* 064C58 80064058 000348C3 */ sra $t1, $v1, 3
@@ -54,6 +66,7 @@ glabel alFxParamHdl
/* 064C70 80064070 030F5021 */ addu $t2, $t8, $t7
/* 064C74 80064074 10000067 */ b .L80064214
/* 064C78 80064078 A5480008 */ sh $t0, 8($t2)
glabel L8006407C
/* 064C7C 8006407C 8CED0020 */ lw $t5, 0x20($a3)
/* 064C80 80064080 04610003 */ bgez $v1, .L80064090
/* 064C84 80064084 000360C3 */ sra $t4, $v1, 3
@@ -66,6 +79,7 @@ glabel alFxParamHdl
/* 064C9C 8006409C 01AE5821 */ addu $t3, $t5, $t6
/* 064CA0 800640A0 1000005C */ b .L80064214
/* 064CA4 800640A4 A568000A */ sh $t0, 0xa($t3)
glabel L800640A8
/* 064CA8 800640A8 8CF90020 */ lw $t9, 0x20($a3)
/* 064CAC 800640AC 04610003 */ bgez $v1, .L800640BC
/* 064CB0 800640B0 000348C3 */ sra $t1, $v1, 3
@@ -78,6 +92,7 @@ glabel alFxParamHdl
/* 064CC8 800640C8 03387821 */ addu $t7, $t9, $t8
/* 064CCC 800640CC 10000051 */ b .L80064214
/* 064CD0 800640D0 A5E8000C */ sh $t0, 0xc($t7)
glabel L800640D4
/* 064CD4 800640D4 44882000 */ mtc1 $t0, $f4
/* 064CD8 800640D8 3C01447A */ li $at, 0x447A0000 # 1000.000000
/* 064CDC 800640DC 468021A0 */ cvt.s.w $f6, $f4
@@ -107,6 +122,7 @@ glabel alFxParamHdl
/* 064D38 80064138 01AB4821 */ addu $t1, $t5, $t3
/* 064D3C 8006413C 10000035 */ b .L80064214
/* 064D40 80064140 E5280010 */ swc1 $f8, 0x10($t1)
glabel L80064144
/* 064D44 80064144 8CF90020 */ lw $t9, 0x20($a3)
/* 064D48 80064148 04610003 */ bgez $v1, .L80064158
/* 064D4C 8006414C 0003C0C3 */ sra $t8, $v1, 3
@@ -141,6 +157,7 @@ glabel alFxParamHdl
/* 064DB8 800641B8 462021A0 */ cvt.s.d $f6, $f4
/* 064DBC 800641BC 10000015 */ b .L80064214
/* 064DC0 800641C0 E446001C */ swc1 $f6, 0x1c($v0)
glabel L800641C4
/* 064DC4 800641C4 04610003 */ bgez $v1, .L800641D4
/* 064DC8 800641C8 000310C3 */ sra $v0, $v1, 3
/* 064DCC 800641CC 24610007 */ addiu $at, $v1, 7
-203
View File
@@ -13,119 +13,8 @@ s32 D_800DCEB4 = 0x10; // Currently unknown, might be a different type.
s32 D_800DCEB8 = 0x10; // Currently unknown, might be a different type.
s32 D_800DCEBC = 0x20; // Currently unknown, might be a different type.
// TODO: Figure out what this actually is.
s32 D_800DCEC0[26] = {
0x00000003, 0x00000FA0,
0x00000000, 0x00000870,
0x00002666, 0xFFFFD99A,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x000002F8, 0x000005F0,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000960,
0x00001388, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00005000
};
// TODO: Figure out what this actually is.
s32 D_800DCF28[34] = {
0x00000004, 0x00000FA0,
0x00000000, 0x00000A50,
0x00002666, 0xFFFFD99A,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000370, 0x00000870,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000A50, 0x00000E38,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000EB0,
0x00001F40, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00005000
};
// TODO: Figure out what this actually is.
s32 D_800DCFB0[10] = {
0x00000001, 0x00001F40,
0x00000000, 0x00001BF8,
0x00002EE0, 0x00000000,
0x00007FFF, 0x00000000,
0x00000000, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DCFD8[10] = {
0x00000001, 0x00000320,
0x00000000, 0x000000C8,
0x00004000, 0x00000000,
0x00007FFF, 0x00001DB0,
0x000002BC, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DD000[10] = {
0x00000001, 0x00000320,
0x00000000, 0x000000C8,
0x00000000, 0x00005FFF,
0x00007FFF, 0x0000017C,
0x000001F4, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DD028[10] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000
};
/*******************************/
/************ .rodata ************/
// Jump table in alFxParamHdl
const u32 D_800E6E70[] = {
0x80063FE8, 0x8006401C, 0x8006407C, 0x80064050,
0x800640A8, 0x800640D4, 0x80064144, 0x800641C4
};
const FloatLiteral D_800E6E90 = { 8.320827f };
const FloatLiteral D_800E6E94 = { 0.04680453f };
const DoubleLiteral D_800E6E98 = { 0.0f }; // Probably a file boundary.
// Jump table in alFxNew
const u32 D_800E6EA0[] = {
0x80064AD8, 0x80064AE4, 0x80064AFC, 0x80064B08,
0x80064AF0, 0x80064B14
};
const FloatLiteral D_800E6EB8 = { 8.320827f };
const FloatLiteral D_800E6EBC = { 0.04680453f };
/*********************************/
extern s32 alAuxBusPull;
extern s32 alAuxBusParam;
extern s32 alEnvMixerPull;
extern s32 alEnvmixerParam;
extern s32 alLoadParam;
extern s32 alLoadPull;
extern s32 alResampleParam;
extern s32 alResamplePull;
extern s32 alMainBusParam;
extern s32 alMainBusPull;
extern s32 alSaveParam;
extern s32 alSavePull;
GLOBAL_ASM("asm/non_matchings/unknown_064830/alFxPull.s")
s32 alFxParam(void* filter, s32 paramID, void* param) {
@@ -138,7 +27,6 @@ s32 alFxParam(void* filter, s32 paramID, void* param) {
GLOBAL_ASM("asm/non_matchings/unknown_064830/alFxParamHdl.s")
GLOBAL_ASM("asm/non_matchings/unknown_064830/_loadOutputBuffer.s")
/*
* This routine is for loading data from the delay line buff. If the
* address of curr_ptr < r->base, it will force it to be within r->base
@@ -245,94 +133,3 @@ Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p)
GLOBAL_ASM("asm/non_matchings/unknown_064830/_doModFunc.s")
GLOBAL_ASM("asm/non_matchings/unknown_064830/func_8006492C.s")
#define SCALE 16384
void init_lpfilter(ALLowPass *lp)
{
s32 i, temp;
s16 fc;
f64 ffc, fcoef;
temp = lp->fc * SCALE;
fc = temp >> 15;
lp->fgain = SCALE - fc;
lp->first = 1;
for (i=0; i<8; i++)
lp->fcvec.fccoef[i] = 0;
lp->fcvec.fccoef[i++] = fc;
fcoef = ffc = (f64)fc/SCALE;
for (; i<16; i++){
fcoef *= ffc;
lp->fcvec.fccoef[i] = (s16)(fcoef * SCALE);
}
}
GLOBAL_ASM("asm/non_matchings/unknown_064830/alFxNew.s")
void alEnvmixerNew(ALEnvMixer* e, s32 arg1) {
alFilterNew(e, &alEnvMixerPull, &alEnvmixerParam, 4);
e->state = alHeapDBAlloc(0, 0, arg1, 1, 0x50);
e->first = 1;
e->motion = AL_STOPPED;
e->volume = 1;
e->ltgt = 1;
e->rtgt = 1;
e->cvolL = 1;
e->cvolR = 1;
e->dryamt = 0;
e->wetamt = 0;
e->lratm = 1;
e->lratl = 0;
e->delta = 0;
e->segEnd = 0;
e->pan = 0;
e->ctrlList = 0;
e->ctrlTail = 0;
e->sources = 0;
}
void alLoadNew(ALLoadFilter* arg0, s32 (*arg1)(s32*), s32 arg2) {
alFilterNew(arg0, &alLoadPull, &alLoadParam, 0);
arg0->state = alHeapDBAlloc(0, 0, arg2, 1, 0x20);
arg0->lstate = alHeapDBAlloc(0, 0, arg2, 1, 0x20);
arg0->dma = arg1(&arg0->dmaState);
arg0->lastsam = 0;
arg0->first = 1;
arg0->memin = 0;
}
void alResampleNew(ALResampler* r, ALHeap* hp) {
alFilterNew(r, &alResamplePull, &alResampleParam, 1);
r->state = alHeapDBAlloc(0, 0, hp, 1, 0x20);
r->first = 1;
r->motion = AL_STOPPED;
r->upitch = 0;
r->ctrlList = 0;
r->ctrlTail = 0;
r->delta = 0.0f;
r->ratio = 1.0f;
}
void alAuxBusNew(ALAuxBus* m, void* sources, s32 maxSources) {
alFilterNew(m, &alAuxBusPull, &alAuxBusParam, 6);
m->sourceCount = 0;
m->maxSources = maxSources;
m->sources = sources;
}
void alMainBusNew(ALMainBus* m, void* sources, s32 maxSources) {
alFilterNew(m, &alMainBusPull, &alMainBusParam, 7);
m->sourceCount = 0;
m->maxSources = maxSources;
m->sources = sources;
}
void alSaveNew(ALSave* f) {
alFilterNew(f, &alSavePull, &alSaveParam, AL_SAVE);
f->dramout = 0;
f->first = 1;
}
+189
View File
@@ -0,0 +1,189 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x80064950 */
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
#include "audio_internal.h"
#define SCALE 16384
/************ .data ************/
// TODO: Figure out what this actually is.
s32 D_800DCEC0[26] = {
0x00000003, 0x00000FA0,
0x00000000, 0x00000870,
0x00002666, 0xFFFFD99A,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x000002F8, 0x000005F0,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000960,
0x00001388, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00005000
};
// TODO: Figure out what this actually is.
s32 D_800DCF28[34] = {
0x00000004, 0x00000FA0,
0x00000000, 0x00000A50,
0x00002666, 0xFFFFD99A,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000370, 0x00000870,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000A50, 0x00000E38,
0x00000CCC, 0xFFFFF334,
0x00003FFF, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000EB0,
0x00001F40, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00005000
};
// TODO: Figure out what this actually is.
s32 D_800DCFB0[10] = {
0x00000001, 0x00001F40,
0x00000000, 0x00001BF8,
0x00002EE0, 0x00000000,
0x00007FFF, 0x00000000,
0x00000000, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DCFD8[10] = {
0x00000001, 0x00000320,
0x00000000, 0x000000C8,
0x00004000, 0x00000000,
0x00007FFF, 0x00001DB0,
0x000002BC, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DD000[10] = {
0x00000001, 0x00000320,
0x00000000, 0x000000C8,
0x00000000, 0x00005FFF,
0x00007FFF, 0x0000017C,
0x000001F4, 0x00000000
};
// TODO: Figure out what this actually is.
s32 D_800DD028[10] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000
};
/*******************************/
extern s32 alAuxBusPull;
extern s32 alAuxBusParam;
extern s32 alEnvMixerPull;
extern s32 alEnvmixerParam;
extern s32 alLoadParam;
extern s32 alLoadPull;
extern s32 alResampleParam;
extern s32 alResamplePull;
extern s32 alMainBusParam;
extern s32 alMainBusPull;
extern s32 alSaveParam;
extern s32 alSavePull;
void init_lpfilter(ALLowPass *lp)
{
s32 i, temp;
s16 fc;
f64 ffc, fcoef;
temp = lp->fc * SCALE;
fc = temp >> 15;
lp->fgain = SCALE - fc;
lp->first = 1;
for (i=0; i<8; i++)
lp->fcvec.fccoef[i] = 0;
lp->fcvec.fccoef[i++] = fc;
fcoef = ffc = (f64)fc/SCALE;
for (; i<16; i++){
fcoef *= ffc;
lp->fcvec.fccoef[i] = (s16)(fcoef * SCALE);
}
}
GLOBAL_ASM("asm/non_matchings/unknown_064830/alFxNew.s")
void alEnvmixerNew(ALEnvMixer* e, s32 arg1) {
alFilterNew(e, &alEnvMixerPull, &alEnvmixerParam, 4);
e->state = alHeapDBAlloc(0, 0, arg1, 1, 0x50);
e->first = 1;
e->motion = AL_STOPPED;
e->volume = 1;
e->ltgt = 1;
e->rtgt = 1;
e->cvolL = 1;
e->cvolR = 1;
e->dryamt = 0;
e->wetamt = 0;
e->lratm = 1;
e->lratl = 0;
e->delta = 0;
e->segEnd = 0;
e->pan = 0;
e->ctrlList = 0;
e->ctrlTail = 0;
e->sources = 0;
}
void alLoadNew(ALLoadFilter* arg0, s32 (*arg1)(s32*), s32 arg2) {
alFilterNew(arg0, &alLoadPull, &alLoadParam, 0);
arg0->state = alHeapDBAlloc(0, 0, arg2, 1, 0x20);
arg0->lstate = alHeapDBAlloc(0, 0, arg2, 1, 0x20);
arg0->dma = arg1(&arg0->dmaState);
arg0->lastsam = 0;
arg0->first = 1;
arg0->memin = 0;
}
void alResampleNew(ALResampler* r, ALHeap* hp) {
alFilterNew(r, &alResamplePull, &alResampleParam, 1);
r->state = alHeapDBAlloc(0, 0, hp, 1, 0x20);
r->first = 1;
r->motion = AL_STOPPED;
r->upitch = 0;
r->ctrlList = 0;
r->ctrlTail = 0;
r->delta = 0.0f;
r->ratio = 1.0f;
}
void alAuxBusNew(ALAuxBus* m, void* sources, s32 maxSources) {
alFilterNew(m, &alAuxBusPull, &alAuxBusParam, 6);
m->sourceCount = 0;
m->maxSources = maxSources;
m->sources = sources;
}
void alMainBusNew(ALMainBus* m, void* sources, s32 maxSources) {
alFilterNew(m, &alMainBusPull, &alMainBusParam, 7);
m->sourceCount = 0;
m->maxSources = maxSources;
m->sources = sources;
}
void alSaveNew(ALSave* f) {
alFilterNew(f, &alSavePull, &alSaveParam, AL_SAVE);
f->dramout = 0;
f->first = 1;
}