Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

GBX.ru _ GB: Программирование _ *.GB и *.GBC

Автор: Ash-Ketchum Воскресенье, 08 августа 2010, 08:44

Доброго времени суток, может кто подскажет как конвертировать образ GB в образ GBC без нарушения контрольных сумм?

Автор: Wowik Воскресенье, 08 августа 2010, 09:29

А смысл? Это же по сути разные вещи! ГБ - чёрно-белые игры, а ГБЦ - цветные.

Автор: Ash-Ketchum Воскресенье, 08 августа 2010, 12:43

QUOTE (Wowik @ Воскресенье, 08 августа 2010, 09:29)
А смысл? Это же по сути разные вещи! ГБ - чёрно-белые игры, а ГБЦ - цветные.
*

Для разработки под GB я использую GbAssemblerStudio, для рисования графики там используются матрицы из чисел, каждая цифра соответствует определенному цвету, но из-за того что после компиляции на выходе получается файл *.gb, эмулятор не может отобразить цвета...Должен же быть какой-то способ преобразовать *.gb в *.gbc без повреждения cheksumm...

Автор: Тэйлс Воскресенье, 08 августа 2010, 13:49

Правая кнопка>Переименовать.
Всегда ваш капитан!

Автор: Ash-Ketchum Воскресенье, 08 августа 2010, 13:57

QUOTE (Тэйлс @ Воскресенье, 08 августа 2010, 13:49)
Правая кнопка>Переименовать.
Всегда ваш капитан!
*

Логично.... но если бы всё было так просто..... Ромы отличаются по заголовку... (под спойлером выделено жирным) но при изменении этого значения нарушается контрольная суммаsad.gif


» Нажмите, для открытия спойлера «

Автор: Тэйлс Воскресенье, 08 августа 2010, 13:58

Ash-Ketchum, теперь-то понял. Ок, я не прав был значит.

Автор: УльтраБлокС Понедельник, 16 августа 2010, 21:11

Хм. Я не думал что РОМы GB от GBC отличаются заголовком...

Как я понимаю, заголовок не принадлежит РОМу, а содержится и в оригинальном картридже. В таком случаи есть вариант "Изменить значение и пересчитать чексумму, после чего записать изменённую чексумму?" Алгоритм достаточно примитивный.

QUOTE
014E-014F Checksum (higher byte first) produced by
adding all bytes of a cartridge except for two
checksum bytes and taking two lower bytes of
the result. (GameBoy ignores this value.)


Пройтись по всему файлу. Сложить все байты кроме 014E-014F. Взять два младших байта и записать их в 014E-014F.

Как взять младшие байты я не знаю, а так мог бы накодить тулзу для исправления чексуммы.

Автор: lps Понедельник, 16 августа 2010, 21:56

случайно нее в этом кроется проблема того, что после gbcolorizer'а ром не везде работает?

Автор: Ash-Ketchum Вторник, 17 августа 2010, 13:30

QUOTE (УльтраБлокС @ Понедельник, 16 августа 2010, 21:11)
Хм. Я не думал что РОМы GB от GBC отличаются заголовком...

Как я понимаю, заголовок не принадлежит РОМу, а содержится и в оригинальном картридже. В таком случаи есть вариант "Изменить значение и пересчитать чексумму, после чего записать изменённую чексумму?" Алгоритм достаточно примитивный.
Пройтись по всему файлу. Сложить все байты кроме 014E-014F. Взять два младших байта и записать их в 014E-014F.

Как взять младшие байты я не знаю, а так мог бы накодить тулзу для исправления чексуммы.
*

Есть готовая тулза, но все равно почему-то эмули ругаются на этоsad.gif

Автор: Ash-Ketchum Вторник, 17 августа 2010, 13:32

QUOTE (lps @ Понедельник, 16 августа 2010, 21:56)
случайно нее в этом кроется проблема того, что после gbcolorizer'а ром не везде работает?
*

Сравни оригинальный ром и ром после колоризера, посмотри что поменялось