Сегодня я наткнулся на занимательную особенность этой игры, которая выпускалась на двух дисках.
Режим прохождения якобы записан на первом диске, а на втором - режим арены. Вот таким милым образом происходит смена диска.
Однако, оба образа весят подозрительно одинаково, да и список файлов практически не отличается. Если прогнать оба диска поиском дубликатов, выясняется, что по контенту отличаются только два файла: SYSTEM.CNF и GG\COM\CD.DAT. Кроме того, SLUS_010.30 и SLUS_010.81 - это один и тот же экзешник.
То есть по сути, разница между двумя дисками - это лишь CD.DAT. Весит он мало - 4 байта, а содержание его следующее: на первом диске - BA 00 00 00, а на втором - BA 00 01 00. Если в образе второго диска 01 поменять на 00, то что бы вы думали? Замечательно запустится режим прохождения.
Получается, логика действий следующая, где-то при запуске экзешник читает CD.DAT и если там 0, запускается "первый диск", а если любое другое значение, то "второй диск". Далее при выборе смены диска он снова читает CD.DAT, чтобы удостоверится, что был вставлен другой диск.
Вероятно, можно в начале инициализировать переменную нулём, а затем каждый доступ к CD.DAT заменить на инвертирование 1/0 и таким образом избавить игроков от необходимости свопать диски. К сожалению, дебаггер из меня никакой и поэтому такая задача представляется нереализуемой. Буду рад, если кто-то вдохновится сделать такой вот патч.