TheLukeGuy / firn

❄️ A generic system emulator, currently focused on x86.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Warning This project is archived (and very incomplete)! It will eventually be replaced with individual projects for some systems.

❄️ Firn

Firn is a generic system emulator, emulating full systems of numerous architectures (currently only x86).

🎯 Goals

Firn is still very work-in-progress and unusable in any real-world scenarios. For the most part these goals are not yet met.

  • Support for many guest CPU architectures and system types
  • Highly configurable, usable in any scenario
  • Highly portable, usable anywhere that Rust compiles to
  • Nice and well-documented API for embedding Firn into other projects
  • API bindings for many programming languages

🗺️ Roadmap

Firn is still very early in development, so this roadmap will likely change in the future. It's currently a rough plan in chronological order.

💾 16-bit and 32-bit x86

  • Basic x86 instruction decoding
  • Full 8086 instruction set
  • Disk input and output
  • Audio and video support
  • Keyboard and mouse support
  • Fancy GUI for general use and debugging
  • <=i386 instructions and features
  • <=Pentium II instructions and features

🕹️ Retro Consoles

  • Game Boy (Color) support
  • NES support
  • Super NES support
  • Bindings for Java and other languages

🖥️ Far Future

  • Modern x86-64 instructions and features
  • RISC-V support
  • ARM support
  • Other old consoles
  • Just-in-time compilation

📜 License

Firn is licensed under either of:

at your option.

About

❄️ A generic system emulator, currently focused on x86.

License:Apache License 2.0


Languages

Language:Rust 100.0%