Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Регионы - tvстандарты
Автор Сообщение
SunDragon Не на форуме
Продвинутый
***

Сообщений: 469
Зарегистрирован: 29.01.2005
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 5 раз(а) в 5 сообщ.
Сообщение: #15
Регионы - tvстандарты
Наверное повторюсь, но немного опишу...;)

1) Регион конечно же прописан на флэшке
структура флэшки примерно такая
Код:
size hex
00000 |- 10000 - write
0FFFF |

10000 |- 8000  - write  - Game setting (Play history)
17FFF |

18000 |- 2000  - write
19FFF |

1A000 |- 2000  - Factory settings
1BFFF |

1C000 |- 4000  - write - ISP
1FFFF |

подробнее см. код из KOS
файл flashrom.c и flashrom.h

В зависимости от региона дрим имеет три вида настроек
Код:
--- EUROPE ---
0  0  2  1  1  (char)
30 30 32 31 31 (hex)
  |  |  |
  |  |  |
  |  | Broadcast type = PAL
  |  |
  | Language  = ENGLISH (по умолчанию)
  |
Country code = EUROPE

--- AMERICA ---
0  0  1  1  0   (char)
30 30 31 31 30  (hex)
  |  |  |
  |  |  |
  |  | Broadcast type  = NTSC
  |  |
  | Language   = ENGLISH (по умолчанию)
  |
Country code  = AMERICA

---- JAPAN ---
0  0  0  0  0  (char)
30 30 30 30 30 (hex)
  |  |  |
  |  |  |
  |  | Broadcast type = NTSC
  |  |
  | Language  = JAPANESE (по умолчанию)
  |
Country code = JAPAN

Region Changer как раз их и меняет (на примере NTSC-US консоли)
(еще на скрине, написал расположение уникального ID кода консоли)
scr1.gif

плюс как то заметил особенность Дримов которые сделаны для Индии, на флэшке этих дримов, в определенной ячейке (адрес 0x1A00F) должно быть значение 0x30.
Специальный "индийский" браузер проверяет наличие этого значения, и если его нет, то он не запускается... но это не относится к теме вопроса;)
scr India.gif

2) На всех официальных играх принадлежность к региону описано исключительно в IP.BIN
да и чисто технически проверка происходит именно в IP.BIN
Как дрим включается, и запускается диск, биос читает первые 16 секторов второй сессии, т.е. IP.BIN
Не будем описывать все подробности проверок, но скажем, что биос сразу же сравнивает значение региона, с тем что в ip.bin и что на флэшке, и если они совпадают, то процесс загрузки идет дальше.

Структура IP.BIN см. на сайте Маркуса

Так что регион игры (с оригинальным ip.bin) легко определяется по значению региона "Area Symbols" и "Product number".
но если ip.bin не оригинальный, то регион придется определять по косвенным параметрам (структуры файлов на диске, наличии варезных меток и пр.)

3) Меняешь Region Changer-ом на нужную тебе систему цвета и нет проблем:)

4) Не пойму, о чём ты спрашиваешь?

В основном меняют результат проверки на broadcast
Но бывают и другие проверки...

Вот припер как изменить результат проверки на broadcast, чтобы игра шла в режиме PAL 60Гц

Sonic Shuffle 60 Hz Fix
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
ROM:8C015050 ; ---------------------------------------------------------------------------
ROM:8C015050
ROM:8C015050 loc_8C015050: ; CODE XREF: sub_8C014FDC+30j
ROM:8C015050 ; sub_8C014FDC+3Aj ...
ROM:8C015050 mov #0, r4
ROM:8C015052 mov.l @(h'B0,pc), r3 ; [8C015104] = sub_8C033344
ROM:8C015054 jsr @r3 ; sub_8C033344
ROM:8C015056 nop
ROM:8C015058 mov.l @(h'AC,pc), r2 ; [8C015108] = sub_8C03336C
ROM:8C01505A jsr @r2 ; sub_8C03336C
ROM:8C01505C nop
ROM:8C01505E mov.l r0, @(4,r15)
ROM:8C015060 mov.b @(h'C,r0), r0 -->&gt; зам. на mov h'30,r0
ROM:8C015062 mov.l r0, @r15
ROM:8C015064 mov.l @r15, r0
ROM:8C015066 cmp/eq #h'31, r0
ROM:8C015068 bt loc_8C01507A
ROM:8C01506A cmp/eq #h'32, r0
ROM:8C01506C bt loc_8C015084
ROM:8C01506E cmp/eq #h'33, r0
ROM:8C015070 bt loc_8C01508E
ROM:8C015072 cmp/eq #h'30, r0
ROM:8C015074 bt loc_8C015098
ROM:8C015076 bra loc_8C0150A2
ROM:8C015078 nop
ROM:8C01507A ; ---------------------------------------------------------------------------
ROM:8C01507A
ROM:8C01507A loc_8C01507A: ; CODE XREF: sub_8C014FDC+8Cj
ROM:8C01507A mov #1, r3
ROM:8C01507C mov.l @(h'8C,pc), r2 ; [8C01510C] = unk_8C0F5550
ROM:8C01507E mov.l r3, @r2
ROM:8C015080 bra loc_8C0150AC
ROM:8C015082 nop
ROM:8C015084 ; ---------------------------------------------------------------------------
ROM:8C015084
ROM:8C015084 loc_8C015084: ; CODE XREF: sub_8C014FDC+90j
ROM:8C015084 mov #2, r0
ROM:8C015086 mov.l @(h'84,pc), r1 ; [8C01510C] = unk_8C0F5550
ROM:8C015088 mov.l r0, @r1
ROM:8C01508A bra loc_8C0150AC
ROM:8C01508C nop
ROM:8C01508E ; ---------------------------------------------------------------------------
ROM:8C01508E
ROM:8C01508E loc_8C01508E: ; CODE XREF: sub_8C014FDC+94j
ROM:8C01508E mov #3, r2
ROM:8C015090 mov.l @(h'78,pc), r3 ; [8C01510C] = unk_8C0F5550
ROM:8C015092 mov.l r2, @r3
ROM:8C015094 bra loc_8C0150AC
ROM:8C015096 nop
ROM:8C015098 ; ---------------------------------------------------------------------------
ROM:8C015098
ROM:8C015098 loc_8C015098: ; CODE XREF: sub_8C014FDC+98j
ROM:8C015098 mov #0, r0
ROM:8C01509A mov.l @(h'70,pc), r1 ; [8C01510C] = unk_8C0F5550
ROM:8C01509C mov.l r0, @r1
ROM:8C01509E bra loc_8C0150AC
ROM:8C0150A0 nop
ROM:8C0150A2 ; ---------------------------------------------------------------------------
ROM:8C0150A2
ROM:8C0150A2 loc_8C0150A2: ; CODE XREF: sub_8C014FDC+9Aj
ROM:8C0150A2 mov #-1, r0
ROM:8C0150A4 add #8, r15
ROM:8C0150A6 lds.l @r15+, pr
ROM:8C0150A8 rts
ROM:8C0150AA nop
ROM:8C0150AC ; ------------------------------------------------------------------------
</div>

после проверки broadcast, на выходе получаем значение 0x31 т.е. дрим системы PAL.
При этом игра запускается в режиме PAL 50Гц.
Но если подменить это значение на 0x30, то этим мы скажем, что типа дрим то NTSC-шный;)
и игра запустится в NTCS режиме, а для паловского дрима сигнал станет PAL 60Гц
(Последний раз сообщение было отредактировано 11.04.2009 в 10:10, отредактировал пользователь SunDragon.)
11.04.2009 10:08
Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
Регионы - tvстандарты - SunDragon - 11.04.2009 10:08

Переход:


Пользователи просматривают эту тему: 2 Гость(ей)