From 83ba1cf9add22c8f44f6b748adca868acbbba1ca Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Wed, 5 Aug 2020 23:42:17 -0500 Subject: [PATCH] c: _loadBuffer --- .../unknown_064830/_filterBuffer.s | 47 -------- .../unknown_064830/_loadBuffer.s | 107 ------------------ .../unknown_064830/_saveBuffer.s | 107 ------------------ src/unknown_064830.c | 53 ++++++++- 4 files changed, 49 insertions(+), 265 deletions(-) delete mode 100644 asm/non_matchings/unknown_064830/_filterBuffer.s delete mode 100644 asm/non_matchings/unknown_064830/_loadBuffer.s delete mode 100644 asm/non_matchings/unknown_064830/_saveBuffer.s diff --git a/asm/non_matchings/unknown_064830/_filterBuffer.s b/asm/non_matchings/unknown_064830/_filterBuffer.s deleted file mode 100644 index 2a76ae02..00000000 --- a/asm/non_matchings/unknown_064830/_filterBuffer.s +++ /dev/null @@ -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 - diff --git a/asm/non_matchings/unknown_064830/_loadBuffer.s b/asm/non_matchings/unknown_064830/_loadBuffer.s deleted file mode 100644 index bd49e065..00000000 --- a/asm/non_matchings/unknown_064830/_loadBuffer.s +++ /dev/null @@ -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 - diff --git a/asm/non_matchings/unknown_064830/_saveBuffer.s b/asm/non_matchings/unknown_064830/_saveBuffer.s deleted file mode 100644 index be3e1aad..00000000 --- a/asm/non_matchings/unknown_064830/_saveBuffer.s +++ /dev/null @@ -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 - diff --git a/src/unknown_064830.c b/src/unknown_064830.c index e007ea42..a0f84c20 100644 --- a/src/unknown_064830.c +++ b/src/unknown_064830.c @@ -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;