Skip to content

EdMcBane/rustyworld

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RustyWorld

Rust implementation of Another World (aka Out of this world) game engine.

Intro video

I wanted a fun project to challenge myself while learning Rust, and what better than Eric Chahi's masterpiece on its 30th anniversary?

I started from Fabien Sanglard's articles and implementation, based in turn on Gregory Montoir's original work.

I hadn't had so much fun programming in years! Thoroughly recommend trying yourself.

How to run

Right now it is pretty barebones:

  • copy the original data folder in $PWD/data
  • cargo run

Highlights

  • mostly complete, main missing feature is load / save
  • tries to provide a cleaner model for the VM, which is compatible with the source material but often more generic
    • clearly separates instruction decoding from execution
    • opcode arguments and flags are parsed early, simplifying downstream logic
    • groups several opcodes together, with the instruction decoding stage providing compatibility with original resources
      • conditional and unconditional jumps are a single opcode
      • mov/movc, add/addc, etc are grouped together, with immediate and register variants for arguments
    • threads have an unbound stack
    • redundant vm state has been removed (e.g. requested_state, requested_pc)
    • uses one byte per pixel in video pages
  • uses minifb for video and input, and rodio for audio; should work cross-platform, but I only tested it on Linux right now
  • still a work in progress

Next steps

  • curious to try WASM...

Credits

See also

Other Another World engine implementations in rust:

About

Rust implementation of Another World (aka Out of this world) game engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages