The Casio Loopy was built to print cute stickers. Now it runs DOOM. LoopyDOOM pushes the 16MHz console through six playable maps, working music and printable screenshots. Yes, it’s real—and it may be the strangest DOOM port yet. #Doom#RetroGaming https://t.co/n3CRdaYjfy
NASA's New Horizons probe has woken up in good health nearly 6 billion miles away beyond Pluto after spending nearly a year in hibernation. https://t.co/kxo59Yax3b
The Sega Dreamcast just got a Windows CE desktop, turning Sega’s console into a tiny retro computer with apps, file browsing and a workstation-style UI. A wild new chapter for Dreamcast homebrew and retro computing. #Dreamcast#Windows#retrogaming https://t.co/pFuAupyBRX
jnmartin and I just spent the last 12 hours straight locked into an epic tag-team, binge-coding session. We've decided to return to perfect our port of Mario Kart 64 to the Sega Dreamcast, bringing with us all of the skills, knowledge, and tools at our disposal that we gained from every port we've been involved with since we originally released MK64 DC to the public.
1) jnmartin has just completely redone the audio synthesis and mixing code. It was originally emulating the Nintendo 64's RSP in software, on our CPU, and wound up being a total resource hog, despite us going to hell and back again, substantially boosting its performance by vectorizing it with our SH4 SIMD instructions.
2) Now that the audio is actually offloaded to the AICA, we can leverage its DSP to put back in effects such as reverb and echo that we simply didn't have the CPU budget to implement before... so the overall audio quality of the port will be SIGNIFICANTLY improved.
3) jnmartin has been working on many small bugfixes, such as the near-Z clipping edge-cases that would cause corrupted triangles to draw over the players' screens sometimes in 3 and 4 player modes.
4) jnmartin just kicked GLdc--our OpenGL 1.1 driver, built atop of KallistiOS--to the curb and has instead implemented a bare-metal renderer that raw-dogs KOS's lowest-level PVR GPU driver directly, giving us more control and better performance within the renderer.
4) I just implemented support for playing with the Sega Dreamcast keyboard peripheral as a controller, partially as a flex, and partially because jnmartin kept complaining that he only had 3 controllers for testing... 🤣
4) I have taken my entire accelerated math and linear algebra library, SH4ZAM--which was born just after this port was originally released--back with me this time and am optimizing every freaking thing I can get my hands on with it. Every matrix multiplication, vector transform, memcpy-call, and scalar or trig routine is getting swapped out for the corresponding hand-optimized, meticulously benchmarked, and rigorously unit-tested equivalent within SH4ZAM, which now ships as part of kos-ports.
As you can see from this series of direct hardware captures, overlaid with the terminal window which was capturing the FPS logging reports from my actual Sega Dreamcast, the performance is now SIGNIFICANTLY better than it was previously, and it already ran on-par or slightly better than the N64 original under most circumstances! Sooo many GAINZ to be had! 💪
There are a few things that I look back on as my mistakes in the early days.
Quake was overly ambitious technically. We could have done all the great multiplayer and modding work inside a Doom++ engine, allowing the designers to work with a more stable base instead of rug-pulling everything out from underneath them a couple times. The follow up game could have then brought in full 6DOF environments and characters.
I pushed everyone too hard. I didn’t appreciate how maturing companies need more slack, and that running people at startup intensity constantly will wear them out. Quake was also where I really had to accept my personal limits. I was working pretty much as hard as humanly possible, and I was still slipping past my goal points.
On all of the founders’ shoulders, our original corporate stock arrangement and buy/sell agreement was a mistake, and resulted in bad incentives. We wanted to ensure that all ownership rested in the hands of people working hard on current projects, but the Silicon Valley standard approach of vesting stock would have worked out better.
One real problem that I don’t accept the blame for is that we were insisting that level designers be not just game designers, but also have strong visual design esthetics. They needed to make things that not only played well, but looked awesome, and it got more challenging as the technology provided a richer palette. Romero covered that well, which set our company expectations early on.
We should have figured out how to pair up artists and designers earlier, but there was infighting among the designers, and the ones that could manage the visuals were happy to disparage the ones that couldn’t.
Sorry, Sandy.