Разработка и ромхакинг > Ромхакинг и программирование
Какая прога может менять регион у SEGA MD ромов
(1/2) > >>
sergi:
Какая прога может менять регион у SEGA MD ромов
А особенно интересует чтобы менять регион у SEGA 32X ромов
 
И вообще каким образом в роме реализована защита региональная
В каком метсте эти биты стоят и на что их поменять нужно чтобы регион больше не имел значения
 
Спасибо за содействие
evgeny:
Cравни в winhex`e (e) ром и (u).  И станет видно где это.
sergi:
А если там еще какие изменения есть - ну там язык и не дай бог графика или уровни?

Я на сколько знаю вот в Sonic 1 и 2 нет региональной защиты - пофигу в американскую или европейскую приставки совать
А вот уже Sonic 3 хрен засунешь нетуда да еще и мегакей не помогает
evgeny:
Маловероятно, чтобы изменилась графика и уровни. К тому же регион наверняка будет недалеко от начала файла, в отличии от ресурсов.
Лично я так находил очень быстро.
sergi:
Ну так и сказали бы где находили - адрес и как сделать так чтобы ром перестал быть регоонозависимым
Особенно актуально для 32Х мне - есть 1 игра например Darxie - она только для европы выходила - а мне нужно чтобы ему пофигу было
Кстати демка Экко не пашет на приставке - существует только для эмулятора короче
GManiac:
Для проверки региона надо прочитать байт $00A10001.
sergi:
Ну это байт в адресном пространстве SMD - это я знаю
А в роме это где?
GManiac:
Как это, в роме где? Байт региона выдаёт сама приставка. В роме есть код, который считывает этот байт и может предпринять разные действия в зависимости от его значения.
Вообще, не мешало бы попонятней писать, что тебе надо... Например, что значит "Какая прога может менять регион у SEGA MD ромов"?
...странный ты какой-то железячник ;)
sergi:
Я не вдавался в такие подробности еще - не могу всем заниматься одновременно - я не Sheeva

Мне как раз и нужно чтобы что не выдавала приставка - ром молчал громче
Пример - Sonic 1,2 ему без разницы какая приставка даже у рома подпись (UJE)
А особенно интересуют ромы 32X - в надежде что они имеют такую же защиту
GManiac:
Я тоже не Sheeva и понять, что значит "ром молчал громче", не могу.
Про организацию защиты я уже сказал: есть код, который проверяет регион приставки. "Защита" очень простая и легко взламывается. Обычно после чтения байта он AND'ится с некоторым значением для выделения битов, а потом сравнивается с нулём. Обычные такие проверки можно даже в хекс-редакторе найти, если знаешь хекс-коды команд. В любом случае есть дизассемблер.
Например, берём Sonic The Hedgehog 3 (U) [!].bin:

--- Код: ---0000030C 1039 00A10001            MOVE.B    $00A10001,D0
00000312 EC08                     LSR.B     #6,D0
00000314 0200 0003                AND.B     #$03,D0
00000318 41FA 0126                LEA       $00000440(pc),A0
0000031C 1030 0000                MOVE.B    $00(A0,D0.W),D0
00000320 4A00                     TST.B     D0
00000322 6700 00E4                BEQ       $00000408(pc)
00000326 41F9 000001F0            LEA       $000001F0,A0
0000032C 323C 000F                MOVE.W    #$000F,D1
00000330 B010                     CMP.B     (A0),D0
00000332 6700 0366                BEQ       $0000069A(pc)
00000336 5288                     ADDQ.L    #$1,A0
00000338 51C9 FFF6                DBRA      D1,$00000330
0000033C 49F9 00C00000            LEA       $00C00000,A4
00000342 4BF9 00C00004            LEA       $00C00004,A5
--- Конец кода ---

Первые строки - чтение байта региона и извлечение соответствующей ему буквы (название региона) из массива $000440. Там записано J #00 U E. Если извлекается байт #00 (этому будет соответствовать регион Japan (PAL)), игра перескакивает на адрес $000408 (строка 000322) и зависает. В противном случае извлечённая буква ищется в заголовке в адресах $0001F0-$0001FF (строки 000326-00032C). Если она там есть, игра запустится нормально (прыжок на 00069A). Иначе попадём на строку 00033C - там видня инициализация VDP для вывода надписи. В английской версии соника в заголовке прописана одна буква U. Я так понял, авторы написали универсальный код проверки, а в заголовке достаточно просто вписать буквы допустимых регионы.
Есть два пути взлома: добавить в заголовок коды J и E или поменять код: заменить команду BEQ (6700) в строке 000332 на BRA (6000). Чтобы добавить Japan (PAL), можно 6700 00E4 в строке 000322 заменить на 4E71 4E71 или сразу прыгнуть на нужный адрес - 6000 0376 (прыжок на 00069A).
Так понятно?
Rumata:
Попытаюсь объяснить :)
Как я понял, проблема в том, что если записать РОМ во флеш картридж, а потом воткнуть в консоль, то может оказаться, что регион не тот. Вот и возникает желание модифицировать ром.
Впрочем, GManiac, спасибо тебе большое, всё уже расписал. Вопрос в догонку: не может быть такого, что код критичен к региону в плане 50/60 Гц? Там синхронизация видео и всё такое? Собственно, в играх под световое оружие так и есть, а в других?
GManiac:
Вот как раз насчёт 50/60 и NTSC/PAL я не совсем пойму. Ну, возможно, сказывается, неполное знание устройства телевизора и телевещания ;)
Rumata, может, ты разъяснишь?
Как соотносятся между собой: частота напряжения в сети (у нас 50 Гц), регион приставки (у меня написано Made in Japan, хотя я играл на ней в Blood Shot, а если верить эмуляторам и рому Blood Shot (UE) [!], на японской приставке она вообще не идёт, а тайтл Blood Shot с выбором языка возможен только для Europe (PAL)), разрешение экрана телевизора, размер экрана (например, 320х224, и каким образом изображение всё равно растягивается на ВЕСЬ экран, т.е. как согласуются между собой сигналы видеовыхода и движение луча телевизора), цветовые схемы (в современных теликах можно выбрать схему, этот момент уже не важен) и как согласуются частоты формирования кадров у видеопроцессора и телевизора (в случае 25 Гц телевещания и телика на 50 Гц понятно - чересстрочное изображение, а как быть с NTSC 60 Гц приставкой и тем же теликом? Или NTSC-приставки у нас всё равно работают на частоте 50 Гц?)?
Ещё что такое TV mode (D/K, B/G, etc.)?
И касательно строк есть вопросы: в сформированной строке, насколько я помню (где-то было написано) больше пикселей (т.е. больше, чем 320 или 256), чем видно на экране, а оставшаяся часть несёт какую-то информацию. Отчего так происходит?
Ещё как соотносится строчное прерывание с частотой 15625 Гц с кадровым 50/60 Гц (т.е. 312 и 262 строки) и разрешением 240 или 224 по вертикали. Что происходит с оставшимися строками?
Возможно, я написал глупость :? , особо не серчайте ;)

Бывает, что игра использует по горизонтали оба режима, например, в MK3 большинство экранов - 320х224, а логотип Williams и экран Vs - 256х224.
А Side Pocket (E) вообще использует 320х240 (так Gens показывает). Если верить sega2.doc, такая комбинация запрещена.
Насчёт критичности: HardWareMan описывал артефакт в Red Zone в зависимости от частоты, а ничего другого я пока не припомню.
sergi:
Что вы про артефакты пишите
Как китаезы умудряются пиратку делать и она то как раз ей пофигу в какую приставку ее втыкают - крутит как миленькая
И Red Zone и Соников и все остально - даже без притензий и всеравно какая частота - отсуда вывод - дело не в приставке а в роме
Т.е. в коде программы - поэтому нужно сломать

Я спрашиваю может ктото уже сломал - есть такая прога
Пример: на SNES есть SNESTool которая ломает все защиты и по частоте и по локауту и по скорости чтения рома
GManiac:
Ты или не въезжаешь или вообще не читаешь, что тут пишут.
Rumata:
Ууу, ну и вопрос... Нет, всё понятно, но так сразу ответить... Попробую.
Частота сети, как таковая, не при чем. Но она соответстует частоте кадров, дабы не было мерцания (точнее, наооборот: кадровые частоты выбраны согласно частоте сети). Регион - понятие коммерческое, в большинстве случаев он введен для предотвраещения реэкспорта. Хотя иногда он привязан к выбору языка, ну, и как я говорил, это важно для световых пистолетов. Разрешение ТВ стандартно, 320х240 или 320х244. Это как раз PAL / NTSC, разное число строк. Цветовые схемы нафиг, это просто пресеты телевизора. Черезстрочность всюду одинакова: 50 - 25, 60 - 30. D/K, B/G не бери в голову, это относится к форматам эфирного вещания, по НЧ этого нет. В строке ряд пикселей, так же, как и ряд строк в кадре, отвдятся на "реперную линию". При настройке ТВ они выводятся за видимую часть экрана. Дело в том, что изначально экран не был четко прямоугольным, и картинка делалась чуть большей. Служебная информация (если есть) передается как раз в скрытых строках. Частота строчного прерывания разная в PAL и NTSC. Режимы с разным количеством строк зависят от региона. К примеру, игры от Кодемастерс писаны чисто в PAL, и в NTSC часть картинки пропадает.
Я как-то эксперементировал с приставкой, выставляя отдельно режимы VDP и значения в $A10000. В каком-то случае (пардон, не помню за давностью лет) в Bare Knuckle (опять же, не помню, в каком) начинались сбои синхронизации.

--- Цитата: GManiac ---Возможно, я написал глупость  , особо не серчайте ;)
--- Конец цитаты ---

Все бы писали такие "глупости"
GManiac:
Так, если частота кадров не зависит от частоты питания (это определяется внутренним устройством приставки, подробности которого я не знаю), то NTSC-приставка будет выдавать 60 Гц для телика с регенерацией, предположим, 50 Гц. В итоге получается проблема, как с монитором и VSync, когда какие-то кадры держатся дольше других (50 Гц PAL на 120 Гц монитора - по 2/по 3 кадра монитора на кадр игры), а в случае с теликом некоторые вообще пропадут, так? Я сеть просто для этого привёл...


--- Цитата ---Разрешение ТВ стандартно, 320х240 или 320х244. Это как раз PAL / NTSC, разное число строк.
--- Конец цитаты ---

Но картинка 256х224 вроде бы растягивается на весь экран. А в аналоговом телевещании или 625х... или 525х..., как так получается?
...хотя всё понятно, если взять аналогию с комповской видеокартой и монитором и их режимами, я почему-то не подумал об этом.


--- Цитата ---Частота строчного прерывания разная в PAL и NTSC. Режимы с разным количеством строк зависят от региона. К примеру, игры от Кодемастерс писаны чисто в PAL, и в NTSC часть картинки пропадает.
--- Конец цитаты ---

Можно поподробнее? Какие именно частоты? Если взять 15625 и разделить на 50, получается 312,5 (что и показывает Gens). В случае 262 и 60 частота должна быть чуть больше... Относительно Кодемастерс имеются в виду 240 ПАЛовских строк, часть которых не будет видна в режиме 224?


--- Цитата ---писаны чисто в PAL, и в NTSC часть картинки
--- Конец цитаты ---

В каком именно месте должен быть NTSC, ведь VDP приставки поддерживает оба стандарта?
evgeny:
Действительно оказалось легко найти место проверки региона, просто даже вбив в поиск в winhex 00A10001.
В Darxide этот BEQ по адрсу 966. Поменял 6700 на 6000, поправил контрольную сумму и запускается в любом регионе.
Bugrim:

--- Цитата: Rumata от 20 Сентябрь 2007, 23:31:48 ---Попытаюсь объяснить :)
Как я понял, проблема в том, что если записать РОМ во флеш картридж, а потом воткнуть в консоль, то может оказаться, что регион не тот. Вот и возникает желание модифицировать ром.

--- Конец цитаты ---
Вот очень точно описанно желание мое, скачав программу gensuite и поменяв в бугермене регион с U на Е приставка его запустила, но в контре такого фокуса не получается провернуть. Возможно, за такой срок, что то изменилось, скажите как нынче выкручиваются?
GManiac:
В общем случае регион надо менять самому - искать код проверки региона и переправлять.
Berstain:

--- Цитата: sergi ---у SEGA 32X ромов
 
--- Конец цитаты ---

Ну дак большинство 32х ромов с пометкой (W)  Вроде как.
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии