Warning This project is archived (and very incomplete)! It will eventually be replaced with individual projects for some systems.
Firn is a generic system emulator, emulating full systems of numerous architectures (currently only x86).
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
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.
- 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
- Game Boy (Color) support
- NES support
- Super NES support
- Bindings for Java and other languages
- Modern x86-64 instructions and features
- RISC-V support
- ARM support
- Other old consoles
- Just-in-time compilation
Firn is licensed under either of:
- Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
- MIT License (https://opensource.org/licenses/MIT)
at your option.