Несколько лет назад, после создания капитана Дрекса я общался с другом, который когда-то спаял мне Пентагон.
Рассказав ему о том что я написал игру в новом жанре, он сказал что надо бы наоборот – пилить что-то олдовое, в духе Диггера.
Я тогда поулыбался, но мысль засела.
«Digger (рус. Ди́ггер — «землекоп») — компьютерная игра, выпущенная канадской компанией Windmill Software в 1983 году для компьютеров IBM PC. Игра была весьма популярна во времена широкого использования мониторов и видеокарт стандарта CGA.
Игра создана основным разработчиком компании Windmill games Робом Слетом в 1983 году. В 1984 году программа была переписана для IBM PCjr. Последняя оригинальная версия была выпущена для канадского компьютера Hyperion, работающего на 6 МГц.
Во время игры в качестве фоновой музыки используется тема Гершона Кингсли «Воздушная кукуруза».
… Как оказалось, 8-ми битной версии этой игры под спектрум нет. Есть вариации на тему, местами довольно неплохие, но – «Это не Диггер!»
Копнувши сеть, я обнаружил… The original source code to Digger.
«Please note that the copyright on this still belongs to Windmill software, and that we do not have permission to distribute Digger in its original form. This source code is provided for historical interest only. If you are interested in making a derivative version of Digger, please start with the Digger Remastered source code instead.»
Гм. Ок. Есть даже две версии.
Что внутри оригинальной?
C, x86 asm.
Что этому я могу противопоставить?
Пожалуй – один из компиляторов С, и z80 asm.
Чертовская комбинация.
По сути, если подумать – всё просто. Есть оригинальный исходник великолепной игры из прошлого. Чот-там много на С, но язык довольно понятный, написано со множеством комментариев. 300 Кб всего гама — со всем, что разработчикам тогда надо было. Но фигня в том, что, во первых, она на С, и при этом ещё юзается пачка процедур на х86 асме. Но вродь понятно — что где делается.
Вродь.
Под z80 как-то С компилят, где-то видел, что-то, помню, читал такое…
Ну, давай копнём.
Компиляторы С под зетник– dk88, sdcc, lcc под приставки типа GB. Другими словами – есть компиляторы.
Ок, поехали. Ставим и смотрим.
Один ставим – он не запускается, надо что-то шаманить с системой.
Второй компилер ставим – исходник из архива не компилится.
Третий вываливает непонятно что, и он заточен под GB
Ну окей, sdcc пусть даже бросается ошибками, но это уже есть причина попробовать поправить код. Наивно думаю — может компильнётся
И вот один из файлов исходника.
Исходник, ну как же так! Ты же Си…
Исходник игры написан на С, код древнейший, 1983 год, но при этом он прост и красив. Код практически не обусловлен современными особенностями «по дефолту».
Он даже не ANSI ещё, до него – минимум 6 лет; никаких классов нет, да даже memcpy не используется!
Ой, да понятно всёКод:main() { int flag, demo_time, loop, x;
Так что ему надо для компиляции? Void, int для функций? Описание типа переменных для параметров и переменных?
Да ок, ща. Давай попробуем, ща всё тебе будет.
И я правлю.
А оно бросает ошибки.
Я правлю.
Ошибки.
День за днём ошибки. Много ошибок синтаксиса, очень много…
Оригинал статьи на Хайпе






Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 


