Перейти к содержанию

Grand Theft Auto - Liberty City Stories, Vice City Stories


Рекомендуемые сообщения

И всё таки, как же ломаются игры на PlayStation 2? В GTA нахождение нулевого адреса мало что даёт, адреса при перезагрузке меняются, приходится пользоваться автоизменением адресов. А сделать свою машину бессмертной и вовсе не получается, нужен указатель на структуру водителя в структуре машины, иначе задолбаешся каждую новую машину ломать((. И как же его искать? CE как я понимаю тут бессилен, нужен именно отладчик для PS2. Я знаю только про ps2dis. Но этому отладчику нужно скармливать elf-файл игры, т.е. он не реалтаймовый, как олли. Кто им пользовался - можно ли с помощью него как-то найти указатели, или есть другие пути?

Upd: в общем указатели то я нашёл, но ведь они все эмуляторные (оно и понятно), но как их обратно в компьютерные перевести? Долго мучился с CE и Artmoney, ничерта толком не получилось. Потом взял MHS и ввёл такие комплексные выражения (для PCSX2 r4040+):

Здоровье игрока:                     [[pcsx2.exe+0010A328]+408E40h]+20000000h+4b8
Здоровье машины, в которую игрок садится: [[[pcsx2.exe+0010A328]+408E40h]+20000000h+25Сh]+20000000h+268h

Тут [pcsx2.exe+0010A328] - нулевой адрес, равный 20000000h (статический);

[null_address+408E40h] - статический адрес, хранящий эмуляторный указатель на начало структуры персонажа (pHero_emul)

[pHero_emul]+20000000h - переводим эмуляторный указатель в компьютерный (pHero)

[pHero+4b8] - Здоровье

[pHero]+25Ch - Указатель на структуру машины (pCar_emul)

[pCar_emul]+20000000h - ещё одно превращение эмуляторного указателя в компьютерный

[pCar+268h] - движок машины

Вот так всё сложно получилось :( У кого какие идеи по упрощению?

А самое хреновое - в MHS нет хоткеев на прибавление\уменьшение к текущему значению адреса константы, есть хоткеи на фиксированное изменение значения и заморозку :( В Artmoney у меня на этих хоткеях получился прикольный телепорт))

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Пока ломал gta случился презабавнейший глюк - по всему городу дороги в разных местах оказались перекрыты прозрачными барьерами. Машины в них врезаются, мнутся и не могут проехать (при этом компьютерные машины врезаются в них почему-то не всегда, а когда как). Визуально барьеры не видны, но если приглядеться, видно некий шов на дороге. Пешком барьеры тоже не проходятся, а вот пули пролетают как будто нет ничего. Очень часто в районе барьера машины и пешеходы проваливаются сквозь дорогу вниз.

Барьеры очень помогают проходить всякие гонки-догонялки - пока боты будут таранить стенку, можно их перегнать (объехать барьер или телепортироваться сквозь него), но некоторые миссии из-за них стали непроходимы (прохожу их всякими читерскими способами, пока успешно.

В общем, если кому станет интересно, вот ссылка на 2 снапшота для игры GTA Liberty City Stories для эмулятора Pcsx2 R4061 (должны работать на всех версиях 0.9.7, на 0.9.6 и ниже скорее всего не пойдёт) http://narod.ru/disk/1713641001/sstates.rar.html (сэйв 000 без глюка, сэйв 001 уже с глюком)

Глюк возник, когда я пытался изменить вес полицейской машины. Взял структуру своей текущей машины и в CE в построителе структур начал изменять все типы float, равные 1300-1600 на 999999 (всего сделал не больше пяти-шести замен, не больше). Похоже глюк возник из-за этого, хотя не факт. А массу я так и не нашёл) очень интересно разобраться в причине столь странного и необычного глюка, но не представляю как это сделать и убрать эти барьеры

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

И всё таки, как же ломаются игры на PlayStation 2? В GTA нахождение нулевого адреса мало что даёт, адреса при перезагрузке меняются, приходится пользоваться автоизменением адресов. А сделать свою машину бессмертной и вовсе не получается, нужен указатель на структуру водителя в структуре машины, иначе задолбаешся каждую новую машину ломать((. И как же его искать? CE как я понимаю тут бессилен, нужен именно отладчик для PS2. Я знаю только про ps2dis. Но этому отладчику нужно скармливать elf-файл игры, т.е. он не реалтаймовый, как олли. Кто им пользовался - можно ли с помощью него как-то найти указатели, или есть другие пути?

Все эти пути сводятся к одному - использование сканера памяти, отладчика Windows-приложений, отладчка рома и язык программирования (для продвинутых позволит автоматизировать разные процессы).

Upd: в общем указатели то я нашёл, но ведь они все эмуляторные (оно и понятно), но как их обратно в компьютерные перевести? Долго мучился с CE и Artmoney, ничерта толком не получилось. Потом взял MHS и ввёл такие комплексные выражения (для PCSX2 r4040+):

Здоровье игрока: 					[[pcsx2.exe+0010A328]+408E40h]+20000000h+4b8
Здоровье машины, в которую игрок садится: [[[pcsx2.exe+0010A328]+408E40h]+20000000h+25Сh]+20000000h+268h

Тут [pcsx2.exe+0010A328] - нулевой адрес, равный 20000000h (статический);

[null_address+408E40h] - статический адрес, хранящий эмуляторный указатель на начало структуры персонажа (pHero_emul)

[pHero_emul]+20000000h - переводим эмуляторный указатель в компьютерный (pHero)

[pHero+4b8] - Здоровье

[pHero]+25Ch - Указатель на структуру машины (pCar_emul)

[pCar_emul]+20000000h - ещё одно превращение эмуляторного указателя в компьютерный

[pCar+268h] - движок машины

Вот так всё сложно получилось :( У кого какие идеи по упрощению?

На языке программирования будет выглядеть лучше и проще. На MHS C-скрипте будет выглядеть тоже не плохо. Например, тебе нужно описать отдельные функции:

1) Функция2 (использующая nulladdr) возвращающая структуру Hero;

2) Функция3 (использующая Hero) совершает например заморозку здоровья героя;

3) Функция4 (использующая Hero) совершает например заморозку стойкости машины.

Аналогично, можно сделать PS2-ассемблерными вставками вместо заморозки, что будет эффективнее.

А самое хреновое - в MHS нет хоткеев на прибавление\уменьшение к текущему значению адреса константы, есть хоткеи на фиксированное изменение значения и заморозку :( В Artmoney у меня на этих хоткеях получился прикольный телепорт))

В MHS можно написать С-подобный скрипт и связать с горячей клавишей. Так что MHS решает эту задачу. Да и вообще эффективнее не использовать заморозку, а редктировать PS2-ассемблерный код.

...Похоже глюк возник из-за этого, хотя не факт. А массу я так и не нашёл) очень интересно разобраться в причине столь странного и необычного глюка, но не представляю как это сделать и убрать эти барьеры

Первую причину установить легко - делай по шагам, то что привело к эффекту "глюка" и определишь какой шаг привёл к нему.

Ссылка на комментарий
Поделиться на другие сайты

В общем причину глюка выявить не удалось - причина явно спонтанная, случайная. Что интересно, на втором острове сколько играю ни одного барьера не заметил. Но возвращаюсь на первый остров и там всюду барьеры(

Сделал ещё одно открытие. В структуре машины по смещению 44h находятся некие биты, отвечающие помимо прочего за иммунитет машин к взрывам, пулям, огню и пр. По умолчанию они равны CC102h, а для неуязвимой машины нужно выставить E0EC102h (эту инфу я нашёл в исходниках тренера GTA3Console). Совершенно случайно у меня прописался в эти биты нуль и результат меня очень порадовал - машина стала невидимой и начала ездить сквозь другие машины, препятствия и даже дома)) Офигенный чит)) Жаль что выйдя из такой тачки обратно в неё уже не сядешь. Попробовал вместо нуля другие цифры - чаще всего машины просто исчезают и не дают сесть в себя.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

В общем причину глюка выявить не удалось - причина явно спонтанная, случайная. Что интересно, на втором острове сколько играю ни одного барьера не заметил. Но возвращаюсь на первый остров и там всюду барьеры(

Что-то я не понял. Этот глюк спонтанно возникает с твоими изменениями в памяти или без них? Если второе, то искать причину будет весьма трудно. Если первое, то легче, но насколько легче не известно. По крайне мере в первом случае можно чётко установить обратную связь - изменил значение адреса, то получил глюк.

Сделал ещё одно открытие. В структуре машины по смещению 44h находятся некие биты, отвечающие помимо прочего за иммунитет машин к взрывам, пулям, огню и пр. По умолчанию они равны CC102h, а для неуязвимой машины нужно выставить E0EC102h (эту инфу я нашёл в исходниках тренера GTA3Console). Совершенно случайно у меня прописался в эти биты нуль и результат меня очень порадовал - машина стала невидимой и начала ездить сквозь другие машины, препятствия и даже дома)) Офигенный чит)) Жаль что выйдя из такой тачки обратно в неё уже не сядешь. Попробовал вместо нуля другие цифры - чаще всего машины просто исчезают и не дают сесть в себя.

Что-то бит я не увидел, увидел только "2,5 (CC102h) и 3,5(E0EC102h) байта" :) То что "ноль приводит к таким последствиям" это да - случайность и открытие. Но можно было предположить, что ты можешь перечислить наборы всех моделей пока не получить такое свойство. И тут тебе бы не пришлось много перебирать если бы ты начала с нуля.

За труды в исследовании +1.

Ссылка на комментарий
Поделиться на другие сайты

Что-то бит я не увидел, увидел только "2,5 (CC102h) и 3,5(E0EC102h) байта"

Да нет, там именно биты. СС102h = 0000 0000 0000 1100 1100 0001 0000 0010

0E0C102h = 0000 1110 0000 1110 1100 0001 0000 0010

А глюк со стенами проявился, когда я сидя в полицейской машине менял некоторые адреса в её структуре, пытаясь найти вес. Вес не нашёл, начал играть и вот они, стены (не сразу их увидел, т.е. совершенно непонятно после каких именно манипуляций глюк появился). Потом игра была сохранена (средствами эмуля). Также иммется сэйв без глюка, но там я сижу не в полицейской машине. Попробовал сесть к копам и повторить свои дейтвия, но глюк так и не появился.

Но как оказалось от глюка можно избавиться, если сохранить игру средствами самой игры, а не эмулятора, а потом выйти из игры и загрузить этот сэйв (до этого я всю игру проходил, сохраняясь эмулятором; может именно это заглючило игру)

Ссылка на комментарий
Поделиться на другие сайты

По поводу байтов:

С битами и байтами у тебя не правильно расписано:

По 8мь бит на один байт.

У тебя

0x0СС102 (3 байта = 3 группы по 8 бит)

0xE0C102 (3 байта = 3 группы по 8 бит)

0x0СС102 = 00001100 11000001 00000010

0xE0C102 = 11100000 11000001 00000010

Тут получается у тебя поменялся первый байт c 0С на E0. Можно конечно исчислять битами, но удобнее байтами. 0С - у тебя делает то-то, а E0 делает то-то.

По поводу гюка теперь понятно. Решение чтобы его не было та наверно нашёл, если нет, то необходимо искать обратную связь изменяя значения адресов и смотреть на происходящие действия. Найдёшь злополучный адрес и менять более его не будешь. Вот и всё.

Ссылка на комментарий
Поделиться на другие сайты

В общем надо будет разобраться с этими битами. В частности при замене C1 на C0 машина начинает ездить сквозь стены. При этом сама машина будет видна на дороге, но после выхода обратно в машину-призрак не сесть, т.к. она останется для игрока призрачной, игрок будет сквозь неё проходить. Последний байт 02 отвечает за заморозку машины или отцепления от машины камеры. Пойду изучать дальше)

Ссылка на комментарий
Поделиться на другие сайты

Наконец-то на 99% стала ясна причина глюка с барьерами - злоупотребление мной квиксэйвами эмулятора. Надо пореже сохраняться во время выполнения миссий и почаще средствами самой игры :) Только что барьеры появились на втором острове, хотя только что их не было и я ничего не взламывал, кроме здоровья и координат своей машины. Что и требовалось доказать.

Ссылка на комментарий
Поделиться на другие сайты

В плане квиксейвов эмулятор Dolphin тоже часто делает ошибки в эмуляции, бывает что и сохранения просто не работают. Это я так, к слову. Советую почаще обновлять ревизии PCSX2.

Ссылка на комментарий
Поделиться на другие сайты

Инфа от создателей ArtMoney:

ArtMoney обновлена до версии 7.34.1

http://www.artmoney.ru/r_versions.htm

Теперь можно использовать эмуляторные указатели при работе с эмуляторами.
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

А можно по конкретней, что это за новинка? Это просто многоуровневые указатели на нулевые адреса привязанные к версии эмулятора или это одно-многоуровневые указатели на нулевые адреса которые находятся автоматически независимо от эмулятора и только в зависимости от рома?

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, M4K, новость потрясающая. Раньше нельзя было добавлять к нулевому адресу многоуровневые указатели, Artmoney не давал превратить адрес ПК в указатель. Теперь я смог отказаться от использования комплексных выражений MHS и полностью перейти на Artmoney - при смене машины в гта адреса стали пересчитываться сами относительно новой машины :)

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Забыл ответить в тему, сорри.. aliast, указатели точно многоуровневые? Выложи здесь сами таблицы, плизз. И не забудь отправить на офсайт ArtMoney. Только нужно указывать, какая у тебя версия - зайди на sonyindex.com, там ID кодам опознаешь. К примеру версия американского региона SLUS-21423 Grand Theft Auto - Liberty City Stories - NTSC-USA. Сам ID можно посмотреть непосредственно в эмуляторе или зайдя в корень образа.

Ссылка на комментарий
Поделиться на другие сайты

Если верить консольному окну эмулятора, игра Grand Theft Auto - Liberty City Stories (NTSC-U) [sLUS-21423]. Если зайти на сам диск, там находится ELF-файл NORG_RUS.00, т.е. пиратка с русским переводом. Таблицу выложил, кто сможет потестируйте на полноценной SLUS-21423

gta_lcs.rar

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

//aliast попробую, если версия совпадет, может на той неделе. У тебя пиратка весом в один CD?

Upd.: Блин, облом с этой игрой - у меня версия PAL-Европа.

Изменено пользователем M4K
Ссылка на комментарий
Поделиться на другие сайты

У меня PAL весит почти столько же в распакованном виде (3,73Гб). Просто сам образ игры жмётся хорошо. Я знаю где можно скачать [sLUS-21423] с обменников, там архив весит 927 с чем-то мегабайт, в распакованном видео так же 3,73 Гб. Могу линк отправить в ПМ.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.