c: _loadBuffer

This commit is contained in:
Mittenshugg
2020-08-05 23:42:17 -05:00
parent 09e50410b6
commit 83ba1cf9ad
4 changed files with 49 additions and 265 deletions
@@ -1,47 +0,0 @@
glabel _filterBuffer
/* 0653D0 800647D0 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0653D4 800647D4 AFB00018 */ sw $s0, 0x18($sp)
/* 0653D8 800647D8 AFBF001C */ sw $ra, 0x1c($sp)
/* 0653DC 800647DC 30A2FFFF */ andi $v0, $a1, 0xffff
/* 0653E0 800647E0 0006C040 */ sll $t8, $a2, 1
/* 0653E4 800647E4 3319FFFF */ andi $t9, $t8, 0xffff
/* 0653E8 800647E8 00027C00 */ sll $t7, $v0, 0x10
/* 0653EC 800647EC 3C010800 */ lui $at, 0x800
/* 0653F0 800647F0 3C090B00 */ lui $t1, (0x0B000020 >> 16) # lui $t1, 0xb00
/* 0653F4 800647F4 00417025 */ or $t6, $v0, $at
/* 0653F8 800647F8 01F94025 */ or $t0, $t7, $t9
/* 0653FC 800647FC 35290020 */ ori $t1, (0x0B000020 & 0xFFFF) # ori $t1, $t1, 0x20
/* 065400 80064800 00808025 */ move $s0, $a0
/* 065404 80064804 ACE80004 */ sw $t0, 4($a3)
/* 065408 80064808 ACEE0000 */ sw $t6, ($a3)
/* 06540C 8006480C ACE90008 */ sw $t1, 8($a3)
/* 065410 80064810 AFA7003C */ sw $a3, 0x3c($sp)
/* 065414 80064814 0C03233C */ jal osVirtualToPhysical
/* 065418 80064818 24840008 */ addiu $a0, $a0, 8
/* 06541C 8006481C 8FA7003C */ lw $a3, 0x3c($sp)
/* 065420 80064820 3C010E00 */ lui $at, 0xe00
/* 065424 80064824 24E30010 */ addiu $v1, $a3, 0x10
/* 065428 80064828 246A0008 */ addiu $t2, $v1, 8
/* 06542C 8006482C ACE2000C */ sw $v0, 0xc($a3)
/* 065430 80064830 AFAA002C */ sw $t2, 0x2c($sp)
/* 065434 80064834 8E0B002C */ lw $t3, 0x2c($s0)
/* 065438 80064838 86180002 */ lh $t8, 2($s0)
/* 06543C 8006483C 316C00FF */ andi $t4, $t3, 0xff
/* 065440 80064840 000C6C00 */ sll $t5, $t4, 0x10
/* 065444 80064844 01A17025 */ or $t6, $t5, $at
/* 065448 80064848 330FFFFF */ andi $t7, $t8, 0xffff
/* 06544C 8006484C 01CFC825 */ or $t9, $t6, $t7
/* 065450 80064850 AC790000 */ sw $t9, ($v1)
/* 065454 80064854 8E040028 */ lw $a0, 0x28($s0)
/* 065458 80064858 0C03233C */ jal osVirtualToPhysical
/* 06545C 8006485C AFA30020 */ sw $v1, 0x20($sp)
/* 065460 80064860 8FA50020 */ lw $a1, 0x20($sp)
/* 065464 80064864 00000000 */ nop
/* 065468 80064868 ACA20004 */ sw $v0, 4($a1)
/* 06546C 8006486C AE00002C */ sw $zero, 0x2c($s0)
/* 065470 80064870 8FBF001C */ lw $ra, 0x1c($sp)
/* 065474 80064874 8FB00018 */ lw $s0, 0x18($sp)
/* 065478 80064878 8FA2002C */ lw $v0, 0x2c($sp)
/* 06547C 8006487C 03E00008 */ jr $ra
/* 065480 80064880 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,107 +0,0 @@
glabel _loadBuffer
/* 0650A0 800644A0 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 0650A4 800644A4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0650A8 800644A8 AFB00018 */ sw $s0, 0x18($sp)
/* 0650AC 800644AC AFA40060 */ sw $a0, 0x60($sp)
/* 0650B0 800644B0 AFA60068 */ sw $a2, 0x68($sp)
/* 0650B4 800644B4 AFA7006C */ sw $a3, 0x6c($sp)
/* 0650B8 800644B8 8C83001C */ lw $v1, 0x1c($a0)
/* 0650BC 800644BC 8C820014 */ lw $v0, 0x14($a0)
/* 0650C0 800644C0 00037840 */ sll $t7, $v1, 1
/* 0650C4 800644C4 00A2082B */ sltu $at, $a1, $v0
/* 0650C8 800644C8 10200002 */ beqz $at, .L800644D4
/* 0650CC 800644CC 004F4021 */ addu $t0, $v0, $t7
/* 0650D0 800644D0 00AF2821 */ addu $a1, $a1, $t7
.L800644D4:
/* 0650D4 800644D4 8FA6006C */ lw $a2, 0x6c($sp)
/* 0650D8 800644D8 8FAE0070 */ lw $t6, 0x70($sp)
/* 0650DC 800644DC 0006C040 */ sll $t8, $a2, 1
/* 0650E0 800644E0 03053821 */ addu $a3, $t8, $a1
/* 0650E4 800644E4 0107082B */ sltu $at, $t0, $a3
/* 0650E8 800644E8 10200037 */ beqz $at, .L800645C8
/* 0650EC 800644EC 03003025 */ move $a2, $t8
/* 0650F0 800644F0 8FB90070 */ lw $t9, 0x70($sp)
/* 0650F4 800644F4 8FAB0068 */ lw $t3, 0x68($sp)
/* 0650F8 800644F8 01054823 */ subu $t1, $t0, $a1
/* 0650FC 800644FC 00097043 */ sra $t6, $t1, 1
/* 065100 80064500 000E7840 */ sll $t7, $t6, 1
/* 065104 80064504 3C010800 */ lui $at, 0x800
/* 065108 80064508 316CFFFF */ andi $t4, $t3, 0xffff
/* 06510C 8006450C 01816825 */ or $t5, $t4, $at
/* 065110 80064510 31F8FFFF */ andi $t8, $t7, 0xffff
/* 065114 80064514 27300008 */ addiu $s0, $t9, 8
/* 065118 80064518 AF380004 */ sw $t8, 4($t9)
/* 06511C 8006451C AF2D0000 */ sw $t5, ($t9)
/* 065120 80064520 3C190400 */ lui $t9, 0x400
/* 065124 80064524 02005025 */ move $t2, $s0
/* 065128 80064528 AD590000 */ sw $t9, ($t2)
/* 06512C 8006452C AFAA0044 */ sw $t2, 0x44($sp)
/* 065130 80064530 AFAF0024 */ sw $t7, 0x24($sp)
/* 065134 80064534 AFA8004C */ sw $t0, 0x4c($sp)
/* 065138 80064538 AFA70028 */ sw $a3, 0x28($sp)
/* 06513C 8006453C AFA6002C */ sw $a2, 0x2c($sp)
/* 065140 80064540 26100008 */ addiu $s0, $s0, 8
/* 065144 80064544 0C03233C */ jal osVirtualToPhysical
/* 065148 80064548 00A02025 */ move $a0, $a1
/* 06514C 8006454C 8FAA0044 */ lw $t2, 0x44($sp)
/* 065150 80064550 8FA70028 */ lw $a3, 0x28($sp)
/* 065154 80064554 8FA8004C */ lw $t0, 0x4c($sp)
/* 065158 80064558 8FA90024 */ lw $t1, 0x24($sp)
/* 06515C 8006455C AD420004 */ sw $v0, 4($t2)
/* 065160 80064560 8FAB0068 */ lw $t3, 0x68($sp)
/* 065164 80064564 00E87823 */ subu $t7, $a3, $t0
/* 065168 80064568 000FC043 */ sra $t8, $t7, 1
/* 06516C 8006456C 02001825 */ move $v1, $s0
/* 065170 80064570 012B6021 */ addu $t4, $t1, $t3
/* 065174 80064574 318DFFFF */ andi $t5, $t4, 0xffff
/* 065178 80064578 0018C840 */ sll $t9, $t8, 1
/* 06517C 8006457C 3C010800 */ lui $at, 0x800
/* 065180 80064580 01A17025 */ or $t6, $t5, $at
/* 065184 80064584 332BFFFF */ andi $t3, $t9, 0xffff
/* 065188 80064588 26100008 */ addiu $s0, $s0, 8
/* 06518C 8006458C AC6B0004 */ sw $t3, 4($v1)
/* 065190 80064590 AC6E0000 */ sw $t6, ($v1)
/* 065194 80064594 02002825 */ move $a1, $s0
/* 065198 80064598 3C0C0400 */ lui $t4, 0x400
/* 06519C 8006459C ACAC0000 */ sw $t4, ($a1)
/* 0651A0 800645A0 8FAD0060 */ lw $t5, 0x60($sp)
/* 0651A4 800645A4 26100008 */ addiu $s0, $s0, 8
/* 0651A8 800645A8 8DA40014 */ lw $a0, 0x14($t5)
/* 0651AC 800645AC 0C03233C */ jal osVirtualToPhysical
/* 0651B0 800645B0 AFA5003C */ sw $a1, 0x3c($sp)
/* 0651B4 800645B4 8FA5003C */ lw $a1, 0x3c($sp)
/* 0651B8 800645B8 8FA6002C */ lw $a2, 0x2c($sp)
/* 0651BC 800645BC ACA20004 */ sw $v0, 4($a1)
/* 0651C0 800645C0 10000014 */ b .L80064614
/* 0651C4 800645C4 30C7FFFF */ andi $a3, $a2, 0xffff
.L800645C8:
/* 0651C8 800645C8 8FAF0068 */ lw $t7, 0x68($sp)
/* 0651CC 800645CC 3C010800 */ lui $at, 0x800
/* 0651D0 800645D0 31F8FFFF */ andi $t8, $t7, 0xffff
/* 0651D4 800645D4 0301C825 */ or $t9, $t8, $at
/* 0651D8 800645D8 25D00008 */ addiu $s0, $t6, 8
/* 0651DC 800645DC 30C7FFFF */ andi $a3, $a2, 0xffff
/* 0651E0 800645E0 ADC70004 */ sw $a3, 4($t6)
/* 0651E4 800645E4 ADD90000 */ sw $t9, ($t6)
/* 0651E8 800645E8 02001825 */ move $v1, $s0
/* 0651EC 800645EC 3C0B0400 */ lui $t3, 0x400
/* 0651F0 800645F0 AC6B0000 */ sw $t3, ($v1)
/* 0651F4 800645F4 AFA70028 */ sw $a3, 0x28($sp)
/* 0651F8 800645F8 AFA30034 */ sw $v1, 0x34($sp)
/* 0651FC 800645FC 26100008 */ addiu $s0, $s0, 8
/* 065200 80064600 0C03233C */ jal osVirtualToPhysical
/* 065204 80064604 00A02025 */ move $a0, $a1
/* 065208 80064608 8FA30034 */ lw $v1, 0x34($sp)
/* 06520C 8006460C 8FA70028 */ lw $a3, 0x28($sp)
/* 065210 80064610 AC620004 */ sw $v0, 4($v1)
.L80064614:
/* 065214 80064614 02001825 */ move $v1, $s0
/* 065218 80064618 3C0C0800 */ lui $t4, 0x800
/* 06521C 8006461C AC6C0000 */ sw $t4, ($v1)
/* 065220 80064620 AC670004 */ sw $a3, 4($v1)
/* 065224 80064624 8FBF001C */ lw $ra, 0x1c($sp)
/* 065228 80064628 26020008 */ addiu $v0, $s0, 8
/* 06522C 8006462C 8FB00018 */ lw $s0, 0x18($sp)
/* 065230 80064630 03E00008 */ jr $ra
/* 065234 80064634 27BD0060 */ addiu $sp, $sp, 0x60
@@ -1,107 +0,0 @@
glabel _saveBuffer
/* 065238 80064638 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 06523C 8006463C AFBF001C */ sw $ra, 0x1c($sp)
/* 065240 80064640 AFB00018 */ sw $s0, 0x18($sp)
/* 065244 80064644 AFA40060 */ sw $a0, 0x60($sp)
/* 065248 80064648 AFA60068 */ sw $a2, 0x68($sp)
/* 06524C 8006464C AFA7006C */ sw $a3, 0x6c($sp)
/* 065250 80064650 8C83001C */ lw $v1, 0x1c($a0)
/* 065254 80064654 8C820014 */ lw $v0, 0x14($a0)
/* 065258 80064658 00037840 */ sll $t7, $v1, 1
/* 06525C 8006465C 00A2082B */ sltu $at, $a1, $v0
/* 065260 80064660 10200002 */ beqz $at, .L8006466C
/* 065264 80064664 004F4021 */ addu $t0, $v0, $t7
/* 065268 80064668 00AF2821 */ addu $a1, $a1, $t7
.L8006466C:
/* 06526C 8006466C 8FA6006C */ lw $a2, 0x6c($sp)
/* 065270 80064670 8FB90070 */ lw $t9, 0x70($sp)
/* 065274 80064674 0006C040 */ sll $t8, $a2, 1
/* 065278 80064678 03053821 */ addu $a3, $t8, $a1
/* 06527C 8006467C 0107082B */ sltu $at, $t0, $a3
/* 065280 80064680 1020003C */ beqz $at, .L80064774
/* 065284 80064684 03003025 */ move $a2, $t8
/* 065288 80064688 8FA20070 */ lw $v0, 0x70($sp)
/* 06528C 8006468C 3C0B0800 */ lui $t3, 0x800
/* 065290 80064690 01054823 */ subu $t1, $t0, $a1
/* 065294 80064694 AC4B0000 */ sw $t3, ($v0)
/* 065298 80064698 8FAF0068 */ lw $t7, 0x68($sp)
/* 06529C 8006469C 00096043 */ sra $t4, $t1, 1
/* 0652A0 800646A0 000C6840 */ sll $t5, $t4, 1
/* 0652A4 800646A4 31B9FFFF */ andi $t9, $t5, 0xffff
/* 0652A8 800646A8 000FC400 */ sll $t8, $t7, 0x10
/* 0652AC 800646AC 03195825 */ or $t3, $t8, $t9
/* 0652B0 800646B0 24500008 */ addiu $s0, $v0, 8
/* 0652B4 800646B4 02005025 */ move $t2, $s0
/* 0652B8 800646B8 3C0C0600 */ lui $t4, 0x600
/* 0652BC 800646BC AC4B0004 */ sw $t3, 4($v0)
/* 0652C0 800646C0 AD4C0000 */ sw $t4, ($t2)
/* 0652C4 800646C4 AFAA0044 */ sw $t2, 0x44($sp)
/* 0652C8 800646C8 AFAD0024 */ sw $t5, 0x24($sp)
/* 0652CC 800646CC AFA8004C */ sw $t0, 0x4c($sp)
/* 0652D0 800646D0 AFA70028 */ sw $a3, 0x28($sp)
/* 0652D4 800646D4 AFA6002C */ sw $a2, 0x2c($sp)
/* 0652D8 800646D8 26100008 */ addiu $s0, $s0, 8
/* 0652DC 800646DC 0C03233C */ jal osVirtualToPhysical
/* 0652E0 800646E0 00A02025 */ move $a0, $a1
/* 0652E4 800646E4 8FAA0044 */ lw $t2, 0x44($sp)
/* 0652E8 800646E8 8FA70028 */ lw $a3, 0x28($sp)
/* 0652EC 800646EC 8FA8004C */ lw $t0, 0x4c($sp)
/* 0652F0 800646F0 8FA90024 */ lw $t1, 0x24($sp)
/* 0652F4 800646F4 02001825 */ move $v1, $s0
/* 0652F8 800646F8 3C0D0800 */ lui $t5, 0x800
/* 0652FC 800646FC AD420004 */ sw $v0, 4($t2)
/* 065300 80064700 AC6D0000 */ sw $t5, ($v1)
/* 065304 80064704 8FAE0068 */ lw $t6, 0x68($sp)
/* 065308 80064708 00E85823 */ subu $t3, $a3, $t0
/* 06530C 8006470C 000B6043 */ sra $t4, $t3, 1
/* 065310 80064710 012EC021 */ addu $t8, $t1, $t6
/* 065314 80064714 000C6840 */ sll $t5, $t4, 1
/* 065318 80064718 31AEFFFF */ andi $t6, $t5, 0xffff
/* 06531C 8006471C 0018CC00 */ sll $t9, $t8, 0x10
/* 065320 80064720 032E7825 */ or $t7, $t9, $t6
/* 065324 80064724 26100008 */ addiu $s0, $s0, 8
/* 065328 80064728 AC6F0004 */ sw $t7, 4($v1)
/* 06532C 8006472C 02002825 */ move $a1, $s0
/* 065330 80064730 3C180600 */ lui $t8, 0x600
/* 065334 80064734 ACB80000 */ sw $t8, ($a1)
/* 065338 80064738 8FAB0060 */ lw $t3, 0x60($sp)
/* 06533C 8006473C 26100008 */ addiu $s0, $s0, 8
/* 065340 80064740 8D640014 */ lw $a0, 0x14($t3)
/* 065344 80064744 0C03233C */ jal osVirtualToPhysical
/* 065348 80064748 AFA5003C */ sw $a1, 0x3c($sp)
/* 06534C 8006474C 8FA6002C */ lw $a2, 0x2c($sp)
/* 065350 80064750 8FA5003C */ lw $a1, 0x3c($sp)
/* 065354 80064754 02001825 */ move $v1, $s0
/* 065358 80064758 3C0C0800 */ lui $t4, 0x800
/* 06535C 8006475C 30CDFFFF */ andi $t5, $a2, 0xffff
/* 065360 80064760 ACA20004 */ sw $v0, 4($a1)
/* 065364 80064764 AC6D0004 */ sw $t5, 4($v1)
/* 065368 80064768 AC6C0000 */ sw $t4, ($v1)
/* 06536C 8006476C 10000013 */ b .L800647BC
/* 065370 80064770 26100008 */ addiu $s0, $s0, 8
.L80064774:
/* 065374 80064774 3C0E0800 */ lui $t6, 0x800
/* 065378 80064778 AF2E0000 */ sw $t6, ($t9)
/* 06537C 8006477C 8FB80068 */ lw $t8, 0x68($sp)
/* 065380 80064780 30CCFFFF */ andi $t4, $a2, 0xffff
/* 065384 80064784 00185C00 */ sll $t3, $t8, 0x10
/* 065388 80064788 016C6825 */ or $t5, $t3, $t4
/* 06538C 8006478C 27300008 */ addiu $s0, $t9, 8
/* 065390 80064790 AF2D0004 */ sw $t5, 4($t9)
/* 065394 80064794 3C190600 */ lui $t9, 0x600
/* 065398 80064798 02001825 */ move $v1, $s0
/* 06539C 8006479C AC790000 */ sw $t9, ($v1)
/* 0653A0 800647A0 AFA30030 */ sw $v1, 0x30($sp)
/* 0653A4 800647A4 26100008 */ addiu $s0, $s0, 8
/* 0653A8 800647A8 0C03233C */ jal osVirtualToPhysical
/* 0653AC 800647AC 00A02025 */ move $a0, $a1
/* 0653B0 800647B0 8FA30030 */ lw $v1, 0x30($sp)
/* 0653B4 800647B4 00000000 */ nop
/* 0653B8 800647B8 AC620004 */ sw $v0, 4($v1)
.L800647BC:
/* 0653BC 800647BC 8FBF001C */ lw $ra, 0x1c($sp)
/* 0653C0 800647C0 02001025 */ move $v0, $s0
/* 0653C4 800647C4 8FB00018 */ lw $s0, 0x18($sp)
/* 0653C8 800647C8 03E00008 */ jr $ra
/* 0653CC 800647CC 27BD0060 */ addiu $sp, $sp, 0x60
+49 -4
View File
@@ -30,8 +30,55 @@ 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")
GLOBAL_ASM("asm/non_matchings/unknown_064830/_loadBuffer.s")
//GLOBAL_ASM("asm/non_matchings/unknown_064830/_saveBuffer.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
* space, If the load goes past the end of r->base it will wrap around.
* Cause count bytes of data at curr_ptr (within the delay line) to be
* loaded into buff. (Buff is a dmem buffer)
*/
Acmd *_loadBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p)
{
Acmd *ptr = p;
s32 after_end, before_end;
s16 *updated_ptr, *delay_end;
#ifdef AUD_PROFILE
lastCnt[++cnt_index] = osGetCount();
#endif
delay_end = &r->base[r->length];
#ifdef _DEBUG
if(curr_ptr > delay_end)
__osError(ERR_ALMODDELAYOVERFLOW, 1, delay_end - curr_ptr);
#endif
if (curr_ptr < r->base)
curr_ptr += r->length;
updated_ptr = curr_ptr + count;
if (updated_ptr > delay_end) {
after_end = updated_ptr - delay_end;
before_end = delay_end - curr_ptr;
aSetBuffer(ptr++, 0, buff, 0, before_end<<1);
aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr));
aSetBuffer(ptr++, 0, buff+(before_end<<1), 0, after_end<<1);
aLoadBuffer(ptr++, osVirtualToPhysical(r->base));
} else {
aSetBuffer(ptr++, 0, buff, 0, count<<1);
aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr));
}
aSetBuffer(ptr++, 0, 0, 0, count<<1);
#ifdef AUD_PROFILE
PROFILE_AUD(load_num, load_cnt, load_max, load_min);
#endif
return ptr;
}
/*
* This routine is for writing data to the delay line buff. If the
@@ -75,8 +122,6 @@ Acmd *_saveBuffer(ALFx *r, s16 *curr_ptr, s32 buff, s32 count, Acmd *p)
}
Acmd *_filterBuffer(ALLowPass *lp, s32 buff, s32 count, Acmd *p)
{
Acmd *ptr = p;