| Разработка и ромхакинг > Ромхакинг и программирование |
| Какая прога может менять регион у 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) Вроде как. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |