NES Emulator
I have just uploaded one of my old (but barely started) projects. It is a NES emulator written in python. https://github.com/x0r9/pyNESEmu
At present it doesn’t even emulate half of the 6502 processor instructions. But as part of me delving into datasheets about the system, I have had to create my own dissembler.
I have never created my own dissembler, but I was naturally excited to do it, as I enjoy writing my own reverse engineering tools. Using your software skills to create tools to improve your own (and maybe others) software.
Presently I understand the initial start up code of the most games. The prime reference I am looking at is the original Super Mario binary. It starts off waiting for the video/PPU to start a scanning a new frame before processing. I imagine this is more of a wait for the thing to boot up and start running.
But it soon starts to get a little complicated when the code calls sub routines. I think I will need to get my dissembler to book mark jumps. And automatically give them place holder names.
Another tool I will need to add into the dissembler is naming and marking of particular addresses, such as when it reads peripheral registers, like the PPU. This may be hard as hard/absolute addresses are not used. And may have to think about how it is possible to pick these up. But I will have to see how the code works first.
So I think I will continue progressing on the dissembler, as my emulator seems to be getting itself stuck in loops where It is waiting for the console hardware to give off the right signals/flags. Peeking further ahead in the assembly may give me a better idea of what it is preparing to do.