Still working on the CPU, but now have to move onto a new test ROM and basic graphics :) https://leopardjs.now.sh/?id=412359353 (1-2 FPS normally!) Just test the rom if you want. On forkphorus/garbomuffin.github.io the webpage may freeze, that's fine. It will resume after ~1-3 seconds. On Scratch this process will take ~20 seconds. Versions (I promise I won't keep just adding ".1" to the end of versions): Release (7/17/2020): UI, loads ARM7 memory with all 0s, can read and write to memory, can import roms, has cycles. No instructions yet. v0.0.1 (7/18/2020): Added more flexable memory reading and writing on the ARM7, and can identify most instructions on both CPUs. v0.0.05 (7/18/2020): Added branch instruction and working on data transfer instruction. Reading and writing to all memory is working properly (apart from online stuff but why would I need that) v0.1 (7/18/2020): Added the first graphic mode (kinda)! The "NDS.TinyFB" test rom has been defeated! v0.1.1 (7/18/2020): Pretty sure I've fixed the cycles. Frames happening much faster now! Also added a scanline system as opposed to a stack system for 2D mode 1. v0.1.1.1 (7/18/2020): Cycles fixed again. Was running them 4x faster than I was supposed to... surprisingly not even a 2x speed loss... for Scratch at least. Forkphorus slowed down 2x. v0.1.1.2 (7/18/2020): Literally only centered the screen. No speed change, just made the graphics look better. v0.1.1.3 (7/19/2020): Added VBlank and HBlank. This inevitably made it slower, but far more accurate, so many things would render correctly. (Actually it didn't slow down Forkphorus hardly at all)
Imran Nazar (Not the Islamic Scholar. The person who made the article that pops up if you search "Imran Nazar Gameboy") for the test ROM "NDS.TinyFB", aka "The smallest .nds file". I have modified this ROM in some way to make it display differently (Currently it just increases the color as it goes) The file should fill the top screen with red. That's it. If you can get that working than that's very impressive on its own! Speeds: v0.1: Scratch: 100.24 SPF (0.01 FPS) Forkphorus: 5.745 SPF (0.174 FPS, 17.5x faster) v0.1.1 (incorrect rendering speeding it up): Scratch: 18.59 SPF (0.05 FPS) Forkphorus: 1.216 SPF (0.82 FPS, 15.29x faster) v0.1.1.1: Scratch: 30.18 SPF (0.033 FPS) Forkphorus: 2.624 SPF (0.38 FPS, 11.5x faster) v0.1.1.3: Scratch: 54.48 SPF (0.02 FPS) Forkphorus: 2.882 SPF (0.35 FPS, 18.9x faster) turbowarp: 1.83 SPF (0.55 FPS, ~30x faster than Scratch, 1.57x faster than Forkphorus) Leapord: 2 FPS (3.66x faster than turbowarp, 109x faster than Scratch)