Hacker News new | ask | show | jobs
by giovannibajo1 1550 days ago
It is pretty much understood in most aspects that pertain regular software development, though there are still corners that are investigated.

The most accurate and fast emulator right now is Ares (https://ares-emu.net), which bundles the Vulkan-accelerated RDP emulation with a recompiler for both CPU and RSP. It is extremely accurate in many regards and in general much closer to the real hardware than any other emulators (with cen64 being a close second). Other emulators manage to run most of the game library but using several hacks, while Ares keeps a zero-hack approach, so not everything works, but it is for instance far more compatible with advanced home-brew stuff which use the hardware in ways that the Nintendo SDK did not.

The most advanced open source library for N64 development is libdragon (https://github.com/DragonMinded/libdragon) which is currently growing very advanced RSP ucodes that do things that are not possible with Nintendo SDK. For instance, it was recently merged a command list support to send commands from CPU to RSP without any lock in the happy path, and fully concurrent access from both the processors. Another example would be its DMA support for fetching data from ROM that exploits undocumented partially-broken features of the RCP that were previously unknown to allow for misaligned memory transfers.

The most accurate source of hardware documentation is the n64brew wiki, which is slowly gathering accurate, hardware-tested information on how the whole console works. https://n64brew.dev/wiki/Main_Page. Unfortunately, it's still lacking in many areas (eg: RSP). It's a painstaking long work because there are many many documents floating around with partial or completely wrong information.

1 comments

thanks for sharing this! the emulator community is fascinating and inspiring
I find emulators to be one of the most impressive feats of software engineering out there.
At the bottom end they're really, really simple if someone else has done the grunt work of writing the CPU code. I remember back in the mid-90s my buddy and I wrote a Sega Game Gear emulator in one evening after grabbing a .c file for the CPU. Those 8-bit console GPUs are pretty simple.

But... once you get past the 16-bit consoles it all goes to shit. Something like a Sega Saturn with two CPUs and 3D hardware. Lord help me. I honestly would not want to even begin trying to emulate a PS3. Total respect to those guys writing emulators for modern consoles and actually getting them to play the software.