mwk , Englisch
@mwk@donotsta.re avatar

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!

mwk OP ,
@mwk@donotsta.re avatar

@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

mwk OP ,
@mwk@donotsta.re avatar

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

  • Alle
  • Abonniert
  • Moderiert
  • Favoriten
  • random
  • haupteingang
  • Alle Magazine