Aira Force
CHANGELOG

--------------------------------------------------------------------------------
 VERSION 0.9.2 (2025-03-13)
--------------------------------------------------------------------------------

Headlines: Filled vector graphics. Find hex bytes. Fix watchpoints

- Implement blitter line onedot mode and area fill mode
  - Fixes: Another World
- Add Find hex bytes option to Find dialog
- Fix Watchpoints UI
- Add DMA Window
  - Shows DMA slot usage (device, address, value etc) by scanline in tree view
  - Context menu for convenient navigation to memory windows, memory visualiser
    window, disassembly windows, and copper disassembly
  - Context menu option highlight selected slot in video window DMA overlay
- Fix blitter logic when destination channel disabled. Fixes Batman: The Movie
  loader, Sensible Soccer / Sensible World of Soccer menu corruption and 
  Gravity-Force 2
- Fix bitplane DMA display data fetch start logic. Fixes Tinyus
- Fix hires bitplane DMA data fetch logic stop condition. Fixes Agony intro, 
  Apidya HUD, Bill's Tomato Game title, Pinball Fantasies intro, Shadow of the 
  Beast intro and scrolltexts, and several intros.
- Fix Denise horizontal timing. 2 CCK (DMA cycle) delay between Agnus strobing 
  Denise and Denise resetting its internal counter to 2. Simplifies BPLCON1
  delay (scrolling). Fixes New Zealand Story scrolling.
- Fix CPU Window application hang caused by corrupt Exec lists
- Fix JOYTEST register logic. Fixes Turrican and Turrican 2 movement.
- Fix "special" copper DMA slot(s) logic. Fixes Copper Master border.
- Fix copper wait timing. Requires non-bitplane DMA cycle to progress. Fixes
  Shadow of the Beast title screen and Lionheart.
- Fix HAM mode display window and sprites. Fixes Copper Master HAM effects.
- Improve Amiga Window DMA cycle and DDF information
- Show copper instruction pointer in debugger machine log
- Add "Copy line" context menu option to copper window
- Improve copper disassembly
- Fix copper window COPxLC/PC autofocus widget behaviour
- Highlight changed instruction words in copper window
- Fix video window assert due to invalid VPOS selection
- Improve video window tooltip
- Breakpoint Window double click shows in memory disassembly
- Allow USB controller select/back button to toggle vsync (turbo mode)
- Support up to 83 track disks. Fixes Hunter.
- Add blitter hardware counters for transfer, fill, line and onedot blits
- Bonus: Buggy Boy no longer hangs when you crash. I have no idea what fixed it!

Big thanks to:
- All users for using, testing and reporting bugs and missing features
- Toni and the other EAB experts for their insight into the Amiga hardware

--------------------------------------------------------------------------------
 VERSION 0.9.1 (2025-02-27)
--------------------------------------------------------------------------------

Headlines: Audio DMA, experimental audio out and optimisations

- Add: Amiga audio DMA
- Add: Amiga (Paula) audio hardware registers
- Add: Amiga audio channel state machines
- Add: Audio recording options in Emulator menu
- Add: Experimental audio out
  - sync to video method with resampling
  - enable with --host-audio command line argument
- Add: macOS package universal binaries by Didier Malenfant
  - Bundle contains Intel + Apple silicon binaries (Aira, ira, vasm, vlink)
  - Binaries are codesigned and installer is notarized
- Add: Window > Set size menu options (handy for recording)
- Add: Amiga Window Audio section
- Add: Host window
- Add: Audio mixer (host window)
- Add: Options to enable/disable all breakpoints
- Add: Amiga VHPOSW register
- Improve: cancelled open file dialogue flow
- Improve: Audio logging
- Improve: Emulator performance
- Improve: Video window scaling range (including minification)
- Improve: Remember inserted ADF
- Improve: 68000 timing (Bcc, BSR, BRA, RTS, RTE, and interrupt processing)
- Fix: Vsync option (host window). Use as turbo on fast host.
- Fix: Debugger vblank detection (could miss frames due to blitter nasty)
- Fix: Emulator now only captures keyboard if mouse captured
- Fix: CPU access to slow RAM base address did not require the bus

Thanks to Didier Malenfant and all users for testing and feedback

--------------------------------------------------------------------------------
 VERSION 0.9.0 (2025-02-07)
--------------------------------------------------------------------------------

Headlines: Basic Amiga OCS emulation; Watch Window with type info

- Add: Amiga CIA 8520 emulation
- Add: Amiga Sprite emulation (no collisions)
- Add: Amiga Hires playfield emulation (buggy)
- Add: Amiga blitter emulation (copy, line but no fill)
- Add: Amiga interrupt emulation
- Add: Amiga bitplane, sprite, copper and disk DMA emulation
- Add: Amiga copper emulation
- Add: Amiga DSKSYNC register emulation (trackloader support)
- Add: Amiga disk controller emulation
- Add: Amiga Mouse, joystick and keyboard emulation
- Add: Amiga ADF disk support
- Add: Amiga Kickstart 1.2/1.3 ROM emulation support
- Add: Many logging options
- Add: USB joystick support
- Add: CIA window
- Add: Amiga Copper (disassembly) window
- Add: Amiga Exec (OS) window
- Add: Dynamic Analysis window (replaces LiveAnalysis window) 
- Add: Floppy drives window with ADF, MFM, disk visualisation 
- Add: Memory disassembly window
- Add: Memory viewer (visualiser) Window
- Add: TypeInfo window (see included *.json)
- Add: Watch window(s) with type info support
- Add: UI to set breakpoint by address
- Add: Break when PC in RAM option
- Add: Break on vertical blank option
- Add: Break on system call option
- Add: CPU history window
- Add: Watchpoints window
- Add: Disassembler external symbols support and window
- Add: FIXLABELS disassembler option (default: disabled)
- Add: Configurable host input options (pad, keys, mouse)
- Improve: Amiga Window (lots more state)
- Improve: Update to latest ira
- Improve: Update vasm to 2.0a
- Improve: Update dear imgui to v1.91.4
- Improve: Exec window
- Improve: Video window DMA overlay
- Improve: Add filter to Equates Window
- Improve: Live Analysis is now Dynamic analysis
- Fix: Preserve leading whitespace in comments and banners
- Fix: Pressing E on label causes crash
- Fix: Leading whitespace preserved in banners
- Fix: Filenames containing whitespace support on Linux
- Fix: Store imgui.ini in user folder (guaranteed writable)
- Fix: Bugs in 68000 CHK, DIVU, DIVS, ASR.x, LINK A7, and MOVE to SR instructions
- Fix: Include CR when searching for text

Emulator limitations:
- No audio
- Emulator vertical sync locked to host display refresh rate
- Middling compatibility (approx 50% of games work, less demos)
- Poor runtime performance. Needs optimising!
- No interlace
- Buggy hires sometimes
- No bitter fill mode
- No sprite collisions
- Inacurrate CPU timing hardware synchronisation (affects accuracy)

Huge thanks to the amazing communities on EAB, the EmuDev Discord and TTE who have helped me out.

--------------------------------------------------------------------------------
 VERSION 0.8.0 (2024-09-05)
--------------------------------------------------------------------------------

Headlines: Source level debugging, improved emulation and many UI improvements.

- Add: Add Pointer dialogue
- Add: Crash log file AiraForceLog.txt written on internal error
- Add: Syntax highlighting works with internally generated disassembly
- Add: Source-level debugging of Amiga load modules
- Add: Source-level debugging of raw binaries
- Add: Source Code windows, with basic navigation features and Ctrl+G popup
- Add: Debug Symbols window
- Add: Debugger can be used independently of Analyser
- Add: RAM reset behaviours: Leave, clear, randomise
- Add: 68000 execption generation and processing
- Add: 68000 interrupt support (not hooked up to Amiga yet sorry)
- Add: Load Amiga ROM
- Add: Amiga ROM overlay (OVL)
- Add: Fast RAM, Slow RAM and ROM address ranges
- Add: Very basic Amiga playfield hardware (DIWSTRT/STOP, BPLCON0, BPLxPT, COLORxx)
- Add: End-of-frame Amiga video image generation
- Add: Emulator video window displaying end-of-frame generated video image
- Add: Latest vasm and vlink executables for all platforms
- Add: "Select config TEXT area" to disassembly window context menu
- Add: Amiga window link to hardware register docs
- Improve: Labels can be added at any address
- Improve: Disassembly export options (lowercase, formatting, export from RAM)
- Improve: Status window displays binary diff count
- Improve: Expose ira -compat=b and -compat=i options
- Improve: Serialise find options
- Improve: Analyser code region detection
- Improve: 68000 instruction emulation (passes all 680x0 SingleStepTests)
- Improve: 68000 emulator fetches directly from memory
- Improve: Memory window shows all regions
- Improve: Internal 68000/010 instruction disassembly
- Improve: CPU Window UI improvements
- Improve: Find searches source code
- Improve: Logging of access to unimplemented hardware registers
- Improve: Inform user when HUNK_OVERLAY encountered (not supported)
- Fix: Pointers can be defined in data and immediate operands
- Fix: Slowdown when there are many potential data actions
- Fix: Disassembly Window scrolling crash
- Fix: Offset jump tables when relocating ira config
- Fix: Workaround label name generator crash caused by duplicate ira labels
- Fix: Instruction Window branch destination calculation bug
- Fix: Default window docking for windows with dynamic names
- Fix: Amiga modules are debugged in user mode by default

--------------------------------------------------------------------------------
 VERSION 0.7.6 (2024-07-12)
--------------------------------------------------------------------------------

- Add: Recent files list
- Add: Export Disassembly option
- Add: Status window with disassembly, reassembly and diff status
- Add: Relocated Binary Window
- Add: Basic binary patching: edit hex, replace instruction with NOP/RTS
- Improve: Saved options
- Improve: Option to hide ira -A posterior address/code comment
- Improve: Rename label referenced by selected line
- Improve: Goto dialogue tab-completion and history
- Improve: CPU Window: edit registers, flags, display formats
- Improve: Hunks Window displays RELOC32 data
- Fix: Crash when parsing long lines of disassembly
- Fix: Adding manual EQU with disassembly context menu
- Fix: Support paths containing spaces

--------------------------------------------------------------------------------
 VERSION 0.7.5 (2024-07-05)
--------------------------------------------------------------------------------

- Feature: DPI aware Windows and Linux applications
- Feature: Add choice of pixel perfect fonts, including topaz-unicode
- Feature: Add scalable vector font and UI zoom
- Improve: Use FreeType to build and rasterize the font atlas
- Feature: Override font choice for disassembly and output windows
- Feature: Save and restore OS window state
- Feature: Add fullscreen toggle
- Improve: UI layout for dialogs and other windows
- Improve: Upgrade ImGui to v1.90.9 (docking branch)
- Improve: Maintain ImGui dockspace ratios when resizing
- Improve: Add Windows hyperlinks in About box
- Feature: Raspberry Pi build

--------------------------------------------------------------------------------
 VERSION 0.7.4 (2024-06-27)
--------------------------------------------------------------------------------

- Feature: Add support for local labels
- Improve: Label Generator generates SUB_xxxx labels for subroutines
- Improve: Support dots within labels
- Improve: Update to latest VASM 2.0beta (adds -dbg-local and 
  -dbg-globloc options)

--------------------------------------------------------------------------------
 VERSION 0.7.3 (2024-06-19)
--------------------------------------------------------------------------------

- Fix: Windows crash when running with (slightly) out-of-date MSVC 
       resistributables (msvcp140.dll mtx_do_lock)

--------------------------------------------------------------------------------
 VERSION 0.7.1 (2024-06-19)
--------------------------------------------------------------------------------

- Fix: Actions Window potential data context menu fix

--------------------------------------------------------------------------------
 VERSION 0.7.0 (2024-06-19)
--------------------------------------------------------------------------------

- Improve: Live Analyser
- Feature: Jump table support and Jump Table Finder
- Improve: Hunks Window
- Improve: Optimise disassembly parsing (reduce iteration time)
- Feature: Support 680x0 SSP/ISP
- Improve: TRAP, RTE and Supervisor() emulation
- Improve: Allow machine (Chip) RAM size to be specified
- Feature: Memory windows
- Feature: Load, save and fill memory dialogs
- Feature: Amiga window with fake beam counter
- Improve: Find... optionally searches memory
- Improve: Parse and display HUNK_SYMBOLs
- Fix: Resizable extract dialoge
- Fix: Unicode support in Windows paths
- Fix: Disassembly to source file mapping support short (data+bss) hunks
- Fix: ira/vasm command line path truncation
- Fix: PC Indirect With Displacement effective address calculation for -ve displacements
- Improve: New icon by gerbil
- Improve: Highlight changed exception vectors in CPU window
- Improve: Add Preprocess presets
- Improve: Add ira -INFO option to File menu
- Improve: Add help markers for unintuitive features
- Improve: Upgrade ImGui from v1.90.1 to v1.90.8 (improved scroll bar)
- Improve: Upgrade ira to latest beta release
- Improve: Support empty sections/hunks
- Fix: Don't convert BSS to code

--------------------------------------------------------------------------------
 VERSION 0.6.3 (2024-06-02)
--------------------------------------------------------------------------------

- Fix: Support unlimited hunks

--------------------------------------------------------------------------------
 VERSION 0.6.2 (2024-05-30)
--------------------------------------------------------------------------------

- Fix: Assert if set breakpoint on non-code line
- Fix: Asserts when close file, with search results and breakpoints
- Improvement: Fail early if opengl32.dll not found
- Improvement: Print system info on boot

--------------------------------------------------------------------------------
 VERSION 0.6.1 (2024-05-29)
--------------------------------------------------------------------------------

- Fix: Disassembly address calculation assert
- Fix: Convert to code past final label
- Fix: Don't try to add code at odd addresses
- Fix: Convert to text near end of file
- Fix: MOVEC and EXG decoding
- Fix: Amiga Reference Window appears when expected
- Fix: ira SECSTRT_ label naming bug
- Improvement: Add preprocess hunk preset
- Improve: Disassembly instruction execute count display

--------------------------------------------------------------------------------
 VERSION 0.6.0 (2024-05-27)
--------------------------------------------------------------------------------

- Feature: Live analysis
- Feature: Support BASEREG, BASEADR, BASEOFF ira config directives
- Feature: Basic Label Generator
- Feature: Basic BootblockProcessor
- Improvement: Live documentation
- Improvement: Extract Dialogue

ResetDMAPointers
 VERSION 0.5.4 (2024-04-10)
--------------------------------------------------------------------------------

- Fix VASM options for raw binaries
- Improve documentation

--------------------------------------------------------------------------------
 VERSION 0.5.3 (2024-04-03)
--------------------------------------------------------------------------------

- Fix convert to code/data/text address validation

--------------------------------------------------------------------------------
 VERSION 0.5.2 (2024-04-02)
--------------------------------------------------------------------------------

- Packages
- Automatic versioning
- Detect potential equates in CLR instructions
- Fix: Opening source files with extensions
- Improvement: Reassembly 2.0+ and databss
- Improvement: Expose machine (processor) during initial preprocessing

--------------------------------------------------------------------------------
 VERSION 0.5.1 (2024-xx-xx)
--------------------------------------------------------------------------------

- Test release

--------------------------------------------------------------------------------
 VERSION 0.5.0 (2024-03-26)
--------------------------------------------------------------------------------

- Support opening files from all drives
- macOS application bundle
- Ubuntu build

--------------------------------------------------------------------------------
 VERSION <no version> (2024-03-18)
--------------------------------------------------------------------------------

- Preview "alpha" release for initial feedback.
