Hyper Voice: Difference between revisions
From WSdev Wiki
Jump to navigationJump to search
mNo edit summary |
(document volume/mode interplay) |
||
Line 44: | Line 44: | ||
||| |||| || 0 = 100% 1 = 50% | ||| |||| || 0 = 100% 1 = 50% | ||
||| |||| || 2 = 25% 3 = 12.5% | ||| |||| || 2 = 25% 3 = 12.5% | ||
||| |||| ++--- | ||| |||| ++--- Volume scaling algorithm: | ||
||| |||| 0 = Unsigned | ||| |||| 0 = Unsigned | ||
||| |||| 1 = Unsigned, | ||| |||| 1 = Unsigned, negated | ||
||| |||| 2 = Signed | ||| |||| 2 = Signed | ||
||| |||| 3 = | ||| |||| 3 = Ignored | ||
||| |+++------ Update sample rate/Divisor: | ||| |+++------ Update sample rate/Divisor: | ||
||| | 0 = 24000/1 = 24000 Hz | ||| | 0 = 24000/1 = 24000 Hz | ||
Line 66: | Line 66: | ||
3 = Mono, both channels | 3 = Mono, both channels | ||
</pre> | </pre> | ||
{| class="wikitable" | |||
|+ Volume scaling algorithms - resulting sample ranges | |||
! Algorithm/Volume | |||
! 100% | |||
! 50% | |||
! 25% | |||
! 12.5% | |||
|- | |||
| Unsigned | |||
| 0x0000 .. 0xFFFF | |||
| 0x8000 .. 0xFFFF | |||
| 0x8000 .. 0xBFFF | |||
| 0x8000 .. 0x9FFF | |||
|- | |||
| Unsigned, negated | |||
| 0x0000 .. 0xFFFF | |||
| 0x0000 .. 0x7FFF | |||
| 0x4000 .. 0x7FFF | |||
| 0x6000 .. 0x7FFF | |||
|- | |||
| Signed | |||
| 0x0000 .. 0xFFFF | |||
| 0x4000 .. 0xBFFF | |||
| 0x6000 .. 0x9FFF | |||
| 0x7000 .. 0x8FFF | |||
|- | |||
| Ignored | |||
| 0x0000 .. 0xFFFF | |||
| 0x0000 .. 0xFFFF | |||
| 0x0000 .. 0xFFFF | |||
| 0x0000 .. 0xFFFF | |||
|} |
Revision as of 06:36, 24 March 2024
Hyper Voice is a headphone-only sample output channel introduced with the WonderSwan Color. It allows converting 8-bit signed and unsigned, mono and stereo samples into 16-bit signed PCM sent directly to the headphone output, after mixing with the traditional four channels.
I/O Ports
Hyper Voice Left Output ($64, $65 write)
Hyper Voice Right Output ($66, $67 write)
15 bit 8 7 bit 0 ---- ---- ---- ---- ssss ssss ssss ssss |||| |||| |||| |||| ++++-++++--++++-++++- Signed 16-bit sample.
Unlike the Sound sample output registers, these can be written to - allowing for direct 16-bit sample output.
Hyper Voice Left Input ($68 write)
Hyper Voice Right Input ($69 write)
7 bit 0 ---- ---- ssss ssss |||| |||| ++++-++++- 8-bit sample.
These are typically written to by Sound DMA, but can also be written to manually by the user.
Hyper Voice Control ($6A, $6B)
15 bit 8 7 bit 0 ---- ---- ---- ---- .mmc ???? errr ffss ||| |||| |||| ||| |||| ||++- Shift/Volume: ||| |||| || 0 = 100% 1 = 50% ||| |||| || 2 = 25% 3 = 12.5% ||| |||| ++--- Volume scaling algorithm: ||| |||| 0 = Unsigned ||| |||| 1 = Unsigned, negated ||| |||| 2 = Signed ||| |||| 3 = Ignored ||| |+++------ Update sample rate/Divisor: ||| | 0 = 24000/1 = 24000 Hz ||| | 1 = 24000/2 = 12000 Hz ||| | 2 = 24000/3 = 8000 Hz ||| | 3 = 24000/4 = 6000 Hz ||| | 4 = 24000/5 = 4800 Hz ||| | 5 = 24000/6 = 4000 Hz ||| | 6 = 24000/8 = 3000 Hz ||| | 7 = 24000/12 = 2000 Hz ||| +--------- Enable: 0 = off, 1 = on ||+----------------- Write 1 to reset DMA input channel to left ++------------------ Channel mode: 0 = Stereo 1 = Mono, left channel only 2 = Mono, right channel only 3 = Mono, both channels
Algorithm/Volume | 100% | 50% | 25% | 12.5% |
---|---|---|---|---|
Unsigned | 0x0000 .. 0xFFFF | 0x8000 .. 0xFFFF | 0x8000 .. 0xBFFF | 0x8000 .. 0x9FFF |
Unsigned, negated | 0x0000 .. 0xFFFF | 0x0000 .. 0x7FFF | 0x4000 .. 0x7FFF | 0x6000 .. 0x7FFF |
Signed | 0x0000 .. 0xFFFF | 0x4000 .. 0xBFFF | 0x6000 .. 0x9FFF | 0x7000 .. 0x8FFF |
Ignored | 0x0000 .. 0xFFFF | 0x0000 .. 0xFFFF | 0x0000 .. 0xFFFF | 0x0000 .. 0xFFFF |