Разработка и ромхакинг > Ромхакинг и программирование
ArtMoney и PSX адреса
(1/1)
Legended:
Как ArtMoney из адреса 0x06DE3CB0 показывает 0x800CCC90?
Вот некоторая информация
Рабочая память PSX: 0x80000000 - 0x801FFFFF
Нулевой адрес эмулятора (pSX 1.13): 0x00571A5C
Что нужно отнять/прибавить чтобы из 0x06DE3CB0 получить 0x800CCC90?
paul_met:
Не знаю как в артмани, но, думаю, так же, как и в Cheat enging - адреса будут всегда разные. Нужной найти строчку "PS-X EXE" и от полученного адреса отнять "B070" - получишь адрес начала RAM.
dedok179:

--- Цитата: Legended от 07 Апрель 2018, 23:57:03 ---0x06DE3CB0
--- Конец цитаты ---
Два раза кликни по адресу 0x06DE3CB0 в строке где ты его получил, тебе покажут реальный адрес в памяти приставки.
Legended:

--- Цитата: dedok179 от 08 Апрель 2018, 18:26:21 ---Два раза кликни по адресу 0x06DE3CB0 в строке где ты его получил, тебе покажут реальный адрес в памяти приставки.

--- Конец цитаты ---
Так адрес уже известен! мне интересно как ArtMoney это делает.

Добавлено позже:

--- Цитата: paul_met от 08 Апрель 2018, 08:25:51 ---Не знаю как в артмани, но, думаю, так же, как и в Cheat enging - адреса будут всегда разные. Нужной найти строчку "PS-X EXE" и от полученного адреса отнять "B070" - получишь адрес начала RAM.

--- Конец цитаты ---
А можно поподробней?
Например я адрес с 0x800CCC90 поменял на 0x80000000 и PC адрес стал 0x06D48020, это он?
paul_met:

--- Цитата: Legended от 09 Апрель 2018, 08:28:44 ---А можно поподробней?
Например я адрес с 0x800CCC90 поменял на 0x80000000 и PC адрес стал 0x06D48020, это он?
--- Конец цитаты ---
Повторяю, я не знаю как там в артмани (ибо никогда не юзал). Но в CE во всём доступном адресном пространстве ищем строку "PS-X EXE" в текстовом виде или в хекс представлении. Когда строка найдена, отнимаем от полученного адреса "B070" и получаем адрес начала RAM плойки.
Mr2:

--- Цитата: Legended от 09 Апрель 2018, 08:28:44 ---мне интересно как ArtMoney это делает.

--- Конец цитаты ---
В папке ArtMoney, лежит файл "artmoney.emul" со смещениями памяти консолей в адресном пространстве PC.

Пример:

*Sony Playstation
ePSXe 1.6.0;EPSXE.EXE
;RAM 2Mb;80000000;005B6E40;200000

*Sony Playstation
ePSXe 1.6.0;EPSXE.EXE
;Размер памяти консоли; начало памяти консоли; начало памяти консоли в адресном пространстве PC; конец памяти консоли
Legended:

--- Цитата: Mr2 от 15 Апрель 2018, 12:05:50 ---В папке ArtMoney, лежит файл "artmoney.emul" со смещениями памяти консолей в адресном пространстве PC.

Пример:

*Sony Playstation
ePSXe 1.6.0;EPSXE.EXE
;RAM 2Mb;80000000;005B6E40;200000

*Sony Playstation
ePSXe 1.6.0;EPSXE.EXE
;Размер памяти консоли; начало памяти консоли; начало памяти консоли в адресном пространстве PC; конец памяти консоли

--- Конец цитаты ---

Использую pSX 1.13

Для него:

--- Код: ---pSX emulator 1.13;psxfin.exe;N;813a8a0980e7f07e34da147d9cd603f2
;RAM 2MB;80000000;P00571A5C;200000
--- Конец кода ---

Так как адрес всегда разный (начало памяти psx) то я не пойму как мне этот адрес самому найти используя эти данные...

Вставив в ArtMoney PSX адрес 0x80000000 получаю 0x06D33020 (PC), при следующем запуске PC адрес уже будет другим.
Вообще не понимаю как это всё работает, и как это всё ищется...

Пока написал для себя такой костыльный алгоритм:


--- Код: ---Перебираем все адреса (размером в 4 байта).
Пока не будет найден адрес со значением 209730586.
Это будет адрес 0x80000082 (PSX).
Отнимаем от PC адреса 0x82 и получим начало PSX памяти.

--- Конец кода ---
0x80000082 - адрес самый ближний к началу PSX памяти в котором всегда такое значение размером в 4 байта.

Но пока не пойму как это делает ArtMoney не успокоюсь, тут уже дело принципа, да и не охота костылем всё время пользоваться, лучше когда всё нормальным методом ищется (аналогичным в ArtMoney).
Mr2:

--- Цитата: Legended от 05 Май 2018, 18:38:30 ---Использую pSX 1.13

Для него:

--- Код: ---pSX emulator 1.13;psxfin.exe;N;813a8a0980e7f07e34da147d9cd603f2
;RAM 2MB;80000000;P00571A5C;200000
--- Конец кода ---

Так как адрес всегда разный (начало памяти psx) то я не пойму как мне этот адрес самому найти используя эти данные...

Вставив в ArtMoney PSX адрес 0x80000000 получаю 0x06D33020 (PC), при следующем запуске PC адрес уже будет другим.
Вообще не понимаю как это всё работает, и как это всё ищется...

--- Конец цитаты ---

;RAM 2MB;80000000;P00571A5C;200000
Я не вникал в суть, но если ты говоришь что адрес постоянно меняется, возможно тут используется не адрес начала памяти PSX, а указатель на этот адрес. На что может намекать буква "P" вначале адреса. :?
Legended:

--- Цитата: Mr2 от 05 Май 2018, 20:06:54 ---;RAM 2MB;80000000;P00571A5C;200000
Я не вникал в суть, но если ты говоришь что адрес постоянно меняется, возможно тут используется не адрес начала памяти PSX, а указатель на этот адрес. На что может намекать буква "P" вначале адреса. :?

--- Конец цитаты ---
Судя по этому так и есть

--- Цитата ---Кроме того, это помогает находить нулевые адреса в эмуляторах по известному адресу параметра. К примеру, есть адрес таймера отсчета времени на экране выбора игрока в игре Captain Commando на CPS1. Время на экране выбора игрока хранится в памяти точным значением, адрес в RAM (эмуляторный адрес) равен 00FF9275. RAM начинается с адреса 00FF0000. Когда выходит новая версия эмулятора (к примеру, эмулятор Final Burn Alpha), то можно запустить эту игру в эмуляторе, дождаться экрана выбора игрока, сделать паузу эмуляции, выполнить поиск значения таймера по всей памяти эмулятора, снять паузу на какое-то время, снова поставить паузу, отсеять на новое значение, после чего получим адрес таймера (у меня на 32 бит версиях эмулятора адрес находится после первого отсеивания). После этого к этому адресу прибавляем смещение -9275h, получаем нулевой адрес эмуляции. На это адрес нужно будет найти указатель, получим настройку новой версии эмулятора.

--- Конец цитаты ---
Но как найти на этот адрес указатель?
Mr2:

--- Цитата: Legended от 05 Май 2018, 20:40:36 ---Но как найти на этот адрес указатель?

--- Конец цитаты ---
Зачем его искать? Он уже найден для pSX 1.13. Если "P00571A5C" указатель на адрес, то он указывает на PC адрес начала PSX памяти в PC пространстве. В общем, если знаком с указателями, то обсуждать нечего, если не знаком, то гугли. ;)
Legended:

--- Цитата: Mr2 от 05 Май 2018, 20:52:09 ---Зачем его искать? Он уже найден для pSX 1.13. Если "P00571A5C" указатель на адрес, то он указывает на PC адрес начала PSX памяти в PC пространстве. В общем, если знаком с указателями, то обсуждать нечего, если не знаком, то гугли. ;)

--- Конец цитаты ---
Мне и надо найти то на что он указывает.
P.S.Да в этом гугл хрен что найдешь если не знаешь что и как искать... прошу помощи!
krocki:

--- Цитата ---Мне и надо найти то на что он указывает.
--- Конец цитаты ---
Вопрос непонятный, ты же должен знать что за адрес и за что значение его отвечает. <_<
Legended:

--- Цитата: krocki от 06 Май 2018, 11:37:21 ---Вопрос непонятный, ты же должен знать что за адрес и за что значение его отвечает. <_<

--- Конец цитаты ---
Если я что-то знал то не спрашивал бы...
UPD
Пока ты не сказал про значение я не допер, вот я дебил... всё так просто оказывается, самого главного всё это время не замечал...

Запустил сейчас эмулятор, адрес начало памяти PSX 06CF8020, смотрю что у нас в памяти по адресу 0x00571A5C (тот самый указатель)
0x00571A5C 20 80 CF 06 <-- а вот и наш адрес в HEX.
Спасибо всем кто хоть как-то помогал, особенно krocki который ткнул лицом, так бы долго еще не понял
Простите за мою не внимательность.
Навигация
Главная страница сообщений

Перейти к полной версии