Attempt to decompile amgrHandleFrameMsg
This commit is contained in:
parent
6f97111aae
commit
4a514d3b69
8
ld/pd.ld
8
ld/pd.ld
|
|
@ -118,6 +118,13 @@ SECTIONS
|
|||
|
||||
_antipiracyUncloakWriteAddress = 0x7002a324;
|
||||
|
||||
rspbootTextStart = 0x80059fe0;
|
||||
rspbootTextEnd = 0x8005a0b0;
|
||||
aspMainTextStart = 0x8005b4d0;
|
||||
aspMainTextEnd = 0x8005c4d0;
|
||||
aspMainDataStart = 0x8008a2d0;
|
||||
aspMainDataEnd = 0x8008aad0;
|
||||
|
||||
osTvType = 0x80000300;
|
||||
osRomType = 0x80000304;
|
||||
osRomBase = 0x80000308;
|
||||
|
|
@ -129,6 +136,7 @@ SECTIONS
|
|||
|
||||
var803f50b8 = 0x803f50b8;
|
||||
vara00002e8 = 0xa00002e8;
|
||||
vara4500004 = 0xa4500004;
|
||||
varbc000c02 = 0xbc000c02; /* for ntsc-beta */
|
||||
var800902e4 = 0x800902e4; /* for ntsc-beta */
|
||||
var800902e8 = 0x800902e8; /* for ntsc-beta */
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#include "stagesetup.h"
|
||||
#include "types.h"
|
||||
|
||||
// Assembly
|
||||
// rspbootTextStart
|
||||
u32 var80059fe0 = 0x09000419;
|
||||
u32 var80059fe4 = 0x20010fc0;
|
||||
u32 var80059fe8 = 0x8c220010;
|
||||
|
|
@ -66,6 +66,8 @@ u32 var8005a0a0 = 0x00000000;
|
|||
u32 var8005a0a4 = 0x09000402;
|
||||
u32 var8005a0a8 = 0x00000000;
|
||||
u32 var8005a0ac = 0x00000000;
|
||||
// rspbootTextEnd
|
||||
|
||||
u32 var8005a0b0 = 0x090005ee;
|
||||
u32 var8005a0b4 = 0x201d0110;
|
||||
u32 var8005a0b8 = 0x0d000447;
|
||||
|
|
@ -1354,6 +1356,8 @@ u32 var8005b4c0 = 0x2400beef;
|
|||
u32 var8005b4c4 = 0x00000000;
|
||||
u32 var8005b4c8 = 0x00000000;
|
||||
u32 var8005b4cc = 0x00000000;
|
||||
|
||||
// aspMainTextStart
|
||||
u32 var8005b4d0 = 0x40055800;
|
||||
u32 var8005b4d4 = 0x8c3c0030;
|
||||
u32 var8005b4d8 = 0x8c3b0034;
|
||||
|
|
@ -2378,6 +2382,8 @@ u32 var8005c4c0 = 0x21cd0220;
|
|||
u32 var8005c4c4 = 0x334c001e;
|
||||
u32 var8005c4c8 = 0x0d00045f;
|
||||
u32 var8005c4cc = 0x2063ffff;
|
||||
// aspMainTextEnd
|
||||
|
||||
u32 var8005c4d0 = 0x20030180;
|
||||
u32 var8005c4d4 = 0x2294fe80;
|
||||
u32 var8005c4d8 = 0x20120180;
|
||||
|
|
|
|||
|
|
@ -695,6 +695,8 @@ u32 var8008a2c0 = 0x00000000;
|
|||
u32 var8008a2c4 = 0x00000000;
|
||||
u32 var8008a2c8 = 0x00000000;
|
||||
u32 var8008a2cc = 0x00000000;
|
||||
|
||||
// aspMainDataStart
|
||||
u32 var8008a2d0 = 0x00000000;
|
||||
u32 var8008a2d4 = 0x0f7f1080;
|
||||
u32 var8008a2d8 = 0x00000f80;
|
||||
|
|
@ -1207,6 +1209,8 @@ u32 var8008aac0 = 0x0037ffdc;
|
|||
u32 var8008aac4 = 0x03000163;
|
||||
u32 var8008aac8 = 0x10fd18d1;
|
||||
u32 var8008aacc = 0x735c99ee;
|
||||
// aspMainDataEnd
|
||||
|
||||
u32 var8008aad0 = 0xf613f046;
|
||||
u32 var8008aad4 = 0x0108fdb0;
|
||||
u32 var8008aad8 = 0x0053ffdb;
|
||||
|
|
|
|||
|
|
@ -4045,8 +4045,7 @@ u32 var800915b8 = 0;
|
|||
u32 var800915bc = 0;
|
||||
u32 var800915c0 = 0;
|
||||
u32 var800915c4 = 0;
|
||||
u32 var800915c8 = 0;
|
||||
u32 var800915cc = 0;
|
||||
Acmd *var800915c8[2] = {0};
|
||||
u32 var800915d0 = 0;
|
||||
u32 var800915d4 = 0;
|
||||
u32 var800915d8 = 0;
|
||||
|
|
@ -4098,12 +4097,7 @@ u32 var80091838 = 0;
|
|||
u32 var8009183c = 0;
|
||||
u32 var80091840 = 0;
|
||||
u32 var80091844 = 0;
|
||||
u32 var80091848 = 0;
|
||||
u32 var8009184c = 0;
|
||||
u32 var80091850 = 0;
|
||||
u32 var80091854 = 0;
|
||||
u32 var80091858 = 0;
|
||||
u32 var8009185c = 0;
|
||||
OSMesgQueue var80091848 = {0};
|
||||
u32 var80091860 = 0;
|
||||
u32 var80091864 = 0;
|
||||
u32 var80091868 = 0;
|
||||
|
|
@ -4138,10 +4132,10 @@ u32 var800918d8 = 0;
|
|||
u32 var800918dc = 0;
|
||||
u32 var800918e0 = 0;
|
||||
u32 var800918e4 = 0;
|
||||
u32 var800918e8 = 0;
|
||||
s32 var800918e8 = 0;
|
||||
u32 var800918ec = 0;
|
||||
void *g_AudioSp = NULL;
|
||||
u32 var800918f4 = 0;
|
||||
u32 g_AmgrCurrentCmdList = 0;
|
||||
u32 var800918f8 = 0;
|
||||
u32 var800918fc = 0;
|
||||
u32 var80091900 = 0;
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ extern u32 var8005cf6c;
|
|||
extern u32 __osGlobalIntMask;
|
||||
extern u32 var8005cf84;
|
||||
extern u32 var8005cf90;
|
||||
extern u32 var8005cf94;
|
||||
extern u8 var8005cf94;
|
||||
extern u32 var8005cf98;
|
||||
extern u32 var8005cfc0;
|
||||
extern u32 var8005cfe8;
|
||||
|
|
|
|||
|
|
@ -371,20 +371,22 @@ extern u32 var80091568;
|
|||
extern u32 var80091580;
|
||||
extern u32 var80091588;
|
||||
extern u32 var80091590;
|
||||
extern u32 var800915c8;
|
||||
extern Acmd *var800915c8[2];
|
||||
extern u32 var800915d0;
|
||||
extern u32 var800915d4;
|
||||
extern OSThread g_AudioThread;
|
||||
extern u32 var80091810;
|
||||
extern u32 var80091828;
|
||||
extern u32 var80091848;
|
||||
extern OSMesgQueue var80091848;
|
||||
extern u32 var80091860;
|
||||
extern u32 var80091880;
|
||||
extern u32 var800918d0;
|
||||
extern u32 var800918dc;
|
||||
extern u32 var800918e0;
|
||||
extern u32 var800918e8;
|
||||
extern s32 var800918e8;
|
||||
extern u32 var800918ec;
|
||||
extern void *g_AudioSp;
|
||||
extern OSScTask *g_AmgrCurrentCmdList;
|
||||
extern u32 var80091900;
|
||||
extern u32 var80091910;
|
||||
extern u32 var80091924;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,5 @@ u32 amgrCreate(void);
|
|||
void amgrStartThread(void);
|
||||
OSMesgQueue *amgr0009118(void);
|
||||
void amgrStopThread(void);
|
||||
u32 amgrHandleFrameMsg(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "types.h"
|
||||
|
||||
u32 func00009660(void);
|
||||
u32 func0000993c(void);
|
||||
void amgrClearDmaBuffers(void);
|
||||
u32 func00009a08(void);
|
||||
void func00009a80(void);
|
||||
void func00009a88(void);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include "types.h"
|
||||
|
||||
u32 func00030ce0(void);
|
||||
u32 func000312e4(void);
|
||||
Acmd *alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen);
|
||||
u32 func00031504(void);
|
||||
u32 func00031564(void);
|
||||
u32 func00031590(void);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,4 @@
|
|||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
u32 func0004e3c0(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include <ultra64.h>
|
||||
#include "boot/init.h"
|
||||
#include "boot/sched.h"
|
||||
#include "constants.h"
|
||||
#include "game/data/data_000000.h"
|
||||
#include "game/data/data_0083d0.h"
|
||||
|
|
@ -23,7 +24,7 @@
|
|||
#include "types.h"
|
||||
|
||||
u32 var8005cf90 = 0x00000000;
|
||||
u32 var8005cf94 = 0x01000000;
|
||||
u8 var8005cf94 = 1;
|
||||
u32 var8005cf98 = 0x00000001;
|
||||
u32 var8005cf9c = 0x000014a0;
|
||||
u32 var8005cfa0 = 0x00000000;
|
||||
|
|
@ -379,7 +380,7 @@ u32 var8005d514 = 0x00000001;
|
|||
|
||||
struct audioinfo {
|
||||
s16 *data;
|
||||
s16 frameSamples;
|
||||
s16 framesamples;
|
||||
OSScTask task;
|
||||
};
|
||||
|
||||
|
|
@ -1075,8 +1076,8 @@ glabel amgrMain
|
|||
|
||||
GLOBAL_ASM(
|
||||
glabel amgrHandleFrameMsg
|
||||
/* 9448: 3c068009 */ lui $a2,%hi(var800918f4)
|
||||
/* 944c: 8cc618f4 */ lw $a2,%lo(var800918f4)($a2)
|
||||
/* 9448: 3c068009 */ lui $a2,%hi(g_AmgrCurrentCmdList)
|
||||
/* 944c: 8cc618f4 */ lw $a2,%lo(g_AmgrCurrentCmdList)($a2)
|
||||
/* 9450: 27bdffd0 */ addiu $sp,$sp,-48
|
||||
/* 9454: afb00018 */ sw $s0,0x18($sp)
|
||||
/* 9458: 00808025 */ or $s0,$a0,$zero
|
||||
|
|
@ -1084,13 +1085,13 @@ glabel amgrHandleFrameMsg
|
|||
/* 9460: 10c00007 */ beqz $a2,.L00009480
|
||||
/* 9464: afa50034 */ sw $a1,0x34($sp)
|
||||
/* 9468: 3c048009 */ lui $a0,%hi(g_SchedThread)
|
||||
/* 946c: 3c018009 */ lui $at,%hi(var800918f4)
|
||||
/* 9470: ac2618f4 */ sw $a2,%lo(var800918f4)($at)
|
||||
/* 946c: 3c018009 */ lui $at,%hi(g_AmgrCurrentCmdList)
|
||||
/* 9470: ac2618f4 */ sw $a2,%lo(g_AmgrCurrentCmdList)($at)
|
||||
/* 9474: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
|
||||
/* 9478: 0c0007ea */ jal __scHandleRetraceViaPri
|
||||
/* 947c: 00c02825 */ or $a1,$a2,$zero
|
||||
.L00009480:
|
||||
/* 9480: 0c00264f */ jal func0000993c
|
||||
/* 9480: 0c00264f */ jal amgrClearDmaBuffers
|
||||
/* 9484: 00000000 */ nop
|
||||
/* 9488: 3c198006 */ lui $t9,%hi(var8005cf90)
|
||||
/* 948c: 8f39cf90 */ lw $t9,%lo(var8005cf90)($t9)
|
||||
|
|
@ -1113,7 +1114,7 @@ glabel amgrHandleFrameMsg
|
|||
/* 94d0: 8c640000 */ lw $a0,0x0($v1)
|
||||
/* 94d4: afa20028 */ sw $v0,0x28($sp)
|
||||
/* 94d8: 00055080 */ sll $t2,$a1,0x2
|
||||
/* 94dc: 0c0138f0 */ jal func0004e3c0
|
||||
/* 94dc: 0c0138f0 */ jal osAiSetNextBuffer
|
||||
/* 94e0: 01402825 */ or $a1,$t2,$zero
|
||||
/* 94e4: 8fa60028 */ lw $a2,0x28($sp)
|
||||
/* 94e8: 8fab002c */ lw $t3,0x2c($sp)
|
||||
|
|
@ -1145,7 +1146,7 @@ glabel amgrHandleFrameMsg
|
|||
/* 9548: a0780000 */ sb $t8,0x0($v1)
|
||||
.L0000954c:
|
||||
/* 954c: 8fa40024 */ lw $a0,0x24($sp)
|
||||
/* 9550: 0c00c4b9 */ jal func000312e4
|
||||
/* 9550: 0c00c4b9 */ jal alAudioFrame
|
||||
/* 9554: 86070004 */ lh $a3,0x4($s0)
|
||||
/* 9558: 26060008 */ addiu $a2,$s0,0x8
|
||||
/* 955c: 3c038006 */ lui $v1,%hi(var80059fe0)
|
||||
|
|
@ -1175,7 +1176,7 @@ glabel amgrHandleFrameMsg
|
|||
/* 95bc: accc0024 */ sw $t4,0x24($a2)
|
||||
/* 95c0: accd002c */ sw $t5,0x2c($a2)
|
||||
/* 95c4: 8fae0024 */ lw $t6,0x24($sp)
|
||||
/* 95c8: 3c018009 */ lui $at,%hi(var800918f4)
|
||||
/* 95c8: 3c018009 */ lui $at,%hi(g_AmgrCurrentCmdList)
|
||||
/* 95cc: acce0040 */ sw $t6,0x40($a2)
|
||||
/* 95d0: 8faf0024 */ lw $t7,0x24($sp)
|
||||
/* 95d4: acc00048 */ sw $zero,0x48($a2)
|
||||
|
|
@ -1191,11 +1192,81 @@ glabel amgrHandleFrameMsg
|
|||
/* 95fc: 8fb00018 */ lw $s0,0x18($sp)
|
||||
/* 9600: 392a0001 */ xori $t2,$t1,0x1
|
||||
/* 9604: ac4a0000 */ sw $t2,0x0($v0)
|
||||
/* 9608: ac2618f4 */ sw $a2,%lo(var800918f4)($at)
|
||||
/* 9608: ac2618f4 */ sw $a2,%lo(g_AmgrCurrentCmdList)($at)
|
||||
/* 960c: 03e00008 */ jr $ra
|
||||
/* 9610: 27bd0030 */ addiu $sp,$sp,0x30
|
||||
);
|
||||
|
||||
// Mismatch:
|
||||
// - Regalloc, likely relating to g_AmgrCurrentCmdList = g_AmgrCurrentCmdList
|
||||
// - g_AmgrCurrentCmdList needs to be moved into this file
|
||||
//void amgrHandleFrameMsg(struct audioinfo *info, struct audioinfo *previnfo)
|
||||
//{
|
||||
// u32 somevalue;
|
||||
// s16 *outbuffer;
|
||||
// Acmd *datastart;
|
||||
// Acmd *cmd;
|
||||
// OSScTask *task;
|
||||
// static OSScTask *g_AmgrCurrentCmdList;
|
||||
//
|
||||
// extern u32 vara4500004;
|
||||
// extern u8 rspbootTextStart;
|
||||
// extern u8 rspbootTextEnd;
|
||||
// extern u8 aspMainTextStart;
|
||||
// extern u8 aspMainDataStart;
|
||||
//
|
||||
// if (g_AmgrCurrentCmdList) {
|
||||
// g_AmgrCurrentCmdList = g_AmgrCurrentCmdList;
|
||||
// __scHandleRetraceViaPri(&g_SchedThread, g_AmgrCurrentCmdList);
|
||||
// }
|
||||
//
|
||||
// amgrClearDmaBuffers();
|
||||
//
|
||||
// somevalue = vara4500004 / 4;
|
||||
// datastart = var800915c8[var8005cf90];
|
||||
// outbuffer = (s16 *) osVirtualToPhysical(info->data);
|
||||
//
|
||||
// if (previnfo) {
|
||||
// osAiSetNextBuffer(previnfo->data, previnfo->framesamples * 4);
|
||||
// }
|
||||
//
|
||||
// if (somevalue > 248 && var8005cf94 == 0) {
|
||||
// info->framesamples = var800918dc;
|
||||
// var8005cf94 = 2;
|
||||
// } else {
|
||||
// info->framesamples = var800918e0;
|
||||
//
|
||||
// if (var8005cf94 != 0) {
|
||||
// var8005cf94--;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// cmd = alAudioFrame(datastart, &var800918e8, outbuffer, info->framesamples);
|
||||
//
|
||||
// task = &info->task;
|
||||
//
|
||||
// task->next = NULL;
|
||||
// task->msgQ = &var80091848;
|
||||
// task->msg = info;
|
||||
// task->flags = OS_SC_NEEDS_RSP;
|
||||
// task->list.t.type = M_AUDTASK;
|
||||
// task->list.t.flags = 0;
|
||||
// task->list.t.ucode_boot = (u64 *) &rspbootTextStart;
|
||||
// task->list.t.ucode_boot_size = (u32) &rspbootTextEnd - (u32) &rspbootTextStart;
|
||||
// task->list.t.ucode = (u64 *) &aspMainTextStart;
|
||||
// task->list.t.ucode_data = (u64 *) &aspMainDataStart;
|
||||
// task->list.t.ucode_size = SP_UCODE_SIZE;
|
||||
// task->list.t.ucode_data_size = SP_UCODE_DATA_SIZE;
|
||||
// task->list.t.data_ptr = (u64 *) datastart;
|
||||
// task->list.t.data_size = (cmd - datastart) * sizeof(Acmd);
|
||||
// task->list.t.yield_data_ptr = NULL;
|
||||
// task->list.t.yield_data_size = 0;
|
||||
//
|
||||
// var8005cf90 ^= 1;
|
||||
//
|
||||
// g_AmgrCurrentCmdList = task;
|
||||
//}
|
||||
|
||||
void amgrHandleDoneMsg(struct audioinfo *info)
|
||||
{
|
||||
static bool firsttime = true;
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ glabel func00009844
|
|||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0000993c
|
||||
glabel amgrClearDmaBuffers
|
||||
/* 993c: 27bdffd8 */ addiu $sp,$sp,-40
|
||||
/* 9940: afb2001c */ sw $s2,0x1c($sp)
|
||||
/* 9944: 3c128009 */ lui $s2,%hi(var80091900)
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ glabel func00030ce0
|
|||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func000312e4
|
||||
glabel alAudioFrame
|
||||
/* 312e4: 27bdffc0 */ addiu $sp,$sp,-64
|
||||
/* 312e8: afbf001c */ sw $ra,0x1c($sp)
|
||||
/* 312ec: afa40040 */ sw $a0,0x40($sp)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#include "types.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0004e3c0
|
||||
glabel osAiSetNextBuffer
|
||||
/* 4e3c0: 27bdffe0 */ addiu $sp,$sp,-32
|
||||
/* 4e3c4: 3c0f8006 */ lui $t7,%hi(var80060990)
|
||||
/* 4e3c8: 91ef0990 */ lbu $t7,%lo(var80060990)($t7)
|
||||
|
|
|
|||
Loading…
Reference in New Issue