diff --git a/ld/libfiles.ntsc-beta.inc b/ld/libfiles.ntsc-beta.inc index 2456bc07f..830b7bb84 100644 --- a/ld/libfiles.ntsc-beta.inc +++ b/ld/libfiles.ntsc-beta.inc @@ -86,6 +86,7 @@ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ + build/ROMID/lib/naudio/n_synaddplayer.o (section); \ build/ROMID/lib/lib_3c890.o (section); \ build/ROMID/lib/lib_3ccf0.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index c90956c05..4052cdb94 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -83,6 +83,7 @@ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ + build/ROMID/lib/naudio/n_synaddplayer.o (section); \ build/ROMID/lib/lib_3c890.o (section); \ build/ROMID/lib/lib_3ccf0.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ diff --git a/ld/libfiles.pal-final.inc b/ld/libfiles.pal-final.inc index c511a3910..7e14c0dee 100644 --- a/ld/libfiles.pal-final.inc +++ b/ld/libfiles.pal-final.inc @@ -83,6 +83,7 @@ build/ROMID/lib/lib_3a100.o (section); \ build/ROMID/lib/naudio/n_save.o (section); \ build/ROMID/lib/naudio/n_event.o (section); \ + build/ROMID/lib/naudio/n_synaddplayer.o (section); \ build/ROMID/lib/lib_3c890.o (section); \ build/ROMID/lib/lib_3ccf0.o (section); \ build/ROMID/lib/lib_3cdc0.o (section); \ diff --git a/src/lib/lib_3c890.c b/src/lib/lib_3c890.c index 48ab9417b..26c9e70bd 100644 --- a/src/lib/lib_3c890.c +++ b/src/lib/lib_3c890.c @@ -6,105 +6,6 @@ #include "data.h" #include "types.h" -GLOBAL_ASM( -glabel func0003c890 -/* 3c890: 27bdffe0 */ addiu $sp,$sp,-32 -/* 3c894: afbf0014 */ sw $ra,0x14($sp) -/* 3c898: afa40020 */ sw $a0,0x20($sp) -/* 3c89c: 0c012194 */ jal osSetIntMask -/* 3c8a0: 24040001 */ addiu $a0,$zero,0x1 -/* 3c8a4: afa2001c */ sw $v0,0x1c($sp) -/* 3c8a8: 3c0e8006 */ lui $t6,%hi(n_syn) -/* 3c8ac: 8dcef114 */ lw $t6,%lo(n_syn)($t6) -/* 3c8b0: 8fb80020 */ lw $t8,0x20($sp) -/* 3c8b4: 8dcf0020 */ lw $t7,0x20($t6) -/* 3c8b8: af0f0010 */ sw $t7,0x10($t8) -/* 3c8bc: 3c198006 */ lui $t9,%hi(n_syn) -/* 3c8c0: 8f39f114 */ lw $t9,%lo(n_syn)($t9) -/* 3c8c4: 8fa90020 */ lw $t1,0x20($sp) -/* 3c8c8: 8f280000 */ lw $t0,0x0($t9) -/* 3c8cc: ad280000 */ sw $t0,0x0($t1) -/* 3c8d0: 3c0b8006 */ lui $t3,%hi(n_syn) -/* 3c8d4: 8d6bf114 */ lw $t3,%lo(n_syn)($t3) -/* 3c8d8: 8faa0020 */ lw $t2,0x20($sp) -/* 3c8dc: ad6a0000 */ sw $t2,0x0($t3) -/* 3c8e0: 0c012194 */ jal osSetIntMask -/* 3c8e4: 8fa4001c */ lw $a0,0x1c($sp) -/* 3c8e8: 10000001 */ b .L0003c8f0 -/* 3c8ec: 00000000 */ nop -.L0003c8f0: -/* 3c8f0: 8fbf0014 */ lw $ra,0x14($sp) -/* 3c8f4: 27bd0020 */ addiu $sp,$sp,0x20 -/* 3c8f8: 03e00008 */ jr $ra -/* 3c8fc: 00000000 */ nop -); - -GLOBAL_ASM( -glabel func0003c900 -/* 3c900: 27bdffe0 */ addiu $sp,$sp,-32 -/* 3c904: afbf0014 */ sw $ra,0x14($sp) -/* 3c908: afa40020 */ sw $a0,0x20($sp) -/* 3c90c: 0c012194 */ jal osSetIntMask -/* 3c910: 24040001 */ addiu $a0,$zero,0x1 -/* 3c914: afa2001c */ sw $v0,0x1c($sp) -/* 3c918: 3c0e8006 */ lui $t6,%hi(n_syn) -/* 3c91c: 8dcef114 */ lw $t6,%lo(n_syn)($t6) -/* 3c920: 8fb80020 */ lw $t8,0x20($sp) -/* 3c924: 8dcf0020 */ lw $t7,0x20($t6) -/* 3c928: af0f0010 */ sw $t7,0x10($t8) -/* 3c92c: 3c198006 */ lui $t9,%hi(n_syn) -/* 3c930: 8f39f114 */ lw $t9,%lo(n_syn)($t9) -/* 3c934: 8fa90020 */ lw $t1,0x20($sp) -/* 3c938: 8f280000 */ lw $t0,0x0($t9) -/* 3c93c: ad280000 */ sw $t0,0x0($t1) -/* 3c940: 3c0b8006 */ lui $t3,%hi(n_syn) -/* 3c944: 8d6bf114 */ lw $t3,%lo(n_syn)($t3) -/* 3c948: 8faa0020 */ lw $t2,0x20($sp) -/* 3c94c: ad6a0000 */ sw $t2,0x0($t3) -/* 3c950: 0c012194 */ jal osSetIntMask -/* 3c954: 8fa4001c */ lw $a0,0x1c($sp) -/* 3c958: 10000001 */ b .L0003c960 -/* 3c95c: 00000000 */ nop -.L0003c960: -/* 3c960: 8fbf0014 */ lw $ra,0x14($sp) -/* 3c964: 27bd0020 */ addiu $sp,$sp,0x20 -/* 3c968: 03e00008 */ jr $ra -/* 3c96c: 00000000 */ nop -); - -GLOBAL_ASM( -glabel n_alSynAddSeqPlayer -/* 3c970: 27bdffe0 */ addiu $sp,$sp,-32 -/* 3c974: afbf0014 */ sw $ra,0x14($sp) -/* 3c978: afa40020 */ sw $a0,0x20($sp) -/* 3c97c: 0c012194 */ jal osSetIntMask -/* 3c980: 24040001 */ addiu $a0,$zero,0x1 -/* 3c984: afa2001c */ sw $v0,0x1c($sp) -/* 3c988: 3c0e8006 */ lui $t6,%hi(n_syn) -/* 3c98c: 8dcef114 */ lw $t6,%lo(n_syn)($t6) -/* 3c990: 8fb80020 */ lw $t8,0x20($sp) -/* 3c994: 8dcf0020 */ lw $t7,0x20($t6) -/* 3c998: af0f0010 */ sw $t7,0x10($t8) -/* 3c99c: 3c198006 */ lui $t9,%hi(n_syn) -/* 3c9a0: 8f39f114 */ lw $t9,%lo(n_syn)($t9) -/* 3c9a4: 8fa90020 */ lw $t1,0x20($sp) -/* 3c9a8: 8f280000 */ lw $t0,0x0($t9) -/* 3c9ac: ad280000 */ sw $t0,0x0($t1) -/* 3c9b0: 3c0b8006 */ lui $t3,%hi(n_syn) -/* 3c9b4: 8d6bf114 */ lw $t3,%lo(n_syn)($t3) -/* 3c9b8: 8faa0020 */ lw $t2,0x20($sp) -/* 3c9bc: ad6a0000 */ sw $t2,0x0($t3) -/* 3c9c0: 0c012194 */ jal osSetIntMask -/* 3c9c4: 8fa4001c */ lw $a0,0x1c($sp) -/* 3c9c8: 10000001 */ b .L0003c9d0 -/* 3c9cc: 00000000 */ nop -.L0003c9d0: -/* 3c9d0: 8fbf0014 */ lw $ra,0x14($sp) -/* 3c9d4: 27bd0020 */ addiu $sp,$sp,0x20 -/* 3c9d8: 03e00008 */ jr $ra -/* 3c9dc: 00000000 */ nop -); - GLOBAL_ASM( glabel func0003c9e0 /* 3c9e0: 27bdffd8 */ addiu $sp,$sp,-40 diff --git a/src/lib/naudio/n_synaddplayer.c b/src/lib/naudio/n_synaddplayer.c new file mode 100644 index 000000000..57b62e582 --- /dev/null +++ b/src/lib/naudio/n_synaddplayer.c @@ -0,0 +1,80 @@ +#include +#include "n_synthInternals.h" + +void n_alSynAddPlayer(ALPlayer *client) +{ + OSIntMask mask = osSetIntMask(OS_IM_NONE); + + client->samplesLeft = n_syn->curSamples; + + client->next = n_syn->head; + n_syn->head = client; + + osSetIntMask(mask); +} + +GLOBAL_ASM( +glabel func0003c900 +/* 3c900: 27bdffe0 */ addiu $sp,$sp,-32 +/* 3c904: afbf0014 */ sw $ra,0x14($sp) +/* 3c908: afa40020 */ sw $a0,0x20($sp) +/* 3c90c: 0c012194 */ jal osSetIntMask +/* 3c910: 24040001 */ addiu $a0,$zero,0x1 +/* 3c914: afa2001c */ sw $v0,0x1c($sp) +/* 3c918: 3c0e8006 */ lui $t6,%hi(n_syn) +/* 3c91c: 8dcef114 */ lw $t6,%lo(n_syn)($t6) +/* 3c920: 8fb80020 */ lw $t8,0x20($sp) +/* 3c924: 8dcf0020 */ lw $t7,0x20($t6) +/* 3c928: af0f0010 */ sw $t7,0x10($t8) +/* 3c92c: 3c198006 */ lui $t9,%hi(n_syn) +/* 3c930: 8f39f114 */ lw $t9,%lo(n_syn)($t9) +/* 3c934: 8fa90020 */ lw $t1,0x20($sp) +/* 3c938: 8f280000 */ lw $t0,0x0($t9) +/* 3c93c: ad280000 */ sw $t0,0x0($t1) +/* 3c940: 3c0b8006 */ lui $t3,%hi(n_syn) +/* 3c944: 8d6bf114 */ lw $t3,%lo(n_syn)($t3) +/* 3c948: 8faa0020 */ lw $t2,0x20($sp) +/* 3c94c: ad6a0000 */ sw $t2,0x0($t3) +/* 3c950: 0c012194 */ jal osSetIntMask +/* 3c954: 8fa4001c */ lw $a0,0x1c($sp) +/* 3c958: 10000001 */ b .L0003c960 +/* 3c95c: 00000000 */ nop +.L0003c960: +/* 3c960: 8fbf0014 */ lw $ra,0x14($sp) +/* 3c964: 27bd0020 */ addiu $sp,$sp,0x20 +/* 3c968: 03e00008 */ jr $ra +/* 3c96c: 00000000 */ nop +); + +GLOBAL_ASM( +glabel n_alSynAddSeqPlayer +/* 3c970: 27bdffe0 */ addiu $sp,$sp,-32 +/* 3c974: afbf0014 */ sw $ra,0x14($sp) +/* 3c978: afa40020 */ sw $a0,0x20($sp) +/* 3c97c: 0c012194 */ jal osSetIntMask +/* 3c980: 24040001 */ addiu $a0,$zero,0x1 +/* 3c984: afa2001c */ sw $v0,0x1c($sp) +/* 3c988: 3c0e8006 */ lui $t6,%hi(n_syn) +/* 3c98c: 8dcef114 */ lw $t6,%lo(n_syn)($t6) +/* 3c990: 8fb80020 */ lw $t8,0x20($sp) +/* 3c994: 8dcf0020 */ lw $t7,0x20($t6) +/* 3c998: af0f0010 */ sw $t7,0x10($t8) +/* 3c99c: 3c198006 */ lui $t9,%hi(n_syn) +/* 3c9a0: 8f39f114 */ lw $t9,%lo(n_syn)($t9) +/* 3c9a4: 8fa90020 */ lw $t1,0x20($sp) +/* 3c9a8: 8f280000 */ lw $t0,0x0($t9) +/* 3c9ac: ad280000 */ sw $t0,0x0($t1) +/* 3c9b0: 3c0b8006 */ lui $t3,%hi(n_syn) +/* 3c9b4: 8d6bf114 */ lw $t3,%lo(n_syn)($t3) +/* 3c9b8: 8faa0020 */ lw $t2,0x20($sp) +/* 3c9bc: ad6a0000 */ sw $t2,0x0($t3) +/* 3c9c0: 0c012194 */ jal osSetIntMask +/* 3c9c4: 8fa4001c */ lw $a0,0x1c($sp) +/* 3c9c8: 10000001 */ b .L0003c9d0 +/* 3c9cc: 00000000 */ nop +.L0003c9d0: +/* 3c9d0: 8fbf0014 */ lw $ra,0x14($sp) +/* 3c9d4: 27bd0020 */ addiu $sp,$sp,0x20 +/* 3c9d8: 03e00008 */ jr $ra +/* 3c9dc: 00000000 */ nop +);