Jump to content

Bringing Emulation Into The 21st Century

Recommended Posts


Emulation is a fascinating area of software engineering, being able to bring to life a 30+ year old arcade machine on a modern computer is an incredibly satisfying accomplishment. Unfortunately I’ve become increasingly disillusioned with the lack of ambition shown by those in the emulation community. Whilst the rest of world moves onto cloud first, massively distributed architectures, emulation is still stuck firmly in the 20th century writing single threaded C++ of all things.


My favorite / most horrifying part:


One of the many beautiful things about a microservice architecture is that, because function calls are now HTTP over TCP, we’re no longer limited to a single language in our environment. That allows us to really leverage the best that modern http api design has to offer.

The following table outlines the language choice for each opcode, as you can see, this allows to gain the benefits of Rusts safe integer arithmetic operations whilst falling back to the security of Deno for important operations like CALL & RET.

(just to be clear, they're not serious)

  • Haha 3
Link to comment
Share on other sites

13 hours ago, Scott Robison said:

Now I want to write a Windows 10 emulator in Commander X16 BASIC. #haha

Computer science theory says it can be done. Turing-completeness and given sufficient storage and all that. But theory and practice are not the same thing. 😄

Link to comment
Share on other sites

13 hours ago, kelli217 said:

Computer science theory says it can be done. Turing-completeness and given sufficient storage and all that. But theory and practice are not the same thing. 😄

Exactly! I once computed the number of disks that would be required to emulate a Windows 10 system on a C= 64 with 1541.

Let's see, the computer I'm using right now, assuming we could even fit a CPU emulation in a C= 64 without having to swap programs in and out of the address space, would need 16 GiB for RAM and 951 GB for the SSD. So let's call that 902 GiB. I can store 166 KiB on a 1541 based on 664 blocks free (I'll just assume I read and write individual blocks rather than use files which would consume two extra bytes per block, and any overhead I can squeeze into otherwise unused directory sectors). So I'll need almost 5.7 million floppies just to emulate the RAM and SSD. Undoubtedly I'd need more to emulate other aspects of the system such as video RAM, CPU cache, etc. I wonder where I can find 5.7 M new old stock floppies?

Or we could go really old school and use tapes!

  • Like 2
Link to comment
Share on other sites

Scott!   Wowzers!    That's amazing to think about! 

Of course, there's already a lot of this sort of thing in 'the other direction' in the retro computer community.   

I have to take great care not to be a jerk when I see someone post on REDDIT about how their brand new VIC20 game blows away anything that ever existed at the time the machine was 'in general use' and how the original programmers must not have been any good etc., etc.   

Of course their new VIC20 program was put together using a cross development environment  running on a modern machine with more than half a million TIMES more transistors; repeatedly (and instantly) compiled right into VICE or whatever emulator of choice for testing.   The graphics were prepared using photoshop and illustrator and other utilities (having a combined code size equal to many thousands of 1541 disks); and thanks to the internet, with the benefit of having access to code libraries and disassembled code from virtually every 6502 based game app demo etc ever made!

And don't get me wrong   I don't begrudge folks from using those 'best available tools' for the job.   But its the smug and self righteous comparisons in which they credit themselves as better programmers than the folks from 'back in the day' that tends grind my gears.   I wonder what their game would have looked like if they HAD used only the same tools as the people who were programming on the old machines in the 1980s, using simple assemblers, graph paper and colored pencils for the drawings, and (on the VIC20 at least) saving their work on cassette tapes (where just the 'save' gave you time to go out and get a cup of coffee). 

Geez.   See what I mean?   I can be a real "get off my lawn" old coot when it comes to that topic! 

Edited by Snickers11001001
  • Like 4
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...

Important Information

Please review our Terms of Use