[HN Gopher] A cycle-accurate IBM PC emulator in your web browser
       ___________________________________________________________________
        
       A cycle-accurate IBM PC emulator in your web browser
        
       Author : GloriousCow
       Score  : 145 points
       Date   : 2025-05-04 17:19 UTC (4 days ago)
        
 (HTM) web link (martypc.net)
 (TXT) w3m dump (martypc.net)
        
       | GloriousCow wrote:
       | MartyPC brings cycle-accurate IBM PC emulation to your web
       | browser.
       | 
       | Run Area 5150 at 60fps on your phone!
       | 
       | Almost every feature from the desktop version is present if
       | practical:
       | 
       | - View the realtime state of nearly every component of the
       | system. - View live disassembly of CPU instructions. - Edit
       | registers and memory. - Slow down or speed up the system. - Peek
       | on how games draw their graphics with the Memory Visualizer.
        
       | WalterGR wrote:
       | Pretty incredible!
       | 
       | I'm on mobile right now so I can only comment on the demo that
       | runs automatically, which I understand isn't the _point_. :)
       | 
       | More about the demo: https://www.vogons.org/viewtopic.php?t=89435
       | 
       | (For those unfamiliar with "demo" in this context, see
       | https://en.m.wikipedia.org/wiki/Demoscene)
       | 
       | I look forward to checking out the features you mention on a
       | proper computer.
        
         | rkagerer wrote:
         | I loved it when the Doom floating head demon guy came up. Right
         | when y'all were about to ask "...but can it run Doom?"
        
       | nsxwolf wrote:
       | Can you imagine sending an Area 5150 disk back in time to 1981?
        
         | trollbridge wrote:
         | You'd be fussing around trying to find enough RAM expansion
         | cards to get your system to 640K (including hot patching the
         | BIOS since it had a bug that it could only get to 544K).
        
           | SoftTalker wrote:
           | Ought to be enough for anyone.
        
           | voidspark wrote:
           | 640 KB in 1981 was more expensive than 640 GB today.
        
           | ForOldHack wrote:
           | That was only the first 64k motherboard. ( Five slots only ).
           | Fixed with the PC that came out less than two years later. My
           | brothers machine only had 384k, and it was more than enough.
           | Only three years after, I built 10Mhz XT w/ a V20 640k
           | running Xenix.
        
           | shakna wrote:
           | One of my neighbours in Sydney sold a board he made in his
           | garage, that gave you an extra ten slots, which I filled with
           | way too much RAM. Sort of like a homebrewed 5161, before the
           | 5161 existed.
        
             | trollbridge wrote:
             | That's kind of neat. Did he just extend the bus in a "raw"
             | fashion or put buffers on it? (The downside of the 5161 was
             | any memory device in the 5161 had an extra wait state
             | thanks to the speed of the buffers, which were necessary to
             | deal with the capacitance on the cable to the expansion
             | unit.)
        
         | kwertyoowiyop wrote:
         | If I had seen this back in the day, I might have given up on
         | programming out of sheer awe!
        
       | theogravity wrote:
       | That demo was pretty mesmerizing!
        
       | wbhart wrote:
       | I've been using MartyPC for a few years and except for emulating
       | glitches in hardware which depend on the manufacturer, date of
       | manufacture or even temperature, it is getting harder to find
       | cycle accurate tricks that MartyPC can't emulate perfectly
       | (believe me, we've been trying).
       | 
       | The whole thing is a marvel of software engineering!
       | 
       | What is remarkable is that the author (GloriousCow) doesn't
       | complain that people are ripping off his code and ideas, but that
       | more people haven't used his learnings to create other cycle
       | accurate emulators for the PC.
        
         | johnklos wrote:
         | Temperature? Really? How does that work?
        
           | bonzini wrote:
           | If you program a register at a moment and in a way that
           | causes two signals to "collide", the result effectively
           | depends on transistor behavior. That in turn can be
           | temperature dependent.
           | 
           | For an example on the PC see
           | https://int10h.org/blog/2023/03/cga-6845-crtc-phantom-
           | vsync-...
        
             | creatonez wrote:
             | Thanks. Transistor level race conditions will keep me up at
             | night.
        
             | kaoD wrote:
             | Amazing link. Thanks for sharing.
             | 
             | Where can I find more writeups like this?
        
       | dosman33 wrote:
       | I miss Notacon and Jason Scott's Demoscene parties.
        
         | imroot wrote:
         | Some of my best hacker/nerd friends I met at notacon. It had a
         | vibe that no other con I've been to has had.
        
       | p0w3n3d wrote:
       | Wow that's amazing. I sometimes play NES emulated games, which
       | are (due to hardware limitations) using some tricks while
       | displaying larger mobs, to show a few sprites instead of one (and
       | using monitor synch to quickly switch the sprites in between
       | switching to another scanline). This however renders as blinking
       | in my emulator.
       | 
       | I can only imagine that this demo was doing similar tricks to
       | "push the limits" on CGA.
       | 
       | Also, I remember my i386-33SX playing full 4 channel music on the
       | PC Speaker in the game "Pinball Fantasies". This was state-of-
       | the-art (also not working properly on DOSBox emulator nowadays)
        
       | marstall wrote:
       | truly epic!
        
       ___________________________________________________________________
       (page generated 2025-05-08 23:02 UTC)