VOGONS


First post, by nukeykt

User metadata
Rank Member
Rank
Member
Original text

Hi,
guess folks over here might be interested on the project I've been working on, so I'm making thread about it.
this is continuation of my early sc-55 emulation attempt I started in 2021. The basic idea was to emulate all main chips in proper way and use original SC-55 firmware as is (MAME approach). Back then I made emulator of its main CPU but was not able to properly boot firmware on it, and combined with lack of information about PCM chip I ultimately abandoned it.
Earlier this year though I decided to try tinker with this a bit more, and tried to trace die shot of decapped pcm chip (from John McMaster/siliconpr0n.org). After completing tracing I used org/ogamespec's deroute utility to convert netlist to verilog code and I started analyzing it. Analysis revealed a lot of useful info on how synthesis engine works, and how PCM chips is interfaced by CPU. Using this new info I revived my old code and started fixing it. Eventually I was able to boot firmware and then started adding PCM chip emulation. At the moment PCM chip emulation is halfway done and it already sounds awesome. Now stuff like TVF, chorus/reverb/mixing are left.

Low-level Roland SC-55 series emulator. Firmware ROM images are needed for operation (do not ask here nor DM me about ROMs).
Supported models:

  • SC-55mk2(SC-155mk2)
  • SC-55mk1
  • SC-55st
  • CM-300/SCC-1
  • JV-880
  • SCB-55
  • RLP-3237
  • SC-155 (extra buttons are not emulated yet)

See README on github for more details.

SC-55mk2 demo songs:
https://www.youtube.com/watch?v=u4Z5y2otJqY

github:
https://github.com/nukeykt/Nuked-SC55

windows builds:
https://github.com/nukeykt/Nuked-SC55/releases

Last edited by nukeykt on 2024-05-07, 18:10. Edited 4 times in total.

Reply 1 of 409, by dominusprog

User metadata
Rank Member
Rank
Member

That's great! So is there any chance for EDuke32 to merge this any time soon?

Duke_2600.png
A-Trend ATC-1020 V1.1 ❇ Cyrix 6x86 150+ @ 120MHz ❇ 32MiB EDO RAM (8MiBx4) ❇ A-Trend S3 Trio64V2 2MiB
Aztech Pro16 II-3D PnP ❇ 8.4GiB Quantum Fireball ❇ Win95 OSR2 Plus!

Reply 2 of 409, by Rincewind42

User metadata
Rank Member
Rank
Member

Man, this is great stuff! It already sounds awesome! Once the library becomes publicly available, we'll surely incorporate it into DOSBox Staging!

Next stop: Yamaha MU80 😉

DOS: Soyo SY-5TF, MMX 200, 128MB, S3 Virge DX, ESS 1868F, AWE32, QWave, S2, McFly, SC-55, MU80, MP32L
Win98: Gigabyte K8VM800M, Athlon64 3200+, 512MB, Matrox G400, SB Live
WinXP: Gigabyte P31-DS3L, C2D 2.33 GHz, 2GB, GT 430, Audigy 4

Reply 4 of 409, by orcish75

User metadata
Rank Member
Rank
Member

Incredible stuff!! Well done!

I know the objective is to emulate the device as close to 100% as possible, but can you add in a selectable feature to increase the polyphony from the default 28 voices? This would make it better than the original as music that requires more than 28 voice polyphony will play properly. A lot of the Warcraft 2 tracks for instance drop notes when played on a real SC-55.

Reply 5 of 409, by nukeykt

User metadata
Rank Member
Rank
Member

not possible with approach I use I guess, all code inside firmware assumes 28 voices and pcm chip has hard limit of 28 voices (curiosly, on original sc-55 pcm chip DOES support 28 voices, it is just firmware is compiled to work with 24). SC-55 firmware does fair amount of the processing actually (all midi->voice/partial conversion, envelope/volume/filter control, LFOs/frequency control, etc, etc), pcm chip on other hand plays samples from ROM, does envelope interpolation and applies some effects

Reply 6 of 409, by orcish75

User metadata
Rank Member
Rank
Member

Cool! Was hoping there would be a way around it, but what you've said makes sense. Never-the-less, it's amazing what you've achieved so far, looking forward to the finished product.

Reply 7 of 409, by AppleSauce

User metadata
Rank Oldbie
Rank
Oldbie
nukeykt wrote on 2024-03-14, 16:29:
Hi, guess folks over here might be interested on the project I've been working on, so I'm making thread about it. this is contin […]
Show full quote

Hi,
guess folks over here might be interested on the project I've been working on, so I'm making thread about it.
this is continuation of my early sc-55 emulation attempt I started in 2021. The basic idea was to emulate all main chips in proper way and use original SC-55 firmware as is (MAME approach). Back then I made emulator of its main CPU but was not able to properly boot firmware on it, and combined with lack of information about PCM chip I ultimately abandoned it.
Earlier this year though I decided to try tinker with this a bit more, and tried to trace die shot of decapped pcm chip (from John McMaster/siliconpr0n.org). After completing tracing I used org/ogamespec's deroute utility to convert netlist to verilog code and I started analyzing it. Analysis revealed a lot of useful info on how synthesis engine works, and how PCM chips is interfaced by CPU. Using this new info I revived my old code and started fixing it. Eventually I was able to boot firmware and then started adding PCM chip emulation. At the moment PCM chip emulation is halfway done and it already sounds awesome. Now stuff like TVF, chorus/reverb/mixing are left.

https://www.youtube.com/watch?v=u4Z5y2otJqY

Just wondering are you planning to include mk1 emulation? , since some games make use of capital tone fallback.
I'm guessing both synths are pretty similar but I'm not sure how trivial it would be to cover both units?

Reply 9 of 409, by elszgensa

User metadata
Rank Member
Rank
Member

Can you already make a guesstimate on what will be necessary to run this (i.e. on a retro rocket alongside a game, dedicated raspi ("sc55-pi"), full blown current gen pc, ...), or is it too early for that?

Also, please don't throw away the verilog code when you're done, someone might get some more use out of it to do sth like a MiSTer port, or standalone FPGA based clone device.

Reply 11 of 409, by mattw

User metadata
Rank Oldbie
Rank
Oldbie
nukeykt wrote on 2024-03-15, 17:01:

I don't have complete ROM dumps for original sc-55 to support it

first of all, you made incredible progress in no time - real impressive!

So, I have original SC-55 with v2.00 ROMs, MAME dumps are from v1.21 unit, but I guess you say they are incomplete, because of the magic you did:

https://twitter.com/nukeykt/status/1752965047179981212

REMOVED

[EDIT] and here:

Update SC-55 ROM

there is good reference about original SC-55 different ROM versions, e.g. v1.2x, v2.00, etc. what was fixed and what are the differences.

Last edited by DosFreak on 2024-04-03, 16:19. Edited 2 times in total.

Reply 12 of 409, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie
nukeykt wrote on 2024-03-15, 08:40:

SC-55 firmware does fair amount of the processing actually (all midi->voice/partial conversion, envelope/volume/filter control, LFOs/frequency control, etc, etc), pcm chip on other hand plays samples from ROM, does envelope interpolation and applies some effects

I'm curious what the resampling algorithm is on the SC-55. The audio quality in that video is pretty good despite being a WIP emulator.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 14 of 409, by Rincewind42

User metadata
Rank Member
Rank
Member

I've spent a bit of time comparing this extensively to my real hardware SC-55 (mk1) recordings. See this blog post of mine, it contains the hardware FLAC recordings and MIDI files for 46 DOS games:
https://blog.johnnovak.net/2023/03/05/grand-m … -midi-showdown/

My friends, this is the final word on SC-55 emulation, and I don't say such things lightly as I'm extremely fussy when it comes to audio emulation accuracy.

Not "very close", or "99% there" -- the results are virtually indistinguishable from my real hardware recordings. I've been A/B comparing Nuked-SC55 with my FLAC recordings in my high-quality studio headphones for the last hour and I just can't wipe the grin off my face -- this is perfect, this is the endgame.

@nukeykt I congratulate you, this is a marvellous achievement! It sounds absolutely glorious, you've really outdone yourself this time!

Nuked-SC55 is in fact better than SCVA for SC-55 emulation purposes, although we know that's a bit of an apples to oranges comparison as SCVA can only give you the SC-55 compatibility mode of the Roland SC-8820 (which I assume it emulates accurately, but Roland's own "SC-55 compatibility" mode diverges slightly from the original SC-55).

DOS: Soyo SY-5TF, MMX 200, 128MB, S3 Virge DX, ESS 1868F, AWE32, QWave, S2, McFly, SC-55, MU80, MP32L
Win98: Gigabyte K8VM800M, Athlon64 3200+, 512MB, Matrox G400, SB Live
WinXP: Gigabyte P31-DS3L, C2D 2.33 GHz, 2GB, GT 430, Audigy 4

Reply 15 of 409, by zaphod77

User metadata
Rank Newbie
Rank
Newbie

suggest this midi file as a decent test for comparison with real hardware.

https://chiptune.app/browse/MIDI/Jam%20&%20Spoon

also suggest using Kim Burgaard midi files to a/b test against real hardware. 😀

Reply 16 of 409, by EmperorGrieferus

User metadata
Rank Newbie
Rank
Newbie

I know, it's a bit of a stretch here, REMOVED? I just don't have neither an actual module on my hands, nor any soldering equipment.
I just really want to test it out.

UPD: I have a problem. MIDIs sound low-pitched.

Reply 17 of 409, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Unless someone can prove that sharing the copyrighted Roland ROM is legal then I suggest you take the discussion of such elsewhere.
Text in posts asking for, suggesting on where to get, linking to or offering to dump a copyrighted Roland ROM have been removed.
Projects that have been shown to allow the above should not be mentioned here either.
Repeat offenders will be banned.
The above is not negotiable, no further discussion in this thread on the above unless the proof is provided. Any off-topic posts will be deleted.

Thanks

Last edited by DosFreak on 2024-04-04, 10:12. Edited 1 time in total.

How To Ask Questions The Smart Way
Make your games work offline

Reply 18 of 409, by Nicknine

User metadata
Rank Newbie
Rank
Newbie
EmperorGrieferus wrote on 2024-04-03, 14:44:

UPD: I have a problem. MIDIs sound low-pitched.

It's some kind of init bug, it appears to happen based on what game you ran first, it's like some of them don't initialize SC-55 properly. You need to do the reset procedure if you run into this:
1) Press Q to turn it off.
2) Press and hold Y and U, then press Q to turn it back on.
3) Press W to answer affirmative to the reset prompt.

Reply 19 of 409, by EmperorGrieferus

User metadata
Rank Newbie
Rank
Newbie
Nicknine wrote on 2024-04-03, 16:47:
It's some kind of init bug, it appears to happen based on what game you ran first, it's like some of them don't initialize SC-55 […]
Show full quote
EmperorGrieferus wrote on 2024-04-03, 14:44:

UPD: I have a problem. MIDIs sound low-pitched.

It's some kind of init bug, it appears to happen based on what game you ran first, it's like some of them don't initialize SC-55 properly. You need to do the reset procedure if you run into this:
1) Press Q to turn it off.
2) Press and hold Y and U, then press Q to turn it back on.
3) Press W to answer affirmative to the reset prompt.

I launched it first time as it is, just for the sake of checking out, and it was already low-pitched by 1 halftone. I use FSMP to reset it every time I launch it anew.
When I tried your procedure, it didn't help.