so I just realized I did a sizable project and never posted about it publically

last year I spent a few months on and off reverse engineering Pinball Fantasies (a 1992 video game; originally for Amiga, though I was reversing the more polished DOS port) with the intent of doing a game engine recreation, and then rewrote the logic as a Rust program

you can grab the result here: https://github.com/wanda-phi/pfr/ ; if you're interested in the internals of a 1992 DOS game written by demoscene people, I wrote down some (rather incomplete) notes here: https://github.com/wanda-phi/pfr/blob/main/TECH.md

I'd also like to thank @domi for porting this thing to browser environment with WASM, and hosting the result: https://pfr.sakamoto.pl/

enjoy!
@domi: by the way, you have some bugs in your MOD player code, I know exactly how the intro should sound on an Amiga, and it's off in a few places
me: oh, quite possible; I just did a direct transcription of the game's sound blaster driver code to Rust and there were some parts that looked sketchy
@domi: *listens to the DOS version* holy shit Wanda you replicated the bugs perfectly
this game has a lot of insane demo-grade optimizations done in the name of making this thing work on a 286, but my favorite is the fact that the ball pixmap is stored only as an unrolled x86 machine code function that pokes every pixel in sequence, and my recreation includes a disassembler that recovers the pixmap: https://github.com/wanda-phi/pfr/blob/main/src/assets/table/gfx.rs#L144
in retrospect, this may have been an insane overkill amount of effort done just because I wanted to add this high-res mode
Follow

@mwk TIL (better late than never) the most uncontrovertible reason for using a monitor in portrait orientation

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.