This is a work in progress Commodore 64 emulator written from the ground up in C. I'm lucky enough to own an original Commodore 64 together with the technical reference manual, and using both of these I was able to create a working emulator.
My first step was to code the MOS 6510 processor core. From there I coded the memory manager, the I/O, interrupt handling, the VIC chip etc. All I then needed to do was plug in the original C64 ROMs (Kernal, Character Generator and Basic) and I had bare-bones emulated C64, which was quite a thrill!
This is still very much a work in progress. The CPU emulation is complete according to the technical reference, but unsupported opcodes are, well, unsupported. The VIC chip emulation is still very basic and there is no SID emulation at all as yet. I haven't been able to work on it for a few years now due to time constraints, but I am hoping soon to be able to rewrite it using SDL as the graphic/sound/input API instead of the Windows API which will make cross-platform compatibility much easier.