Старый софт, или верните мой...
15 лет назад появился Пикабу.
Но рассказать я в этот раз хочу не про задницы и не про раки, а про одно событие, столь же далёкое.
За год до Пикабу, в 2008 году, 18 июня, появился сайт "Старый DOS".
В то время ниша старых игрушек и программ была уже заполнена (Old-Games.ru, Антиквар, Пятидюймовка, Ветус и, конечно, BetaArchive).
Но я просто сделал. Сейчас, наверное, и не вспомню, как оно, программировать на PHP+JS. Дизайн и верстка всратые, как и положено сайту про 90-е.
За 16 лет были накоплены гигабайты старого софта. Многое было пережито за годы, но ничего не потеряно. Частой гребенкой всем миром прошлись по соседним сайтам, многие из которых затем канули в Лету. Какие-то проекты вполне официально вошли в состав сайта. Люди приходили и уходили (в том числе, к сожалению, и навсегда).
Есть воистину уникальные вещи, которые нам передали сами разработчики. Какие-то программы были разрешены к распространению через нас вполне официально (для ознакомления, естественно).
В оффлайне были попытки устроить встречи и тусовки. Но тут, увы, не зашло как со стороны организаторов (Информатик, сцуко, фу таким быть), так и со стороны участников (среди любителей старых железок повышенный процент, скажем так, удивительных людей).
Был у проекта и проблемный эпизод, когда нас скоренько попытались вытурить от хостера. Вот тогда, честно говоря, подумалось: "вот и сказочке конец, кто скачал, тот молодец". Даже тут пробежало сообщение от кого-то в духе "спаситя-помогитя". Но тогда удалось найти вариант в России, и силами друзей-администраторов переезд состоялся.
Если вы ожидаете, что сейчас будет сбор на хостинг...
То не дождетесь :-)
Лучшее, что вы можете сделать для Старого Доса, это закинуть старые программы, которых у нас ещё нет.
Если нет, то просто знайте - есть место, где это добро лежит и покрывается пылью веков. Там чудеса, там Нортон бродит, и Виндус на ветвях висит...
ЗЫ. Копирасты, кстати, практически не пристают. Ну разве что какая-то конторка решила, что мы толкаем лицухи Каспера. Но спасибо лично Евгению Касперскому, он разобрался не хуже Бастрыкина и навёл порядок.
ЗЫ2. Если считаете, что старому софту надо тихо умереть, то лучше примите этот сайт как цифровой музей и не ходите туда.
ЗЫ3. Про задницы будет позже. Всему свое время. Давно просто хотел про этот проект упомянуть, да вот упоротый тег подвернулся. Надеюсь, он у вас в игноре? )))
Трилогия квестов The Legend of Kyrandia в браузере
Всем привет! А давайте это неделя будет неделей классических квестов? Почему бы и да!
Сегодня поиграем в замечательную трилогию The Legend of Kyrandia, одна из любимейших мной серий. По традиции в браузере.
Играем:
The Legend of Kyrandia (Русская версия)
The Legend of Kyrandia 2: : Hand of Fate (Русская версия)
The Legend of Kyrandia 3: Malcolm's Revenge (Английская версия)
Всем отличного дня и времяпровождения!
Мой уютный Телегеграм канал, где контента и браузерных экспериментов чуть больше.
Мой Телеграм-бот с почти 2400 приставочных и не только игр для браузера и мобилок
Наш Discord - Pikabu Browser Gaming
Мой Steam профиль
Заходите в гости ;)
Запускаем свою любимую DOS или Windows 9x игру в браузере
10 лет назад я основал проект по портированию DOSBox в JavaScript (js-dos). Все эти 10 лет я упорно работал и развивал его. Главная цель создания проекта была в том что бы запустить МОИ любимые игры в браузере:
...
Как видите, я давно достиг этой цели, но продолжал работать над развитием проекта. И теперь он стал на столько хорош, что я готов предложить всем запустить свои любимые игры в браузере!
Сделать это невероятно просто. Я записал обучающее видео:
Милости просим, создавайте архивы с играми, а я опубликую их на DOS.Zone (если захотите).
Windows игры
Как я объясняю в видео Windows игры имеют большой размер. Поэтому js-dos предоставляет облачные диски, которые оптимизированы для работы с Windows. При загрузке игры пересылаются только необходимые сектора диска. Это позволяет запускать большие игры вроде Diablo.
Ни какой магии, за облака плачу я, поэтому что бы пользоваться инфраструктурой необходимо приобрести подписку js-dos. Цена 3$ в месяц.
Но:
Диски остаются за вами навечно, т.е. после отмены подписки остается полный доступ к ним
Первые 5 дней не тарифицируются ;)
Если Вы действительно продемонстрирует желание делать игры для запуска в браузере я дам Вам доступ в подарок
Это отличный способ поддержать проект
DOS Zone браузер
js-dos это полностью браузерное решение, но из-за ограничений WebAssembly получить произвоидетльность сранвимую с ПК версиями DOSBox/X не представляется возможным.
Поэтому я сделал DOS Zone Browser, бразуер на базе electron (chrome) в котором есть аппаратное ускорение для js-dos. Это может быть актуально если у вас слабый ПК.
Там вирусы?
Может быть, не узнаешь пока не установишь. В любом случае всегда лучше проверять то что скачиваешь антивирусом ;)
P. S. Комментарии на пикабу я читаю не очень часто/быстро, поэтому лучше пишите в группу в телеграмме.
Ищу ретро DOS игру по описанию: Лазерный танк с летающей башней
Ещё в детстве (году в 1993м, сама игра может и старше) на 486м ПК играл в неё. 2д вид с боку. Там танк ездит по лабиринту. У танка башня может отделяться от гусеничной платформы, летать и стрелять лазером. Атмосфера футуристичная. Враги там какие-то шары по типу инопланетян. Вроде по сюжету надо доехать до конца уровня чтоб и платформа и пушка доехали и были целыми.
Ещё помню там были какие-то электрические препятствия которые надо было отключать. Графика в целом в серо-голубых тонах.
UPD: игра The Last Mission (1987). Спасибо нашедшему.
RGG (РГГ). Что это такое и с чем едят?
Всем доброго времени суток!
Итак, сегодня разберемся в РГГ(RGG) – что это такое и с чем едят. В миру бытует много аббревиатур RGG, но сегодня речь пойдет именно об одной, той самой…
RGG - Retro Game Gauntlet (ретро игровой челлендж, иногда ретро-видеоигровая рулетка).
Итак, это челлендж, придуманный анонимусами с Форчана, запущенный примерно весной 2013. Суть челленджа в прохождении игр, которые выбирает генератор рандомных чисел, обязывая участника проходить игры так, как люди их проходили на момент выхода. Причем это игры, которые приобрели статус «ретро», а в большинстве – это денди игры, DOS, Spectrum и т.д.
Первые челлендж состоял из следующих 10 игровых платформ: NES, SNES, GB/GBC or Sega Game Gear, Megadrive/Genesis, Turbografx16, DOS, NeoGeo, GBA or Sega Master System, Commodore 64 or Commodore Amiga, Playstation 1 or Nintendo 64.
Правила же были достаточно короткими: ты, как игрок, должен крутить рулетку с рандомными играми из каждой категории платформы, и пройти ту, что выпадет. Платформы проходятся по порядку, как я написал выше. У игрока есть 3 дня, чтобы пройти игру (любую, кроме РПГ, на РПГ давали неделю). Затем игрок имел право «Дропнуть» игру, т.е. спасти себя от игры на данной платформе, но тогда необходимо возвратиться в предыдущее положение и пройти игру на прошлой платформе и снова сыграть в рулетку на следующей платформе. Также игрок имел право на «Рерол» - в случае проблемы с игрой (к примеру, требуется специальный девайс для эмуляции, или игра выпущена только на родном языке и нужно хорошее познание языка) игрок имеет право снова испытать святой рандом в выборе игры. Также были еще мелкие правила, но они уже не существенны. Главное пройти до конца 😊
За прошедшее время РГГ только улучшался – в качестве организации, в графическом оформлении, в призах. Есть такие челленджы (рулетки) на иностранных сайтах, но они не прижились, или скажем так, не особо популярны. На ру сегменте они популяризированы благодаря стримерам, которые устраивали эти соревнования в прямом эфире.
В русском сегменте достаточно часто проводятся РГГ поединки. Есть сайт https://rgg.land/ - на нем можно смотреть как автор идеи и ведущий всех соревнований Сергей aka Nuke73 проводит подобного рода челленджи, начиная от еженедельных RGG-Battle, где стримеры отвоевывают своё право на победу за 5-6 часов, до серьезного RGG-LAND, где стримерам надо серьезно попотеть. Вы также можете смотреть и наслаждаться на стриминговых платформах как игроки готовятся или уже участвуют в данных соревнованиях, а можете и поболеть или поддержать стримеров.
Хотелось бы также отметить, что RGG проходят достаточно зрелищно и интересно. При просмотре увлекательных соревнований можно полностью погрузиться в те времена и испытать чувства ностальгии, пустив слезу :)
Еще, для заметки, если вы желаете поиграть в старые добрые игры – то в сети можно по поиску найти несколько сайтов, где находятся и игры и симуляторы для игр, которые можно скачать. К примеру https://www.old-games.ru/ или https://www.emu-land.net/ - плюс есть сайты, на которых можно поиграть непосредственно в браузере…
Теперь, когда вы знаете, что такое РГГ – вы всегда можете сами опробовать на себе данное испытание, либо наслаждаться весьма интересным зрелищем!
Всем спасибо и удачи в добрых играх!
Сборка MS-DOS 4.0
Автор текста: dlinyj
Совсем недавно появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?
Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.
Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.
В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.
❯ Инструментарий
Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.
Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).
Прежде чем пойдём дальше — важное замечание:
Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.
❯ В чём сложности сборки?
Проблемы две:
Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).
Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.
Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.
Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:
Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.
Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.
❯ Подготовительные операции перед сборкой
Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:
git clone https://github.com/microsoft/MS-DOS.git
Исправляем проблемы с кодировками:
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF
Переходим в рабочую папку:
cd MS-DOS/v4.0
Перекодируем все текстовые файлы в формат MS-DOS:
find -iname '*.bat' -o -iname '*.asm' -o -iname '*.skl' -o -iname 'zero.dat' -o -iname 'locscr' | xargs unix2dos -f
find -iname '*.BAT' -o -iname '*.ASM' -o -iname '*.SKL' -o -iname 'ZERO.DAT' -o -iname 'LOCSCR' | xargs unix2dos -f
и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:
$ cat src/e.bat
@Echo off
echo setting up system to build the MS-DOS 4.01 SOURCE BAK...
set CL=
set LINK=
set MASM=
set COUNTRY=usa-ms
set BAKROOT=e:
rem BAKROOT points to the home drive/directory of the sources.
set LIB=%BAKROOT%\src\tools\bld\lib
set INIT=%BAKROOT%\src\tools
set INCLUDE=%BAKROOT%\src\tools\bld\inc
set PATH=%BAKROOT%\src\tools;%PATH%
В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:
find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.
❯ Сборка
Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.
Запускаю dosbox:
dosbox
Далее в нём монтирую текущую директорию как диск E.
mount e: ./
И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:
e:
cd SRC
e.bat
и запускаем сборку командой nmake:
Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:
После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:
mkdir \4
CPY.BAT \4
Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:
ver set 4.0
После переходим в каталог\4и можно выполнить в нёмcommand.com:
Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.
❯ Создание загрузочной дискетки
Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:
sys <path> a:
Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.
Скачиваем установочные дискетки, попутно создаём пустую дискетку командой:
truncate --size 1474560 fdd.img
Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:
qemu-system-i386 -fda Disk01.img -fdb fdd.img
Отменяем установку и форматируем дискету с переносом системных файлов:
По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:
imgmount a: <path to fdd.img> -t floppy
И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:
Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!
Для запуска в qemu следует использовать следующую команду:
qemu-system-i386 -fda fdd.img
Записать на дискетку можно командой dd, я использую USB-FDD дисковод.
sudo dd if=fdd.img of=/dev/sdk status=progress
И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.
❯ Выводы
Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.
Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.
Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.
Удачи вам в ваших экспериментах!
❯ Полезные ссылки:
Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.
Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.
OpenTTD (14) в браузере + Сетевые игры
Всем привет! Удивитесь вы или нет, но я был первый кто запустил OpenTTD в браузер, и было это аж 2012 году (*). Оказывается в youtube даже сохранилось видео этой сборки:
На тот момент игра работала в разрешении 800x600 и с трудом давала 24 фпс (в видео заметно лагает курсор). С тех пор прошло 12 лет, сообщество OpenTTD стремительно развивало проект, системы компиляции C++ в js развались, появился WebAssembly.
Сегодня, OpenTTD скомпилировать в браузер может каждый, соответствующие опции включены в основной код игры. Однако, что бы все работало из коробки нужно скачать дополнительные ресурсы, скрипты и запустить серверную инфраструктуру для поддержки сетевых игр.
release-14 был издан буквально неделю назад. Его-то я и взял за основу. Итоговая сборка работает быстро благодаря WebAssembly, и позволяет играть практически на любом разрешении экрана. В игру включены:
Свободная графика (newgrf)
Свободная музыка (open-msx)
Свободные звуки (open-sfx)
AI: AdmiralAI, AiAi, ChooChoo, DictatorAi, FastPTPAI, MogulAI, NoCAB, RoadRunner, Rondje, SimpleAI, TrackAI, trAlns
3 многопользовательских сервера для игры по сети
Игра сохраняет свои прогресс в хранилище браузера, т.е. пока вы играете на том же браузере ваш прогресс будет сохранен.
Почему я не обновлял игру 12 лет? Первый порт имел много значительных изменений относительно оригинально кода игры, и со временем это ком изменений копился делая процесс обновления все сложнее и сложнее. По факту пришлось заниматься поритрованием с чистого листа, но я потратил время что бы сделать все правильно, и теперь надеюсь регулярно обновлять игру в соответствии с новыми релизами OpenTTD.
--