1000Sons

1000Sons

На Пикабу
3185 рейтинг 10 подписчиков 6 подписок 12 постов 2 в горячем
108

Ромхакинг for fun. #2

Теперь как же изменить графику? Вся графика на NES/Dendy это "тайлы" квадратные , они хранятся в роме и загружаются в видеопамять приставки и оттуда уже по нужным адресам отрисовываются + еще добавляется нужная палитра. Например облака и кусты в Super Mario  состоят из одних и тех же тайлов только с разной палитрой, или например Марио сожравший  гриб , Марио сожравший цветок или марио большой на втором уровне это одини и те же тайлы только с другой палитрой.


Можно посмотреть какие тайты сейчас загружены в видеопамять через эмулятор с помощью PPU Viewer ( в эмуляторе FCEUX). NES по моему может одновременно держать в памяти только 256 разных тайлов , по этому в большинстве игр графика это повторяющиеся элементы. Таблицы этих тайлов конечно же меняются в зависимости от уровня и тд.

Ромхакинг for fun. #2 Ромхакинг, NES, Dendy, Бэтмен, Гифка, Длиннопост

Например мы захотели поменять надпись BATMAN на надпись PIKABU в игре Batman на Dendy (кэп), благо количество  букв совпадает. Кстати у этой надписи 2 состояния , если у Бэтмана нет оружия она будет синей , а если есть то в оранжевых тонах и тайлы отличаются. По этому мы можем сделать так что когда нет оружия написано BATMAN , а когда оружие есть то будет написано PIKABU.

Ромхакинг for fun. #2 Ромхакинг, NES, Dendy, Бэтмен, Гифка, Длиннопост

Для этого нам понадобиться тайловый редактор,их очень много, даже под DOS есть, я скачал RomArtist. Интерфейс у него состоит из пары окон , в главном окне все тайлы из игры + окно палитры+ окно редактирования.


Открываем наш ром в нем и находим ( от непривычки в глазах будет рябить) те тайлы которые мы хотим изменить. Тайл это по сути квадрат с графикой и не факт что каждая буква будет в одном тайле ( тут такой случай)и при этом тайлы не идут по порядку , может так получиться что в 2 тайла влазят 1 буква и 2 части от других, это по началу покажется сложным, но разобраться можно, да и никто не запрещает редактировать, запускать игру и проверять результат и потом редактировать опять.


Я нашел нужные мне тайлы и начал их перерисовывать.....

Ромхакинг for fun. #2 Ромхакинг, NES, Dendy, Бэтмен, Гифка, Длиннопост

....путем проб и ошибок мне удалось перерисовать , вполне прилично.Пол буквы нарисовал запустил игру проверил и так по кругу. Если приглядеться то увидите что именно я перерисовал. ( Не забываем сохранить ром в Rom Artist).

Ромхакинг for fun. #2 Ромхакинг, NES, Dendy, Бэтмен, Гифка, Длиннопост

Собственно вот сам результат в виде гифки. Изначально у нас надпись BATMAN , а после того как мы подбираем патроны  она меняется на PIKABU.

Ромхакинг for fun. #2 Ромхакинг, NES, Dendy, Бэтмен, Гифка, Длиннопост
Эмулятор - http://www.fceux.com/web/home.html
RomArtist - http://shedevr.org.ru/cgi-bin/utilz.cgi?n=2
Показать полностью 5
22

Ромхакинг for fun. #1

Многие в детстве видели игры для "Dendy" типа Super Mario Bros с бесконечными жизнями или где Марио мог одним прыжком долететь до финиша, или "Черный плащ 2" (!) который был хаком Super C с измененными тайлами. В 90х мало кто мог сам "хакнуть" игру, а теперь есть куча инструментов для этого и можно попробовать сделать это самому.


Для этого нам понадобится эмулятор FCEUX 2.2.2 ( в этом эмуляторе полно инструментов типа встроенного хекс редактора, дебагера , просмоторщика тайлов которые в данный момент в видеопямати и тд) и ром игры, например Super Mario Bros.


Запустим Марио в эмуляторе запустим игру и зайдем в поиску в памяти ( RAM Search)

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Например мы хотим бесконечные жизни. Изначально у нас 3 жизни ( но отсчет идет с 0). Сделаем поиск в памяти как на картинке , и найдем все значения "2". Те значения которые меняются (красные) можно сразу же отсеивать опять делая "Search".

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Дальше например добежим до скрытого блока с жизнью о котором все знают, возьмем его и сделаем поиск опять но уже предварительно изменив фильтр , выставим "Greater Than" (больше чем) и "Previous Value" (предыдущее значение). У нас останется один адрес  где хранится количество жизней

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Дальше кликаем правой кнопкой на адресе и откроется хексредактор с уже помеченным значением в памяти приставки , кликаем на него правой кнопкой и выбираем "Add Write Breakpoint".

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

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

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Вернемся в игру не закрывая ничего пока. И спрыгнем в пропасть потратив 1 жизнь. И сразу увидим что сработал наш "breakpoint" фильтр в дебагере. И в этой строке видно что происходит уменьшение (DEC)  значения по адресу 075A и слева так же показана эта функция в хекс виде , а не в виде опкода процессора NES. Скопируем "CE 5A 07" .

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Откроем окно с хекс редактором и выберем отображение содержимого рома, а не содержимого памяти приставки и сделаем поиск по "CE 5A 07".

Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост
Ромхакинг for fun. #1 Игры, Ромхакинг, NES, Dendy, Super Mario Brother, Длиннопост

Изменим "5A 07" на "00 00" и сохраним ром File -> Save Rom . Закроем эмулятор и все окна уже нам ненужные и запустим этот ром опять. И теперь при смерти у нас не будут отниматься жизни, тк вместо адреса значение которого должно уменьшаться у нас стоят нули.Это конечно все очень поверхностно и очень уж простой пример. Не все игры или параметры игры получиться так легко хакнуть без знания процессора 6502, но ради развлечения сойдет.


Хотел еще показать как графику можно поменять, но слишком длинно получается и сделаю другой пост .

Эмулятор - http://www.fceux.com/web/home.html

Опкоды NES процессора и их описание - http://www.thealmightyguru.com/Games/Hacking/Wiki/index.php?...

Ромы - http://www.emu-russia.net , http://www.emu-land.net

Показать полностью 7
0

Го в UT2004. AGAIN!

||| Начало в 19.00 МСК. (06.07.2016)


||| Играем DM. Если народа будет 10+ ,то можно перейти на Assault сервер.


DM- open 93.125.1.23

ASSAULT- open 93.125.1.22


||| Вся инфа по подключению и тд - http://pikabu.ru/story/igraem_v_unreal_tournament_2004_nacha...


||| Сервера принадлежат http://pikabu.ru/profile/champloo

@champloo добавь больше DM карт (кроме DM 1на1 которые)  на DM сервер если есть возможность.


ПС Добавил тег "совместная игра" для тех кто хочет добавить в игнор.

Го в UT2004. AGAIN! Совместная игра, Unreal tournament, Ut, Kill them all
Показать полностью 1
13

Играем в Unreal Tournament 99.

Играем в Unreal Tournament 99. Unreal tournament 99, Unreal tournament, Сетевая игра

Предлагаю каждый день ,вечером начиная с 18.00-19.00 МСК собираться в UT99. Пока ролеплейщики гоняют неделю в Террарию, да и вообще чтоб 100500 постов не создавать каждый раз.


Клиент: http://sendfile.su/1247098

Самораспаковывающийся архив, игра уже установлена и пропатченная до версии 451, установлены все официальные маппаки, установлен улучшенный OpenGL рендерер, все настроено кроме вашего разрешения (стоит 1366х768), имени игрока ( настраивается в соответствующих разделах). Нужно только распаковать архив, зайти в папку "Unreal Tournament\System" и создать ярлык на рабочий стол для "UnrealTournament.exe".


Если у вас игра не запустится в моем разрешении ( шанс 0.1%) , то в папке System редактируем UnrealTournament.ini , находим строки и прописываем свое разрешение:

FullscreenViewportX=1366

FullscreenViewportY=768


Сервер: 37.153.1.43:7777 (Режим DeathMatch, потом если народа будет много , то можно будет найти и сервера с другими режимами, но пока так "классику")

Добавляем в избранное или открываем игровую консоль и пишем "open 37.153.1.43" ( без порта). На сервер будут 2 бота, пока не подсоединятся минимум 3 реальных игрока.


ПС Кто будет играть, добавляйте пост в сохраненные, тут если что будем решать всякие проблемы.

Играем в Unreal Tournament 99. Unreal tournament 99, Unreal tournament, Сетевая игра
Показать полностью 1

Играем в Unreal Tournament 99 .

Играем в Unreal Tournament 99 . Unreal tournament, Unreal tournament 99, Сетевая игра

Предлагаю каждый день вечером начиная с 18.00-19.00 МСК собираться в UT99. Пока ролеплейщики гоняют неделю в Террарию, да и вообще чтоб 100500 постов не создавать каждый раз.


Клиент: http://sendfile.su/1247098

Самораспаковывающийся архив, игра уже установлена и пропатченная до версии 451, установлены все официальные маппаки, установлен улучшенный OpenGL рендерер, все настроено кроме вашего разрешения (стоит 1366х768), имени игрока ( настраивается в соответствующих разделах). Нужно только распаковать архив, зайти в папку "Unreal Tournament\System" и создать ярлык на рабочий стол для "UnrealTournament.exe".


Сервер:  37.153.1.43:7777 (Режим DeathMatch, потом если народа будет много , то можно будет найти и сервера с другими режимами, но пока так "классику")

Добавляем в избранное или открываем игровую консоль и пишем "open 37.153.1.43" ( без порта).

Играем в Unreal Tournament 99 . Unreal tournament, Unreal tournament 99, Сетевая игра
Показать полностью 1
4

Играем в Unreal Tournament 2004 начало 19.00 МСК

Играем в Unreal Tournament 2004 начало 19.00 МСК Unreal tournament, Deathmatch

Клиент:

- http://rutracker.org/forum/viewtopic.php?t=4795186

- http://store.steampowered.com/app/13230/?l=russian

Или из других источников  "Unreal Tournament 2004. Editors' Choice Edition"


Сервер:

93.125.1.23

DM режим. Пишем в консоли (Ё/~)  "open 93.125.1.23" или добавляем в избранное и оттуда подключаемся.

Cервер держит http://pikabu.ru/profile/champloo


Если игра не запускается:

Отредактировать файл UT2004.ini в корневом каталоге игры:

[D3DDrv.D3DRenderDevice]

ReduceMouseLag=False (True меняем на False)


Если нет вашего разрешения в настройках:

Открываем консоль ~/Ё и пишем setres 1920x1080 (пример) , для вайдскрина еще лучше фикс использовать, а то обзор у вас будет минимальный.


Fov фикс для widescreen разрешений:

#comment_68078441


ПС В никах пишите типа "[Pikabu] Вася " чтоб было видно кто с Пикабу , а кто тупо из инета.

Играем в Unreal Tournament 2004 начало 19.00 МСК Unreal tournament, Deathmatch
Показать полностью 1
Отличная работа, все прочитано!