[NES] Меню с видами на море. NEW! Появилась демка!
Автор |
Сообщение |
13 ноя 2013, 01:29 |
|
Зарегистрирован: 13 ноя 2013, 00:41 Сообщения: 6 Откуда: Ростов-на-Дону
|
Цитата: Собственно, все ромчики в самом верхнем сообщении этой страницы ;о) Не знал. Цитата: Кстати, у моего друга был карик с Unchained Melody. В нём вместо привычного острова на море с птичками был маленький Симба из Короля Льва, который висел на каменном выступе и беспомощно махал задними лапами. У меня тоже был такой карик.
_________________ Электролыбка
|
|
13 ноя 2013, 01:40 |
|
Зарегистрирован: 22 июл 2007, 11:16 Сообщения: 787
|
там была не унчейнед мелоди
_________________ 1. Модератор всегда прав. 2. Если модератор не прав, см. п. 1.
|
|
13 ноя 2013, 01:47 |
|
Зарегистрирован: 23 май 2012, 17:56 Сообщения: 25
|
CaH4e3 писал(а): там была не унчейнед мелоди Унчайнед. Сам тогда удивился, когда при знакомой мелодии картинка не в тему была.
|
|
13 ноя 2013, 01:59 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
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 работал тот же разработчик — добавлено много хороших сцен, написана новая, более качественная (на мой взгляд) музыка. И код внутри — явно не хак, а нормальным образом написанная программа.
|
|
13 ноя 2013, 15:54 |
|
Зарегистрирован: 22 июл 2007, 11:16 Сообщения: 787
|
ПАУК писал(а): CaH4e3 писал(а): там была не унчейнед мелоди Унчайнед. Сам тогда удивился, когда при знакомой мелодии картинка не в тему была. не помню
_________________ 1. Модератор всегда прав. 2. Если модератор не прав, см. п. 1.
|
|
13 ноя 2013, 16:24 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
Итак, хочу поделиться вот ещё какой информацией. Известно, что в этой менюшке используется шрифт идентичный тому, что присутствует в 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 и куча нелицензионных игр. Велика вероятность, что в этих дампах встречается именно эта табличка не по случайности. Нужно будет детальнее изучить.
|
|
13 ноя 2013, 16:47 |
|
Зарегистрирован: 22 июл 2007, 02:10 Сообщения: 313 Откуда: ниоткуда
|
VEG писал(а): Я искал ещё что-нибудь, что объединяет эти ромы, и нашёл: Код: AE0E4E0EF30D9E0D4D0D010DB90C750C350CF80BBF0B890B570B270BF90ACF0AA60A800A5C0A3A0A1A0AFC09DF09C409AB0993097C09670952093F09 2D091C090C09FD08EE08E108D408C808BD08B208A8089F0896088D0885087E0876087008690863085E08580853084F084A08460842083E083A083708 340831082E082B08290827082408220820081E081C081B080000 Как искал, кстати? Ты сначала выделил этот конкретный блок хекса, затем уже сам этот блок стал искать Тоталом? У меня просто была более общая задача - найти все блоки сходств между всеми ромами дабы определить многократно использующийся код или данные, специально для этого чуть переделал исходник LZMA на Дельфях (т.к. сишный не вкурил), и когда увидел огромное количество самых разных кусков, понял... понял, что всё не так просто, как казалось. Если интересно, небольшой результат ручной работы: процедура распаковки в сеговском Tiny Toon встречается почти в таком же виде ещё в 6 играх от Konami, но если в Тини Туне она распаковывает чуть ли не половину рома, то в некоторых других играх, которые я проверял, этой процедуре доверено всего несколько кусочков данных.
_________________ Мысль - это интеллектуальный эксцесс данного индивидуума.
|
|
13 ноя 2013, 16:54 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
Ну я вручную искал сходства между 83-in-1, 300-in-1 и Super Fighter 3. Поскольку код 300-in-1 хорошо изучил, было видно, что может быть скопировано 1 в 1 — то и искал. Поиск в Тотале по HEX включается галочкой: Программу, которая сама бы искала одинаковые или похожие фрагменты не знаю. Можно попробовать самому написать Хотя мне хватило бы поисковика HEX данных с масками, типа вот этот байт может быть любым, а вот этот байт должен быть +3 от предыдущего байта и т.д. Что-то вроде регулярок, но для двоичных данных. Хотя можно это всё и на обычных регулярках писать, там же есть escape-последовательности для произвольных кодов. Нужно будет попробовать эту функцию в Total Commander. Если работает хорошо, можно будет сигнатуры для кода оформлять для поиска, чтобы оно ещё игнорировало изменившиеся смещения от рома к рому.
|
|
13 ноя 2013, 17:01 |
|
Зарегистрирован: 22 июл 2007, 02:10 Сообщения: 313 Откуда: ниоткуда
|
Проблема в том, что для поиска ВСЕХ одинаковых двоичных фрагментов надо "каждый фрагмент сравнить с каждым". Т.е. при решении в лоб время полного поиска возрастает квадратично от суммарного размера файлов. Т.к. мне надо было прошерстить целый ромсет, например, сеги - а это 1000 мб, а даже если брать только код - это около 100 мб, времени потребовалось бы вечность. К счастью, сверхбыстрый поиск давно реализован в архиваторах, на огромных словарях - в LZMA. Потому я в него и полез.
_________________ Мысль - это интеллектуальный эксцесс данного индивидуума.
|
|
14 ноя 2013, 02:53 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
GManiac писал(а): Проблема в том, что для поиска ВСЕХ одинаковых двоичных фрагментов надо "каждый фрагмент сравнить с каждым". Т.е. при решении в лоб время полного поиска возрастает квадратично от суммарного размера файлов. Т.к. мне надо было прошерстить целый ромсет, например, сеги - а это 1000 мб, а даже если брать только код - это около 100 мб, времени потребовалось бы вечность. К счастью, сверхбыстрый поиск давно реализован в архиваторах, на огромных словарях - в LZMA. Потому я в него и полез. А пробовал запускать эту утилитку на коллекции ромов для NES? Интересно, кто там у кого чего заимствовал
|
|
14 ноя 2013, 18:56 |
|
Зарегистрирован: 22 июл 2007, 02:10 Сообщения: 313 Откуда: ниоткуда
|
На NES ещё хуже оказалось. Помимо того, что фрагменты меньше, в них часто есть различия на пару байт или различия разных размеров, отчего куски сдвинуты друг относительно друга на пару байт. Из-за всего этого архиватор видит их как отдельные куски, т.к. умеет проводить только точное и последовательное сравнение (собственно, это есть суть LZ-архиватора, кроме того, такое жёсткое условие позволяет создать алгоритмы очень быстрого поиска). На простом примере: abcde fghjiklmnopqrs tuvwxyz abcde zghjiklmnopqrs qxuvwxyz Во втором различии есть смещение. Даже в 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 раз Как видно, при повышении "гомологичности поиска" степень сжатия (а значит, и сходства) повышается, но не бесконечно. Короче, много ещё открытых вопросов и возможностей для исследования. Что-то наоффтопил я
_________________ Мысль - это интеллектуальный эксцесс данного индивидуума.
|
|
14 ноя 2013, 22:06 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
EvGS писал(а): Ух ты, как здорово. Я проверю эту штучку на флешкартридже И как успехи? Я (понятное дело) впервые в жизни делал фейдинг, очень интересно, работает ли оно на реальном железе -- 14 ноя 2013, 21:44 -- Гость писал(а): Я тут в своё время делал подобный ром. Но делал его из другого сборника - 99999 in 1 (который я сдампил в 2011 году). В моей версии я сделал слайдшоу - ничего вообще нажимать не надо, всё идёт само. Правда, реализовал всё это дело довольно криво, так как делал хак корруптором... Я тоже думал сделать опциональной функцию авто-прокрутки, запускаемой по кнопке Start. Но тут не ясно, какую паузу следовало бы выбрать (у вас явно слишком быстро), возможно, следовало бы сделать это регулируемым, и подходящую индикацию к этому. В общем я решил, что пока что и без автоматики хорошо получилось, а там будет видно Гость писал(а): VEG, если будешь потом реализовывать слайд-шоу, то переключение экранов должно происходить в момент музыки (1-й удар баса). Это какой именно момент? Если считать по отстукивающему «ударнику», если ровно поделить всю мелодию между всеми сценами, то на каждую приходится по 5 ударов.
|
|
15 ноя 2013, 00:48 |
|
Зарегистрирован: 13 ноя 2013, 00:41 Сообщения: 6 Откуда: Ростов-на-Дону
|
Цитата: Если считать по отстукивающему «ударнику», если ровно поделить всю мелодию между всеми сценами, то на каждую приходится по 5 ударов. Совершенно верно меня понял. Только когда посчитал получилось 4.5 удара, т.е 8 по 5 ударов и 6 по 4. (1 удар - только запустил ром). Видюшка прилагается. - обновил
_________________ Электролыбка
|
|
15 ноя 2013, 18:32 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
Работает на железе просто прекрасно.
_________________ Nestopia 1.37/1.40 Fixed
|
|
15 ноя 2013, 19:13 |
|
|
У меня ещё есть версия с более замедленной анимацией, без двойного мигание экрана, но там изменено поведение чаек. Они летают по всему экрану и генерятся заново, если улетают далеко за его пределы... http://gfile.ru/a2dkL
|
|
15 ноя 2013, 19:44 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
И в чём принцип работы этого корруптора? Как я могу догадаться из названия, он рандомно портит ром, а пользователь пробует результаты, пока не понравятся? Судя по характеру глюков и тому, что, допустим, в предложенном роме зачем-то подменена даже нота в музыке, так и есть -- 15 ноя 2013, 18:58 -- EvGS писал(а): Работает на железе просто прекрасно. Отлично. Спасибо за тест. Фейдинг хоть заметен? Я его сделал максимально быстрым — не люблю медленные эффекты. Но в эмуляторе хорошо ощущается разница между обычным миганием и фейдингом.
|
|
15 ноя 2013, 20:32 |
|
Зарегистрирован: 23 июл 2007, 19:37 Сообщения: 401 Откуда: Мытищи
|
_________________ Nestopia 1.37/1.40 Fixed
|
|
16 ноя 2013, 03:20 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
|
|
16 ноя 2013, 06:40 |
|
Зарегистрирован: 04 янв 2011, 22:07 Сообщения: 29
|
красотища но чайки в темноте не темнеют в конце. чуть бросается в глаза. может переходы между видами попробовать сделать помедленнее чтоб более плавно было?
|
|
16 ноя 2013, 13:25 |
|
Зарегистрирован: 06 апр 2008, 13:46 Сообщения: 119
|
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 и т.д. — не ясно, что получается в итоге, в общем какая-то путаница или я чего-то не понимаю.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|