Game_Music_Emu 0.2.4: Problems and planned improvements


Interface
---------

- Refer to sound chip oscillators as channels, since Nes_Channel was
renamed a long time ago.

- Rename setters with set_ prefix. I decided the terseness wasn't worth
it.

- Consider putting buffer pointer before count in play() etc. Only
reason I put count first is to allow making buffer pointer default to
NULL for skip. But it seems better to have skip() a separate function.
One other reason to put count first is to follow the left-to-right
principle in organizing arguments: play( count, buf ) generates 'count'
samples and writes them into 'buf', and count is a more significant
parameter than the buffer to write to.

- VGM, GYM: change track_length() to return length and start of loop?


Misc
----

- NSF: Partial implementation of DAC non-linearity causes possible
drift. Messes up saw wave demo at high frequencies.

- GYM: See if ignoring PCM when it's disabled eliminates pop in some
tracks.

- All CPU emulators: what if instruction straddles page boundary? Might
need to completely avoid reading words from code memory.

- Test reloading a new file into emulator after already loading one

- Optimize resampling in Sega Genesis GYM emulator

- Improve GBS emulation

- Improve GYM PCM channel emulation

- SPC: Finish KON and KOFF reverse-engineering and incorporate into
Spc_Dsp

- GBS: Crystalis track 18 plays really fast. Does same in gbsplay 0.7.

- GBS: Ultima 3 overflows stack. Messes up in gbsplay 0.7.

- Set track_ended flag when emulation error occurs (log emulation error
only in debug mode).

- Change wave and noise Gb_Oscs to blip_good_quality?

- VGM: Support Sega Genesis

- VGM: Parse extended header

- VGM: Support new version of VGM file format that might be released
soon

- GYM: Check Altered Beast tracks with samples. They cut off seemingly
too soon.

- Include example of how to use NSF non-linear handling (with note about
limitations)

- Keep SP and PC as 32-bit in CPU registers structure so emulator can
detect overflow/underflow and halt emulation, rather than having them
masked when written back?

