3 ms·
The Apple II is rather hard to emulate correctly. While most Apple II software is relatively easily supported, some corner cases are absolutely brutal to get r
by retrac 3y ago
The Apple II is rather hard to emulate correctly. While most Apple II software is relatively easily supported, some corner cases are absolutely brutal to get right.
For example, you can mostly treat the video system as a dumb framebuffer. But there are cases where this fails. It is possible to detect the vertical blanking period on an Apple II. [1] This relies on capacitance on the Apple II bus and very strict timing. On a real Apple II the value read from a non-existent memory address is not always 0, sometimes it's the last value read, which is sometimes the last value read by the video system which is overlapped with the CPU. To emulate this right, you need to emulate the whole video system lock-step and cycle accurate with the CPU.
The disk system is another major pain point. All of the timing and track movement is handled in software. Arbitrary disk formats can be created in software. One single spiral track was used by some games as copy protection. To support the Disk II completely requires emulating at a much lower level than that of 256 byte sectors. Some emulators going all the way for accuracy, use a structure, that is basically a map of the flux transitions on disk.
[1] http://deater.net/weave/vmwprod/megademo/vapor_lock.html http://deater.net/weave/vmwprod/megademo/vapor_lock.html
- djmips 3y agoIIRC the vertical blanking detection can fail depending on what cards you have plugged in as they may load down the bus.