If I would have known about all the feature creep that would be happening from here to now I would probably never have started
This is a screenshot from 2007, where I'm debugging the differences between my VIC-II emulation and the real one.
Don't remember the function of all the columns, but one of the major ways to verify the implementation, was to compare the 12 lower addresses of the real VIC chip against the lower 12 addresses of the emulated one. The upper 4 address lines are not available on the cartridge port. Any difference in the addresses points to a fault in the emulation.
There was a moment where the emulation of the two disk-drives were added, which are totally not in the original plan. Like Jens wrote above the plan was just CPU + VIC-II emulation with a frame-buffer for VGA output. This also added a lot of requirements to the menu system, which was till then just a single page of configuration settings
Now with such a large part of the machine emulated, not only CPU, VIC-II and most of the buslogic of course, but also a large part of the CIAs for PS/2 keyboard and drive-emulation (So chameleon doesn't need a IEC cable for drive emulation as it replaces part of the CIAs), it was a relative small step to make standalone mode. As many people liked the small form-factor, the next step was the docking station so you really didn't need a C64 to operate the device. Also not in the original plan, but added later due to feedback from the community. The "How can I connect joysticks in standalone mode?" type of affair almost asked daily in our yahoo group (now discontinued).
Yeah and then it becomes obvious that the only thing missing for a complete C64 replacement is the SID emulation, so I needed to add that as well. Two SIDs of course because we like the extra feature creep, so stereo SID it had to be. Fortunately we already planned for an audio output in the design, but that was originally only meant for drive noises (which never got implemented btw) and alternative cores implementing other machines. I admit emulation it is not yet perfect (emulation of the filter is tricky), but much better as having no sound.
And that is why the FPGA is now 90% full, keeping in mind that the first prototype only had a 16 kLE FPGA, but was increased to 25 kLE due to the "add drive emulation" idea (I think). The first prototype actually had a slot so it could act as a co-processor for the C-One, which got later re-purposed for C128 80 columns mode input, which then got dropped when we discovered the C128 doesn't implement Ultimax mode correctly. It is impossible to access the color registers from the cartridge port and some other issues I don't remember. So we dropped C128 completely as requirement. Half solutions are no solution.
Yes, there is lots of history in this project.