Since my 7800 project hit engine complete and PC-Engine playtime will be put on hold once the CD-Stupid Cards are finished, I took some time to try and break my sound tools.
Fortunately, there was not much wrong. So I'm releasing
HuSound 1.25cz which includes the following changes:
-HSCC would crash if its first located instrument or sound effect definition was mangled. This has been corrected and the compiler will cleanly alert the user to the syntax problem and exit.
-HuListen's RUN+SEL reset routine was jumping to the wrong portion of my initialization code (the unswapped MCGenjin cold reset rather than a warm reset). This could cause all sorts of interesting behavior on real hardware.
-The waveform previews in HuListen now render on alternating even / odd frames. I don't think anyone really needs finer granularity than that.
-The HuListen builds now default to 4MB in size (the size of the 4MB Plus development card) and spread the audio data around a little more.
-Small change in HuSound->HuMusic where a ROL ROL ROL ROL AND#$F0 was replaced with ASL ASL ASL ASL.
Unfortunately, I've uploaded the Wario Land 2 covers I did to try and break the driver.
Right now the driver is at a state I'm happy with, and will likely be left alone until / if I come back to the PC-Engine for a full game. For the adventurous, I've listed the actions which I might take if the driver proves too cycle hungry for a project:
-There are currently no alignment / placement restrictions for SFX, Music, and PCM data. This is done to make things easier for the programmer and composer, but locking everything in fixed banks would significantly reduce overhead.
-Music data currently includes an instrument set. This is so the programmer can swap among multiple instrument sets during a song very easily and do generally trippy stuff based upon game context. Not everyone needs this and a global instrument set would be quicker for dispatch and obviously use less space.
-Right now the MCGenjin mapper only has a single bank register, this is an issue since we have to cover three contexts (User, VBL IRQ, and Sample IRQ) an preserve its original state on each switch. Having three (or four) banking registers which may be selected via a context register would be very helpful.
-MCGenjin does not handle reversal of the data written to it based upon its current operating region. The new mapper for the CD-Stupid Card (MCGenjin-CD) does this, and would be a welcome addition to an MCGenjin 2 or whatever mapper.