Media is too big
VIEW IN TELEGRAM
Порт исходника Doom, который запускается в PDF-файле.
Оказалось, что старые версии Emscripten могут компилировать C в код asm.js, автор запустится внутри ограниченного времени выполнения JS в движке PDF.
Он использовал форк doomgeneric (https://github.com/ozkl/doomgeneric) оригинального исходного кода Doom, так как это позволило довольно легко написать IO.
Все, что нужно было сделать, это реализовать фреймбуфер и клавиатурные входы.
В отличие от предыдущих интерактивных PDF-демонстраций, вывод в DoomPDF осуществляется путем создания текстового поля для каждого ряда пикселей на экране, а затем установки их содержимого в различные ASCII-символы.
Обратите внимание, что этот PDF может работать только в браузерах на базе Chromium, использующих движок PDFium.
Таким образом, получается 6-цветный монохромный дисплей, который может обновляться достаточно быстро (80 мс на кадр).
▪ Исходный код доступен здесь: https://github.com/ading2210/doompdf
▪Демо: https://doompdf.pages.dev/doom.pdf
@cpluspluc
#doom #c #gamedev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥10🤣6🤯3❤2
🧵 Пишем свой сетевой стек с нуля: Ethernet и ARP на C
Хочешь разобраться, как работает TCP/IP на самом низком уровне?
В этой статье показано, как реализовать Ethernet и ARP в пользовательском пространстве Linux — на чистом C.
🔌 Что используется:
- TAP-устройство для приёма и отправки "сырых" Ethernet-кадров
- Структуры с
- Чтение и парсинг ARP-пакетов вручную
📦 Что реализуется:
- Создание ARP-запросов и обработка ответов
- Простейший ARP-кэш
- Парсинг и генерация Ethernet-фреймов
- Весь ввод-вывод — в user space
🧠 Зачем это нужно?
- Понимание, как работают сетевые интерфейсы на уровне байтов
- Практика системного программирования на C
- Основа для написания своего сетевого стека: IPv4, ICMP, UDP, TCP
📚 Статья:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
💻 Исходники на GitHub:
https://github.com/saminiir/level-ip
#Linux #Networking #C #TCPIP #ARP #Ethernet #DevLowLevel #СистемноеПрограммирование
Хочешь разобраться, как работает TCP/IP на самом низком уровне?
В этой статье показано, как реализовать Ethernet и ARP в пользовательском пространстве Linux — на чистом C.
🔌 Что используется:
- TAP-устройство для приёма и отправки "сырых" Ethernet-кадров
- Структуры с
__attribute__((packed))
для точного соответствия форматам- Чтение и парсинг ARP-пакетов вручную
📦 Что реализуется:
- Создание ARP-запросов и обработка ответов
- Простейший ARP-кэш
- Парсинг и генерация Ethernet-фреймов
- Весь ввод-вывод — в user space
🧠 Зачем это нужно?
- Понимание, как работают сетевые интерфейсы на уровне байтов
- Практика системного программирования на C
- Основа для написания своего сетевого стека: IPv4, ICMP, UDP, TCP
📚 Статья:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
💻 Исходники на GitHub:
https://github.com/saminiir/level-ip
#Linux #Networking #C #TCPIP #ARP #Ethernet #DevLowLevel #СистемноеПрограммирование
👍19🔥5❤1💊1