. support relative paths (#663)
. updated the current directory with the path for each loaded image (#663) & saving state (#691)
. added a new switch -current-dir <path>
This change adds the `-conf` switch which, if specified, will use an
INI-file instead of the Windows Registry.
This addresses AppleWin/AppleWin#709 and AppleWin/AppleWin#446.
. Display MessageBox with all unsupported commands that were passed in.
. MessageBox yes/no response will either continue or exit AppleWin.
Changed -left-control-alt-buttons to -left-alt-control-buttons (for consistency with -right-alt-control-buttons) (#743)
. The MessageBox will now confirm whether you typed it correctly or not.
Fixed DHIRESON/OFF typo in comment!
. added GetRef(), which can throw a std::runtime_error
. NB. dynamic_cast for a reference will throw a std::bad_cast error on failure
Added try/catch around main VM restart loop
. split the loop into ProcessCmdLine(), GetAppleWinVersion(), OneTimeInitialization() RepeatInitialization() & Shutdown()
. catch std::runtime_error & std::exception
Support 2nd Disk][ in slot-5, via command line:
- -s5 diskii
- -s5d1 \<imagefile\>
- -s5d2 \<imagefile\>
NB. there's currently no Configuration UI support, except the Drive icons' tooltips show what's in slot-5 & slot-6 (for drive-n). So there's no way to eject the disks or insert new disks. The use-case I'm supporting it Wasteland which just has the 4 disks in the 4 drives.
Improved card management:
- Added `class Card` (in Card.h) which all other cards (that exist as classes) derive from (eg. LC,SSC,Mouse,Disk2).
- Added `class CardManager` (in CardManager.cpp\h) which now manages the 8 slots (and aux slot).
- Added `class Disk2CardManager` (in Disk2CardManager.cpp\h) which provides methods for operations that act on all Disk2 instances at the same time.
- Currently limited to just 1x SSC and 1x Mouse card (why would you need more?). This simplifies things, meaning there's no need to have dedicated SSCManager / MouseCardManager objects.
- Currently the 2nd Disk2 card can only be put into slot-5. This limitation is just due to the complexity of the Configuration UI. Having a more general drop-down per slot UI would remove this limitation.
. Changed to 6522.TIMER underflowing at 0x0000 -> 0xFFFF (#652)
. Changed MB_Update() to be based on cycle delta (was TIMER1 interval)
. this improves support for small 6522.T1C interval
. removed MB_GetFramePeriod()
. removed overly-complex dual-timer support
. Replaced MB_EndOfVideoFrame() with MB_PeriodicUpdate()
This change does two things:
1. Updates the registry APIs to reduce the likelihood of uninitialized
variables.
The code wasn't always checking the return value of registry load operations.
In some cases, this led to uninitialized memory being used, and crashes could
result. For example, LoadConfiguration in Applewin.cpp was using an
uninitialized value for the computer type if no registry variable for the
"Apple 2 type" was set.
New registry reading methods and macros have also been introduced, allowing
default value fallbacks for the cases where a registry variable is not found.
This makes registry access simpler and safer when a default value is known in
advance.
The registry code's style has also been updated to conform with the rest of
the code base (tabs instead of spaces, naming conventions, etc.)
2. Introduces string safety improvements.
A number of code paths have been modified to use safe-string functions instead
of their unsafe counterparts (e.g., strcpy, sprintf). In the process, some
strings were converted from "char" to "TCHAR". This was done mostly for
consistency with the rest of the code-base.
Supports:
- all "woz test images" v1.3 (WOZ1, WOZ2) are working, except 3.5"
- additionally: Frogger (spiradisc), Choplifter (not Enhanced //e!), Lode Runner, Marble Madness, Skyfox.
- woz images can be .gz or .zip compressed (ie. same as other supported images)
- save-state
Limitations:
- read-only, so WOZ images are forced to be write-protected
. as a result, games that need r/w images won't work (Stickybear Town Builder, Wizardry)
- 5.25" only (not 3.5")
- Added Configuration GUI to include checkbox for "50Hz"
- Implicitly use PAL or NTSC base 6502 clocks depending on video refresh rate
- Added new -50hz and -60hz command line switches
- Updated save-state for video refresh rate
1.28.8.0: Updated version & history.txt
Updates for DHGR MIX (#633):
. Support new switch -rgb-card-invert-bit7 to invert bit7 for Dragon Wars.
- Reverted DHGR MIX mode and AN2 off to invert bit7