1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-09 08:20:17 +00:00

Match func_800DDB64

This commit is contained in:
zelda2774 2021-08-22 23:32:59 +02:00
parent a75c70358c
commit b97a369236
3 changed files with 47 additions and 238 deletions

View file

@ -1,189 +0,0 @@
glabel func_800DDB64
/* B54D04 800DDB64 8FAE0014 */ lw $t6, 0x14($sp)
/* B54D08 800DDB68 24090001 */ li $t1, 1
/* B54D0C 800DDB6C 24010002 */ li $at, 2
/* B54D10 800DDB70 11C90005 */ beq $t6, $t1, .L800DDB88
/* B54D14 800DDB74 24080940 */ li $t0, 2368
/* B54D18 800DDB78 11C10008 */ beq $t6, $at, .L800DDB9C
/* B54D1C 800DDB7C 24080AE0 */ li $t0, 2784
/* B54D20 800DDB80 03E00008 */ jr $ra
/* B54D24 800DDB84 00801025 */ move $v0, $a0
.L800DDB88:
/* B54D28 800DDB88 90A30003 */ lbu $v1, 3($a1)
/* B54D2C 800DDB8C 90C20002 */ lbu $v0, 2($a2)
/* B54D30 800DDB90 A0C00003 */ sb $zero, 3($a2)
/* B54D34 800DDB94 10000008 */ b .L800DDBB8
/* B54D38 800DDB98 A0C30002 */ sb $v1, 2($a2)
.L800DDB9C:
/* B54D3C 800DDB9C 90A30004 */ lbu $v1, 4($a1)
/* B54D40 800DDBA0 90C20003 */ lbu $v0, 3($a2)
/* B54D44 800DDBA4 A0C00002 */ sb $zero, 2($a2)
/* B54D48 800DDBA8 10000003 */ b .L800DDBB8
/* B54D4C 800DDBAC A0C30003 */ sb $v1, 3($a2)
/* B54D50 800DDBB0 03E00008 */ jr $ra
/* B54D54 800DDBB4 00801025 */ move $v0, $a0
.L800DDBB8:
/* B54D58 800DDBB8 8FAF0010 */ lw $t7, 0x10($sp)
/* B54D5C 800DDBBC 3C180200 */ lui $t8, (0x020005C0 >> 16) # lui $t8, 0x200
/* B54D60 800DDBC0 3C0103C0 */ lui $at, 0x3c0
/* B54D64 800DDBC4 11E9005D */ beq $t7, $t1, .L800DDD3C
/* B54D68 800DDBC8 371805C0 */ ori $t8, (0x020005C0 & 0xFFFF) # ori $t8, $t8, 0x5c0
/* B54D6C 800DDBCC 00404825 */ move $t1, $v0
/* B54D70 800DDBD0 1043002B */ beq $v0, $v1, .L800DDC80
/* B54D74 800DDBD4 00602825 */ move $a1, $v1
/* B54D78 800DDBD8 00E51021 */ addu $v0, $a3, $a1
/* B54D7C 800DDBDC 00495023 */ subu $t2, $v0, $t1
/* B54D80 800DDBE0 3159FFFF */ andi $t9, $t2, 0xffff
/* B54D84 800DDBE4 3C0103C0 */ lui $at, 0x3c0
/* B54D88 800DDBE8 03216825 */ or $t5, $t9, $at
/* B54D8C 800DDBEC 3C180800 */ lui $t8, (0x080005C0 >> 16) # lui $t8, 0x800
/* B54D90 800DDBF0 000773C0 */ sll $t6, $a3, 0xf
/* B54D94 800DDBF4 371805C0 */ ori $t8, (0x080005C0 & 0xFFFF) # ori $t8, $t8, 0x5c0
/* B54D98 800DDBF8 00805825 */ move $t3, $a0
/* B54D9C 800DDBFC AD780000 */ sw $t8, ($t3)
/* B54DA0 800DDC00 AD6D0004 */ sw $t5, 4($t3)
/* B54DA4 800DDC04 2559FFFE */ addiu $t9, $t2, -2
/* B54DA8 800DDC08 24840008 */ addiu $a0, $a0, 8
/* B54DAC 800DDC0C 00806025 */ move $t4, $a0
/* B54DB0 800DDC10 AD800004 */ sw $zero, 4($t4)
/* B54DB4 800DDC14 24840008 */ addiu $a0, $a0, 8
/* B54DB8 800DDC18 05C10003 */ bgez $t6, .L800DDC28
/* B54DBC 800DDC1C 000E7843 */ sra $t7, $t6, 1
/* B54DC0 800DDC20 25C10001 */ addiu $at, $t6, 1
/* B54DC4 800DDC24 00017843 */ sra $t7, $at, 1
.L800DDC28:
/* B54DC8 800DDC28 25F8FFFF */ addiu $t8, $t7, -1
/* B54DCC 800DDC2C 07210003 */ bgez $t9, .L800DDC3C
/* B54DD0 800DDC30 00196843 */ sra $t5, $t9, 1
/* B54DD4 800DDC34 27210001 */ addiu $at, $t9, 1
/* B54DD8 800DDC38 00016843 */ sra $t5, $at, 1
.L800DDC3C:
/* B54DDC 800DDC3C 030D001A */ div $zero, $t8, $t5
/* B54DE0 800DDC40 15A00002 */ bnez $t5, .L800DDC4C
/* B54DE4 800DDC44 00000000 */ nop
/* B54DE8 800DDC48 0007000D */ break 7
.L800DDC4C:
/* B54DEC 800DDC4C 2401FFFF */ li $at, -1
/* B54DF0 800DDC50 15A10004 */ bne $t5, $at, .L800DDC64
/* B54DF4 800DDC54 3C018000 */ lui $at, 0x8000
/* B54DF8 800DDC58 17010002 */ bne $t8, $at, .L800DDC64
/* B54DFC 800DDC5C 00000000 */ nop
/* B54E00 800DDC60 0006000D */ break 6
.L800DDC64:
/* B54E04 800DDC64 00007012 */ mflo $t6
/* B54E08 800DDC68 31CFFFFF */ andi $t7, $t6, 0xffff
/* B54E0C 800DDC6C 31F9FFFF */ andi $t9, $t7, 0xffff
/* B54E10 800DDC70 3C010600 */ lui $at, 0x600
/* B54E14 800DDC74 0321C025 */ or $t8, $t9, $at
/* B54E18 800DDC78 1000000B */ b .L800DDCA8
/* B54E1C 800DDC7C AD980000 */ sw $t8, ($t4)
.L800DDC80:
/* B54E20 800DDC80 00805025 */ move $t2, $a0
/* B54E24 800DDC84 3C0D0A00 */ lui $t5, (0x0A0005C0 >> 16) # lui $t5, 0xa00
/* B54E28 800DDC88 30EEFFFF */ andi $t6, $a3, 0xffff
/* B54E2C 800DDC8C 3C0103C0 */ lui $at, 0x3c0
/* B54E30 800DDC90 01C17825 */ or $t7, $t6, $at
/* B54E34 800DDC94 35AD05C0 */ ori $t5, (0x0A0005C0 & 0xFFFF) # ori $t5, $t5, 0x5c0
/* B54E38 800DDC98 AD4D0000 */ sw $t5, ($t2)
/* B54E3C 800DDC9C AD4F0004 */ sw $t7, 4($t2)
/* B54E40 800DDCA0 24840008 */ addiu $a0, $a0, 8
/* B54E44 800DDCA4 00E51021 */ addu $v0, $a3, $a1
.L800DDCA8:
/* B54E48 800DDCA8 1120001B */ beqz $t1, .L800DDD18
/* B54E4C 800DDCAC 3C180A00 */ lui $t8, 0xa00
/* B54E50 800DDCB0 2539000F */ addiu $t9, $t1, 0xf
/* B54E54 800DDCB4 3338FFF0 */ andi $t8, $t9, 0xfff0
/* B54E58 800DDCB8 00186903 */ sra $t5, $t8, 4
/* B54E5C 800DDCBC 31AE00FF */ andi $t6, $t5, 0xff
/* B54E60 800DDCC0 000E7C00 */ sll $t7, $t6, 0x10
/* B54E64 800DDCC4 3C011400 */ lui $at, 0x1400
/* B54E68 800DDCC8 01E1C825 */ or $t9, $t7, $at
/* B54E6C 800DDCCC 373805C0 */ ori $t8, $t9, 0x5c0
/* B54E70 800DDCD0 00805025 */ move $t2, $a0
/* B54E74 800DDCD4 AD580000 */ sw $t8, ($t2)
/* B54E78 800DDCD8 8CCD000C */ lw $t5, 0xc($a2)
/* B54E7C 800DDCDC 24840008 */ addiu $a0, $a0, 8
/* B54E80 800DDCE0 3C0F0A00 */ lui $t7, (0x0A0003C0 >> 16) # lui $t7, 0xa00
/* B54E84 800DDCE4 25AE00A0 */ addiu $t6, $t5, 0xa0
/* B54E88 800DDCE8 AD4E0004 */ sw $t6, 4($t2)
/* B54E8C 800DDCEC 35EF03C0 */ ori $t7, (0x0A0003C0 & 0xFFFF) # ori $t7, $t7, 0x3c0
/* B54E90 800DDCF0 00805825 */ move $t3, $a0
/* B54E94 800DDCF4 AD6F0000 */ sw $t7, ($t3)
/* B54E98 800DDCF8 00497023 */ subu $t6, $v0, $t1
/* B54E9C 800DDCFC 253805C0 */ addiu $t8, $t1, 0x5c0
/* B54EA0 800DDD00 00186C00 */ sll $t5, $t8, 0x10
/* B54EA4 800DDD04 31CFFFFF */ andi $t7, $t6, 0xffff
/* B54EA8 800DDD08 01AFC825 */ or $t9, $t5, $t7
/* B54EAC 800DDD0C AD790004 */ sw $t9, 4($t3)
/* B54EB0 800DDD10 10000020 */ b .L800DDD94
/* B54EB4 800DDD14 24840008 */ addiu $a0, $a0, 8
.L800DDD18:
/* B54EB8 800DDD18 00804825 */ move $t1, $a0
/* B54EBC 800DDD1C 304EFFFF */ andi $t6, $v0, 0xffff
/* B54EC0 800DDD20 3C0105C0 */ lui $at, 0x5c0
/* B54EC4 800DDD24 01C16825 */ or $t5, $t6, $at
/* B54EC8 800DDD28 371803C0 */ ori $t8, $t8, 0x3c0
/* B54ECC 800DDD2C AD380000 */ sw $t8, ($t1)
/* B54ED0 800DDD30 AD2D0004 */ sw $t5, 4($t1)
/* B54ED4 800DDD34 10000017 */ b .L800DDD94
/* B54ED8 800DDD38 24840008 */ addiu $a0, $a0, 8
.L800DDD3C:
/* B54EDC 800DDD3C 00804825 */ move $t1, $a0
/* B54EE0 800DDD40 3C0F0A00 */ lui $t7, (0x0A0005C0 >> 16) # lui $t7, 0xa00
/* B54EE4 800DDD44 30E2FFFF */ andi $v0, $a3, 0xffff
/* B54EE8 800DDD48 0041C825 */ or $t9, $v0, $at
/* B54EEC 800DDD4C 35EF05C0 */ ori $t7, (0x0A0005C0 & 0xFFFF) # ori $t7, $t7, 0x5c0
/* B54EF0 800DDD50 24840008 */ addiu $a0, $a0, 8
/* B54EF4 800DDD54 AD2F0000 */ sw $t7, ($t1)
/* B54EF8 800DDD58 AD390004 */ sw $t9, 4($t1)
/* B54EFC 800DDD5C 00805025 */ move $t2, $a0
/* B54F00 800DDD60 24840008 */ addiu $a0, $a0, 8
/* B54F04 800DDD64 AD580000 */ sw $t8, ($t2)
/* B54F08 800DDD68 00805825 */ move $t3, $a0
/* B54F0C 800DDD6C 246F05C0 */ addiu $t7, $v1, 0x5c0
/* B54F10 800DDD70 AD430004 */ sw $v1, 4($t2)
/* B54F14 800DDD74 000FCC00 */ sll $t9, $t7, 0x10
/* B54F18 800DDD78 3C0E0A00 */ lui $t6, (0x0A0003C0 >> 16) # lui $t6, 0xa00
/* B54F1C 800DDD7C 35CE03C0 */ ori $t6, (0x0A0003C0 & 0xFFFF) # ori $t6, $t6, 0x3c0
/* B54F20 800DDD80 0322C025 */ or $t8, $t9, $v0
/* B54F24 800DDD84 AD780004 */ sw $t8, 4($t3)
/* B54F28 800DDD88 AD6E0000 */ sw $t6, ($t3)
/* B54F2C 800DDD8C 24840008 */ addiu $a0, $a0, 8
/* B54F30 800DDD90 00602825 */ move $a1, $v1
.L800DDD94:
/* B54F34 800DDD94 10600010 */ beqz $v1, .L800DDDD8
/* B54F38 800DDD98 00801025 */ move $v0, $a0
/* B54F3C 800DDD9C 24AE000F */ addiu $t6, $a1, 0xf
/* B54F40 800DDDA0 31CDFFF0 */ andi $t5, $t6, 0xfff0
/* B54F44 800DDDA4 000D7903 */ sra $t7, $t5, 4
/* B54F48 800DDDA8 31F900FF */ andi $t9, $t7, 0xff
/* B54F4C 800DDDAC 0019C400 */ sll $t8, $t9, 0x10
/* B54F50 800DDDB0 24ED05C0 */ addiu $t5, $a3, 0x5c0
/* B54F54 800DDDB4 3C011500 */ lui $at, 0x1500
/* B54F58 800DDDB8 03017025 */ or $t6, $t8, $at
/* B54F5C 800DDDBC 31AFFFFF */ andi $t7, $t5, 0xffff
/* B54F60 800DDDC0 01CFC825 */ or $t9, $t6, $t7
/* B54F64 800DDDC4 AC590000 */ sw $t9, ($v0)
/* B54F68 800DDDC8 8CD8000C */ lw $t8, 0xc($a2)
/* B54F6C 800DDDCC 24840008 */ addiu $a0, $a0, 8
/* B54F70 800DDDD0 270D00A0 */ addiu $t5, $t8, 0xa0
/* B54F74 800DDDD4 AC4D0004 */ sw $t5, 4($v0)
.L800DDDD8:
/* B54F78 800DDDD8 24EE003F */ addiu $t6, $a3, 0x3f
/* B54F7C 800DDDDC 31CFFFC0 */ andi $t7, $t6, 0xffc0
/* B54F80 800DDDE0 000FC903 */ sra $t9, $t7, 4
/* B54F84 800DDDE4 333800FF */ andi $t8, $t9, 0xff
/* B54F88 800DDDE8 00186C00 */ sll $t5, $t8, 0x10
/* B54F8C 800DDDEC 3C010400 */ lui $at, 0x400
/* B54F90 800DDDF0 01A17025 */ or $t6, $t5, $at
/* B54F94 800DDDF4 3C0105C0 */ lui $at, 0x5c0
/* B54F98 800DDDF8 3119FFFF */ andi $t9, $t0, 0xffff
/* B54F9C 800DDDFC 0321C025 */ or $t8, $t9, $at
/* B54FA0 800DDE00 35CF7FFF */ ori $t7, $t6, 0x7fff
/* B54FA4 800DDE04 AC8F0000 */ sw $t7, ($a0)
/* B54FA8 800DDE08 AC980004 */ sw $t8, 4($a0)
/* B54FAC 800DDE0C 24820008 */ addiu $v0, $a0, 8
/* B54FB0 800DDE10 03E00008 */ jr $ra
/* B54FB4 800DDE14 00000000 */ nop

View file

@ -73,17 +73,17 @@ typedef struct {
} Portamento; // size = 0xC
typedef struct {
/*?0x0 */ s16 delay;
/*?0x2 */ s16 arg;
} AdsrEnvelope; // size = 0x4?
/* 0x0 */ s16 delay;
/* 0x2 */ s16 arg;
} AdsrEnvelope; // size = 0x4
typedef struct {
/*?0x00 */ u32 start;
/* 0x00 */ u32 start;
/* 0x04 */ u32 end;
/*?0x08 */ u32 count;
/* 0x08 */ u32 count;
/*?0x0C */ char unk_0C[0x4];
/*?0x10 */ s16 state[16]; // only exists if count != 0. 8-byte aligned
} AdpcmLoop; // size = 0x30
} AdpcmLoop; // size = 0x30 (or 0x10)
typedef struct {
/*?0x00 */ s32 order;
@ -206,7 +206,7 @@ typedef struct {
/* 0x19 */ s8 value;
} M64ScriptState; // size = 0x1C
// Also known as a Group, according to sm64 debug strings.
// Also known as a Group, according to debug strings.
typedef struct {
union {
s32 playerState;
@ -332,7 +332,7 @@ typedef struct {
/* 0x14 */ s16 unk_14[8];
} NoteAttributes; // size = 0x24
// Also known as a SubTrack, according to sm64 debug strings.
// Also known as a SubTrack, according to debug strings.
// Confusingly, a SubTrack is a container of Tracks.
typedef struct SequenceChannel {
union {
@ -402,7 +402,7 @@ typedef struct SequenceChannel {
/* 0xD0 */ ReverbBits reverbBits;
} SequenceChannel; // size = 0xD4
// Also known as a Track, according to sm64 debug strings.
// Also known as a Track, according to debug strings.
typedef struct SequenceChannelLayer {
/* 0x00 */ u8 enabled : 1;
/* 0x00 */ u8 finished : 1;
@ -454,17 +454,17 @@ typedef struct {
} NoteSynthesisBuffers; // size = 0x110
typedef struct {
/*?0x00 */ u8 restart;
/* 0x00 */ u8 restart;
/*?0x01 */ u8 sampleDmaIndex;
/*?0x02 */ u8 prevHeadsetPanRight;
/*?0x03 */ u8 prevHeadsetPanLeft;
/*?0x04 */ u8 samplePosFrac;
/* 0x05 */ u8 unk_05;
/* 0x06 */ u16 unk_06;
/*?0x08 */ s32 samplePosInt;
/* 0x08 */ s32 samplePosInt;
/* 0x0C */ NoteSynthesisBuffers* synthesisBuffers;
/*?0x10 */ s16 curVolLeft;
/*?0x12 */ s16 curVolRight;
/* 0x10 */ s16 curVolLeft;
/* 0x12 */ s16 curVolRight;
/* 0x14 */ u16 unk_14;
/* 0x16 */ u16 unk_16;
/* 0x18 */ u16 unk_18;
@ -480,7 +480,7 @@ typedef struct {
/* 0x0C */ f32 extent;
/* 0x10 */ f32 rate;
/* 0x14 */ u8 active;
/*!0x16 */ u16 rateChangeTimer;
/* 0x16 */ u16 rateChangeTimer;
/* 0x18 */ u16 extentChangeTimer;
/* 0x1A */ u16 delay;
} VibratoState; // size = 0x1C
@ -495,7 +495,7 @@ typedef struct {
/* 0x06 */ s16 adsrVolScale; // unused?
/* 0x08 */ f32 portamentoFreqScale;
/* 0x0C */ f32 vibratoFreqScale;
/*?0x10 */ SequenceChannelLayer* prevParentLayer;
/* 0x10 */ SequenceChannelLayer* prevParentLayer;
/* 0x14 */ SequenceChannelLayer* parentLayer;
/* 0x18 */ SequenceChannelLayer* wantedParentLayer;
/* 0x1C */ NoteAttributes attributes;
@ -548,7 +548,7 @@ typedef struct {
typedef struct Note {
/* 0x00 */ AudioListItem listItem;
/*?0x10 */ NoteSynthesisState synthesisState;
/* 0x10 */ NoteSynthesisState synthesisState;
/* 0x30 */ NotePlaybackState playbackState;
/* 0x90 */ Portamento portamento;
/* 0x9C */ VibratoState vibratoState;

View file

@ -8,7 +8,7 @@ Acmd* func_800DC384(s16* aiBuf, s32 aiBufLen, Acmd* cmd, s32 updateIdx);
Acmd* func_800DC910(s32 noteIdx, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s16* aiBuf, s32 aiBufLen,
Acmd* cmd, s32 updateIdx);
Acmd* func_800DD9F4(Acmd* arg0, NoteSubEu* arg1, NoteSynthesisState* arg2, s32 arg3);
Acmd* func_800DDB64(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s32 arg3, s32 arg4, s32 arg5);
Acmd* func_800DDB64(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s32 bufLen, s32 flags, s32 side);
Acmd* func_800DD6CC(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s32 aiBufLen, u16, s32, s32);
Acmd* func_800DD62C(Acmd* cmd, NoteSynthesisState* synthState, s32 count, u16 pitch, u16 inpDmem, s32 resampleFlags);
extern s16 D_8012FBAA[];
@ -1139,57 +1139,55 @@ Acmd* func_800DD9F4(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthSt
return cmd;
}
#ifdef NON_MATCHING
Acmd* func_800DDB64(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s32 arg3, s32 arg4, s32 arg5) {
s32 phi_v0;
s32 phi_v1;
s32 phi_t0;
Acmd* func_800DDB64(Acmd* cmd, NoteSubEu* noteSubEu, NoteSynthesisState* synthState, s32 bufLen, s32 flags, s32 side) {
u16 dest;
u16 pitch;
u8 prevPanShift;
u8 panShift;
switch (arg5) {
switch (side) {
case 1:
phi_t0 = 0x940;
phi_v1 = noteSubEu->headsetPanRight;
phi_v0 = synthState->prevHeadsetPanRight;
dest = 0x940;
panShift = noteSubEu->headsetPanRight;
prevPanShift = synthState->prevHeadsetPanRight;
synthState->prevHeadsetPanLeft = 0;
synthState->prevHeadsetPanRight = phi_v1;
synthState->prevHeadsetPanRight = panShift;
break;
case 2:
phi_t0 = 0xAE0;
phi_v1 = noteSubEu->headsetPanLeft;
phi_v0 = synthState->prevHeadsetPanLeft;
synthState->prevHeadsetPanLeft = phi_v1;
dest = 0xAE0;
panShift = noteSubEu->headsetPanLeft;
prevPanShift = synthState->prevHeadsetPanLeft;
synthState->prevHeadsetPanLeft = panShift;
synthState->prevHeadsetPanRight = 0;
break;
default:
return cmd;
}
if (arg4 != 1) {
if (phi_v0 != phi_v1) {
aSetBuffer(cmd++, 0, 0x5C0, 0x3C0, arg3 + phi_v1 - phi_v0);
aResampleZOH(cmd++, (u16)((((arg3 << 0xF) / 2) - 1) / ((arg3 + phi_v1 - phi_v0 - 2) / 2)), 0);
if (flags != 1) {
if (panShift != prevPanShift) {
pitch = (((bufLen << 0xF) / 2) - 1) / ((bufLen + panShift - prevPanShift - 2) / 2);
aSetBuffer(cmd++, 0, 0x5C0, 0x3C0, bufLen + panShift - prevPanShift);
aResampleZOH(cmd++, pitch, 0);
} else {
aDMEMMove(cmd++, 0x5C0, 0x3C0, arg3);
aDMEMMove(cmd++, 0x5C0, 0x3C0, bufLen);
}
if (phi_v0 != 0) {
aLoadBuffer(cmd++, &synthState->synthesisBuffers->panResampleState[0x8], 0x5C0, ALIGN16(phi_v0));
aDMEMMove(cmd++, 0x3C0, 0x5C0 + phi_v0, arg3 + phi_v1 - phi_v0);
if (prevPanShift != 0) {
aLoadBuffer(cmd++, &synthState->synthesisBuffers->panResampleState[0x8], 0x5C0, ALIGN16(prevPanShift));
aDMEMMove(cmd++, 0x3C0, 0x5C0 + prevPanShift, bufLen + panShift - prevPanShift);
} else {
aDMEMMove(cmd++, 0x3C0, 0x5C0, arg3 + phi_v1);
aDMEMMove(cmd++, 0x3C0, 0x5C0, bufLen + panShift);
}
} else {
aDMEMMove(cmd++, 0x5C0, 0x3C0, arg3);
aClearBuffer(cmd++, 0x5C0, phi_v1);
aDMEMMove(cmd++, 0x3C0, 0x5C0 + phi_v1, arg3);
aDMEMMove(cmd++, 0x5C0, 0x3C0, bufLen);
aClearBuffer(cmd++, 0x5C0, panShift);
aDMEMMove(cmd++, 0x3C0, 0x5C0 + panShift, bufLen);
}
if (phi_v1 != 0) {
aSaveBuffer(cmd++, 0x5C0 + arg3, &synthState->synthesisBuffers->panResampleState[0x8], ALIGN16(phi_v1));
if (panShift) {
aSaveBuffer(cmd++, 0x5C0 + bufLen, &synthState->synthesisBuffers->panResampleState[0x8], ALIGN16(panShift));
}
aAddMixer(cmd++, ((arg3 + 0x3F) & ~0x3F), 0x5C0, phi_t0, 0x7FFF);
aAddMixer(cmd++, ((bufLen + 0x3F) & ~0x3F), 0x5C0, dest, 0x7FFF);
return cmd;
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/audio_synthesis/func_800DDB64.s")
#endif