Subject: CVS commit: pkgsrc/emulators/hatari
From: Adam Ciarcinski
Date: 2020-07-10 21:33:30
Message id: 20200710193330.7058CFB28@cvs.NetBSD.org

Log Message:
hatari: updated to 2.2.1

 Version 2.2.1 (2019-02-08)
 ---------------------------

Emulation:
- CPU:
  - Fix a bug/regression from Hatari 2.1.0 in the UNPK instruction

 Version 2.2.0 (2019-01-31)
 ---------------------------

Note:
- Compiling with SDL 1.2 is considered as deprecated now.
  The support for SDL 1.2 will be dropped in a future release.
- Hatari now requires a C compiler compatible with c99/gnu99

Emulation:
- CPU:
  - CPU core updated to WinUAE 4.1.0
  - Fix 68030 MMU PTEST/FSAVE/FRESTORE
  - Improve 68030 bus error handling and retrying faulty instruction
  - Fix: only enable cache emulation when relevant
  - Improve softfloat FPU emulation
  - FPU emulation mode (softfloat or not) can be changed on the fly
  - Ensure HW registers region is not cachable for 68030 without MMU
    when write allocate mode is enabled
- DSP:
  - Fix DSP ROM tables (sin, mulaw & a-law)
  - Some  waitstate cycles were not correctly counted when accessing
    DSP IO regs in CE mode
- Blitter:
  - Fix: a rare case in cycle exact mode when bus is shared between CPU
    and blitter : the last word of a transfer could be wrong if bus was
    owned by CPU just before processing this last word and a read-modify-write
    is made
  - State of current blitter operation was sometimes not correctly restored
    when CPU temporarily stopped the blitter and resumed it later
  - DSP emulation was not updated in parallel when blitter was running
- Video:
  - Handle VBlank signal and mask the 2 last lines when bottom border
    is removed
- Hard disks:
  - Experimental support for the NCR5380 SCSI chip in Falcon and TT mode
- Serial ports:
  - Very experimental support for the SCC chip of the Mega-STE, TT and Falcon
    (only channel B for now, and output only, use the "--scc-b-out" command
    line switch)
- Misc:
  - Correctly emulate bus error handling for STE lightpen registers
  - Experimental support for TOS 2.07 (the "Sparrow" TOS)

Emulator:
- Misc:
  - "patch TOS timer-D" speedup option is now disabled by default
  - Allow up to 512MB of TT-RAM (increased from 256 MB)
  - Additional ROM patches applied to TOS v4.x for 040 & 060
  - Improved info and warning output for Hatari constraints and issues
- Memory snapshot save/restore:
  - Fix: Include GEMDOS HD file handles so apps with open files work
  - Improve memory snapshot save/restore reliability
    (e.g. for pending interrupts)
  - Save/restore TT RAM content into memory snapshots
- SDL GUI:
  - Show warning dialog when cartridge file is disabled due to conflict
    with other features
  - Fix halt dialog crash on double bus error before SDL init
  - Add FPU softfloat option
  - Move joystick info to second statusbar line
  - Few additional special keys can be remapped
  - Fix: broken CPU dialog with old UAE CPU core
  - Display 'SF' in status bar if FPU emulation is using softfloat library
  - Display 'CE' or 'PF' in status if using 'cycle exact' or 'prefetch' modes
  - It is now possible to configure more than one ACSI hard disk images
- MacOS / GUI:
  - Minor GUI updates for v2.1 changes
  - Fix: "reset" and "don't reset" UI buttons inverted
  - Update MIDI panel for French version
  - Save screenshots in user defined location or ~/Desktop
- Windows:
  - Fix: buffer overflow in relative Hatari datapath handling
- Disk handling:
  - IDE byte-swap option added to config file & GUI
  - Fix: NF SCSI driver didn't invalidate cache for changed memory area
  - Fix: *.INF file in disk image being overridden even when neither
    VDI mode or autostart program wasn't specified (v2.1 regression)
  - Fix: GEMDOS HD Fwrite() can be done from ROM area (for ROM saving)
- Media handling:
  - Fix: AVI recording with PNG codec could be wrongly limited to 4GB
    with some OSes
- Screen handling:
  - Fix: TOS <= v2.x crashes when mouse is moved in 16x16 area at
    the bottom right corner in VDI mode (Hatari v1.0 regression)
  - Fix: "--tos-res high" setting
- Debugging:
  - Fix: DSP/CPU profile "addresses" commands output line count when
    paging.  Tell also when it wraps to start
  - Each log message has a log level prefix
  - (Almost) all Hatari output goes now through logging framework so
    that Hatari verbosity can be controlled
  - Output at default log level is reduced significantly
  - Add support for ISP & USP and 020+ special registers like VBR
  - Add "OsCallParam" variable which gives first (word sized) parameter
    for OS calls, for use with OS call "*Opcode" breakpoints
  - Add virtual V0..V7 registers to "register" command for calculations
  - "memdump" and "memwrite" commands output & input can \ 
now be also
    word or long sized instead of bytes
  - Show arguments in DSP XBios call traces
  - FPU and PMMU opcodes are now also disassembled in 68040/060 mode
- Options:
  - Fix: "--memsize 0" legacy option
  - Disable "--timer-d" option by default.  Increases CPU usage
    (noticeably for ST/e emulation), but some rare (badly written)
    programs need it for correct color raster & sample handling
  - The "--bios-intercept" option requires now a boolean parameter
    to determine whether the option should be enabled or disabled
  - Add "--cmd-fifo" option to control Hatari at run-time just by
    echoing commands to a FIFO file (created by Hatari)
  - Add "--tos none" option to run test programs without any TOS.
    Real Atari programs cannot be run with this, as it doesn't
    implement the necessary Atari OS calls
  - Halt dialog is skipped if --run-vbls is used (for automation)
  - Support hex values for --disasm, increase --slowdown max value to 30

Building:
- Fix: Large File Support detection (64 bits off_t)
- Fix: new compile warnings with GCC v8 (+ code cleanup)
- Fix: building when DSP or tracing is disabled
- Improve CMake library finding for recent macOS
- Change Hatari compilation C standard to gnu99
- Add gitlab continuous integration Yaml file
- Many -fsanitize fixes

Tools:
- Hatari Python UI migrated from PyGtk v2 to Gtk v3
- Add Python v3 support to rest of the scripts
  (required by Arch Linux & Clear Linux)
- hatari-prg-args script:
  - Installed by default
  - Fix program argument setting for recent EmuTOS versions
  - Support argument setting also for programs that are run
    from disk images
- zip2st: handle also directories with spaces in their names
- Fixes to hatari_profiler Callgrind output symbol handling
- Fix TOS bootup tester test output verification
- Few additional tests for validating Hatari functionality.
  Almost all tests are now integrated with CTest framework.
  Use e.g. "ctest -j4" command to run them

Documentation:
- Tag commits for Hatari releases before v1 in Mercurial repo
- Add notes about (new default) PortMidi support to MIDI usage
- More details on GEMDOS HD and VDI mode emulation limits
- Large updates to compatibility documents and to performance
  section in the manual
- Add release checklist document

Fixed demos:
- B.I.G. Demo screen 2 (regression in Hatari 2.1, vblank in bottom border)

Fixed falcon demos:
- 4musiK by Dune & Sector One (don't cache HW register regions in write
  allocate mode)

Fixed games:
- Lethal Xcess in STE mode (stopping/resuming blitter and saving/restoring
  memory snapshots)
- Lethal Xcess in STF mode (add jitter to MFP, temporary fix)

Fixed programs:
- Many TT/Falcon programs relying on 68030 MMU / bus error retrying are now
  working correctly (eg 'memwatch' by Uwe Seimet)

 Version 2.1.0 (2018-02-07)
 ---------------------------

Emulation:
- Video:
  - Fix correct number of displayed lines when removing bottom border
  - Improve bottom border removal on 60 Hz screen
  - More accurate position for reloading video counter on line 310/260
  - Fix STE video counter regression at start of VBL (off by 4 cycles)
  - Fix Timer B counting when screen is in Mono mode and video resolution
    is set to low/medium
  - Fix bug preventing screen to be drawn when video address = 0x0
  - Add (dumb) Videl address and vertical frequency counters emulation
  - Videl unused bits at $FF820E are read as zero
- Sound:
  - New cycle exact emulation of the YM2149, all counters are
    incremented using a simulated freq of 250 kHz, giving a 250 kHz audio
    stream which is downsampled to the desired output frequency.
    Some undocumented cases were also measured on real STF
    Result should be much more accurate, clearer and emulate complex effects
    (phase cancelling on 2 voices for example)
  - Fix bad sound during YM sample playing on Falcon/TT
- CPU:
  - Support undocumented behaviour for STOP on 68000 when new SR has bit S=0
  - Fix some cases where bus/address error stack had a wrong PC
  - Correctly store the 32-bit address in the stack in case of a bus error
  - Better memory timings for RAM accesses in 68030 mode (for Falcon)
  - Accurate DIV overflow undocumented flags
  - Correct V flag for BCD instructions for 68020/30
  - 68030 instr cache was not correctly disabled when writing EI=0 in CACR
  - Improve caches for 68020/30, add cache support when using MMU
  - Add 68040/60 data cache emulation, with optional MMU support
- FPU:
  - Large improvements in FPU emulation and related instructions/exceptions
  - Support for undocumented 68882/68881 FPU constants
  - Support for softfloat FPU emulation (slower but more accurate)
- Memory / MMU / MCU:
  - Add full support for STF/STE MMU/MCU at $FF8001 and address translation
    (emulate the RAS/CAS signal depending on the size of the memory banks,
    TOS memory routines don't need to be patched anymore)
  - Better results when reading "void" region between end of RAM and 4MB
    (return latest data seen on the bus on STF/STE)
  - Add support for more RAM combinations (256 KB and 2.5 MB)
- Blitter:
  - Add cycle exact bus handling for the blitter (correct bus count for CPU
    and blitter, suspend/resume blitter after any memory access, run part
    of next CPU instruction in parallel when starting the blitter)
  - When writing busy bit=0, update interrupt line and don't clear hog bit
- Floppy:
  - Emulate ripple carry adder "bug" for STF DMA address at $FF8609/0B/0D
  - For STX images, add support for the verify bit in Type I commands
  - Fix a rare case when looking for the next sector header of an STX image
- IKBD:
  - Support for Audio Sculpture's custom IKBD program

Emulator:
- MIDI support for Windows and macOS (with PortMidi library)
- Add support for AVI files > 4GB (up to 256 GB)
- Miscellaneous:
  - Initial patching for ST-Book ROM
  - Add keyboard shortcut for toggling borders
  - Fix: rate-limit DSP illegal instruction warnings output
- Disk handling:
  - Add "--gemdos-time <atari/host>" option so that user can specify
    whether emulation or host timestamps are used with GEMDOS HD files
  - Fix: off-by-one error in ACSI image file name handling
- Memory handling:
  - Support memory check skipping also on TOS v3 & v4
  - Allow RAM size values in KiB instead of MiB
- SDL UI:
  - Add a 'blitter-meter' to the status bar, depending on the blitter's usage
  - Add refresh rate in the status bar (50, 60 or 71 Hz)
  - Disable alt+F4 under Windows so that it doesn't close Hatari
    (in case alt+F4 is also used in the emulated program)
- Display handling:
  - Add --resizable option to control whether Hatari SDL2 window
    can be resized (= turn it off to prevent accidental resizes)
  - Support scaling AVI recording (PNG/BMP) frames
  - Extended VDI mode font selected based on VDI height
  - Fix: Handle window expose events with SDL 2.0
  - Fix: don't switch bitdepth when recording AVI
  - Fix: X11 window embedding (to Python GUI) with SDL2
  - Fix: TOS v2 & v3 Atari logo display in extended VDI resolutions
  - Fix: Limit Videl widths for GLES2 SDL2 backends
- Virtual INF file handling:
  - Add "--auto" option to autostart programs also from somewhere
    else than C: root, and to enable required GEMDOS interception
    without full GEMDOS HD emulation
  - Add --tos-res option to specify TOS ST/STE/TT resolution
    for color monitors, with or without autostart.  Also enables
    blitter for machines & TOS versions supporting it
  - Uses existing INF file as base, if one exists
  - If not, specifies open window for boot drive
  - Fix: Use separate INF files for TOS v1 and v2+ autostarting
  - Fix: Normal users cannot use tmpfile() directly under Windows
- Debugger improvements:
  - Fix: '>>' bit-shift parsing
  - Fix: CPU prefetch when changing PC address
  - Add "CycleCounter" variable
  - Add "info dta [addr]" command
  - Add "cpu_regs" trace option to show register values after
    each executed instruction
  - Add support for reading GNU-style a.out symbol table format
    (which is GCC default) in addition to DRI/GST symbols
  - Add absolute symbols support in addition to BSS/DATA/TEXT ones
  - Use terminal size for paging (disassembly, memdump, symbols)
    commands. NOTE: remove old dDisasmLines & nMemdumpLines options
    from Hatari config file, or set them to -1, to enable this!
  - Add 'nSymbolLines' configuration option to specify how many
    lines 'symbols' command pages
  - 'symbols resident' command and 'bSymbolsResident' config option
    toggle whether program symbols are removed when program
    terminates, or only when the next program starts
  - 'symbols match" command and 'bMatchAllSymbols' config option
    toggle whether TAB completes all symbols or just symbol types
    relevant for given command
  - 'symbols addr' is split into 'symbols code' & 'symbols data'
  - TEXTEnd value is now TEXT+TextSize, instead of TEXT+TextSize-1
  - Add "-f" option to 'cd' so that setup scripts can specify
    what directory is used after currently invoked script(s)
    have finished
  - Move exception mask setting from config file "Log" section
    to "Debugger" section where it belongs
- Compilation:
  - Fix compilation when using ARM 64 target
  - Allow compilation on untested host architectures (e.g. MIPS & s390x)
  - Search for local headers first, then system's one (eg zip.h)
  - Don't redefine bswap_16/_32 macros if they already exist

Other changes:
- Add French keyboard mapping that works also with SDL2
- All symbols output by gst2ascii are now TEXT relative
  and it supports also a.out format symbol tables
- Fix: Python GUI updated for Hatari v2.0
- Fix: Python GUI explicitly uses Python v2 (Arch Linux)
- Fix: Python tools made compatible both to Python v2 & v3 (Arch Linux)
- Fix: icon symlink generation (rpmbuild chroot)
- Fix: DESTDIR support for RPM packaging

Fixed Falcon games:
- Ishar 1, 2 & 3, Lasers and Hommes, Moonspeeder preview 2
  (Videl video counter)
- Boom preview, Lasers and Hommes, Tank Blaster
  (68030 instr-cache)
- Aazohm Krypth, Men at War, Push It, Running, Sky Fall, Sworm
  (autostarting)

Fixed Falcon demos:
- Bound 2, E.K.O system (memory access timings)
- Bound 3 (Videl video counter)
- Agony & Chaos A.D. don't freeze anymore (vertical frequency counter)
- Mahabharata (Videl widths with SDL2)
- 2x1287, A Rh positive, Are you experienced, Autowaschen Verboten,
  Bound, Bound 42, Codein, Cycedelic knockout, Dan's Lustiges
  Kinderfest, Derealization, Dream Dimension, Echos, E.X. Illusion,
  Geranium, Hex Pistols, Hmmm, Oergs, Polygon Discount, Terrorize your
  soul, Warum, Virtual City (68030 instr-cache)
- Terrorize your soul (DSP warnings 100x slowdown)
- Firestarter, Virtual City, Whirlpool
  (autostarting with packed demos)

Fixed TT versions of demos:
- 4getful, Beams (68030 instr-cache, undocumented FPU constants)

Fixed programs for Falcon:
- Hextracker (Videl video counter, when not auto-started)

Fixed games:
- Le Necromancien' STX image (verify bit in type I commands)

Fixed ST/STE demos:
- Sprite32 by Leonard (RESTART_VIDEO_COUNTER on line 310/260)
- Jam-Cols by ICE (STE video counter timings broken in v2.0)

Fixed ST/STE programs:
- Protracker 2.1 and Neochrome Master 2.8 (shifter, bottom border at 60 Hz)
- Audio Sculpture 1.3 and 1.5 beta (timer B in mono mode, bit S=0 in STOP, IKBD)
- True RAM's size detection under TOS/EmuTOS (memory config at $FF8001)

Files:
RevisionActionfile
1.56modifypkgsrc/emulators/hatari/Makefile
1.19modifypkgsrc/emulators/hatari/PLIST
1.23modifypkgsrc/emulators/hatari/distinfo
1.1addpkgsrc/emulators/hatari/patches/patch-src_cpu_fpp__native.c
1.1addpkgsrc/emulators/hatari/patches/patch-src_paths.c
1.4removepkgsrc/emulators/hatari/patches/patch-aa
1.4removepkgsrc/emulators/hatari/patches/patch-ab