Search
Write a publication
Pull to refresh

Comments 21

такая короткая новость и так много ошибок. впрочем ничего нового

Так и оригинал на Itch.io не длиннее.
This is a casual game jam intended to inspire working within extreme limitations. In the original 16 bit x86 architecture, memory was effectively divided into 64k chunks of memory. This was because though the original 8086 processor could address a full megabyte (20 address pins), the internal registers were only 16 bits wide. Thus segment registers were used to combine with an offset register to create a full 20 bit address.
The formula used by the processor for any address was (Segment * 16) + Offset, and used the syntax Segment:Offset.
Although a .COM file can theoretically access the full megabyte of memory available to the computer, in the spirit of having compact game files this Jam is requiring that all content (game logic and assets) be contained in a single .COM file. There are no rules about how much or little memory can be accessed by the game during run time, only that the .COM file contain all code and data the game needs to load from disk.
Rules:
  • Must be a DOS compatible .COM file that can run on actual hardware. Owing to the limited availability of this hardware in the wild today, submissions can be submitted with any emulator environment designed around the IBM PC and it's compatibles.
  • Can NOT load any asset or game specific code from an external file. All logic and data used must be contained within the .COM being submitted. (Yes, this includes save data)
  • Games submitted can be in any language.
  • Games submitted can be in any stage of development.
  • Games submitted can be listed at any price point.
  • Games submitted can be designed to use any hardware, retro or modern.
  • Optional: Games may use a generic TSR (Terminate Stay Resident) driver, but these should be generic and usable by any project without recompiling / reassembling.
  • Include content warnings on the game's page if your game includes any material that could be considered adult or sensitive.
  • Bigoted content of any kind is not allowed and will be removed from the jam.


Ошибки я поправил, спасибо за рапорт.
А то что ничего нового, так IBM PC уже исполнилось 42 года, некоторым пользователям Хабра меньше лет исполнилось. И 30 лет назад Билл Гейтс похоронил DOS, сказав «DOS is dead», а он таки получил реинкарнацию в виде FreeDOS и вполне себе развивается.
Главный смысл публикации новости был в том, чтобы привлечь внимание ненормально экстремальных программистов, способных писать под DOS с жесткими ограничениями по памяти, чтоб они продемонстрировали силушку богатырскую, ну и просто «Just for fun!».
Или как Маяковский сказал 110 лет тому назад:
«А вы
   ноктюрн сыграть
           могли бы
               на флейте водосточных труб?»

А вы могли бы? ;)

ничего нового это про ошибки в новостях

очень мило для ретроформата. конечно, немного странное требование упаковать всё в один файл при том, что нет ограничения на размер. и, интересно, насколько широко трактуется неприемлемый "нетерпимый" контент (а нет, не интересно, повылезают сейчас обижульки, которые начнут учить, сколько транснегрогеев должно быть в корабле, и несколько этична их миссия, и почему корабль нельзя называть "маткой")

Ограничение на размер есть в самом формате COM-файла:


В системах DOS и в 8-битной CP/M COM-файл — простой тип исполняемого файла, при выполнении которого данные, код и стек находятся в одном и том же 16-битном сегменте. Поэтому размер файла не может превышать 65280 байт (что на 256 байт меньше размера сегмента — 216 байт).

Ну я тоже могу сказать - вот и выросло поколение, которое уже не умеет программировать на МК-61.

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

com представляет собой 16 разрядный сегмент данных, соответственно, его максимальный адресуемый размер - 64кб. Развлекайтесь.

Ну и нормально , раньше на ZX-Spectrum каждая игра была такого, и даже меньше - 48кб формата. Ах какие были игры !

Даже меньше 48кб, т.к. еще несколько килобайт ОЗУ отводились под служебные нужды.

Берём любую игру от ZX-Spectrum, да хоть Exolon, прикручиваем эмулятор, написанный на ассемблере, он займет всего несколько КБ , и вот оно , наслаждение !

А серьёзно , была такая игра BOLO, вот как раз bolo.com был её файл. Не могу найти уж много лет.

Можно, вот только накладные расходы несоизмеримо велики. В COM файле нужно держать сам эмулятор ZX Spectrum плюс его ROM, что оставляет совсем немного места под игру. Да, это всё конечно можно сжать, а потом распаковывать после загрузки в память по разным сегментам, только вот зачем такие танцы? Не лучше потратить это пространство на саму игру?
Ну и ко всему прочему, геймджем подразумевает создание новой игры, а не запуск старой. ;)

Играм не нужен был rom с бейсиком - минус 16кб. Начальное состояние экрана , на котором обычно красивая заставка при загрузке с магнитофона тоже не нужно - ещё минус 6.75 КБ. Остаётся 41.25 КБ всей остальной памяти , в которой и лежала вся игра , а конкретно в адресах 23296-65535. Итого у нас остаётся 22кб на код самого эмулятора, вполне реалистично , учитывая насколько прост z80 и весь хардварь, который надо эмулировать, ну а экран будет отрисовываться прямо в vga по адресу a000:0000.

Бейсик то играм был не нужен, а вот подпрограммы из ROM вполне себе были нужны. Дальше, часто у игрушек вместо нормального генератора ПСЧ, использовался ROM как массив этих псевдослучайных чисел. Можно ли запихать эмулятор Спектрума в 22кб?
ХБЗ… Наверное получится, но какой-то очень не аккуратный, без соблюдения таймингов и учета особенностей спека.
Короче, перед тем как эту игру запихивать в такой упрощенный эмулятор, надо будет её прогнать в полноценном эмуляторе с остановкой по обращению к области ROM, как на вызов, так и на чтение/запись чтоб понять масштаб проблем.
Так что в лучшем случае у нас остается рекомпиляция игры под конкретную платформу, как это в своё время делали Friends software рекомпилируя игры (ROM) от MSX на IBM AT, с правкой ручками полученного результата.
Так что в любом случае, будет много возни с запихиваем эмулированной/рекомпилированной игры в экстремально малый объём памяти.

Omniscent 4K - добавить управление только, и даже не представляю что в оставшихся ~60k можно наворотить! (К слову, Farbraush в одном из интервью говорили, что .kkrieger был вдохновлен именно Omniscent-ом)

Ну и лайфхак от меня - если взять досовский .EXE , а он может быть до 640кб и просто переименовать в .COM, то DOS будет его нормально запускать. Я точно помню, что это срабатывало на DOS 6.22 и DOS 7.10 , который был встроен в Win95/98.

А это уже будет нарушением правил геймджема;)
А насчет переименования EXE в COM, не помню точно но то ли в 6.22, то ли в Win95 Command.com внутри был уже EXE файлом.

Второй лайфхак…

Если нужная программа являтся .СОМ файлом, а места на дискете не хватает, то можно передать управление в процессе загрузки сразу ей, удалив COMMAND.COM и поправив MSDOS.SYS

Подмена командного процессора, это стандартная фича DOS, начиная наверное с времен второй версии DOS. Просто в CONFIG.SYS добавляешь Shell=нужный исполняемый файл.

Sign up to leave a comment.

Other news