09:36 am - Might as well show off the code for my new HQ2x core...
...it's available for viewing/download here
as a commented but unfinished component.
The current 'framework' is centered around my rebuild to integrate it into zSNES, though it's still as generalized as the original HQ2x/3x/4x
code thanks to careful planning of separating calculating 'edge points' from the core logic of determining what to do with those edge points. (I honestly don't know what else to call the difference-checks the HQ system runs on. Is there a proper term for them out there?)
At the same time this 'inner loop' with all the data tables compiles down to only 180 bytes of data, and 160 bytes of code on i386, and fits entirely in-register on x86.
Though looking over the code, I feel like I've attacked a small nest of ants with a fuel-air explosive or something. At the same time, the code is lacking in detailed in-line comments below block-level notations of what section of code is doing what.
I have been doing exhaustive testing against the original HQ2x code each time to verify I'm getting the exact same results as it though, and there is fairly detailed commentary beside each data table to describe it's function and format, so the code is documented. I'm just not sure the initial layout of where I placed the documentation (beside each application-specific compressed data type as I built it) is appropriate, and may re-arrange and possibly re-write sections of it. Input from other coders appreciated.
Also, I believe I can re-use the same framework to process most of the other common emulator enhancement filters by only replacing the data tables used. I haven't researched this yet to prove it, but I believe the other filters can be mapped as subsets of the HQ set.0 comments