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

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

Оффлайн Mad

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

Оффлайн FireFox Фан

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

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

Оффлайн Takamura-kun

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

Оффлайн Mr2

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

Оффлайн Takamura-kun

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

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5382
    • Просмотр профиля
[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

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

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1104
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
[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

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

Оффлайн SeregaZ

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

Оффлайн Takamura-kun

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

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

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

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

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5382
    • Просмотр профиля
[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

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

Оффлайн Alex KO

  • Пользователь
  • Сообщений: 31
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #373 : 10 Июль 2025, 10:03:20 »
Здравствуйте всем форумчанам.  У меня есть вопрос по поводу изменения текста в игре для NES  под названием "Spartan X2".
Ситуация следующая: захожу через эмулятор fceux для определения расположения букв в таблице в PPU Viewer
295361-0
Далее я захожу в программу tblater для записи этих символов в нужном порядке и сохраняю его в формате tbl.
295363-1
Далее я в том же fceux захожу в HEX editor  и загружаю таблицу tbl. И вот а чём загвоздка: когда я выбираю PPU Memory и ищу строку текста, то строка текста находится.
295365-2
А вот когда я выбираю Rom file, то нужная строка или слова не находятся.
295367-3
Итоговый вопрос: возможно ли определить и изменить сам текст в ром-файле для дальнейшей работы с ром-файлом или же там слишком сложные операции производятся?
Спасибо всем заранее за ответ на этот вопрос

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2664
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #374 : 10 Июль 2025, 11:05:53 »
полагаю надо искать не текст сам по себе, а номера тайлов.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5382
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #375 : 10 Июль 2025, 11:23:10 »
возможно ли определить и изменить сам текст в ром-файле для дальнейшей работы с ром-файлом или же там слишком сложные операции производятся?
Там не самое простое сжатие, поэтому нубы до сих пор не перевели на русский язык. Программа для работы со сжатыми данными давно есть https://www.romhacking.net/utilities/68/. Here's Johnny!
UPD: Если выполнить программу:
unpack.exe 1.nes 1.bin d310 300В 1.bin будет Jonny - CA E9 E8 E8 F3. Но я не разбирался, поэтому длина (300) неправильно указана и про смещение не уверен.
« Последнее редактирование: 10 Июль 2025, 11:43:57 от Sharpnull »

Оффлайн Alex KO

  • Пользователь
  • Сообщений: 31
  • Пол: Мужской
    • Просмотр профиля
[ALL] Вопросы новичков
« Ответ #376 : 10 Июль 2025, 12:01:03 »
Sharpnull, Благодарю за ответ.  Интересная программа в формате DOS.  Ладушки,  пойду "курить" инструкцию.  Если удастся,  то будет хак для самой короткой игрушки на денди. 
P.S. Забавно,  что на сайте написано,  что это программа уровня Beginner, т.е. начинающий.  Ну,  если получится разобраться, то по просьбе трудящихся могу перевести на русский язык данную игру,  как разберусь