Как записать диск sega saturn
Пару часов истратил на эту проблему и всё-таки её решил.
Идея такая - hkzlab "портировал" игру Another World на Sega Saturn. Он использовал исходники New RAW - Another World Interpreter. Значимое событие, но, этот интерпретатор, RAW - Rewritten Another World engine for SEGA SATURN, использует ресурсы из DOS версии игры. Автор побоялся выкладывать готовый образ диска, поделившись только инструкцией и "безопасными файлами" (полный архив ниже).
Вроде всё клёво расписано, но, инструкция для Линуксоидов, к тому же, кое-что автор недосказал.
1. Используется утилита mkisofs. Выкладываю её в архиве ниже.
Распаковываем архив, в папке с mkisofs создаём файл следующего содержания (назовём его makeiso.bat):
mkisofs -quiet -sysid "SEGA SATURN" -volid "SaturnApp" -volset "SaturnApp" -publisher "SEGA ENTERPRISES, LTD." -preparer "SEGA ENTERPRISES, LTD." -appid "SaturnApp" -abstract "ABS.TXT" -copyright "CPY.TXT" -biblio "BIB.TXT" -generic-boot ip.bin -full-iso9660-filenames -o raw.iso cd_root
В этой же папке надо создать директорию cd_root - сюда положим файлы от hkzlab (abs.txt. sddrvs.tsk) и ресурсы из игры. Вообще, у меня штук 10 различных вариантов Another World и Out of this World, но, следуя рекомендации, выбрал файлы с нужной контрольной суммой (архив ниже).
Теперь внимание. Забегая вперёд сразу скажу, что в эту же папку надо положить raw_cd.bin, предварительно переименованный в 0.BIN.
2. Запускаем makeiso.bat. Если всё сделано правильно - получаем raw.iso, который отлично открывается в эмуляторе Yabause. Но, утилита ругнётся на отсутствие файла, создав raw.iso с нулевой длиной.
Пытливый читатель уже заметил, что в параметрах mkisofs фигурирует ip.bin. Где взять? Ответ простой - из образа диска Sega Saturn. IP.BIN от Dreamcast не подходит.
Как его добыть? В IsoBuster открываем образ игры, тыкаем мышкой на названии сессии (например Session 1), потом "извлечь диапазон". Нам нужен диапазон от 0 до 15 (длина 16). Извлекаемые данные 2048 байт на блок, тип файла - TAO (обязательно). Получившийся файл размером 32768 байтов кладём в папку к mkisofs, переименовываем в IP.BIN и повторяем процедуру.
Пробуем raw.iso в эмуляторе Yabause. После заставки Sega Saturn (рис. 1) должна появиться заставка с надписью SEGA (рис. 2). Это индикатор того, что IP.BIN сдамплен верно.
3. Если дальше этой надписи дело не идёт, то начнутся настоящие мучения. Мне пришлось перебрать несколько родительских образов, пока не наткнулся на один. Он мультирегионный, загрузочный файл называется 0.BIN.
SEGA SATURN , запуск болванок без чипа и хот-свапа.
представляю вашему вниманию Boot-CD, или загрузочный диск для Sega Saturn своими руками,
идея возникла давно но из за нехватки времени воплотилась только сейчас, ничего нового - всё
старо как мир, странно что никто раньше этого не сделал. данная тема будет интересна тем кто
любит играть на болванках, но не может найти чип или не хочет разбирать, паять, чиповать свой сатурн.
как это работает, вкратце:
ставим в консоль BootCD, ждем загрузки до логотипа SEGA,
открываем крышку, теперь Saturn будет воспринимать
любые болванки как лицензию!
BootCD мультизонный, будет работать на любой консоли, регион, вольтаж,
производитель - не имеет никакого значения, загрузочный диск сделан на основе
оригинального system disc, диск переключает консоль в режим отладки, что позволяет
запускать игры с подписью 'SEGA TP' без проверки подлинности диска, то есть без проверки кольца.
после загрузки BootCD можно сколько угодно открывать крышку, менять диски, нажимать Reset,
консоль будет в режиме отладки до тех пор, пока не будет выключено питание консоли.
перед записью на болванку, нужно открыть образ игры любым хекс редактором и изменить
подпись SEGA ENTERPRISES на SEGA TP , как на скринах.
далее, пишем диск и наслаждаемся игрой!
BootCD v2.0 можно приобрести у меня, кликайте на подпись,
или соорудить собственными руками, маленький FAQ ниже.
нам потребуется:
1) Лицензионный диск (любой)
2) Mini CD-R (желательно Verbatim)
3) модифицированный образ систем диска, можно использовать и обычный образ(есть в сети)
и так.
прикладываем к лицензии Mini CD-R, очерчиваем круг, по метке вырезаем внутреннею часть диска, как на скрине.
вкладываем Mini CD-R и аккуратно склеиваем края,
предварительно записав образ на диск.
Создаём Homebrew диск Sega Saturn
Leonis опубликовал в своем дневнике небольшрй экскурс, как создавать homebrew диск для Sega Saturn. Информация найдет своих читателей!
Create homebrew sega saturn disk image.
Пару часов истратил на эту проблему и всё-таки её решил.
Идея такая - hkzlab "портировал" игру Another World на Sega Saturn. Он использовал исходники New RAW - Another World Interpreter. Значимое событие, но, этот интерпретатор, RAW - Rewritten Another World engine for SEGA SATURN, использует ресурсы из DOS версии игры. Автор побоялся выкладывать готовый образ диска, поделившись только инструкцией и "безопасными файлами" (полный архив ниже).
Вроде всё клёво расписано, но, инструкция для Линуксоидов, к тому же, кое-что автор недосказал.
1. Используется утилита mkisofs. Выкладываю её в архиве ниже.
Распаковываем архив, в папке с mkisofs создаём файл следующего содержания (назовём его makeiso.bat):
mkisofs -quiet -sysid "SEGA SATURN" -volid "SaturnApp" -volset "SaturnApp" -publisher "SEGA ENTERPRISES, LTD." -preparer "SEGA ENTERPRISES, LTD." -appid "SaturnApp" -abstract "ABS.TXT" -copyright "CPY.TXT" -biblio "BIB.TXT" -generic-boot ip.bin -full-iso9660-filenames -o raw.iso cd_root
В этой же папке надо создать директорию cd_root - сюда положим файлы от hkzlab (abs.txt. sddrvs.tsk) и ресурсы из игры. Вообще, у меня штук 10 различных вариантов Another World и Out of this World, но, следуя рекомендации, выбрал файлы с нужной контрольной суммой (архив ниже).
Теперь внимание. Забегая вперёд сразу скажу, что в эту же папку надо положить raw_cd.bin, предварительно переименованный в 0.BIN.
2. Запускаем makeiso.bat. Если всё сделано правильно - получаем raw.iso, который отлично открывается в эмуляторе Yabause. Но, утилита ругнётся на отсутствие файла, создав raw.iso с нулевой длиной.
Пытливый читатель уже заметил, что в параметрах mkisofs фигурирует ip.bin. Где взять? Ответ простой - из образа диска Sega Saturn. IP.BIN от Dreamcast не подходит.
Как его добыть? В IsoBuster открываем образ игры, тыкаем мышкой на названии сессии (например Session 1), потом "извлечь диапазон". Нам нужен диапазон от 0 до 15 (длина 16). Извлекаемые данные 2048 байт на блок, тип файла - TAO (обязательно). Получившийся файл размером 32768 байтов кладём в папку к mkisofs, переименовываем в IP.BIN и повторяем процедуру.
Пробуем raw.iso в эмуляторе Yabause. После заставки Sega Saturn (рис. 1) должна появиться заставка с надписью SEGA (рис. 2). Это индикатор того, что IP.BIN сдамплен верно.
3. Если дальше этой надписи дело не идёт, то начнутся настоящие мучения. Мне пришлось перебрать несколько родительских образов, пока не наткнулся на один. Он мультирегионный, загрузочный файл называется 0.BIN.
Я в свое время на дрим диски копировал с помощью неро. А так алкоголем хорошо. Делаешь образ сначала, а потом на диск пишешь, хотя в принципе с одним приводом по другому и не получится)))
Если скачать образ Sega CD с интернета ,
там присутствуют файлы .bin .cue .wav и .mp3
Зачем нужны .wav и .mp3 ?
Как записать игру Sega CD на CD , если присутствуют файлы .wav или .mp3 ?
mp3 это пережиток прошлого для экономии места, их надо раскодировать в wav несжатый, не забудь проверить чтобы в cue были прописаны wav, если надо отредактируй
в треках wav хранится аудио составляющая образа
такие образы надо записывать отдавая проге именно файл cue
это разметка диска, там прописано где данные а где аудио
Вообще-то эти образы в основном для эмулей предназначались. Для реальной консоли посоветовал бы писать строго BIN + CUE.
Во-первых, исключаются проблемы того, что сборка будет кривая, или юзер по причине своей криворукости запишет диск неверно. Во-вторых, будет оригинальный звук, а не пожатый)
3DO / AV Famicom / Amiga CD32 / CD-i / Dendy Classic / Dendy Junior / Dreamcast / DSi LL / Famicom / Famicom Disc System / FM Towns Marty / Gamecube / Genesis / Genesis 2 / Genesis 3 / Jaguar / Jaguar CD / Megadrive / Megadrive 2 / Megadrive 32x / Mega-CD 2 / Neo Geo CDZ / Neo Geo Pocket Color / New 3DS XL / Nintendo 64 / Nvidia Shield Portable / PC Engine Duo RX / PC-FX / Pippin / Playdia / PS1 / PSone / PS2 / PS3 Slim / PS5 / PSP / PS Vita / Saturn / SNES / Switch / Virtual Boy / Wii / Wii U / Xbox / Xbox 360 / Xbox Series X
Вообще-то эти образы в основном для эмулей предназначались. Для реальной консоли посоветовал бы писать строго BIN + CUE.
Во-первых, исключаются проблемы того, что сборка будет кривая, или юзер по причине своей криворукости запишет диск неверно. Во-вторых, будет оригинальный звук, а не пожатый)
Я в свое время на дрим диски копировал с помощью неро. А так алкоголем хорошо. Делаешь образ сначала, а потом на диск пишешь, хотя в принципе с одним приводом по другому и не получится)))
а можешь подробнее описать как записывать игры для Saturn алкоголем как всё выставлять и на какой скорости записывать?
клон ATARI 2600 / ATARI Lynx 2 / ATARI Jaguar / NES / SEGA Master System 2 / SEGA Genesis / SEGA Genesis 2 / Sega Genesis 3 / SNES / JVC X ' EYE / Neo Geo Cd / Philips cd-i 450 / Amiga CD32 / PC Engine Duo / Panasonic 3DO FZ-10 / Sega Saturn / PS One / Nintendo 64 / Dreamcast / PS2 Slim / XBOX / XBOX 360 Slim / Game Cube / Wii / PS3 Slim / Game Boy Pocket / Game Boy Color / Game Boy Advance SP / DS Lite / PSP Slim & Lite / PS Vita / Famicom-101 / Retron 5 / Playstation TV / PS4 / Dendy Junior / Dendy Junior 2 / NES-101 (Top Loader) / Wii U / New Nintendo 3DS XL / (продолжение следует)
Сатурновские игры тоже лучше искать образы BIN + CUE.
А писать пофиг чем. Главное, чтоб образ был в нормальном формате. Если это ISO, то там ОБЯЗАТЕЛЬНО должны быть несколько звуковых файлов в формате WAV или MP3 и CUE-файл.
Если писать образ виде ISO + MP3 + CUE с помощью ImgBurn, то он автоматом конвертит музло в WAV. Правда, при наличии K-Lite Codec Pack.
3DO / AV Famicom / Amiga CD32 / CD-i / Dendy Classic / Dendy Junior / Dreamcast / DSi LL / Famicom / Famicom Disc System / FM Towns Marty / Gamecube / Genesis / Genesis 2 / Genesis 3 / Jaguar / Jaguar CD / Megadrive / Megadrive 2 / Megadrive 32x / Mega-CD 2 / Neo Geo CDZ / Neo Geo Pocket Color / New 3DS XL / Nintendo 64 / Nvidia Shield Portable / PC Engine Duo RX / PC-FX / Pippin / Playdia / PS1 / PSone / PS2 / PS3 Slim / PS5 / PSP / PS Vita / Saturn / SNES / Switch / Virtual Boy / Wii / Wii U / Xbox / Xbox 360 / Xbox Series X
клон ATARI 2600 / ATARI Lynx 2 / ATARI Jaguar / NES / SEGA Master System 2 / SEGA Genesis / SEGA Genesis 2 / Sega Genesis 3 / SNES / JVC X ' EYE / Neo Geo Cd / Philips cd-i 450 / Amiga CD32 / PC Engine Duo / Panasonic 3DO FZ-10 / Sega Saturn / PS One / Nintendo 64 / Dreamcast / PS2 Slim / XBOX / XBOX 360 Slim / Game Cube / Wii / PS3 Slim / Game Boy Pocket / Game Boy Color / Game Boy Advance SP / DS Lite / PSP Slim & Lite / PS Vita / Famicom-101 / Retron 5 / Playstation TV / PS4 / Dendy Junior / Dendy Junior 2 / NES-101 (Top Loader) / Wii U / New Nintendo 3DS XL / (продолжение следует)
3DO / AV Famicom / Amiga CD32 / CD-i / Dendy Classic / Dendy Junior / Dreamcast / DSi LL / Famicom / Famicom Disc System / FM Towns Marty / Gamecube / Genesis / Genesis 2 / Genesis 3 / Jaguar / Jaguar CD / Megadrive / Megadrive 2 / Megadrive 32x / Mega-CD 2 / Neo Geo CDZ / Neo Geo Pocket Color / New 3DS XL / Nintendo 64 / Nvidia Shield Portable / PC Engine Duo RX / PC-FX / Pippin / Playdia / PS1 / PSone / PS2 / PS3 Slim / PS5 / PSP / PS Vita / Saturn / SNES / Switch / Virtual Boy / Wii / Wii U / Xbox / Xbox 360 / Xbox Series X
клон ATARI 2600 / ATARI Lynx 2 / ATARI Jaguar / NES / SEGA Master System 2 / SEGA Genesis / SEGA Genesis 2 / Sega Genesis 3 / SNES / JVC X ' EYE / Neo Geo Cd / Philips cd-i 450 / Amiga CD32 / PC Engine Duo / Panasonic 3DO FZ-10 / Sega Saturn / PS One / Nintendo 64 / Dreamcast / PS2 Slim / XBOX / XBOX 360 Slim / Game Cube / Wii / PS3 Slim / Game Boy Pocket / Game Boy Color / Game Boy Advance SP / DS Lite / PSP Slim & Lite / PS Vita / Famicom-101 / Retron 5 / Playstation TV / PS4 / Dendy Junior / Dendy Junior 2 / NES-101 (Top Loader) / Wii U / New Nintendo 3DS XL / (продолжение следует)
3DO / AV Famicom / Amiga CD32 / CD-i / Dendy Classic / Dendy Junior / Dreamcast / DSi LL / Famicom / Famicom Disc System / FM Towns Marty / Gamecube / Genesis / Genesis 2 / Genesis 3 / Jaguar / Jaguar CD / Megadrive / Megadrive 2 / Megadrive 32x / Mega-CD 2 / Neo Geo CDZ / Neo Geo Pocket Color / New 3DS XL / Nintendo 64 / Nvidia Shield Portable / PC Engine Duo RX / PC-FX / Pippin / Playdia / PS1 / PSone / PS2 / PS3 Slim / PS5 / PSP / PS Vita / Saturn / SNES / Switch / Virtual Boy / Wii / Wii U / Xbox / Xbox 360 / Xbox Series X
флуд мастер 99LV
Не пользуйся этой бестолковой программой, только CLoneCD и ImgBurn.
Просят просто ''да'' и ''нет''? Или все-таки что-то спрашивают?
Не пользуйся этой бестолковой программой, только CLoneCD и ImgBurn.
Просят просто ''да'' и ''нет''? Или все-таки что-то спрашивают?
клон ATARI 2600 / ATARI Lynx 2 / ATARI Jaguar / NES / SEGA Master System 2 / SEGA Genesis / SEGA Genesis 2 / Sega Genesis 3 / SNES / JVC X ' EYE / Neo Geo Cd / Philips cd-i 450 / Amiga CD32 / PC Engine Duo / Panasonic 3DO FZ-10 / Sega Saturn / PS One / Nintendo 64 / Dreamcast / PS2 Slim / XBOX / XBOX 360 Slim / Game Cube / Wii / PS3 Slim / Game Boy Pocket / Game Boy Color / Game Boy Advance SP / DS Lite / PSP Slim & Lite / PS Vita / Famicom-101 / Retron 5 / Playstation TV / PS4 / Dendy Junior / Dendy Junior 2 / NES-101 (Top Loader) / Wii U / New Nintendo 3DS XL / (продолжение следует)
флуд мастер 99LV
Это документ, написанный мной в 1995 году, когда я работал над первой игрой студии Neversoft: Skeleton Warriors. Это была первая игра, в которой я не использовал язык ассемблера 68K.
Фото сделано примерно в то время. Комплект разработчика (dev kit) («Small Box» и ICE) стоит справа от меня.
Компилирование и компоновка
Общая сборка готовой программы управляется одним makefile: MAKEFILE.MAK. Он содержит зависимости и целевые объекты для всего проекта, в том числе компиляцию файлов .GOB и .GOV.
Отдельные модули исходного кода C (файлы .C) компилируются программой CCSH в объектные модули SH2 (.OBJ). Она сначала вызывает препроцессор GNU C под названием CPPSH (находится в C:\GNUSH2\BIN), затем вызывает CC1SH для его выходных данных, чтобы создать ассемблерный код SH2, и, наконец, вызывает ASSH (в C:\PSYQ) для сборки его в готовый объектный формат.
Мы не используем C++, потому что мне сказали, что он создаёт огромные объектные файлы. Однако я не работал с ним, можете поэкспериментировать.
Несколько файлов на языке ассемблера SH2 (с расширением .S) просто собираются при помощи ASMSH напрямую в файлы .OBJ (это не то же самое, что ASSH, а более сложный макроассемблер). В настоящее время они используются только для встраивания данных, и не содержат машинно-зависимого кода.
ОЗУ Saturn, в которое можно загружать код, разделено на два блока по 1МБ. Один начинается по адресу $06000000, а другой — по $00200000. Блок по адресу $00200000 используется исключительно для хранения графики главного персонажа. Код программы записывается по адресу $06010000 (первые $10000 байт используются для системного пространства, стека и тому подобного.)
Код позиционно-зависимый и компилируется так, чтобы выполняться по этому конкретному адресу ($06010000) и никак иначе.
Файлы .OBJ компонуются вместе при помощи программы PSYLINK для создания файла MAIN.CPE — исполняемой программы с небольшим заголовком, который можно скачать в Saturn командой RUN. PSYLINK использует файл TEST.LNK для указания того, какие файлы .OBJ нужно включать и куда их помещать.
Данные
Игра разбита на несколько уровней, во многих уровнях используются одинаковые данные, но в основном они для каждого уровня свои. Все данные для каждого уровня собираются в два огромных файла .GOV и .GOB. (в случае шахты это MINE.GOV и MINE.GOB). Файл GOV содержит короткий заголовок, а затем идут все данные, которые должны находиться в видеопамяти. Файл .GOB содержит все данные, которые должны находиться в ОЗУ.
Уровень состоит из части показанных ниже файлов данных.
.SSQ — файл секвенсора спрайтов
.SBM — файл битовой карты, используемый для битовых фонов
.MAP — обе карты для заполняемых символами фонов.
.TIL — тайлсеты и палитры для заполняемых символами фонов.
.PTH — данные точек дороги и триггеров.
.TEX — текстуры для дороги.
Файлы .SSQ и .SBM созданы моим становящимся всё более неудобным секвенсором «SEQ». Файлы .MAP, .TIL, .PTH и .TEX созданы становящимся всё более потрясающим редактором карт «TULE», написанного Дэном.
Эти файлы при помощи ассемблера ASMSH собираются в соответствующие файлы .GOV и .GOB. Чтобы посмотреть, как это делается, см. файлы LEVEL.S и LEVEL1.S. В файл .GOV также включается часть данных конкретного уровня.
Оборудование для разработки
Наша целевая платформа — Sega Saturn, имеющая два Risc-микропроцессора SH2 и один 68000. Пока мы используем только основной процессор Master SH2, вспомогательный slave SH2 будет использоваться, когда мы разберёмся, как это сделать. 68000 применяется для управления звуковым чипом, нам не пришлось писать для него код, потому что он будет использовать предоставленную Sega звуковую библиотеку.
Программа почти целиком написана на чистом C. Мы используем компилятор GNU SH2 для получения выходного ассемблера SH2. В коде есть несколько модулей SH2, в которых в основном находятся исключительно данные. Пока я не написал ничего значимого на SH2.
В качестве системы разработки мы пользуемся PsyQ. Это не стандартная система разработки Sega, однако все, кто с ней работал, считают её лучшей. Альтернативой ей является SNASM, созданная принадлежащей Sega студии Cross Products. Основная часть поставляемых Sega примеров кода должна работать в системе разработки SNASM, но легко конвертируется под PsyQ.
Система PsyQ состоит из платы интерфейса SCSI, которая устанавливается в PC, картриджа, вставляемого в Saturn и соединяющего их кабеля. Исходники компилируются на PC и скачиватся на Saturn, где и запускается программа. Код можно отлаживать с PC.
Система разработки PsyQ
Связь контролируется резидентной программой (PSYBIOS), обрабатывающей коммуникации между машинами. Это позволяет консоли Saturn загружать файлы с PC почти так же, как она загружала бы их с CD. Мы используем эту функцию для загрузки файлов каждого уровня.
У меня в комнате есть пара больших и громких ящиков, а ещё два PC. Меньший из двух ящиков — это E7000PC, являющийся встроенным эмулятором SH2. Он помогает разобраться, где вылетает программа, если отладчик PsyQ её не остановил. Также он полезен для отслеживания записи в память, но пока я почти не пользовался этой функцией.
Второй из громких ящиков — это нечто под названием «Small Box» (первый «Large Box» был размерами примерно с небольшой холодильник). По сути это Saturn с дополнительными интерфейсами для E7000 и эмулятора CD. На передней панели у него есть переключатели ID стран и переключатель между PAL и NTSC.
Внутри второго компьютера находится эмулятор CD — большая плата, благодаря которой жёсткий диск компьютера притворяется CD-приводом. В нём можно собрать образ CD и эмулировать его в реальном времени, чтобы посмотреть, как будет выглядеть игра, когда доберётся до настоящего CD. Эмулятор более-менее работает, хотя у него есть некоторые проблемы, над решением которых мы сейчас работаем вместе с Sega.
Dev kit самой компании Sega
Модули
TEST.S — ничего особенного, задаёт несколько меток.
MAIN.C — верхний уровень программы. Содержит инициализацию оборудования, настройку уровней, код прохождения уровней и различные другие мелкие элементы, которые на самом деле стоило бы поместить в более подходящие модули. В нём довольно много мусора, потому что в этот модуль проще всего добавлять что-то новое для быстрого тестирования. Содержит код загрузки с CD или файлового сервера на PC. Содержит флаг для включения и отключения цветных полос TIMING.
GFXLIB.C — различные процедуры для доступа к оборудованию и выполнения различных графических функций. Почти все они написаны с нуля Дэном и часто очень неэффективны. Если вы часто используете процедуру отсюда, то неплохо было бы взглянуть, что она делает и написать более быструю версию в своём коде.
Тем не менее, все функции работают и обеспечивают превосходный фреймворк для черновой реализации и тестирования. Поблагодарим Дэна, без него это было бы невозможно.
SMP_PAD.C — различные процедуры для считывания с джойстика Saturn, очень зависимые от оборудования.
GLOBALS.C — все глобальные переменные и несколько общих функций. Использование глобальных переменных — приемлемая практика программирования. Однако по различным причинам реализация глобальных переменных в SH2 довольно медленная, поэтому со временем я возможно преобразую часть в глобальные структуры, если понадобится. Содержит переменные, описывающие состояние MAN и PATH.
MAN.C — обрабатывает движение и отображение человека (Prince Lightstar, Talyn, Guardian или Grimskull — персонажа, которым управляет игрок). Пока это в основном логика движения и коллизий с дорогой. Кроме того, он обеспечивает соответствующую анимацию для каждого действия. Тут ещё нужно сделать много работы.
OB.C — обрабатывает движение и отображение объектов в игре, в особенности объектов врагов, например, воинов-скелетов и маленьких инопланетян. Здесь программируется основная часть геймплея: вражеский ИИ, основные движения и срабатывание триггеров. Структура данных готова ещё не полностью, в частности, не совсем проработаны проблемы с коллизиями и анимацией. Предстоит ещё куча работы.
DATA.S — различные таблицы, в настоящее время в основном анимации основных персонажей игрока.
LAYER.C — скроллинг фонов с параллаксом. Обновляет состоящие из символов фоны и скроллит битовые карты. Также выполняет скроллинг линий (эффект волн) в слое тумана. Пока таблицы для слоёв карт символов хранятся без сжатия. Их нужно сжать в формат RLE, который я использовал для версии на Genesis. Эта задача может перейти к Кену, если мы получим систему разработки под Saturn раньше, чем для Sony.
PAL.C — палитра. Можно выбирать из 2048 цветов. Любой пиксель на экране может быть одного из этих цветов. Я логичным образом разделил палитру на восемь палитр по 256 цветов. В PAL.C содержится код для их инициализации, подготовки и код для их циклической смены. Также им понадобится затемнение и более сложная циклическая смена, а также вспышки яркости и т.д.
BUL.C — примитивная система для обработки снарядов (бросок меча, удар рукой, выстреливаемые из рук ракеты и т.д.) как отдельных объектов. По-прежнему требуется довольно много работы для более сложного использования снарядов. Также нужен правильный код коллизий и анимаций.
PAD.C — простой модуль для запоминания состояния джойстика в более удобном формате. Запоминает, была ли недавно нажата кнопка, и нажата ли она сейчас.
START.C — одна строка, сообщающая, какой уровень будет первым, для простоты его смены в командном файле.
PANEL.C — простые процедуры для вывода полоски силы.
PATH.C — чудовищные процедуры для отрисовки дороги, а также обработки коллизий с дорогой.
MATH.C — простые синус, косинус и поворот точки на угол.
[Обновление] Вот пример кода из MAN.C. Всё жёстко прописано в коде и ссылается на глобальную структуру данных Man. Куча прописанных в коде чисел.
OB.C разросся до чудовищного файла из 9000 строк, в которые включены все паттерны поведений отдельных объектов в игре. Также там есть огромное количество прописанных в коде чисел, например таких:
Неприятное зрелище. Такой стиль кода пришёл из времён, когда игры были очень маленькими и наработал я его при работе с 68K.
Состояние игры
В представленном ниже документе вкратце описывается состояние кода Skeleton Warriors для Sega Saturn, а также упоминаются некоторые из множества аспектов, которые нужно было ещё сделать.
Документ нужен был, чтобы ускорить Дэну, Кену и Джеймсу знакомство с уже готовым кодом, объяснить им назначение каждого модуля и взаимодействие между ними. Также он позволил мне оценить печальное состояние этого кода, и, надеюсь, заставил меня взяться за ум.
Также я немного рассказываю о встраивании данных (файлы .GOV и .GOB) в программу, и о том, что мы будем делать в будущем.
Читайте также: