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%
Find a file
2025-12-24 14:07:05 +13:00
docs initial commit 2024-12-12 12:01:42 +13:00
lib GUI WORKS 2025-05-28 23:12:02 +12:00
resources initial commit 2024-12-12 12:01:42 +13:00
scripts an absolute garbage preprocessor, and some other changes 2025-02-17 21:04:22 +13:00
src remove comment 2025-09-20 07:12:47 +12:00
test an absolute garbage preprocessor, and some other changes 2025-02-17 21:04:22 +13:00
.gitignore implement a little more & fix missing = in mem_get bounds checking 2025-06-13 21:38:08 +12:00
flake.lock fix off-by-one in mem_get and mem_set 2025-06-05 12:14:17 +12:00
flake.nix ADD WORKS 2025-05-15 17:26:16 +12:00
fox32-nointerrupts-romdisk.rom WIP 2025-06-04 19:56:03 +12:00
fox32-nointerrupts.rom fox loop instruction 2025-05-21 14:08:32 +12:00
fox32-romdisk.rom it works! 2025-06-05 16:59:06 +12:00
fox32.rom it works! 2025-06-05 16:59:06 +12:00
fox32os.img IT WORKS! 2025-06-10 21:18:55 +12:00
LICENSE license 2025-05-30 21:09:43 +12:00
mintia-fox32-fre.img implement rloop & add minita image 2025-06-11 22:01:39 +12:00
project.json a little cleanup 2025-05-30 23:26:19 +12:00
README.md add more todos (for if I ever get back into working on this) 2025-12-24 14:07:05 +13:00
screenshot.png update readme 2025-06-11 22:20:30 +12:00

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

screenshot of fox33 running some applications

todo:

  • Fix that 0x04000000 bug (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>