Decompile alCSeqNew

This commit is contained in:
Ryan Dwyer 2021-03-27 20:40:10 +10:00
parent 9672786af7
commit 2771f9f062
11 changed files with 91 additions and 162 deletions

View File

@ -83,8 +83,8 @@ $(B_DIR)/lib/ultra/libc/llcvt.o: MIPSISET := -mips3 -32
# it introduces a race condition when using make -j because they create a
# temporary include-stdin.u file during compilation.
# For these files, see their explicit targets towards the end of this file.
$(B_DIR)/lib/lib_38d30.o: OPT_LVL := -g
$(B_DIR)/lib/ultra/audio/bnkf.o: OPT_LVL := -g
$(B_DIR)/lib/ultra/audio/cseq.o: OPT_LVL := -g
$(B_DIR)/lib/ultra/audio/csplayer.o: OPT_LVL := -g
$(B_DIR)/lib/ultra/audio/heap.o: OPT_LVL := -g
$(B_DIR)/lib/ultra/gu/align.o: OPT_LVL := -O3

View File

@ -71,7 +71,8 @@
build/ROMID/lib/ultra/audio/bnkf.o (section); \
build/ROMID/lib/lib_37b00.o (section); \
build/ROMID/lib/lib_38d10.o (section); \
build/ROMID/lib/lib_38d30.o (section); \
build/ROMID/lib/ultra/audio/cseq.o (section); \
build/ROMID/lib/lib_39be0.o (section); \
build/ROMID/lib/lib_39c80.o (section); \
build/ROMID/lib/lib_39f70.o (section); \
build/ROMID/lib/lib_39fc0.o (section); \

View File

@ -69,7 +69,8 @@
build/ROMID/lib/ultra/audio/bnkf.o (section); \
build/ROMID/lib/lib_37b00.o (section); \
build/ROMID/lib/lib_38d10.o (section); \
build/ROMID/lib/lib_38d30.o (section); \
build/ROMID/lib/ultra/audio/cseq.o (section); \
build/ROMID/lib/lib_39be0.o (section); \
build/ROMID/lib/lib_39c80.o (section); \
build/ROMID/lib/lib_39f70.o (section); \
build/ROMID/lib/lib_39fc0.o (section); \

View File

@ -69,7 +69,8 @@
build/ROMID/lib/ultra/audio/bnkf.o (section); \
build/ROMID/lib/lib_37b00.o (section); \
build/ROMID/lib/lib_38d10.o (section); \
build/ROMID/lib/lib_38d30.o (section); \
build/ROMID/lib/ultra/audio/cseq.o (section); \
build/ROMID/lib/lib_39be0.o (section); \
build/ROMID/lib/lib_39c80.o (section); \
build/ROMID/lib/lib_39f70.o (section); \
build/ROMID/lib/lib_39fc0.o (section); \

View File

@ -1,5 +1,5 @@
#ifndef _IN_LIB_LIB_38D30_H
#define _IN_LIB_LIB_38D30_H
#ifndef _IN_LIB_LIB_39BE0_H
#define _IN_LIB_LIB_39BE0_H
#include <ultra64.h>
#include "data.h"
#include "types.h"

View File

@ -5,7 +5,6 @@
#include "lib/lib_2fc60.h"
#include "lib/lib_30ce0.h"
#include "lib/lib_317f0.h"
#include "lib/lib_38d30.h"
#include "lib/lib_39c80.h"
#include "lib/lib_39fe0.h"
#include "lib/lib_3a100.h"

View File

@ -5,7 +5,6 @@
#include "lib/lib_2fc60.h"
#include "lib/lib_30ce0.h"
#include "lib/lib_317f0.h"
#include "lib/lib_38d30.h"
#include "lib/lib_39c80.h"
#include "lib/lib_39fe0.h"
#include "lib/lib_3a100.h"

52
src/lib/lib_39be0.c Normal file
View File

@ -0,0 +1,52 @@
#include <ultra64.h>
#include "constants.h"
#include "bss.h"
#include "data.h"
#include "types.h"
GLOBAL_ASM(
glabel func00039be0
/* 39be0: 27bdffd8 */ addiu $sp,$sp,-40
/* 39be4: afbf0014 */ sw $ra,0x14($sp)
/* 39be8: afa40028 */ sw $a0,0x28($sp)
/* 39bec: afa5002c */ sw $a1,0x2c($sp)
/* 39bf0: 240e000d */ addiu $t6,$zero,0xd
/* 39bf4: a7ae0018 */ sh $t6,0x18($sp)
/* 39bf8: 8faf002c */ lw $t7,0x2c($sp)
/* 39bfc: afaf001c */ sw $t7,0x1c($sp)
/* 39c00: 8fa40028 */ lw $a0,0x28($sp)
/* 39c04: 27a50018 */ addiu $a1,$sp,0x18
/* 39c08: 00003025 */ or $a2,$zero,$zero
/* 39c0c: 00003825 */ or $a3,$zero,$zero
/* 39c10: 0c00f184 */ jal alEvtqPostEvent
/* 39c14: 24840048 */ addiu $a0,$a0,0x48
/* 39c18: 10000001 */ b .L00039c20
/* 39c1c: 00000000 */ nop
.L00039c20:
/* 39c20: 8fbf0014 */ lw $ra,0x14($sp)
/* 39c24: 27bd0028 */ addiu $sp,$sp,0x28
/* 39c28: 03e00008 */ jr $ra
/* 39c2c: 00000000 */ nop
);
GLOBAL_ASM(
glabel func00039c30
/* 39c30: 27bdffd8 */ addiu $sp,$sp,-40
/* 39c34: afbf0014 */ sw $ra,0x14($sp)
/* 39c38: afa40028 */ sw $a0,0x28($sp)
/* 39c3c: 240e000f */ addiu $t6,$zero,0xf
/* 39c40: a7ae0018 */ sh $t6,0x18($sp)
/* 39c44: 8fa40028 */ lw $a0,0x28($sp)
/* 39c48: 27a50018 */ addiu $a1,$sp,0x18
/* 39c4c: 00003025 */ or $a2,$zero,$zero
/* 39c50: 00003825 */ or $a3,$zero,$zero
/* 39c54: 0c00f184 */ jal alEvtqPostEvent
/* 39c58: 24840048 */ addiu $a0,$a0,0x48
/* 39c5c: 10000001 */ b .L00039c64
/* 39c60: 00000000 */ nop
.L00039c64:
/* 39c64: 8fbf0014 */ lw $ra,0x14($sp)
/* 39c68: 27bd0028 */ addiu $sp,$sp,0x28
/* 39c6c: 03e00008 */ jr $ra
/* 39c70: 00000000 */ nop
);

View File

@ -15,7 +15,7 @@
#include "lib/lib_37650.h"
#include "lib/lib_37b00.h"
#include "lib/lib_38d10.h"
#include "lib/lib_38d30.h"
#include "lib/lib_39be0.h"
#include "lib/lib_39c80.h"
#include "data.h"
#include "types.h"

View File

@ -1,7 +1,6 @@
#include <ultra64.h>
#include "constants.h"
#include "bss.h"
#include "lib/lib_38d30.h"
#include "lib/lib_3c4d0.h"
#include "data.h"
#include "types.h"
@ -10,110 +9,35 @@ u32 __alCSeqGetTrackEvent(ALCSeq *seq, u32 track, ALEvent *event, s32 arg3);
u8 __getTrackByte(ALCSeq *seq, u32 track);
u32 __readVarLen(ALCSeq *seq,u32 track);
GLOBAL_ASM(
glabel alCSeqNew
/* 38d30: 27bdffd8 */ addiu $sp,$sp,-40
/* 38d34: afbf0014 */ sw $ra,0x14($sp)
/* 38d38: afa40028 */ sw $a0,0x28($sp)
/* 38d3c: afa5002c */ sw $a1,0x2c($sp)
/* 38d40: 8fae002c */ lw $t6,0x2c($sp)
/* 38d44: 8faf0028 */ lw $t7,0x28($sp)
/* 38d48: adee0000 */ sw $t6,0x0($t7)
/* 38d4c: 8fb80028 */ lw $t8,0x28($sp)
/* 38d50: af000004 */ sw $zero,0x4($t8)
/* 38d54: 8fb90028 */ lw $t9,0x28($sp)
/* 38d58: af200010 */ sw $zero,0x10($t9)
/* 38d5c: 8fa80028 */ lw $t0,0x28($sp)
/* 38d60: ad00000c */ sw $zero,0xc($t0)
/* 38d64: 8faa0028 */ lw $t2,0x28($sp)
/* 38d68: 24090001 */ addiu $t1,$zero,0x1
/* 38d6c: ad490014 */ sw $t1,0x14($t2)
/* 38d70: afa00024 */ sw $zero,0x24($sp)
.L00038d74:
/* 38d74: 8fab0028 */ lw $t3,0x28($sp)
/* 38d78: 8fac0024 */ lw $t4,0x24($sp)
/* 38d7c: 016c6821 */ addu $t5,$t3,$t4
/* 38d80: a1a000a8 */ sb $zero,0xa8($t5)
/* 38d84: 8faf0024 */ lw $t7,0x24($sp)
/* 38d88: 8fae0028 */ lw $t6,0x28($sp)
/* 38d8c: 000fc080 */ sll $t8,$t7,0x2
/* 38d90: 01d8c821 */ addu $t9,$t6,$t8
/* 38d94: af200058 */ sw $zero,0x58($t9)
/* 38d98: 8fa80028 */ lw $t0,0x28($sp)
/* 38d9c: 8fa90024 */ lw $t1,0x24($sp)
/* 38da0: 01095021 */ addu $t2,$t0,$t1
/* 38da4: a1400098 */ sb $zero,0x98($t2)
/* 38da8: 8fab0028 */ lw $t3,0x28($sp)
/* 38dac: 8fad0024 */ lw $t5,0x24($sp)
/* 38db0: 8d6c0000 */ lw $t4,0x0($t3)
/* 38db4: 000d7880 */ sll $t7,$t5,0x2
/* 38db8: 018f7021 */ addu $t6,$t4,$t7
/* 38dbc: 8dd80000 */ lw $t8,0x0($t6)
/* 38dc0: afb80020 */ sw $t8,0x20($sp)
/* 38dc4: 8fb90020 */ lw $t9,0x20($sp)
/* 38dc8: 1320001b */ beqz $t9,.L00038e38
/* 38dcc: 00000000 */ nop
/* 38dd0: 8fa80024 */ lw $t0,0x24($sp)
/* 38dd4: 24090001 */ addiu $t1,$zero,0x1
/* 38dd8: 01095004 */ sllv $t2,$t1,$t0
/* 38ddc: afaa001c */ sw $t2,0x1c($sp)
/* 38de0: 8fab0028 */ lw $t3,0x28($sp)
/* 38de4: 8fac001c */ lw $t4,0x1c($sp)
/* 38de8: 8d6d0004 */ lw $t5,0x4($t3)
/* 38dec: 01ac7825 */ or $t7,$t5,$t4
/* 38df0: ad6f0004 */ sw $t7,0x4($t3)
/* 38df4: 8fa80024 */ lw $t0,0x24($sp)
/* 38df8: 8fae002c */ lw $t6,0x2c($sp)
/* 38dfc: 8fb80020 */ lw $t8,0x20($sp)
/* 38e00: 8fa90028 */ lw $t1,0x28($sp)
/* 38e04: 00085080 */ sll $t2,$t0,0x2
/* 38e08: 01d8c821 */ addu $t9,$t6,$t8
/* 38e0c: 012a6821 */ addu $t5,$t1,$t2
/* 38e10: adb90018 */ sw $t9,0x18($t5)
/* 38e14: 8fa40028 */ lw $a0,0x28($sp)
/* 38e18: 0c00e6d3 */ jal __readVarLen
/* 38e1c: 8fa50024 */ lw $a1,0x24($sp)
/* 38e20: 8faf0024 */ lw $t7,0x24($sp)
/* 38e24: 8fac0028 */ lw $t4,0x28($sp)
/* 38e28: 000f5880 */ sll $t3,$t7,0x2
/* 38e2c: 018b7021 */ addu $t6,$t4,$t3
/* 38e30: 10000006 */ b .L00038e4c
/* 38e34: adc200b8 */ sw $v0,0xb8($t6)
.L00038e38:
/* 38e38: 8fa80024 */ lw $t0,0x24($sp)
/* 38e3c: 8fb80028 */ lw $t8,0x28($sp)
/* 38e40: 00084880 */ sll $t1,$t0,0x2
/* 38e44: 03095021 */ addu $t2,$t8,$t1
/* 38e48: ad400018 */ sw $zero,0x18($t2)
.L00038e4c:
/* 38e4c: 8fb90024 */ lw $t9,0x24($sp)
/* 38e50: 272d0001 */ addiu $t5,$t9,0x1
/* 38e54: 2da10010 */ sltiu $at,$t5,0x10
/* 38e58: 1420ffc6 */ bnez $at,.L00038d74
/* 38e5c: afad0024 */ sw $t5,0x24($sp)
/* 38e60: 8faf0028 */ lw $t7,0x28($sp)
/* 38e64: 3c013f80 */ lui $at,0x3f80
/* 38e68: 44812000 */ mtc1 $at,$f4
/* 38e6c: 8dec0000 */ lw $t4,0x0($t7)
/* 38e70: 8d8b0040 */ lw $t3,0x40($t4)
/* 38e74: 448b3000 */ mtc1 $t3,$f6
/* 38e78: 05610005 */ bgez $t3,.L00038e90
/* 38e7c: 46803220 */ cvt.s.w $f8,$f6
/* 38e80: 3c014f80 */ lui $at,0x4f80
/* 38e84: 44815000 */ mtc1 $at,$f10
/* 38e88: 00000000 */ nop
/* 38e8c: 460a4200 */ add.s $f8,$f8,$f10
.L00038e90:
/* 38e90: 46082403 */ div.s $f16,$f4,$f8
/* 38e94: e5f00008 */ swc1 $f16,0x8($t7)
/* 38e98: 10000001 */ b .L00038ea0
/* 38e9c: 00000000 */ nop
.L00038ea0:
/* 38ea0: 8fbf0014 */ lw $ra,0x14($sp)
/* 38ea4: 27bd0028 */ addiu $sp,$sp,0x28
/* 38ea8: 03e00008 */ jr $ra
/* 38eac: 00000000 */ nop
);
void alCSeqNew(ALCSeq *seq, u8 *ptr)
{
u32 i, tmpOff, flagTmp;
/* load the seqence pointed to by ptr */
seq->base = (ALCMidiHdr*)ptr;
seq->validTracks = 0;
seq->lastDeltaTicks = 0;
seq->lastTicks = 0;
seq->deltaFlag = 1;
for (i = 0; i < 16; i++) {
seq->lastStatus[i] = 0;
seq->curBUPtr[i] = 0;
seq->curBULen[i] = 0;
tmpOff = seq->base->trackOffset[i];
if (tmpOff) {
flagTmp = 1 << i;
seq->validTracks |= flagTmp;
seq->curLoc[i] = (u8*)((u32)ptr + tmpOff);
seq->evtDeltaTicks[i] = __readVarLen(seq,i);
} else {
seq->curLoc[i] = 0;
}
}
seq->qnpt = 1.0f / (f32)seq->base->division;
}
void alCSeqNextEvent(ALCSeq *seq, ALEvent *evt, s32 arg2)
{
@ -523,50 +447,3 @@ u32 __readVarLen(ALCSeq *seq, u32 track)
return value;
}
GLOBAL_ASM(
glabel func00039be0
/* 39be0: 27bdffd8 */ addiu $sp,$sp,-40
/* 39be4: afbf0014 */ sw $ra,0x14($sp)
/* 39be8: afa40028 */ sw $a0,0x28($sp)
/* 39bec: afa5002c */ sw $a1,0x2c($sp)
/* 39bf0: 240e000d */ addiu $t6,$zero,0xd
/* 39bf4: a7ae0018 */ sh $t6,0x18($sp)
/* 39bf8: 8faf002c */ lw $t7,0x2c($sp)
/* 39bfc: afaf001c */ sw $t7,0x1c($sp)
/* 39c00: 8fa40028 */ lw $a0,0x28($sp)
/* 39c04: 27a50018 */ addiu $a1,$sp,0x18
/* 39c08: 00003025 */ or $a2,$zero,$zero
/* 39c0c: 00003825 */ or $a3,$zero,$zero
/* 39c10: 0c00f184 */ jal alEvtqPostEvent
/* 39c14: 24840048 */ addiu $a0,$a0,0x48
/* 39c18: 10000001 */ b .L00039c20
/* 39c1c: 00000000 */ nop
.L00039c20:
/* 39c20: 8fbf0014 */ lw $ra,0x14($sp)
/* 39c24: 27bd0028 */ addiu $sp,$sp,0x28
/* 39c28: 03e00008 */ jr $ra
/* 39c2c: 00000000 */ nop
);
GLOBAL_ASM(
glabel func00039c30
/* 39c30: 27bdffd8 */ addiu $sp,$sp,-40
/* 39c34: afbf0014 */ sw $ra,0x14($sp)
/* 39c38: afa40028 */ sw $a0,0x28($sp)
/* 39c3c: 240e000f */ addiu $t6,$zero,0xf
/* 39c40: a7ae0018 */ sh $t6,0x18($sp)
/* 39c44: 8fa40028 */ lw $a0,0x28($sp)
/* 39c48: 27a50018 */ addiu $a1,$sp,0x18
/* 39c4c: 00003025 */ or $a2,$zero,$zero
/* 39c50: 00003825 */ or $a3,$zero,$zero
/* 39c54: 0c00f184 */ jal alEvtqPostEvent
/* 39c58: 24840048 */ addiu $a0,$a0,0x48
/* 39c5c: 10000001 */ b .L00039c64
/* 39c60: 00000000 */ nop
.L00039c64:
/* 39c64: 8fbf0014 */ lw $ra,0x14($sp)
/* 39c68: 27bd0028 */ addiu $sp,$sp,0x28
/* 39c6c: 03e00008 */ jr $ra
/* 39c70: 00000000 */ nop
);

View File

@ -6,7 +6,6 @@
#include "lib/lib_2fc60.h"
#include "lib/lib_30ce0.h"
#include "lib/lib_317f0.h"
#include "lib/lib_38d30.h"
#include "lib/lib_39c80.h"
#include "lib/lib_39fe0.h"
#include "lib/lib_3a100.h"