Changes

Emulators

No change in size, 25 September
*[[PDS development system|Programmers Development System]] is emulated by MAME
*[[Demon Development Cartridge]], [[Action Replay AMX]], [[Disc Wizard]] are not supported by emulators
 
<br>
 
= Rewind feature =
ACE-DL has a rewind feature, but it is not as good as it could be: [https://youtu.be/wIKGvpnJLUo Demonstration of rewind in ACE-DL]
 
Only the RetroArch CPC emulator has a proper rewind feature: [https://youtu.be/YwilYlSe5LQ Demonstration of rewind in RetroArch]. To reverse the game, the user press and hold the rewind button. And at any point, releasing the button makes time goes forward again.
 
A very simple approach would be to make a SNA for each frame and limit the RAM snapshot to 128KB, which is ok for 99% of CPC software. For a 10-seconds long rewind functionality, only 64MB RAM is needed (128KB * 50 frames * 10 seconds).
 
A more efficient approach is to store only the values that are changed in RAM between two frames, so that RAM can be restored when rewinding. This allows for long rewinds, even of a CPC equipped with a 4MB RAM expansion. Proof of it is the GBA emulator [https://youtu.be/Sfc_1NKbiKg SkyEmu demonstrating super long rewind] while needing very few RAM.
 
For debugging, going back to the previous instruction is easily implemented. The emulator has to store the time when the previous instruction was executed so that he can go back to that instruction. In the same way, emulators can provide access to the previous HBL, IRQ, VBL, etc.
<br>
*[https://www.cpc-power.com/index.php?page=detail&num=2266 The Untouchables] [https://www.cpc-power.com/index.php?page=detail&num=135 Batman The Movie] [https://www.cpc-power.com/index.php?page=detail&num=2318 Turrican] [https://www.cpc-power.com/cpcarchives/index.php?page=articles&num=80 Technical explanation] CPC keyboard clash [https://www.cpc-power.com/index.php?page=detail&num=2224 Thunder Blade (6 keys)] [https://www.cpc-power.com/index.php?page=detail&num=244 Agent X II (7 keys)] [https://www.cpc-power.com/index.php?page=detail&num=11846 Wishing-Well (8 keys)] [https://www.cpc-power.com/index.php?page=detail&num=1886 Score 3020 (9 keys)] Simultaneous keypresses for cheat mode
*[https://www.cpc-power.com/index.php?page=detail&num=19283 Raytracing in BASIC] [https://www.cpc-power.com/index.php?page=detail&num=6680 Reliefs Mathématiques] [https://www.cpc-power.com/index.php?page=detail&num=19273 Cherry Blossom] [https://www.cpc-power.com/index.php?page=detail&num=15685 Deuligne Julia Fractal] [https://www.github.com/litwr2/rosetta-mandelbrot Rosetta Mandelbrot] [https://www.github.com/litwr2/rosetta-pi-spigot Rosetta Pi Spigot] [https://www.cpc-power.com/index.php?page=detail&num=15734 Life] [https://www.cpc-power.com/index.php?page=detail&num=7460 Highway To Hell] [https://www.cpc-power.com/index.php?page=detail&num=8188 Chain] [https://www.cpc-power.com/index.php?page=detail&num=9281 Montre] To benchmark emulators using their fullspeed mode
 
<br>
 
= Rewind feature =
ACE-DL has a rewind feature, but it is not as good as it could be: [https://youtu.be/wIKGvpnJLUo Demonstration of rewind in ACE-DL]
 
Only the RetroArch CPC emulator has a proper rewind feature: [https://youtu.be/YwilYlSe5LQ Demonstration of rewind in RetroArch]. To reverse the game, the user press and hold the rewind button. And at any point, releasing the button makes time goes forward again.
 
A very simple approach would be to make a SNA for each frame and limit the RAM snapshot to 128KB, which is ok for 99% of CPC software. For a 10-seconds long rewind functionality, only 64MB RAM is needed (128KB * 50 frames * 10 seconds).
 
A more efficient approach is to store only the values that are changed in RAM between two frames, so that RAM can be restored when rewinding. This allows for long rewinds, even of a CPC equipped with a 4MB RAM expansion. Proof of it is the GBA emulator [https://youtu.be/Sfc_1NKbiKg SkyEmu demonstrating super long rewind] while needing very few RAM.
 
For debugging, going back to the previous instruction is easily implemented. The emulator has to store the time when the previous instruction was executed so that he can go back to that instruction. In the same way, emulators can provide access to the previous HBL, IRQ, VBL, etc.
<br>
8,338
edits