Самодельная 16-битная игра про пони - "Трикси и алмазы"

+237
в блоге Игры
После полугода работы, я представляю еще один игровой проект — одноэкранная игра в жанре «бей-собирай», про Трикси, чудовищ и алмазы.
Игра выполнена в стиле 16-битных игр для MS-DOS примерно 1990-95 годов, каковой и является. Она работает как 16-битное приложение для реального режима процессора x86, использует только основную область памяти 640 Кб (сама занимает около 300 Кб) и графический режим VGA 320x200, 256 цветов. Для запуска игры можно использовать как совместимые операционные системы (MS-DOS, FreeDOS, Windows в режиме эмуляции) на подходящих процессорах вроде 386/486 — так и более привычные для 2020 года способы запуска старых игр, например, DOSBox.



Подробнее об игре, способах запуска и планах — под катом.


Немного скриншотов игры:

Меню

Руководство

Геймплей



Дистрибутивы и zip-архивы с игрой:

Игра в виде zip-архива для 16-битных систем или DOSBox
tereshenkov.ru/trixie16bit/Trixie-1.0.0.1-DOS16.zip

Игра в виде дистрибутива для современных версий Windows с уже настроенным DOSBox
tereshenkov.ru/trixie16bit/Trixie-1.0.0.1-emulator-Win32.exe

Игра в виде zip-архива для современных версий Windows с уже настроенным DOSBox, но без системы установки и ярлыков на Рабочий стол
tereshenkov.ru/trixie16bit/Trixie-1.0.0.1-emulator-Win32.zip

Исходные тексты игры:
tereshenkov.ru/trixie16bit/Trixie-1.0.0.1-source.zip

Как в это играть

Самый правильный способ — достать из сундука свой системник 90-х годов с установленным MS-DOS, закачать на него по нуль-модему zip-архив с игрой и запустить из консоли или Norton-а файл игры game.exe или game_fpu.exe (второй файл предназначен для компьютеров с математическим сопроцессором, а первый может работать без него).
Минимальные системные требования для запуска на физическом железе:
  • Процессор 386SX или лучше (оптимально работает на 486DX)
  • Частота процессора от 30 МГц и выше (на 20 МГц игра работает, но заметно медленнее)
  • Подключенный PC Speaker для звуков игры
  • Видеокарта VGA, поддерживающая режим 320x200x256
  • Цветной монитор
Для тех, у кого такой возможности нет, добрый разработчик предусмотрел три альтернативных способа:

Способ 1: Использование DOSBox
Нужно скачать архив с игрой, распаковать в каталог, подмонтировать его в DOSBox и запустить файл игры, любой из двух. Рекомендуемое число циклов — 5000, чтобы перевести в полный экран, можно использовать Alt+Enter.

Способ 2 (рекомендуемый): Использование дистрибутива с уже настроенным DOSBox
Нужно скачать игру в виде дистрибутива для современных версий Windows с уже настроенным DOSBox, запустить установщик и после завершения — запускать игру ярлыком с вашего Рабочего стола. Работать должно на любой Windows от XP и выше. Если нет желания использовать установщик, можно скачать zip-архив для современных версий Windows с уже настроенным DOSBox, распаковать его в любой каталог и запускать файл DOSBox.exe

Способ 3 (экспериментальный) Использование online-эмуляторов DOS
Я рекомендую вот этот
virtualconsoles.com/online-emulators/dos/
Загружаем в него архив с игрой, в консоли пишем game.exe и играем прямо в броузере. Есть проблемы — на некоторых броузерах эмулятор не работает как надо, установить закономерность не удалось.
Есть и другие сайты с эмуляторами.

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

На чём это написано

Движок игры (работа со спрайтами и видеопамятью) — на ассемблере, компилятор NASM.
Игровая логика — компилятор Microsoft QuickBasic 4.5
Модель памяти — medium
Форматы спрайтов — индексированный PCX, сжатый RLE
Звуковые эффекты взяты из книги про QuickBasic.
Спрайты, к сожалению, почти все надерганы с Яндекс.Картинок — сам рисовать не умею.
Исходники игры доступны по ссылке выше, если вдруг найдутся желающие в них поковыряться.

Зачем это в 2020-м году

Потому что могу.
И ещё всегда, сколько себя помню, хотел сделать игру для ПК. Игру-то сделал, и год назад даже опубликовал финальную версию, но чувство легкой неудовлетворенности осталось — потому что хотел сделать ещё в те годы, когда «всем хватит 640Кб»©.
Теперь этот висяк длиной в 22 года закрыт. А почему игра с пони — потому что с пони всё становится лучше.

Перспективы

Мои личные хотелки и странные желания — данный проект закрывает полностью.
Но если игра придется по нраву хоть паре человек — я буду дорабатывать. В планах:
  1. Больше режимов сложности (сейчас легкий режим от сложного отличается только скоростью регенерации маны)
  2. Элементы аркады
  3. Разные игровые уровни и задачи (выживание, охота, бесконечный режим)
  4. (вероятно) Перенос игры на что-то более современное и превращение в полноценную аркаду

Благодарности:

  • makise_homura — за тестирование на DOSBox для Эльбруса
  • kuzya93 — за тестирование на процессоре 386
  • Корпорации Microsoft — за божественную IDE QuickBasic 4.5, которая даже спустя десятки лет — всё еще удобна в использовании, и позволяет делать код, а не бороться с окружением.
  • Разработчикам NASM — за то, что их компилятор Ассемблера единственный, кто удовлетворяет аж двум условиям: свободный и собирает 16-ти битный бинарник.

252 комментария

То ли баг, то ли фича, но после потерянной жизни временное бессмертие не работает.
Качал со второй ссылки.
Tankony
+2
Сейчас проверю, спасибо.
UPD: Воспроизвести не удалось, можешь описать подробней?
NTFS Изменён автором
+2
Всё-таки оно работает, просто мало времени на него отведено, таким образом проходя мимо одного монстра тратишь сразу 2 жизни и вроде бы как следующий сразу за ним другой м. тоже коцает.
Вот заснял Спойлерdrive.google.com/file/d/1B5NRJo70khocqBzkhRJxYNj2Mf527ttk/view?usp=sharing
Tankony
+2
Понял, нужно подкрутить длительность бессмертия после урона. Увеличу на 50%, спасибо.
Еще задумался — разумно ли, что в режиме бессмертия не работают прыжки, выстрел и подбирание кристаллов?
NTFS Изменён автором
+3
— Служу игровым разработчикам.
Tankony
+3
Увидел в ленте, подумал, что опять пиксельные игрыы называю 16-битными. Зашёл настрочить гневный комментарий, а игра и впрямь 16-битная. Упс.
В закладочку, интересно пощупать будет-с!
Niko_de_Andjelo
+5
игра и впрямь 16-битная.

«Таков путь»©
NTFS
+4
RaCa
+1
Шикарно! Реально респектище. Ностальгия прямо. Задумался, может на zx spectrum 48к портировать...))

Мана только слишком быстро уходит имхо, даже на легком уровне.
KerHarrad
+3
Эм, мана не уходит. Она расходуется на прыжки и выстрелы.
Хитрость — не нужно монстров бить по одному, нужно их по 3-4 одним шаром истреблять.

zx spectrum 48к

Я не настолько бородат, не осилю.
NTFS Изменён автором
+2
Эм, мана не уходит. Она расходуется на прыжки и выстрелы.
Ну вот многовато расходуется)
Я не настолько бородат, не осилю.
Думаю без труда осилишь Laser Basic с ассемблерными вставками. =)
KerHarrad
+3
Если я окончательно паду в бездну ретрокодинга, то лучше для этого напишу на Фокале

ru.wikipedia.org/wiki/%D0%91%D0%9A_(%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%B2)

Первый мой ПК, всё-таки. Плюс 16 бит, нет проблем с операциями арифметическими.

Ну вот многовато расходуется)

Ну это ж Трикси, а не принцессы. Не те силы.
NTFS Изменён автором
+4
У меня были мысли про пони-игру для спектрума. Но меня пугает не кодинг, а перегонка спрайтов под его упоротый видеорежим))
KerHarrad
+3
Там если верно помню, сложная система представления пикселей. В отличии от MS-DOS, где нетрадиционные отношения с видеопамятью начинаются только от VESA и выше.
NTFS
+2
Да проблема не в схеме пикселей, за столько лет там уже придуманы процедуры быстрого вывода, вылизанные на 146%)) Там фигня в том, что в квадрате 8х8 пикселей может быть только два цвета. Если у тебя скажем столкнутся два разноцветных спрайта, то цвет перекроется тем, который вывелся последним. Называется «клэшинг атрибутов». И делать спрайты и фон, которые по возможности менее подвержены этой хрени — довольно занудно.
KerHarrad Изменён автором
+3
Это какой-то мегапиксельный режим получается :-)
NTFS
+2
когда у тебя всего 6кб видеопамяти… ))
KerHarrad
+4
А на кузиной технике оно такое хтонически-красное, будто Трикси не иначе как в преисподнюю за алмазами полезла.
Dany
0
Ну дык, я после его испытаний и вписал в системные требования «цветной монитор». А то еще кто-нибудь на монохроме решит запускать :-)
А вот с сопроцессором проблем не нашли, пашет и так, и этак.
NTFS Изменён автором
+2
Кстати, а так и должно быть, что даже на цветном вон те монстры-пеньки со скринов сливаются со светло-коричневыми стенами?
Dany
0
Увы, да. Я пытался сделать цветокоррекцию «на коленке», но с индексированными цветами, это не так просто, и выбор исходных спрайтов, подходящих под мои цели, ограничен.
В динамике, они более заметны на фоне, но по уму, как будет денежка, закажу пиксельным художникам эти пять анимаций.
NTFS
+2
Игра казуал. Игра хардкор.

— Зачем слова такие «юзаешь»? Пиши: «Игра лёгкая» и «Игра сложная».
— Так ведь намного лучше звучит.
Striped_Snob
+1
Игрище зЂло сложныя, на вычiслитиле електронномъ запускаЂмое.
KerHarrad
+6
Ё-моё, ну комон, ребята — несмешно уже. «Игра казуал»: так пишут лишь плохие локализаторы.
Striped_Snob
0
Справедливо, уже обновил скрины.
NTFS
+2
Так и переименовал в финальной версии, это забыл скриншоты исправить :-)
Сейчас поправлю, спасибо что заметил.
NTFS
+3
Ладно, я всё понял. А самой игрой — я займусь потом (на днях), тогда и оставлю отзыв.
Striped_Snob
0
partizan150
+3
У меня даже есть понифицированные названия эти, кто-то из талантливых брони сделал.
В следующей версии добавлю, если будут заинтересованные.
NTFS
+6
Добавляй! ))
GARRIF1
+1
Vox populi vox Deus
NTFS
+4
Плюсуюсь к добавлению =)
makise_homura Изменён автором
0
А теперь вшить в картридж и на сегу.
partizan150
0
Дело хорошее, только там собственный ассемблер и это семь кругов девелоперского ада.
NTFS
+2
Пили свою приставку!
partizan150
0
Ты не поверишь, но и такие планы были, и даже набрасывал собственный вариант игрового ассемблера для МК (команды для копирования памяти по маске и альфе, например).
Как детей разгоню на учебу в вузах — может, и займусь.
NTFS
+3
А вдруг помрёшь к тому времени?
partizan150
0
Ну значит, не займусь. В гробу нет розетки для паяльника, да и вентиляция неважная — а свинец в припое не полезен для здоровья.
NTFS Изменён автором
+2
В любом случае поиграть через мой usb-геймпад копирующий сеговский не судьба.
partizan150
0
Цитируя классику: за вакуумом нет будущего — малопитательная среда и нет витаминов. :)
xvc23847
0
Может, я не понимаю специфики, но ромхакеры вовсю юзают asm68k или GNU AS для m68k (кому что нравится), и бед не знают.

UPD: я неправильно проинтерпретировал слово «ассемблер»: не «программа-сборщик», а «язык»
std282 Изменён автором
0
«Как в это играть»
1)…
2)…
3)…
4)…

Нормальные люди с дискеты с ДОСом грузятся и все )… Нормальные, да...)))
GARRIF1
+2
причем с 5.25" дискеты)))
KerHarrad
+4
Знакомый пару лет назад поднимал данные с 8" дискет записанных в 82-м году. Половина записанного прочиталась )
GARRIF1
+3
Прикольно) А у нас неск лет назад их кучу выбросили на работе.
KerHarrad
+4
Парочку то хоть на коллекцию оставил? )
GARRIF1
+2
Ага)
KerHarrad
+4
Молоток! )
Самое первое знакомство с устройствами хранения данных, было в глубоком детстве, в виде притащенного отцом прибамбаса, похожего на стопку патефонных пластинок в круглом корпусе.
GARRIF1
+2
Один из первых «винчестеров» походу))
KerHarrad
+4
Вроде того ) Бессчетные тысячи советских дачников из этих «пластинок», себе телевизионные антенны делали.
GARRIF1
+2
Ага, была такая тоже из этих пластин)
KerHarrad
+3
Порылся тут немного, улыбнуло )

«Стоит отметить, что ленточные накопители, как правило, используются в тех сферах, где необходимо хранить очень большое количество информации. Например, в каких-либо крупных исследованиях. Так, магнитную ленту используют для записи результатов исследований на Большом адронном коллайдере. О преимуществах технологии в свое время рассказывал Альберто Пейс (Alberto Pace) — глава подразделения обработки и хранения данных CERN. Он отметил, что магнитная лента имеет четыре основных преимущества над жесткими дисками. Прежде всего, это скорость. Несмотря на то, что специализированному роботу требуется до 40 секунд, чтобы выбрать нужную кассету и вставить ее в считыватель, чтение данных из ленты происходит в четыре раза быстрее, чем с жесткого диска. Еще одним преимуществом магнитной ленты, по словам Пейса, является ее надежность. Если она рвётся, то ее можно легко склеить. В этом случае теряется лишь несколько сотен мегабайт данных. Когда выходит из строя жесткий диск, теряются абсолютно все данные. Глава подразделения CERN привел некоторые статистические данные, касающиеся надежности устройств. Так, в среднем за год в CERN из 100 петабайт данных, хранящихся на магнитных лентах, теряется лишь несколько сотен мегабайт. На жестких дисках располагается около 50 петабайт информации, и каждый год организация теряет до нескольких сотен терабайт в результате неисправностей HDD. Третьим преимуществом магнитной ленты является ее энергоэффективность, а точнее, экономичность. Сами ленты хранятся в неактивном состоянии, следовательно, они не потребляют энергию. Наконец, четвертое — это безопасность. Если злоумышленники получат доступ к жестким дискам, то они смогут уничтожить всю информацию за считанные минуты. В случае с магнитными лентами на это может уйти не один год.»
GARRIF1
+6
В случае с магнитными лентами на это может уйти не один год
если рулоны оной не положить на простую аудиоколонку…
Navk
0
И это есть у меня. Но есть не только лишь у всех.
NTFS
+3
Тема даж в «вестник табуна» попала =)
KerHarrad
+5
Хотел трололнуть, но передумал. :)
Angelripper Изменён автором
+2
Вот выиграешь — тогда и тролли… 888-)
А не выиграешь — будешь на ZX-Спектрум (Синклер) оную игру переводить. Вручную… И на магнитофонные кассеты сохранять…
Navk
0
*Ненадолго вынырнув из SotA:*
Прикольно, респект! =)
VIM
+4
Спасибо, старался. Про твою идею с ремейком старых игр в понную тематику — помню, займусь в положенное время.
NTFS
+4
Движок игры (работа со спрайтами и видеопамятью) — на ассемблере

Извращенцы…
Sasha-Flyer
0
Иных вариантов нет. Все языки высокого уровня (даже чистый С) — не обеспечивают должной чистоты генерируемого кода. Грубо говоря, даже a[i]:=123 вместо mov ax,123 и stosw — даёт вызов библиотечной функции, а это непорядок.
NTFS
+2
Чистый С как раз дает именно mov ax,123 надо только -О3 включить опцию.
KerHarrad
+5
Это мне напомнило… GCC же не может вроде как в нормальную компиляцию под 16-битные x86. Вообще есть нормальные (хотя бы кросс-) компиляторы C под DOS? Я тоже хотел поиграть с такими как-то раз, но собирать код неудобно было, так что бросил.
std282
0
Вообще есть нормальные (хотя бы кросс-) компиляторы C под DOS?

Это хороший вопрос. Я в процессе работы пересмотрел множество вариантов — по факту, если нужно разрабатывать для 16 бит и не красить паруса в черный цвет — то есть только два способа: OpenWatcom и Turbo C. Первый допускает некоммерческое использование частными лицами, а второй недавно был отдан в аналогичное использование компанией-владельцем, версия 2.1
Подробней об этом в посте про разработку расскажу.
NTFS Изменён автором
+3
GCC может вообще все, даже под твою собственную придуманную операционку (для КолибриОС например им собирают), но для этого надо настраивать конфиг его линкера, принося при этом великие жертвы Ктулху и Молестии))
KerHarrad
+4
Это-то я вроде бы понимаю. Сам как-то раз научил m68k-linux-gnu-gcc собирать под сегу. Было классно, хотя я ничего на нем так и не написал.

Проблема в том, чтобы заставить его эмитировать инструкции для 16-битных процессоров.
std282
0
Любопытно даже стало… мой GCC 9.1 для -march дает выхлоп опций начиная с 386, однако есть и такое

-mtune=CPU optimize for CPU, CPU is one of:
generic32, generic64, i8086, i186, i286, i386, i486,
i586, i686, pentium, pentiumpro, pentiumii,
pentiumiii, pentium4, prescott, nocona, core, core2,
corei7, l1om, k1om, iamcu, k6, k6_2, athlon, opteron,
k8, amdfam10, bdver1, bdver2, bdver3, bdver4, znver1,
btver1, btver2
KerHarrad
+2
Согласен, любопытно. Попробую поиграть как-нибудь, пособирать под DOS, хотя бы COM, а не EXE.
std282 Изменён автором
0
И да, спасибо за наводку. Сам я плохо разбираюсь в процессорах архитектуры x86, и нуждался в некоторой подсказке по этой части.
std282
0
i486

При включении этого режима компилятор начнет работать с сегментами кода по 64Кб, эмулировать самодельную кучу в пределах 640Кб, собирать дальние указатели из сегмента/смещения, наконец, использовать прерывания int 13h и int 21h для файловых операций? Если нет, то это тыква вместо кареты выходит.
Я тоже немного порылся насчет этого и пришел к выводу, что gcc это светлое настоящее, а для темного прошлого, выбор ограничен.
NTFS Изменён автором
+3
i8086, i186, i286
O.o где это такая радость?
Мой говорит так:
flandre ~ # echo | gcc -xc -march=i8086 -
cc1: error: bad value (‘i8086’) for ‘-march=’ switch
cc1: note: valid arguments to ‘-march=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2
flandre ~ # gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright © 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

flandre ~ #
makise_homura
0
Найди мне тогда кодгенератор под i8086 =)
Технически, наверное, это можно реализовать, но такого бэкенда, увы, к gcc ещё никто не написал и вряд ли напишет (учитывая то, что вроде как gcc не умеет во внутреннее представление gcc-ir меньше 32 бит, но тут я могу ошибаться).
makise_homura
0
Вот тут наткнулся, пока копал порт ядра Linux под 8086:
gcc cross-compiler for 16-bit x86 processors (2019)

Может кому пригодится, как и SDCC
Andrew-R
+3
Спасибо, изучу. Кросс-компиляция, конечно, удовольствие сомнительное, но в ряде случае, таки лучше, чем древние инструменты со спорной лицензией.
NTFS
+1
Ого!
А вот это уже интересно.
порт ядра Linux под 8086
О.о Это вообще возможно? Там же столько завязано на особенности защищённого режима i386.
UPD: а хотя посмотрел, похоже, это не порт ядра Linux, а скорее написанное с нуля похожее ядро.
makise_homura
0
GCC же не может вроде как в нормальную компиляцию под 16-битные x86
Не может, затверждаю, пробовал — минимальное ABI, которое умеет использовать стоковый GCC — i386.
makise_homura
0
Когда там -O3, он начинает всякие MMX-шные вещи пытаться лепить =)
А указать ему что-то ниже i686 у меня не удавалось.
mov ax,123 он делает уже на -O1 или -O2 (да и на -O0 не сильно больше — типа mov di, a; mov bx, i; mov ax, 123; mov [bx + di], ax). При присваивании как раз-таки библиотечных функций не вызывается (кроме особых случаев, типа профилирования и санитайзинга, но мы не будем про них).
makise_homura
0
mov di, a; mov bx, i; mov ax, 123; mov [bx + di], ax).

То есть, если это делать в цикле, то псевдокод будет такого типа

for (int i=0; i<100; i++) {
  mov di, a
  mov bx, i
  mov ax, 123
  mov [bx + di], ax
}


или такого?
mov di, a
mov ax, 123
for (int i=0; i<100; i++) {
  mov bx, i
  mov [bx + di], ax
}
NTFS Изменён автором
0
Я думаю, зависит от реализации компилятора (но уже на -О1 код уже точно будет второго типа, поскольку вынос констант за цикл — это одна из первых оптимизаций; плюс ещё какие-то переменные будут размещены на регистрах — например, в этом случае i).
makise_homura
0
Можно сидеть в паскале и писать там же ассемблерные процедуры, не отходя от кассы )
Ori
0
Turbo Pascal 5.5, который сейчас является бесплатным для некоммерческого использования, не поддерживает ассемблерные вставки, только линковку obj
NTFS
+2
Так прям нужна свобода? Есть free pascal и вроде он даже может что-то 16-битное компилировать, но я не знаю точно…

Википедия пишет, что turbo pascal сейчас abandonware. То есть его нельзя официально купить, он не поддерживается и компания от него не получает доходов. Преследовать за использование тоже никто не будет и ущерб ты никому не наносишь.
Ori
0
Английская википедия говорит, что французскую версию седьмого официально освобождали.
Ori
0
Да, Free Pascal может компилировать для доса и в нем все еще есть ассемблерные процедуры.
Ori
0
Free Pascal может компилировать для дос

Увы, только через GO32v2 extender
NTFS
+2

А это тоже экстендер?
Ori
0
Откуда эта картинка?
UPD: на странице загрузок есть только DOS (GOV32v2)
NTFS Изменён автором
+1
Из той же таблицы в википедии. Внизу там. И на странице загрузок тоже есть. i8086 там написано. Или это что-то вообще не то? Я скачал, там лежит вроде-как компилятор, запускается под виндой. Но скомпилировать helloworld не получилось, пишет что модуль system не нашел. IDE нету, к сожалению. Ну или они не прикладывают IDE к каждому компилятору и надо компилятор к IDE самому прикладывать )
Ori Изменён автором
0
Хм, любопытно. Сейчас попробую.
NTFS
+1
Короче, я опробовал — пока что победить не смог.
1) Он работает как кросс-компилятор
2) Ему нужны еще NASM и Watcom, причем OpenWatcom мой не жует (вот в этом пока застопорился)
3) Формируемый файл очень жирный получается (правда, этим все компиляторы страдают, кроме OpenWatcom)
4) Для него нет IDE и отладчика, следовательно, это всё превращается в тыкву при попытке написать что-то сложнее Hello, pony!

Хотя конечно, это намного лучше, чем ничего — вся мощь ObjFpc в 16 бит, это реально круто, даже с учетом хлопот сборки и необходимости отдельно править файл.
NTFS Изменён автором
+2
Закончил исследование, собрал на FPC проект через кросскомпиляцию на Hello World.
Работает под DOSBox нормально, под 486 проверю завтра.
НО: exe-файл на medium модели занимает аж 16Кб, а аналогичная сборка в TP5.5 — дает 2Кб.
То есть, в условиях драгоценного ОЗУ это дофига и больше.
Потыкаю еще ключи компилятора на предмет выкидывания лишних процедур, но скорее всего, ожидать от кросскомпилятора безумной эффективности не стоит.

В любом случае, спасибо за наводку, всегда лучше иметь дополнительный инструмент.
NTFS
+1
Ее, паскаль стронк )

Ну я не думал, конечно, что в 2020-м на паскале для доса нельзя просто так взять и легально писать что-либо.
Ori
0
паскале для доса

Для DOS — можно.
Сложно сделать 16-битный код, с сегментами, дальними указателями, моделями памяти, вот это всё.
NTFS
0
Вдогонку — проверил собранный FPC код на 486-ом (чистая система без расширений), нормально работает, хотя размер бинарника в 16Кб, конечно, смущает.
Будет запасным вариантом — можно, например, писать и отлаживать в Turbo, а собирать для выпуска уже в FPC.
NTFS Изменён автором
0
Ммм… а будут ли они настолько совместимы? Я фрипаскалем почти не пользовался, но увидел, что там функция Round, например, по-другому работает. В tp она делает обычное математическое округление, а во фрипаскале банковское.
Ori
0
А никто не говорил, что будет легко. Разработка для забытых людьми и производителями систем — это то еще извращение.
NTFS
0
Ну по идее ты просто берешь ту среду, которой люди пользовались в то время и повторяешь тот же самый техпроцесс. Без особых извращений. Проблема только в легальности )
Ori
0
и повторяешь тот же самый техпроцесс

Тот же самый не получится — хотя у меня и есть натуральный 486-ой, но кодировать серьезно непосредственно на нём — это страдание. А на современном ПК — это эмуляторы, даже лучшие из которых не дают эффекта 1-в-1
NTFS
0
Как я понял, интересует не просто DOS, а 16-битный real mode ABI.

UPD: а, полистал дальше, там есть 8086. Сорян.
makise_homura Изменён автором
0
французскую версию седьмого официально освобождали.

Из статьи
Note to internationnal users: This free Turbo Pascal 7 is available in French Only. The US version of Turbo Pascal 7 is not available as free download yet.

Мы не во Франции, самую малость.
NTFS
+3
Так прям нужна свобода?

Я стараюсь не использовать пиратский софт без крайней-крайней нужды, а на работе так и совсем не использовать. Мне моя задница дорога.

Есть free pascal и вроде он даже может что-то 16-битное компилировать

Не-а, он делает бинарники под DOS, но в режиме 32-битного кода, через cwsdpmi.exe. Туда же относятся FreeBasic и прочие. Под DOS — работают. Но не в 16-битном режиме.

Википедия пишет, что turbo pascal сейчас abandonware

Эти вопросы лучше уточнять не в википедии, а у правобладателя — embarcadero недавно отдали в свободное некоммерческое пользование turbo pascal 5.5 и turbo C 2.1
По более новым версиям, уточню, но сильно сомневаюсь.
Тот же QuickBasic 4.5 не вполне свободен — его можно использовать подписчикам MSDN, а без этого, я не уверен, ибо трижды общался с Microsoft, и два раза сказали «используйте», а в третий раз сказали «оформляйте подписку».
NTFS
+2
Так я тоже стараюсь, и с работой все понятно, но это же не работа. Какова вероятность, что правообладатель из США докопается до какой-то некоммерческой фанатской игры на технологии 26-летней давности? Тут скорее Хасбро докопается за использование персонажей, чем Эмбаркадеро )

А там в таблице написано 8086… ну, я подробно не шарю, конечно…

Да уж, ну хоть Free DOS сделали, хоть за что-то уж точно не надо платить )
Ori
0
Какова вероятность, что правообладатель из США докопается до какой-то некоммерческой фанатской игры на технологии 26-летней давности?

У нас это немного не так работает. За нелегальное использование ПО — наказывает не правообладатель, а местные органы, а им вообще пофиг, какой там давности софт. Есть программа на ПК? Есть. Нет на неё документов? Нет. Всё, уголовное дело готово.
NTFS
+3
И у вас там менты по домам ходят, ПО проверяют? Проверяется всегда только то, что коммерциализировано, с чего прибыль получается. Вот если бы ты продавал игру, то тогда мог бы привлечь к себе внимание.
Ori
0
И у вас там менты по домам ходят, ПО проверяют?

Я ИП, могут быть проверки.
NTFS
+2
We are no longer selling 16 bit development tools because they are not considered to be Y2K compliant. This includes Turbo Pascal 7 and Turbo Pascal for Windows 1.5 (the latest version of each). Copies of these products may still be available in some stores.
(там)
Если не продают, значит abandon. Ну он не может принести им прибыли, если они его не продают ) Неспособен! Значит невозможно им недополучить прибыль от твоего пиратства. Значит можно пиратить.

Есть смысл запариваться с лицензиями на живое ПО, но на давно мертвое то зачем?
Ori
0
Ради палочной системы МВД.
partizan150
0
Которая работает только по организациям. И то не по всем. Мы три года в маленьком отдельчике канцтоваров ждали подобную проверку и были готовы к ней — все лицензионное или свободное. Но никто так и не пришел. Прийти могут в школу, колледж какой-нибудь, большую контору, где много компов и наверняка есть пиратский софт.
Ori
0
Так НТФС в силу ИП сам себе организация. Причем отвечающая всей своей собственностью, а не тем что у фирм на балансах лежит.
partizan150
0
всей своей собственностью

Из собственности у меня только резиновый флот и велик «Урал», да компьютеры разного класса.
Но всё равно мало приятного, если драть начнут по всей строгости закона.
NTFS
+1
Так я это понял, как только он сказал «Я ИП» )
Ori
0
Выше уже объяснил — у полиции нет терминов abandon, есть только наличие документов на ПО и отсутствие документов на ПО.
Доходит порой до смешного, что за GPL прилетают проблемы, ибо нет официального перевода на русский.
NTFS
+1
Я про abandon пишу для твоей совести, а с полицией понятно )
Ori
0
Да то понятно, что под 16 бит уже никто коммерческого не делает. Просто хочется по закону все делать, если есть возможность.
NTFS
+1
Ну тут аргумент Столлмана. Знать, что ты прав, и думать, что может прав, может нет, зная, что наказания не будет — две большие разницы, как говорится.
makise_homura
0
Процессор 386SX или лучше (оптимально работает на 486DX)
Частота процессора от 30 МГц и выше (на 20 МГц игра работает, но заметно медленнее)

Это что вообще такое?..
Sasha-Flyer
0
Давным-давно, когда компьютеры были большими… )))
VIM
+5
Почему бы просто не забыть эти ужасные времена?
Sasha-Flyer
0
— Саша — ну хватит причитать уже, каждый раз, когда тебе что-то кажется устаревшим (так ведь никаких сил не напасёшься).
Striped_Snob
+1
Сане просто ну ооооочень хочется сказать что-то умное и в тему, но поскольку он абсолютно некомпетентен и не очень умен — получается вот так как получается))
KerHarrad Изменён автором
+5
Не, вот справедливости ради, сейчас он не особо далек от истины. Сабж поста приколен, как хобби, но когда требуются такие многостраничные инструкции для запуска, и причитания, что компилятор C генерирует слишком много мусора — уже не совсем здорово.
StaSyaN
+1
Сабж поста приколен, как хобби

Ну для забавы и сделано. Это даже как некоммерческий проект соберет максимум десятка два пользователей здесь и еще может десяток добавится, как выкину на old-games
Для серьезной (в рамках любительской серьезности) работы — конечно, совсем другие системы использую.

многостраничные инструкции для запуска

copy A:\game.zip C:\games
c:
cd c:\games
pkunzip -d game.zip
cd game
game_fpu.exe

Всё остальное — это для случая, когда нет совместимого ПК. Для запуска игр какой-то нибудь dendy или sega — тоже толстые инструкции и жирные эмуляторы водят.
NTFS
0
Ну у меня складывается ощущение, что некоторые это воспринимают слишком всерьез, но может быть это я, ладно.

А так эмуляторы — обычно уже для того, что когда-то давно было написано для другой уже не живой (для которой кончилась поддержка производителем, и никто всерьез не пилит ничего) системы, и прогонять новые штуки через это — все-таки немного странно. Можно и эстетически косить под старые добрые (если делать это всерьез, разумеется). Я как-то ржаки ради за пару дней набросал подобие темы для тумблр, которая рисуется полностью текстом (с телефона не пашет, да и код в целом говна (да и стоило бы опираться не на хтмл, а нормальное апи)). Не делал парсинг оформления текста и репостов.

Спойлертак вот куда я гайд по жидкостям схоронил...
StaSyaN Изменён автором
0
все-таки немного странно.

Не более странно, чем сайт, на котором тысяча мужиков някают, смотрят серии про пони и обсуждают Сумеречных Искорок с Принцессами и единорогами.
NTFS
+1
А так эмуляторы — обычно уже для того, что когда-то давно было написано
Есть энтузиасты, которые до сих пор пишут игры для PC-98 и спектрумов, чем 8086 хуже?..
темы для тумблр, которая рисуется полностью текстом
А прикольно выглядит. Ещё бы шрифт типа Classic Console заюзать, было б совсем аутентично.
makise_homura
+1
компилятор C генерирует слишком много мусора

Если С компилирует слишком много мусора, то что тогда Питон генерирует?
Sasha-Flyer
0
Он интерпретирует.
NTFS
0
Там есть JIT компиляция в байткод, который выполняет его виртуальная машинка. Но я не знаю, всегда ли это происходит или надо специально настраивать.
Ori
0
Насколько я знаю, питон может сгенерировать бинарник, но является ли это банальным встраиванием интерпретатора, или все же что-то более низкоуровневое — не знаю.
StaSyaN
0
Может, делал, они тяжелые, так что наверняка в каждом лежит маленький питончик )
Ori
0
Обычно под JIT подразумевают компиляцию прямо в машинный код, а такого в стандартном CPython нет. Многочисленные попытки прикрутить JIT (настоящий) или что-нибудь ещё такое существенных результатов не дали, потому что питон неисправимое говно
andreymal Изменён автором
0
Спойлер
partizan150
+1
ужасные времена

Не такие и ужасные. Хотя да, порог вхождения в разработку ПО был чуть повыше. Как минимум, Ассемблер входил в список требований для разработки быстрых приложений, да и понимать железную часть было желательно хотя бы в общих местах.
NTFS Изменён автором
+2
Вот и я про то, абсолютно необоснованная сложность была. программист это такая же простая профессия, как и уборщик. И нехрен тут ничего усложнять
Sasha-Flyer
-1
То-то ты со своей недоигрой эпично обосрался))
KerHarrad
+3
Некоторые люди делают такое just for fun. Ну и, например, чтоб мозги держать в тонусе.
std282
+1
Сане just for fun не понять. Он же мечтал своей ККИ мега-ворваться, по крайней мере на конкурс игр так точно))
KerHarrad Изменён автором
+4
Уважающий себя программист всегда будет стараться оптимизировать код. Но большинство современных кодеров себя не уважает, более того — они находятся в заговоре с производителями железа и сознательно лепят неоптимизированные поделия, поэтому must die.
VIM
+4
они находятся в заговоре с производителями железа
Не думаю… как говорится «не ищите злой умысел там, где можно обойтись простой глупостью». Далеко ходить то не надо — тот же СаняФраер.
KerHarrad
+3
Заговор необязательно должен быть осознанным. Но некоторые факты налицо — вроде того приснопамятного случая, когда после очередного обновления Винды некоторым пользователям прилетел ответ на резонный вопрос в техподдержку: «Купите себе новый компьютер». ;)
VIM
+3
Если «заговор» неосознанный, то это уже никакой нафиг не заговор, учи словарь бестолочь.
vorodor Изменён автором
+1
Далан. Нет, конечно. Представь секту с неясными для дилетантов целями. Цели эти ясны только главным иерархам, а мелкие сошки, выполняющие рутинную работу, не должны чётко представлять истинные цели организации. И обычно не представляют, пока где-то в метро ОВ не распылят.))) Вот так же и тут. Заговор — вовсе не аморфное облако тегов, у него есть есть организаторы, а исполнителям вредно знать все подробности плана.)))
VIM Изменён автором
+4
Ну так если организаторы «заговора» в курсе, то какой же он нафиг «неосознанный»? Ты сам себе противоречишь.
vorodor Изменён автором
+1
Неосознанный он на уровне программеров. Им некогда анализировать заговоры, у них перманентный кранч.)))
VIM Изменён автором
+4
Ну в любом случае, уже раздаются звоночки, что скоро индусской вольнице конец придет. Закон Мура — всё… а наращивать ядра вместо частоты далеко не для всех задач подходит.
KerHarrad
+4
Мне вот интересно, а разве нельзя взять два ядра, заставить их работать синхронно со смещением 1/2 такта, и таким образом получить одно виртуальное ядро с удвоенной частотой?
Niko_de_Andjelo
+1
Ты изобрел пентиум-4))
KerHarrad
+5
del
std282 Изменён автором
0
Пентковский аплодирует тебе с того света.)))
VIM
+4
Вообще всем интересующимся архитектурой процов/компов на тему «а что если...» и «почему бы не...» рекомендую найти и хотя бы диагонально прочитать книжку

Цифровая схемотехника и архитектура компьютера (второе издание) — Дэвид М. Харрис и Сара Л. Харрис

Она многое объясняет
KerHarrad Изменён автором
+7
Вот кстати очень табунчую. Очень полезный фолиант.
makise_homura
0
Для этого даже несколько ядер не нужно, можно обойтись одним, только сделать несколько дешифраторов и буферов инструкций и несколько каналов исполнения, и получить суперскаляр =) А можно и сделать два независимых кэша инструкций, два указателя команд, и бац — мы получили гипертрединг. Только чем дальше, тем больше это будет упираться в память, в TLB, в IOMMU и ввод-вывод в целом, и т.п.
makise_homura
0
а наращивать ядра вместо частоты далеко не для всех задач подходит.

Просто переведут всё в облако. Уже в общем-то мало задач, которым требуется прямо вот физическая машина. А дальше и того будет меньше.
NTFS
+2
Будет смысл когда появится гигабитный интернет с околонулевой задержкой.
Maxwell Изменён автором
-1
Не знаю, за что тебе минус поставили — суждение спорное, но разумное.
Исправил.
По Интернету — не обязательно гигабитный, достаточно разделение вычислительной части и графической, а это реализовано с 1993 года, со времен Windows 3.11
NTFS
+3
Да все равно пинг нивелирует все плюсы наверно
Maxwell
-1
Не считая потерю пакетов
Maxwell
0
Дома использую рдп с одного компа на другой (они относительно разделены, но в пределах локалки провайдера) по причине картофельности одного из них. Кроме ютуба (хотя можно уменьшить окошко и уже вполне норм) все работает достаточно комфортно. А стим уже умеет в облачный гейминг такого рода, и, о да, оно тоже относительно юзабельно.
StaSyaN Изменён автором
0
На гигабитном (802.3ab) околонулевую задержку не получить. Сейчас объективно минимум, который даёт отзывчивость удалённого сервиса, неотличимую от локальной — 10 и 25 гигабит, причём стек не TCP/IP, а Infiniband или что-нибудь подобное.
makise_homura
0
Безопасность и личные задачи требуют железа. Я вот никогда не перейду в облако, хотя опыт игры в какую-то топовую только что вышедшую игру с калькулятора на 10 лет старше этой игры был… впечатляющим. Но пока в мире царствует капитализм, переходить в облако нельзя.
Niko_de_Andjelo
+1
Но пока в мире царствует капитализм
Казалось бы причём тут он
Maxwell
-2
Потому что всегда должен быть Сатана, который по заветам Адольфа должен быть виноват во всём.
partizan150
0
Сатана норм парень, я сериал про него смотрел
Maxwell
0
Это где он из ада свалил и клуб открыл?
partizan150
0
Ага
Maxwell
0
Безопасность

Паяльник всегда эффективней криптоанализа. Просто большинство наших мелких бытовых грешков вроде хранения фоточек Селестии без накопытников или пиратской версии любимой игрульки — никому не интересны, хоть в облаке, хоть на ПК.
Сложности начинаются для юрлиц и состоятельных (от десяти лямов нала) частных лиц.
NTFS Изменён автором
+2
Нет, под безопасностью я имел ввиду другое. Селестия без накопытников — це личное.

А о безопасности я думаю так:
1) Твоя информация лежит на чужих серверах. Её могут оттуда угнать, её могут продать (собственно, facebook сливает всю конфиденциальную инфу властям, это вроде давно известно), они могут случайно её слить — и ты вообще никак не повлияешь на ситуацию.
2) Владелец облака может уничтожить твою информацию просто изменив пару пунктов в договоре. Кажется, во всех современных договорах есть пункты о возможности изменения договора в одностороннем порядке, или типа того. И информация пропала. Когда она лежит у тебя дома, опасностей тоже много, но есть резервное копирование, а всё прочее — твоя личная вина.
3) Наконец, облака тоже не застрахованы от физических или вирусных поломок, и это тоже может убить информацию.

никому не интересны, хоть в облаке, хоть на ПК.

В облаках давно есть (пока ещё не везде, наверное, но в будущем точно будет везде) автоматическая проверка загружаемых папочек. Я проводил эксперимент, и меня в ВК автоматом забанили прямо в процессе загрузок пикч. Все электронные книги уже очень давно нельзя загрузить в ВК, потому что они автоматически заменяются на ссылку в магазин. Музыку нельзя скачать (А я её там копил. И что мне прикажете теперь делать с плейлистом, который я не могу скачать?)
Niko_de_Andjelo Изменён автором
0
В двух словах — облака это не более чем бэкап тир-3, и обязательно с полным шифрованием (причем на твоей стороне).
KerHarrad
+1
Смотря для каких целей. Например, я там храню только более-менее законную мелкую хрень, вроде пиратских игр времён смены тысячелетий, своих игр, программ и фанфиков, любимых картинок, учебной макулатуры. Очень удобно использовать облако как виртуальную карту — проходишь древнюю игру на ноутбуке в одном месте, заливаешь сохранение в облако, приходишь домой, скачиваешь и продолжаешь играть.
Шифровать всё это лично для меня нет никакого смысла. А ценная инфа хранится на винтах. Правда, нужно задуматься уже о создании физических резервных копий, но винты стоят денег…
Niko_de_Andjelo Изменён автором
0
Сегодня законно, а завтра… Вон до людей за посты 20-летней давности докапываются)
KerHarrad
+1
Опять же, говоря про это:
Сложности начинаются для юрлиц и состоятельных (от десяти лямов нала) частных лиц.

И здесь я согласен. Если я стану всемирно известным писателем, то удалю даже то, что считаю абсолютно нормальным, но что может вызвать санкции (пиратскую версию бесплатной игры, лул). А до тех пор — нi
Niko_de_Andjelo
0
А ты не удалишь)) Ты думаешь, что когда нажимаешь в облаке «удалить» — все волшебным образом испаряется? Щазззз… ))
KerHarrad
+2
«Рукописи не горят!»©Воланд
«Файлы не пропадают!»©Нортон
Navk
0
Все проще, без Воландов и Нортонов. Записи из БД физически никто не удаляет, чтоб не тратить ресурсы на бессмысленное забивание нулем. Они просто помечаются тэгом «удалено, тут типа свободно», а до фактической перезаписи дело когда еще дойдет… Плюс остаются образы бэкапов, дедупликация тоже может вклад внести.
KerHarrad
0
вроде хранения фоточек Селестии без накопытников
Воу-воу-воу, да ты по грани ходишь!
Алсо, фоточки? Я только арты видел =)
makise_homura
+1
Места порталов надо знать)) Аборигены тебе фотки всех аликорнов в лучшем виде подгонят, за огненную воду)))
KerHarrad
+1
Что-то ты пиздец загнул и не туда.

Но большинство современных кодеров себя не уважает, более того — они находятся в заговоре с производителями железа и сознательно лепят неоптимизированные поделия
Максимум какие-нибудь гуглы/майкрософты сотрудничают с нвидиями/интелами и по взаимному договору обогащают друг друга. Иначе я требую себе долю, хуле, прибыль обеспечиваю мегакорпорациям.

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

А однопоточное неоптимизированное говно от васяна как лагало 10 лет назад на топовом компе, так и сейчас будет лагать, может разве что не так сильно.
StaSyaN
+1
программист это такая же простая профессия, как и уборщик

Программисты разные бывают. Для нахождения суммы таблицы, действительно, знаний за пределами функций SUM() не нужно. А вот для кодирования высокопроизводительных процедур или сложных систем с множеством связей — уже кое-что требуется сверх.
NTFS
+3
программист это такая же простая профессия, как и уборщик.
Если только копипастить код из интернета, не задумываясь как он работает, то может быть.
Maxwell
-1
Вот Саня так и напейсал свою убер-ККИ… потом только беспомощно блеял, как овца обстригаемая, на простейшие вопросы типа «как защищен канал передачи данных», «сколько траффика жрет» и «почему в 2к19 игра прибита гвоздями к одному разрешению моника»
KerHarrad Изменён автором
+2
«почему в 2к19 игра прибита гвоздями к одному разрешению моника»

Ну нет, на это он дал ответ, что-то в духе «Я посмотрел стату, сейчас 90% мониторов это FHD, поэтому я сделаю только FHD»
Niko_de_Andjelo
0
Ага, хотя все понимают что правильный ответ — «я ниасилил найти, где это в Юнити включается» ))
KerHarrad
+2
Я не шарю в адаптивном дизайне, и это наверное тоже прибивания гвоздями, но можно было бы размещать объекты не по абсолютным координатам, а по относительным, и цифра будет процентом от getCurrentHeight или типа того.
Хотя он вроде говорил про то, що на меньшее все элементы не влезут или типа того. Если он рядом пробегает, пусть сам объяснит, я честно уже не помню.
Niko_de_Andjelo
0
можно было бы размещать объекты не по абсолютным координатам, а по относительным
Естественно. Примерно так и делается еще с зари игростроя, когда был зоопарк разрешений вообще от 320х200 до 1024х768. Но это ж постараться чутка надо, а не хуяк-хуяк, и мега-игра, это не путь ЫффэкТывного погромЫста))
KerHarrad Изменён автором
+1
У меня во всех трех выпущенных относительно серьезных играх разрешение тоже прибито гвоздями — 320x200 тута, 640x480 для Рарити с кристаллами и 1024x768 для Героев Эквестрии.
Просто потому, что так намного проще кодирование, а если кому нужен фуллскрин — Alt+Enter к его услугам.
Правда, я и не говорю на каждом углу, что это правильно и профессионально. Это не совсем правильно и немного непрофессионально.
NTFS
+1
У тебя норм как раз. У тебя оконный режим, и поэтому ничего не разъезжается. А Саня тупо хреначит фулскрин, поэтому у него распегашивает картинку.
KerHarrad
+1
У тебя норм как раз

Не совсем, многим удобно играть в окне, но с высоким разрешением. Потому все нормальные игры имеют опции выбора размера окна и опцию фулскрин для этого размера. Но это сразу создаёт множество проблем для разработчика.
NTFS
+1
Да можно например как в Хуртстоуне сделать, если в лом серьезно возиться… там игровое поле фиксировано, а свободное место при изменении разрешения забивается декоративным фоном. И симпатично выходит вполне.
KerHarrad
+2
программист это такая же простая профессия, как и уборщик

Ну нихера себе сравнил. Уборщик сможет запрограммировать ту же мультиварку? А робота? Программист — это не только игори)))
shadowiq
0
Уборщик сможет запрограммировать ту же мультиварку? А робота?
Может. Подойдёт к мультиварке, нажмёт пару кнопочек — и запрограммирует. Робота ещё проще, если это робот Борис. Несложный свод вербальных команд — и вуаля! — уже пляшет.)))
VIM Изменён автором
+1
Подойдёт к мультиварке, нажмёт пару кнопочек — и запрограммирует.

Использование готовых программ — не программирование. Как учил меня кот Икс — программирование это составление алгоритма для решения задачи на искусственном языке.
NTFS
+2
на искусственном языке.

на синдарине чтоль?
partizan150
0
Петросян.jpg
NTFS
0
partizan150
+1
Игруны в Dreams с тобой не согласятся.)
Спойлер
Не согласятся даже некоторые люди, которые считают себя программистами. Из готовых ассетов можно сваять что-нибудь, не обладая серьёзными знаниями.
Даже я, не будучи программистом, когда-то в VB «создал» простейший браузер, правда, питавшийся системными браузерными ресурсами (IE, кажется). Сам исполняемый файл имел размер несколько десятков килобайт, а библиотеки для дистрибутива занимали больше полутора мегабайт.
VIM Изменён автором
0
не будучи программистом

когда-то в VB

Поздравляю — вы программист, пусть и самого прикладного верхнего уровня.
NTFS
+3
Ага бл*ть, расскажи это когда пропишешь адекватно работающий алгоритм для неписей в конструкте под какой нибудь простенький древний платформер вроде Shadow Knight's.
vorodor
0
Я не уловил сути возражения.
пропишешь адекватно работающий алгоритм для неписей

это пример программирования, не-программирования, или сложной задачи, решаемой без программирования?
NTFS
+1
Это пример вородора, эпично промахивающегося мимо комментариев.
vorodor
+2
Ничего, бывает.
NTFS
+1
Если ты отвечал мне, то промазал в лучших традициях современных игровых кодеров (а-ля беседкиных спецов, ваявших 76-й Фолыч). ;)
Не бери в голову, я больше развлекаюсь, чем поддерживаю серьёзную повестку. Хотя за оптимизацию кода топлю почти что на серьёзных щах.
VIM Изменён автором
0
программист это такая же простая профессия, как и уборщик
Этот аргумент инвалид, потому что уборщик не производит вариабельного результата своей деятельности.
makise_homura
0
Процессоры конца 80-х и начала 90-х. Следующими уже были Pentium-I
NTFS
+2
А можно для нубов написать пост с историей разработки?
Ну, какая архитектура, показать, какой кусок кода что делает и т.д. Можно не очень подробно, просто, приобщить народ к Asm?
Niko_de_Andjelo
0
Сделаю, тоже об этом думал. Там большая история, далеко не сразу удалось воткнуть ассемблерные obj в QuickBasic, да и альтернативные варианты тоже пробовал, но без особого успеха.
NTFS Изменён автором
+3
У-у! У-у-у!!! У-у-у-у-у!!! Я давно уже искал, где все эти досовские звуки взять!?!?!?

В смысле для современных проигрывателей, а не всей этой досбоксовско-ассемблеровской мумба-юмбы.
vorodor Изменён автором
+1
Эмулируй спикер
partizan150
0
Чаго!????
vorodor
+1
Берешь и эмулируешь.
partizan150
0
В смысле для современных проигрывателей

Спикер — это генератор последовательных импульсов заданной частоты и длины. В отличии от звуковых карт, где множество разных звуков идут рядом. Так что оратор ниже прав — нужно просто эмулировать спикер, посылая на звуковую карту несжатое аудио отрезки заданной частоты.
NTFS
+2
Короче, нихералия не понятно, но ооочень интересно. Ладно, буду просто пиздить звуки из уже готовых игорей и распиливать их в аудишине, похоже более простого варианта просто не существует.
vorodor
+1
Смотри: берем звук из обычного wav файла, это последовательность уровней звука, записанных в виде громкости через интервал дискретизации. Берем малый отрезок (10 мс), преобразуем уровни через Фурье, получаем самую главную частоту в этом отрезке. Пишем в выходной файл: 10 мс, 1000 Гц. Берем следующий отрезок, повторяем. Пишем еще информацию: 10 мс, 800 Гц.
И так до конца.
Потом либо выпускаем этот файл на динамик, либо делаем конвертер, который эти отрезки переведет в новый WAV файл, запихав туда полученные частоты.
Я хотел это всё реализовать для игры, но понял, что не хватит времени. Возможно, позже займусь, тогда можно будет любые звуки проигрывать на динамике.
NTFS
+2
Моего скила в аудишине хватает ровно на то, что бы взять звовую дорожку и вырезать из неё кусок.
vorodor
+1
tone();
partizan150
0
Описанное выше требует программирования на уровне чтения бинарных файлов, Фурье-преобразований и работы с массивами.
Если хочешь, сделаю тебе программу для этого.
NTFS Изменён автором
+2
Нет, мне пожалуйста что-то требующее программирования на уровне включить уже готовую программу и ткнуть в неё курсором.
vorodor
+1
Принял, сделаю, как будет минутка. Тебе GUI под Windows?
NTFS Изменён автором
+2
Под виндус, ага, что б вот прям на семёрке запускался.
vorodor
0
Значит, на Qt бахну. Вот прям сегодня-завтра — не обещаю, но сделаю.
NTFS
0
Я вообще-то шутил по большей части, ну ок.

А как из него звуки записываться будут?
vorodor
0
Экспорт в wav или mp3 (если смогу кодек подключить)
NTFS
+1
Вородор счастлив!
vorodor
0
Ты — молодец. Это просто щикарно! Огромное тебе спасибо! —
Morano
0
Я старался, рад, что работа по нраву.
NTFS
+2
У меня одного во время игры тихое гудение идёт?
partizan150
0
Я не слышал. хотя довольно долго играл
KerHarrad
+3
Как включаю его нет. Но появляется после первого же действия со звуком и присутствует пока не выключу игру.
partizan150
0
Это иногда у меня появляется на одной из тестовых машин, понять зависимость пока не удалось. Ты на своём DOSBox работаешь, или используешь вшитый в дистрибутив?
Корень проблемы здесь — звуковая подсистема QuickBasic, которая из-за отсутствия многопоточности в DOS, вынуждена использовать обходные пути с буферизацией и прерыванием. По уму, нужно сделать собственный драйвер звука на спикер, через прерывания таймера. Но сил уже не осталось.
Пожалуй, просто сделаю опцию отключения звука. Дело нужно и в обычном случае.
NTFS Изменён автором
+2
У меня у самого звуковая странно себя ведет. Когда в дискорде с кем-нибудь разговариваю в голосовом чате, то все присутствующие слышат не только что я говорю в микрофон, но и всё то что происходит в системе. Игры, видео, музыку. Слышат всё если я в голосовом.
partizan150
0
Это редкий, но встречающийся баг. У меня как-то так записалась фоновая музыка на видеоурок для клиента — а играли в тот момент всякие композиции Красной Плесени да Агаты Кристи.
NTFS
+3
XXX-D
Navk
+1
Вот в ХР-шке у меня была возможность в канал записи выдавать (или не выдавать, да) не только микрофон/линейный вход, но и Wave Mapper — это был весь звук, который выводится в линейный выход звуковухи. В семёрке этого нет почему-то, и как это сделать, я так и не разобрался (в итоге просто выход завёл кабелем на пульт, который у меня гонит сигнал на линейный вход, и получил почти то же самое, разве что для громкости кручу не ползунок в трее, а физическую ручку на пульте, лол).
makise_homura
0
Если у тебя именно спикер, то там может помочь вывод чего-то в один из портов таймера (буквально одна ассемблерная инструкция out) после завершения звука. Надо гуглить руководство по программированию 8253.
makise_homura
0
Хы-хы



Надо было сразу 16-битную игру делать. Оценка сравнимая :-)
NTFS
+3
Так сказал, будто твои Герои в плане качества далеко от шестнадцатибиток ушли.
vorodor
0
Да и рейтинг поста по сути показывает только количество заинтересовавшихся, так что учитывая население табуна не будет сильно различаться запили ты хоть проект ААА класса.
vorodor
+1
Так сказал, будто твои Герои в плане качества далеко от шестнадцатибиток ушли.

Спойлер
NTFS Изменён автором
+4
Вородор, не вородорь! Игра в самом деле проработанная, сравнить даже трудно с чем.
Doof
0
То есть ты хочешь сказать, что шестнадцатибитные игры не проработанные и ни одну игру с сеги или дэнди даже сравнивать по качеству нельзя с сим невероятным шедевром? Мне кажется, или кто-то тут сильно переоценивает одну конкретную игру?
vorodor
0
Нет, конечно! Но мы же про понячьи игры. :3
Doof
0
Dosbox (Rosa fresh R11) норм.
486SLC/25 (DOS 7.10) немного слабоват (движения чуть замедлены), но в целом норм. Game_fpu.exe естественно мимо, т.к. в этом камне нет плавучки.
Спойлер











Автору респект, посту плюсъ :)
Vl_Jst
+3
Ой, монитор монохромный? У меня там просто особенность — заполненные маны, кристаллы и сердечки отличаются от незаполненных по схеме цветной/серый. Без цветного монитора, играть невозможно. Уже второй человек по факту, надо бы сделать поправку для монохромных.
Какая частота процессора у 486?

И если будет минутка — зайди на 486 в файл DATA/options и включи отображение FPS, вот так

; enable fps indicator
show_fps
; enable loading info
;show_log


а потом напиши, сколько показывает в процессе игры, когда уже много спрайтов движется. Спасибо заранее.
NTFS Изменён автором
+1
Да, без цвета трудно, тем более матрица тут очень скромная (и судя по артефактам — даже не активная).

Какая частота процессора у 486?
25 МГц. Вот этот камень: уже не 386, но еще не 486.

сколько показывает в процессе игры, когда уже много спрайтов движется
В заставке 10, в игре стабильно 8 и не зависит от количества спрайтов (или же игра завершается до того, как я успеваю уловить разницу).
Vl_Jst Изменён автором
+1
Да, без цвета трудно,

Выпущу, опция назрела, как и отключения звука.

25 МГц

Всё верно, у меня нормально работает на 30, а у тестера на 20 — 5-6 FPS.
Другое дело, что игры сравнимого класса вообще-то быстро работали даже на 386-ых, но видимо, их делали с умом.
NTFS Изменён автором
+1
Выпущу, опция назрела, как и отключения звука.
Ещё бы для EGA билд иметь — было б совсем классно =)
makise_homura
0
Увы, это движок с нуля делать, для моих целей смысла нет.
Впрочем, уверен, что кто-то и такое пишет.
NTFS
0
Как обещал, сделал технический пост с описанием, чего и как на предмет разработки всего этого.
tabun.everypony.ru/blog/computers/193991.html
NTFS
+3
Как мне это нравится
NTFS Сделал игруху про Трикси бедняга
и всё началось, а что там с кодом, программисты, обсуждение, горячие споры

и где то среди этого
«Ля Спасибо за игру, отлично сделано»
«пони показывает большой палец.PNG»
Yurka86rus
+2
Афтор жжот! Респект и уважуха!(неуклюже стилизуюсь под историческую эпоху, к которой принадлежат использованые инструменты).
Как говорят психологи — «закрыл гештальт». Бейсик и Ассемблер под окаменевшую ОС. Мое почтение!
Немного скриншотов с запуска на Интел 586.



(возможно будут скрины с 386sx, если найдем ИСА\ЕИСА видео-адаптер)
8a55
+4
О, спасибо, отчет о запуске на железе всегда ценный.
386sx — работать должно, хотя и притормаживать будет.
NTFS
+2
У меня возможно на работе завалялась одна (но это не точно). Если ты в Москве, могу попробовать поискать и дать погонять =)
makise_homura
0
Минимальные системные требования для запуска на физическом железе:
Я б ещё сказал про карточку VGA, а то у меня, например, есть цветной монитор и EGA, но там она не пойдёт =)
Звуковые эффекты взяты из книги про QuickBasic.
О, я, кажется, даже знаю, что это за книга (где-то у меня на какой-то полке она даже лежит...)
makise_homura
0
про карточку VGA

Разумно, обновил.

что это за книга

Как будто есть другое Кольцо Власти издание на русском про QuickBasic…

А остальную информацию, включая модели памяти и способы связи с Ассемблером, нарыл тута
www.pcjs.org/pubs/pc/reference/microsoft/mspl13/basic/

Архив очень ценный, рекомендую его выкачать в сундук.
NTFS Изменён автором
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать