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

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


Сообщения - spiiin

Страницы: Назад 1 2 3 4 [5] 6 7 8 9 ... 26 Далее
121
Ride11, гугл открывает исходники андроида не по доброй воле, а потому что он основан на ядре линукс и лицензия обязывает открывать, некоторые части кода ос закрыты. Майкрософт раздаёт лицензии студентам бесплатно, чтобы они после обучения шли в компании и там для них покупали недешёвые ентерпрайз лицензии. Кикстартер с россией не работает, если что. Вы бы хоть в своих примерах разбирались сначала.

Без дампинга и добавления в эмуляторы кода работы с мапперами не было бы ни эмуляторов, ни образов ромов в интернете (причём бесплатных). Вместо того, чтобы ценить уже выполненную работу и быть благодарным за неё, вы просто требуете работать бесплатно больше, да ещё и выполнять чьи-то конкретные пожелания - в названии темы автор просит помощи в написании (вроде как подразумевается, что писать будет он сам, а ему помогут), но оказывается, что автор просит написать пакер за него, разумеется бесплатно.

122
Как вам такое?

Черно-белый хак Dr. Mario.

Те, кто в 90-е играл в игру на ч/б телевизоре, могут вволю поностальгировать.

P.S. Специально глянул профиль хакера, чтобы посмотреть, откуда он. Да, он из России. :lol:

Запилили бы сразу видеоплагин "чёрно-белый телевизор", странно что ещё никто не сделал.

123
MASTERMAX, блин, это мои локальные эксперименты над блоками просочились в релиз, я забыл, что они в дампах хранятся, а не внутри ром, и забыл вернуть дамп оригинальной версии. Поправлю

124
Для Cheetahmen 1 - посмотрю
Для Cheetahmen 2 - скачай сам архив settings_cheetahmen_2.rar из вложения. Там непоправленная версия конфигов - использует функцию getBlocksLinear2x2withoutAttrib вместо Cheetah.getBlocks

Добавлено позже:
Цитата
А те настройки глянешь, для тех пираток?
Я пользуюсь ромами из GoodNes 3.1, какие-то ромы или хаки сверх этого лучше вместе с конфигами загружать или ссылки на них давать, откуда скачать.

Добавлено позже:
Вообще мне интереснее не пиратки какие-то странные добавлять, а классические игры, на которые нету редакторов, так что конфиги составить то помогу, но разбирать как-либо эти игры не буду. Мне кажется, что идея "исправлять" изначально кривые во всём пиратки, меняя в них палитру и несколько блоков на уровнях - бессмысленная. В них менять надо, чтобы игра нормальная получилась, всё - от музыки и управления, до дизайна и исправления багов в коде, редактор уровней тут не поможет :lol:

125
чего-то ты кажется не поправленные конфиги загрузил для читаменов, без загрузки аттрибутов блоков

126
Release v4.7
https://github.com/spiiin/CadEditor/releases/tag/v4.7

- Фикс отображения скролл-баров для экранов с низким разрешением
- Отдельный параметр типа блоков для хранения данных о физических свойствах
- Скрипт Autocorrupter v5
- Конфиги для игр (блоки/макроблоки/экраны) [NES]:
    New Ghostbusters 2 (все уровни)
    Shatterhand (все уровни)
    Challenger (уровень-карта)
    Captain Planet (1 уровень)
    Takeshi Chousenjou (1 экран)
    Cheetahmen 2 (1 уровень)

127
Цитата
Правда, палитра для блоков задаются точно там же, где задаются свойства блоков. Типа того: 00 - сквозной блок, 01 - твердый блок, 02 - платформа, 03 - дамагающий блок, а с 04 по 07 - другая палитра с теми же свойствами и т.д., с 20 и выше - задаются враги, они привязаны к определенным байтам.

Так во многих играх. Индекс палитры занимает 2 бита, его пакуют либо с другими индексами, либо с физическими свойствами блока. Если бы указал адрес, я бы тебе в конфиге показал, как маску наложить на байт и прочитать/записать только биты палитры, игнорируя физику.

Цитата
И всё-таки, как блоки с врагами подписать? На карте они как часть фона обозначены будут, как их отметить, чтоб можно было увеличить, где кто есть? Есть такая фича в редакторе или в настройках?

Ну просто указать, откуда загружать типы блоков. Потом переключить режим отображения на типы блоков и смотреть. Там правда лимит был на 16 разных типов всего, но я его убрал уже, в след. релизе будет неограниченное число типов. Второй способ - просто включить отображение номеров блоков и запоминать, какой номер блока с каким врагом. Третий способ - написать в конфиге свою функцию рендера поверх основного экрана, я так в беттлтодсах в первом уровне числа отрисовываю, обозначающие физику поверх блоков. Возможность есть, но примеров нет :) Закончи сначала этот конфиг с цветами карты, чтобы можно было добавить в базу конфигов.

128
Хм. Ну почти верно.
  public int getWordLen()     { return 2;}
  public bool isLittleEndian()          { return true;}
- вот эти строки удалил, это касалось того, что в микки маусе индекс блока кодируется двумя байтами, а почти во всех остальных NES играх - одним байтом (дополнил это в описании форматов https://spiiin.github.io/CadEditor/cadeditor-supported-games.html).

Дальше - поправил адрес палитры:
public OffsetRec getPalOffset() { return new OffsetRec(0xCD1C, 1  , 16  ); }и размер экрана - 16x16
  public OffsetRec getScreensOffset()  { return new OffsetRec(0xc21c, 11 , 16*16); }
  public int getScreenWidth()          { return 16; }
  public int getScreenHeight()         { return 16; }

Получается вот так:
192155-0

Как видишь, так уже можно редактировать блоки, но ты не нашёл биты индексов палитры, которыми кодируется цвета блоков. Они, кстати, скорее всего не в отдельном слое, потому что если поставить любой блок на любое место - то его цвет останется верным - значит они хранятся для каждого блока.

129
Takeshi no Chousenjou - интересный формат уровней. Есть транспонированные блоки 2x2 без палитры. Первый экран описывается в виде 32 блока (2 столбца по 16 блоков сверху вниз), следом за которыми идут 8 байт с описаниями палитры (32 раза по 2 бита - для каждого блока, причём слева направо уже). Больше всего похоже на Moon Crystal из уже добавленных.
Такое описание в редактор добавить не проблема (на скрине 1 полоска с картиной), но редактировать такие полоски (да ещё и слой палитры в отдельном подредакторе), конечно, сильно не удобно - стоило бы сделать отдельный плагин для таких "полосочных" описаний, или же опцию "отображать X экранов друг за другом - вертикально, горизонтально, или заданно по специальной функции" (в Zen intergalactic ninja пригодилось бы для отображения изометрических уровней, там экраны отображаются друг относительно друга со сдвигом в одну строку). Подумаю, как удобнее, опция была бы и для других подредакторов полезна, может через пару версий добавлю такую фичу.

Captain Planet - всё-таки нет там макроблоков, есть блоки 4x8 тайлов, редактировать можно замечательно карту.

Добавлено позже:
Цитата
А в какой игре уровни построены из обычных блоков 2х2 (не макро), без отдельной карты палитры?
В любой игре, в которой AoS(2x2) в графе "блоки", и прочерк в графе "макроблоки".

Отдельные блоки отображать по особому нельзя, если они строятся из графики рома. Можно включить режим отображения номеров блоков (View type -> Block numbers), так будут различаться одинаковые на вид блоки.

130
А, да, ты прав, действительно там макроблоки, 1x2 блока размером только, а не 2x2.

Описал тут все форматы уровней в подключенных NES-играх:
https://spiiin.github.io/CadEditor/cadeditor-supported-games.html

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

131
lancuster
Неа, лучше The Terminator. Такой реквест будет позабористей. :lol:

Добавлено позже:
spiiin, кроме шуток - можно попробовать добавить карты уровней для игры Captain Planet. Там строение блоков то же, что и в Челленджере, если что.
lancuster, кроме шуток - сначала проверяй информацию, а потом пиши, и учись уже разбираться сам в играх, которые тебе хочется испортить, другие за тебя это делать не будут. В Captain Planet не такое строение блоков, как в Челленджере, если что - там вообще не макроблоков. Формат уровней в Captain Planet совпадает с форматом в играх Battletoads/Battletoads & DD, Mickey's Adveture in Numberland, Alien 3, Darkman, если сильно надо - бери конфиг от любой из них и подставляй адреса нужные.

132
Цитата
а что дает твой автокорраптор
Он даёт возможность мне добавить конфиг игры в CadEditor без использования дизассемблера и отладчика. Этого уже достаточно.

133
Откуда я знаю? Ты же игру взламываешь, а не я за тебя  :) Если там другой формат, конфиг тоже будет чуть другой. Разберись сам с форматом, а я тебе найду игру, в которой будет такой же из уже подключенных

134
lancuster
Мне эта игра не интересна, как и хаки на неё. Хочешь делать - делай сам, я показал как.

135
lancuster
Вообщем, вот тебе конфиг.
Адрес описаний макроблоков сразу за описанием карты - 0x6213.
Ещё нужен адрес описаний бит палитры блоков - 0x65B3. В стандартной форме - для каждого блока 4x4 1 дополнительный байт, в котором по 2 бита описывают индекс палитры каждого из подблоков 2x2 тайлов.

Если откроешь конфиг, то увидишь, что нестандартного в этих блоках ничего нет, блоки и макроблоки загружаются стандартными подготовленными функциями:
 
//сохранение и загрузка блоков, стандартная функция, которая читает 16 байт блока и дополнительно 1 байт индексов палитры к нему
  public GetBlocksFunc        getBlocksFunc() { return Utils.getBlocksFromTiles16Pal1;}
  public SetBlocksFunc        setBlocksFunc() { return Utils.setBlocksFromTiles16Pal1;}
//стандартная функция чтения макроблоков из 4 байт подряд последовательно 
  public GetBigBlocksFunc     getBigBlocksFunc()     { return Utils.getBigBlocksCapcomDefault;}
  public SetBigBlocksFunc     setBigBlocksFunc()     { return Utils.setBigBlocksCapcomDefault;}




136
Да, это оно. Тебе нужно найти адрес начала этого массива (найти поинтер на него или логически подсчитать - поставить на карту макроблок 0 и найти, какие байты влияют на изменение блоков 4x4 в нем)

137
А, ну теперь понятно, о чём ты. Да, действительно, внешне похоже на блоки 8x8 тайлов, но на самом деле там структура из блоков 4x4 тайла, и затем из них составлены макроблоки 2x2 блока. т.е. для составления конфига тебе ещё надо найти адрес массива или массивов описания макроблоков.

138
Я эту игру в первый раз вижу, до сцены 2 доходить не хочу абсолютно :)
Сейв кидай или мувик прохождения

139
чего-то я не вижу изменений никаких при изменении данных по этим адресам

140
Я бы сказал, что это не блоки, а просто тайлы. Для описания экранов тайлами есть плагин map editor, там как раз 8x8 тайлы. Кидай адреса, составлю конфиг.

141
Я знаю как логгером пользоваться, можешь не учить. А вот ты кажется про мой метод ничего не понял. Посмотри видео хотя бы. Метод Монте-Карло - вообще не о том, я не использую не вероятностные характеристики, ни случайное изменение байт.

Метод коррапта 1) быстрее (минуты за 3 находит все данные, ты в отладчике скорее всего не успеешь найти номера экранов, адреса блоков, палитры и тайлов за такое время, не говоря уже о том, чтобы прогнать всю игру и записать полный CDL-файл). 2) гарантирует нахождение данных, которые влияют на изменение картинки на экране, а точнее, данных в Name tables (я больше 150 игр прогнал, не нашлись нужные мне данные только в 2-3. Не веришь на слово, могу список дать, тыкнешь в любую игру из него, и запишу тебе видео). и 3) никто не запрещает прогнать автокоррапт (минуты 3 на каждый уровень), а потом, зная уже адреса продолжать разбор любым другим способом. 4) обладает тем преимуществом, что пользоваться им может не только тот, кто дружит с идой и дизассемблером. Лично тебе он может ничего нового и не дать, но кроме тебя и горстки продвинутых ромхакеров в сообществе есть и другие пользователи

142
Razor,
Ага, номера экранов поправил давно уже, насчёт действия в редакторе врагов по умолчанию - добавлю запоминание последнего использованного. Select действительно намного удобнее, но Create был выбран, чтобы пользователь сразу увидел реакцию на первый щелчок в области карты.

143
основная фишка логгера, чтобы было видно, что байтики новые капают. т.е. во время игры надо непрерывно мониторить именно то, поменялся ли счетчик байтов и который...
Что за бред? Во время игры там меняются сотни байт в секунду. Польза от самого этого окна только в кнопках "Начать логгинг", "Завершить логгинг" и "Сохранить результаты логгинга в файл". Я эти функции зову из скрипта программно (синхронизирую начало и конец логгинга с сейвами, и потом во время коррапта использую результаты - изменяю только байты, которые были отмечены как данные между двумя сейвами, это нехилая оптимизация по скорости коррапта), вот мне само окно и не нужно в развёрнутом виде.

144
Спасибо. Мой любимый жанр хаков - редизайн уровней в старых декорациях =)
Будет фидбек по работе с редактором? Постараюсь улучшить его.

Ещё, если не сложно, добавь в видео на ютубе "Made with CadEditor - https://www.patreon.com/CadEditor", так и о редакторе больше людей узнают, и мне пара долларов доната будет на новый год :)

Добавлено позже:
по левелдизайну хака - очень много развилок и нычек, это хорошо, развилки вроде все проходимы, но почему в нычках морковок так мало?) шарики с бонусами хорошо расставлены, а морковок и по основному пути достаточно, нет стимула уровень исследовать.

145
Записал видео про использование Autocorrupter'а, скрипта для начального поиска данных об уровнях в любых играх.

Скрипт тут:
https://github.com/spiiin/CadEditor/tree/master/AutoCorruptor/nes_v5

В приложении архив со скриптом и эмулятором (обычный Fceux, немного похаченный, чтобы сворачивать всплывающее окно Code-Data Logger).

146
Редактор умеет и так и так читать графику. Если опишешь в конфиге, как строить блоки из графики в роме, то картинки делать и не надо, конечно.

Сейчас конфиги для 62 nes игр строят блоки из видеопамяти (из рома прямо её берут или из дампов, когда мне лень в роме искать, как она хранится) и всего 11 берут блоки из заготовленных картинок (в основном, это конфиги, которые делал Roket, я их просто не переписал ещё на построение блоков из ROM, это что-то вроде промежуточной стадии). На сегу тоже в основном блоки строятся из видеопамяти.

147
Не видел. У меня в данный момент есть конфиг 1 уровня полный, и конфиг экранов/блоков/макроблоков для уровня 2-1 для английской версии, а также текстовик от тебя с описанием врагов для японской версии.
https://github.com/spiiin/CadEditor/tree/master/CadEditor/settings_shatterhand

148
Roket
Окей, проехали. Метаинформацию из картинок я за тебя подчистил же.

Там ситуация была такая - какая-то программа, в которой делались картинки, писала в png метаинформацию неверную - типа "в этом файле плотность пикселей столько-то на метр", цифра абсолютно левая. Так что картинки были неправильные действительно. Я ещё одну такую картинку от Nemesis_C встречал в конфиге zamn - у Ti_ обнаружился этот баг.
 
Если делать генератор конфига - картинку с блоками тоже он будет генерировать (по скриншотам или картинкам отдельных блоков), так же такая ситуация будет исключена.


Добавлено позже:
Я донейты на редактор собираю не от жадности, а потому что работы много действительно по нему :)

Сейчас готов собранное (около 20$), отдать за составление конфигов для Shatterhand для всех уровней если кто возьмётся. Ну или сам их допилю, если желающих не будет.

149
разбираться с чужими программами ничуть не проще, чем дизасмить игры денди
Вообще обычному программисту читать код, написанный человеком на высокоуровневом языке намного проще, чем машинный код. Это у тебя профдеформация на почве длительного дизассемблирования игр на денди.

Цитата
у каждой игры есть свои нюансы, каждый раз придется придумывать костыль
Так вот прикол в том, что на самом деле не так, есть очень много общих черт. Я для того столько игр и подключил, чтобы это проверить. Иногда в конфиге надо именно уникальный код дописать - но всё-таки написать 10-20 строк кода намного проще, чем целый отдельный редактор делать. А если надо уникальный подредактор добавить специфичный для конкретной игры - для этого плагины есть, по сути отдельные программы (редактор трасс для battletoads например).

Для меня эти конфиги собирать, так чтобы уровни можно было посмотреть (даже без редактирования какого-либо вообще), как для тебя unpublished cheats собирать, наверное :)

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


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

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

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

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

Страницы: Назад 1 2 3 4 [5] 6 7 8 9 ... 26 Далее