From 344c374f7299d3258758a1d5fa6313f6823cb75e Mon Sep 17 00:00:00 2001 From: Mow <32942550+taxicat1@users.noreply.github.com> Date: Fri, 29 May 2026 03:49:49 -0400 Subject: [PATCH] Add race condition patch for "Ultimate Mortal Kombat" (#183) --- CHANGELOG.md | 1 + data/patchlist.json | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4bc2f2..f645b82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - DMA card read support for the M3DS platform - by @lifehackerhansol - AP patches for NRL Mascot Mania and AFL Mascot Manor - by @taxicat1 - Houkago Shounen race condition patch - by @taxicat1 +- Race condition patch for Ultimate Mortal Kombat (USA) and (Europe) - by @taxicat1 ### Fixed - DMA card read offsets for Pokemon Ranger (EU) - by @taxicat1 diff --git a/data/patchlist.json b/data/patchlist.json index 981994f..908edf5 100644 --- a/data/patchlist.json +++ b/data/patchlist.json @@ -359,6 +359,38 @@ ] }, + // YUTE - Ultimate Mortal Kombat (USA) + // YUTP - Ultimate Mortal Kombat (Europe) + // + // These games have an issue where a flag can become out of sync with its associated object due to a vblank interrupt occurring + // while running the object constructor. When this happens, the vblank interrupt handler has a failsafe to create a new object. + // However, the object constructor opens sound_data.sdat, which will softlock the game because NitroFS functions cannot + // be called when interrupts are disabled (i.e. from within the vblank interrupt handler). + // To fix this, the flag that causes the issue in the first place is ignored and the pointer itself is checked instead. + // This changes only a single load offset. + { + "gameCode": "YUTE", // Ultimate Mortal Kombat (USA) + "gameVersion": 0, + "patches": [ + { + "type": "replace", + "address": "0203295C", + "data": "15", + } + ] + }, + { + "gameCode": "YUTP", // Ultimate Mortal Kombat (Europe) + "gameVersion": 0, + "patches": [ + { + "type": "replace", + "address": "02032C88", + "data": "0F", + } + ] + }, + // MetaFortress games below here. // // MetaFortress is an automated system that replaces the typical way DS games are built. It automatically injects