ct6502 / apple2ts

Apple II Emulator in TypeScript
Creative Commons Attribution Share Alike 4.0 International
61 stars 10 forks source link

Ultima 5 Multi-instrument MIDI mods (for review only) #72

Closed code-bythepound closed 2 months ago

code-bythepound commented 2 months ago

This is a modification based on the work of "Cloudschatze" in his article and presentation here: https://forum.vcfed.org/index.php?threads/how-you-could-have-been-playing-ultima-v-in-1988.61980/. His change allows a Roland U-110 MIDI module to receive the stock MIDI sequence from U5 and remasters that uni-channel MIDI sequence into a multi-channel (ie: multi-instrument) sequence on-device. My change takes his mappings and ranges and converts them in real time to General MIDI instruments and tunings providing a similar experience.

TO TEST: launch U5. Go to Activate Music -> Change Music Configuration, add Passport to slot 2, and hit enter. In the Midi Information screen, select Channel 1 (default), 16 voices, and then enter the numbers 1-15 for "Midi Number" in each song (where Ultima Theme is '1' and Rule Britannia is '15'). Then hit enter on each song to play.

Still TODO:

I have had the best luck testing with https://signal.vercel.app/ for WebMIDI.

ct6502 commented 2 months ago

This looks awesome. I haven't had a chance to try it yet, but in the meantime, you can detect Ultima V by looking at memory address 0x202. It contains the data [0x55, 0x4C, 0x54, 0x49, 0x4D, 0x41, 0x35], which spells out "ULTIMA5". I don't know if this was true in the original game as well, or is just because of the ProDOS port, but that string seems to stay there for the entire game.

code-bythepound commented 2 months ago

Great, that worked. I'll get this finished up.

code-bythepound commented 2 months ago

Ok, should be ready for review. Thanks.