Вернуться   TiVi форум > Общение > Жизнь сайта tv-games

Жизнь сайта tv-games Вся жизнь и обсуждение сайта tv-games будет протекать здесь

Результаты опроса: Какие статьи больше нужны?
Про обычные приёмы изменения игровых параметров 7 26.92%
Про создание настроек эмуляторов 6 23.08%
Пора переводить свои статьи на английский 0 0%
Надо переводить английские статьи на русский в оптимизации для ArtMoney 3 11.54%
Всего, и побольше=) 18 69.23%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 26. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 15.04.2007, 10:24   #1
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Применение ArtMoney в эмуляторных играх

Взлом таймеров

1. Игра для SNES - The Ren & Stimpy Show - Veediots: На экране 2 минуты 59 секунд. Сначала я делаю поиск неизвестного значения, тип переменной 2 байта целое. В игре стало 2:56 - отсеиваю "уменьшилось на 3" - сразу нашелся один адрес - времени в секундах. Ставлю две секунды и замораживаю, в игре жду три секунды - все работает. Меняю тип переменной на 1 байт целое. При поиске своего таймера таким способом надо выжидать разные интервалы времени - например сначала 2 секунды, потом одну и т.д. Теперь можно найти адрес минут поиском точного значения.
Второй вариант - отсеивание по формуле: (M1=M2+3)

2. Jurassic Park для SegaCD: Тройной счетчик 11:58:58. Сначала нахожу вышеуказанным способом адрес счетчика секунд, нахожу - 58 секунд в памяти равно 1288 (скриншот сделан после нахождения). Мне повезло - минут тоже 58, поэтому счетчик минут ищу поиском точного значения. Нахожу адреса: Выделенный слева адрес совсем рядом - скорее всего это и есть счетчик минут. Переношу его в таблицу и проверяю, сделать это можно двумя способами:
а) меняя его значение
б) замораживая этот адрес и меняя значение счетчика секунд до нуля или около того. Если после обнуления счетчика секунд на экране число минут не уменьшилось на единицу - адрес правильный.
Так и есть - это счетчик минут. Теперь остается найти крайний левый счетчик. Между счетчиками секунд и минут смещение 2. Выделяю счетчик минут, нажимаю Insert - копирую адрес. Отнимаю 2 от адреса (это Fusion - первернутый порядок байтов) и проверяю - всё правильно - нашелся счетчик часов.

Добавлено через 5 минут

Временная неуязвимость

Во многих эмуляторных играх дается временная неуязвимость после респауна, пропущенного удара или взятия бонуса. Это позволяет проходить через врагов и еще например ходить по шипам, как в Sonic the Hedgehog Genesis, к тому же в некоторых играх это позволяет быть бессмертным, даже если в игре нет счетчика здоровья. Часто на время неуязвимости игрок мигает или как-то по-другому меняется анимация игрока. Для примера The Ren & Stimpy Show - Veediots на SNES: Нужно пропустить удар - игрок замигает. В ArtMoney поиск точного значения больше нуля, тип целое 4 байта. В игре жду какое-то время, не касаясь врагов и ловушек - отсеиваю "уменьшилось". Жду когда перестанет мигать - снова "уменьшилось". Снова не касаясь отсеиваю "не изменилось". Пропускаю еще удар - снова замигает - "увеличилось". Получаю несколько адресов : похоже что выделенные три адреса отвечают за это мигание с неуязвимостью (часто приходилось видеть такое). Проверив заморозкой любой из этих трех адресов (мне больше нравится оставлять тот, значение которого меньше), одновременно обязательно разморозив адрес здоровья, оставляю его, остальные удаляю. В этом случае еще меняю тип переменной на 1 байт целое.
По формуле:
(M1>0)and(M1>M[2,3])and(M3=M4)and(M3<M5)

20.12.2009 в 16:55 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 15.04.2007, 10:33   #2
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Работа со слотами

Работа со слотами

На примере игры Resident Evil Director's Cut (NTSC-US) для Playstation. Слоты идут слева направо, сверху вниз .Есть готовые адреса количества предметов в каждом слоте - теперь нужно сделать выбор предметов. За коды предметов обычно отвечают адреса 1 байт целое (0...255 - максимум 256 кодов). Предметы, которые доступны в начале игры, по идее должны иметь значение меньше, чем те, которые появляются потом, но не обязательно, поэтому я буду искать универсальным способом - меняя предметы в первом слоте и отсеивая с условиями "изменилось/не изменилось". На 11-м шаге остается 33 адреса, один из них идет как раз перед адресом количества предметов в первом слоте (на скриншоте выделены) - я на 99% уверен что это он и есть (в первом слоте патроны для пистолета). Я меняю значение этого адреса с 11 на 32 - на экране предмет остался тот же, но изображение изменилось (пропало количество патронов). Выход-вход в инвентарь не помог обновить изображение, поэтому я убираю этот предмет №32 в сундук - всё сразу становится понятно - сразу стало видно что это за предмет - Gold Emblem. То есть нашелся адрес кодов предметов в первом слоте. Теперь остается найти остальные адреса. Между адресом кодов предметов и адресом количества предметов смещение 1. Я выделяю адреса Slot 2...8, делаю команду "копировать выбранные" и в меню прибавляю к ним смещение -1 . Теперь надо проверить эти адреса - нужно заполнить слоты предметами. Проверяю - так и есть. Готово -
Item Codes:
0 - Nothing
1 - Combat Knife
2 - Beretta 1
3 - Shotgun
4 - Beretta 2
5 - Colt Python
6 - Flamethrower
7 - Bazooka 1
8 - Bazooka 2
9 - Bazooka 3
10 - R. Launcher
11 - Clip
12 - Shells
13 - Lockpick
14 - Magnum Rounds
15 - Fuel
16 - Explosive Rounds
17 - Acid Rounds
18 - Flame Rounds
19 - Empty Bottle
20 - Water
21 - UMB No. 2
22 - UMB No. 4
23 - UMB No. 7
24 - UMB No. 13
25 - Yellow-6
26 - NP-003
27 - V-Jolt
28 - Broken Shotgun
29 - Crank 1
30 - Crank 2
31 - Emblem
32 - Gold Emblem
33 - Blue Lewel
34 - Red Jewel
35 - Music Notes
36 - Wolf Medal
37 - Eagle Medal
38 - Chemical
39 - Battery
40 - Mo Disk
41 - Wind Crest
42 - Flare
43 - Slides
44 - Moon Crest
45 - Star Crest
46 - Sun Crest
47 - Ink Ribbon
48 - Lighter
49 - Moon Crest 1
50 - Moon Crest 2
51 - Mansion Key 1
52 - Mansion Key 2
53 - Mansion Key 3
54 - Mansion Key 4
55 - Lab Key 1
56 - Special Key
57 - Dormitory Key 1
58 - Dormitory Key 2
59 - C. Room Key
60 - Lab Key 2
61 - Small Key
62 - Red Book
63 - Doom Book 2
64 - Doom Book 1
65 - F. -AID Spray
66 - Serum
67 - Red Herb
68 - Green Herb
69 - Blue Herb
70 - Mixed Herbs 1
71 - Mixed Herbs 2
72 - Mixed Herbs 3
73 - Mixed Herbs 4
74 - Mixed Herbs 5
75 - Mixed Herbs 6

http://artmoney.ru/tables/SonyPS/Resident%20Evil%20Director's%20Cut%20(US).amt
В версии RE1 для ПК то же самое - можно найти все что нужно, используя эти коды и смещения.

Добавлено через 5 часов 13 минут
Первый вариант (изменен только второй пример): http://ifolder.ru/1677706

Видеоурок на эту же тему по игре Resident Evil Code Veronica для DreamCast можно увидеть здесь: http://tv-games.ru/pages/Artmoney/Video.html#recv

10.01.2012 в 02:19 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 02.05.2007, 16:41   #3
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию

Смещения между группами адресов

Lufia & The Fortress of Doom для SNES: Сначала нахожу адреса HP/MP и Max. HP/MP первого персонажа, потом адрес одного из
этих параметров второго персонажа (мне удобнее найти адрес HP второго персонажа). Смещение между адресами
равно 2 : . Я выделяю адреса параметров первого персонажа, делаю команду "скопировать выделенные" и прибавляю 2 -
получаю все параметры второго персонажа. Потом по адресам второго нахожу адреса третьего и т.д.
Примечание: во многих играх жанра РПГ адреса HP/MP разные для обычного режима и режима боя (FF5, Chrono Trigger).

20.12.2009 в 16:37 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 04.05.2009, 01:46   #4
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Временная неуязвимость - часть 2

Invincibility – мой любимый приём. В прошлый раз я не сильно заострял внимание на нём, теперь это будет исправлено=). Для начала берём игру Dead Moon на PC-Engine/Turbografx с эмулятором Turbo Engine 16 0.2 ( последняя версия на момент написания статьи). В этой игре, как и во многих других, временная неуязвимость даётся после каждого обновления счётчика жизней (попыток). Ставим паузу при неуязвимости. Сделаем поиск значения больше нуля, тип Integer 4 bytes: Получаем кучу результатов. Снимаем паузу в игре, пара мгновений, снова пауза – отсеиваем «Was decreased», у меня нашлось 178 результатов. Всё равно много. Повторяем ту же процедуру ещё раз, отсеиваем на «Уменьшилось», в игре ждём чтобы мигание с неуязвимостью прекратилось – отсеиваем снова на «уменьшилось» (не на ноль!). Осталось 29 адресов. И вот тут начнётся самое весёлое=) Переносим все адреса вправо: Примечание к скриншоту – все адреса туда не влезли, но сути это не меняет – нужно отбросить все адреса кроме тех, что «по нулям». Таких адресов четыре штуки – это и есть искомые адреса. Теперь грузим сохранение с неуязвимостью (можно просто потерять жизнь), смотрим: . Теперь можно выбрать любой из них и заморозить его – я беру с меньшим значением. Всё работает.
Самое главное: все адреса неуязвимости, сколько бы их ни было, идут подряд друг за другом без всяких смещений и при "включенной" неуязвимости предыдущий всегда равен значению x256 следующего – проверено на практике.
Примечание: на шаге 1 можно искать не значение M1>0, а просто неизвестное значение. Примечание 2: после прекращения мигания отсеяли, после чего можно продвинуться чуть-чуть в игре без мигания и отсеять «Was not changed» - в моём случае осталось бы четыре искомых адреса неуязвимости. Собственно, так и нужно делать.
Общее примечание: в некоторых играх от "включённой" неуязвимости могут не срабатывать скрипты и т.п. - например не открывается дверь ангара в игре Strider 2 на PSX.

26.01.2010 в 01:29 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 23.05.2009, 17:44   #5
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Работа со слотами - часть 2

На примере игры Shining Force 2 на Genesis/SMD и эмулятора Gens+ 0.0.9.61. Нужно
в магазине сохраниться перед приобретением предмета, приобрести первый предмет (в этом случае Wooden Rod вторым по счёту персонажем) , в ArtMoney сделать поиск неизвестного значения 1 байт целое. Потом загрузить сохранение до приобретения (или выбросить Wooden Rod), и приобрести следующий сразу за ним предмет (здесь это Short Rod), теперь отсеиваем «увеличилось на 1» . У меня после этой процедуры осталось 78 адресов. Снова грузимся в точке до приобретения или выкидываем предмет, покупаем:
a)либо следующий за ним предмет и отсеиваем снова на «увеличилось на 1» (также можно через один, два и так далее – соответственно отсеивать увеличившееся на 2, 3 и т.д. значение);
b)либо предыдущий предмет (снова Wooden Rod) и отсеиваем на «уменьшилось на 1»;
я выбрал вариант b из-за особенностей игры. Отсеяли. Осталось 5 адресов (если адресов много, то можно отсеивать дальше) . Перебором определяем нужный, у меня это 006AB758 для этой версии эмулятора и 00FFE858 для самой ОЗУ(RAM) приставки (эмуляторный адрес) и Pro Action Replay. Открываем редактор памяти (RMB – Memory editor) и лазим вокруг, добавляя в таблицу ближайшие ячейки из тех, что похожи на остальные три слота типов предметов . Смотрим – с одной стороны можно предположить что пустые слоты заполнены нулями (часто так и есть), с другой есть три адреса со значением 127. Проверим, поставив в известный адрес значение 0, затем 127 и всё становится ясно – значение 0 на Medical Herb, значение 127 – Nothing. Найденные три адреса добавляем, в моём случае я поставил в них разные значения для проверки: .
Что теперь можно сделать: конечно же найти все остальные коды предметов =) и также найти все адреса слотов для остальных персонажей в команде (читайте мою статью «Смещения между группами адресов». Item codes:
0 – Medical herb
1 – Healing seed
2 – Healing drop
3 – Antidote
4 – Angel wing
5 – Fairy powder
6 – Healing water
7 – Fairy tear
8 – Healing rain
9 – Power water
10 – Protect milk
11 – Quick chicken
12 – Running pimento
13 – Cheerful bread
14 – Bright honey
15 – Brave apple
16 – Shining ball
17 – Blizzard
18 – Holy thunder
19 – Power ring
20 – Protect ring
21 – Quick ring
22 – Running ring
23 – White ring
24 – Black ring
25 – Evil ring
26 – Leather glove
27 – Power glove
28 – Brass knuckles
29 – Iron knuckles
30 – Misty knuckles
31 – Giant knuckles
32 – Evil knuckles
33 – Short axe
34 – Hand axe
35 – Middle axe
36 – Power axe
37 – Battle axe
38 – Large axe
39 – Great axe
40 – Heat axe
41 – Atlas axe
42 – Ground axe
43 – Rune axe
44 – Evil axe
45 – Wooden arrow
46 – Iron arrow
47 – Steel arrow
48 – Robin arrow
49 – Assault shell
50 – Great shot
51 – Nazoa cannon
52 – Buster shot
53 – Hyper cannon
54 – Grand cannon
55 – Evil shot
56 – Wooden stick
57 – Short sword
58 – Middle sword
59 – Long sword
60 – Steel sword
61 – Achilles sword
62 – Broad sword
63 – Buster sword
64 – Great sword
65 – Critical sword
66 – Battle sword
67 – Force sword
68 – Counter sword
69 – Levanter
70 – Dark sword
71 – Wooden sword
72 – Short spear
73 – Bronze lance
74 – Spear
75 – Steel lance
76 – Power spear
77 – Heavy lance
78 – Javelin
79 – Chrome lance
80 – Valkyrie
81 – Holy lance
82 – Mist javelin
83 – Halberd
84 – Evil lance
85 – Wooden rod
86 – Short rod
87 – Bronze rod
88 – Iron rod
89 – Power stick
90 – Flail
91 – Guardian staff
92 – Indra staff
93 – Mage staff
94 – Wish staff
95 – Great rod
96 – Supply staff
97 – Holy staff
98 – Freeze staff
99 – Godess staff
100 – Mystery staff
101 – Demon rod
102 – Iron ball
103 – Short knife
104 – Dagger
105 – Knife
106 – Thieve’s dagger
107 – Katana
108 – Ninja katana
109 – Gisarme
110 – Taros sword
111 – Right of Hope
112 – Wooden panel
113 – Sky orb
114 – Cannon
115 – Dry stone
116 – Dynamite
117 – Arm of golem
118 – Pegasus wing
119 – Warrior pride
120 – Silver tank
121 – Secret book
122 – Vigor ball
123 – Mithril
124 – Life ring
125 – Cotton balloon
126 – Chirrup sandals
127 – Nothing
128…дальше вроде идут повторения.
…Продолжаем статью Изучив структуру игры, я обнаружил, что:
1. В Shining Force 2 группы адресов параметров каждого персонажа, вернее сами адреса, идут не подряд, как обычно (см. любую часть Final Fantasy, Chrono Trigger, Chrono Cross, Tales of Phantasia – большинство известных JRPG), а умышленно разбросаны. Но некоторые показатели идут вместе: Attack +2h= Def
Def+2h=Agi Agi+2h=Mov и т.п.
2. Адреса переименовываю для каждого персонажа по его имени вместо 1P, 2P и т.д.
Нахожу поиском точного значения адреса HP/Max. HP Bowie. Далее RMB – memory Editor и добавляю адреса других параметров. На скринах ниже всё достаточно ясно представлено:




http://narod.ru/disk/15261148000/Shi...e%202.amt.html
Данная статья написана на основе русского перевода статьи «Взлом инвентаря в RPG»: http://www.magicteam.net/index.php?p...20%D0%B2%20RPG

20.09.2011 в 00:10 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 25.05.2009, 18:06   #6
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Работа со слотами - часть 3.

Выбор персонажей делается точно так же. В этот раз воспользуемся поиском точного значения «на бум». Рассмотрим на примере игры Strikers 1945 Plus на NeoGeo (эмулятор Nebula 2.25b). На экране выбора самолёта выбираем первый (крайний слева), в ArtMoney ищем значение 0, тип 1 байт целое. Грузимся в точку выбора, выбираем, скажем пятый слева самолёт, в игре отсеиваем на значение 4. Ничего не находится? Ничего страшного – значит значение в слотах идёт 1, 2, 3 и так далее Отсеяли, получили два адреса, проверяем перебором. Важно – в этой игре тип самолёта в слоте игрока обновляется после обновления счётчика жизней – то есть достаточно потерять жизнь, предварительно сменив значение в слоте Plane select. В итоге получаем это: . Примечание – самолёт на значение 7 тот, что под знаком вопроса Теперь находим все адреса для второго игрока по смещению между двумя параметрами 1P/2P – это мы уже умеем (здесь смещение 5Ch)
А теперь ещё скриншоты с других игр - нажмите для увеличения и просмотра всех кадров:


http://artmoney.ru/tables/CPS1/Capta...%20(World).amt
http://artmoney.ru/tables/CPS1/Final...%20(World).amt
http://artmoney.ru/tables/CPS2/Armor...%20941011).amt

Видеоурок на эту же тему по игре Captain Commando можно увидеть здесь: http://tv-games.ru/pages/Artmoney/Video.html#cc

10.01.2012 в 02:22 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 06.07.2009, 05:14   #7
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Создание настроек эмуляторов - часть 1

Приведенная здесь информация устарела. Актуальная информация находится здесь:
http://tv-games.ru/forum/showpost.ph...8&postcount=58
Показать статью
Поиск нулевого адреса через встроенный редактор памяти эмулятора. Разберём на примере эмулятора GameBoyAdvance - VisualBoy Advance 1.7.2 re-recording v19.5. Нужно найти два нулевых адреса:
02000000-0203FFFF On-board WorkRAM 256kB
03000000-03007FFF In-chip WorkRAM 32kB

http://artmoney.ru/manual/russian/emul.htm
0423 - Desert Strike Advance (U) для нахождения нулевого адреса 02000000
0223 - Army Men - Operation Green (U) для нахождения нулевого адреса 03000000
Открываем ром 0423 в эмуляторе, дожидаемся начала игры (в месте перед взлётом с авианосца – почему именно там, объясню позднее)

ставим паузу, далее Debug – Memory viewer, из выпадающего списка выбираем WRAM как на скриншоте:

далее в ArtMoney ищем последовательность из двадцати байтов (не забудьте при вводе шестнадцатиричных значений в ArtMoney добавлять h после числа), тип один байт целое:


Получаем результат:

То есть искомый нулевой адрес 035A0000, на него обязательно ищем указатель:

Результаты поиска надо отсеять, перед этим сохранить отсеивание в файл:
Теперь есть два варианта отсеивания – либо перегрузить Windows и один раз отсеять указатели на значение нулевого адреса, либо перезапускать только сам эмулятор два раза, как это объясняют разработчики ArtMoney. Я выбрал второй. Перезапускаем эмулятор, ром, ставим паузу в том же месте перед взлётом с авианосца и снова делаем поиск нулевого адреса – как вам теперь станет понятно, значения этих искомых адресов будут такими же=) Примечания от разработчиков ArtMoney: Указатель лучше брать первый, а ещё лучше, чтобы он был в модуле EXE. Сам
файл EXE загружается обычно по адресу 400000, тогда область 000000 - 400000
является служебной. Указатели из этой области обычно являются не верными.
Однако файл EXE может загружаться и по другому адресу, поэтому лучше
посмотреть через карту процесса, или попытаться конвертнуть адрес в
модульный адрес. Окрыть окно редактирования адреса и поменять "адрес" на
"модульный адрес". Если модуля там нет, то конвертация не пройдёт.


Проверяем:

На всякий случай проверяем и через карту процесса:

Добавляем найденный указатель в настройки в файл artmoney.emul (P значит pointer):
Код:
VisualBoy Advance 1.7.2 re-recording v19.5;VisualBoyAdvance.exe
;WRAM 256Kb;02000000;P006A0040;40000
и конечно же проверяем сначала на этой, а потом и на других играх, использующих для хранения значений этот блок (например Terminator 3, Dead To Rights). Не забываем перезапустить эмулятор для проверки. Полдела сделано. Теперь открываем ром 0223 и повторяем процедуру, понятно что теперь ищем в блоке IRAM (03000000-03007FFF). У меня нашлось это:

В нашем случае нужный адрес первый, на него ищем указатель (на 037B9C0C указателя нет вообще), не забываем отсеять указатели два раза, дважды перезапустив эмулятор. В результате мы имеем это:
Код:
VisualBoy Advance 1.7.2 re-recording v19.5;VisualBoyAdvance.exe
;WRAM 256Kb;02000000;P006A0040;40000
;IRAM 32Kb;03000000;P006A0048;8000
Настройки готовы.
English version

04.06.2011 в 01:52 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 07.07.2009, 14:32   #8
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Создание настроек эмуляторов - часть 2

Создание настроек эмуляторов с поиском нулевого адреса по известному адресу параметра. Существует большое количество эмуляторов с редактором памяти, вводом кодов, записью в память другими способами и т.д., но чаще нужно будет находить нулевые адреса, где этого нет. Рассмотрим на примере эмулятора Final Burn Alpha 0.2.97.06 и игры CPS1 Knights of the Round (911127). Нужно вычесть из известного адреса ПК параметра разницу известного эмуляторного адреса (адреса ОЗУ приставки) и начала блока.
Нулевой адрес для CPS1/2 FF0000 Lifes (exact value) эмуляторный адрес 00FFAC77 – нужно прибавить к адресу ПК количества жизней -AC77h.
Открываем ром в эмуляторе (для тестов подойдёт любая версия FBA или FBA Rerecording), при начале игры значение жизней равно 1. Делаем обычный поиск значения 1, тип 1 байт целое. Именно в этой игре каждое нажатие кнопки «Coin» прибавляет по 2 жизни к этому значению, то есть можно нажать один раз и отсеивать на значение 3, ещё раз – на 5 и т.д. Получаем два результата, путём потери одной жизни проверяем какое из этих значений реальное, а какое просто экранное значение, реальным оказывается второй адрес:


Из реального адреса вычитаем AC77h:

, получаем нулевой адрес, у меня это 04AE3008, значение равно 0. Делаем поиск указателей на него, сохраняем отсеивание, перезапускаем эмулятор с игрой или Windows и отсеиваем указатели на значение 0. Получили один указатель (в других эмуляторах CPS1/2 может быть больше), тем лучше для нас. Но нужно ещё проверить чтобы он был в модуле EXE:

Так и есть. Теперь добавляем настройку в файл artmoney.emul:
Код:
Final Burn Alpha v0.2.97.06;fba.exe
;RAM 64Kb;FF0000;P037E34B4;10000
Проверяем настройки с парой других игр, не забываем перезапустить эмулятор – всё работает=)
А теперь подсказка что вычитать для других систем (Система – Название игры – Описание параметра – Адрес эмулятора – Смещение):

NeoGeo: Metal Slug 2 Lifes (exact value) 00101277 -1277h

Nes: Isolated Warrior Lifes (+1) 000000D8 -00D8h
Contra Lifes (exact value) 00000032 -0032h


Genesis/SMD: Kega Fusion - перевёрнутый порядок байтов Caliber Fifty Lifes (exact value) 00FF9968 -9968h
Нормальный порядок байтов Disney's Aladdin Apples 00FFEFE0 EFE0h

Turbo Grafx 16/PC Engine: Batman lifes (exact value) 001F13AA -13AAh

SNES: Batman Returns Lifes (exact value) 007E008C -008Ch
Adventures of Batman & Robin Rest (exact value) 007E0096 -0096h

PlayStation 1: Disney's Hercules (PAL) Health (128) 8003506C -3506Ch

3DO: PO'Ed Health (exact value) 000AC4F6
Crime Patrol Lifes (exact value) 0008B4D4 weapon (exact value) 0008B4CC

Nintendo64: SpiderMan 64 Weapon 1 (exact value) 002E6BE8
Duke Nukem 64 Pistol (exact value) 002A5A02

NeoGeo Pocket Color: Sonic the Hedgehog - Pocket Adventure lifes (exact value) 000067AF

Эмуляторные адреса для SCD для каждого из трёх блоков памяти есть в файле artmoney.emul.


Любые вопросы задавайте в теме обсуждения или в блоге (комментировать можно без регистрации). Проверенные настройки берём на офсайте программы.

20.12.2009 в 19:35 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 23.08.2009, 07:30   #9
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Координаты объектов - часть 1.

Координаты объектов (перевод с английского под моей редакцией).

Любая игра использует систему координат, определяющих позицию игрока или любого другого объекта в мире (на экране). Координаты располагаются на невидимых осях. Двухмерные игры используют две оси – X и Y. Трёхмерные игры ипользуют три оси – X, Y и Z. Ось X (X axis) используется для передвижения влево/вправо, ось Z для передвижения вверх/вниз, и координата Y для передвижения ближе-дальше от экрана. Когда значение координаты X объекта увеличивается, он двигается вправо, и наоборот. То же правило действет для других осей. Важно обратить внимание, что эти оси не имеют никакого отношения к тому, что показывается на экране игры. Например координата Y измеряет абсолютную высоту объекта, несмотря на то, как высоко объект расположен относительно основания. Для 3D-игр рекомендуется при поиске выбирать тип значения 4 байта целое (32 бита). Для двухмерных игр обычно достаточно 2 байта целое (но всё же лучше 4 байта целое для координаты X – примечание переводчика).
1. Выбрать объект, предпочтительно тот, передвижение которого может управляться игроком. Начать поиск неизвестного значения.
2. Идентифицировать целевую ось. Находить их нужно по одной. Ось Y находится обычно подпрыгиванием игрока. То есть так – ищем неизвестное значение, подпрыгиваем – «уменьшилось», встаём на «поверхность земли» - «увеличилось», продвигаемся влево/вправо (не вверх/вниз) – «не изменилось». После нескольких отсеиваний найдётся какое-то количество результатов, предпочтительно меньше чем 20-30.
3. Обычно адреса координат располагаются рядом друг с другом. На некоторых системах другая координата находится по смещению +4h/-4h от найденной (для примера SNES игра Go Go Ackman!).
4. Замораживайте найденные адреса (можно сразу по нескольку адресов). Если целевой объект после такой процедуры не может двигаться влево/вправо (X), вверх/вниз (Y) и ближе/дальше (Z) – адрес координаты найден.
Не всегда изменение значения координат приводит к успеху – бывают обломы. Например в игре Black Thorne на SNES персонаж проваливается в разные места экрана.
Примечание – скоро будут приведены примеры со скринами, как обычно, следите за темой.

__________
Примеры поиска координат в 2-D играх.
Разберём на примере SNES игры Wolverine – Adamantium Rage.
X увеличивается вправо, Y – сверху вниз:


Сначала ищу координату X игрока. Делаю поиск неизвестного значения, тип 4 байта целое:


Перемещаюсь вправо, отсеиваю «увеличилось/increased»:


Не двигаясь вправо-влево подпрыгиваю, отсеиваю «не изменилось/was not changed»:


Далее влево – «уменьшилось/decreased». Продолжаю, пока не останется не такое большое количество адресов. После этого переносим все найденные адреса вправо и перебираем их, поочерёдно замораживая обычной заморозкой по один-два-три адреса. При этом возможны:
1. Нахождение координаты X камеры (Camera X);
2. Всякие глюки.
Я нашёл:


Теперь находим координату Y – тут также всё просто. Стоя на платформе делаем поиск неизвестного значения 4 байта целое, подпрыгиваем – «уменьшилось/decreased». Возвращаемся на ту же платформу – отсеиваем «увеличилось», проходим влево или вправо (чем больше изменений в игре, тем лучше) без изменения высоты – «не изменилось/was not changed». Чередуем условия поиска, нашли. Также можно после поиска X координаты попытаться прибавить/отнять 4h, в этой игре прокатило:


Видеоурок на эту же тему (поиск координат игрока в 2D игре) по игре Pitfall The Mayan Adventure можно увидеть здесь: http://tv-games.ru/pages/Artmoney/Video.html#pitfall

10.01.2012 в 02:24 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Старый 23.09.2009, 13:01   #10
iddqd
Фанат ArtMoney
Аватар для iddqd
По умолчанию Создание настроек эмуляторов – часть 3.

В этот раз будем делать настройки эмулятора SCD – Gens GS Release 7 Preview 4. Читаем справку к ArtMoney:
http://www.artmoney.ru/manual/russian/emul.htm
Прочитали. Необходимо найти нулевые адреса для трёх блоков памяти:
000000-07FFFF 512Kb
200000-23FFFF 256Kb
FF0000-FFFFFF 64Kb (как в Genesis).

Действовать будем как в предыдущей статье. Сразу примечание – параметры во всех этих трёх играх нужно искать поиском точного значения. Далее открываем файл artmoney.emul и смотрим секцию SCD, блоки я пишу в той последовательности, в какой они и идут в памяти:
//Lethal Enforcers 2 - health 0092AE
//Lethal Enforcers - health 23840C
//After Burner 3 - lifes FFF7AC

Подразумевается, что все эти три игры у вас есть, если нет – скачиваем из инета=)
Хочу сразу пояснить – именно в этом эмуляторе не нужно искать указатели на нулевые адреса(смотрим секцию SCD, где нет P – pointer). Возможно в следующих версиях Gens GS нужно будет их
искать, но это будет потом. А пока размеры блоков в hex:
8Kb это 2000
16Kb это 4000
28Kb то 7000
32Kb это 8000
64Kb это 10000
256Kb это 40000
512Kb это 80000
1Mb это 100000
2Mb это 200000
8Mb это 800000
32Mb это 2000000
Открываем в эмуляторе Lethal Enforcers 2, поиском точного значения находим адрес здоровья. Поясню:
отсеивание номер 1:
продолжаем отсеивать, советую один-два раза отсеять на «не изменилось/was not changed». После нескольких шагов у меня осталось два значения. Нужно определить искомый адрес перебором.
В моём случае правильный адрес первый – 00F72D6E. Прибавляем к нему смещение -0092AEh, один раз жмём кнопку плюс:
Получаем нулевой адрес 00F69AC0. То есть будет такая строка:
;RAM 512Kb;000000;00F69AC0;80000
В игре Lethal Enforcers точно так же находим нулевой адрес на второй блок, к найденному адресу здоровья прибавляем смещение -3840Ch, в итоге получаем это:
;RAM 256Kb;200000; 00FE9AC0;40000
В игре After Burner 3 находим поиском точного значения адрес количества жизней, прибавляем к нему смещение -F7ACh. В итоге получаем это:
Код:
GensGS Release 7 Preview 4;gens.exe
;RAM 512Kb;000000;00F69AC0;80000
;RAM 256Kb;200000;00FE9AC0;40000
;RAM 64Kb;FF0000;009385C0;10000

20.12.2009 в 16:52 iddqd внимательно перечитал и подправил свой пост. Причина: edit
iddqd вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +3, время: 09:24. ]]>
Рейтинг@Mail.ru
]]>
Powered by vBulletin