Hunting the 30-Year-Old World of Xeen MT-32 Crash
10 hours ago
- #audio programming
- #game bug
- #retro computing
- A bug in Might & Magic IV & V: World of Xeen causes freezes and corruption only when played with a Roland MT-32, affecting both emulators and real hardware.
- The bug stems from an uninitialized register (BX) in the MT-32 driver's fade-out routine, leading to self-modifying code that corrupts memory.
- A single byte change in a compare instruction transforms it into an unbounded store, creating a self-amplifying corruption engine.
- The issue is a regression from the 1993 Darkside of Xeen driver, which added a fade for percussion but introduced the uninitialized register and swapped channel numbers.
- A fix involves ten byte changes to correct the channel assignments and prevent the uninitialized register from causing memory corruption.
- Patched versions now allow stable gameplay with the MT-32 soundtrack as intended, without crashes.