A big update is coming soon
You know that Trace Logger tool in FCEUX emulator, right? You know how laggy the emulator gets while using it? You know those enormous output files it produces?
That's all in the past now. I've hacked the emulator to output only the most important data that I need, while doing it as fast as my C++ skills (which are at the beginning level) can afford.
Despite being a noob, I still did a pretty good job. Right now I'm running my Double Dragon 2 walkthrough movie file at turbo speed while tracing, and still get 100+ FPS.
I've also found and hacked a tool called Remove Duplicate Lines, in order to work with all the files in a folder, not manually selecting a file after another. This reduces total 27,7 GB output files from a 45 min movie to 1,7 GB.
When I accumulate all that data and produce a 15,7 MB dump with my script, I get:
- all A, X and Y values, presented at the moment when the instruction was about to be executed
- if it was a JSR, absolute JMP or indirect JMP, I have info about all ROM and RAM addresses they've jumped to, not NES addresses
- all ROM and RAM addresses to which RTS was leading to
- all ROM and RAM addresses, calculated via instructions like LDA (addr),Y and LDA (addr,X)
If you know a thing or two about NES romhacking, and also about making disassemblies, I think you understand the value of this dump. And when I pass it to my disassembler, a true magic will happen
The whole collecting data thing took me about 80 min in this case.
I think that I probably won't be needed a CDL file for my disassembler anymore. By having info about X and Y values I can determine which bytes were read via absolute indexed instructions, so what else can I ask for? The only thing that I can think of is being able to see DPCM samples with a CDL.
Other not so important things that I wanted to log are the state of status flags register, and also banks id for 8000, A000, C000 and E000 NES addresses. But the emulator started to get a bit laggy, and that info isn't very useful comparing to other, which is sufficient.
If you have any other ideas, I'm all ears.