Aemulor.com
Aemulor logo
Aemulor Pro 2.30 release notes
User interface changes & additions
  • Added a TaskWindow option to the icon bar menu which opens a 26-bit TaskWindow for running command-line utilities etc under Aemulor.
  • Applications window now accepts normal directories, so that - for example - you can add the directory in which you keep all 26-bit applications, rather than adding each application individually.
  • Module window now provides help info on 26-bit modules. Also available via the *Help command.
  • Added sprites to the Applications window, making it easier to locate applications. Double-clicking Select on an application opens the options window for editing, double-clicking Adjust runs the application.
  • Improved handling of application and module panes over mode changes and esp. low-resolution modes. Now uses the nested WindowManager.
  • Keyboard control of Applications window. By entering the first few characters of an application's name (eg. Eure for ...!Eureka) you can select that application.
  • Select-clicking on Aemulor's iconbar icon with shift held down opens the Task display. Shift-adjust-clicking opens the Config window.
Compatibility improvements
  • Provides the Bfont alphabet and the Master and Compact countries which have been removed from the RISC OS 5 International module.
  • SharedCLibrary updated to version 5.46
  • Aemulor's unsqueezing code modified to also cope with older squeezed executables allowing more applications to benefit from the StrongARM engine.
  • Use of OS_InstallKeyHandler supported
  • Interception of OS_SynchroniseCodeAreas SWI for 26-bit apps, giving better compatibility when using 32-bit modules that modify/generate code.
  • Added support for user-drawn objects (26-bit routines can be passed to Wimp_DragBox and DragAnObject_Start).
  • Emulated RMA & System Heap now fully support resizing (often performed by old games and demos to release memory) and may be resized manually using the TaskManager.
  • ARM3 engine added to improve compatibility with self-modifying code. Uses the same basic emulation as the ARM610 engine but with code buffering optimisations disabled because they can break some self-modifying code. Use this engine only as a last resort because it's much slower.
  • Patched BASIC to remove support for 'sp' register in assembler code because this breaks programs which use register names starting with 'sp', eg. 'speed'.
  • Implemented *RMFaster command for use by older programs.
  • Added support for dynamic areas with 26-bit handler code.
  • Included emulation of ARMvID register (CP15 C0)
  • Support for tokenised help/syntax text in 26-bit modules.
  • OS_ReadSysInfo returns correct hardware features for the emulated machine for those games which check VIDC20 availability, for example.
  • Improved emulation of hardware and implemented IOC/IOMD timers 0 and 1.
  • StrongARM engine now always stores PC+8 in STR/STM instructions rather than PC+12 as per earlier processors (the assumption that no code would be written to work exclusively on the SA proved false with the arrival of SA-specific patches for old games)
  • OS_Byte 129 now returns C flag though this behaviour isn't documented in the PRMs.
  • Included emulation of CP15 register C2 reads (ARM3 cache state)
  • Implemented the *GO command which is used by quite a few older games.
  • Detection (and hiding) of negative validation string pointers which were previously treated the same as -1 (now only -1 is accepted by the RO5 Wimp).
  • SharedCLibrary 5.47 introduced to resolve PipeDream hanging fault (and possibly other C apps too).
  • Improved Aemulor's shutdown code to better handle processor vectors being claimed by other modules such as SpecialFX. Claimants must still be shutdown in reverse order though.
  • Emulation of OS_Memory 9 for reading VIDC/VIDC20 controller presence and base address.
  • Provision of memory from &1F02000 to &1FFFFFF which is directly accessed by some old Archimedes games, including USR-writable memory from &1FEC000 upwards.

Bug fixes
  • Data abort logging reports correct address of failure (instead of &12345678!) and can handle multiple aborts in quick succession, as can occur if an application tries to recover itself but incurs a further abort. Undefined instructions errors reported by the ARM3/610 engine now contain the address.
  • Emulated DAs were sometimes mistakenly allocated below 64MB, possibly conflicting with the emulated ROM image at &3800000. Also corrected fault in error recovery code when resizing.
  • Applications trying to use wimpslots >= 56MB would cause the machine to lock up if Aemulor had been run (and quit) beforehand, oweing to Aemulor restoring the memory map incorrectly after unmapping the ROM image at &03800000. DeskEdit would also abort loading some files because only the first 1MB of the ROM was being mapped.
  • Use of Choices$Path and Choices$Write corrected
  • OS_SWINumberToString was omitting the X prefix on error-returning OS SWIs
  • Taskswitching between 26-bit and 32-bit apps could cause occasional freezes/instability with Browse running.
  • Aemulor now requires the 'messages filename' field of 32-bit modules to be word-aligned if used, as per the RISC OS kernel.
  • Applications written in BASIC were using the 'Other applications' config settings instead of their own.
  • Auto-run checks now only performed on executable files. In earlier double-clicking (=> running) a file inside a 26-bit application would cause the editing application to be emulated even if it's 32-bit OK.
  • Errors returned by 26-bit utilities were being ignored.
  • Corrected read operations on emulated system heap.
  • Applications no longer loaded at their load address to check for 32-bit compatibility because this can overwrite environment handlers and data that will be needed before the new application starts (especially BASIC's UpCall handler). This was the cause of the conflict with Font Directory Pro.
  • Matching of pathnames against the applications list was using the canonical form but without Run$Path so some programs invoked at the command line could be ignored by Aemulor and run natively instead.
  • 'Add application' applied its settings to the most recently edited
    application instead of the newly-added one.
  • Corrected reporting of 'invalid number of parameters' errors for *commands provided by 26-bit modules.
  • Applications started via the 'Run' button in the Apps window were used the 'Other applications' settings for loading their modules and, in the case of games started with *GO, for running the application code too.
  • Aemulor Screen base address was being written to address 0 upon entry to an emulated screen mode.
  • Corrected support for 26-bit sound schedulers
Aemulor Pro specific features
  • Added Tasks window that shows the applications that Aemulor is running and any dynamic areas that are being emulated at low addresses for those apps. It also shows the emulation mode for each task, and the amount of memory being used by the emulation.
  • Includes support for 26-bit sound (8-bit voice generators and 16-bit linear handlers, channel handlers and schedulers)
  • Supports 26-bit filing systems.
  • Support for low-bpp screen modes (2,4 and 16 colours) and provides screen resolutions that are unavailable natively to allow older games to work.
  • Emulation of IOMD/VIDC20 and IOC/VIDC for those programs, especially games and demoes, that directly access hardware.
  • Includes support for IRQ/device handlers (OS_ClaimDeviceVector)