Short: Amstrad CPC/CPC+ Emulator Author: offset@cpcscene.net (Philippe Rimauro) Uploader: offset cpcscene net (Philippe Rimauro) Type: misc/emu Version: 1.16 Architecture: ppc-morphos >= 3.9.0 ACE 1.16 The acidulous CPC/CPC+ emulator by Philippe 'OffseT' Rimauro For the latest version, check http://ace.cpcscene.net Introduction ------------ An Amstrad CPC emulator? Again? Yes! Yet another CPC emulator! Anyway, ACE is different. ACE is not based on any existing emulator and was coded from scratch, using a real CPC as reference in order to provide the best Amstrad CPC emulator ever. The current version of ACE does not offer all the expected features yet. Nevertheless, almost all of the Amstrad CPC and Amstrad Plus games and demos are working perfectly; actually, the quality of the emulation is already superior to what the best CPC emulators on PC/Windows can produce (sorry guys, only Amiga makes it possible! Again...). In addition to the high quality emulation, ACE features full screen and overlay display, editor and analyzer windows for all emulated CPU and chipsets, video recording, advanced breakpoints management, a very powerful set of AREXX commands for cross-development, a plugin interface... and much more... History ------- Version 1.16 (18.03.2018) - Fixed a FDC timing when starting a reading/writing operation (some abnormally slow track loaders should now be as fast as expected). - Fixed a potential crash (at least a memory hit) when attempting to reach a non-existing track of a disc. - Added a FILE argument to RECORDSTART AREXX command to be able to provide a specific file name (similar to GRAB AREXX command; if not given, automatic naming in the default drawer is still used). - Added an Ambient filetype for ACE video recordings (AREC files), located in the "Bonus" drawer. - Added a new tooltype AP=AUTOPAUSE and a related preference menu item to automatically pause or start the emulation when the main window becomes inactive or active again. - Improved internal APIs regarding CPC memory handling from MUI windows. - Added an update shifter shared between CPU consuming real time windows (Z80, Memory, DMA) to better distribute display time over the frames. - Reworked code of memory and disassembler windows to share a new private MUI custom class to handle user defined memory mapping (much better MUI code!). - Added a contextual menu to both editor and disassembler areas to activate the real time update on them (everything else in ACE is of course still real time; it was not the case for these windows because of heavy CPU load but it now works better thanks to various optimizations). - Added MMR, RMR and RMR2 raw values display corresponding to the selected mappings in both the memory editor window and the disassembler window. - Video recording now waits for 10 seconds and then updates the associated icon so that it has a better chance to be relevant. - Fixed broken keyboard cycle chain in Z80 editor, CTM preferences and joystick acepansion plugin preferences. - Fixed video recording to disable any allowed frame skip while processing. - Improved CPC+ ASIC IVR bug emulation (CRTC³ of Flower Corp. do not detect ACE anymore). - Removed one remaining call to CPC+ ASIC stuff in CRTC 4 emulation (harmless). - Disabled warning message on non-interlacted sectors when loading a DSK file (now most DSK files around which are using non-interlaced sectors are doing that on purpose and are no longer the result of some poor DSK creator tools). - Added support of symbols import from files containing a list of EQUs in the ImportSymbols.rexx script. - Fixed CPC+ ASIC timings regarding fine updates of hard sprites magnification and position registers (they are now matching the required 250ns precision like it was already the case for palette updates). - Fixed a bug in CPC+ ASIC raster interrupt management; it could be cleared before being processed. - Improved management of duplicated CPC+ ASIC raster interrupts (should now just be perfect!). - Optimized again a bit the code, specifically for CPC+ DMA emulation (quite a hard task to keep full featured Plus emulation running one frame on a little G4). - Reworked CPC+ DMA wait state management to better match actual internal behavior. - Fixed a few minor CPC+ DMA timings. - Fixed bit 7 of DCSR CPC+ ASIC register which was not set after a raster interrupt if bit 0 of IVR was 0. - Fixed a nasty hit at startup (reported by Michal 'rzookol' Zukowski). - Fixed add button of symbol management window to be disabled when symbol name is empty. - Fixed ASICPageOn condition token which was not working. - Fixed a bug in CPC+ handling of raster interrupt when enabled while a standard Gate Array interrupt was pending (prevented Eerie Forest of Logon System from working properly). - Added a combined build mode of the core source files to improve GCC optimization process (ACE is now 14% faster!). Version 1.15 (18.02.2018) - Fixed typos in french translation. - Fixed decoding of BIT/RES/SET opcodes over IX/IY on disassembler views. - Added new plugin API to inform about RETI execution (v3 API) - Added support for non-maskable interrupts issued from plugins (v3 API). - Added a tooltype "NOPLUSUNSTABLEHIZ" to disable emulation of the unstable Hi-Z when reading invalid addresses in the ASIC I/O page (let you run some buggy demos such as BarBar of Eliot/Benediction; anyway these demos are still not working properly on real CPC+ when expanded with Ramcard or Mulficace Two but there is nothing I can do about it!). - Added an item in menu preference to disable/enable the emulation of the Amstrad Plus unstable Hi-Z (related to NOPLUSUNSTABLEHIZ tooltype). - Fixed some badly mapped info bubbles. - Added support for video recording (fast hard disk I/O and lot of space required!). - Added a control button to start or stop video recording. - Added "RECORDPATH" tooltype to change the video recording path (defaults to "Records/" drawer). - Added an option to show parts of the display which are usually not visible because of being off-screen (mainly useful as a debug option for demomakers). A new related "OVERSCAN" tooltype was added as well as an checkbox to switch this mode on or off from the screen monitor preferences window (requested by NoRecess, and might partially match Grimmy request too). - Added keywords to check about RAM and ROM paging in breakpoints condition. - Added a field "size" to memory access breakpoints in addition to the already existing "address mask" (now all types of break based on memory areas are possible). ADDBREAKPOINT, REMOVEBREAKPOINT and EXPORTBREAKPOINTS AREXX commands where updated accordingly, as well as the field was added to the breakpoint chunk on snapshots (in a backward compatible manner). - Changed breakpoints editor window layout to make it slightly more compact. - Fixed CRTC 4 emulation which was using CPC+ specific stuff for some computations (it triggered weird behavior when switching from CRTC 3 to CRTC 4 while ASIC hard scrolling feature was in use). - Fixed a horrible memory leak which was introduced in version 1.13. - Added symbol management through AREXX commands ADDSYMBOL, REMOVESYMBOL, FINDSYMBOL and EXPORTSYMBOLS. - Added support for symbols in disassembly window (can be disabled). - Added support for MEM0-8 chunks of snapshots (can be disabled). - Added a workaround to deal with WinAPE wrong snapshots using CPC+ chunk (RMR2 is not stored at the expected location). - Added support for clipboard paste in emulator (similar to AREXX command KEYBOARDSTROKE with input injected from clipboard). - Added a symbols manager window with pattern filtering feature. - Added support for symbols in relevant 16-bit values inputs (for both matching and picking address). - Slightly optimized GUI task regarding notifications (about 5% faster). - Added direct support for cut and paste from clipboard in the memory editor to ease fast and one-shot manipulations (AREXX should always be preferred for complex or iterative copies). - Added support for a new snapshot chunk in order to store symbols. - Added string and hexadecimal sequence search feature in memory editor. - Increased reset handler delay to 3 seconds (instead of 1). - Added OSD indication for recording. - Added AREXX commands RECORDSTART and RECORDSTOP to control video recording. - Added an AREXX script which is able to import into ACE all the symbols found in a listing file generated by vasm or a symbol file generated by rasm. - Added a small command line tool named arec2raw which is able to convert AREC video files recorded by ACE into rawaudio and rawvideo files, and also to generate a dedicated script capable of encoding these raw files into a standard video format using ffmpeg tool (a 64-bit filesystem might be required for large video). - Fixed non-localized short keys in requesters (reported by Stefan 'polluks' Haubenthal). Version 1.14 (09.03.2017) - Fixed potential issue in Tape2HD wrapper directory detection. - Reworked Z80 editor memory layout and added a memory read/write map observer. - Removed bold display on labels in some windows to better match classic MUI applications graphic charter. - Updated german catalog thanks to Stefan 'polluks' Haubenthal. - Added shortcut access to video memory in memory editor window (requested by Krusty). - Changed layout of breakpoints window. - Re-optimized speed of CRTC emulation that had deteriorated in version 1.13 (ACE is now 5% faster). - Fixed some limit conditions on CRTC 0 when register 4 is set during end of screen (Kevin Thacker test suite). - Reworked internal AREXX interface installation. - Fixed plugins installation internal API to work properly when several emulation objects are created within the same application. - Added a tooltype "PLUGINSPATH" to configure the path of the directory containing the ACEpansion plugins to load. - Fixed (harmless) typo in a tooltype from CPC464, CPC664 and 464plus icons. - Simplified internal management of one-shot timers. - Fixed a possible race condition when using on-screen break. - Fixed a long standing bug where the beam cursor could be shortly (one frame long) displayed at a wrong position. - Speed up a bit the input stream of the key press injected from the "KEYBOARDSTROKE" AREXX command. - Fixed some timings on CRTC 0 when register 6 is reprogrammed during the last line of the screen (Kevin Thacker test suite). - Fixed timing of VSync immediate triggering on CRTC 0 when reprogramming register 7 (Kevin Thacker test suite). - Improved startup and exit sequences. - Added extensive check and warning reporting is case of mistakes in the tooltypes/arguments. - Changed declaration of internal hooks and MUI custom classes dispatchers to fix portability for AmigaOS and AROS. - Simplified a bit the reset handler. - Made hard sprites window resizable. - Reworked rendering MUI custom class internals to make it more modular regarding portability. - Reworked CRTC 0 emulation in several points (fixes Longshot's part of the Amazing Demo and might fix a bunch of other demos on CRTC 0). - Fixed several issues regarding vertical adjust handling on CRTC 0 (Kevin Thacker Test Suite). - Fixed bad 3" floppy disc drive seek speed capability which was introduced in version 1.13 (fixes some loaders that did not work anymore like the one used in Sappy of Semilanceata). - Fixed an issue in memory address handling on CRTC 3 and 4 when register 1 was greater than register 0 (Kevin Thacker Test Suite). - Changed internal timers management for AmigaOS and AROS portability. - Added charsets conversion support through codesets.library for AmigaOS and AROS portability (still using native charsets.library on MorphOS because it is *much* faster). - Added support for breakpoints on Maxam and WinAPE BRK opcodes. - Added an option in the windows menu to display the BRK opcodes as regular Z80 ones or as BRKM (Maxam BRK) and BRKW (WinAPE BRK) in the disassembly views. - Fixed an internal VSync trigger lock to be reset when CRTC register 7 is reprogrammed. - Added a "WAIT" switch to the AREXX command "KEYBOARDSTROKE" in order to wait for all the keys to be injected. - Updated the cross-development examples to use vasmz80_oldstyle Z80 assembler instead of pasmo. - Moved all the scripts (both AREXX and Lua) into one single "Scripts" drawer. - Added new icons for GUI, drawers, plugins and filetypes thanks to Mathieu 'Hwikaa' Delaruelle. Version 1.13 (07.11.2016) - Fixed file notification that was not cancelled when a DSK file could not be inserted. - Fixed a bug when locking ASIC and trying to unlock it again in a row (Kevin Thacker test suite). - Implemented CRTC and Gate Array write artefact while trying to read on its port (Kevin Thacker test suite). - Fixed some minor wrong behaviors on both PPI and ASIC PPI emulation (Kevin Thacker test suite). - Fixed a nasty bug when reading PSG data while no register is selected (some innocent memory was returned instead of doing nothing). - Fixed IFF1/IFF2 internal Z80 flags being updated too late after EI opcode (Kevin Thacker test suite). - Fixed some minor CRTCs issues (Kevin Thacker test suite). - Reworked internal border handling on CRTC 0 and 2 (no visible changes should occur). - Added a context menu on the input mode toggle button of the editable numbers to select between hexadecimal and decimal (requested by Krusty). - Cosmetic changes in memory mapping section of memory editor and disassembly windows. - Fixed a dead lock when using the disassembly window on addresses at the end of the memory. - Changed KEYBOARDSTROKE AREXX command to work in a frame-synchronized manner and to automatically simulate a press on [RETURN] after each input string (RAWKEYPRESS, RAWKEYRELEASE, RAWKEYSTROKE are still fully asynchronous). Some changes to your AREXX scripts might be required if you used this command. - Added a hyperlink in the "no HexEdit MUI custom class" message which points to the archive on Aminet in order to ease installation of this optional library (instructions and link was already provided in ACE guide though). - Removed numeric pad shortcuts on signs to let the keymap auto adapt feature use them like normal additional keys. - Added a menu shortcut for the "show/hide interface" feature in order to replace the removed one from the numeric pad (the other removed shortcuts already had equivalent menu shortcuts). - Added step over and step out features with related controls Z80 edit window. - Added keyboard shortcuts in Z80 edit window to play with step into, step over, step out and continue (control + arrows/return). - Reverted fix to have the VSync trigger not to start when displaying additional lines which was introduced in version 1.12. - Fixed endianess issue and added 64-bits support in localization code. - Slightly changed the START AREXX command (all stepping modes are now accessible). - Reworked CRTC editor window layout. - Reworked program arguments internal decoding and dispatching to ease portability. - Fixed Tape2HD wrapper potential issue if disabled during some operations. - Fixed a data access protection issue between the main task and the emulator subtask (no known related bugs). - Fixed a MUI event handler that was never removed before disposing the application. - Removed manual setting of Gate Array version in tooltypes, AREXX commands and GUI settings (it was useless since it is automatically resynchronized with the selected CRTC type). - Joystick plugin is now activated by default. Version 1.12 (16.07.2016) - Migration from gcc4 to gcc5 (slightly improved performance). - Fixed a bug in CRTC 0 emulation that prevented The Other World 3 Intro and Preview #3 from Overflow to work properly (indirectly reported by Megachur). - Replaced a fix from ACE 1.9 related to border management because it fixed Voyage 93 Intro but broke Welcome X 2 Part 1. Now both are working on the CRTC 0. - Fixed a CRTC 1 timing issue when register 4 was reprogrammed while it was evaluated internally at end of screen; it fixes Chany intro of Demoniak 5 (reported by Megachur). - Fixed reset of CRTC register 9 related counter to 0 when register 9 is reprogrammed while the register 4 is equal to 0; it fixes Chany's cracktro of Double Dragon (reported by Megachur). - Fixed VSync trigger not to start when displaying additional lines; it fixes Cuddly - Budbrain (reported by Megachur). - Fixed a bug in video address offset management during vertical adjust on CRTC 0, 2, 3 and 4. - Improved overflow detection in CRTC emulation depending on the CRTC type (used by CRTC information window). - Added a missing semaphore protection on some internal light pen API accesses that might have caused some weird behavior with phasers emulation. - Added a plugin to emulate the Kempston mouse. - Reworked internal design to allow injection of joystick events from plugins and bumped plugin API to v2 with a new Joystick() API for joystick port I/O emulation. - Removed build-in joysticks support and added a joystick plugin (which is loosely using the lowlevel.library for now; feel free to create a nice one from the new sensors.library!). - Added a plugin to emulate the AMX mouse. - Finally activated Z80 quantum-based internal context switching (set to 1/300 seconds). - Fixed broken version tag in ACE executable. - Fixed Tape2HD wrapper to return a binary file empty file instead of an ASCII empty file when opening a folder in order to avoid the firmware message "File not opened". - Fixed a bug that prevented loading of snapshots using optional chunks if they were saved from a CPC using more memory than the configured one in ACE. - Fixed some internals for 64-bit systems compatibility. - Disc drives are now automatically fitting the inserted disc image to select between 40/80 tracks drive and single/double side drive (it prevents some weak loaders from failing). - PNG files for screen grabs and snapshot icons are now saved directly using the png.library instead of Reggae. - Fixed ASIC border mask that was never stopped if bit 7 of SSCR register was cleared during the mask display (fixes BarBar/Benediction blinking logo). Version 1.11 (13.09.2015) - Fixed mode 2 pixel shift on CPC with CRTC type 4 (AMS40226). - Fixed a bug in drawing the blank part on the display which was introduced in v1.10. - Fixed a (by chance harmless) memory trash in frame buffer management. - Reworked internal frame buffer management to simplify the code and make compilation faster (because GCC is insanely slow!). - Added emulation of mixed border/display words bug at screen start when register 6 is set to 0 on CRTC 0 and 2. - Added emulation of half-border at end of line on CRTC 0 and 2 (can be seen in OUT(Dated)/Semilanceata). - Fixed a bug in catalog version handling. - Slightly changed tape configuration menu. - Fixed snapshot loader to support multiple additional chunks including unknown ones. - Added a AREXX command to export the current breakpoints in a REXX script. - Access to the configurable window is no longer forbidden while the breakpoint feature is disabled (the pages are just disabled). - Added support for a new "configurable breakpoints" chunk in saved/loaded snapshots. - Trying to load an invalid snapshot no longer resets the emulated CPC. - Added a warning on CRTC type mismatch when loading a snapshot. - Fixed a bug where the CRTC type stored in the snapshots was always the one set at startup and not the currently used one if it was changed at runtime. - Added a warning on firmware version mismatch when loading a snapshot. - Display warning option now works on snapshots warnings as well. Version 1.10 (15.05.2015) - Added german catalog thanks to Stefan 'polluks' Haubenthal. - Fixed overlay support to avoid a alignment problem that was triggered by MorphOS 3.8 (Stefan Blixth and Charlie). - Changed internal frame buffer memory management to optimize memory usage. - Cleaned up PSG emulation code and removed some (unused) alternative audio mixing code. - Added setting for screen horizontal hold (the small screw behind your CTM). - Changed internal audio buffer management to be more modular and insulated. - Added plugin interface in a form of libraries that can add some hardware expansion emulation to ACE without requiring any modification into the emulator itself. - Removed built-in Digiblaster support and implemented it as a plugin. - Fixed a bug where the emulation could be frozen a few seconds just after having disabled the audio output. - Added a tooltype IS=INTERNALSPEAKER and a menu option to mix the audio output as if the internal speaker of the CPC was used (not applicable on Amstrad Plus). - Removed built-in printer support and implemented it as a plugin. - Removed DB=DIGIBLASTER, EP=EMULATEPRINTER, PF=PRINTERFILE and SLC=SCANLINECOLOR deprecated tooltypes. - Enhanced internal interrupt handling to better deal with interrupts coming from the new plugin interface. - Work-around for a weird reset of the CRTC register 9 related counter when register 9 reprogrammed just before the very beginning of a new screen. Version 1.9 (30.03.2015) - Disabled fire 3 on Amstrad Plus since it is actually not available on its joystick port. - Changed ESC mapping to the real ESC key of the host keyboard instead of the one being at the same location than ESC on CPC. - Changed some menu shortcut keys. - Added keyboard layout and joystick windows. - Added an option to automatically adapt the keymap from the CPC firmware to the keyboard layout used on the host (available through a AKM=ADAPTKEYMAP tool type and at runtime using the preferences menu). This new feature is really nice but pay attention to the fact it could be incompatible with some CPC softwares. More over, additional keys which do exist on host's keyboard but not on CPC are then mapped in parallel to the joystick 0, and "alt" + key combinaison is replaced by "control" + key on CPC (there is no "alt" key on CPC). Please note that "shift" + "alt" + key combinaison is also not accessible from the CPC side (multiple qualifiers is not supported by the CPC firmware). - Fixed a small bug in main window device tabs; some buttons could be enabled while they should have been disabled. - Fixed a stupid bug in memory mapping init that prevented Blue Angel 69 cartridge version to run (CraigsBar and TotO). - Fixed a bug in ASIC splt register handling on Amstrad Plus. - Fixed an issue in the emulation of the ASIC bug regarding DMA0 vs Raster interrupt mismatch, that prevented Allergy demo from Semilanceata to work. - Fixed a bug that was introduced in version 1.8 when using random values in ASIC and FDC emulation (max value was excluded). - Improved CRTC 3/4 emulation (fix several demos that were not properly running under CRTC 3/4 emulation; such as Glooms Demo, Camembert 4 and Black Sabbath). - Tuned some ASIC vs Z80 timings accordingly to the improved CRTC 3. - Added NPS=NOPLUSSCREEN tooltype to disable automatic switching to Amstrad Plus screen monitor horizontal position setting when Amstrad Plus emulation (or CRTC 4) is set. - Fixed scanline color option which was affecting overlay mode whereas it should be only application in WritePixelArray mode (broken since previous version). - Simplified internals related to beam management which were related to future features that won't come anytime soon. - Fixed double-click to toggle full screen that was not working before having moved the mouse. - Added a new window to view hard sprites palette and content. - Activated scale and aspect ratio support also in WritePixelArray mode (when no overlay is used). This mode (and some others ;) was already implemented in ACE v1.8 but it was not available in the public version yet. A side effect is that the (ugly and useless) SLC=SCANLINECOLOR/S option will not work anymore in WritePixelArray mode (since it never worked in overlay mode too, it's now a void option that will be removed later). Also, old not- resizable WritePixelArray rendering code was totally removed. - Fixed internals to output alpha channel with the proper value when ARGB or RGBA pixel mode is set. - Slightly changed overlay buffer update sequencing. - Fixed potential issues in memory window updates when the ROM/RAM configuration was changed from AREXX interface or application menu. - Added missing FLASHFIRMWARE AREXX command to change firmware ROM. - Fixed a bug in border activation on CRTC 0, 2, 3/4 when register 6 was changed to a matching value (fixes Voyage 93 intro on these CRTC). - Removed useless manual charset selection menu. - Improved conversion between CPC charset and local charset to be based on firmware's symbols recognition instead of hardcoded tables, and to work with any local charset instead on being limited to ISO-8859-1. - Added a window to analyze the DMA channels activity. - Added relay sound feedback emulation. - Fixed some (almost) harmless bugs in PPI emulation. - Fixed some minor issues in Z80 vs PPI vs PSG vs DMA bus accesses arbitration. - Implemented all possible combined (illegal) instructions within DMA. - Added a Lua version of the REXX script for cross-development example. - Added NTS=NOTAPESOUND and NTR=NOTAPERELAY tooltypes to disable related tape audio feedbacks. Version 1.8 (19.11.2014) - Added a check on the screen mode to prevent ACE from being launched on an incompatible (8 bit) screen. - Added drag and drop support on main window and appicon for disc, tape, cartridge and snapshot files. - Re-introduced experimental automatic frameskip mode and MS=MAXFRAMESKIP tooltype (disabled by default). - Added screen grabbing feature and related GRABSPATH tooltype and GRAB AREXX command. - Added shortcut key F11 to save snapshot at will. - Added pixel modes and changed buffer management scheme of the display module. - Added NW alias for NW=NOWARN=NOWARNINGS tooltype. - Save an icon with a screen grab when creating a snapshot (can be disabled using the NSI=NOSNAPSHOTICONS tooltype or the preferences menu). - Minor improvements in the window to show information about the currently emulated CPC. - Fixed some internals regarding update triggers. - Fixed some potential memory trash at double start. - Added a NAG=NOANTIALIASEDGRABS tooltype to save raw grabs (also available from the preferences menu). - Changed catalog versioning which is now bumped to version 10.0 and will not change anytime soon; that way translators could provide some alternative catalog that will remain compatible with upcoming versions of ACE (only the newly introduced texts won't be translated using alternative catalogs). - Fixed an audio shift in sample computation that was introduced with tape integration. - Added automatic append ".sna" extension to snapshots saved through the file requester if missing. - Adjusted some compilation flags and removed some misleading casts in the code in order to ease AmigaOS 4.1 port. Version 1.7 (15.06.2014) - Added tape emulation through audio files (read only for now). - Added TAPESPATH tooltype to choose the tape audio files default path. - Added firmware ROM for French CPC464. - Replaced CP/M 0.7 ROM that was wrong in previous packages. - Added OS=OSVERSION tooltype to choose the operating system version number to use (from 1 to 4). Note that any version of the operating system is compatible with any CPC model; even version 4 that was used on Amstrad Plus is fully compatible with old generation CPC range. By default version 3 is used because most softwares are known to work with it. - Added NDI=NODISCINTERFACE tooltype to totally disable the floppy disc drive interface in order to emulate a stock CPC464 or 464plus. - Reworked the Preferences menu to make it easier regarding the new options. - Added a check to disable the Trojan Light Phazer if it was active when switching from Amstrad Plus to Amstrad CPC emulation (Trojan Light Phazer is only available on Amstrad Plus). - Fixed a bug in the Tape2HD wrapper that resulted in a corrupted firmware ROM when it was disabled at runtime. - Added TAPE tooltype to specify a tape audio file to be inserted at startup. - Added TAP=TAPEAUTOPLAY tooltype to activate automatic play when a tape is inserted. - Moved all system ROM used by default in a "System" drawer rather than the "ROMs" drawer which is supposed to be used for user's extension ROMs. - Fixed a small layout but in the disassembler window. - Added AREXX commands related to tape management. - Fixed a bug in event handling where the tab systems for the devices cought some key pressed prior to the emulator engine. - Changed some keyboard shortcuts. - Added a CPM=AMSDOS tooltype to configure the build-in disc ROM 7 (this is different from ROM7 which represents an external ROM 7). - Fixed bad help node reference in screen monitor preferences window. - Avoid any other brand than Amstrad when Plus emulation is activated. - Added a window to show information and picture about the currently emulated CPC. - Added some icons for ACE's main drawer and for discs, tapes, cartridges, snapshots and ROMs drawers. - Added some icons to devices tabs. - Added preconfigured project icons to emulate stock CPC464, CPC664, CPC6128, 464plus and 6128plus. - Added some preferences that were only available through tooltypes into the menu so that they can be changed at runtime. - Changed the way of obtaining the name of the screen to open in full screen mode to always match the application instance. - Added a sanity check on the breakpoint command at startup (invalid command templates are now ignored). - Reworked CLI start mode to better deal with PROGDIR:. - Fixed a long standing bug during startup that prevented ACE from being launched several times from shell or from project icons. - Added a request to let the user choose what to do when ACE in already running and a new one was launched. - Added AREXX command to control ACE iconification. - Added filetypes & icons for Ambient to recognize DSK, CPR and SNA files. - Added generic multi-parameter FILES tooltype that auto-recognize provided file types and load them in the proper way into ACE. - Added LM=LAUNCHMODE tooltype to change the default launch mode of ACE executable from "Ask user" to "Single" or "Multiple". - Added an access to the help guide through the menu (useful when no HELP key is available on the keyboard). Version 1.6 (21.04.2014) - Fixed a bug in saved execution address in file header when using the Tape2HD wrapper. - Fixed start-up colors on Gate Array (PulkoMandy). - Fixed swapped grey and green color tables for screen monitor emulation in CPC emulation mode (Krashan & PulkoMandy). - Fixed light devices menu flags to avoid multi-selection. - Fixed a bug in the disassembler for block instructions. - Added a missing size field in the file headers created through the Tape2HD wrapper. - Fixed a bug in CASOutChar implementation of the Tape2HD wrapper (PulkoMandy). - Improved compatibility of CASInChar implementation of the Tape2HD wrapper. - Fixed inconsistencies in english translation. - Fixed vocabulary for some french translations. - Reworked main window layout to save space. - Added DKB=DKTRONICSBUGS tooltype to activate emulation of the DK'Tronics expansion memory bugs (DK'Tronics have trouble managing &C3 type memory commutation while an upper ROM is connected and does not handle the Amstrad Plus ASIC I/O page shadowing). - Added 64K=64KEXPMEMSCHEME tooltype to emulate 64Kio based CPC expansion memory scheme instead of common 128Kio based scheme (on 64Kio based CPC the main memory is switched when accessing non-existing memory pages instead of the build-in 64Kio expansion RAM of the 128Kio based CPC). - Slightly decreased the default size of the main window in overlay mode. - Added the current beam position to the video information window. - Reworked Z80 and CRTC windows. - Added user-resetable counters for microseconds, scanlines and frames. - Removed breakpoints from the main windows to put them into the Z80 window. - Added breakpoints on bad HBL/VBL timings (Vanity-proof mode!). - Added a real step by step mode (no need to enable/disable it by hand anymore). - Added STEP switch to the START AREXX command to control the step by step mode easily. - Added missing notifications for some AREXX command to synchronize the GUI. - Added support of OSD LED in non-overlay mode. - Added a fast forward OSD which reflect the wild speed mode status. - Fixed again the last known issue with CRTC 1 emulation which was not properly fixed in version 1.5. - Added little endian CPUs compatibility (Pulkomandy). - Added AREXX command to get and reset the user-resetable counters. - Added AREXX command to get the type of the last activated breakpoint(s). - Added UBC=USERBREAKPOINTCOMMAND tooltype to provide a command that will be executed at each encountered breakpoint. - Added watcher mode to the configurable breakpoints. - Replaced breakpoints threshold condition by a step matching. - Moved video monitor preferences from main window to a separate window. - Added possibility to give an optional name to the configurable breakpoints. - Added possibility to provide a complex condition for breakpoint matching. - Optimized the breakpoints runtime. - Fixed several issues in CRTC 0/2/3/4 emulation. - Added on-screen break to request the emulator to pause at a pointed position on the screen. - Added AREXX command to control on-screen break feature. - Removed deprecated opcode breakpoint (replaced by the real step by step mode). - Moved CPC characters conversion from memory editor, Z80 editor and Disassembler windows to the menu (it is now global to any window displaying characters from the CPC memory). - Added access to all existing conversion tables (automatic, English, French, Spanish and Danish) instead of only automatic and English ones. - Added menu option to enable or disable the decoding of system RST in disassembly displays (it was always active till now). - Added Danish firmware ROM (CPC6128 version) to the ACE's package. - Added Danish language detection for automatic firmware ROM selection at start-up. - Improved built-in MUI Custom Class to handle the charset conversion in input mode when editing through the chars field. - Added possibility to retry when updating a DSK failed because of a shared lock. - Improved address input class in text mode. - Added alphabetic sort to Tape2HD catalog display. - Added OSD symbol when emulator is paused. - Changed default frame rate from 60 to 10 fps in wild speed mode to maximize speed-up. - Improved AREXX command KEYBOARDSTROKE to handle the charset conversion from local to CPC. - Added some safety delay in wild speed mode. - Added missing support for HSync cancelling while running on CRTC 0/1. Version 1.5 (07.04.2013) - Fixed about box text. - Fixed minor bug in start-up error handling. - Internal disc image format improvements. - Z80 source code clean-up. - Added possibility to unplug the drive B (CP/M will detect a single drive system and will perform accordingly). - Fixed the last known issue with CRTC 1 emulation (CRTC 1 might be perfect!). - Slightly improved CRTC types 0, 2 and 3 emulation. - Activated access to all CRTC types (CRTC 2, 3 and 4 are not accurate yet). - Activated access to all Gate Array variants except 40008. - Management of the color differences between the Gate Array variants. - Added controls to change brightness and vertical hold settings. - Added CPC+ ASIC full support (including all known bugs regarding DMA, interruption management and ASIC emulated PPI). - Changed some layouts in the memory editor and memory disassembler windows. - Added CPC+ ASIC MMU modes access to memory and disassembler windows. - Fixed a bug in memory editor and disassembler windows which could try to display no longer valid ROMs when using REXX ROM configuration commands and custom mappings. - Changed the way of allocating the emulator data structure to prevent potential stack overflow in the future. - Fixed a potential bug in emulator's memory initialization. - Optimized Z80 I/O port decoder. - Slightly increased the default size of the main window. - Improved color rendering of the Gate Array analyzer window (it now displays the color really used on the emulator side depending on the Gate Array version). - Added CPR cartridge image file support (a faked cartridge is smartly emulated from the CPC firmware & BASIC ROMs if none is inserted to ease switching between CPC & CPC+ at runtime without useless resets just because of different ROM configurations). - Added CARTRIDGESPATH tooltype to choose the default path of the cartridge image files (CPR). It defaults to "PROGDIR:Cartridges/". - Added CPR=CARTRIDGE tooltypes to choose the cartridge (CPR) to plug at startup (only possible if the emulated CPC is an Amstrad Plus). - Added PLUS=CPC+=AMSTRADPLUS tooltype switch to force Amstrad Plus emulation at start-up (CRTC and Gate Array tooltypes are then ignored). - Fixed a bug that prevented AHI device from being released at exit. - Audio management in now handled by the emulator engine class just like everything else and any emulator object can now have its own audio feedback. - Fixed read values on CRTC 3 and 4. - Added F9 and F10 key shortcuts to plug/unplug a cartridge. - Added light gun emulation through the mouse at request (Trojan Light Phazer and Magnum Light Phaser are supported). - Added CPC+ ASIC register internal cycle timing management (one pixel width split raster update depending on the Z80 update instruction). - Added build-in tape to hard disk wrapper to grant access to a share directory from the emulated CPC itself (with full speed, long filenames, and directory navigation according to the CPC firmware capabilities). You can now use directly the content of your hard disk from the CPC tape interface and avoid DSK when applicable (only system-friendly softwares can be installed). The navigation through the folders is done using the OPENIN command (there is no CD command on CPC) in the Amiga way ("/" for parent and ":" for root directory). You can of course create files from the CPC side, but not directories. You can interrupt a directory listing using [ESC] and pause it pressing [CONTROL]. The shared folder defaults to "PROGDIR:Share/" and can be configured using the TAPE2HDPATH tooltype. - Added TAPE2HD tooltype to activate the tape to hard disk wrapper by default. - Fixed some issues with the internal debug logging system. - Added error request when tooltypes are invalid. - Fixed an issue with flickering display in wild speed mode (this bug was introduced with version 1.4). - Fixed quit confirmation window that could lock when several instances of ACE were running simultaneously. - Added CPC+ support to snapshots (compatible with the standard CPC+ chunk of the snapshot format v3). - Added ACE signature in saved snapshots. - Added CARTRIDGESKEEPEXTROM tooltype to be able to disable the feature of ACE which automatically disable any external ROM when inserting a cartridge. - Added INSERTCARTRIDGE, EJECTCARTRIDGE, GETCARTRIDGDENAME, CRTC and GATEARRAY AREXX commands (RickD). - Added AMSDOS-like automatic extension fallback at files loading on the Tape2HD wrapper to ensure better compatibility with installed softwares. Version 1.4 (18/07/2012) - Internal improvements. - Added emulation of the different Gate Array versions (ACE is the first and only CPC emulator to propose this!). - Fixed a potential issues in the emulation speed regulation. - Remove useless FRAMESKIP option. - Added a MANUFACTURER option to choose the brand of the CPC to emulate. - Fixed the Gate Array analyzer window which could have a wrong size. - Added mapping of "enter" from the CPC numeric keypad on "F12" (useful for keyboards without this key on the keypad). - HexEdit.mcc MUI class is now optional. - Fixed a bug which prevented multiple instances of ACE being in full screen mode at the same time. - New more user-friendly icon. - Fixed some typos in French and English catalogs (RickD). Version 1.3 (14/05/2012) - Fixed default font when a custom full screen mode is configured. - Avoid opening of full screen larger than the screen resolution. - Added again key repeat for shortcuts. - Fixes in DSK extensions management. - Improved malformed DSK detection. - Removed on-the-fly GAP#3 and tracks size recalculation on complex cases. - Fixes in FDC read track, read data and write data commands. - Added a delay in case of disc swapping without a prior ejection (B.A.T., Fugitif, Crime), - Added support of the DSK extension "Offset-info" from Simon Owen in read and write modes. - Added a confirmation request when a is disc containing modifications that cannot be written with the original DSK format/extensions. - Fixed a FileInfoBlock misusage in the import DSK routine. - Fixed a bug in the Gate Array line counter introduced with version 1.2. - Fixed a bug in CRTC vertical synchronization trigger (improves Madness Demo), - Fixed a bug in the Gate Array horizontal synchronization introduced with version 1.2 (The Demo). - Added a lock on the video display to avoid MUI push method overhead. - Slight improvement in automatic frame skipping mechanism. - Fixed a timing bug with OUTD and OUTI when addressing the Gate Array (Beb). - Added a tool type and a menu option to activate the fast disc emulation mode (warning: this option is not compatible with some softwares). - Changed the "Color" gadget by a "Lamp" gadget for the disc activity LED. - Improved internal MUI notifications. - Fixed a bug in I/O port breakpoints management. - Simplified CRTC emulation code. - Improved offset management on CRTC 1. - Added interlaced mode support (register 8). - Simplified Gate Array, PSG and video information windows. - Changed triggering of offset CRTC register updates within the CRTC emulation (Dream Demo End, Impossible). - Full management of partial pixels and display artefacts during horizontal and vertical synchronization start/end (Camembert 4, Dream Demo 6, Dream Demo End, Madness Demo). - Fixed a bug in vertical synchronization trigger when vertical total adjust is on-the-go (3D Scroll, Take It Easy). Version 1.2 (29/01/2012) - Migration from gcc2 to gcc 4. - Double-click support in the main window to toggle full screen mode. - Add of a disassembler based on the work of Cristian Dinu (support all opcodes including undocumented and custom Amstrad firmware RST). - Improved Z80 editor window (view of the code from PC and abstract of the stack from SP) - Improved memory editor window. - New fix in CRTC 1 emulation when registers 12 & 13 are modified while the additional lines (R5) are displayed (phi2x). - Fix of border disabling on CRTC 1 when register 6 is reset at a non-zero value during the first line of a split-screen (phi2x). - Fix VBL activation trigger while the additional lines (R5) are displayed. - Improved PSG analyzer, Gate Array analyzer and CRTC editor windows. - Add of a new full features disassembler window (easy navigation through the code branches, syntax highlight, breakpoints, ...). - Better internals between CRTC and Gate Array modules. - Better internal notification system between GUI and emulator. - Added an fast toolbar for breakpoints configuration in main window. - Disabled menu item not active when breakpoints a not enabled. - Added a breakpoint management window. - Added an AREXX command to configure advanced breakpoints. - Better keyboard management. - Added on-the-fly charset conversion between local and CPC code page. - Added Spanish and Danish v1.0 firmware ROMs in ACE archive. - Fix a bug in PSG register selection (phi2x). Version 1.1 (18/09/2011) - Added Gate Array's half cycle support (synchronization between Gate Array, CRTC and Z80 is now perfect). - Fixed sync/display alignment for CRTC 0, 1 & 2 (it was right only for CRTC 3 & 4). - Fix in CRTC 1 emulation when registers 12 & 13 were modified while vertical adjust was managed (R5). - Slight improvement in CRTC 0, 2, 3 & 4 emulations (only CRTC 0 & 1 are actually activated in the public version). - Fix an interrupt management issue when a VSync started while a HSync was already running. - Fixes in the English translation (Stefan A. Haubenthal). - Improvements in the French version. - The Graph.mcc class from MorphOS 2.x is now optional (Stefan A. Haubenthal). Version 1.0p1 (16/08/2011) - Omitting argument OFFSCREENCOLOR or SCANLINECOLOR generated a hit in $0 (Grzegorz Kraszewski). - Some bad hits occurred on foreign systems when no catalog was matching the locale (Grzegorz Kraszewski). Version 1.0 (15/08/2011) - First public version. Requirements: ------------- MorphOS 2.5 or better (not tested with MorphOS 1.x), 2MB of free hard disk space, 10MB of free RAM, G4 at 700MHz. Installation: ------------- None. Just copy the ACE drawer where you want and execute it. See documentation in the Help drawer for more information. Usage: ------ See documentation in the Help drawer. Tips: ----- No tips yet! FAQ: ---- No questions? Credits ------- OffseT of Futurs' http://ace.cpcscene.net http://quasar.cpcscene.net http://futurs.cpcscene.net