Skip to content

Releases: joncampbell123/dosbox-x

DOSBox-X release 0.82.9 2018-09-01 14:00

01 Sep 21:29
Compare
Choose a tag to compare

0.82.9

  • "Always on top" mode is now available for Mac OS X builds.
  • PS/2 mouse emulation fixed not to send relative mouse motion
    unless mouse cursor is captured.
  • Shell no longer provides MEM.COM if machine=pc98 or cputype=8086.
    MEM.COM is not compatible with either case.
  • INT 10h emulation will now set the S3 LFB enable bit for VESA
    SVGA modes, unless machine=vesa_nolfb was specified.
  • VGA emulation revised to report possible known problems with
    Windows 3.1 with regard to LFB base address or memalias setting.
  • VGA emulation fixed to emit warning if memalias=24, for S3 LFB,
    if machine=svga_s3, to inform the user that the configuration is
    known to cause the Windows 3.x driver to crash.
  • VGA emulation will no longer report S3 linear framebuffer address
    unless machine=svga_s3. The LFB address doesn't matter for anything
    other than SVGA S3 emulation.
  • S3 emulation will now automatically disable PCI VGA emulation if
    constraints prevent DOSBox-X from setting a linear framebuffer
    address aligned to 32MB (as required for PCI emulation).
  • VGA emulation fixed to pick a more appropriate linear framebuffer
    (S3) address if memalias is set to a value below 32.
  • Added dosbox.conf option "pci vga" to control whether the VGA
    emulation appears as a PCI or ISA device.
  • ROM BIOS now forces reported RAM down to make room for BIOS
    alias at top of memory instead of throwing an E_Exit error.
  • Fixed Hercules emulation (and MDA) so that the Hercules palette
    is always enforced. This fixes a bug where switching to HGC
    graphics mode resulted in monochrome blue/black graphics instead
    of the intended white/green/amber color expected.
  • Added MDA emulation (machine=mda). It functions like
    machine=hercules minus the graphics mode and Hercules-specific
    extensions to the base MDA card.
  • DOSBox shell no longer accepts dosbox.conf settings as commands
    by default, unless enabled in dosbox.conf. Typing "cycles" will
    no longer show cycle count. The dosbox.conf setting allows the
    user to enable it again i.e. for compatibility with DOSBox SVN.
    This is to prevent dosbox.conf settings from polluting the
    available commands at the shell and conflicting with shell and
    executable names.
  • EGA emulaton fixed to obey Color Plane Enable register in
    16-color planar modes.
  • Fixed BIOS model byte to report PS/2 model 30 correctly when
    machine=mcga, to allow certain DOS games to detect MCGA that way.
  • CGA mode/color select registers are readable on MCGA, fix 3D8-3D9h
    to reflect that.
  • INT 10h fixed to properly allow/deny AH=10h, AH=11h, and AH=12h calls
    according to machine= type instead of mistakes that blocked too many
    calls.
  • CGA composite mode should not be available when machine=mcga.
  • Fixed INT 10h to report MCGA color display if machine=mcga.
  • MCGA (IBM PS/2 Multi-Color Graphics Adapter) emulation added.
  • bitop C++11 self-test disabled for Microsoft Visual Studio builds.
    Microsoft's compiler can't handle them for some reason.
  • Added DOSLIB DSXMENU.EXE to the built-in executable list.
    DSXMENU.EXE allows DOS CONFIG.SYS style menus to be set up to
    run commands based on menu selection.
  • PC-98 ANSI emulation fixed to use the number of rows on the screen,
    not cursor position, to range-clip ANSI cursor positioning.
  • Added code to have DX-CAPTURE wait 3 seconds (or until ENTER/SPACE
    is pressed) after the program exits, before stopping capture.
  • DOSBox-X menus now allow runtime selection of capture format
    (AVI+ZMBV or MPEG-TS H.264). Changing while capturing will stop/start
    capture correctly.
  • Added switches to DX-CAPTURE to allow specifying audio, multitrack audio,
    and video as well.
  • DX-CAPTURE shell command added. The command to run is specified
    after DX-CAPTURE and DX-CAPTURE will start video capture, run the
    program, then stop capture when the program exits.
  • VGA/SVGA emulation fixed to enforce 256KB (64KB planar) wraparound
    when emulating stock VGA modes (not SVGA/VESA BIOS). Some
    demoscene productions rely on the 256KB wraparound when showing
    scrolling credits.
  • Gravis Ultrasound emulation now uses I/O callout system, with
    I/O port handling to emulate ISA bus 10-bit decoding (but with
    consideration of GUS MAX 7xx registers) so that GUS I/O ports
    are visible every 1000h I/O ports. A demoscene production was
    found that relies on an alias of GUS ports at 5xxxh rather than
    using the I/O ports directly.
  • Mouse emulation no longer sends motion to serial and PC-98 mouse
    emulation unless mouse cursor has been captured.
  • Mouse emulation fixed to set sensitivity and mickey count even if
    int33=false on mouse emulation reset.
  • Debugger fixed to paginate commands with a lot of output, including
    HELP, PIC, and various commands to dump interrupts and GDT/IDT tables.
  • CPU core no longer triggers Double Fault if Divide Overflow
    occurs within Divide Overflow. This is needed for bizarre anti-debugger
    obfuscated code seen in a demoscene production, where the program
    wraps the demo in a mini-filesystem emulated by trapping INT 21h.
  • cputype= dosbox.conf setting fixed to allow selecting between
    new 486 emulation (cputype=486) and old 486 emulation (cputype=486old).
    The "old" 486 core emulates older 486 CPUs that differ significantly
    from the newer 486 CPUs that inherited features from the Pentium.
  • IRQ hack setting for GUS and Sound Blaster is now a list so that
    multiple hacks can be specified, but in a way that is backwards
    compatible with existing dosbox.conf files.
  • IRQ hack option for Gravis Ultrasound added.
  • INT 20h emulation fixed to work with demoscene productions that
    call INT 20h in a way that the interrupt frame wraps around the
    64KB limit of the stack.
  • XMS emulation now has a dosbox.conf setting to control the number
    of XMS handles available.
  • Added INT 33h option not to round mouse cursor coordinates to text
    cell boundaries in text mode. Some demoscene productions were found
    that detects mouse movement, but reads initial position from text mode
    before switching to graphics.
  • Removed IRQ0 error measurement hack, to match DOSBox SVN. This fixes
    timing problems with some demoscene productions. The error measurement
    hack was apparently added for Microsoft Flight simulator, but has not
    been needed since and has been causing timing issues since.
  • Fixed INT 10h VGA save state function to program the Attribute Controller
    properly so that the screen is not left blank after the call.
  • 8042 keyboard emulation now initializes port 60h to 0xAA on hardware
    reset and initialization. Some DOS games and demoscene productions
    need something with bit 7 set in the register at startup in order not
    to act as if a key was immediately pressed.
  • Add printer emulation from Daum's branch of DOSBox, add FreeType 2.9.1
    to go with it (Alex/AT)
  • Add keyboard type setting, for use in future development.
  • PCjr emulation fixed to emulate PC/XT style NMI mask at port A0h
    rather than emulate the secondary PIC.
  • Code of Conduct revised to make it clear that forks/derivatives CAN
    have their own Code of Conduct but that it only applies to that fork
    or derivative version. No forking DOSBox-X, changing the code of
    conduct, and enforcing it on anyone outside your fork.
  • CPU normal core fixed to clear ZF flag after MUL when cputype=8086,
    which fixes problems with MSD.EXE mis-detecting the CPU as a NEC V20.
  • Fixed PCjr emulation not to allow UMB (upper memory blocks) since
    that seems to cause stability issues with emulation. Also, PCjr
    does not have UMB as far as I know.
  • Fixed PCjr not to re-read port 60h from IRQ1 handler.
  • Fixed PCjr not to emulate INT 15h keyboard hook.
  • PCjr keyboard emulation fixed to trigger NMI and reflect to IRQ1
    the way it actually works on IBM PCjr systems, which also fixes
    keyboard control issues with the PCjr version of "Pitfall".
  • configure.ac now provides an option for compiler optimization (Yksoft1)
  • Code of Conduct, initial version, added to source tree
  • PC-98 palette save/load state
  • CPU, memory, VGA palette and attribute controller save/load state
  • DOS SHELL now implements INT 0x2E to allow DOS programs to invoke
    shell commands through COMMAND.COM (borrowed from DOSBox SVN).
  • Added dosbox.conf option to control the physical memory address of the
    S3 SVGA linear framebuffer.
  • Save/load state system added, currently very minimal and experimental.
  • Appveyor XML added to source tree (Allofich)
  • Fixed most SDL2 refresh problems.
  • Sound Blaster Pro mixer volume fixed to return reserved bits SET rather
    than CLEAR. Some demoscene productions detect Sound Blaster Pro by whether
    these bits remain set when written. This fix allows them to detect Sound
    Blaster Pro as Sound Blaster Pro.
  • VGA emulation fixed not to add 2 scanlines twice, which fixes VGA vertical
    timing and scanline count and fixes the scroller in "Inconexia".
  • Gravis Ultrasound emulation now prints a warning if the game/demo attempts
    a DMA transfer while leaving the DMA channel masked.
  • Fixed Gravis Ultrasound emulation to mask DRAM peek/poke I/O to the 1MB
    offered by the card, which fixes GUS problems with a demoscene production
    that has random values in DRAM address bits 23-20.
  • Added dosbox.conf option that, if set, lets Gravis Ultrasound emulation
    start a DMA transfer if the game/demo is polling the DMA control register
    when DMA is unmasked and DMA terminal count has not occured, which helps
    some dem...
Read more

DOSBox-X beta 0.82.8 2018-07-15 16:00

15 Jul 23:10
Compare
Choose a tag to compare
Pre-release
  • VGA DAC emulation cleanup, and accuracy fixes. Attribute controller, pel mask, and palette now operate in the way they actually work on real hardware.
  • VGA DAC emulation alternate behavior for Tseng ET4000 emulation, based on what actual ET4000 hardware does with the Attribute Controller, Pel mask, color select, and palette. Note that this behavior is required for COPPER.EXE to do it's line-fading technique properly.
  • machine=svga_et4000 emulation now also supports the hretrace "wobble" technique in COPPER.EXE
  • Added option to map SVGA non-linear framebuffer modes with a 128KB window starting from the 64KB bank-switching window, to help with a few demoscene productions that seem to have problems rendering past the 64KB bank without properly bank switching.
  • Gravis Ultrasound emulation now has an option to start emulation with the GUS wavetable, IRQ already started and running (as if ULTRINIT) which is needed for some demoscene productions.
  • Added "pic unmask irq" for Gravis Ultrasound.
  • Added hack for Gravis Ultrasound (disabled by default) where polling the DMA control register can check and re-trigger GUS DMA. For use with demoscene productions that have broken GUS support when uploading samples to the GUS.
  • Fixed Gravis Ultrasound emulation to mask the DRAM address (wraparound) to 1MB when the DOS game/demo peeks/pokes samples into RAM without DMA. This fixes "Acme Mental Masturbation" demo which seems to upload samples directly this way where bits 23-20 of the DRAM address are garbage or meaningless.
  • Fix VGA vertical timing bug where vtotal += 2 was applied twice.
  • Fixed Sound Blaster Pro mixer emulation to leave undefined bits set, not cleared. This fixes some demoscene productions that rely on set reserved bits to detect Sound Blaster Pro.
  • Fixed refresh and screen update problems with SDL2 builds.
  • Refactoring and cleanup of SDL output modes, separation into separate files (Alexat)
  • New load/save state framework. Currently (at this build) loads/saves system RAM, video RAM, and CPU state. THIS FRAMEWORK IS VERY EXPERIMENTAL AND IS NOT GUARANTEED TO WORK WITH MORE THAN A HANDFUL OF GAMES. Mapper shortcuts are hostkey+F1 to save, hostkey+F2 to load. Hostkey is F12, except on Windows, where hostkey is F11.

DOSBox-X beta 0.82.8 2018-07-05 09:00

05 Jul 16:07
ac0aa13
Compare
Choose a tag to compare
Pre-release

This is a beta release.

This has fixes for mouse integration, and consolidation of aspect ratio scaling along with other minor fixes.

DOSBox-X release 0.82.8 2018-07-01 10:00

01 Jul 17:00
Compare
Choose a tag to compare

0.82.8

  • New xBRZ scaler (with bilinear mode) (Alexat)
  • Fixed aspect ratio correction to use the ratio given by VGA emulation
    instead of assuming 4:3
  • output=surface and xBRZ now permit filling the window just like
    output=opengl and output=direct3d
  • Added critical section around Windows SDL 1.x resize code to solve
    the remaining 0.5% probability that resizing the window causes move
    and resize to stop working in Windows 10.
  • INT 10h AH=10h now ignores AL=3 in PCjr mode.
  • Fixed keyboard handler bug in PCjr mode that caused some CPU
    register corruption and general crashiness in games.
  • Improved shell: (Aybe, Joncampbell123)
    • Ctrl+Left and Ctrl+Right permits word-navigation.
    • Added emulation of 'Ins' key behavior.
  • Num Lock, Caps Lock, Scroll Lock are now synchronized at startup
    and when DOSBox-X window gains focus again (Windows). (Aybe)
  • Added visual feedback to Hat/D-pad buttons in mapper. (Aybe)
  • Added documentation for 'dir' command sorting switches. (Aybe)
  • Menu 'Show console' is now checked with '-console' (SDL1). (Aybe)
  • Improved joystick support (see README.joystick): (Aybe)
    • Added deadzone and response for joystick axes.
    • Axes can be remapped for devices with questionable layout.
    • User-settable deadzones for joystick bindings in mapper,
      mappings like WSAD keys to axes is less frustrating.
  • Improved mouse integration (Aybe):
    • Now by default DOSBox-X does not emulate mouse movement when the mouse
      is not locked. This gives a consistent experience when compared to host OS.
      For the old behavior, use [sdl] mouse_emulation=always.
    • Added visual or auditive feedback about auto-lock state (Windows).
      This feature can be switched off, use [sdl] autolock_feedback=none.
  • Added CAPMOUSE program for capturing/releasing mouse from command line. (Aybe)

DOSBox-X release 0.82.7 2018-06-01 13:05

01 Jun 20:06
Compare
Choose a tag to compare

0.82.7

  • Mac OS X builds now honor showmenu=false by leaving the
    stock SDL menu in place at startup.
  • Default minimum MCB free/base is now 0x100, to sidestep
    unknown unstable DOS application behavior when DOS
    applications are loaded at around segment 0x800.
    This also puts DOSBox-X at parity with the base memory
    behavior of DOSBox SVN.
  • Add dosbox.conf option to set Sound BIOS enable
    bit in non-volatile RAM (PC-98) that tells older
    PC-98 games the FM card is present (Yksoft)
  • BOOT updated to boot D88 except for 2D format which
    is generally used by PC-88 disk images.
  • Added D88 disk image support
  • CMake files added (Aybe)
  • PIC timing updated to use "double" float type for
    more precision, but as a typedef for future support
    as a compile time option.
  • Removed geometry checks from INT 1Bh FDC functions,
    to allow non-uniform disks to work.
  • MinGW builds now allowed to use Direct3D.
  • Direct3D output fixed to use the same texture
    coordinate, window fitting, and positioning
    logic as OpenGL.
  • Update zlib and libpng libraries in-tree.
  • Fixed VFD disk image support to correctly signal
    failure to detect geometry, to avoid divide by
    zero crash with FAT driver.
  • showmenu= now taken into consideration whether to
    show the menu bar at startup
  • Fixed get_item() E_Exit crash if menus asked to
    show from dosbox.conf
  • SDL drawn menus fixed to integrate with Direct3D
    output on Windows.
  • PC-98 mode can now boot floppy disk images where the
    boot sector is 128 or 256 bytes/sector despite
    track 1 and higher having 1024 bytes/sector.
  • General codebase cleanup, compiler warning cleanup.
  • Enable XInput support on Windows (Aybe)
  • Fixed SDL drawn menus to use std::vector properly,
    not to hold onto iterators while resizing the vector
    and popping things off the top.
  • PC-98 INT 1Bh "read id" floppy disk call fixed to
    cycle through sector numbers. Some bootable PC-98
    games use "MEGDOS" which polls this BIOS call before
    attempting to read the disk. If the sector numbers
    never cycle, "MEGDOS" will not attempt to read the
    disk.
  • Fixed bug that prevented some menu options (such as
    "aspect ratio") from working if still in the BIOS or
    booted into a guest OS.
  • PC-98 mode fixed to ignore "mainline compatible mapping".
    That mapping mode refers to DOSBox SVN which never
    supported PC-98 mode anyway.
  • Fix PC-98 INT 1Bh "test read" call, which then allows
    "cherry bomb" to run.
  • Remove geometry checks in PC-98 INT 1Bh BIOS call, so
    that FDD images with odd sector sizes can work.
  • ROM BIOS now automatically occupies E8000-FFFFF instead
    of F0000-FFFFF when in PC-98 mode.
  • Most 128 byte/sector FDD images appear to jump to
    E800:0002. I'm guessing that's ROM BASIC, so add a
    callback at that location to catch these boot disks
    and show a message instead of allowing the boot
    sector to jump to nothing and crash.
  • PC-98 BOOT fixed to check for and support booting from
    FDD images where track 0 contains 128 byte/sector
    boot sectors.
  • PC-98 INT 1Bh support fixed to support reading/writing
    sector sizes other than the one sector size reported
    by the image. It is now possible to read the other
    sector sizes from an FDD/VFD image.
  • Fixed somewhat serious bug that, when compiled against
    Microsoft C++, causes the AVI writer to use the 32-bit
    lseek() function instead of the 64-bit lseek64() function.
    Prior to this fix, AVI captures would begin to corrupt
    themselves after growing past 2GB in size.
  • Cleanup code, fix compiler warnings, typecast problems,
    C/C++ conformance problems as reported by GCC 4.8,
    GCC 7.3.0 (MinGW), Visual Studio 2017, and Clang/LLVM
    on Mac OS X.
  • FM Towns machine type stub, for anyone interested in
    forking DOSBox-X to implement FM Towns emulation.
  • Code cleanup, refactor, according to compiler warnings.
  • SDL drawn menus fixed to copy Direct3D backbuffer to
    the SDL surface when popup occurs. This allows the
    menus to overlap the Direct3D display correctly.
  • Fixed Direct3D output so that when composing the next
    frame in the backbuffer, it also copies the SDL drawn
    menu from the SDL surface in order to keep it on
    screen.
  • Direct3D output updated to follow SDL clip rectangle
    struct, in the same exact manner as the OpenGL output.
    This also permits the Direct3D output to correctly size
    itself and leave space at the top for the SDL drawn
    menus.
  • Fixed dynamic core entry point to push/pop EBP because
    debug builds need the compiler to track the stack frame.
  • Updated in-tree zlib and libpng libraries to the latest
    provided by both projects.
  • Fixed VFD (FDD) disk image support to signal to FAT driver
    properly an error if it could not determine a geometry.
  • Fixed code breakage with SDL2 that prevented compilation
    with Munt (MT32) emulation enabled. SDL2 builds now allow
    MT32 emulation.
  • Mac OS X builds now compile against the in-tree zlib and
    libpng libraries for consistency.
  • MinGW builds now compile against the MinGW provided zlib
    and the in-tree libpng library for consistency.
  • Enabled MinGW builds to use Direct3D and Direct3D shaders.
  • Added code to auto-detect the VirtualBox display driver
    in Windows build, because OpenGL output doesn't work
    in Windows XP under VirtualBox. The change will switch
    the default output to "surface" if VirtualBox is detected,
    else will retain the "opengl" default. This change applies
    only to MinGW builds and not HX DOS or main VS2017 builds.
  • Added PC-98 INT DCh emulation for function call that
    writes a char to the screen, allowing Eve Burst Error
    to clear the function row
  • Added command line option to allow skipping the 1-second
    wait in the BIOS startup screen.
  • SDL2 builds now support use of the SDL drawn menu with
    a touchscreen device.
  • Fixed up SDL2 support code to compile correctly on
    Mac OS X.
  • Fixed up SDL2 compilation to automatically use the
    SDL2 library on the system, or if that is not available,
    use the SDL2 library in-tree. There are no plans to make
    modifications to the in-tree SDL2 code.
  • Added code to read and discard OpenGL error code before
    creating font texture, to avoid false failure handling.
    This fixes font rendering on Windows MinGW builds when
    output=opengl.
  • OpenGL SDL drawn menus fixed to ensure the menu contents
    have been redrawn at least twice. One for each OpenGL
    buffer because DOSBox-X uses the double-buffered mode.
  • SDL drawn menus implemented for output=opengl. The menu
    bar in Linux builds is now available in OpenGL mode.
  • SDL drawn menus fixed to redraw only when state changes,
    and to clean up menu drawing code.
  • US keyboards can now enter the "Ro" key in PC-98 mode.
    Default binding is set up to map the Windows Menu key
    as Ro in PC-98 mode.
  • VGA option change code fixed to trigger scaler redraw
    correctly. Changing video modes or changing between
    8/9-pixel VGA text no longer leaves artifacts on the
    screen.
  • Added code to force redrawing additional frames when
    output=opengl, in order to correct a bug with Linux/X11
    and MesaGL where the first OpenGL buffer swap after
    SDL_SetVideoMode() is misplaced when the window size
    changes.
  • Renderer SSE line comparison fixed to use correct sizeof()
    of the integer type during compare.
  • Renderer fixed not to use SSE and non-SSE line comparision
    at the same time, if SSE was enabled at compile time.
  • Fixed in-tree SDL 1.x library to allow DOSBox-X to disable
    auto-refresh of the window in Linux/X11 after SDL_SetVideoMode
    to prevent visible flickering when resizing the window.
  • Conditional support for Direct3D (9) output enabled for
    MinGW builds, if the MinGW headers are available (yksoft1).
    Option is disabled by default.
  • Configuration GUI dialog box widened to accomodate buttons
    that were previously cut off on the right.
  • Replace E_Exit() with LOG_MSG() for key codes from the mapper
    that a keyboard scan code generator does not recognize. This
    fixes E_Exit() crashes if typing certain keys on a Japanese
    keyboard with no equivalent in IBM PC/AT mode.
  • Added code to double the size of the menu and menu items if
    the window is 1280x800 or larger, for users with high
    definition laptop displays and screens.
  • Enforce minimum window size of 640x400 if the menu bar is
    visible and DOSBox-X is drawing them, to make sure the menus
    are accessible on screen.
  • Removed auto-scalar-size code when output=surface that was
    causing problems when resizing the window.
  • Do not show "screenshot" menu item if screenshot support not
    available at compile time.
  • Remove "always on top" for anything but Windows at this time.
  • Disable "Show debugger" option on Linux and Mac OS X if no
    console attached to STDIN/STDOUT/STDERR.
  • Disable "Show console" option on Linux and Mac OS X since
    the console is not under our control.
  • Windows "Always on top" fixed to remember selection and
    enforce it between SDL_SetVideoMode and fullscreen entry/exit.
  • Windows builds fixed NOT to change window Z-order on the
    screen when updating the window on SDL_SetVideoMode.
  • HX DOS builds fixed to keep window maximized at all times
    to fill the otherwise unused space on the screen since
    HXGUI only supports one window.
  • Menu framework support for any other platform (including
    Linux) added. The menus are drawn by DOSBox-X itself
    using the 8x16 VGA font. This also gi...
Read more

DOSBox-X BETA 2018-05-18 17:00

19 May 00:00
Compare
Choose a tag to compare
Pre-release
  • Added PC-98 INT DCh emulation for function call that
    writes a char to the screen, allowing Eve Burst Error
    to clear the function row
  • Added command line option to allow skipping the 1-second
    wait in the BIOS startup screen.
  • SDL2 builds now support use of the SDL drawn menu with
    a touchscreen device.
  • Fixed up SDL2 support code to compile correctly on
    Mac OS X.
  • Fixed up SDL2 compilation to automatically use the
    SDL2 library on the system, or if that is not available,
    use the SDL2 library in-tree. There are no plans to make
    modifications to the in-tree SDL2 code.
  • Added code to read and discard OpenGL error code before
    creating font texture, to avoid false failure handling.
    This fixes font rendering on Windows MinGW builds when
    output=opengl.
  • OpenGL SDL drawn menus fixed to ensure the menu contents
    have been redrawn at least twice. One for each OpenGL
    buffer because DOSBox-X uses the double-buffered mode.
  • SDL drawn menus implemented for output=opengl. The menu
    bar in Linux builds is now available in OpenGL mode.
  • SDL drawn menus fixed to redraw only when state changes,
    and to clean up menu drawing code.
  • US keyboards can now enter the "Ro" key in PC-98 mode.
    Default binding is set up to map the Windows Menu key
    as Ro in PC-98 mode.
  • VGA option change code fixed to trigger scaler redraw
    correctly. Changing video modes or changing between
    8/9-pixel VGA text no longer leaves artifacts on the
    screen.
  • Added code to force redrawing additional frames when
    output=opengl, in order to correct a bug with Linux/X11
    and MesaGL where the first OpenGL buffer swap after
    SDL_SetVideoMode() is misplaced when the window size
    changes.
  • Renderer SSE line comparison fixed to use correct sizeof()
    of the integer type during compare.
  • Renderer fixed not to use SSE and non-SSE line comparision
    at the same time, if SSE was enabled at compile time.
  • Fixed in-tree SDL 1.x library to allow DOSBox-X to disable
    auto-refresh of the window in Linux/X11 after SDL_SetVideoMode
    to prevent visible flickering when resizing the window.
  • Conditional support for Direct3D (9) output enabled for
    MinGW builds, if the MinGW headers are available (yksoft1).
    Option is disabled by default.
  • Configuration GUI dialog box widened to accomodate buttons
    that were previously cut off on the right.
  • Replace E_Exit() with LOG_MSG() for key codes from the mapper
    that a keyboard scan code generator does not recognize. This
    fixes E_Exit() crashes if typing certain keys on a Japanese
    keyboard with no equivalent in IBM PC/AT mode.
  • Added code to double the size of the menu and menu items if
    the window is 1280x800 or larger, for users with high
    definition laptop displays and screens.
  • Enforce minimum window size of 640x400 if the menu bar is
    visible and DOSBox-X is drawing them, to make sure the menus
    are accessible on screen.
  • Removed auto-scalar-size code when output=surface that was
    causing problems when resizing the window.
  • Do not show "screenshot" menu item if screenshot support not
    available at compile time.
  • Remove "always on top" for anything but Windows at this time.
  • Disable "Show debugger" option on Linux and Mac OS X if no
    console attached to STDIN/STDOUT/STDERR.
  • Disable "Show console" option on Linux and Mac OS X since
    the console is not under our control.
  • Windows "Always on top" fixed to remember selection and
    enforce it between SDL_SetVideoMode and fullscreen entry/exit.
  • Windows builds fixed NOT to change window Z-order on the
    screen when updating the window on SDL_SetVideoMode.
  • HX DOS builds fixed to keep window maximized at all times
    to fill the otherwise unused space on the screen since
    HXGUI only supports one window.
  • Menu framework support for any other platform (including
    Linux) added. The menus are drawn by DOSBox-X itself
    using the 8x16 VGA font. This also gives SDL 2.x builds
    a working menu. These menus are used if no other platform
    specific menus are available. These menus are NOT AVAILABLE
    at this time if output=opengl.
  • Cycle count edit dialog box fixed to immediately place
    keyboard focus in the text field, and to process
    ENTER and ESCAPE keyboard input as OK and CANCEL
    button input. You can type a new cycles count without
    having to click on the text field first.
  • Menu framework and mapper fixed so that menus always
    reflect the mapper binding in the menu.
  • Windows SDL 1.x fixed async hack to properly destroy
    and shut down the parent window again.
  • Fixed output=opengl crash on Mac OS X.
  • Menu framework support for Mac OS X NSMenu objects added.
    This gives DOSBox-X the same useful menu on Mac OS X
    instead of the useless default menu SDL 1.x offers.
  • Menu framework support for Windows win32 menu resources
    added. The Windows menu is now generated at runtime,
    the static IDR_MENU resource is no longer used.
  • New platform independent menu framework added. Menus
    that were once Windows-only are now available on
    any other platform including Linux and Mac OS X.
  • In-tree SDL 1.x library fixed to #define a special
    variable that the code now requires to compile
    SDL 1.x builds. The option to use your host SDL 2.x
    library is left open.
  • C++11 is now mandatory to compile DOSBox-X

DOSBox-X menu rewrite WIP BETA 2018-05-13 13:16

13 May 20:17
Compare
Choose a tag to compare

0.82.7 (next)

  • Added code to force redrawing additional frames when
    output=opengl, in order to correct a bug with Linux/X11
    and MesaGL where the first OpenGL buffer swap after
    SDL_SetVideoMode() is misplaced when the window size
    changes.
  • Renderer SSE line comparison fixed to use correct sizeof()
    of the integer type during compare.
  • Renderer fixed not to use SSE and non-SSE line comparision
    at the same time, if SSE was enabled at compile time.
  • Fixed in-tree SDL 1.x library to allow DOSBox-X to disable
    auto-refresh of the window in Linux/X11 after SDL_SetVideoMode
    to prevent visible flickering when resizing the window.
  • Conditional support for Direct3D (9) output enabled for
    MinGW builds, if the MinGW headers are available (yksoft1).
    Option is disabled by default.
  • Configuration GUI dialog box widened to accomodate buttons
    that were previously cut off on the right.
  • Replace E_Exit() with LOG_MSG() for key codes from the mapper
    that a keyboard scan code generator does not recognize. This
    fixes E_Exit() crashes if typing certain keys on a Japanese
    keyboard with no equivalent in IBM PC/AT mode.
  • Added code to double the size of the menu and menu items if
    the window is 1280x800 or larger, for users with high
    definition laptop displays and screens.
  • Enforce minimum window size of 640x400 if the menu bar is
    visible and DOSBox-X is drawing them, to make sure the menus
    are accessible on screen.
  • Removed auto-scalar-size code when output=surface that was
    causing problems when resizing the window.
  • Do not show "screenshot" menu item if screenshot support not
    available at compile time.
  • Remove "always on top" for anything but Windows at this time.
  • Disable "Show debugger" option on Linux and Mac OS X if no
    console attached to STDIN/STDOUT/STDERR.
  • Disable "Show console" option on Linux and Mac OS X since
    the console is not under our control.
  • Windows "Always on top" fixed to remember selection and
    enforce it between SDL_SetVideoMode and fullscreen entry/exit.
  • Windows builds fixed NOT to change window Z-order on the
    screen when updating the window on SDL_SetVideoMode.
  • HX DOS builds fixed to keep window maximized at all times
    to fill the otherwise unused space on the screen since
    HXGUI only supports one window.
  • Menu framework support for any other platform (including
    Linux) added. The menus are drawn by DOSBox-X itself
    using the 8x16 VGA font. This also gives SDL 2.x builds
    a working menu. These menus are used if no other platform
    specific menus are available. These menus are NOT AVAILABLE
    at this time if output=opengl.
  • Cycle count edit dialog box fixed to immediately place
    keyboard focus in the text field, and to process
    ENTER and ESCAPE keyboard input as OK and CANCEL
    button input. You can type a new cycles count without
    having to click on the text field first.
  • Menu framework and mapper fixed so that menus always
    reflect the mapper binding in the menu.
  • Windows SDL 1.x fixed async hack to properly destroy
    and shut down the parent window again.
  • Fixed output=opengl crash on Mac OS X.
  • Menu framework support for Mac OS X NSMenu objects added.
    This gives DOSBox-X the same useful menu on Mac OS X
    instead of the useless default menu SDL 1.x offers.
  • Menu framework support for Windows win32 menu resources
    added. The Windows menu is now generated at runtime,
    the static IDR_MENU resource is no longer used.
  • New platform independent menu framework added. Menus
    that were once Windows-only are now available on
    any other platform including Linux and Mac OS X.
  • In-tree SDL 1.x library fixed to #define a special
    variable that the code now requires to compile
    SDL 1.x builds. The option to use your host SDL 2.x
    library is left open.
  • C++11 is now mandatory to compile DOSBox-X

DOSBox-X menu rewrite WIP BETA 2018-05-06 17:54

07 May 01:05
Compare
Choose a tag to compare

This is a WIP release. This contains a lot of new code concerning the menu layout.

The menu handling system is being changed from one that loads a static Windows menu resource (IDR_MENU) to one that constructs a menu in a platform-independent manner.

The code is brand new and may have some bugs.

The menu framework concept:

  • Components create a menu item by name, as an individual component
  • The mapper automatically creates a menu item for each mapper shortcut registered at startup
  • Lists of popup menus is defined by the menu item name
  • Each menu list can refer to popup menus by name to enable levels of popups
  • The final layout is defined in menu.cpp by name
  • Components can change text, enable, checked, and shortcut text at any time, which is then reflected in the menu
  • Windows builds map this to the Windows menu system
  • Systems where menu support is not implemented, simply do not show a menu, but the menu is in memory anyway
  • Menu items are then connected to a callback function, a mapper shortcut, or both

Look in menu.cpp for the char*[] string arrays that define menu layout by name. It's fairly straightforward.

Another additional feature, connected to the mapper, is that the mapper system automatically updates the menu item for a mapper shortcut when the key binding changes.

This eliminates the problem with DOSBox and DOSBox-X where the shortcut shown in the menu is only correct if the mapper shortcut is left at default.

In the new code, changing the key binding for a mapper shortcut should automatically update the menu.

A quick way to test this:

  • Bring up the mapper
  • Pick a menu item with a shortcut
  • Locate the same shortcut in the mapper UI
  • Click on the shortcut, to edit the binding
  • Note the shortcut shown in the menu
  • Change the binding modifiers
  • Note the shortcut shown in the menu now, it should reflect your changes
  • Delete the binding
  • Note the shortcut shown in the menu, there should no longer be any shortcut
  • Add a binding
  • Note the shortcut shown in the menu, it should show your new binding.

Since menu item order is now defined in menu.cpp, rearranging the menu should be simple now and it should be possible to submit simple patches to do so.

The code only works with Windows at this time. The next major development step for this code is to try and produce identical menus under Mac OS X.

Mac OS X builds would benefit from having proper menus instead of the minimal and useless default provided by SDL.

Have fun. Please use the comments section of the commit this is assigned to for comments.

DOSBox-X release 0.82.6 2018-05-03 09:55

03 May 16:56
Compare
Choose a tag to compare

0.82.6

  • Resizing the window in SDL 1.x Windows builds
    fixed to work correctly in the latest build
    (1803) of Windows 10. Prior to this fix, resizing
    the window on that build would quickly hit a deadlock
    that prevented the user from moving or resizing the
    window again after that point.
  • PC-98 dosbox.conf option added to select between
    accurate key/shift mapping, vs an alternate mapping
    appropriate for US keyboards (Yksoft1)
  • SDL 1.x for Linux/X11 modified to differentiate
    Ro and Yen keys despite X11 xkbmap apparently
    mapping both to the backslash. The keymap is
    queried to detect the scancodes at startup
    in order to return the correct SDLK constant.
  • SDL 1.x and DOSBox-X mapper code updated to
    correctly map Ro, Yen, @ ^ ; : keys on a JP
    keyboard in Windows and Linux.
  • PC-98 keyboard BIOS handling updated to generate
    ASCII codes according to PC-98 layout, instead
    of by US keyboard layout.
  • Mapper updated to support @ (at sign) key,
    ^ (caret) key, and a few other keys that
    exist on JP keyboards.
  • "Hold" modifier for mapper bindings fixed.
    It is now possible to tap the key again to
    release the hold.
  • VHD differencing disk support added (Shane32)
  • INT 18h AH=0Ah updated to support 20-line
    text mode. Some games use the 20-line text
    mode to space the text out vertically.
    Such games will display correctly now.
  • INT 18h now maintains text layer state
    in BIOS data area byte 0x53C, just as
    the actual BIOS does.
  • Added PC-98 INT 18h function AH=0Ah and
    AH=0Bh to support BIOS calls that enable
    "Simple Graphics" mode. This fixes
    problems with other games having vertical
    lines over the graphics, even though
    these games do not appear to use the
    simple graphics at all. (yksoft1)
  • Added support for PC-98 "Simple Graphics"
    mode of text layer attribute bit 4. When
    enabled, the attribute bit 4 changes
    meaning from vertical line to a bit
    indicating that the 8-bit character is
    a low resolution 2x4 bitmap to be
    displayed in the text layer. This fixes
    score and status display in Carat.
  • PC-98 INT 18h now implements AH=31h to
    report CRTC, text and graphics state and
    24khz/31khz video mode selection. This
    fix allows some games including Touhou
    Project to pace it's gameplay correctly
    in either video mode.
  • MinGW HX DOS builds default to host key
    F12 again
  • PC-98 mode now offers selection between
    24khz and 31khz video modes (yksoft1)
  • KEYB.COM fixed to load only the fonts the
    ROM BIOS has allocated. This fixes a guest
    system crash if using KEYB.COM with
    machine=ega
  • Moved host key to F11 for Windows. F12 is
    already taken by some internal debugging
    voodoo within Windows itself.
  • DOSBox-X codebase now strongly encourages
    compilation with C++11, will become
    required soon.
  • BOOT command fixed to make it possible to
    IMGMOUNT multiple floppies to drive 1, and
    boot from another disk in drive 0. This
    should enable the use of DOSBox-X with
    PC-98 games that expect to boot from drive
    A and the user to rotate through floppies
    in drive B.
  • IMGMOUNT fixed to support mounting with no
    filesystems and multiple disk images, and
    using the "swap floppy" command to rotate
    through them.
  • Added options to BOOT command that allows
    specifying multiple disk images and an option
    that says to swap disk images only through
    one drive.
  • VHD dynamic support added (shane32)
  • INT 10 AH=9 background color fixed in 256-color
    VGA modes.
  • Intro text updated to reflect new default
    key bindings.
  • Mapper shortcuts not in common use now exist
    without any default binding, and most existing
    default bindings are now associated with the
    "host" key.
  • Added 4th modifier "host" key to the mapper.
    This "host" key is F12 by default. The intent
    is to eventually move most mapper shortcuts
    to some combination of F12 and another key,
    rather than many shortcuts scattered over the
    keyboard. Existing dosbox mapper files should
    continue to work.
  • Renderer and 32bpp VGA display code fixed to
    reorder RGBA order for correct display on Intel
    Mac OS X systems. Mac OS X, on Intel systems,
    uses a strange BGRA 32bpp format that requires
    some adjustment on our part to display correctly.
  • Added more 24bpp INT 10h VESA BIOS modes.
  • Removed per-sector debug messages from VFD/FDD
    image support code.

DOSBox-X release 0.82.5 2018-04-18 23:51

19 Apr 06:52
Compare
Choose a tag to compare

0.82.5 (04/18/2018)

  • Expanded memory manager memory copy fixed to
    enable A20 gate temporarily so that the copy
    works correctly.
  • PC-98 FM board emulation now defaults to IRQ 12
    instead of IRQ 3. A lot of PC-98 games seem to
    have a strong preference for that IRQ with regard
    to FM music.
  • PC-98 reset I/O port (F0h) fixed to emulate CPU
    reset according to the SHUT0 and SHUT1 state set
    by the guest. Normally writing port F0h is a
    signal to reset but SHUT0 and SHUT1 can be set to
    indicate alternate behavior. This fixes VEMM486.EXE
    (an expanded memory manager) and allows it to run,
    since this manager appears to reset by port F0h
    then resume execution normally. Prior to this fix,
    booting a MS-DOS disk image that loads VEMM486.EXE
    at startup yielded nothing but an infinite reboot
    loop.
  • XMS and EMS emulation fixed not to leave A20 gate
    enabled unless EMS emulation is set to EMM386 and
    dosbox.conf is set to run the system in virtual
    8086 mode. There are plenty of DOS games that
    malfunction if loaded too low in memory with the
    A20 gate enabled.
  • PC-98 mouse emulation, at the 8255 level, now uses
    new C++ abstraction that seems to work fairly well
    even with the common PC-98 MOUSE.COM driver.
  • "BOOT" command in PC-98 mode updated to no longer
    require the --force switch. Booting MS-DOS from a
    hard disk or floppy disk image in PC-98 mode is
    generally functional now.
  • Added PC-98 SCSI/SASI hard disk emulation, and fixed
    BOOT to enable booting PC-98 MS-DOS from a hard drive
    (HDI image)
  • FAT driver fixed to read/write logical sectors vs
    actual drive sectors and removed geometry remapping
    hack.
  • FAT driver fixed to avoid memory corruption that
    may occur if reading a partition table from a drive
    that has more than 512 bytes/sector.
  • .BAT file parsing fixed to handle BAT files not
    in the current directory (yksoft1)
  • Fixed floppy controller emulation bug that failed
    to advance sectors during multi-sector read/write.
  • Fixed floppy emulation bug that prevented seeking.
    The "head" would get stuck at track 0 and never move.
  • Dynamic core allows running with paging enabled again,
    IF dosbox.conf says to allow it (yksoft1)
  • DOS file I/O functions AH=3Fh and AH=40h updated to
    reflect undocumented MS-DOS behavior that silently
    truncates read/written byte count if the offset
    and byte count reach beyond the end of a 64KB segment.
    This fixes some demoscene productions that read 64KB-1
    bytes but apparently rely on this behavior to avoid
    display errors.
  • FluidSynth fixes and API updates. DOSBox-X no longer
    uses a private API within FluidSynth. (heftig)
  • Added dosbox.conf option to control the size of the
    DOS "Swappable Data Area" which is said to help with
    shelling and task swapping in WordPerfect 5.x and 6.x
  • Added "minimum mcb free", and set minimum mcb segment to
    value same or similar to DOSBox SVN. The "free" option
    directs DOSBox-X to allocate memory before that segment
    value to fill memory.
  • Fixed COMMAND.COM PSP segment to correctly identify it's
    resident size in memory.
  • COMMAND.COM in the DOSBox shell now allocates itself
    normally instead of from a special segment so that it
    appears normally in the MCB allocation chain.
  • BIOS now clears it's stack before booting the DOS shell.
  • Fix Pause (CTRL+Pause or ALT+Pause) to release all keys
    in the mapper so that CTRL, ALT, or Shift are not left
    "stuck" when emulation resumes.
  • Initial host keyboard recognition, and base framework
    for general keyboard language/layout handling. Keyboard
    layout recognition added for Windows and Linux/X11.
  • Fixed 350-line INT 10h VESA modes not to apply EGA mode
    adjustments, which fixes display distortion.
  • INT 10h VESA modes 720x480 and 848x480 fixed.
  • Fixed INT 10h VESA emulation to round up bytes/scanline
    so that 4bpp planar modes display properly.
  • Fixed INT 10h VESA mode 1400x1050 16-color (4bpp planar)
    mode to resolve overlapping mode number.
  • Pulled in VGA vtotal + 2 fix from DOSBox SVN
  • Pulled in EGA display mode fixes from DOSBox SVN to fix
    EGA graphics emulation.
  • Fixed INT 10h AH=1Ch (save/restore VGA state) to handle
    VGA attribute controller properly so that the display is
    not left blank.
  • PC-98 GDC emulation fixed to handle START DISPLAY properly
    by un-blanking the display (fixes "Ellena")
  • Fixed possible format string vulnerabilities (gnustomp)
  • Added menu options to enable/disable EGC and GRCG
    emulation (yksoft1)
  • Added options to enable/disable EGC and GRCG emulation
    (to emulate older hardware).
  • Added PC-98 BIOS function to read 8x16 character bitmaps,
    which fixes "Power Dolls 2"
  • BIOS now reports 16-color and EGC graphics. Some games
    that check the BIOS for capabilities may now begin to
    use 16-color graphics and EGC functions.
  • Added PC-98 INT 18h function to read character font.
    This also resolves garbled text in TH01.
  • PC-98 GDC emulation now uses cursor specification
    (line per character row) to determine whether graphics
    are doubled vertically or not. Several PC-98 games
    switch between 200-line (doubled) and 400-line graphics
    by programming the GDC directly, rather than through
    the BIOS.
  • Added various video-related BIOS variables to the data
    in PC-98 mode.
  • GDC RESET/SYNC debug text updated to indicate which GDC
    is undergoing the RESET/SYNC.
  • Debugger "LOG" command (CPU execution logging) fixed to
    automatically stop logging when the BIOS begins the
    POST routine after system reset. The user who invoked
    "LOG" probably cares more about what happened up to the
    game crash, fault and reset rather than normal BIOS startup.
  • BIOS now properly unmasks the PC-98 cascade IRQ, which
    allows IRQ 8-15 to function, including the mouse (IRQ13)
  • Debugger interface now indicates whether 80386 paging is
    enabled or not at any time.
  • Help text updates to reflect DOSBox-X changes (Shane32)
  • BIOS INT 13h emulation updated to support up to 4 hard
    drives (Shane32)
  • IMGMOUNT and BOOT code cleanup (Shane32)
  • IMGMOUNT RAM drive support: Additional fixes and geometry
    work done, and some hangs resolved (Shane32)
  • CPU emulation fixed to allow setting a breakpoint on
    ANY interrupt of a specific number, not just software
    interrupts. It is now possible to use BPINT to break
    upon hardware (IRQ) interrupts.
  • DOS kernel fixed to drop to the debugger if the MCB
    (memory control block) chain is corrupted, so that
    the corrupted state can be examined. When the debugger
    continues execution, a full restart of the DOS kernel
    is run. If DOSBox-X was compiled without the debugger,
    then the normal E_Exit() path is still taken.
  • Added debugger command to show, and modify, the state
    of the PIC (interrupt controller).
  • Added debugger command to view or change the A20 gate.
  • Added debugger command to view the state of EMS, memory
    handles, allocation, and EMS page frame mapping.
  • Added debugger command to view the state of XMS, memory
    handles, and allocation.
  • Added debugger command to view the layout of the ROM
    BIOS region (0xF0000-0xFFFFF) chosen by emulation.
  • DOS kernel now logs kernel allocations, which can be
    seen in the debugger using the "DOS KERN" command.
  • Added "RUN" command as an alternative to hitting F5.
  • Added "RUNWATCH" to the debugger, so that watching the
    system run in the debugger is possible.
  • Debugger data window can now be used to view memory in
    segmented, virtual (through paging), and physical (bus
    address) modes.
  • Debugger window data and code view windows now indicate
    regions of memory that are beyond the end of the segment.
  • Debugger window data and code view windows now indicate
    regions of memory that are paged out (will cause a page
    fault if accessed)
  • PC-98 A20 gate I/O port F6h fixed to work properly as an
    enable or disable, rather than just an enable. The PC-98
    version of HIMEM.SYS no longer complains about not being
    able to control the A20 gate.
  • IMGMOUNT RAM drive support: Ramdrive bug fixes and changed
    drive limits from ATA limits to BIOS/MBR (Shane32)
  • INT 21h fixed to use BIOS INT 1Ch to read date and time in
    PC-98 mode. Arrowgun now runs properly.
  • Fixed EMS emulation not to claim XMS memory (and zero BIOS
    extended memory size) if EMS emulation is in EMS board mode
    (and therefore not allocating extended memory through HIMEM.SYS).
  • PC-98 INT 1Fh extended memory copy implemented. DOS games in
    PC-98 mode can now use this API to access extended memory.
  • Fixed HIMEM.SYS emulation in PC-98 mode to zero BIOS extended
    memory values when claiming extended memory.
  • PC-98 mode now sets BIOS data area values correctly regarding
    conventional and extended memory.
  • Added rudimentary emulation of non-volatile RAM at the
    trailing edge of text RAM (A3FE0-A3FFF).
  • PC-98 mode now adds additional BIOS data values at boot time
    so that guest OSes like PC-98 MS-DOS can see the floppy drive,
    see keyboard input, and determine the boot drive properly.
    It is now possible to boot MS-DOS in PC-98 mode.
  • Added rudimentary PC-98 INT 1Bh BIOS interrupt, at least for
    floppy disk emulation.
  • Cleanup and formatting enhancements to IMGMOUNT ramdisk (Shane32)
  • DOS CON emulation in PC-98 mode now emulates two additional
    ANSI escapes to clear the screen that are specific to NEC's
    MS-DOS implementation, which fixes text layer problems with...
Read more