I'm just a dreamer (Patreon)
Content
Hi Everyone,
I finally need to reveal what I'm working on. 3 months of relative silence is quite a bit and my emulator is about as far as where my PSX emulator was when I revealed it, so let's do it today.
Also with all the time I already spend and how important that system is for me, I will not give up anyway now, even if things get difficult.
You can already guess with the screenshot what system it is: my childhood dream, the N64.
Wait, wasn't that impossible on MiSTer? Yes and No and we will come to that, be sure. But first let me explain my motivation.
When I was 12 years old and stood before a N64 in a local electronics market and could play Mario 64, I was hooked right away. I can't remember any other game in my life that impressed me so much as moving around in this colorful 3D world. It was such a twist coming from the gameboy and see that this is even possible.
I got the console half a year later on Christmas and loved it so much. Both with single player games, as well as playing with a friend. We spend endless time in Smash Bros, Mario Kart, 007 TWINE and other games. Even when I got my first PC some years later, the N64 was still our multiplayer device for several years.
How could I work for 18 months on a PSX core when I had spend less than 100 hours playing on a PSX as a child and not work at least the same amount of time on the N64? Of course I had to do it!
This journey began with the PSX2X core, which uses the PSX MIPS CPU at 66mhz. It was a smoke test I made to see how feasible it could even be. And wow, after removing only some minor parts of the CPU, which are not required for games, Quartus was able to build this with timing closure! Timing closure means, every DE10-Nano can run it at this speed. It's like running the AO486 core at 50Mhz, while running the AO486 core at 90Mhz is comparable to overclocking.
I guess it's not known for everyone, but the N64 uses the same MIPS architecture as the PSX. It's basically the same CPU with some parts added: Data Cache, TLB, FPU and 64 Bit instructions. Oh and also it's running at 93Mhz .... But maybe there is a chance?
Well, let me be honest to you: we will very likely not see the fully fledged N64 CPU running at 93Mhz with timing closure. But there is a slight chance we might see it running overclocked in this area?
I cannot tell you today what will be possible, but I can assure you that I'm eager to work on this and make the very best I can. What I can tell you already is, that there are ways to work around this issue that will still make the CPU more accurate to the original than the current generation of software emulators.
Also I will make sure to develop the CPU fully accurate and just reduce things down for MiSTer to make games run at full speed, so that when we will have some more powerful board in the future, the core can be fully accurate from the very start.
I will not speak much about the other parts of the console today. While they are complex and large, probably nothing outside the CPU is really a problem for the DE10-Nano. If at all, the total size could be, which still needs to show. But I already have ideas how to make things small. In worst case some parts like savestates have to be removed.
The often mentioned fast RDRAM of the N64 is slow compared to the DDR3 on the DE10-Nano: while the RDRAM can deliver 9 bit with 500Mhz, the DDR3 interface we have in the MiSTer framework can deliver easily 64 bit with 100mhz, which is already more bandwidth and we could increase that further.
I will talk more about the single subsystems as soon as it's time for that. For now, let's wrap it up with the current progress:
- CPU: 60%, TLB missing, most other parts implemented
- RDP(Graphics): 40%, many fixes over the last two weeks, but several features still missing
- Memory 80%, all DMAs and Memory areas implemented and working so far
- FPU: 80%, all features implemented and tests fulfilled so far
- RSP(second CPU): 60%, all features implemented and tests fulfilled but not pipelined yet
- Inputs: 50%, no change, works in games
- Sound: 50%, no change, seems to be ok as far as I heard it in the games
- Saving: gamepak EEPROM implemented, no gamepak SRAM and Controllerpak yet
You can see that still some parts are missing or need improvements. I must learn about them first before I can start with the FPGA core, otherwise I risk that I need a rewrite. But my goal is that you can try a first homebrew demo yourself on your MiSTer still in summer this year.
Thank you for your support. I hope you are as excited about the N64 as I am.
Have fun!