dMZX Forums: MegaZeux Game Compatibility Thread - dMZX Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

MegaZeux Game Compatibility Thread "Which MegaZeux version should I use?" (spoilers: the latest)

#1 User is online   Lachesis 

  • the pinnacle of human emotion
  • Group: DigiStaff
  • Posts: 3,904
  • Joined: 17-July 04
  • Gender:Female
  • Location:Sealand

Posted 22 July 2019 - 10:47 AM

This thread is intended as a companion thread to the permanent 2.8X incompatibility thread.

First off:
Almost always use the most recent release of MegaZeux (no, really).

The MegaZeux port historically has had mixed success in terms of keeping compatibility with older games. Much has been done since by ajs, Lancer, and I to fix these issues, but I'd like to continue improving support for older games where needed so there are as few excuses as possible for using old/slow/buggy/unstable versions of MZX.

This thread is meant to collect info on the known cases where actual compatibility issues still do exist and document past compatibility issues and when they were resolved. Note not every compatibility fix needs to be in this list, just the ones with known worlds that had the issue and were fixed. Also, short-term regressions are not accounted for here; this is primarily for notable long-standing issues, mostly due to changes between DOS versions or changes made in 2.80.

If you know of a game that doesn't work properly in the most recent release and needs a fix, please post about it here and/or report it to the bug tracker. We can't fix compatibility issues that we don't know about, and knowledge of some issues by the MZX development team has been lost over time. If there's a released game that previously had a compatibility issue that has since been fixed but isn't on this list, it's also worth posting here so it can be added to the list. Issues that were fixed years ago are likely underrepresented here.

Special thanks to Terryn for helping with this list and for finding/cataloguing a significant number of these compatibility issues in the first place.

Post Changelog
  • 2019-07-22: Created this thread to correspond with the release of MegaZeux 2.92. (Lachesis)
  • 2019-07-22: Added a world category to the patched to work section (worlds that originally referenced full-length filenames but had 8.3 files), clarified Captain Proton issue a bit. (Terryn)
  • 2019-07-22: Added null-terminated string comparison bug (Mines of Madness). (Lachesis)
  • 2019-08-31: Added MZXAk robot targeting section (Weeding out the Bad Plants). (Terryn)
  • 2019-09-15: Fixed protected palette version/date, added protected charset to the same note. (Lachesis)
  • 2019-09-24: Added COLOR FADE OUT save bug. (Lachesis)
  • 2019-09-27: Change link to new downloads page. (Lachesis)
  • 2019-09-28: Added MZXAk VALUE counter section, included Smallhacker Sidescrolling Engine in DOS SMZX list. (Terryn)
  • 2020-05-08: Updated for 2.92c and 2.92d, added ZeuxNAX to the list of games relying on .SAM linking to .WAV, and clarified the issue with Slave Pit's global robot. (Lachesis)
  • 2021-04-14: Added Xenogenesis title screen char editing issue, replaced remaining "vault" links.. (Lachesis)
  • 2022-04-14: Tone tweaks and some examples of when not to use the latest version. (Lachesis)


Example reasons why you might actually want to use older versions
  • Your game was made with an older version and you're making minor updates or tweaks to it. Editing and saving it with the old MZX version ensures the version compatibility checks in newer MZX versions continue to work. It isn't always obvious when a game relies on these. To determine which version to use, you can open your game in the editor in a newer MZX release and press Alt+Y to open the debug window. The top right corner of the box will indicate which release series your game was previously saved with.
  • Exploring the limitations of some particular DOS version of MZX. A lot of the DOS versions are landmark releases in their own right and are interesting because of that.
  • Probably others...


Games that may still need to be played in older versions

  • Anything still listed in this post. There are not very many of these and all of them should be patchable (and some can be fixed in future versions, despite what the title implies).

  • Anything relying on subtle differences in the <2.80 behavior of COPYROBOT "" and RID*. This only goes for things actually legitimately broken by this.
    • The Evil Midnight Bomber vs. The City by Impulse Software is completely playable in the port, but has a minor bug caused by this. This is the only known case of this bug affecting anything at the moment.

  • Any <2.80 game that expects KEY_CODE to not have an autorepeat stall
    • mo3_fungahhh.MZX by Fungahhh is the only known game to be "significantly" "affected" by this.

  • Any <2.80 game relying on palette changes being delayed until after the robot message box closes.

  • Any game that uses MZXAk's inter-robot targeting feature.
    • Weeding out the Bad Plants (404) by Leper_Mess uses inter-robot targeting to perform actions like sending a squad to a specific spot. This only works in MZXAk versions as inter-robot targeting was removed in MZX 2.6.

  • Any game that uses MZXAk's obseleted built-in math counters.
    • Global Death (34129) by Leper_Mess uses certain math counters introduced in MZXAk (ABS_VALUE, SQRT_VALUE, VALUE) to handle momentum for the first level's player character and to control projectiles in another level. These counters were replaced in 2.68 by more efficient counters named ABSn and SQRTn.

  • Games from <2.69c that rely on page flipping bugs in older DOS MZX versions.
    • Xenogenesis by Autumn Dreams has a minor title screen graphical glitch in MZX versions 2.69c and up because it moves the title graphic a cycle early. This looked correct in prior versions due to MZX updating the wrong charset page, causing char edits to lag slightly behind.

  • Pre-2.83 SVN games need to be played with a version of MegaZeux that isn't currently available in the archive. All known worlds with this issue can be fixed by changing a single byte in a hex editor. Known games in the archive that haven't been fixed:

  • Games from <2.80 relying on SFNs that can't be reproduced by normal means.
    • Nova Force Demo 1 by Padogle somehow contains the SFN "CHEE#DF0.MOD" which is expected to link to the file "cheeseburger.mod"; this isn't a typical Win 9X generated SFN so it can't really be supported. This is the only file in the game that is affected and the second demo doesn't have the issue. This doesn't work in DOS MZX either unless the file is manually "corrected" to the expected name.

  • Games intentionally designed to have version incompatibilities.
    • ASCII Robowars 3D Demo Re-Release by Gemini uses the local counter to determine whether the user is running 2.51 or 2.51s1 and uses this to selectively enable one of two demo levels. Because this counter has a version check as of MZX 2.82, the game will always "detect" 2.51 and enable the cave level. The other level can be accessed by toggling the value of the "s3mode" counter with the editor, resaving the game with a later version, or by playing the game in a version between 2.51s1 and 2.81h.


Games that have been patched to work

  • Any 2.68 game that relied on 2.68 features. The originals of these games worked ONLY in 2.68. The fix was just to resave these with MegaZeux 2.69, so they now they work in all versions from 2.69 up. The originals are still available as well if you need the most Authentic™ A* Pathfinding Engine experience possible.

  • Pre-2.83 SVN games that were fixed:

  • DOS-era games that had 8.3 filenames but referenced their intended full-length names.
    • Hamlet by Rawhide C (simply repackaged with duplicate files with full namelengths)
    • Zombie Quest by Jester/Jauhis (edited to reference the 8.3 filenames)


<2.80 games that DON'T work properly in DOS or DOSBox, but work in the port.



Fixed since MegaZeux 2.80g (2005-04-01) and/or MegaZeux 2.80h (2005-06-06)

  • Palette edits and custom charsets no longer affect most UI elements.
    • Essentially any non-SMZX game with an edited palette or charset.


Fixed since MegaZeux 2.81e (2007-01-20) and MegaZeux 2.81g (2007-07-04)

  • Any game relying on counter names conflicting with the built-in counters KEY# and RID*:


Fixed since MegaZeux 2.82 (2008-06-10)

  • Most other games relying on counter names that conflicted with built-in counters added later:
    • No specific examples prompted this fix, but if any are found, they should be added here.


Fixed since MegaZeux 2.84 (2012-06-03)

  • Any game relying on the legacy cycle-ending behavior of labels.

  • Any game relying on MOD "filename.mod*" loading filename.mod and then setting the board mod to "*".
    • This fix may have been prompted by no specific example in particular.


Fixed since MegaZeux 2.84b (2012-06-21) and 2.84c (2012-12-24)

  • Most games that could cause crashes from corrupted world data (LIST HERE). Due to the nature of these worlds they'll probably never work as originally intended, but this was true when they were first released anyway.


Fixed since MegaZeux 2.90 (2017-06-29)



Fixed since MegaZeux 2.91c (2018-03-04)

  • Most password-protected games that could cause crashes while decrypting in some port versions.


Fixed since MegaZeux 2.91d (2018-07-13)

  • Any <2.80 game that relied on setting SPRn_OFF to 0 being ignored


Fixed since MegaZeux 2.91g (2018-10-07)

  • Password-protected games with passwords 15 characters long that would cause crashes while decrypting in some port versions.


Fixed since MegaZeux 2.91j (2019-02-20)

  • Any <2.83 game relying on the legacy SPR_NUM behavior for IF c?? Sprite

  • Any <2.80 game relying on the player movement key repeat timers persisting after locking the player.


Fixed since MegaZeux 2.92 (2019-07-22)

  • Any 2.80 through 2.82b game referencing a .SAM or .GDM file that was only packed with a corresponding .WAV or .S3M file.

  • Any <2.80 game that uses the MOD SAM command.
    • Crisis in Stuffyou City (47506) by Kuddy, ShloobeR, RoSS, and Trev-MUN (original DoZ version) used MOD SAM on the Pacman board for the power pellet sound. Note that the rerelease replaced this with a PC speaker sound effect, as the MOD SAM command was unsupported in port versions for a very long time.
    • Sprite Catcher by Nanobot uses MOD SAM for all of its sound effects.
    • Talon's Tale by Otto Germain uses MOD SAM.

  • Any >=2.51s1, <2.69b game relying on counters named "local#" (where # is any number) being global.
    • Freedom Bound (4096) by Exophase, Starfire, and Ghent.
    • Impact (027) by Exophase, Wervyn, and Quasar.

  • Any <2.70 game relying on negative SPR_NUM values

  • Any <2.84 game broken by a sprite collision bounding bug introduced in 2.84.
    • Manuel the Manx (219) by CapnKev, MadBrain, LogiCow, and Lipid wasn't playable past the first board due to this bug.

  • Any <2.69c game broken by the removal of a version check on if c?? Sprite in 2.80 (these worked in 2.83 through 2.91i only because the legacy if c?? Sprite behavior was removed altogether until 2.91j).
    • Depravity (666) by Galladin, Jester, and Jauhis.

  • Any <2.80 game relying on sprite values persisting between gameplay sessions or other relaxed requirements for initializing sprites.
    • Hackers Can Turn Your Computer into a Bomb! by LogiCow uses PUT Sprite before initializing its sprites, meaning in DOS versions it relied on non-zero sprN_width and sprN_height values persisting between gameplay sessions. This game only "worked" in 2.69c and 2.70 before now, and only on the second attempt or after playing something else that sets these values.
    • Lethal Recurse (215) by Lancer-X, Taitorian, and Ghent places a particular sprite to make sure an MZX bug isn't present but doesn't set its height correctly. This worked prior to 2.80, when MZX only required one sprite dimension to be set.
    • Serum (404) by George Foster places a 0-height sprite for the message box.
    • Trashman Dan (18349) by Tecki, Revvy, and Fungahhh relies on putting a sprite before initializing its height.

  • Any <2.80 game that relied on SHOOT updating the robot blocked array.
    • Captain Proton and the Reality Rippers (173) by Kevin Vance, md, and lipid. This would prevent the henchman on the first combat board from cleaning up the overlay correctly, as well as other similar bosses.

  • Games fixed or improved by allowing bytecode validation to truncate/nop/patch problematic programs instead of rejecting the entire program:
    • Eternal Eclipse Taoyarin by Lancer-X (malformed program ends, 1.0 only)
    • Loco by zombieguy (corrupt part of program is fixable)
    • Manuel the Manx (219) by CapnKev, MadBrain, LogiCow, and Lipid (a corrupted program on an inaccessible board is silently truncated).
    • Sidewinder's Engines by Sidewinder (two robots ended with 0xFF instead of 0x00)
    • Games created with Mikawo's zzt2mzx converter with the original broken global robot bytecode are automatically patched to work fully as intended (only the yellow key and white key cheats were truncated).


Fixed since MegaZeux 2.92b (2019-09-23)



Fixed since MegaZeux 2.92c (2020-03-08)

  • Games with robots marked unused saved with garbage programs that were erroneously validated starting from 2.84c.
    • Slave Pit by CHEZZY (global robot)
    • Wes by Bramble (global robot)


Fixed since MegaZeux 2.92d (2020-05-08)


This post has been edited by Lachesis: 15 April 2022 - 12:47 AM

"Let's just say I'm a GOOD hacker, AND virus maker. I'm sure you wouldn't like to pay for another PC would you?"

xx̊y (OST) - HELLQUEST (OST) - Zeux I: Labyrinth of Zeux (OST) (DOS OST)
w/ Lancer-X and/or asgromo: Pandora's Gate - Thanatos Insignia - no True(n) - For Elise OST
MegaZeux: Online Help File - Keycode Guide - Joystick Guide - Official GIT Repository
2

#2 User is online   Lachesis 

  • the pinnacle of human emotion
  • Group: DigiStaff
  • Posts: 3,904
  • Joined: 17-July 04
  • Gender:Female
  • Location:Sealand

Posted 22 July 2019 - 10:48 AM

[reserved]
"Let's just say I'm a GOOD hacker, AND virus maker. I'm sure you wouldn't like to pay for another PC would you?"

xx̊y (OST) - HELLQUEST (OST) - Zeux I: Labyrinth of Zeux (OST) (DOS OST)
w/ Lancer-X and/or asgromo: Pandora's Gate - Thanatos Insignia - no True(n) - For Elise OST
MegaZeux: Online Help File - Keycode Guide - Joystick Guide - Official GIT Repository
0

#3 User is online   Lachesis 

  • the pinnacle of human emotion
  • Group: DigiStaff
  • Posts: 3,904
  • Joined: 17-July 04
  • Gender:Female
  • Location:Sealand

Posted 08 May 2020 - 07:06 AM

Added sections for things fixed in 2.92c and 2.92d.
"Let's just say I'm a GOOD hacker, AND virus maker. I'm sure you wouldn't like to pay for another PC would you?"

xx̊y (OST) - HELLQUEST (OST) - Zeux I: Labyrinth of Zeux (OST) (DOS OST)
w/ Lancer-X and/or asgromo: Pandora's Gate - Thanatos Insignia - no True(n) - For Elise OST
MegaZeux: Online Help File - Keycode Guide - Joystick Guide - Official GIT Repository
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users