• 0 Posts
  • 455 Comments
Joined 2 years ago
cake
Cake day: August 27th, 2023

help-circle


  • Dook Nookim has been pushing it even further, to run on 286 and even 8086 machines. And monochrome fixed-font MDA graphics. And Amiga 500.

    Personally, having utterly failed to get the game running on IBM 5150, I can attest this is all high witchcraft. If only to unfuck Open Watcom’s cross-platform compiler flags.

    During development, DOS I/Os were written by id Software. This became the commercial release of DOOM. But that version could not be open sourced in 1997 because it relied on a proprietary sound library called DMX.

    If I had a nickel for every time open-sourcing a Doom sequel’s audio code caused legal headaches, I would have two nickels.









  • I wrote the only first-person shooter on NES.

    I can wholeheartedly recommend C for 8-bit platforms, endorse 6502 assembly as brilliant and rewarding, and tell anyone new to retro game dev to pick any other system besides the NES. It’s a fucking nightmare. VRAM is only accessible during vblank and will jank up your screen if you try doing too much per frame. The sound chip will eat inputs if you try doing sample playback. Splitscreen of any kind is nightmarish without a mapper chip. Everything has errata - VRAM reads will return junk once per frame, because go fuck yourself. Every color that’s not blue is ugly, anything saturated has “dot crawl,” and the palette grid is a bitbanging headache that only gets hidden by CRT overscan.

    None of this is aided by cc65 being a jumped-up assembler macro. It is instant. It’s the fastest goddamn compiler I’ve ever used. But some C will generate absolute dogshit assembly, for reasons inscrutable to mortal men. There’s documentation - it’s wrong. It tells you how to put variables in zero-page and it’s lying. There’s a fastcall convention that still shoves registers onto the stack. There’s no sane way to place things at specific memory addresses, or even page-align arrays, which you’d think might be kinda fucking important for a compiler suite that supports one architecture. But I really cannot overstress how stupidly fast it is, to where checking any of this bullshit by modifying and rebuilding is quicker than any debugger.

    So.

    Uh.

    If this setup eases any of that - great. Otherwise start with a Game Boy game and GBDK.