Автор Тема: [ALL] Вопросы новичков  (Прочитано 26563 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mad

  • Пользователь
  • Сообщений: 8814
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #360 : 15 Март 2025, 23:23:55 »
perfect_genius,

Оффлайн FireFox Фан

  • Пользователь
  • Сообщений: 1620
  • Пол: Мужской
  • Огнелис
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #361 : 16 Март 2025, 14:23:50 »
Т.е. тебе нужны картинки кнопок?
Да, именно. А в случае с Dolphin Emulator ещё и отсортировать на Wii Remote+ нунчак, Classic контроллер и GameCube контроллер.

perfect_genius, на Английский манер с большой буквы. )

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1107
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #362 : 09 Апрель 2025, 14:10:39 »
Разреверсил я, в общем, пиратский порт Mortal Kombat Mythologies: Sub-Zero для сежки. Код почти полностью движимый. Остался последний штрих: есть одна область в роме, которая никак не хочет дебажиться. Ставлю бряки на чтение/выполнение (даже на запись уже поставил от безысходности :lol: ) - никакой реакции. Как будто неиспользуемая область в роме. Однако когда эту область двигаешь - звук в игре начинает артефачить. Подумал было, что это зарезервированная область для Z80, но в других играх, причём даже от той же конторы, та же самая область в роме занята совершенно другими данными. Учитывая, что все игры этой конторы написаны на +/- одном движке. Даже музыку из одной игры в другую можно безболезненно переносить. В общем, если кто разбирается в вопросе, тыкните мордой :D

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1653
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #363 : 09 Апрель 2025, 14:44:21 »
Разреверсил я, в общем, пиратский порт Mortal Kombat Mythologies: Sub-Zero для сежки.
Зачем? 0_0

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1107
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #364 : 09 Апрель 2025, 15:01:26 »
Mr2, да есть что-то в этой китайской шиниме прикольное :lol:
Там столько несовершенств, что захотелось хацк сделать с исправлениями. Начал с добавления 6-кнопочного режима, (ещё инъекциями), потом понял, что это всё быстро превратится в кашу и лучше сначала получить дизасм :lol:
Так и разобрал ром.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5294
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #365 : 09 Апрель 2025, 15:57:49 »
Mortal Kombat Mythologies: Sub-Zero
Да, с E0000 в роме идёт звук, можно даже услышать что-то отдалённое в аудиоредакторе. В плохих отладчиках breakpoint не сработает. В MAME можно отловить, запустить:
mame.exe genesis -cart MK5.gen -debug -prescale 3В Debug окно ввести и нажать Enter (об этом https://docs.mamedev.org/debugger/watchpoint.html):
wp e0000,10000,rПосле нажатия Start будет остановка reading 7F from 0E2860. В окне Zilog Z80 :genesis_snd_z80 не очень понятно где происходит чтение. В эмуляторе типа Gens r57shell в окне z80 Debug поставить breakpoint PC 120, это после инструкции ld a,(de), когда читается 7F, то регистр AF=xx7F, несколько срабатываний и по значениям байтов можно понять где в роме читается. Вам конечно нужно разобрать код, чтобы понять как задаются адреса на аудио.

Оффлайн bgr

  • Пользователь
  • Сообщений: 581
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #366 : 09 Апрель 2025, 16:09:43 »
Takamura-kun, ты разобрался, где в роме находится код защиты от копирования и его фикс?

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1107
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #367 : 09 Апрель 2025, 21:35:20 »
можно даже услышать что-то отдалённое в аудиоредакторе
А, так это сэмплы, а не код Z80! А я их дебажить пытаюсь :lol: Действительно, загрузил участок рома в audacity - оказалось, звуки. Запись воплей и музыкальных инструментов. Оглядываясь назад - такое у меня уже было с MK1. Тоже сэмплы, тоже при смещении звук сыпался. И тоже ни в какую не мог найти на них указатели. Адрес сэмплов, при этом, был другой. Но тогда я даже не думал, что дело может быть в Z80. Просто это для меня была некая данность, что вот, сэмплы для музыки должны быть только там и нигде больше, потому что какя-то невиданная сила указывает игре именно на это место. :D Спасибо за инструкцию к MAME - никогда через него не дебажил, буду пробовать.

ты разобрался, где в роме находится код защиты от копирования и его фикс?
Не совсем понимаю о чём речь. Оригинал рома спокойно запускается с флеш картриджа, защиты от модификации рома там также нет. ...есть, правда, один момент интересный: там, при запуске игры, в оперативную память забивается кусок кода, который в роме лежит в открытом виде, после чего выполняется из оперативки. Бессмыслица какая-то... Если это защита, то код можно поменять в роме и уже он, в модифицированном виде, загрузится в оперативку, либо же и вовсе переписать так, чтобы код выполнился сразу из РОМ памяти, что ещё проще. Причём повторюсь - защиты в роме никакой нет, можно спокойно запускать игру с флеш картриджа и модифицировать.

Вообще, если говорить о странностях, в коде игры очень много лишних "телодвижений". Почистить игру и она будет весить не 2 мегабайта, как в оригинале, а 1 :lol:
« Последнее редактирование: 09 Апрель 2025, 21:51:11 от Takamura-kun »

Оффлайн bgr

  • Пользователь
  • Сообщений: 581
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #368 : 10 Апрель 2025, 06:03:16 »
Takamura-kun, я тебе не скажу точно, ибо даже не сравнивал дампы, просто знаю, что были картриджи с защитой, а уже после пираты сами спиратили и пофиксили её.
Есть ли оригинальный дамп в сети - не знаю, но точно могу сказать, что оригинальный дамп как раз и не запускается. Игра дальше чёрного экрана и не идёт.
Также ром работает в двух режимах, 50/60hz, зависит от региона. В режиме pal играется более плавно и комфортно, хоть и тормознуто. При переводе на русский язык даже специально привязку сделали.
Также в игре наверняка должно быть много лишней графики, семплов и готовых треков, которые не используется.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2625
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #369 : 10 Апрель 2025, 08:37:15 »
само критично в плане пал не пал - звук. а именно такие звуки, где два сэмпла идут друг за другом. дело в паузах между запусками сэмплов. в пале медленно - пауза должна быть больше между сэмплами. в нтсц, если это не учесть, то фразы будут жрать друг друга. конечно еще зависит от драйвера и организации сэмплов. если как в ZT - шотган, коллектед - два разных сэмпла. то в нтсц может быть так что шотг... коллектед. конец первого сэмпла может съедать вторым сэмплом.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1107
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #370 : 11 Апрель 2025, 01:05:26 »
Также в игре наверняка должно быть много лишней графики, семплов и готовых треков, которые не используется.
Насчёт музыки - точно нет. Причём даже без указателей, самих нот в игре неиспользуемых нет... Во всяком случае, в оригинале. Я уже напихал туда нот из Мулан и Покемона 2 :lol: Для прикола, могу скинуть - подсвечиваешь опции и нажимаешь А. Так можно прослушать всю музыку игры + то, что было скопипащено. Чего в оригинальном роме реально много - так это лишнего кода, лишь часть которого не используется, остальное - шаблонные вставки кода, которые делают тонну лишней работы)

оригинальный дамп как раз и не запускается. Игра дальше чёрного экрана и не идёт.
...блин, кусок китайского шлака, который сам по себе нарушает авторские права, а туда же! :lol:

Вообще, нужно доразобрать уже ром, чтобы полусырые дизасмы в сети не плодить. И, как завещал великий классик, выложить. Иначе как с МК1 будет - дважды разобрал и дважды про...кхм... потерял)
Всё, что мне сейчас мешает это сделать - полнейшее незнание z80. Я его потыкал, подебажил, ничего не понял и закрыл :lol: Пока обойдусь костылём, поставлю на этот участок org $E0000.

SeregaZ, ты вроде шаришь в звуке, насколько сложно будет сделать эти сэмплы подвижными?)
« Последнее редактирование: 11 Апрель 2025, 02:41:57 от Takamura-kun »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5294
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #371 : 11 Апрель 2025, 02:26:41 »
Я его потыкал, подебажил, ничего не понял и закрыл
Адреса на аудио с D5B8D по 8 байт: 2 байта LE - младшая часть адреса в роме (15 бит), нужно вычесть 0x8000, 2 байта LE - размер в байтах, 1 байт - 15-й бит адреса, 1 байт - старшие 8 бит адреса, 1 байт - задержка, 1 байт - 00. Т. е. для 60 A8 F4 0D 00 0E 1C 00 будет (0xA860 - 0x8000) | (0x00 << 15) | (0x0E << 16) == адрес в роме 0xE2860, размер 0xDF4, для 00 80 20 05 01 0F 01 00 = (0x8000 - 0x8000) | (0x01 << 15) | (0x0F << 16) == адрес в роме 0xF8000, размер 0x520.
UPD: У Z80 банки по 0x8000, поэтому в коде нужно будет сделать выравнивание 0x8000 (align или типа того), а для экономии места написать скрипт, который расфасует аудио по банкам и сгенерирует ассемблерный код.
UPD2: Нужен не обычное выравнивание в ассемблере, переход на следующий банк, когда текущий кусок не влезает. Проще написать скрипт для этого.
Размеры кусков аудио не совпадают с началом и концом, почему-то 0x20 байт между ними.
« Последнее редактирование: 11 Апрель 2025, 12:25:03 от Sharpnull »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1107
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #372 : 11 Апрель 2025, 02:55:16 »
Sharpnull, благодарю за развёрнутое объяснение, завтра на свежую голову попробую переварить)
Эта заноза в виде недвижимых сэмплов не даёт мне покоя с давних пор, пора бы уже сдвинуться в этом плане с мёртвой точки :lol: