На форуме сайта
ps2-scene.org появилось описание режимов работы HD loader. Зная их можно более осмысленно пытаться настроить HD loader на совместимость с конкретной игрой, а не методом тыка как раньше. Для начала оригинальное сообщение:
Yet to bring something up for the time being, peeps always keep wondering what the HDLoader Compatibility Modes do. And for everyones information, this was not at all my discovery so I'm not taking any credit from this:
Mode 1: Enable slower HDD access. Passes data from the HDD slower for games that rely on the speed the data is coming from the CDVD.
Mode 2: Enable DVD9 support. (Figure it out yourself)
Mode 3: Remove the Loader from the memory after the game is patched. Some games flush the location where the loader is (because some cheat programs use the same location), and if after that the game resets the IOP (when the loader kicks in to patch stuff) and the system is still patched to enter the loader it crashes.
Хочу заметить, что это касается только трёх режимов работы, которые доступны в оригиинальной версии программы HD loader.
А теперь по-русски:
Mode 1
Включает более медленный доступ к диску. Данные с HDD передаются медленней для игр, которые полагаются на скорость поступления данных с CDVD.
Mode 2
Включает поддержку DVD9.
Mode 3
Убирает Загрузчик из памяти после того, как игра пропатчена. Некоторые игры очищают область памяти, где находится загрузчик (потому что некоторые чит-программы используют ту же область памяти), и если после этого та игра перезагружает IO-процессор (когда загрузчик активируется, чтобы сделать патчи) и система остаётся пропатченой на вход в загрузчик, она "падает".
Теперь немного моих соображений по этому вопросу:
Ну с первым пунктом думаю всё ясно. Он, судя по описанию, просто включает искусственное "торможение" чтения данных, чтобы чтение не выполнялось быстрее, чем этого ожидает игра. Честно говоря, я немного этому удивился, так как думал, что с переходом на PS2 разработчики наконец-то перестали твёрдо полагаться на скорость считывающего устройства. Видимо есть исключения, хотя скорее всего причины этого явления кроются в скрытых ошибках в играх.
Второй пункт гораздо интересней. С одной стороны ясно написано, что это поддержка DVD9, но с другой стороны оригинальный HD loader не поддерживает игры на DVD9 и не умеет их устанавливать. В принципе, установить такие игры можно при помощи специальных программа и персонального компьютера. Видимо, это опция полезна только в таких случаях.
Третитй режим нужен для выгрузки программы HD loader из памяти. Тут утверждается, что некоторые игры зачищают область памяти, где находится резидентная часть HD loader, очевидно в целях борьбы с таким софтом как Action Replay, Game Shark и Codebreaker. Далее я не совсем понял что там происходит, похоже там описывается ситуция когда HD loader выгружен, а перезагрузка IO-процессора перехвачена, соотвественно производится обращение к коду HD loader, которого по предполагаемому адресу уже нет, и происходит необрабатывемое исключение или даже зависание. Однако, тогда непонятно почему бы при выгрузке HD loader из памяти не восстановить там всё как было, хотя конечно толку и от этого будет немного.
Насколько я помню, было некоторое количество игр которые работали именно при включении Mode 3. Инересно мешал ли им HD loader в памяти или они пытались бороться с читерами, хотя вроде бы были игры, которые просто подглючивали без включения Mode 3. Причем включать Mode 3 часто приходилось для того, чтобы избежать "щелчков" при воспроизведении звуков в игре.
Чтобы практически применять Mode 3 наверное стоит, хотя не знаю насколько поможет изложенное ниже.
Во-первых, что такое IO-процессор, он же IOP. Это модифицированный процессор от первой Playstation, на Playstation 2 ему вспомогательная но важная роль - на нём работают драйвера большинства устройств (в частности и C/DVD-привода) и некоторые вспомогательные программы. Во-вторых, когда и зачем он перезагружается. Обычно каждая игра при запуске перегружает IOP, происходит это прежде всего потому что на каждом диске с игрой находится так называемый IOP-имидж - базовый набор программных модулей и драйверов, который SCE выдаёт разработчикам в комплекте с SDK, чтобы они использовали их вместо более старых версий, находящихся в ПЗУ приставки. Соотвественно, игра заточена на работу именно с этими драйверами. Конечно же драйвера не меняются радикально от версии к версии, но в целях наилучшей совместимости игры перегружают IO-процессор при запуске. Ну а кроме того совершенно не желательно наличие посторонных выполняющихся программ.
Так вот, судя по описанию выше, HD loader отслеживает этот момент и производит подмену драйвера C/DVD где-то в процессе перезагрузки IO-процессора. В режиме номер 3 он по логике вещей должен выгрузится после первой же перезагрузки IOP (это только мое предположение) в расчёте на то, что больше их не последует.
Кстати, я первоначально думал что HD loader патчит игру в процессе копирования на винт, а потом просто запускает.