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

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


Сообщения - GManiac

Страницы: [1] 2 3 4 5 ... 70 Далее
1
Разное / Хочу верить...
« : 13 Июнь 2025, 17:10:29 »
3:10 - что это за "чемодан"?
Бот вошёл в чат.

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

Wizzle - wham!
Это где? В играх на сеге слышу только Yuppy и Plasma.

2
щербаков5, а размер 160 ТБ nvme ты за цену HDD найдёшь?  :lol: HDD - это не про скорость.
https://www.youtube.com/watch?v=PcnWneULGAQ&t=861s

3
Dyons, спящие диски не крутятся, я про засыпание упоминал раньше.
щербаков5, не понял вопрос, но raid0 даёт предельную скорость N * speed на любой вид нагрузки, а raid5 - (N-1)*speed, но только на чтение. Т.е. 8 обычных дисков в raid5 (200 МБ/с) могут дать 7*200 = 1400 МБ/с линейного чтения.

Насчёт надёжности использования обычных дисков в raid не знаю, кстати. WD много лет назад выпускал специальную серию Raid Edition (RE), но м.б. это для промышленных нагрузок имелось в виду. Для домашнего использования, наверно, любые диски сойдут.

4
Надежность не потерять данные
https://ru.wikipedia.org/wiki/RAID#RAID_0

Про физику: все рейды заставляют все диски работать параллельно: крутиться и делать операции IO. Т.е. изнашивается не 1 диск, а все сразу.

5
Mad, raid0 снижает, потому что так заложено в его логику. Все 4 диска работают как одно целое, разные кусочки одного файла хранятся на разных дисках. В т.ч. и индексы файловой системы. Один диск умрёт - всё потеряется.

В raid5 - тоже как одно целое, но помимо данных хранится инфа для восстановления, поэтому избыточность, поэтому больше места нужно. Если один диск в raid5 умрёт, то без 4-го диска твой raid5 фактически превратится в raid0, пока ты не добавишь 4-й диск, и он не скачает на себя все нужные данные, и инфа для восстановления не пересчитается.

Ну, как-то, остатки места на дисках - жалко, а зарезервировать один диск в raid5 - не жалко?
Рейды, в целом, штука иногда очень капризная. Зависит от того, на чём рейд сделан. Но в домашнем сценарии вряд ли будут серьёзные проблемы.

И даже RAID5 не сказка. Но это самый простой вариант: поставил и забыл. В целом, меньше всего головной боли. Но место теряется.

JBOD гибкий, но может быть сложно в обслуживании.

Почитай про эти вещи и их недостатки хотя бы в вики, быстрее получишь инфу.
Продумай, как ты будешь это ставить, менеджить и как разруливать, если что-то сломается - это вообще золотое правило.

6
Mad, в любом варианте RAID все диски работают одновременно, т.е. крутятся. Если диски заснули, а потом ты обращаешься к диску за инфой, все диски проснутся.
Если ОСь ставить на диск 1, то ~500 ГБ будут именно на нём, остальное - на остальных 3. Это не "как один большой", а уже 2 раздела.
RAID0 ускоряет IO операции, но снижает надёжность. Нужна ли тебе большая скорость на HDD - сам решай.
Есть вариант JBOD, бывает аппаратный вариант. Каждый диск живёт своей жизнью, но все диски видны, как одна свалка. Стратегия записи бывает разная: последовательно заполняем диски с 1, либо пишем на наиболее сейчас свободный.
Можно программно сделать через MergerFS. Стратегию записи можно выбрать. Это надстройка, поэтому у тебя в системе будут видны одновременно 4 отдельных диска, а ещё будет виртуальный раздел - мап на все диски сразу. Но там тоже надо учитывать, что если есть одинаковые пути (папки) на разных дисках, то при сканировании такой папки через Merger будут задействоваться все диски с такой папкой.
Есть ещё UnionFS, но это, кажется, на уровне отдельных папок.

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

7
Разное / Ваши герои 20 лет спустя
« : 31 Март 2025, 00:27:37 »
NecRomantic, я всё-таки не это имел в виду. Даже приписал "если всё время ведёт себя, как 5-летний" (пока писал, твой пост появился). То, что у тебя остались эти хобби, - это внешняя сторона. Играешь в игры своего 5-летнего возраста - тоже. Взрослые кошки тоже любят поиграться, но всё равно их поведение сильно отличается от котят.
Я не про навязанные нормы социльного поведения или "образа правильного, сурового, серьёзного и т.д. взрослого". Ты сам меняешься, как бы ты ни хотел. И всё сложнее удивляться новому, "фанатеть", смотреть на мир открыто, держать хорошее настроение, фантазировать, быть творческим, сохранять гибкость ума и т.д., и т.п. Даже где-то слышал: "маленькие дети улыбаются и смеются в день 1000 раз, а старики - хорошо, если пару раз". Вряд ли всё из-за давления общества. Дурашливость у взрослого - это хорошо, но в порядке игры / договорённости, а не круглосуточной нормы. Реальная инфантильность у взрослого - это уже плохо, даже не для общества, а для него самого.
А машина, дача, поездка в отпуск, растянутая майка, пиво, футбол, филармония, балет, спорткар, "директор большой компании", "написал 10 эмуляторов", дырка в бетоне на 42-м этаже в Зажопино и т.д., и т.п., - это просто атрибутика, как ты сам сказал, "визуальная сторона". И даже хобби. Просто для разных людей важны разные вещи (или они считают, что важны именно они). Главное, что внутри. КАК ты ощущаешь себя. Можешь "сохранить в себе ребёнка" (имеется в виду не инфантильность, конечно) - хорошо.
Про эту тему было ещё в Маленьком Принце написано, но там больше не про фантазию и творчество, а про навязанные стандарты как раз.

8
Разное / Ваши герои 20 лет спустя
« : 30 Март 2025, 22:02:00 »
И именно это и интересно, какие именно перемены в нас происходят.
...Но если всё относительно гладко в жизни, что ж такое в нас происходит.
Что происходит, физиология! Сравните человека в возрасте 3, 6, 10, 16, 25, 36, 50 и т.д. лет, шкала условная. У животных так же, сравните котят разного возраста и взрослых кошек.
Всё гладко не бывает. Даже если гладко, а 40-летний человек всё время ведёт себя, как 5-летний, - это уже диагноз. :)

Я при виде заголовка темы подумал, что стоит вопрос "Кем ваши герои детства стали через 20 лет?". Тут, понятно, скорее про реальных людей, а не вымышленных персонажей. Ну, разные там Майклы Джексоны и Бритни Спирсы (это не герои, но кумиры).

9
Hard'n'Soft / Про линуксы и т. п.
« : 12 Март 2025, 16:09:08 »
Например, qbittorrent занимает где-то 12мб. flatpak-версия загружает около 600мб при первом использовании.
Вот что такого он там импортят на 600 МБ, а виндовый экзешник весит 36 МБ? Или программы в винде на самом деле тоже сильно нуждаются в зависимостях (вроде популярных когда  VC++ Redistributable, но он маленький вообще-то), но они сильно централизованы в самой винде и считается, что по умолчанию есть в любой винде? (С другой стороны, core пакеты тоже должны быть в любом линуксе).

А не сделали ли такие варианты (и если нет, то почему):
1. Возможность поставить несколько версий одного пакета, а зависимости у других пакетов прописываются как диапазон версий. Типа в системе стоит:
package1 0.9
package1 1.0
package1 2.2

Мы ставим пакет package2, в котором прописана зависимость
package1, version >= 1.0
Тогда будет браться последняя версия >= 1.0, т.е. 2.2.

2. На худой конец что-то вроде virtualenv, как в Питоне (как в других языках, не знаю):
в виртуальную среду ставим нужные версии нужных пакетов, все остальные подтягиваются из глобала.

10
Гидрой и МЕСЕН не пользовался.
DeepSeek щас попробовал, засунул в него тоже 1000 первых строк Landstalker, он пытается что-то комментить, но сильно избирательно.
Я давно не реверсю и не играю, изредка могу что-нить включить. А написал я сюда, потому что был впечатлён Аугментом, и решил заодно всё остальное высказать ("деда прорвало"). Пока что бесполезно пытаться скормить весь асм какой-то сетке: он не влезет из-за контекста, а инференса надо ждать очень долго, и доверия ему мало. Отдельные субрутины засовывать тоже мало смысла, т.к. без контекста их вызова и данных даже человек не сможет понять их смысл. Да даже если охватить весь код, без понимания данных, с которыми он работает, не получится его разобрать.
Можно использовать Аугмент в режиме "объясни мне вот этот код или перепиши на ЯВУ для лучшего понимания человеком", и он за счёт индекса сделает это лучше. (Я так немного поковырял модуль дизасма 68k в BizHawk, вполне сносно, но это человеческий код на C# всё-таки). А ты уже документируешь, в ИДЕ или ещё где. Делать это лучше прямо в дебаг сессии, естественно. Пример с Соником 1 я уже давал.
Т.к. интеграции Аугмента сейчас нету, можно попробовать сделать так:
1. Черновой анализ с отладчиком, ИДОй и моим анализатором / моим алгоритмом анализа, чтобы сразу увидеть весь код и можно было разбить проект на сегменты или файлы, по коду и данным. А не лепить один огромный .asm на 20 МБ.
2. Выгружаем проект ИДЫ во много раздельных файлов .asm и .bin
3. Открываем папку в Аугменте, выясняем нужные вопросы, комментим код сами или автоматом с ним.
4. Правим проект в ИДЕ и т.д. Либо придумать способ импортировать текстовик обратно в ИДУ. Тут м.б. надо плагин написать.
5. Повторяем с п. 2.

Буржуев подключите.

Если ты хочешь UMK3 разобрать, чё мелочиться, бери сразу аркаду :)

11
Выложу пока бинарники своего дизассемблера и анализатора, исходники попозже. (Дизасм уже был на форуме). Анализатор - версия для Landstalker, которая учитывает TRAP 0. НЕ-команды он заменяет байтами 0xFFFF, т.е. Invalid инструкцией. Анализатор выплёвывает бинарник с вырезанными данными, дальше делаем дизасм, а программа gaps выкидывает все Invalid. Тупо, но работает.
Батник с примером использования внтури. Аргумент батника - имя рома в кавычках. Писалось в 2008, поэтому просьба не придираться.

Помню, я разбирал так пачкой весь старый ромсет, чтобы найти самые жирные по коду игры. (Вырезал последовательности байтов FF, чтобы урезать файл). Были весьма неожиданные открытия. Если интересно, могу размеры скинуть. Самые жирные одиночные - это серия Fifa Soccer и Triple Play, Sonic & Knuckles, длинные РПГ, Contra, X-Men 2. И почему-то где в топе примитивный Punisher.
На 1061 ром - 120 МБ инструкций, или 30-40 млн строк. А затем я это всё сжимал в непрерывный архив, чтобы проверить, сколько кода переиспользуется. Например, думал так популярные распаковщики искать. Получился архив 41 МБ против 49 МБ (прерывный), но там не учитываются повторяющиеся игры (серия Mortal Kombat, Sonic, одинаковые игры в ромсете под разными названиями). Я убирал такие повторы, оставалось 875 игр и размеры архивов 7z: 32 / 35 МБ. Т.е. порядка 8% кода m68k таки переиспользуется, скорей всего, системного.
Ещё думал искать гомологичный код, т.е. такой, где операнды или адреса не учитываются. Например, последовательность
ADDI.W #16, D0
MOVE.L $40(A6), D1
BSR $20
в одной игре и такая же в другой могут быть частью одного и того же кода, но просто с немного разными операндами. Соответственно, операнды просто заменяешь на все нули или все единичные биты и получаешь "обезличенный код". Там тоже разную степень обезличивания можно использовать. Сжатие непрерывным архивом получалось сильнее, правда, выводы из этого тяжело делать, в таком "коде" не разберёшься.

Кстати, если кусок дизасма засунуть в Grok 3, он умеет относительно неплохо его комментить. Даже адреса шин и VDP знает. Другие не умеют.

Здесь
https://forums.nesdev.org/viewtopic.php?t=12330
говорят, что на Си были написаны Ecco, The Lion King and Sonic Spinball.
Не заметил в Sonic Spinball передачи параметров через стек, но отметил много PEA. И вспомнил, что Electronic Arts очень любила делать тормознутые игры с кучей LINK/UNLK. Ниже табличка с общим числом строк и команд PEA, LINK, UNLK в 16 играх. Можно сделать вывод.

Команды
grep _ -c *.asm2
grep PEA -c *.asm2
grep LINK -c *.asm2
grep UNLK -c *.asm2

Количество команд в дизасмах (скопировать в Excel)

Собственно, требовательные игры вроде Contra, Gunstar Heroes или Sonic & Knuckles, похоже, написаны на голом асме.
Fifa Soccer, Lion King, Rings of Power, X-Men 2, Sonic Spinball и м.б. какие-то Ecco, похоже, точно написаны на сях. У некоторых игр особенно много кода при относительной примитивности движка.
Dune - встречаются LINK и PEA местами, так что мог быть Си.
Immortal - тормознутая, но LINK-ов нету.
Punisher - странно, игра тупая, кода много, а LINK-ов нету. Upd: глянул глазами. Судя по обилию повторяющегося говнокода и неоптимальной адресации вроде RAM:$00FF824C вместо RAM:$824C она всё-таки написана на Си.
Zero Tolerance - там много повторяющеся кода для рендера текстур под разным углом.

В дизасме X-Men 2 150к строк кода :) На глаз почти все строки определны правильно. Вывод выше про язык Си объясняет, почему так много. Но там, где были слова memcpy и memset, что-то я не вижу похожего по смыслу кода.

Ладно, здесь обсуждение ИДЫ, буду закругляться  :D

12
MetalliC, сначала хотел спросить "а где деньги", но видимо, ты как раз имел в виду, что денег там нет. Желание, м.б., и есть, но всех денег не заработаешь все проекты не сделаешь.
Цитата
везде строгие calling conventions при вызове функций, прологи и эпилоги, локальные переменные на стеке - значит явно С-шный код был в оригинале.
Сишный оптимизатор (был) настолько плох, что не съедает/не съедал это всё? Насколько больше получается эквиалентный код, скомпилированный с C?

В дизасме Landstalker не вижу особо переменных через стек, вижу, наоборот, огромные таблицы прыжков и мешанину асмовых команд. Стандартная картина.
Строка "gap" - это всё то, что мой анализатор посчитал данными и пропустил. Можно увидеть много вызовов TRAP 0 и пропуск 2 байтов после неё.
Вот наткнулся, очень "сишно" :lol: Хотя если это считать как return bool, то сойдёт.
...
_001AE1EA: 003C 0001                ORI       #$0001,CCR
_001AE1EE: 4E75                     RTS       
_001AE1F0: 4A00                     TST.B     D0
_001AE1F2: 4E75                     RTS       


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

13
Это ведь явно признак того, что игра писалась на ассемблере? На Си такого не сделать же?
На чём писали Landstalker, я не знаю. Могли писать на Си + асм или inline асм. Или сишные макросы, не знаю, можно ли так делать.

Сжатый или даже просто динамический код я на Сеге не видел, но сильно не изучал этот вопрос. Зачем сжимать код, если РОМ достаточно большой, доля кода в роме обычно 10%, а оперативки как раз не очень много. А лишняя возни. Лучше данные сжимать.

Имхо, надо переходить на модульные и открытые решения, интерактивные языки, interoperability / межпроцессное взаимодействие, специализированные продукты под разные нужды вроде баз данных. Сегодня ПК достаточно мощные, тем более, интерактивные языки нужны только для отладки, а не всей эмуляции. Кстати, в Visual Studio есть интерактивный режим C#, но куцый, а ещё перекомпиляция методов на лету в отладочном режиме.
Условно, VS Code + node.js / Javascript / IPython + терминалы + QT/TK + база данных + переписанный эмулятор со всеми нужными хуками, ну либо уже специально написанный под это дело, но это долго (но может, ИИ сам перепишет с C++ на Питон? :) ) Хотя переделывать тоже сложно. Под каждую из старых консолей сегодня есть с десяток эмуляторов, в каждом по паре тысяч файлов и под 100-300 тысяч строк сишного кода, ковыряться в этом ну то ещё занятие. А так на данный момент мы имеем emulator-lock: в каждом эмуляторе авторы слепили свой отладчик, свои окна, свой функционал, вот пользуйся тем, что есть. И везде, блин, надо кликать мышкой. Никакой автоматизации. Хочешь что-то своё - ковыряй ИХ эмулятор в ИХ языке и доделывай ЕГО. Ну максимум плагин могут позволить написать. С ИХ интерфейсом.

VS Code я сам не люблю, но других альтернатив не знаю.
Javascript и Python медленные, у них свои приколы, но они гибкие. В Питоне есть разные костыли для быстрого кода.
Julia интерактивно компилируемая, но весьма деревянная и совсем не такая удобная и быстрая, как может показаться, и это вообще не типичный язык программирования. Это смесь из парадигм / научные расчёты / Fortran-стиль / математические символы / ещё хрен пойми что. Это язык не для программистов.
Mojo уже 3-й год как в разработке, куча "сахара" для низкого уровня, не такой гибкий, как Python. Но зато супер-быстрый. Можно из него вызывать Питон, а наоборот - нет, увы. Под винду не сделали. Собрать библиотеку нельзя. У авторов своё видение вектора развития.
Про Lua не скажу.
Для базы данных: SQlite / DuckDB / Clickhouse / NoSQL (графы для анализа, вектора для эмбеддингов) / wide-column (?)

IDA - это громоздкая закрытая программа, и по-моему изначально сделана для другого. Много лет назад читал интервью Ильфака, он сказал, что там 300 тысяч строк сишного кода. Сегодня ещё больше, наверно. Я не спорю, это м.б. мощный инструмент в умелых руках и для конкретных дел, но мне она не нравится. И доработки сложные. Посчитайте сами. Эта тема появилась 10 лет назад. Плагин gensida - 10 тысяч строк, внутри Генса вижу 2 файла ida* - ещё пара тысяч, ещё лоадеры - пара тысяч, и ещё я наверно что-то не учёл. Сколько времени уйдёт у человека, который не сишник, мало знаком с ИДОй, не знает досконально архитектуру приставки, не знаком с написанием плагинов для ИДЫ и исходниками Генса? Несколько месяцев упорного труда? Год? И всё это всего лишь, чтобы скрестить эти 2 программы.
Что в ней есть такого для отладки Сеговских игр? Прямой анализатор кода? Это 20 строчек на Питоне, если уже реализована функции is_valid_opcode и parse_opcode, а их можно взять в модульном дизассемблере / отладчике / эмуляторе. Анализатор от противного, что делал я? Ну, 50 строчек. Редактирование текста? Ну. Граф условных переходов внутри субрутины? Я всегда путаюсь, как понимать все эти BCC, BCS и т.д. Можно сделать простейший декомпилятор, которые перепишет всё на нормальные if, и граф не нужен. На худой конец ИИ это может сделать. Граф зависимостей всех субрутин? Когда их тысяча, это не работает, получается жуткая каша.
Сколько времени занял дизасм одного Соника? В начале 2000-х один чувак по несколько месяцев, что ли, тратил на каждую часть, что-то покомментил, потом коммьюнити допиливало. До сих пор допиливают. Результат: пара мегабайт исходник Соника 1, десятки тысяч строк кода на асме с комментами плюс куча вставок. Если хочешь сделать "масштабный мод", сиди в этом тоже ковыряйся.

Чтобы быстро делать "масштабные моды", надо уходить от концепции делать хак игры для нативной платформы. Я вижу такие варианты:
- переделывать всё в родном асме + м.б. вставки скомпилирванного Си, но целевая платформа - всё равно нативная. В нашем случае, Сега. Очень долго, сложно, нужен аккуратный дизасм и аккуратные вставки, чтобы не сломать фиксированные адреса, упираемся в ограничения железа, но можно запускать на железе / железном эмуляторе / обычном эмуляторе.
- рекомпилить всю игру на ЯВУ (язык высокого уровня) и моддить уже её. Очень много сложностей, сделать автоматически почти нереально на сегодня. Плюс в эту полученную программу надо по сути включить всё поведение эмулятора.
- гибрид ближе к нативному исполнению. Незатронутый машинный код выполняется нативно в эмуляторе, моднутый код выполняется в "расширенном режиме" на произвольном языке. Надо сильно переделывать эмуляторы.
- гибрид ближе к ЯВУ. Весь код выполняется на ЯВУ, но оригинальные ассемблерные инструкции эмулируются. Хочешь написать ЯВУ-шный код - пожалуйста. Гибридный код может выглядеть так
# эмуляция ассемблерной команды add.l (A0)+, D0
# здесь на входе, конечно же, не сама строка, а либо двоичные данные,
# либо уже распарсенные детали инструкции
run_asm( "add.l (A0)+, D0" )
# высокоуровневый код
unpacked_sprite = unzip( packed_sprite )

14
Насколько я помню, во Flicky я вырезал копирование в RAM, чтобы всё выполнялось из ROM и Code Logger залогировал ROM-адреса. И игра работала как прежде. Не припоминаю там динамический код.
Ты Augment посмотрел? Полезно?

15
Я видел тупо копирование несжатого кода в играх Flicky и Battletoads. А насколько быстрее? Ну уж в примитивном Flicky скопипастить целый банк кода в память для быстрого выполнения - это странно.
Где описаны тайминги физического доступа к памяти или рому и в каком эмуляторе это учитывается? (Я давно не слежу за темой, поэтому не знаю).

16
Есть вот такая штука
https://marketplace.visualstudio.com/items?itemName=augment.vscode-augment
Индексирует кодовую базу и даёт по ней мгновенные ответы. Естественно, в первую очередь он опирается на комментарии и имена функций, т.е. обфусцированный код он вряд ли понять сможет.
Я для примера загрузил дизасм Соника 1 с гитхаба, этот плагин мне с ходу предложил рассказать о разнице в ревизиях, структуре карт уровней и т.д.
Я его спросил, где лежит графика спрайтов, в т.ч. сжатых, он мне сразу назвал папки. Правда, написать распаковщик на Питоне не смог - получилась жуткая ерунда. Видимо, всё-таки надо подсовывать эмулятор CPU и тупо выполнять ассемблерный код распаковщика.
Потом спросил, как изменить высоту прыжка Соника, он мне сразу сказал, где высота прыжка "на земле" и "под водой" - это константы после строки locret_1348E в файле Sonic Jump. Это при чём, что эти параметры НЕ прокомментированы! Т.е. плагин сам догадался. Я поменял "высоту прыжка" и действительно, высота в игре изменилась.
Потом спросил, как сделать, чтобы при столкновении с врагами ничего не происходило. Он подсказал, что надо смотреть в React_Enemy и сделать прыжок на .donthurtsonic, но враги уничтожались. Я даже глазами в код дальше не посмотрел, там реально дальше написана проверка obColProp и уничтожение врага. По obColProp он и тут мне подсказал, что это здоровье врага. Сказал ему, что враги уничтожаются, а я хочу просто проходить сквозь них, он сказал просто сразу выходить из ветки React_Enemy - да, заработало.
Ну и так далее.

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

Ещё в 2008-м, когда я выкладывал на форумах свой дизасм (он работал очень быстро, в отличие от Никодимовского (кто-то ещё помнит его?)), сказали, что круто - это ИДА, и у неё есть анализатор кода, я тогда за недельку написал анализатор, который искал ВЕСЬ код, включая неиспользуемый. Поиск делался методом от противного: цепочка опкодов, которая НЕ приводит к явной ошибке, а например, заканчивается условным прыжком, потенциально может быть валидным кодом. Благо, в m68k очень много ограничений на валидные опкоды (включая требование к чётным адресам) и метод от противного хорошо работает. Я этот анализатор не публиковал нигде. Если надо, могу дать. Да хоть в сыром виде, лень щас причёсывать. Там была сложность в анализе субрутин, которые подменяют точку возврата после субрутина на стеке. Например, часто вызываемые TRAP в Landstalker. Там было так:
TRAP #$4
dc.w $xx
CODE
Т.е. сразу после TRAP идёт 2 байта данных, а выполняться будет CODE, потому что субрутина шаманит со стеком.

Реверс-инжиниринг должен быть комплексным и риалтайм, т.е. играем в игру и на автомате логируем всё в огромную базу данных:
  • логируем всю последовательность выполняющихся команд со значениями регистров и связанных адресов памяти. Так мы будем знать, откуда был переход на текущую инструкции и при каких условиях. Факт выполнения команды на адресе - это одно, а то, КАК мы на эту команду попали и с каким контекстом - совсем другое. С данными то же самое: смотря КАКОЙ КОД их читает. Если игра проверяет чексумму и сканирует весь ром, это же не значит теперь, что весь ром - это данные.
  • есть сложности с тем, что часто игры любят писать код в RAM и выполняться там, без всякого смысла
  • логируем сейвы каждую секунду для перемотки в любой кадр
  • ведём форки прохождения, как в системе контроля версий
  • т.к. лог будет быстро распухать, то надо автоматически определять сильно повторяющиеся блоки, такие, как ожидание шин, VDP и т.д.
  • как-то понимать, какой контекст реально даёт разницу для кода или вызываемой процедуры, а какой нет, чтобы база не распухала
  • можно как-то придумать, как определять, что это процедура распаковки чего-нибудь, где таблица адресов распаковываемых блоков (удобный пример - ВСЕ мелкие спрайты в Shining Force 2), ну и понимаем, что больше логировать эту процедуру не надо
  • логируем в базу видеопамять, взаимосвязи между суб-спрайтами (это в случае больших комбинированных спрайтов, как в Mortal Kombat), автоматически извлекаем спрайты. Учитываем, какой контент реально был показан на экране, а какой просто висел.
  • lineage данных - т.е. откуда что распаковывалось из рома и куда в видеопамять залилось и в какой спрайт попало
  • тайминги анимации
  • взаимосвязь звуков с действиями
  • пример анализа: редкие тайлы "уши Микки Мауса в уровнях Аладдина" в задниках
  • интегрировать эмулятор с IDE, хоть с тем же VS Code, и в ней интерактивную консоль Python / js / Julia / Mojo / что угодно, с полной интеграцией с эмулем и модулями (чипы, например), чтобы на ходу всё дело программировать. Подгрузил нужный модуль / плагин / чужую наработку для анализа
  • условный пример: хочешь узнать, где лежит в РОМе спрайт, тыкнул мышкой, нашёл в видеопамяти, отмотал кадры назад через сейв, нашёл, где данные лежали в RAM, ещё назад, нашли, откуда и как данные распаковывались, и всё это на автомате, конечно
  • Работу звукового движка, последовательность FM-"алгоритмов" - это если на низком уровне
  • Нормальные watch, в т.ч. вычисляемые и динамические
  • И не надо руками в Cheat Engine долго выискивать какой-нибудь там "адрес с жизнями" с неизвестной шкалой, или ещё хуже "суб-координаты героя"
  • и т.д. и т.п.

Знаю, слишком много вот этих "как-то". Но надеюсь, в не очень далёком будущем оно как-то само будет работать :) Правда, зачем это всё нужно.... :)

17
Разное / Плагиат музыки в играх
« : 05 Июль 2024, 18:57:17 »
Ок, недопоняли друг друга.
По теме вот, не знаю, бьло ли это в старой теме:
Fallout OST - what did Mark Morgan sample/borrow?

18
Разное / Плагиат музыки в играх
« : 05 Июль 2024, 15:53:14 »
Да трындец.
Составили один раз мнение об игре и о серии и не меняют его ни при каких условиях, словно жизненное кредо.
Кто какое составил мнение и о какой игре? Не надо читать чужие мысли. А тогда кое-кто любит сыпать ярлыками. Я вижу, что механика Darkwing Duck повторяет мегамена. (А ещё первые 6 мегаменов при их прохождении показались страшной однообразной нудятиной). Какой процент трудозатрат и самой игры составляет ЭТО и всё остальное? Не, зачем отвечать на этот вопрос, лучше сыпать ярлыком "клон" и всё.
Я вижу сильное сходство в приведённых примерах треков в Battletoads и Duran Duran / Foreigner и т.д., хотя не знал о них. Ну, плагиат. Там в игре ещё много чего другого.
Суть моего первого поста в чём: часто про повторение / заимствование говорят в контексте, мол, можно просто украсть / скопипастить кусок откуда-то и именно это принесёт тебе успех, ну или это есть основа продукта, халтурщик ты, в общем, на чужом горбу выезжаешь. Вон ВК повторил в чём-то Фейсбук, поэтому они (якобы) взлетели. Всё остальное игнорируется. Ну, если всё так просто, вы тоже копируйте.

19
Разное / Плагиат музыки в играх
« : 28 Июнь 2024, 12:29:57 »
YuzorG, какой там процент клоновости? Спрайты, персонажи, музыка, задники, боссы, сюжет? Диалоги, может быть? Титры?

20
Разное / Плагиат музыки в играх
« : 28 Июнь 2024, 12:19:01 »
Вопрос уровня "Группа Кино все крала у The Cure, кто еще крал?" или "Советские фильмы крали у западных" - то есть неуместный, неправильно сформулированный, глупый и напрасный.
А ещё Darkwing Duck на NES - это клон мегамена (пару сотен байт кода взяли, отвечающих за механику).
А мегамен 2, 3, 4, 5, 6, 7 и 8 - не, это не клоны мегамена, это уникальные игры.
А ещё вконтакте - это клон фейсбука (сделали похожий UI, а весь бекэнд, видимо, лично Цукербургер подарил Дурову, и он помогал ещё с раскруткой).
А ещё есть фишинговые сайты - точные клоны вконтакте. Почему они не такие популярные?
А ларёк с шаурмой за углом - это клон ларька с шаурмой за другим углом.
А ещё...
Обёртка обёрткой, а дьявол в другом месте.

21
Разное / Юмор
« : 07 Сентябрь 2023, 15:08:51 »


22
А вы эти "каверы" слушали вообще? Они, можно сказать, повторяют оригинал, и и там, и там сыграны на фортепиано, так легче заметить сходство. (Да, саундтрек к фильму и так на фортепиано, но там ещё скрипки).

23
Случайно набрёл на какое-то видео с котиком китайской домохозяйки и там играла мелодия на пианино, очень похожая на уже мне знакомую из игры, спасибо Шазаму, распознал (!).
Shining Force 2 - Elven Town
фильм Secret (2007), Jay Chou - Lu Xiao Yu


Игра

Кавер

Из фильма, 00:50

Каверы без скрипок, 00:56

24
Был ещё такой вариант, пояснения смотреть на обоих листах.
https://www.emu-land.net/forum/index.php/topic,42330.msg567560.html#msg567560

25
Разное / Юмор
« : 19 Май 2023, 14:24:03 »
blackoff, если консоль выключена, тогда откуда картинка? Шах и мат.
Правый ребёнок смотрит и играет в другую игру, которая слева от пикчи.
А почему только один ребёнок приёмный и как это определили? Это же актёры, там вся семья приёмная.

26
Бит не прям идеально совпадает, и он такой простой, что возможно, просто совпадение. Ди-джей из последнего трека вообще любитель тырить, и этот бит я ещё где-то слышал.


+
=
Видимо, ребята вдохновлялись подобными ужастиками :)


Есть что-то похожее.

27
Разное / Музыка из игр и ремиксы на них
« : 24 Декабрь 2022, 15:10:25 »
Вроде не выкладывали

Не совсем по игре

28
Разное / Юмор
« : 24 Декабрь 2022, 14:56:46 »
Много мата

29
Придумал такой вопрос:

Посмотрите на эту картинку.
На картинке ворота запечатаные четырьмя печатями, внимательно рассмотрите их.
Вопрос: Что олицетворяют/обозначают собой эти самые печати ?

...Добавлено позже:
Если интересно эта картинка из Severance: Blade of Darkness
Так всё-таки, что они означают? :)

И что за известное изображение на этом скрине? (Какая-то индийская богиня стоит на одной ноге, а другая нога отведена в сторону)

30
Ээээ, я не знал, что в Half Life есть музыка :)
Half-Life Music - Gonarch's Lair
Blade of darkness - ATMOSFERA30 (56:57)



Страницы: [1] 2 3 4 5 ... 70 Далее