Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - spiiin

Страницы: [1]
1
Если есть желание помочь в создании редактора уровней - мне нужны прохождения некоторых игр, чтобы добавить их поддержку в редактор. Редактор поддерживает около 200 игр, я сам все пройти не смогу  :neznayu:
По большей части все уже добавлены, сейчас остались несколько:

Addams Family, The - Pugsley's Scavenger Hunt
Mappy Kids
Predator
Young Indiana Jones Chronicles


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

Тема, посвящённая редактору:
https://www.emu-land.net/forum/index.php/topic,60286.0.html

2
Сделал несколько lua-скриптов для Mesen для наглядного отображения на экране эмулятора тех или иных графических эффектов.

https://github.com/spiiin/CadEditor/blob/master/Stuff/nes_lua/mesen_chrRamWriteCounter.lua

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

https://github.com/spiiin/CadEditor/blob/master/Stuff/nes_lua/mesen_logParallax.lua

Подчёркивает линии, на которых эмулятор меняет позицию горизонтального скролла (разделяет экран на горизонтально отделённые "слои").

https://github.com/spiiin/CadEditor/tree/master/Stuff/nes_lua/render_sprite_numbers
(для fceux, позже портирую на месен тоже и упрощу, для использования надо скачать всю папку с картинками в дополнение к самому скрипту)
Рисует на месте спрайтов квадратики с номерами этих спрайтов.

Что-то подобное есть и в самом Mesen в отдельном окне Event Viewer, но на основном окне эмулятора получается нагляднее.
196328-0

Примеры использования скриптов есть в статьях:
https://habrahabr.ru/post/353726/
https://spiiin.dreamwidth.org/115714.html

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

Позже планирую добавить ещё пару скриптов, например, для "заморозки" переключения банков фона и палитры (чтобы сразу было видно, какая анимация делается изменением CHR-ROM/CHR-RAM).

3
Тема для обсуждения добавления новых игр в редактор и особенностей написания конфигов для них.


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

=============================================
Вообще, чтобы упростить написание конфигов - есть несколько путей.
1. Самый простой - добавить возможность писать код на разных языках программирования - Python, Lua, Java Script. Достаточно будет знание автором конфига хотя бы одного из них. Можно свой максимально простой язык добавить, похожий на ini-файлы.

2. Написать обучающие материалы - статьи и видео. Местами полезно, но только для игр, которые похожи на уже добавленные (таких много очень на самом деле, всё же почти 100 примеров разных игр добавлено.

3. Сделать отдельную программу - генератор конфигов, в котором можно будет заранее выбрать комбинацию из предзаготовленных вариантов, и нажать кнопку "сгенерировать" - и получить на выходе готовый конфиг уровня. Это, наверное, оптимальный вариант, но его тяжелее всего реализовать. Ключевой вопрос - надо ли это кому-то? Фактически - это будет программа для авторов редакторов уровней, а тут таких немного, да и часть из них предпочитают редактор для конкретной игры с нуля лепить.

4
NESBlockFinder
Программа для автоматического поиска адресов блоков в любых NES-играх.

Способ использования:

Описание способов поиска блоков:
Search 2x2 blocks - искать блоки размером 2x2
Search 4x4 blocks - искать блоки размером 4x4
Search 2x4/4x2 blocks - искать блоки размером 4x2 и 2x4 (используются редко)
Left-right block search - искать блоки, в которых описание тайлов хранится слева-направо сверху-вниз.
Top-down block search - искать блок, в которых описание тайлов хранится сверху-вниз слева-направо.
Search block parts with stride 255 - искать блоки размером 2x2, в которых 1-е четв хранятся в массиве из 256 элементов, затем хранятся 2-е четвертинки блоков, затем 3-и и 4-и четверти. Распространённый случай.
Search block parts with stride range - аналогично предыдущему методу, но поиск выполняется в массивах любой указанной длины.

Эти методы поиска покрывают практически все возможные способы хранения информации о блоках в играх. Проверял на 50 разных играх, находит блоки в каждой, в которой они есть  :cool:

Может, кому пригодится.

5
Восстановил приставку из состояния кирпича, получил голый андроид со встроенными эмуляторами, но без игр.
Интересует, есть ли готовые сборники игр "как из магазина", чтобы руками их не собирать?

6
Сделал сборку эмулятора Nesoid с интегрированным Google Play Services.
Пока с поддержкой одной игры - Super Mario Bros. При прохождении уровней открываются достижения "Уровень пройден".

Версия пока тестовая, если будет интерес, можно будет добавить новые достижения и таблицы рекордов для разных игр и устраивать соревнования.

https://play.google.com/store/apps/details?id=com.androidemu.nesachiev

7
Набросал скрипт для коррапта данных в роме и последующего снятия скриншотов с получившейся битой игры. С помощью него можно узнать примерное положение данных уровня практически любой игры на NES.
Протестировал на нескольких:

(чтобы перейти от номера к смещению в роме надо умножить его на 64, потому что скрипт корраптит блоками по 64 байта)

Chip & Dale 2.
экраны (смещение 0)

блоки (768):

биты палитры(784):


New ghostbusters 2.
маленькие блоки(4 поинтера)(432):

поинтеры на уровень? (448)

описание экранов(480)


Добавлено позже:
Ninja Turtles 3
биты палитры(3144)

описание экранов(3110) (видно примерно с 3-го экрана%)

поинтеры на части уровня(3072)

описание объектов? (928)


Добавлено позже:
Flintstones The Surprise at Dinosaur Peak!
Маленькие блоки(896):

Экраны(864):


Mitsume ga Tooru

палитры или биты палитр? (1980)

Экраны(1313)


начальное состояние или типы объектов (960)


список врагов? (512)



Если кому надо, могу проверить ещё игры.

8
Давно в голове крутилась такая идея - взять эмулятор одной из старых консолей с поддержкой скриптов, добавить в его систему парсинга команд специальный опкод, по которому будет срабатывать передача управления в скрипт. Дальше вместо стандартного процесса хака делать следующее - дизассемблированную функцию переписать на скриптовом языке и стереть её из ROM, заменив тело на опкод вызова скриптовой функции (для этого хватит пары байт), оставшееся место использовать для своих нужд. Из скрипта есть доступ к любым функциям эмулятора (а если и нет, можно прокинуть нехватающие).
Так можно переписать все основные системы игры - управление, интеллект врагов, форматы описания уровней, тексты etc. Всё необходимое для модификации. На выходе получится практически чистый ROM с частью технических неинтересных для модификации функций в нём, и движок игры в читабельном виде на языке высокого уровня.
Сложность переписывания кода на скриптовом языке намного меньше, чем переписывания алгоритма на ассемблере.
Но главные плюсы в том, что снимаются ограничения на размеры данных и кода, которых всегда не хватает, а также в том, что можно удобно тестировать переписанный код, модифицируя его без перезапуска игры и работать над скриптом совместно.
Так еще никто не делал :)

Для теста переписал небольшую часть логики прыжков Черного Плаща под новую версию эмулятора. Изменённый эмулятор, скрипт и ром в приложении. Если кто-то заинтересуется таким подходом к хакингу, буду рад объяснить подробнее :)

9
Таблица соответствия номеров объектам:
00 - механическая собака
01 - механический мышь
02 - пчела
03 - гусеница
04 - белка-летяга вправо
05 - белка-летяга влево
06 - "кидальщик 3 штучек и убегальщик":)
07 - хамелеон
08 - муха
09 - яблоко
0A - скрытая звезда
0B - цветок
0C - звезда
0D - желудь
0E - светящийся желудь
0F - светящаяся звезда

10 - ящик с баночкой
11 - ящик с сыром для Рокки
12 - ящик со светящейся звездой
13 - ящик со светящимся желудем
14 - ящик с вжиком
15 - ящик с вжиком (другие тайлы вжика)
16 - бомба (тайлы уровня B)
17 - ящик с лодкой
18 - ящик с молотком
19 - бомба (тайлы уровня E)
1A - скрытая святящаяся звезда
1B - неоткрывающийся ящик
1C - козлик с коврами
1D - птица-качок
1E - прыгающий ящик
1F - кенгуру с ракеткой

20 - птица с железным шаром
21 - игрушечная боевая юла
22 - клоун
23 - куколка бабочки
24 - жук в засаде
25 - рогатый жук
26 - крокодил в шляпе
27 - прыгающий крокодил в шляпе
28 - носорог-качок
29 - краб
2A - пеликан
2B - стрелок с присосками
2C - искра длинный
2D - искра средний
2E - искра короткий
2F - огонь под кастрюлей. безвреден.

30 - падающий насвозь металлический шар
31 - выдвижная платформа
32 - вентиль для блокировки потока
33 - катящийся металлический шар
34 - катящийся металлический шар
35 - резалка
36 - выключатель резалки
37 - падающие стены
38 - быстрый катящийся металлический шар
39 - "спихивалка" с игровых автоматов
3A - топор
3B - выключатель падающих шаров
3C - катящийся металлический шар
3D - вентилятор влево
3E - вентилятор вправо
3F - движущийся кусок?

40 - босс 1 (голова)
41 - босс 1 (левая рука)
42 - босс 1 (правая рука)
43 - босс 2 (сова)
44 - босс 3 (летающая ракета)
45 - босс 4 (сердце и метатель)
46 - босс 4 (заводной ключ)
47 - босс 4 (шины)
48 - катящийся металлический шар
49 - босс 6 (кролик в автомате)
4A - босс 5 (сом)
4B - босс 7 (сороконожка)
4C - босс 7 (часть сороконожки)
4D - босс 7 (часть сороконожки)
4E - босс 7 (часть сороконожки)
4F - босс 7 (часть сороконожки)

50 - босс 8 (толстопуз, рука с сигарой)
51 - босс 8 (толстопуз, морда)
52 - гнилая доска
53 - красный шарик
FF - невидимый непроходимый блок, конец зоны

10
-----------------------------------------------------------------------------------------------------------------------------
Редактор уровней CadEditor
Редактор уровней для игр NES и SMD.
Версия 5.3
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Поддерживаемые игры:
https://github.com/spiiin/CadEditor/blob/master/CadEditor/cad_editor_supported_games.txt
Также возможно подключение практически любых игр для платформ Nes, Snes или Sega Mega Drive.
-----------------------------------------------------------------------------------------------------------------------------
Хаки, сделанные с помощью редактора:

Darkwing Duck New Levels          http://www.romhacking.net/hacks/1382/
Darkwing Duck New Levels 2        http://www.emu-land.net/forum/index.php/topic,60286.msg1089366.html#msg1089366
Duck Tales Hardcore Revision      http://www.romhacking.net/hacks/1671/
Chip & Dale Lomax Attack (v2)     http://www.romhacking.net/hacks/1374/
Darkwing Duck In Edoropolis       https://www.emu-land.net/forum/index.php/topic,60286.msg1355612.html#msg1355612
Chip & Dale Alternative           http://www.emu-land.net/forum/index.php/topic,66546.0.html
Chip & Dale by VZIP               http://www.emu-land.net/forum/index.php?action=dlattach;topic=60286.0;attach=71489
Chip & Dale 3 by Lomax & Roket    https://www.emu-land.net/forum/index.php/topic,60286.msg1355378.html#msg1355378/52e7c89d%2F16fb8491bcf6a886b507abbee10ff4076da9c98c%2FChip+%27n+Dale+Rescue+Rangers+%28U%29+%5B%21%5D.zip?t=1344959250
Chip & Dale: Tale Spin Levels     https://www.romhacking.net/hacks/4287/
Duck Tales 2 No Gyro Без Винта    http://romhacking.net.ru/load/duck_tales_2/2-1-0-251
Duck Tales New Impressions        http://romhacking.ru/load/duck_tales_2_new_impressions/2-1-0-252
Duck Tales 2 by Dendymask         https://romhacking.ru/load/khak_prikol_duck_tales_2_na_nes_ot_dendymask/2-1-0-268
TaleSpin: Another shitty day      http://www.emu-land.net/forum/index.php?topic=73748.0
Remix of Tiny Toon Adventures     http://www.romhacking.net/hacks/2511/
Contra Super Hard Corps [SMD]     https://www.emu-land.net/forum/index.php/topic,79007.0.html

-----------------------------------------------------------------------------------------------------------------------------
Последняя на данный момент версия здесь:
https://www.emu-land.net/forum/index.php/topic,60286.msg1390753.html#msg1390753
Или здесь:
https://github.com/spiiin/CadEditor/releases/latest
https://spiiin.itch.io/cadeditor

-----------------------------------------------------------------------------------------------------------------------------
Документация по редактору:
http://spiiin.github.io/CadEditor/
Видеопример использования
https://www.youtube.com/watch?v=NfIWeDwu68w
-----------------------------------------------------------------------------------------------------------------------------
Если вы желаете поддержать развитие проекта (и бонусом предложить любую игру для добавления :) ):
WebMoney R122299008919
Bitcoin 12a26G6BxzYqx1D82ZNQvVJuzGSPETnd9r
Patreon https://www.patreon.com/CadEditor

Страницы: [1]