Merge #304 - DO NOT COMPILE

Add Namco 163 Support
Not final - changes needed
This commit is contained in:
tildearrow 2022-03-27 21:35:58 -05:00 committed by GitHub
commit c4fc797578
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 1239 additions and 3 deletions

View file

@ -24,6 +24,7 @@ this is a list of systems that Furnace supports, including each system's effects
- [Seta/Allumer X1-010](x1-010.md)
- [WonderSwan](wonderswan.md)
- [Bubble System WSG](bubblesystem.md)
- [Namco 163](n163.md)
- [Yamaha OPL](opl.md)
- [PC Speaker](pcspkr.md)
- [Commodore PET](pet.md)

View file

@ -0,0 +1,25 @@
# Namco 163
This is Namco's one of NES mapper, with up to 8 wavetable channels. It has also 128 byte of internal RAM, both channel register and wavetables are stored here. Wavetables are variable size and freely allocable anywhere in RAM, it means it can be uses part of or continuously pre-loaded waveform and/or its sequences in RAM. But waveform RAM area becomes smaller as much as activating more channels; Channel register consumes 8 byte for each channels. You must avoid conflict with channel register area and waveform for avoid channel playback broken.
It has can be outputs only single channel at clock; so it's sound quality is more crunchy as much as activating more channels.
Furnace supports both load waveform into RAM and waveform playback simultaneously, and channel limit is dynamically changeable with effect commands.
You must load waveform to RAM first for playback or do something, its load behavior is changeable to auto-update when every waveform changes or manual update.
Both waveform playback and load command is works independently per each channel columns, (Global) commands are don't care about the channel columns for work commands and its load behavior is independent with per-channel column load commands.
# effects
- `10xx`: set waveform for playback.
- `11xx`: set waveform position in RAM for playback. (single nibble unit)
- `12xx`: set waveform length in RAM for playback. (04 to FC, 4 nibble unit)
- `130x`: set playback waveform update behavior. (0: off, bit 0: update now, bit 1: update when every waveform is changed)
- `14xx`: set waveform for load to RAM.
- `15xx`: set waveform position for load to RAM. (single nibble unit)
- `16xx`: set waveform length for load to RAM. (04 to FC, 4 nibble unit)
- `170x`: set waveform load behavior. (0: off, bit 0: load now, bit 1: load when every waveform is changed)
- `180x`: set channel limit (0 to 7, x + 1)
- `20xx`: (Global) set waveform for load to RAM.
- `21xx`: (Global) set waveform position for load to RAM. (single nibble unit)
- `22xx`: (Global) set waveform length for load to RAM. (04 to FC, 4 nibble unit)
- `230x`: (Global) set waveform load behavior. (0: off, bit 0: load now, bit 1: load when every waveform is changed)