Post #914
124





Сьогодні доробив Region Mod для SNES. Спочатку трішки про те, в чому суть. Nintendo заходила на американський ринок у 1985 році після глибокої кризи відеоігор 1983 року (тема окремого поста, якщо цікаво). Кризу спричинило насичення ринку неякісними іграми, і Nintendo хотіла контрольувати випуск ігор для своєї 8-бітної консолі NES, тому розробила і запатентувала (US4799635A) схему апаратного захисту. Ідея полягає в парі чіпів. Всередині консолі стоїть "замок", в картриджі - "ключ". Nintendo поставляла мікросхеми "ключа" тільки авторизованим видавцям. Запустити на консолі "піратський" картридж без чіпа було неможливо. В Super Nintendo стояла вже друга версія захисту, але ідея була та сама. Самі чіпи - це 4-бітні мікроконтролери, розроблені Sharp, які мають свій криптоалгоритм. Під час запуску чіп з консолі передає номер послідовності (Seed) чіпу з картриджа, і вони обидва починають генерувати ту саму псевдовипадкову послідовність (ключ), обмінюючись даними і порівнюючи послідовність. Чіп в консолі тримає центральний процесор в стані RESET поки не перевірить всю послідовність, тому якщо підключити до консолі картридж без чіпа, консоль не запуститься. На додаток, Nintendo зробила різні версії чіпів для різних регіонів, F411 для NTSC (США та Японія, але для цих регіонів картриджі фізично різні і не сумісні за розміром) та F413 для PAL (Европа). То ж навіть оригінальний картридж для японської консолі не буде працювати в європейській. Частково це можна обійти, від'єднавши 4-й пін чіпа (який тримає RESET) всередині консолі, але навіть це не завжди допомагає, бо деякі картриджі теж перевіряють консоль, і, навіть якщо вона запуститься, сам картридж напише, що він розроблений для іншого регіону. Частково це також пов'язано з таймінгами в PAL та NTSC (50/60 Гц).
Отже, суть мода в тому, що добрі люди зробили повний емулятор чіпа консолі на мікроконтролері PIC16F630. Він підтримує ручне перемикання між PAL та NTSC (затисканням кнопки Reset на секунду), відповідно, прикидається або F411, або F413, що усуває проблему перевірки консолі картриджем, а також керує режимом графічного чіпа переводячи його з 50Гц на 60 і навпаки.
Складність була в тому, що більшість наявних в інеті інструкцій були для модифікації європейської версії PAL, схема для японської була, але для нової ревізії плати (в мене стара SHVC-CPU-01), з приміткою, що схема не перевірялася. Після блукання по платі осцилографом і декількох спроб запуску, мені вдалося запустити на консолі флеш картридж, який реагував на перемикання режимів 50/60, але жоден оригінальний картридж не працював. Я вже почав підозрювати проблему з прошивкою PIC контролера, бо тактова частота в моїй консолі інша, але ще раз уважно подивившись схему допер, що я не підключив зовнішній звуковий модуль (який, також, генерує потрібні сигнали для чіпів захисту). На пізніших консолях його вже розпаяли на платі, а на моїй першій ревізії він у вигляді окремого картриджа. В результаті все запрацювало, маю повноцінний комбайн який підтримує всі можливі формати. Інструкцію разом зі схемою розмістив на Reddit та форумі.
Отже, суть мода в тому, що добрі люди зробили повний емулятор чіпа консолі на мікроконтролері PIC16F630. Він підтримує ручне перемикання між PAL та NTSC (затисканням кнопки Reset на секунду), відповідно, прикидається або F411, або F413, що усуває проблему перевірки консолі картриджем, а також керує режимом графічного чіпа переводячи його з 50Гц на 60 і навпаки.
Складність була в тому, що більшість наявних в інеті інструкцій були для модифікації європейської версії PAL, схема для японської була, але для нової ревізії плати (в мене стара SHVC-CPU-01), з приміткою, що схема не перевірялася. Після блукання по платі осцилографом і декількох спроб запуску, мені вдалося запустити на консолі флеш картридж, який реагував на перемикання режимів 50/60, але жоден оригінальний картридж не працював. Я вже почав підозрювати проблему з прошивкою PIC контролера, бо тактова частота в моїй консолі інша, але ще раз уважно подивившись схему допер, що я не підключив зовнішній звуковий модуль (який, також, генерує потрібні сигнали для чіпів захисту). На пізніших консолях його вже розпаяли на платі, а на моїй першій ревізії він у вигляді окремого картриджа. В результаті все запрацювало, маю повноцінний комбайн який підтримує всі можливі формати. Інструкцію разом зі схемою розмістив на Reddit та форумі.
- 🔥 12
- 👍 3














