Сообщения без ответов | Активные темы Текущее время: 29 мар 2024, 01:27



Ответить на тему  [ Сообщений: 6 ] 
 Подскажите софт для работы с NES ROM-ами 
Автор Сообщение
Сообщение 29 окт 2013, 19:27
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Решил поковыряться немного во внутренностях игр для NES. Но не хотелось бы изобретать велосипеды. А то я умудрился изучая код написать свои программы для упаковки и распаковки RLE :)

Подскажите, есть ли софт, который умеет отображать содержимое загруженного двоичного файла так, как это делают HEX-редакторы, только вместо символов ASCII должны отображаться символы из указанного CHR файла?

Также, чтобы не создавать отдельные темы, наверняка есть такой софт, но я не нашёл. Есть какой-нибудь консольный или GUI редактор NES файлов, позволяющий, допустим, посмотреть, сколько PRG и CHR секций в дампе, извлечь их, а потом из извлечённых собрать обратно другой NES файл? Я так понимаю, примерно таким образом вытягивают менюшки из многоигровок. Вручную в обычном HEX-редакторе вычислять границы каждой секции очень неудобно.

И ещё :) Есть ли какие-то готовые оптимизаторы CHR, которым можно было бы скормить пачку NAM файлов (name table), а он бы нашёл, допустим, какие символы из CHR не используются и т.д. Также интересно, есть ли какой-то софт, который позволил бы массово поменять местами символы в CHR, и соответственно автоматически исправить их коды в связанных NAM файлах. Это может быть полезным.

Например, я написал немного усовершенствованный RLE, который умеет «упаковывать» не только повторяющиеся символы, но и пачки символов, идущих «по возрастанию» и «по убыванию». Мои name table файлы это упаковывает на процентов 30 лучше. То есть меняя порядок символов в CHR табличке можно получать лучшую степень сжатия. Вот программа, позволяющая менять последовательность символов в CHR файле с автоматическим обновлением связанных NAM файлов была бы очень кстати. Особенно если пойти дальше, и реализовать что-нибудь вроде Хаффмана — в CHR можно будет сразу размещать символы по частоте встречаемости :)

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


Последний раз редактировалось VEG 29 окт 2013, 21:00, всего редактировалось 2 раз(а).



Сообщение 29 окт 2013, 20:50
Профиль WWW
Основатель сайта
Аватара пользователя

Зарегистрирован:
21 июл 2007, 15:40
Сообщения: 2234
Откуда: Москва
Вот тут посмотри. Может что и пригодится:
http://www.zophar.net/utilities/hexutil.html
http://www.zophar.net/utilities/nesutil.html
http://www.zophar.net/utilities/nesdev.html


Сообщение 31 окт 2013, 21:36
Профиль

Зарегистрирован:
14 авг 2009, 21:03
Сообщения: 13
VEG писал(а):
Подскажите, есть ли софт, который умеет отображать содержимое загруженного двоичного файла так, как это делают HEX-редакторы, только вместо символов ASCII должны отображаться символы из указанного CHR файла?

Также, чтобы не создавать отдельные темы, наверняка есть такой софт, но я не нашёл. Есть какой-нибудь консольный или GUI редактор NES файлов, позволяющий, допустим, посмотреть, сколько PRG и CHR секций в дампе, извлечь их, а потом из извлечённых собрать обратно другой NES файл? Я так понимаю, примерно таким образом вытягивают менюшки из многоигровок. Вручную в обычном HEX-редакторе вычислять границы каждой секции очень неудобно.

Не совсем понял, если ты имеешь ввиду просто просмотр(и редактирование) графики, так их более десятка найдется - тайловые редакторы, например yy-chr.

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

По последнему врядли такое существует, но зачем это надо? Что-ты там пересжимать собрался. :)


Сообщение 01 ноя 2013, 10:51
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
На NES используются такие трюки как interleave данных. То есть к примеру часть одной палитры может начинаться на середине другой палитры, поэтому общий подход сложно реализовать. Нужно конкретно смотреть для каждой игры.

Например в Bomberman CHR хранится в виде ROM, поэтому его легко менять.

А вот например в Battletoads CHR хранятся в виде запакованных данных, по типу RLE, при этом CHR ROM как такового нет, потому что там VRAM на картридже. А эти CHR динамически на лету распаковываются прямо в VRAM при загрузке.

Там всё делалось на асме, соответственно экономили каждый байт, так что не получится так как ты хочешь.
Игры NES это не просто отдельно данные + программа - это всё вперемешку.


Сообщение 01 ноя 2013, 15:10
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Ti_ писал(а):
Не совсем понял, если ты имеешь ввиду просто просмотр(и редактирование) графики

Нет, я имел в виду просто просмотр содержимого любого файла, только в качестве «шрифта» должен использоваться выбранный CHR. Я уже нашёл такую программу:
Изображение
Правда, она не очень удобно сделана, но жить можно :) Нужно для того, чтобы по-быстрому найти в роме игры хотя бы намёки на текст, сжатые при помощи RLE бэкграунды и даже спрайты.

Ti_ писал(а):
так их более десятка найдется - тайловые редакторы, например yy-chr.

Здесь очень клёвый софт я нашёл. NES Screen Tool, от отечественного разработчика. Автор очень талантлив, у него на сайте много качественных полезностей: http://shiru.untergrund.net/software.shtml

Изображение

Ti_ писал(а):
Так вопрос о многоигровках, или просто разрезке - не понимаю что там сложного. Ну если тебе надо 100 ромов разрезать, можешь написать программу, в заголовке же указывается количество.

Так я же и писал выше, что ничего сложного, но велосипеды изобретать не хочется. Но похоже, что таки придётся :)

Ti_ писал(а):
По последнему врядли такое существует, но зачем это надо? Что-ты там пересжимать собрался. :)

Оптимизировать tile set для одного name table умеет NES Screen Tool. Вот хотелось бы такую же функцию, но для пачки name table. Ну, тоже можно самому написать, забавная алгоритмическая задачка, расположить тайлы в таком порядке, чтобы бэкграунды лучше сжимались :)

org писал(а):
На NES используются такие трюки как interleave данных. То есть к примеру часть одной палитры может начинаться на середине другой палитры, поэтому общий подход сложно реализовать. Нужно конкретно смотреть для каждой игры.

Это понятно, но не ясно, чему из описанного выше это противоречит :) Если в каких-то играх нет секции для CHR — это же не значит, что софт по работе со стандартными CHR секциями в NES файлах не нужен. И такой софт есть.


Сообщение 01 ноя 2013, 17:00
Профиль

Зарегистрирован:
14 авг 2009, 21:03
Сообщения: 13
VEG писал(а):
Оптимизировать tile set для одного name table умеет NES Screen Tool. Вот хотелось бы такую же функцию, но для пачки name table. Ну, тоже можно самому написать, забавная алгоритмическая задачка, расположить тайлы в таком порядке, чтобы бэкграунды лучше сжимались :)

Да будет забавно, особенно если на один и тот же тайлсет скажем будет десяток разных nametables :)


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 6 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB