Been a while eh?

So the truth is, this project grew beyond the scope I intended.

I originally wanted to work on the ares PS1 emulation core with upstream, and made my changes against the ares codebase. About two months worth in fact. There was a real performance bottleneck that required making deep changes like adding threading throughout the node system and the ruby video drivers. I also had to make some necessary sacrifices like introducing a recompiler and disabling unused features like breakpoints to get acceptable fullspeed performance.

Upstream regrettably wants to go in a different direction, continuing with higan instead, and I respect that, but the hopes of having my work merged upstream were dashed.

I'm also currently unable to debug issues in the emulator, for want of a debugger. The GUI of ares is built on a toolkit wrapper called hiro, and while it does its job, it's not at all suited for making the kind of interface a debugger requires (dockable windows, rich-text views for disassembly listings and the like). I don't know enough about all the various OS APIs to add this, and I don't want to take on maintaining a hiro fork too.

So I started looking into Dear Imgui to give me a GUI that I can make a debugger on, but it's a real undertaking to build an entire user interface from scratch rather than have one pre-made for me. I don't think people will like using a program built entirely on Dear Imgui alone either, it doesn't fit in with other desktop apps.

And even with all my changes, performance is still leagues behind Duckstation. Like 20X slower. The main bottleneck I see is that the recompiler (based on the N64 one) is really a cached interpreter. Making it into a real recompiler would mean also taking on a fork of nall to implement the 98% of the amd64 ISA missing from its recompiler, or moving away from nall onto something robust like Xbyak. nall is too ingrained into this codebase to be removed.

This is leading me to the conclusion I messed up trying to build on top of ares, and that a clean start is the way to go. But now I have to recreate everything, CD-ROM image format parsers, video / audio / input drivers, an entire GUI, and on and on.

So right now what was originally meant to be some side work to merge upstream has become a massive undertaking. I don't know what I'm going to do yet, but for right now, I'm paralyzed. Maybe my true calling is in writing documentation, and I can make some kind of Frankenstein's monster hybrid of hiro and Dear Imgui, and just keep it to myself.