Рубрика «ненормальное программирование» - 41

image

Привет! В прошлой статье «бесконечный узор на основе простых чисел» я рассказал про алгоритм, который позволяет генерировать бесконечные красивые узоры, похожие то ли на инопланетные рисунки, то ли на нечто технологическое, подобно устройству микросхем. Однако, алгоритм для генерирования 2D узоров можно так же использовать и для создания мелодий. Подробнее под катом.
Читать полностью »

Привет! Сегодня я надеюсь показать вам немного магии. Моим хобби является придумывание всяких казалось бы невозможных штук на С++, что помогает мне в изучении всевозможных тонкостей языка ну или просто развлечься. Оператор in есть в нескольких языках, например Python, JS. Но в С++ его не завезли, но иногда хочется чтобы он был, так почему бы его не реализовать.

	std::unordered_map<std::string, std::string> some_map = 
	{
		{ "black", "white" },
		{ "cat", "dog" },
		{ "day", "night" }
	};

	if (auto res = "cat" in some_map)
	{
		res->second = "fish";
	}

Читать полностью »

image

Части первая, вторая, третья.

Остальная часть автомата

Написанный нами код для эмуляции процессора 8080 достаточно общий и может быть с лёгкостью адаптирован для запуска на любой машине с компилятором C. Но чтобы поиграть в саму игру, нам нужно сделать большее. Придётся эмулировать оборудование всего аркадного автомата и написать код, приклеивающий специфические особенности нашей вычислительной среды к эмулятору.

(Вам может быть интересно посмотреть на принципиальную схему автомата.)
Читать полностью »

Изначально я хотел назвать этот пост «игра в 0 строк HTML, JS и CSS», вдохновлённый этим постом, но это было бы слишком громко. Так или иначе, сильно ухудшив UX, я получил крестики-нолики, работающие исключительно силой DNS протокола.

Крестики-нолики на DNS - 1

Для неподготовленного пользователя выглядит, конечно, страшно, зато даже браузер не нужен для игры.
Читать полностью »

Возможно, многие из старожилов помнят эпидемию статей с заголовками вида "%something% в 30 строк JS". А также последовавший за ней эпичный пост "Игра в 0 строк кода на чистом JS", после которого эпидемия резко сошла на нет. Полностью осознавая, что этот шедевр мне никогда не превзойти, я всё же спустя пять лет решил докинуть свои пять копеек.

Дамы и господа, вашему вниманию предлагается игра «Крестики-нолики» в нуль строк JS, а также, в отличие от игры, упомянутой выше, в нуль строк CSS (включая инлайн стили). Только голый HTML, только хардкор.

Пятничный JS: игра в 0 строк JS и CSS - 1

Ссылка на игру

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

Эта статья является второй частью нашей серии о создании H – Immersion. Первую часть можно прочитать здесь: Погружение в Immersion.

При создании анимации всего лишь в 64 КБ сложно использовать готовые изображения. Мы не можем хранить их традиционным способом, потому что это недостаточно эффективно, даже если применять сжатие, например JPEG. Альтернативное решение заключается в процедурной генерации, то есть в написании кода, описывающего создание изображений во время выполнения программы. Нашей реализацией такого решения стал генератор текстур — фундаментальная часть нашего тулчейна. В этом посте мы расскажем, как разрабатывали и использовали его в H – Immersion.

Текстуры для 64k intro: как это делается сегодня - 1

Прожекторы субмарины освещают детали морского дна.
Читать полностью »

Загрузочный CD и ретро-игра в одном твите - 1
Несколько лет назад я создал загрузочную дискету и ретро-игру, которые помещались в один твит. С тех пор Twitter удвоил длину твитов, поэтому я решил создать загрузочный компакт-диск. Он работает под управлением немного улучшенной версии tron.

perl -E 'say"A"x46422,"BDRDAwMQFFTCBUT1JJVE8gU1BFQ0lGSUNBVElPTg","A"x54,"Ew","A"x2634,"/0NEMDAxAQ","A"x2721,"BAAAAYQ","A"x30,"SVVVqogAAAAAAAEAF","A"x2676,"LMBaACgB76gfbgTAM0Qv8D4uYAI86qqgcc+AXP45GA8SHIRPFB3DTeYSEhyBSwCa8CwicMB3rSG/sHNFbRFJjAke9rrwQ","A"x2638'|base64 -D>cd.iso

Код в твите создаёт загрузочный образ диска CD-ROM: cd.iso. Вы можете загрузить код в qemu или свою любимую виртуальную машину — и играть с помощью клавиш со стрелками. Вы даже можете записать iso на CD-R и загрузиться на реальном компьютере.
Читать полностью »

Всем привет. Даже не знаю с чего начать писать обзор проекта, над которым трудились несколько программистов приблизительно 10 лет. Писать код намного проще, чем чесать языком, ведь кодом можно выразить любую мысль, особенно когда речь идет о том, чего еще ни разу никто не делал и не у кого подсмотреть текст. Но так или иначе, писать обзор о проделанной работе надо, поэтому не судите строго за возможную тавтологию или некорректные формулировки.
Читать полностью »

image

Первая часть здесь.

Дизассемблер процессора 8080

Знакомство

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

У каждого процессора есть написанное изготовителем справочное руководство. Обычно оно называется как-то наподобие «Programmer's Environment Manual». Руководство для 8080 называется «Intel 8080 Microcomputer Systems User's Manual». Его всегда называли «справочником» («data book»), поэтому я тоже буду так его называть. Мне удалось скачать справочник по 8080 с http://www.datasheetarchive.com/. Эта PDF представляет собой некачественный скан, так что если найдёте версию получше, то используйте её.
Читать полностью »

image

Написание эмулятора аркадного автомата — это замечательный учебный проект, и в этом туториале мы очень подробно рассмотрим весь процесс разработки. Хотите по-настоящему разобраться в работе процессора? Тогда создание эмулятора — наилучший способ его изучения.

Вам потребуется знание C, а также пригодится знание ассемблера. Если вы не знаете язык ассемблера, то написание эмулятора — лучший способ освоить его. Также вам нужно будет освоить шестнадцатеричную математику (также известную как base 16 или просто «hex»). Я расскажу и об этой теме.

Я решил выбрать эмулятор автомата Space Invaders, в котором используется процессор 8080. Эта игра и этот процессор очень популярны, потому в Интернете можно найти о них кучу информации. Для завершения проекта она вам понадобится.

Весь исходный код туториала выложен на github. Если вы не освоили работу с git, то на странице github есть кнопка «Download ZIP», позволяющая скачать архив со всем кодом.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js