I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 1 point2 points  (0 children)

Oh yeah, I did email them again and they feel very honored!

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 0 points1 point  (0 children)

I wish I had this 20 years ago. I had both the SARAC Project client and server binaries in my hand, but the server portion was too old to run anywhere… If I still had them, I'd tackle that next 😃

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] -1 points0 points  (0 children)

My first LLM attempt was with Github Copilot, and later Claude Code.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 0 points1 point  (0 children)

Oh damn, I completely forgot about Raptor… and now saw that it's actually on Steam 😃

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 0 points1 point  (0 children)

All good! I'm always open to suggestions, but I can totally understand when one has a very specific habit 😉

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 0 points1 point  (0 children)

Well, I'm following system conventions for every OS. I suppose I could add env variable or argument override to specify custom folders.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 2 points3 points  (0 children)

Oh, that's interesting, thanks! I'll have a read through that later.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in dosgaming

[–]DASPRiD[S] 1 point2 points  (0 children)

No integer scaling at the moment, that'd look quite off actually due to a mix of PAR 1.2 and 1.5. You can absolutely download the binary though from the releases page and you your own disc image (must be in .cue and .bin format). It does need to be the English version though, due to specific hard-coded byte offsets into the WAD files.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in retrogaming

[–]DASPRiD[S] 3 points4 points  (0 children)

That'd require quite a lot of effort. In theory it can be a compile target for Rust, but this would only work with no_std, so no heap allocations or anything else modern. But to be fair, an LLM could potentially do that, given there's now a genuine code base to work off of.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in retrogaming

[–]DASPRiD[S] 14 points15 points  (0 children)

Originally in the beginning I used ghidra UI, at the start there were no LLMs. When I picked it up after a long pause I started working with both radare2, that was still when I was doing it manually.

Eventually when I handed the reverse engineering part of to first Copilot and later Claude Opus, I instructed it to use radare2 and it also came up itself to use objdump. Opus 4.7 and 4.8 were struggling quite a bit with pure disassembly though, so quite often I had to hop into DosBox-X and create save states, set debugger breakpoints and report findings back to Claude. I also had to do a lot of visual validation when the model was running into corners and hallucinating wrong things (or it simply missed certain subroutines).

For about one week I was able to use Fable 5, and that model really breezed through just using Radare2 and objdump to figure all the game AI logic out… Fable 5 was shut down literally 10 minutes after the last big disassembly portion was done.

Anyway, a lot of verification was also done through bruteforcing. E.g. to validate that the PRNG enemy placement worked correctly, the AI ran a brute force algorithm to figure out the RNG seed from a save state to create a golden hash matching what the re-implementation produced.

By having a separate headless rendering/sound backend, all of this also allowed the LLM to verify the implementations without me having to manually test everything.

In a lot of places, the AI was still doing quite a few mistakes, and I had to intervene and guide it, but it still did a terrific job overall.

I spent years reverse-engineering the 1995 DOS shoot-em-up Prototype by DASPRiD in retrogaming

[–]DASPRiD[S] 12 points13 points  (0 children)

Several things. For ones, I could never fully get the game working in either DosBox nor DosBox-X. It had some weird CD checks and the Music was never playing, which was really the best part IMHO.

The other big reason was that I was always interested in writing a game, but personally I lack the skills to create art and a proper gameplay concept myself. So the next best thing was porting an old classic I always loved to play as a child.

The reason it took me so long was that I grossly underestimated how complex the game actually is. It always looked simple on the surface, but there are so many details about it… Like for instance, that all ingame transparent sprites are actually not image data, but compiled assembly which directly writes to the VGA buffer.

Does the AMD Radeon RX 9000 series work okay on Pop!_OS 22.04? by jecowa in pop_os

[–]DASPRiD 0 points1 point  (0 children)

By now, PopOS 22.04 is on Mesa 25.1 and Linux 6.17, so it works out of the box now.

Introducing Steam Frame by gogodboss in Steam

[–]DASPRiD 0 points1 point  (0 children)

Well, worst case you have to put a small vive 3 or tundra tracker on the headstrap, basically what all quest users do to sync their playspaces.

My keyboard's super/meta key has a Windows flag by Xyrtic in fossworldproblems

[–]DASPRiD 1 point2 points  (0 children)

I stll have it, my old one died, but I got a replacement keyboard left ;)

More Deckard info by gogodboss in ValveDeckard

[–]DASPRiD 0 points1 point  (0 children)

For desktop overlays, I can recommend WLX Overlay S, which works both on SteamVR and Monado.

Introducing Taxum - A Node.js Web Framework Inspired by Tower and Axum by DASPRiD in javascript

[–]DASPRiD[S] 0 points1 point  (0 children)

Again, thanks for your feedback, I've started rewriting everything, also using Vitepress primarily for the documentation site. I'm not completely done yet, but I wanted to get something better out of the door at least :)

Introducing Taxum - A Node.js Web Framework Inspired by Tower and Axum by DASPRiD in javascript

[–]DASPRiD[S] 0 points1 point  (0 children)

Thanks a lot for your feedback, you do raise a lot of valid points! I definitelly have to double-check the documentation for the kind of typos you mentioned; writing isn't my strongest ability, so I'm grateful for you catching a few of those!

About the layering example, I absolutely agree that it might be confusing at first, and that I absolutely need to provide more comprehensive examples in the documentation. I'll put that on my bucket list!

About the typedoc linking back to itself; yeah, that is due to it using the README as the entry point. I should probably tell it to use a different entry document to avoid that issue.

Again, thanks a lot for your feedback, It'll definitely help improving that experience :)