diff options
| author | XTra.KrazzY <XTra.KrazzY@gmail.com> | 2009-07-01 18:05:54 +0000 |
|---|---|---|
| committer | XTra.KrazzY <XTra.KrazzY@gmail.com> | 2009-07-01 18:05:54 +0000 |
| commit | 7d7e2ec8a86d562ac0e1de0fa6bcb3661323b9c1 (patch) | |
| tree | b1d4da50d35a50d60079845cfbc8894585b82bc2 /docs/DSP | |
| parent | 71556f77f630bc331a9fdd3ee945833a56cf48ed (diff) | |
Added the Zelda UCode preliminary synthesizer. It's far from perfect, but it sounds like the exact pitch it should synth. I'd be glad if someone finished it.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3630 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'docs/DSP')
| -rw-r--r-- | docs/DSP/DSP_UC_Zelda.txt | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/docs/DSP/DSP_UC_Zelda.txt b/docs/DSP/DSP_UC_Zelda.txt index 1a62b2a1c4..066b6e46d2 100644 --- a/docs/DSP/DSP_UC_Zelda.txt +++ b/docs/DSP/DSP_UC_Zelda.txt @@ -2915,37 +2915,51 @@ void 08b2_Unk() { 08b2 1401 lsl $ACC0, #1 // t = PB.RatioFrac * 2
// Set up sound buffers
- 08b3 009b c000 lri $AX1.H, #0xc000 // a = 0xc000
- 08b5 0099 4000 lri $AX1.L, #0x4000 // b = 0x4000
-
- 08b7 1150 08bf bloopi #0x50, 0x08bf
- // for(int i = 0; i < 80; i++) {
- 08b9 02c0 0001 andcf $AC0.M, #0x0001
- 08bb 027c iflnz
- 08bc 1b1b srri @$AR0, $AX1.H
- 08bd 027d iflz
- 08be 1b19 srri @$AR0, $AX1.L
- 08bf 4800 addax $ACC0, $AX0.L
- // }
- 08c0 147f lsr $ACC0, #-1
+ //08b3 009b c000 lri $AX1.H, #0xc000
+ //08b5 0099 4000 lri $AX1.L, #0x4000
+
+ //08b7 1150 08bf bloopi #0x50, 0x08bf
+ for(int i = 0; i < 80; i++) {
+ //08b9 02c0 0001 andcf $AC0.M, #0x0001
+ //08bb 027c iflnz
+ // 08bc 1b1b srri @$AR0, $AX1.H
+ //08bd 027d iflz
+ // 08be 1b19 srri @$AR0, $AX1.L
+ if(($AC0.M & 1) == 1)
+ *$AR0++ = 0x4000;
+ else
+ *$AR0++ = 0xc000;
+
+ 08bf 4800 addax $ACC0, $AX0.L // t += PB.RatioInt
+ }
+ 08c0 147f lsr $ACC0, #-1 // t /= 2
08c1 02df ret
}
void 08c2_Unk() {
- 08c2 1402 lsl $ACC0, #2
- 08c3 8900 clr $ACC1
- 08c4 1fb8 mrr $AC1.L, $AX0.L
- 08c5 1501 lsl $ACC1, #1
+ 08c2 1402 lsl $ACC0, #2 // t = PB.RatioFrac * 4
+ 08c3 8900 clr $ACC1 // ACC1 = 0
+ 08c4 1fb8 mrr $AC1.L, $AX0.L // AC1.L = PB.RatioInt
+ 08c5 1501 lsl $ACC1, #1 // ACC1 *= 2
08c6 009b c000 lri $AX1.H, #0xc000
08c8 0099 4000 lri $AX1.L, #0x4000
- 08ca 1150 08d2 bloopi #0x50, 0x08d2
- 08cc 02c0 0003 andcf $AC0.M, #0x0003
- 08ce 027c iflnz
- 08cf 1b1b srri @$AR0, $AX1.H
- 08d0 027d iflz
- 08d1 1b19 srri @$AR0, $AX1.L
- 08d2 4c00 add $ACC0, $AC1.L
- 08d3 147e lsr $ACC0, #-2
+ //08ca 1150 08d2 bloopi #0x50, 0x08d2
+ for(int i = 0; i < 80; i++) {
+ //08cc 02c0 0003 andcf $AC0.M, #0x0003
+ //08ce 027c iflnz
+ // 08cf 1b1b srri @$AR0, $AX1.H
+ //08d0 027d iflz
+ // 08d1 1b19 srri @$AR0, $AX1.L
+ //08d2 4c00 add $ACC0, $AC1.L
+
+ if(($AC0.M & 3) == 3)
+ *$AR0++ = 0x4000;
+ else
+ *$AR0++ = 0xc000;
+
+ t += (PB.RatioInt * 2);
+ }
+ 08d3 147e lsr $ACC0, #-2 // t /= 4
08d4 02df ret
}
|
