diff --git a/src/include/lib/lib_3c4d0.h b/src/include/lib/lib_3c4d0.h index f975ab977..8125f8ac1 100644 --- a/src/include/lib/lib_3c4d0.h +++ b/src/include/lib/lib_3c4d0.h @@ -4,7 +4,6 @@ #include "data.h" #include "types.h" -u32 func0003c56c(void); u32 func0003c7c0(void); u32 func0003c900(void); u32 func0003c9e0(void); diff --git a/src/lib/lib_317f0.c b/src/lib/lib_317f0.c index 146da0cca..9a686b097 100644 --- a/src/lib/lib_317f0.c +++ b/src/lib/lib_317f0.c @@ -185,7 +185,7 @@ glabel func000317f0 /* 31a30: 3c0d8006 */ lui $t5,%hi(var8005f12c) /* 31a34: 8dadf12c */ lw $t5,%lo(var8005f12c)($t5) /* 31a38: 25a40014 */ addiu $a0,$t5,0x14 -/* 31a3c: 0c00f15b */ jal func0003c56c +/* 31a3c: 0c00f15b */ jal alEvtqNextEvent /* 31a40: 25a50028 */ addiu $a1,$t5,0x28 /* 31a44: 3c0f8006 */ lui $t7,%hi(var8005f12c) /* 31a48: 8deff12c */ lw $t7,%lo(var8005f12c)($t7) @@ -352,7 +352,7 @@ glabel func000317f0 /* 31a30: 3c0d8006 */ lui $t5,%hi(var8005f12c) /* 31a34: 8dadf12c */ lw $t5,%lo(var8005f12c)($t5) /* 31a38: 25a40014 */ addiu $a0,$t5,0x14 -/* 31a3c: 0c00f15b */ jal func0003c56c +/* 31a3c: 0c00f15b */ jal alEvtqNextEvent /* 31a40: 25a50028 */ addiu $a1,$t5,0x28 /* 31a44: 3c0f8006 */ lui $t7,%hi(var8005f12c) /* 31a48: 8deff12c */ lw $t7,%lo(var8005f12c)($t7) @@ -515,7 +515,7 @@ glabel func000317f0 /* 33170: 3c0d8006 */ lui $t5,0x8006 /* 33174: 8dad163c */ lw $t5,0x163c($t5) /* 33178: 25a40014 */ addiu $a0,$t5,0x14 -/* 3317c: 0c00f64f */ jal func0003c56c +/* 3317c: 0c00f64f */ jal alEvtqNextEvent /* 33180: 25a50028 */ addiu $a1,$t5,0x28 /* 33184: 3c0f8006 */ lui $t7,0x8006 /* 33188: 8def163c */ lw $t7,0x163c($t7) @@ -565,7 +565,7 @@ glabel func00031a68 .L00031ad4: /* 31ad4: 8fa9002c */ lw $t1,0x2c($sp) /* 31ad8: 25240014 */ addiu $a0,$t1,0x14 -/* 31adc: 0c00f15b */ jal func0003c56c +/* 31adc: 0c00f15b */ jal alEvtqNextEvent /* 31ae0: 25250028 */ addiu $a1,$t1,0x28 /* 31ae4: 8faa002c */ lw $t2,0x2c($sp) /* 31ae8: ad42004c */ sw $v0,0x4c($t2) diff --git a/src/lib/lib_3c4d0.c b/src/lib/lib_3c4d0.c index a5630b57b..42509ef26 100644 --- a/src/lib/lib_3c4d0.c +++ b/src/lib/lib_3c4d0.c @@ -23,53 +23,35 @@ void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, s32 itemCount) } } -GLOBAL_ASM( -glabel func0003c56c -/* 3c56c: 27bdffd8 */ addiu $sp,$sp,-40 -/* 3c570: afbf0014 */ sw $ra,0x14($sp) -/* 3c574: afa40028 */ sw $a0,0x28($sp) -/* 3c578: afa5002c */ sw $a1,0x2c($sp) -/* 3c57c: 0c012194 */ jal osSetIntMask -/* 3c580: 24040001 */ addiu $a0,$zero,0x1 -/* 3c584: afa2001c */ sw $v0,0x1c($sp) -/* 3c588: 8fae0028 */ lw $t6,0x28($sp) -/* 3c58c: 8dcf0008 */ lw $t7,0x8($t6) -/* 3c590: afaf0024 */ sw $t7,0x24($sp) -/* 3c594: 8fb80024 */ lw $t8,0x24($sp) -/* 3c598: 1300000f */ beqz $t8,.L0003c5d8 -/* 3c59c: 00000000 */ nop -/* 3c5a0: 0c00c5e9 */ jal alUnlink -/* 3c5a4: 8fa40024 */ lw $a0,0x24($sp) -/* 3c5a8: 8fa40024 */ lw $a0,0x24($sp) -/* 3c5ac: 8fa5002c */ lw $a1,0x2c($sp) -/* 3c5b0: 24060010 */ addiu $a2,$zero,0x10 -/* 3c5b4: 0c012c5c */ jal bcopy -/* 3c5b8: 2484000c */ addiu $a0,$a0,0xc -/* 3c5bc: 8fa40024 */ lw $a0,0x24($sp) -/* 3c5c0: 0c00c5dc */ jal alLink -/* 3c5c4: 8fa50028 */ lw $a1,0x28($sp) -/* 3c5c8: 8fb90024 */ lw $t9,0x24($sp) -/* 3c5cc: 8f280008 */ lw $t0,0x8($t9) -/* 3c5d0: 10000005 */ b .L0003c5e8 -/* 3c5d4: afa80020 */ sw $t0,0x20($sp) -.L0003c5d8: -/* 3c5d8: 8faa002c */ lw $t2,0x2c($sp) -/* 3c5dc: 2409ffff */ addiu $t1,$zero,-1 -/* 3c5e0: a5490000 */ sh $t1,0x0($t2) -/* 3c5e4: afa00020 */ sw $zero,0x20($sp) -.L0003c5e8: -/* 3c5e8: 0c012194 */ jal osSetIntMask -/* 3c5ec: 8fa4001c */ lw $a0,0x1c($sp) -/* 3c5f0: 10000003 */ b .L0003c600 -/* 3c5f4: 8fa20020 */ lw $v0,0x20($sp) -/* 3c5f8: 10000001 */ b .L0003c600 -/* 3c5fc: 00000000 */ nop -.L0003c600: -/* 3c600: 8fbf0014 */ lw $ra,0x14($sp) -/* 3c604: 27bd0028 */ addiu $sp,$sp,0x28 -/* 3c608: 03e00008 */ jr $ra -/* 3c60c: 00000000 */ nop -); +ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt) +{ + ALEventListItem *item; + ALMicroTime delta; + OSIntMask mask; + + mask = osSetIntMask(OS_IM_NONE); + + item = (ALEventListItem *)evtq->allocList.next; + + if (item) { + alUnlink((ALLink *)item); + bcopy(&item->evt, evt, sizeof(*evt)); + alLink((ALLink *)item, &evtq->freeList); + delta = item->delta; + } else { + /* sct 11/28/95 - If we get here, most like we overflowed the event queue */ + /* with non-self-perpetuating events. Eg. if we filled the evtq with volume */ + /* events, then when the seqp is told to play it will handle all the events */ + /* at once completely emptying out the queue. At this point this problem */ + /* must be treated as an out of resource error and the evtq should be increased. */ + evt->type = -1; + delta = 0; + } + + osSetIntMask(mask); + + return delta; +} GLOBAL_ASM( glabel alEvtqPostEvent diff --git a/src/lib/ultra/audio/csplayer.c b/src/lib/ultra/audio/csplayer.c index 27ada0512..ba0fb8578 100644 --- a/src/lib/ultra/audio/csplayer.c +++ b/src/lib/ultra/audio/csplayer.c @@ -1564,7 +1564,7 @@ glabel __CSPVoiceHandler .L00034d8c: /* 34d8c: 8fb90074 */ lw $t9,0x74($sp) /* 34d90: 27240048 */ addiu $a0,$t9,0x48 -/* 34d94: 0c00f15b */ jal func0003c56c +/* 34d94: 0c00f15b */ jal alEvtqNextEvent /* 34d98: 27250038 */ addiu $a1,$t9,0x38 /* 34d9c: 8fae0074 */ lw $t6,0x74($sp) /* 34da0: adc20028 */ sw $v0,0x28($t6)