Форум Эму-Россия
http://forum.emu-russia.net/

[NES] Меню с видами на море. NEW! Появилась демка!
http://forum.emu-russia.net/viewtopic.php?f=121&t=1678
Страница 4 из 9

Автор:  x.GREYSON.x [ 13 ноя 2013, 01:29 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Цитата:
Собственно, все ромчики в самом верхнем сообщении этой страницы ;о)
Не знал. :)

Цитата:
Кстати, у моего друга был карик с Unchained Melody. В нём вместо привычного острова на море с птичками был маленький Симба из Короля Льва, который висел на каменном выступе и беспомощно махал задними лапами.
У меня тоже был такой карик.

Автор:  CaH4e3 [ 13 ноя 2013, 01:40 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

там была не унчейнед мелоди

Автор:  ПАУК [ 13 ноя 2013, 01:47 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

CaH4e3 писал(а):
там была не унчейнед мелоди

Унчайнед. Сам тогда удивился, когда при знакомой мелодии картинка не в тему была.

Автор:  VEG [ 13 ноя 2013, 01:59 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

EvGS писал(а):
Summer wine из 100-in-1 довольно красива

Более правильно говорить 83-in-1, поскольку 100-in-1 это достаточно кривой хак первой (даже атрибуты у некоторых тайловых карт не поправили, из-за чего текст отображается с артефактами).
Я сразу думал скрестить 83-in-1 и 300-in-1, сделать море повыше, как в 83-in-1, но тогда оставалось слишком мало места для фишки с облаками, поэтому оставил как есть. 83-in-1 я расковыряю позднее. Может, что интересного найду :)

ПАУК писал(а):
Кстати, у моего друга был карик с Unchained Melody. В нём вместо привычного острова на море с птичками был маленький Симба из Короля Льва, который висел на каменном выступе и беспомощно махал задними лапами.

На chief-net.ru есть два дампа с похожим сюжетом из Короля Льва (в одном Симба карабкается, в другом орёл какой-то машет крыльями). Там разная музыка в обоих случаях, и не Unchained Melody. То меню, что с орлом (Menu_8888888_in_1_[p]_[!]_by_Guyver.nes) сделано совсем криво, спрайты моргают и глючат, музыка примитивная. А вот то, что с Симбой, идут с кавером на знакомую песенку вроде Элтона Джона :) Правда, он тоже не цепляет. Хотя может быть, я придираюсь. На сколько я помню, картридж с Симбой идёт вместе с одноимённой китайской приставкой.

-- 13 ноя 2013, 01:14 --

Ради интереса бегло изучил код менюшек с сюжетами из короля льва. Основа у них явно общая, не понимаю, почему версия с орлом так глючит, может быть это кто-то хакал менюшку с Симбой, не имея нормальных навыков. Код в обработчиках RESET и NMI не имеет ничего общего с менюшками Unchained Melody. В версии с Симбой также есть отдельный обработчик IRQ (Unchained Melody обходится без его, в менюшке с орлом тоже нет, судя по всему, вся работа с вводом в основном потоке).

-- 13 ноя 2013, 01:37 --

Что интересно, у 83-in-1 код также достаточно сильно отличается от 300-in-1. Хотя родственная связь между ними очевидна. В случае 100-in-1 из оригинала забыли удалить скрытое тестовое меню по Select+Start и в тайловых картах там, где они добавили текст, они забыли исправить атрибуты групп тайлов, из-за чего некоторые буквы отображаются с неправильной палитрой. В 300-in-1 они забыли удалить кусочки верхних чёрных пальм (там буквально по несколько пикселей осталось). Но мне всё же кажется, что над 300-in-1 работал тот же разработчик — добавлено много хороших сцен, написана новая, более качественная (на мой взгляд) музыка. И код внутри — явно не хак, а нормальным образом написанная программа.

Автор:  CaH4e3 [ 13 ноя 2013, 15:54 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

ПАУК писал(а):
CaH4e3 писал(а):
там была не унчейнед мелоди

Унчайнед. Сам тогда удивился, когда при знакомой мелодии картинка не в тему была.

не помню

Автор:  VEG [ 13 ноя 2013, 16:24 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Итак, хочу поделиться вот ещё какой информацией. Известно, что в этой менюшке используется шрифт идентичный тому, что присутствует в Super Fighter III и всех его хаках Street Fighter III. Я искал ещё что-нибудь, что объединяет эти ромы, и нашёл:
Код:
AE0E4E0EF30D9E0D4D0D010DB90C750C350CF80BBF0B890B570B270BF90ACF0AA60A800A5C0A3A0A1A0AFC09DF09C409AB0993097C09670952093F09
2D091C090C09FD08EE08E108D408C808BD08B208A8089F0896088D0885087E0876087008690863085E08580853084F084A08460842083E083A083708
340831082E082B08290827082408220820081E081C081B080000

Это табличные данные (в HEX), активно используются звуковым движком в Unchained Melody, в зависимости от нот данные берутся из этой таблицы и отсылаются в APU. Shiru говорит, что это скорее всего табличка нот, т.е. периодов для каждой ноты.
Shiru писал(а):
Вообще она рассчитывается чисто математически, простой формулой, но её могли подбирать на слух, или иметь неточные исходные параметры, или пытаться уменьшить погрешность. Поэтому таких табличек должны быть десятки, но и совпадение не говорит о том, что она из одного источника.

Однако, если поискать эту табличку по всей коллекции моих ROM-ов, выходит не такой уж и большой список:
Изображение
Изображение
Я искал при помощи Total Commander среди пары тысяч ромов по последовательности (HEX-последовательности длиннее 255 символов Total Commander не позволяет искать, не забудьте убрать перевод строки):
Код:
AE0E4E0EF30D9E0D4D0D010DB90C750C350CF80BBF0B890B570B270BF90ACF0AA60A800A5C0A3A0A1A0AFC09DF09C409AB0993097C09670952093F09
2D091C090C09FD08EE08E108D408C808BD08B208A8089F0896088D0885087E0876087008690863085E08580853084F084A08460842083E083A083708

Основная часть этого списка — варианты меню Unchained Melody, его прообраз 83-in-1, Super/Street Fighter 3 со всеми хаками. Из лицензионных картриджей здесь Family BASIC (!), несколько игр от венгерского разработчика Novotrade и куча нелицензионных игр. Велика вероятность, что в этих дампах встречается именно эта табличка не по случайности. Нужно будет детальнее изучить.

Автор:  GManiac [ 13 ноя 2013, 16:47 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

VEG писал(а):
Я искал ещё что-нибудь, что объединяет эти ромы, и нашёл:
Код:
AE0E4E0EF30D9E0D4D0D010DB90C750C350CF80BBF0B890B570B270BF90ACF0AA60A800A5C0A3A0A1A0AFC09DF09C409AB0993097C09670952093F09
2D091C090C09FD08EE08E108D408C808BD08B208A8089F0896088D0885087E0876087008690863085E08580853084F084A08460842083E083A083708
340831082E082B08290827082408220820081E081C081B080000

Как искал, кстати? ;) Ты сначала выделил этот конкретный блок хекса, затем уже сам этот блок стал искать Тоталом?
У меня просто была более общая задача - найти все блоки сходств между всеми ромами дабы определить многократно использующийся код или данные, специально для этого чуть переделал исходник LZMA на Дельфях (т.к. сишный не вкурил), и когда увидел огромное количество самых разных кусков, понял... понял, что всё не так просто, как казалось.
Если интересно, небольшой результат ручной работы: процедура распаковки в сеговском Tiny Toon встречается почти в таком же виде ещё в 6 играх от Konami, но если в Тини Туне она распаковывает чуть ли не половину рома, то в некоторых других играх, которые я проверял, этой процедуре доверено всего несколько кусочков данных.

Автор:  VEG [ 13 ноя 2013, 16:54 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Ну я вручную искал сходства между 83-in-1, 300-in-1 и Super Fighter 3. Поскольку код 300-in-1 хорошо изучил, было видно, что может быть скопировано 1 в 1 — то и искал. Поиск в Тотале по HEX включается галочкой:
Изображение

Программу, которая сама бы искала одинаковые или похожие фрагменты не знаю. Можно попробовать самому написать :) Хотя мне хватило бы поисковика HEX данных с масками, типа вот этот байт может быть любым, а вот этот байт должен быть +3 от предыдущего байта и т.д. Что-то вроде регулярок, но для двоичных данных. Хотя можно это всё и на обычных регулярках писать, там же есть escape-последовательности для произвольных кодов. Нужно будет попробовать эту функцию в Total Commander. Если работает хорошо, можно будет сигнатуры для кода оформлять для поиска, чтобы оно ещё игнорировало изменившиеся смещения от рома к рому.

Автор:  GManiac [ 13 ноя 2013, 17:01 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Проблема в том, что для поиска ВСЕХ одинаковых двоичных фрагментов надо "каждый фрагмент сравнить с каждым". Т.е. при решении в лоб время полного поиска возрастает квадратично от суммарного размера файлов. Т.к. мне надо было прошерстить целый ромсет, например, сеги - а это 1000 мб, а даже если брать только код - это около 100 мб, времени потребовалось бы вечность. К счастью, сверхбыстрый поиск давно реализован в архиваторах, на огромных словарях - в LZMA. Потому я в него и полез.

Автор:  VEG [ 14 ноя 2013, 02:53 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

GManiac писал(а):
Проблема в том, что для поиска ВСЕХ одинаковых двоичных фрагментов надо "каждый фрагмент сравнить с каждым". Т.е. при решении в лоб время полного поиска возрастает квадратично от суммарного размера файлов. Т.к. мне надо было прошерстить целый ромсет, например, сеги - а это 1000 мб, а даже если брать только код - это около 100 мб, времени потребовалось бы вечность. К счастью, сверхбыстрый поиск давно реализован в архиваторах, на огромных словарях - в LZMA. Потому я в него и полез.

А пробовал запускать эту утилитку на коллекции ромов для NES? Интересно, кто там у кого чего заимствовал :)

Автор:  GManiac [ 14 ноя 2013, 18:56 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

На NES ещё хуже оказалось. Помимо того, что фрагменты меньше, в них часто есть различия на пару байт или различия разных размеров, отчего куски сдвинуты друг относительно друга на пару байт. Из-за всего этого архиватор видит их как отдельные куски, т.к. умеет проводить только точное и последовательное сравнение (собственно, это есть суть LZ-архиватора, кроме того, такое жёсткое условие позволяет создать алгоритмы очень быстрого поиска).
На простом примере:
abcdefghjiklmnopqrstuvwxyz
abcdezghjiklmnopqrsqxuvwxyz
Во втором различии есть смещение.

Даже в NSF с одинаковыми движками такое есть. Скорей всего, это потому, что код писали руками на асме и вставляли отдельные команды куда надо, а не как на сеге, брали готовую неизменную процедуру и использовали её.

Проверку над полным ромсетом я не проводил. Во-первых, тот исходник, кажись, 32-битный (уже ограничение словаря до 128 МБ), плюс он почему-то автоматом ограничивает словарь до кода -d23, в общем, надо ковырять. Размер уникальных ромов NES этак 400 мб, сеги - больше гига. Особенность сеги позволяет довольно точно выделить код, но он занимает в среднем 10% от рома - т.е. больше 100 мб на всём ромсете.
Даже если запустить проверку над ограниченным набором ромов, получится большое число фрагментов, которые вручную ковырять глупо. В первую очередь будут видны куски между "одинаковыми" играми, такими как серия NBA Live, например. Такие тоже надо будет исключить из набора. Лучше отыскивать наиболее часто используемые фрагменты в разных играх (например, одна и та же процедура распаковки, см. ниже) и максимальные суммарные фрагменты из разрозненных кусков между разными играми (простой пример разрозненности дан выше), а это всё не очень простая задача. Кроме того, архиватор ищет ближайший одинаковый кусок максимального размера, но это не значит, что такого или похожего куска нет ещё где-то раньше, как раз в той игре, с которой мы сравниваем текущую игру.
У меня, если честно, нет времени на всё это.

Я задавался немного другим вопросом: насколько сходны разные ромы, т.е. как часто повторно использовали код и данные? И дополнительно: насколько велика польза от знания повторно используемого кода?
На примере архиватора RNC: по его заголовку легко отыскать игры, которые используют сжатие RNC, а главное - сами архивы. Итог: сжатие RNC использует порядка 50 игр, и объём сжатых данных около 20 мб. Это весьма неплохо. Сам факт использования RNC можно узнать по наличию в роме кода процедуры распаковки - он везде одинаковый (если точнее, есть две версии).
Логично, что:
- схожесть высокая в играх одной серии, особенно это касается спортивных
- схожесть выше в играх одних разработчиков
- процент схожести выше в коде, чем в данных

Что касается кода, то можно не только проводить тупое двоичное сравнение, а искать гомологии. Самый простой вариант гомологии: две команды различаются только числом, или адресом или регистром. Может же так быть, что одна и та же процедура написана с использованием разных регистров или разных абсолютных адресов, а порядок команд остаётся одним и тем же. Соответственно, для поиска гомологий можно в каждой команде заменить операнд на некий единый для этого вида команд. Например,
Код:
MOVEQ #45,D0
MOVE.B D0,D1
DBRA D0, $FFFE

и
Код:
MOVEQ #14,D4
MOVE.B D4,D6
DBRA D4, $FFFC

можно считать схожим кодом. Его единый вид может выглядеть так:
Код:
MOVEQ #$FF,D7
MOVE.B D7,D7
DBRA D7, $FFFF

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

Я провёл такой эксперимент и посмотрел, насколько лучше сжимается код после приведения непрерывным (solid) сжатием относительно прерывного. Цифры немного условны могут различаться в зависимости от набора ромов, здесь предполагаются разные ромы без всяких спортивных серий и проч., в которых мало сходств.
Чистый код: 1.06 раз
Код с заменёнными адресами и числами на FFFFFF: 1.12 раз
Код ещё с заменёнными регистрами: 1.15 раз
Как видно, при повышении "гомологичности поиска" степень сжатия (а значит, и сходства) повышается, но не бесконечно.

Короче, много ещё открытых вопросов и возможностей для исследования.

Что-то наоффтопил я :)

Автор:  VEG [ 14 ноя 2013, 22:06 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

EvGS писал(а):
Ух ты, как здорово. Я проверю эту штучку на флешкартридже

И как успехи? Я (понятное дело) впервые в жизни делал фейдинг, очень интересно, работает ли оно на реальном железе :)

-- 14 ноя 2013, 21:44 --

Гость писал(а):
Я тут в своё время делал подобный ром. Но делал его из другого сборника - 99999 in 1 (который я сдампил в 2011 году). В моей версии я сделал слайдшоу - ничего вообще нажимать не надо, всё идёт само. Правда, реализовал всё это дело довольно криво, так как делал хак корруптором...

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

Гость писал(а):
VEG, если будешь потом реализовывать слайд-шоу, то переключение экранов должно происходить в момент музыки (1-й удар баса).

Это какой именно момент? :) Если считать по отстукивающему «ударнику», если ровно поделить всю мелодию между всеми сценами, то на каждую приходится по 5 ударов.

Автор:  x.GREYSON.x [ 15 ноя 2013, 00:48 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Цитата:
Если считать по отстукивающему «ударнику», если ровно поделить всю мелодию между всеми сценами, то на каждую приходится по 5 ударов.
Совершенно верно меня понял. Только когда посчитал получилось 4.5 удара, т.е 8 по 5 ударов и 6 по 4. (1 удар - только запустил ром).
Видюшка прилагается. - обновил

Вложения:
Комментарий к файлу: Открывать Nestopia (1.40)
unchained-nostalgia.zip [1.1 КБ]
Скачиваний: 417

Автор:  EvGS [ 15 ноя 2013, 18:32 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Работает на железе просто прекрасно.

Автор:  Гость [ 15 ноя 2013, 19:13 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

У меня ещё есть версия с более замедленной анимацией, без двойного мигание экрана, но там изменено поведение чаек. Они летают по всему экрану и генерятся заново, если улетают далеко за его пределы...

http://gfile.ru/a2dkL

Автор:  VEG [ 15 ноя 2013, 19:44 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

И в чём принцип работы этого корруптора? Как я могу догадаться из названия, он рандомно портит ром, а пользователь пробует результаты, пока не понравятся? Судя по характеру глюков и тому, что, допустим, в предложенном роме зачем-то подменена даже нота в музыке, так и есть :rolleyes:

-- 15 ноя 2013, 18:58 --

EvGS писал(а):
Работает на железе просто прекрасно.

Отлично. Спасибо за тест. Фейдинг хоть заметен? Я его сделал максимально быстрым — не люблю медленные эффекты. Но в эмуляторе хорошо ощущается разница между обычным миганием и фейдингом.

Автор:  EvGS [ 15 ноя 2013, 20:32 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Заранее извиняюсь за качество - был пьян и лень было искать штатив:

Автор:  VEG [ 16 ноя 2013, 03:20 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

Добавил ролик :)

Автор:  Nepo [ 16 ноя 2013, 06:40 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

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

Автор:  VEG [ 16 ноя 2013, 13:25 ]
Заголовок сообщения:  Re: [NES] Меню с видами на море. NEW! Появилась демка!

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

Это фишка :) Я специально сделал возможность накладывать эффект фейдинга на фон и спрайты раздельно. При первом появлении фон и спрайты появляются из чёрного вместе, а далее — затеняется только фон. Мне кажется, что так лучше, потому что ведь на самом деле меняется только он.

-- 16 ноя 2013, 15:15 --

Кстати, вот что интересно. В ROM-ах стоит флаг, что это NTSC. И при просмотре меню в PAL мне кажется, что какое-то всё слишком медленное и музыка не такая приятная. Но наверное это из-за того, что уже привык к NTSC режиму. Но на Денди это ведь было ближе к PAL, верно?

В Nestopia зачем-то сделано два варианта настроек по сути одного и того же. В главном меню доступна настройка Region: Auto (выбирается по заголовку из ROM-а), NTSC и PAL. А вот в настройках доступны ещё варианты (Favored System): NES NTSC, NES PAL, Dendy, Famicom. То есть в итоге можно выбрать систему NES PAL, но регион NTSC и т.д. — не ясно, что получается в итоге, в общем какая-то путаница или я чего-то не понимаю.

Страница 4 из 9 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/