blackstrip

blackstrip

Пикабушник
9255 рейтинг 28 подписчиков 13 подписок 8 постов 1 в горячем
Награды:
5 лет на Пикабу

Ввод русских символов при программировании для DOS и Windows через эмуляторы DosBox / Bochs/ LBochs

При разработке дос-оболочки на андроид-телефоне под DosBox-ом (история описана в Разработка оболочки-проводника для DOS в 2017 году ) весь русский текст приходилось вводить в Visual Basic for MS-DOS вслепую. Выглядело это так: переключаем русификатор на русский и на английской клавиатуре подбираем символы, вспоминая что "qwertyuiop[]" это "йцукенгшщзхъ". Но в той оболочке было лишь немного русского текста для русского варианта интерфейса, поэтому это было терпимо.

С появлением более мощного телефона, установкой на него Bochs, а затем LBochs-эмулятора и установкой Windows 98/XP, стало понятно, что теперь-то можно, например, спокойно поставить Delphi 7 и писать под Win32 что-нибудь, или поставить HTML Help Workshop и создавать CHM-файлы помощи для своих программ. Но и в LBochs встроенная клавиатура имеет только англоязычную раскладку и русский язык с нее можно вводить опять только наугад.


Стало ясно, что для удобства программирования и в DosBox, и в LBochs нужна клавиатура, которая будет вводить всегда английские символы (а заменять их на русские будет русификатор в DOS или языковые службы/языковая панель Windows). При этом русские символы должны отрисовываться на клавишах чтобы просто выбирать нужную клавишу глазами, а не вспоминать русскую раскладку. Тут есть два варианта:

- на каждой английской клавише такой клавиатуры также дополнительно будет нарисован соответствующий русский символ (как это сделано на любой физической клавиатуре PC);

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


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


Одно из упоминаний на одном из форумов от 2012 года: hacker's keyboard позволяет ввести англоязычный символ если переключиться на русскую раскладку, но при этом ДОЛГО жать клавишу с русскоязычным символом. Но у меня на последней версии этой клавиатуры это из коробки не заработало, да и каждый раз удерживать долго клавишу для ввода одного единственного символа - это тяжело.

Еще одно из упоминаний - клавиатура, встроенная в Magic DosBox (одно из ответвлений досбокса). Она показана в этом ролике от 2016 года:

Здесь на клавишах сразу и русские, и английские символы. И на LBochs эту клавиатуру не перетащишь, т.к. она встроена в Magic DosBox.


Пришлось изобретать велосипед писать свою клавиатуру. Т.к. однажды уже пришлось придумывать раскладку экранной клавиатуры, то решено было взять ее. В исходном программном продукте под названием "браузер Bro", встроенном в мультимедиа-редактор PaintCAD 4Windows, она выглядела вот так:

Попытка №1

Так сильно хотелось вводить русский текст в LBochs под Windows, что первая попытка была - просто скопипастить эту клавиатуру в отдельный Win32 проект. Получилась утилита под названием BroKB (клавиатура из браузера Bro), которая имеет на форме клавиатуру и текстовое поле. Жмем кнопки - и текст вводится в поле. Потом готовый текст копируем и вставляем в нужное место. Эдакая виртуальная недоклавиатура под Windows, работающая в любом Windows с Windows 95 и выше, умеющая вводить текст только в саму себя (но не в другие окна/поля):

Попытка №2

Елозить мышкиным курсором в LBochs на телефоне по клавишам быстро надоело, и поэтому для ускорения русскоязычного ввода текста была предпринята вторая попытка - настоящая android-клавиатура. Был взят гайд "как сделать клавиатуру под андроид", была взята за основу эта же раскладка клавиш браузера Bro, но добавлен ряд клавиш F1-F12, а также ряд с кнопкой Esc и кнопками перемещения курсора (с самого первого моего андроида 2.3.3 не понимал почему на дефолтной клавиатуре нет клавиш перемещения курсора, как будто пользователи не вводят текстом, а только проматывают текстовые поля и кликают толстым пальцем в нужное место, с трудом туда попадая). Обязательно хотелось полупрозрачности чтобы сквозь клавиатуру был виден эмулятор и это тоже было вписано в xml-стиле фона клавиатуры, а также в xml-стилях клавиш ненажатых и клавиш нажатых.

Получилось вот это - под названием BroKB Emulz (т.е. "BroKB для эмуляторов") - показано ниже в горизонтальном и вертикальном варианте (dosbox turbo, android 2.3.3, samsung galaxy ace с экраном 320x480). В случае с Кирандией вводить русские символы в название сейва мне игра не дала (хотя может она просто не пропускает переключение языка русификатора keyrus по F12), поэтому скрин дан для общего представления как выглядит клавиатура в портретном представлении. А еще меня осенило - вот для кого делали режим с грубым разрешением 320х200 точек и 256 цветами - для телефонов с досбоксом и с экраном 320х480, полэкрана у которых - это ровно разрешение картинки игры! На компе этот режим всегда казался очень крупноточечным, а вот на телефоне, когда всё идеально пиксель в пиксель - это красиво!

Второй ряд символьных клавиш asdfgh... пришлось сдвинуть в xml-файле параметром android:horizontalGap="3.25%", суммарное количество процентов ряда клавиш было подогнано под 100% = 3,25% + 6,5%*11 + 25,25% и ожидалось, что ряд клавиш займет ровно целый экран, но не тут то было! Android-ы разных версий по разному реагируют на android:horizontalGap, на каких-то андроидах кнопка Ввод вылезает вправо (процента на полтора-два от ширины экрана, т.е. меньше чем сдвиг ряда слева на 3,25%), а на каких-то заканчивается ровно с остальными рядами (тестировалось на 2.3.3, 5.0, 7.0, 10). Хотя может это я такой криворук (например, если еще какими-то параметрами указываются зазоры между клавишами, и тогда только сумма ширин клавиш равна 100%, а с суммой ширин зазоров получается общая ширина ряда больше 100% - из-за этого ряд клавиш вылезает вправо).

Заключение

Итого - получившаяся клавиатура вводит русские и английские буквы в DOS (DosBox) и в Windows XP (LBochs):

Файлы

Если кто искал подобный софт для ввода русского текста, то вот эта получившаяся клавиатура под android: https://play.google.com/store/apps/details?id=com.bss.brokb (или вот APK без гуглплея - http://blackstrip.ru/brokb.apk )

Также вот результаты первой попытки - виртуальная недоклавиатура под Windows, вводящая текст только в саму себя: http://blackstrip.ru/brokb.exe

Показать полностью 11 1
238

Разработка оболочки-проводника для DOS в 2017 году

Как показывает практика, комфорт существования динозавра человека при работе/игре под DOS складывается из всевозможных драйверов и утилит. Но даже когда мы подгрузим лишь такие необходимые драйвера как драйвер мышки, драйвер CDROM, драйвера звука/midi для звуковухи, русификатор, зайдем в старый добрый Norton Commander, доберемся до EXE/COM/BAT-файла любимой игры и запустим ее, то вместо игры можем увидеть, например, вот такую картину:

Я часто сталкивался с подобным. Из доступных 640 килобайт драйверами может быть забито 100 или даже 150-200 килобайт. Оболочка (norton, volkov и т.д.) после запуска игры тоже остается висеть в памяти и занимать драгоценное место. Да и игра может требовать не 530 килобайт, как King's Bounty выше, а 550 или даже все 600 килобайт.


"Надо что-то делать!" - подумал я. Понятное дело, надо чистить autoexec.bat и config.sys! Но и после чистки и ужимания объема запускаемых драйверов и резидентных прог, бывает, что всё равно не хватает каких-то там 10 килобайт для запуска игры.


Тогда надо выкинуть оболочку из памяти. Тот же Norton Commander занимаете около 10 килобайт лишней оперативы. Но без оболочки неудобно запускать игры. Ведь придется комбинацией команд cd и dir переходить по папкам и смотреть имя нужного EXE/COM/BAT-файла, которое потом вводить в консоль чтобы запустить игру.


И тогда пришла мысль: "Надо сделать такую оболочку, которая не будет занимать память вообще". Но такого не может быть. Разве что если завершить работу оболочки перед запуском игры. Но, к сожалению, функция DOS "запуск проги из другой проги" не дает возможности закрыть оболочку, а потом запустить EXE/COM/BAT-файл игры. Отсюда вытекает:


Необходимая фича оболочки №1

Запуск программы "из чистого DOS" без нахождения оболочки в памяти


Тогда остается один вариант запуска проги "из чистого DOS":

- выбрать папку с EXE/COM/BAT-файлом игры текущей папкой,

- завершить оболочку, написав напоследок на экране "введи имяфайла.exe для запуска этой игры".


Пользователю останется только ввести с экрана это имя и нажать Enter - и получится, что он достаточно легко запустил прогу из чистого DOS.


Необходимая фича оболочки №2

Легкораспространяемый единственный EXE-файл малого размера и с коротким именем.


В идеале это должна быть прога в виде единственного EXE-шника без сопутствующих файлов. Ее путь пользователь добавляет в PATH в autoexec.bat. И затем, если вдруг надо быстро запустить любимые проги, то одним вводом короткого имени EXE-файла оболочки запускает ее и дергает из под нее нужную прогу.


Название было выбрано "BlackStrip Shell" (т.е. "Оболочка BlackStrip"), а имя EXE-файла "bss.exe". В любое время вводим в досе "bss" - и мы тут же внутри оболочки.


Вперед!


Языком программирования был выбран знакомый с детства (и заброшенный там же в детстве) Visual Basic 1.0 for DOS - у него оконная среда программирования в текстовом режиме, есть поддержка работы с прерываниями через библиотеку vbdos.qlb, т.е. можно организовать работу с мышиным драйвером по int 33h, работу со стандартными DOS-функциями из int 21h и прочими прерываниями.


Т.к. делаем оболочку для небыстрых старых компов, а заодно хотим охватить большую аудиторию, то не будем использовать SVGA-видеорежимы, а возьмем 640х480х16 цветов. А это режим экрана "SCREEN 12".

Хотелось сделать прогу с русским и английским интерфейсами, при это не зависеть от загруженного/незагруженного русификатора. Поэтому добавляем графический растровый шрифт, предварительно слитый с DOS системы (самый мелкий, моноширинный 8х8 пикселей). А т.к. кроме EXE никаких файлов быть у оболочки не должно, то суем шрифт прямо внутрь проги с помощью команд DATA (конечно не вручную, а с помощью отдельной написанной приблуды, перекодирующей побайтово любой файл в набор DATA команд). И будем грузить шрифт оттуда с помощью RESTORE.

Программировать на VBDOS можно как на компе, так и на телефоне из под DOSBOX. Поэтому бОльшая часть кода (99%) была написана на телефоне.


Первые пробы написания шрифтом разного размера и жирности на синем "рабочем столе" оболочки:

Затем надо было придумать оконный менеджер. Не мудрствуя лукаво была сделана система, подозрительно похожая на Windows 95 по объемности компонентов. Вот окошко:

Потом кнопки и текст а ля "label". В углу планировалось рисовать большой значок открытого окна. Но потом от этого пришлось отказаться, не выпендриваться и рисовать его рядом с текстом заголовка окна.

Кстати, размеры значков были выбраны 8х8 точек. В совокупности с мелким шрифтом 8х8 пикселей это давало иллюзию "большого экрана" при разрешении 640х480 точек.


Потом был добавлен компонент "поле ввода":

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

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

Сама система изнутри была похожа на Windows-систему. Бесконечный цикл, в ходе которого опрашивается клавиатура и мышь, а на происходящие события установлены обработчики. Поэтому при запуске в эту систему надо было напихать окошек с дочерними компонентами, а в бесконечном цикле вставить обработчик "если (фокус на кнопке А и был нажат пробел) или (мышка кликнула по кнопке А) - то делай то-то". И надо было это все расписать для всех окон и всех компонентов на них. Вот старый скрин из исходников, где уже можно было напихать при старте два окошка, на каждом из которых лежит по одной кнопке.

И на экране все это отображалось при работе оболочки так:

Оконная система работала и надо было писать внутренности самой оболочки. Т.к. главной задачей стояла задача "запустить прогу, вырубив оболочку", то надо было сваять файловый менеджер, позволяющий лазить по папкам и файлам и имеющий кнопки "запустить выделенный EXE из оболочки" и "запустить выделенный EXE из под DOS".


Прототип файлового менеджера:

Ну а потом все завертелось, и были написаны:

- сам файловый менеджер "Файлы",

- окошко "Память" отображения количества DOS-памяти в самой BSS (чтобы можно было понять - рыпаться ли запускать игру из BSS, либо ей точно не хватит памяти и игру запускать только из под DOS),

- окошко "Клавиатура" показа кода клавиши (для отладки BSS, а заодно и для заезжих DOS-программистов, которые, сидя в досе, м.б. захотят узнать какая клавиша на клаве какой имеет код, простой 1-байтовый или расширенный 2-байтовый),

- и окошко "Экран" настройки экрана, позволяющее выбрать соотношение сторон экрана 4:3 или 16:9 (при этом в 16:9 весь экран отображался также на 640х480, но BSS "думала" что экран 853x480, это позволяет на широкоэкранных ноутах видеть оболочку не с растянутыми по горизонтали компонентами, а с нормальными), выбрать тему (выпуклая типа win95 или плоская типа win10), язык интерфейса, а также ускорение отрисовки окон при их перемещении (при включенном ускорении задняя часть экрана за окном не перерисовается при перемещении окна мышью).

На панели задач были добавлены кнопки "Выключение оболочки", "Сеанс DOS", окно "Файлы", окно "Клавиатура", окно "Память", окно "Экран", разделитель, кнопки "Свернуть все окна", "Развернуть окно на весь экран", "Свернуть полноэкранное окно обратно".


Основная часть оболочки - файловый менеджер "Файлы", эдакий common dialog, имела следующие органы управления:

- наверху подобие командной строки и кнопку перехода (для тех, кто не любит жать Enter). В нее можно ввести как путь (по которому оболочка переходит), так и еще и имя файла в конце пути (на которое перескочит курсор в списке файлов),

- поле с отображением реальной текущей папке (если ввели наверху бред, то текущая папка не изменится),

- список файлов со значками и именами,

- маска-фильтр списка файлов, например, "*.exe" покажет только exe файлы в текущей папке, а также кнопка сброса фильтра в "*.*",

- кнопка "Обновить" позволяет обновить список файлов (если есть подозрения, что какой нибудь резидентный софт что нибудь меняет),

- кнопка "Папка выше" (как и кнопка Влево на клаве) позволяет выйти из текущей папки на один уровень вверх,

- кнопки "Запуск из BSS" (с возвратом обратно в BSS по окончании запущенной проги) и "Запуск из DOS" (та самая фича закрытия оболочки и оставления пользователя в чистом досе с подсказкой "что ввести чтобы запустить"),

- поле ввода аргументов командной строки "Аргументы КС", которые будут переданы программе при запуске из BSS/из DOS, а также кнопка очистки этого поля,

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

- показ количества файлов/папок в списке.


Потом была добавлена возможность смены диска (кнопка правее командной строки или на клавиатуре кнопка "Влево" из корневого каталога диска).

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


Меню запуска: ярлыки на DOS программы


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


Для начала лезем в файловом менеджере к нужному EXE/COM/BAT-файлу, ставим на него курсор в списке файлов и жмем волшебную кнопку с ракетой, которая расположилась справа от командной строки в файловом менеджере рядом с кнопками перехода и смены диска.

После этого открывается окно меню запуска, где уже будут введены:

- название проги (по имени исполняемого файла),

- путь и имя исполняемого файла,

- номер значка для ярлыка,

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


По списку можно лазить кнопками "Вверх"-"Вниз" на клавиатуре или в окне справа. При нажатии на пункт списка он загружается в верхние поля. Таким образом, можно нажать на пункт списка, загрузить его параметры в верхние поля, исправить их, нажать кнопку "Заменить" и сохранить измененный ярлык поверх первоначального загруженного.


Также можно:

- удалить выделенный ярлык кнопкой "Удалить",

- сортировать ярлыки по имени в алфавитном порядке,

- сдвинуть текущий ярлык в списке вверх или вниз на одну позицию,

- запустить программу/игру по ярлыку из BSS или из DOS.


Но и этого было мало. Иногда хочется посмотреть на файлы, окружающие программу или игру. Почитать "ридми" там или посмотреть текстовые ресурсы проги.


Hex-редактор


Было добавлено еще одно окошко, позволяющее побайтово просматривать и редактировать файлы. Ставим в файловом менеджере курсор на файл и жмем справа от командной строки волшебную кнопку с колбой или просто пытаемся открыть по Enter неисполняемый файл. Открывается окно редактора:

В этом окне можно:

- изменить имя файла и загрузить его (например, если имя файла известно и без файлового менеджера или имена нескольких файлов отличаются номером типа file1.txt, file2.txt),

- включить "режим правки" (редактирования файла вместо только чтения) и режим "Далее по ENTER" перехода к следующему байту по нажатию Enter в поле кода/символа текущего байта,

- выбрать кодировку файла для просмотра и редактирования (DOS 866 или кириллическую Windows 1251),

- выбрать символ переноса для просмотра файла в текстовом виде (0D(13) или 0A(10)),

- посмотреть на "таблице из трех двойных кнопок" файл побайтово, изменяя текущее смещение на 1 по кнопкам "Вверх" и "Вниз" с клавиатуры или кликом по "таблице из кнопок",

- изменить смещение вручную или обнулить/увеличить/уменьшить текущее смещение на определенное количество байт в области "Переход",

- посмотреть и изменить код текущего байта или символ текущего байта (в соответствии с выбранной кодировкой),

- посмотреть кнопками "Текст" и "Коды" в поле предпросмотра файл с текущего смещения в виде текста или hex-кодов,

- посмотреть таблицу символов в соответствии с выбранной кодировкой и ввести символ в "Код:"/"Символ:" по клику на ячейку этой таблицы,

- перейти кнопкой "Ниже" к следующей странице при просмотре файла в виде текста или hex-кодов.

Конец


Получилась вот такая DOS-оболочка:

Кнопки на панели задач аналогичны клавишам F1-F12. Поэтому, добавив в переменные среды path оболочку bss, и добавив единожды ярлыки на проги/игры в меню запуска, вызов любимой проги/игры из любой папки в DOS-е выглядит так:

1) bss [enter]

2) [F5] (вызов окна "Меню запуска")

3) Выбор проги в "Меню запуска" по [вверх][вниз]

4) [enter] для запуска из BSS либо [shift+enter] для запуска из под DOS (аналогичные сочетания работают и в окне файлового менеджера).


Скачать оболочку можно по адресу: http://blackstrip.ru/bss.exe (118 килобайт).


Запакована UPX-ом, при запуске разворачивается в память и занимает 270 килобайт.


Под досбоксом на андроиде работает хорошо, под досбоксом под виндой работает не очень (по Ctrl+F12 повысьте циклы до 20-30 тысяч), на настоящем досовском ноутбуке "Bliss 3070" 2000 года выпуска работает отлично.


Всем веселых игр под DOS.

Показать полностью 22

Так мы живем в симуляции или нет?

Представьте себе СуперМозг (далее СМ) - сверхмощнейший разум, обладающий собственным Я. И у этого мозга есть массив переменных типа "простейший элемент". У каждого элемента массива есть параметры x,y,z - его координаты в нашем трехмерном пространстве. Еще у элемента массива есть некоторые параметры текущего состояния (типа скорости, направления движения, энергии и т.д.). И этих элементов в массиве очень очень много. СМ однажды с некоторой целью положил их в одну точку с очень близкими координатами x,y,z и начал просчитывать (симулировать) их взаимодействия и последствия этих взаимодействий. Так появилась вселенная - тьма квантов с определенными законами существования и взаимодействия, просчитываемой СМ-ом.

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


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


Жизнь - сама по себе нелогичная вещь среди кусков мертвого вещества.


И вот СМ решил: "Введу-ка я бота в систему. Наберу-ка из органики нечто способное жить, впишу ему прошивку в эту же органику, положу его на удобный для жизни астероид, где он не сдохнет от мерзлоты и не сгорит, вот, например, на планету Земля. И пусть он размножается (введу сразу нескольких чтоб они могли), эволюционирует себе вследствие случайных мутаций, старые подыхают, новые и более совершенные рождаются".


И вот бегают по Земле куча тварей, плодятся, едят друг друга, развиваются.


И тут СМ-а осенило "Чёрт, я же забыл про свою основную задачу! Возьмем вот этих расплодившихся обезьян, чуть подправим до более развитого состояния и закинем в Африку, но не просто так...Добавим им в мозг метку, по которой я смогу отыскать их в моем массиве элементов и управлять ими."


И начал СМ при рождении каждой новой глупой усовершенствованной обезьяны под названием "человек" ответвлять от себя нить мыслительного процесса, подсоединять напрямую к этой обезьянке и управлять ею. Не из какой-то точки x,y,z "вселенной", а просто извне массива, ведь он хозяин массива, что хочет, то и делает.

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


Чтобы не слишком перенапрягаться СМ когда создавал массив, то установил границы симуляции. Например, сами простейшие элементы массива, ниже которых спускаться некуда. Также квантование энергии по крохотным частям чтобы было легче считать ее передачу. Также замедление времени

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


Отсюда выводы:


1) все вещество - неживое. Весь контент вселенной - мертв. Это тупой сэндбокс с кучей законов существования и взаимодействия элементов массива.


2) все звери, птицы и другие живые существа - бездумные боты, подчиняющиеся инстинктам и передающие друг другу это поведение при размножении, но при этом эволюционирующие. Они не могут сочинить симфонию, превратить кусок холста в шедевр искусства и т.д. Они были закинуты искусственно в систему мертвого вещества, слеплены из кусков этого самого вещества либо вообще в виде нового вещества, привнесенного в массив в момент их создания.


3) все люди - такие же боты, закинутые искусственно, но с некоторой связью с мыслительной нитью СМа. Собственное Я человека - не имеет отношения к телу человека (живое тело - это просто бот). Сейчас, когда вы читаете этот пост - на самом деле это мыслительная нить СМа читает этот пост глазами тела вашего человека, закидывает в передающую часть (метку) мозга тела человека и ретранслирует в СМ по себе самой (по мыслительной нити). Также она поступает когда "вы" трогаете что-нибудь в сэндбоксе (взаимодействуете с этим чем-нибудь), обжигаете руку, режете палец и т.д.


Вы - и есть одна из мыслительных нитей. Вы сейчас не здесь у себя в квартире за компом, вы сейчас вообще вне этого массива (x,y,z,t). Дыхание, работу сердца, регенерацию тканей - курирует тело вашего человека ("бота"), поэтому вы не управляете этим напрямую. Все мыслительное курируете Вы (мыслительная нить СМа) - поэтому вы и можете этим управлять. Вы можете спокойно думать "что есть я? кто я такой? зачем я здесь?". Кроме вас, нитей СМа с памятью, стертой на время жизни вашего тела человека, больше в этом сэндбоксе никто такими вопросами не задается.


4) отсюда образовываются понятия о добре и зле. Убил другого человека (отсоединил одну из мыслительных нитей СМа) - это плохо, т.к. навредил великой задаче СМа и затормозил ее выполнение. Помог другому человеку, объединился с другими людьми, подружился, работаешь вместе с ними - это хорошо, нитям работать вместе лучше и выполнять задачи, поставленные СМом, удобнее. Получается, все люди - братья, т.к. все мыслительные нити подсоединены к одному родителю - СМу.


5) звери отдельно, люди отдельно, промежуточного звена эволюции нет.


6) инопланетян нет. Их просто не завезли в этот массив x,y,z (,t).


7) эволюция объединена с креационизмом, они не против друг друга. Если допустить идею возможности вмешательства СМ-а в свой массив простейших элементов, то СМ мог в любое время изменить историю, пытаться управлять динозаврами (ботами предыдущей версии) через мыслительные нити (как людьми сегодня), убить динозавров метеоритом, т.к. они не подошли для выполняемых задач, подкинуть книжонки про "богов", чтобы мыслительные нити себя хорошо вели и выполняли необходимые задачи, а не бездумно мочили друг друга в этом СМ-овском сэндбоксе.


8) когда при смерти люди видят своих родственников, которые шепчут "ты чего уже идешь к нам, тебе еще рано", то это просто одна мыслительная нить, почти оторвавшись от своего человека, увидела своих "коллег", другие нити, одновременно являющиеся частями единого целого - СМа. Возможно, мы (нити) уже заранее в пределах СМа знаем кто кем кому будет (сыном, дочерью, отцом, матерью, бабушкой, дедушкой).


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


10) там, в СМе, время может не существовать вовсе. Оно может быть лишь одним из измерений, в пределах которого ведется симуляция для выполнения этой таинственной задачи СМа.

Показать полностью 4
1392

Пиксель арт для игр путем катания курсора

Жил-был один человек в 1998 году, у которого при рисовании пиксель арта в MS Paint под Windows 98 дрожали руки, а мышка с шариком каталась тяжело и кнопки на ней прожимались с трудом. Поставить точку в нужное место мышкой было трудно на рисунке, а уж линией две точки соединить - вообще тяжело, это надо два раза кликнуть, и оба раза точно в нужные пиксели. Тяжелые были времена.


И подумал он: "А почему бы не сесть мне за кубейсик, ведь я как раз 13-летний школьник, мог бы чего нибудь эдакое сварганить, чтоб потом рисовать картинки для собственных игр".


Сел он за кубейсик 4.5, модный в те времена язык программирования, взмахнул пальцами над клавиатурой и появился код.

И сделал он редактор, в котором можно было курсор с клавиатуры катать стрелками, а пробелом ставить точки. Он еще не знал, что ранее, например, в Windows 3.11, была уже такая возможность в редакторе Paint Brush, а потом ее вырезали, т.к. пришло время мыши. Дитё Windows 9x, что с него взять...

Но т.к. был он всего лишь 13-летний школьник, то не знал он ни работы с файлами кроме элементарной, ни обработки изображений. И заглохло дело его. И лежало оно до 2004 года, когда вдруг стали выпускать телефоны с Java. У них как раз были кнопки. Он возьми да и сделай редактор кнопочный, такой что катай себе курсор да точки рисуй.

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

И вот в 2010 году он силы в себе почувствовал вернуться в 1998 год и сделать таки редактор курсорокатательный для компьютера. Запряг он Delphi 7 и полез на нём в гору.

Скоро сказка сказывается, да нескоро дело делается. Сидел он пять лет, сначала переписывал возможности мобильного редактора: рисование пиксельное в 8-битном (256-цветном) режиме с палитрой индексированной, да в 24-битном режиме RGB-полноцветном, сборку GIF-ов анимированных да со шрифтами PCF растровыми работу.

Затем сборку и разборку AVI видеофайлов из кадров отдельных.

Затем работу с тайлами для создания карт двухмерных для игр простых.

Затем работу с 3D изображениями (JPS, MPO), работу с альфа-каналом для PNG, работу со скриптами на языке Java Script и программирование с их помощью рисования рисунков и анимаций.

А потом и звуковой редактор добавил для создания озвучки AVI файлов, а также для создания звуков и музыки для игр, с возможностью программирования мелодий командами, использования SF2/DLS звуковых банков и создания собственных инструментов, записи мелодий в скрипт с клавиатуры подобно клавиатуре фортепиано, записи мелодий по игре в определенных стилях на фортепиано, шестиструнной гитаре и сетке барабанов.

Ну и полученные в звуковом редакторе WAV мелодии можно стало конечно же прикрепить к созданным ранее AVI видеофайлам.

И получились у него графический пиксель арт редактор, звуковой редактор и видео редактор в одном флаконе в EXE-файле весом 3 Мегабайта и c CHM-файлом помощи в комплекте весом около 10 мегабайт, которые работали в любом Windows начиная с Windows 95 и заканчивая Windows 10:

http://blackstrip.ru/pcw.zip


И стал он пиксель арт для своих будущих игр учиться рисовать и добра наживать.

Управляя при этом программой с клавиатуры и используя всего лишь десяток клавиш, хоть в транспорте с ноутбуком на коленях, хоть на столе, где мало места для мышки.

А когда у него рядом не было ноутбука, то он рисовал на той самой мобильной программе из 2004-2010 года, но сконвертированной под андроид через microemu с особенной виртуальной мобильной клавиатурой как у телефона.

Эта программа конечно умела меньше чем компьютерная версия - всего лишь рисовать картинки в 8-битном режиме с индексированной палитрой и в 24-битном полноцветном RGB режиме, а также собирать GIF анимации, работать с растровыми PCF шрифтами и рисовать полупрозрачные PNG с альфа-каналом:

https://play.google.com/store/apps/details?id=org.microemu.a...


А самые лучшие работы на этой программе от пиксель-артистов со всего света он собирал в галерею, в которую каждый желающий мог отослать свою работу на модерирование и вывешивание:

https://play.google.com/store/apps/details?id=com.bss.paintc...

А потом одним осенним вечером 2016 года он написал на Пикабу этот пост =)

Показать полностью 20
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества