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

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


Сообщения - SegaMark

Страницы: [1] 2 3 Далее
1
1. в батнике, точнее для консольной команды надо указывать входной асм и выходной бин через запятую и без пробелов слитно. иначе рыгнет:
Странно у меня работает с пробелом и все прекрасно компилируется, вот например команда для компилирования Gunstar heroes, который я скидывал

asm68k /k /p /o ae- gh.asm, ghbuilt.bin >errors.txt, , gh.lst

если сам путь с пробелами, то по моему можно в кавычках:
НУЖНО в кавычках, это принцип подачи аргументов в консольные программы, потому что пробелом разделяются аргументы.

упомянутый EXG d4, d2 - он делает по нарастающей EXG d2, d4
Вот это кстати странно, насколько я понял инструкция EXG меняет значения без третей переменной, хотя как можно поменять без третей переменной для меня загадка, видимо в этом кроется главная причина почему опкоды разные.

сами эти IF ELSE в ром не попадают, но они решают какой участок внутри IF ELSE в ром попадет.
их называют предпроцессорные команды, это не обычные инструкции языка if else. Их испокон веков писали с начала строки, начиная еще с Fortran, так как там была fixed-form, то есть напишешь не сначала будет думать что это команда. Сейчас уже в некоторых языках можно не сначала строки, но привычка осталась

математика тут больная. надо операции проводить без пробелов:
Вот это боль для моих глаз :cry:

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

2
bgr, я почему то подумал ты говоришь про исходники Rambo.
во вложении чисто дизасмы, то есть на ассемблере. Я почти все из них проверил, думаю остальные точно рабочие. В архиве нету то что я на гитхабе нашел, иначе бы я не смог такой большой архив отправить, так что я это просто сюда ссылками кину.
https://github.com/RetailGameSourceCode/BatmanReturns
https://github.com/anatsvit/erathworm-jim-disasm
https://github.com/ShiningForceCentral/SF2DISASM
https://github.com/gsaurus/sor-disassemblies
https://github.com/sonicretro/s1disasm
не добавил исходники остальных соников. их можно найти у того же автора


Добавлено позже:
исходники скалолаза и гаргульев
это у меня в отдельной папке лежит, я назвал это Project_Package. Это насколько я понял официальные исходники, то есть их кто то из команды разработки скинул. Из тех которые ты не назвал есть еще EX-mutants. Добавил их

Есть еще исходники на SGDK и BEX. Могу их скинуть если надо

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

Добавлено позже:
ASM68K.exe это тот еще глюказоид
а есть список всех этих багов и глюков, интересно было бы почитать. Из того что я заметил он не работает с инструкцией link, хотя некоторые дизассемблеры ее добавляют

3
SeregaZ, Ты какой алгоритм дизассемблирования используешь, линейной развертки или рекурсивного спуска или и то и другое?
просто насколько я понял основная проблема это то что у тебя данные посреди кода находятся и ты их не можешь отличить. попробуй дизассемблировать по меткам, то есть если встречается переход то продолжаешь дизассемблировать с того места, а про старое забываешь

4
ибо прыжки будут не совсем полные
Поясни. Как они могут быть неполные?

5
И што она должна делать?
Изначально планировал взять какую-нибудь многоигровку с меню, выяснить где там располагаются все игры и дать простую возможность заменять их, просто перекидывая в окно программы свои РОМы.


Добавлено позже:
Думаю Talking_Sword примерно так же делал. Брал РОМ многоигровки, находил где располагаются игры, заменял байты этой игры на байты своей игры, возможно еще джампы правил, смотря какая игра. Я хочу автоматизировать этот процесс, чтоб не приходилось в hex-редакторе ковыряться. Возможно что-то еще туда добавлю.

6
Прошить ПЗ
через что его прошивать? программатор willem подойдет?

7
Вот переделал 10 in 1 на 8 in 1:
hang-on and monaco gp  -> rock n roll racing
shinobi and sonic -> dune
california -> tiny toon
:thumbup: Крутяк, я проверил все работает.
если не секрет расскажи как ты это сделал, мне бы это очень помогло в написании программы для создания многоигровок. Конкретно меня интересует:
Какие адреса у игр в многоигровке?
Пришлось ли для этого модифицировать игры которые добавлял?
Пробовал ли менять игры местами, то есть не в меню джампы изменить, а в самом РОМе поменять игры местами?

8
я тем временем подозреваю мне надо програмку запилить, которая бы два файла трассеров сранивала автоматически и выдавала только самую соль разницы. сейчас глазами слепнешь сидишь все это обсмотреть 
winmerge используй

Добавлено позже:
А смысла их дампить нет - это же обычное переключение игр через сброс.
Где про это узнал? я не нашел информации что они через reset переключались

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

9
что ты посоветовал - Rambo, так как она самая маленькая 256 килобайт
Columns еще меньше, всего 128кб. я не знаю существуют ли официальные игры еще меньше.

я извлек columns из Mega Games I (Europe) и сравнил с оригинальной columns REV1. самое яркое что бросается в глаза это то что в РОМе вырезаны куски, например вырезано все до 0x21E потом с 0x32C до 0x377 и тд, остальное пока не проверял.
Если кто-то может узнать скажите за что данные участки РОМа отвечают, очень интересно было бы узнать.

Columns в Mega Games находиться по адресу 0x80000-0x9FFFF. С концом не уверен так как там идет выравнивание и хрен знает где она на самом деле заканчивается

Добавлено позже:
там дизасм это не дизасм
Блин. он даже не смог нормально Columns дизасмнуть, хотя я не знаю какая игра может быть еще проще.

10
в идеале бы тупо иметь кнопку "сохранить асм файл"
А ты пробовал использовать Exodus?, там есть такая кнопка :D

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

Добавлено позже:
Напишите. Если вы выложите свои наработки в общий доступ, то это будет полезно для многих. Как я уже говорил, почему-то никто не хочет написать сборщик многоигровых ROM-ов для Mega Drive.
Хорошо, тогда в скором времени этим займусь.

Я нашел еще многоигровки которые можно проверить на работоспособность:
2 in 1 - Fantastic Dizzy & Cosmic Spacehead (Europe)
2 in 1 - Psycho Pinball & Micro Machines (Europe)
3 in 1 Flashback - World Championship Soccer - Tecmo World Cup 92 (pirate)

две первых я не нашел, возможно что их так никто и не сдампил. В третьей я не понял как переключать игры, скорей всего через reset, но я пробовал в BizHawk использовать soft reset и hard reset, ничего из этого не сработало

11
SeregaZ, Не совсем понял что ты пытаешься сделать.
Что за игру ты ковыряешь?
Где взял меню?
Какой эмулятор используешь?
Пробовал ли запустить на реальном железе?
Для чего ты 2 нопа в начало добавлял? типа добавил 2 нопа чтобы сдвинуть адрес начала, а потом в меню ссылку поменял или что то другое?

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

вы еще помучаетесь с самостоятельной сборкой многоигрового ROM-а, так как еще не написали сборщик многоигровых ROM-ов для Mega Drive, поэтому ROM придется собирать вручную, как это делал я.
если у нас все получиться то я сам могу такой сборщик написать, просто сейчас надобности такой нет.

Добавлено позже:
ты Rambo III (W) (REV 01) [!] попробуй в иде поковырять.
я к сожалению пока не разу такого не делал, даже не знаю что для этого нужно.

Добавлено позже:
а много ты дизасмов в сети знаешь? Можешь ещё поделиться?
Я находил где-то 13 штук, это не считая официальные исходники. Точно не помню где я их все находил, но большинство из них я скачал с Romhacking.net там раньше был тип disassembler, сейчас не могу что-то похожее найти. Если нужно могу скинуть

13
Я сравнил некоторые игры этих сборников и увидел, что различаются только адреса.
А как сравнивал? типа брал например Columns находил его в сборнике и сделал двоичное сравнение.
И как понял что отличаются адреса а не команды Ассемблера?

Добавлено позже:
Mega Games I, 2, 3, 6, 6 (Vol. 2, Vol. 3), 10, 6-Pak, Sega Top Five, Sonic Classics, Sega Sports 1, Classic Collection, The Disney Collection
Спасибо за полный список. The Disney Collection без The ищется

14
Соника делали 3 в 1:
https://www.emu-land.net/forum/index.php/topic,55005.0.html
Ух ты, это реально работает. Я записал картридж с этим РОМом и все три игры запустились. Я не успел подумать о таком сборнике а его уже сделали :thumbup:. Интересно как он этого добился o_0?

Ещё официальные сборники есть Mega Games 6 (Vol 1 - Vol 3), Mega Games 1,2,3  , Mega Games 10 in 1 :
Буду теперь все эти проверять.

Интересно будет еще проверить. Будет ли работать если заменить игру, которая лежит первая в памяти

15
ну поэксперементировать можно... какие есть самые галимые, то есть маленькие игры? и желательно простенькие.
можно сначала здесь посмотреть https://github.com/And-0/awesome-megadrive?tab=readme-ov-file#open-source-games
или если хочешь вручную дизассемблировать то самые известные это: Alien 3, Rambo 3, streets of rage, flicky, sunset riders..

16
Можно ещё попробовать тупо сместить все абсолютные адреса в ромах
вот я об этом как раз и подумал в первую очередь. типа написать такую программу которая за тебя будет искать что нужно сместить и на сколько.

Только если скомпилировать сборник из игр, которые кто-то дизасэмблировал или у которых есть исходники.
ну это я так понял будет работать НЕ с ассемблерными исходниками, а например с исходниками на SGDK или BEX.
Мне кажется нельзя создать например многоигровку из исходников первого и второго Соника просто дописав меню.

17
мне и надо в пределах 4 мб разместить игры

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

Я делал что-то подобное, у готового меню менял адреса jmp, но это не работает на реальном железе, запуститься только та игра которая вначале Рома стоит. Или я что-то не так понял. Можешь по подробней рассказать.

но это надо будет чтоб все эти четыре игры были одного региона.

причем здесь регион? у меня есть многоигровки где у игр может быть разный регион

18
Можно ли реализовать многоигровку на перезаписываемом картридже?

Интересует именно программный способ, без каких-либо аппаратных изменений.

Возможно, кто-то уже сталкивался с этой задачей и есть идеи или готовые решения.

Некоторые эмуляторы (например, BizHawk) корректно работают с самодельными «многоигровками»: можно взять образ такого картриджа и заменить одну из игр на свою — и это будет работать.

Однако на реальном картридже такой подход, насколько я понимаю, не работает. Вероятно, проблема связана с адресацией: каждая игра «ожидает», что она загружается с начала адресного пространства, тогда как в многоигровом ROM она находится по смещению.

При этом в оригинальных многоигровых картриджах, судя по всему, проблема решается на уровне железа — за счёт использования отдельных чипов или специальной логики (mapper), которая подменяет адресацию и «подставляет» нужную игру как будто она начинается с нуля.

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

19
В итоге удалось решить, но так как мне нужно было срочно, я придумал самый прямой способ. Возможно кому то это поможет. Я взял экспортировал sram в эмуляторе и объединил его с ромом после этого все заработало.

20
это картридж с sram.
похоже что да https://data.spludlow.co.uk/mame/software/megadriv/nhl98.
То есть получается если игре нужен sram, то она его размещает сразу после ROM?
А как тогда заголовок решил эту проблему, там типа сказано что нужно использовать sram и прописаны все его параметры?
И каким самым простым способом можно это починить чтобы заработало на карике?

Добавлено позже:
а контрольную сумму поправил перед записью?
Нет. Не подскажешь как проще всего это сделать, никогда не сталкивался с проблемами в контрольной сумме.

21
если данная область заполнена не полностью, SMD заполненную зеркалит по нескольку раз.
Спасибо за подсказку, да это действительно оказалось зеркалирование, но почему то данные берутся неправильные.

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


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


код не знаю для какого ассемблера
Для нашего родного Motorola M68K :lol:

да и под вопросом рабочий ли он мне его подсунул
выглядит рабочим

Я заметил еще одну особенность есть модификация данного РОМ где изменен только заголовок, и все работает как надо, данные берутся откуда положено, но только на эмуляторе Bizhawk и Exodus(на остальных не проверял), а мне нужно записать его на картридж и на реальном железе он почему то не работает, видимо ему плевать на заголовок. Как можно исправить эту проблему?

Слева ориг ром. Справа модифицированный
310060-0

22
Нужна помощь знатоков ассемблера, может кто нибудь сталкивался с таким или эта какая-то распространенная проблема. Вообщем вот такой код:

movem.l d0-d2/a0-a1, -(a7)
movea.l #$200000, a1
add.l d0, d0
subq.l #$1, d1
move.b $1(a1, d0.l), d2 ;d0=423e
move.b d2, (a0)+

проблема в том что размер РОМа у меня 2mb и получается что после этой строки move.b $1(a1, d0.l), d2 данные берутся за приделами РОМ. Как решить эту проблему чтобы он брал данные откуда нужно?

23
Посмотри Mega-lo-mania или the Humans на Sega

24
спасибо за наводки, буду пробовать.

25
Ромхакинг / Заказ хака за оплату
« : 20 Ноябрь 2025, 05:08:05 »
а что нужно было сделать то?
заменить на какую то уже из существующих анимаций или создать свою?
что за лизиновые ящики? вот эти что ли
302147-0

26
Я хотел создать свою простую игру для Dreamcast и потом поиграть в неё с помощью GDEMU. Но я не нашёл способа собрать cdi-образ диска на Windows. Везде в интернете говорится, как записать образ на диск, а не как создать его из файлов в папке. Мне нужно что-то вроде mkdcdisc для Linux.

Возможно ли вообще на Windows собрать корректный CDI-образ из набора файлов, и если да — какие инструменты сейчас реально рабочие? В закрепе папка с файлами, из которых я хочу получить итоговый образ.

28
Там вчера обновление программы вышло, в котором сказано, что поддерживается The Great Escape.
https://psx-core.ru/load/ps2_soft/ps2_iso_rebuilder/8-1-0-936.

29
Вообще тема проигрывания видео на Sega Mega Drive, достойна отдельной тему на форуме, так как там есть где развернуться. Я бы и сам сделал, но я еще мало информации нарыл. Возможно уже есть такая темя, но я так и не смог ее найти. Из самого интересного что мне удалось найти это пример из SGDK под названием bad-apple(https://github.com/Stephane-D/SGDK/tree/master/sample/demo/bad-apple). На скрине характеристики данного видео и рома, при чем как я понял оно 2 раза пожато, но все равно выходит за рамки обычного картриджа в 4мб.
300881-0

ну и так-же хотелось бы этот палетквант из коробки.
Если ты хочешь dll для pure basic(я так понимаю ты только на нем прогаешь), то наврятли тебе любая dll подойдет, скорей всего ее надо на том же pure basic писать, а на нем вряд ли кто-то будет делать, так как он сейчас не очень популярен.


Добавлено позже:
ничего не мешает. но размер рома тогда получится не меньше, чем у двд фильма гыгыгы.
А скорость воспроизведения такая же?

МК3 или еще какой игре сделано
Не думаю что это поможет, там довольно замудренно сделано и используется 3 алгоритма для более лучшего сжатия

правда я уже получается заставляю этого юзверя ffmpeg из интернетов найти и приложить к проекту... тоже не хорошо.
Насчет этого не парься, я много таких программ видел, так что так почти все делают. Ты можешь только ссылку дать чтоб не пришлось его самому искать и написать версию которую используешь, потому что там могут меняться аргументы в зависимости от версии.

да и у пользователей его может не быть. а задача как раз в том, чтобы максимально юзверю облегчить вход в тему. чтобы не заставлять его устанавливать писят програм, как с той-же Идой... а прям из коробки чтоб шлеп - и все работает! без танцев с бубнами.
Есть конверторы которые питон в exe переделывают, чтоб его не пришлось устанавливать. У тебя питон будет внутри ексешки лежать.


30
Я может пропустил, но почему нельзя сделать видео в полный размер окна 320х224?

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