Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Контрольная сумма

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Пустопорожняя болтовня
Предыдущая тема :: Следующая тема  
Автор Сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Июл 21, 2006 9:02 am    Заголовок сообщения: Контрольная сумма Ответить с цитатой

Скажите пожалуста, каким путем подсчитывается контрольная сумма и что она вообще из себя представляет(я так понял, это слово)? Речь идет не именно о РОМах, а о всех файлах.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Virtual_Killer



Зарегистрирован: 25.03.2004
Сообщения: 610
Откуда: Чекагинск

СообщениеДобавлено: Пт Июл 21, 2006 11:38 am    Заголовок сообщения: Ответить с цитатой

Контро́льная су́мма — некоторое значение, рассчитанное путём применения определенных операций (обычно сложения) над входными данными.
Самыми известными методами подсчёта контрольной являются методы семейства CRC. CRC (англ. cyclic redundancy check) — контроль циклически избыточным кодом.

Как подсчитывается? Зависит от применяемого метода. Wink
_________________
Не поймите меня правильно
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Июл 21, 2006 11:46 am    Заголовок сообщения: Ответить с цитатой

Спасибо. А как понять "над входными данными"?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Пт Июл 21, 2006 12:27 pm    Заголовок сообщения: Ответить с цитатой

Ну, в моёй программе она подсчитывается так (взято из справочника)
1 Пропускается заголовок. (начинаем с 512 байта)
2 Считывается байт
3 он умножается на 256 и прибавляется в переменную
4 считывается следующий байт и прибавляется в переменную
5 если конец файла не достигнут, то возрашаемся на 2-ю строчку.
6 переводим переменную в бинарный формат
7 Берём слева 16 бит и переводим в 16-ричный формат. Это контрольная сумма.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Пт Июл 21, 2006 12:57 pm    Заголовок сообщения: Ответить с цитатой

Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Пт Июл 21, 2006 10:25 pm    Заголовок сообщения: Ответить с цитатой

Я немного не правилно объяснил, 16 бит надо брать не слева, а справа. В общем, отделяем слово.

Я тот смотрел код ROM-ов и вычислил новый метод. Всё просто.
1. Пропускаем заголовок.
2. Считываем байт.
3. Добавляем в переменую.
4. Если не достигнут конец файла то возвращаемся на шаг 2
5. Отделяем от переменной слово.
6. Это контрольная сумма.

Так же я узнал, что контрольная сумма хранится по адрессу 18Eh, поэтому можно добавить шаг: 7. Если полученная контролная сумма не равна сохранёной, то ROM битый.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Пт Июл 21, 2006 11:53 pm    Заголовок сообщения: Ответить с цитатой

Вот как раз на 7 стадии игра сверяет рассчитанную и имеющуюся чексумму и выдаёт красный экран в случае несовпадения.
Если в Gens поставить галочку AutoFIX CRC, то сам эмулятор перед запуском просчитает чексумму по этому алгоритму и запишет её в заголовок, откуда игра читает на 7 шаге.
Но некоторые игры считают чексумму по нестандартному алгоритму (у программистов был синдром NIH), поэтому при галочке AutoFIX CRC ваш Gens подсчитает н то число, которое хочет увидеть игра в заголовке своего РОМа. А значит красный (/чёрный/синий/...) экран всё равно появится, игра зависнет.

Вроде бы, в Alien Soldier с этим проблем нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Сб Июл 22, 2006 9:25 am    Заголовок сообщения: Ответить с цитатой

АнС писал(а):
Вот как раз на 7 стадии игра сверяет рассчитанную и имеющуюся чексумму и выдаёт красный экран в случае несовпадения.


Ну, а я что, не так сказал?

АнС писал(а):
Вроде бы, в Alien Soldier с этим проблем нет.


Ага, не знаю в каком состоянии были разработчики, когда писали проверку ЧекСуммы. Команду Add (A0)+,D0 писали тридцать раз, а потом переход и всё сначало. Или это ещё один метод защиты?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Ghost



Зарегистрирован: 24.04.2004
Сообщения: 237

СообщениеДобавлено: Вс Июл 23, 2006 8:33 pm    Заголовок сообщения: Ответить с цитатой

Это просто ускорение процесса. Ну и что, что там идёт add.w 128 раз подряд, чем тебя это смущает? Зато команда dbra используется реже. Причём, как известно, с помощью одной команды dbra можно организовать цикл до 65536 итераций, а для подсчёта чексуммы в мегабайтовом роме одного цикла не хватит, поэтому делают вложенный цикл и добавляют ещё одну команду dbra (в других играх так). Вообще, независимо от способа подсчёта чексуммы, просто пропускай код её подсчёта до сравнения с $18E, если идёт команда BNE, просто пропускай её, если BEQ, прыгай туда, куда она указывает, и не парься.
Вообще, чексумма - самый примитивный способ защиты, его легко можно обойти. Есть вещи похуже, например, в Harry Potter (R).
_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
IfoR



Зарегистрирован: 16.05.2006
Сообщения: 334

СообщениеДобавлено: Вс Июл 23, 2006 8:47 pm    Заголовок сообщения: Ответить с цитатой

Ghost писал(а):
Вообще, чексумма - самый примитивный способ защиты, его легко можно обойти. Есть вещи похуже, например, в Harry Potter (R).


Хотелось бы посмотреть, она на SEGA?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Вс Июл 23, 2006 10:58 pm    Заголовок сообщения: Ответить с цитатой

Ghost писал(а):
Вообще, чексумма - самый примитивный способ защиты, его легко можно обойти. Есть вещи похуже, например, в Harry Potter (R).


Так чексумма - это ж и не защита вовсе, а просто меры по обеспечению целостности программы - вдруг китайские копиры случайно модифицируют один бит в коде игры, и она вдруг вместо заставки покажет что-то типа goatse. Shocked Shocked Shocked Уж лучше тогда красный экран.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Пустопорожняя болтовня Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group