![]() | ||
![]() | ![]() | |
|
|||||||
| Регистрация | Справка | Пользователи | Социальные группы | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
| Жизнь сайта tv-games Вся жизнь и обсуждение сайта tv-games будет протекать здесь |
| Результаты опроса: Какие статьи больше нужны? | |||
| Про обычные приёмы изменения игровых параметров |
|
4 | 33.33% |
| Про создание настроек эмуляторов |
|
3 | 25.00% |
| Пора переводить свои статьи на английский |
|
0 | 0% |
| Надо переводить английские статьи на русский в оптимизации для ArtMoney |
|
2 | 16.67% |
| Всего, и побольше=) |
|
8 | 66.67% |
| Опрос с выбором нескольких вариантов ответа. Голосовавшие: 12. Вы ещё не голосовали в этом опросе | |||
![]() |
|
|
|
Опции темы |
|
|
#1 |
|
Фанат 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) Последний раз редактировалось iddqd; 20.12.2009 в 12:55. Причина: edit |
|
|
|
|
|
#2 |
|
Фанат ArtMoney
|
Работа со слотами
На примере игры 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 Последний раз редактировалось iddqd; 20.12.2009 в 12:36. Причина: edit |
|
|
|
|
|
#3 |
|
Фанат ArtMoney
|
Смещения между группами адресов
Lufia & The Fortress of Doom для SNES: Сначала нахожу адреса HP/MP и Max. HP/MP первого персонажа, потом адрес одного из этих параметров второго персонажа (мне удобнее найти адрес HP второго персонажа). Смещение между адресами равно 2 : . Я выделяю адреса параметров первого персонажа, делаю команду "скопировать выделенные" и прибавляю 2 - получаю все параметры второго персонажа. Потом по адресам второго нахожу адреса третьего и т.д. Примечание: во многих играх жанра РПГ адреса HP/MP разные для обычного режима и режима боя (FF5, Chrono Trigger). Последний раз редактировалось iddqd; 20.12.2009 в 12:37. Причина: edit |
|
|
|
|
|
#4 |
|
Фанат ArtMoney
|
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.
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 25.01.2010 в 21:29. Причина: edit |
|
|
|
|
|
#5 |
|
Фанат ArtMoney
|
На примере игры 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://magicteam.net/rpg_savestate.htm
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 20.12.2009 в 12:57. Причина: edit |
|
|
|
|
|
#6 |
|
Фанат ArtMoney
|
Выбор персонажей делается точно так же. В этот раз воспользуемся поиском точного значения «на бум». Рассмотрим на примере игры 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 Больше примеров
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 20.12.2009 в 12:42. Причина: edit |
|
|
|
|
|
#7 |
|
Фанат ArtMoney
|
Поиск нулевого адреса через встроенный редактор памяти эмулятора. Разберём на примере эмулятора 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 ![]() В нашем случае нужный адрес первый, на него ищем указатель (на 037B9C0C указателя нет вообще), не забываем отсеять указатели два раза, дважды перезапустив эмулятор. В результате мы имеем это: Код:
VisualBoy Advance 1.7.2 re-recording v19.5;VisualBoyAdvance.exe ;WRAM 256Kb;02000000;P006A0040;40000 ;IRAM 32Kb;03000000;P006A0048;8000 English version
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 20.12.2009 в 15:34. Причина: edit |
|
|
|
|
|
#8 |
|
Фанат ArtMoney
|
Создание настроек эмуляторов с поиском нулевого адреса по известному адресу параметра. Существует большое количество эмуляторов с редактором памяти, вводом кодов, записью в память другими способами и т.д., но чаще нужно будет находить нулевые адреса, где этого нет. Рассмотрим на примере эмулятора 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. Любые вопросы задавайте в теме обсуждения или в блоге (комментировать можно без регистрации). Проверенные настройки берём на офсайте программы.
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 20.12.2009 в 15:35. Причина: edit |
|
|
|
|
|
#9 |
|
Фанат ArtMoney
|
Координаты объектов (перевод с английского под моей редакцией).
Любая игра использует систему координат, определяющих позицию игрока или любого другого объекта в мире (на экране). Координаты располагаются на невидимых осях. Двухмерные игры используют две оси – X и Y. Трёхмерные игры ипользуют три оси – X, Y и Z. Ось X (X axis) используется для передвижения влево/вправо, ось Y для передвижения вверх/вниз, и координата 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, в этой игре прокатило:
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось Leonis; 22.09.2009 в 21:15. Причина: edit |
|
|
|
|
|
#10 |
|
Фанат ArtMoney
|
В этот раз будем делать настройки эмулятора 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
__________________
Применение ArtMoney в эмуляторных играх - 30.06.2010 ArtMoney Foreve WIP Заказать любую игру на любой файлообменник бесплатно! Всем кто помнит igoru.ru: http://igoru.ucoz.ru/blog Последний раз редактировалось iddqd; 20.12.2009 в 12:52. Причина: edit |
|
|
|