Classic PC demoscene productions running natively in the browser

(treylorswift.github.io)

82 points | by adunk 4 hours ago

12 comments

  • Retr0id 2 hours ago
    > The demo is run on an x86 emulator that records every block of code the CPU actually executes, over the whole demo.

    > That recording is translated into C - the original instructions, one for one, with the exact cycle timing of the emulated machine.

    What's the advantage of this approach vs cycle-accurate emulation? (I'd guess it can go faster, due to compiler optimization?)

    > The result is checked against the emulator event for event: every interrupt, port access and frame at the same moment of emulated time.

    It's funny how LLMs leak their test procedure docs into user-facing output.

    • pjc50 20 minutes ago
      Yes, cycle-accurate is very expensive because it prevents optimization. But as described they say they're doing an AOT version of cycle-accurate anyway?

      In some ways this is similar to the concurrent-systems problems that memory barriers are a tool to address. Your emulator will come in two halves, a CPU side and a gfx/sfx side, as well as control inputs, and the "intermediate" approach is when you're just trying to preserve the sequence of load/stores between the two with an accuracy relative to frame timing. Maintaining ultra precise timing within a frame imposes more detailed coordination requirements on both sides of the emulation.

    • vardump 1 hour ago
      Cycle accurate emulation helps little with this era PC demos, because back in 1993 PC hardware performance variation was already massive. From 386SX-16 to Pentium 66 MHz, that's over 20x difference in performance.
      • dspillett 1 hour ago
        > Cycle accurate emulation helps little with this era PC demos

        It works, and has done for some time, surely. What more is there to add here above accurate playback?

        > From 386SX-16 to Pentium 66 MHz, that's 10-20x difference in performance.

        Yep, and some demos had specific requirements for not only minimal CPU but maximal because the assumptions inherent in small-code timing tricks would break beyond a certain speed or because of significant differences in relative instruction execution times (and sometimes the unpredictability of those execution times as the P5 architecture and some of its frankenstein-486-like competitors added branch prediction). Larger demos were more flexible as you didn't need the small-code tricks to squeeze into 4Kb or sometimes less, so 64K demos and larger could be more flexible wrt target CPU.

        But cycle-accurate emulation has this sorted to: you just need the instruction cycle time accuracy to be matching a particular CPU running to the pace of a particular clock. And given the description of how this is being done (“The demo is run on an x86 emulator that records…”) I assume this is actually using cycle-accurate emulation!

        I'm guessing the benefit here is that the overhead of playing back the demo on each client machine is lower when playing this recorded version, compared to each viewer's browser running the initial emulation live in the browser. That and doing something a new way was fun or otherwise intellectually stimulating for the dev(s) involved.

    • rmnclmnt 1 hour ago
      > It's funny how LLMs leak their test procedure docs into user-facing output.

      You have to constantly fight so hard to not get this. And for the past few months it seems most people do not even care to remove it and have proper user facing docs

      • dspillett 1 hour ago
        > You have to constantly fight so hard to not get this.

        By “fight so hard” you mean “do a bit of basic editing before publishing the text”?

        You wouldn't have thrown a junior's text straight at end users without any review in the past (at least I hope not, though obviously some teams actually were and still are that lax), why do you expect to get away with skipping the review/edit step with your clockwork colleague?

        • Sharlin 1 hour ago
          Because we expect a junior colleague to learn from feedback and not have to fix the same problems in their output year after year.
          • dspillett 56 minutes ago
            But having learned from the feedback they or you then go off to work on something else and, unless you move onwards/upwards/both in perfect sync, and you end up with new juniors who need the feedback afresh.

            Also: I've always avoided being anything like a lead or manager, but I do effectively have a couple of relative juniors ATM who I wish would have a better long-term learn/forget ratio when it comes to feedback from myself and elsewhere!

        • Retr0id 30 minutes ago
          The people who don't care can output slop orders of magnitude faster than those that do.
      • christophilus 1 hour ago
        I didn’t notice it when using Codex. Recently switched to Claude to test Opus 5.5, and it is constantly adding useless commentary.
        • rmnclmnt 1 hour ago
          I don’t think that’s specific to Claude though. I’ve seen people use GH Copilot harneds (don’t with which models) and it was even worst
    • bananaboy 1 hour ago
      > What's the advantage of this approach vs cycle-accurate emulation? (I'd guess it can go faster, due to compiler optimization?)

      I don't think anyone is doing it this way because they chose to do it this way. All the AI decomp/recomp projects I've seen recently have done it this way. It just seems an easy way to have an AI brute force "port" something.

      • Retr0id 39 minutes ago
        This only works for something noninteractive that always executes the same code (unless I'm misunderstanding the LLM's description of what it did)
        • bananaboy 21 minutes ago
          Ah yeah true, no I don't think you're misunderstanding. Actually sorry I misspoke - what I've seen in the game re/decomp projects is that the binary gets turned into a direct C implementation of the instruction stream, and it's basically a sort of emulation with CPU/memory state and emulation of whatever hardware it might need to talk to.
  • futurecat 4 minutes ago
    a couple of days ago I posted this: https://news.ycombinator.com/item?id=49982323

    State of the Art was ported to the browser as well.

  • Martin_Silenus 1 hour ago
    The days I gave up with demoscene. When PC killed Atari ST and Amiga scene (sorry to put you after amiguys, but life was always easier for you ;) ), all the magic of fixed hardware without tons of Mhz and RAM, when we were running after that cathode ray which wouldn't wait, exploiting hardware bugs to break those damn borders above, below and sideways, spending hours turning my head upside-down to read unreadable scrolltexts, looking at psychedelic plasma effects with bazillions colors...

    Then I betrayed you all: I bought my first ugly machine because of Doom. I was so ashamed...

    Now, only 4KB demos can at least impress me a bit.

    Feeling old.

    • smokel 50 minutes ago
      I gave up once full screen video playback was possible from CD-ROM. After that, doing (typically worse) non-interactive animations in real-time, seemed a bit pointless.

      But watching Crystal Dreams II on my phone actually made me feel young again :)

      • Martin_Silenus 45 minutes ago
        Man, demoscene has always been pointless. That's one of the beauties of the thing, you cannot sell that. I call it love.
  • Sharlin 1 hour ago
    If there’s no human effort behind this, what’s the point? You could just as well watch any of the zillions of video recordings of these demos. There’s no inherent value in "running natively in the browser". Never mind the vast irony in demoscene specifically being a celebration of human skill and creativity.
    • Karliss 1 hour ago
      Not going to say anything about AI translations. But the video recording don't do justice for many of demos.

      The effects in some of the demos simply kill any video encoder, only way to properly experience them is by running or emulating locally. Not that crystal sharp upscaled square pixels on modern display or poor quality CRT filters are very representative either, but it's likely better than blurry mess you get when video encoder tries to deal with high frequency details or random noise from procedural effects.

      • Sharlin 41 minutes ago
        I’m sure there are lossless recordings around. At 320x200x8bit even a simple sequence of PNGs wouldn’t take that much space in today’s terms.
    • Retr0id 1 hour ago
      Well, there is a little advantage. Most recordings are not at the native framerate, and have compression artefacts (which impacts some effects more than others)
      • bananaboy 1 hour ago
        I mean even these browser ports aren't at the native framerate. The native framerate for these demos was 70hz as they were all designed for VGA video modes.
        • Retr0id 38 minutes ago
          A browser can run at whatever framerate you set your monitor to. Mine supports 70Hz.
          • bananaboy 17 minutes ago
            Sure. I don't think I've ever had an LCD monitor that supports 70hz at a useful resolution though. My current monitors (native resolution 2560x1440) only seem to support it at 1024x768!
          • Sharlin 20 minutes ago
            But most people’s monitors don’t, or people just never set them outside the standard rate.
  • gritzko 2 hours ago
    So much fun. I recently ported some old strategy games. Claude does it almost on its own http://replicated.live/blog/games
    • 1313ed01 2 hours ago
      Lots of talk of DOS, but both games that are described (Panzer General II and Imperialism II) were only released for Windows?

      If the games had been for DOS, it would probably have made more sense to just run the original binaries in DOSBox-X or some other emulator. I think there is already some debug API that can be enabled. Or adding MCP or something similar to DOSBox(-X) would probably be a lot less work than to reimplement the games.

      • gritzko 1 hour ago
        Ah, yes, sorry. At this point, XP and DOS are almost synonymous for me.

        The entire point of the port was to add headless play for AI training. But porting the old interface and playing it in the browser was lots of fun. Can not upload that to GitHub, obviously.

        • chriswarbo 1 hour ago
          > At this point, XP and DOS are almost synonymous for me.

          IIRC Windows 9x & ME were based on (MS)DOS; but 2k and XP were based on NT, which was quite different.

          (Note sure what those differences actually are, since I only started programming once I'd switched to Linux...)

          • bananaboy 1 hour ago
            That's correct. Personally as an MS-DOS retro enthusiast and programmer I don't know how anyone could call XP and DOS synonymous!
    • cyclopeanutopia 2 hours ago
      So who or what ported them?
      • bananaboy 52 minutes ago
        I find it hard to congratulate someone on a project when they say Claude or whatever did it for them. It just feels so insincere. I myself wouldn't feel good getting compliments about something that I prompted into existence.
      • dspillett 1 hour ago
        It is true what people say wrt using agentic development being like being a manager: you take an idea from elsewhere (a lot of game porting is happening right now), describe it to someone else who will do the hard work while you relax, and then at the end you as the team lead/manager claim all the credit.
      • gritzko 1 hour ago
        Opus 5.5.
  • vrganj 2 hours ago
    This kind of made me sad.

    The demoscene was all about human ingenuity getting the most out of the machine. It was about showing off how good your crew was at making things from nothing but their minds.

    Now, it too, has been swallowed by the AI that is destroying this entire mode of being, the joy and creativity of writing code, of solving seemingly-impossible puzzles with ones mind.

    My favorite creative and intellectual outlet is dying off and its killer is wearing its corpse as a costume.

    • Krei-se 34 minutes ago
      You just don't understand, it's the prompt and knowing which foreign work to endless rehash that's the new creativity now. There's taste in knowing what artist to steal from!

      /s if that wasn't obv.

    • mrweasel 1 hour ago
      For these four demos I don't know, but part of the challenge was certainly working within the constraints of the machines of the day. The Furture Crew demo I believe comes in at 2.5MB and ran on a 1993 PC, so probably 8MB of ram at the most. Running it in the browser is probably at least 20 times the memory.

      It's really cool to be able to rewatch these demo, but the spirit in which they were created is somewhat lost.

      • smokel 46 minutes ago
        Second Reality ran comfortably with only 640KB RAM using the Gravis Ultrasound.

        But it did require a 386, which typically had 2 MB or more of RAM back then.

      • bananaboy 46 minutes ago
        Second Reality runs in real mode, and doesn't use XMS or EMS so it runs in 640kb!
      • KellyCriterion 1 hour ago
        > probably 8MB of ram at the most. Running it in the browser is probably at least 20 times the memory.

        lol, that would be 160MB then, a fraction of what a Firefox Tab consumes and in todays hardware specs its a roundoff error :-D

        (while back then you were the ultimate king if you had 8 MB of RAM available at all! :-)

    • bananaboy 54 minutes ago
      I feel the same, it sucks. All you can do is carve out a space for yourself doing the things you enjoy, and don't let the AI grifters tell you that AI is the only way and everyone else is "cooked", no one will be writing things by hand, etc etc. God that rhetoric is depressing.

      I write demos and games as a hobby predominantly for MS-DOS and machines ranging from the 386 up to the Pentium (soon to add 8088/286 to that list) as well as old consoles like the Sega Master System and other random platforms (like ARM-based kids toys like the Leapster Explorer).

      Right now I'm working on an EGA production. I could just get an AI to generate a lot of the code for me or give me all the answers, but instead, I have my Programmer's Guide to the EGA/VGA/SVGA by Ferraro and another reference open on my desk trying to understand the CRTC so I can create a custom video mode. I live for this stuff and want to fully understand what's going on in the hardware. I like the creative aspects of making demos and games but I also like the technical aspects, and understanding the platform and the deep details.

      When I spend too much time reading HN or X and see too much of the AI stuff, it really bums me out, so I have to detox by unfollowing/ignoring and getting back to my projects.

    • sgt 1 hour ago
      Who's going to show up to the next big demo party (like the ones they arrange in Europe), having e.g. hand coded 68k assembly or done some highly impressive 4k demo, having been intimate with every single instruction?
      • bananaboy 1 hour ago
        Uh, many people. There are plenty of demo parties with retro categories in the compos, and plenty of people still interested in writing their own code for those platforms.
        • sgt 57 minutes ago
          Glad to hear that! But then again, might be hard to know how their approach was. Traditionally people write a lot of code and prepare before the compos, it didn't all come during those few hours.
    • pona-a 1 hour ago
      Maybe it will just pass? Eventually maybe people will get bored of this consumerist mode of creation, of projects born with no vision or craft, made with the tastefulness of a kid smashing together their favorite toys. And when the majority finally agrees these stunts are a corrosive influence on the community, we can just approach it as a moderation problem, figure out some system of vouches and reports, or downsize and our communities until trust again becomes tractable, maybe even coming to appreciate some tactical slop as a stepping stone or a proof of concept to be eventually reverse-engineered into a maintainable human project.
    • GuB-42 58 minutes ago
      What makes you say this? Just because someone used AI to port some classic productions to the browser (which is actually pretty cool), doesn't mean that AI has taken over.

      AI slop productions tend to be frowned upon, or even banned, writing code and using cool tricks to to what seems impossible is still a big part of the demoscene, in particular in the sizecoding, oldschool and wild categories. Clever use of AI is a debated topic, the demoscene is about pushing the limits of current technology, and AI is part of current technology. There is also the question of using AI for tooling (modelers, compressors, test harnesses, etc...), as in, will you stop using a particular IDE because it is written with the help of AI, even if it is good?

      But still, most productions are hand made.

    • plastic-enjoyer 2 hours ago
      It's the eternal sloptember, but for humanity.
      • blackhaz 1 hour ago
        Or an eternal heaven, our every wish coming true. The next iteration of homo sapiens will not be thinking how to do things, but what things to do. Is this the new creative space for us?
        • vrganj 1 hour ago
          But the thinking is the valuable and meaningful part. I don't want it monopolized by a few megacorps, sterilized and devoid of human touch, only thinking of things that said corps find acceptable.

          We'll get unlimited frozen pizzas, but we'll kill off chefs in the process.

          It's not a trade I'm feeling good about.

  • meerita 1 hour ago
    It's quiet amazing how much people did with 4kb, 64kb demos.
  • joking 1 hour ago
    bufff.... the music from second reality still gives me goosebumps.
  • melicerte 1 hour ago
    How to skin a cat...
  • Wittie 1 hour ago
    [dead]
  • soltanov 2 hours ago
    [flagged]
  • Krisso 1 hour ago
    I'm all for this future. Let's remove the tooling and let true creativity and diligence be what we appreciate and marvel at. If we can instruct AI well enough, it can eliminate the plumbing layer entirely, allowing us to focus on what truly matters.

    Those demos from the '90s remind me of the incredible creativity and ingenuity of the human mind. Thanks for bringing them back to life and making them so effortlessly accessible.

    • Sharlin 1 hour ago
      Hilarious.
    • treylorswift 1 hour ago
      You're welcome! These demos blew my mind in the early 90s and they still do today. Glad you enjoyed them!