mirror of
https://github.com/Book-reader/fox33.git
synced 2026-03-31 02:00:08 +13:00
previously cat64-or-something (see branch main), now fox32 emulator bc I don't have to come up with an architecture design
- Nix 86.4%
- Assembly 13.6%
| docs | ||
| lib | ||
| resources | ||
| scripts | ||
| src | ||
| test | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| fox32-nointerrupts-romdisk.rom | ||
| fox32-nointerrupts.rom | ||
| fox32-romdisk.rom | ||
| fox32.rom | ||
| fox32os.img | ||
| LICENSE | ||
| mintia-fox32-fre.img | ||
| project.json | ||
| README.md | ||
| screenshot.png | ||
fox33: A WIP fox32 emulator written in c3
Note
It is recommended to build in a nix environment:
$ nix develop --impure
Warning
This project is an example of what happens when you use too many macros, don't do what I did and your code will be so much more maintainable
todo:
- Fix that
0x04000000bug (so painful :() - Run fox32rom successfully
- Initial Gui & see fox32rom framebuffer
- Implement Gui overlays
- I/O stuff:
- mounting disks
- mouse
- keyboard
- rtc
- Interrupts/Exceptions
- boot fox32os
- Get fox32rom functioning completely
- Get fox32os functioning completely
- get all fox32os apps functioning (only missing some simple instructions)
- Implement all instructions fully
- MMU
- swap sp so I can run minita
- internal refactoring of error handling
- refactor convenience macros to be more convenient & less awfully hacky (they will bever be entirely hack free tho (cry about my overuse of macros lerno >:3))
- implement audio
- make clock rate stable at 33Mhz & make vsync consistently timed
- Any other things I can think of
building:
$ c3c build -D <build flag> -O5
build flags:
- DEBUG -> print almost too many debug logs
- PERF -> print the time taken to execute 30M instructions (target <= 1 second for 30Mhz)
- NOWARN -> silence runtime warnings, mostly unimplemented methods
- FOXLOG -> print debug logs in the exact same format as the fox32 reference emulator
- MORE_PERF -> inlines all instructions for a performance boost at the cost of compile-time
usage:
$ ./build/fox33 <boot rom> <disk0> <disk1> <disk2> <disk3> <index out of bounds error>
