Hacker News Digest

Тег: #gcc

Постов: 3

Decompiling a Nintendo 64 game in 84 days (blog.chrislewis.au) 🔥 Горячее 💬 Длинная дискуссия

Snowboard Kids был полностью декомпилирован за 84 дня — это в семь раз быстрее, чем сиквел, который занял 596 дней. Успех достигнут благодаря накопленному опыту автора, работе с сообществом и частичному использованию ИИ, хотя ключевую роль сыграли эксперты: inspectredc, Bl00D4NGEL и queueRAM внесли значительный вклад, а около 4.8% коммитов потребовали их вмешательства. Основная сложность заключалась не в понимании логики функций, а в восстановлении точного C-кода, который при компиляции IDO 5.3 давал идентичный машинный код оригиналу. В отличие от GCC 2.7.2, использованного во второй части, IDO — проприетарный компилятор SGI, требовавший обратной инженерии инструментария и статической рекомпиляции. Его особенности, например, автоматическое четырёхкратное разворачивание циклов (совпадающее с числом гонщиков), усложняли задачу. Полученный исходный код поможет спидранерам понять механики скорости и пути ИИ, а также станет основой для моддинга и статической рекомпиляции в будущем. Проект демонстрирует, как накопленный опыт и коллективные усилия ускоряют реверс-инжиниринг даже сложных систем.

by knackers • 27 августа 2026 г. в 15:01 • 257 points

ОригиналHN

#decompilation#gcc#ido#modding#nintendo#nintendo-64#reverse-engineering#sgi#snowboard-kids#speedrunning

Комментарии (163)

Декомпиляция ретро-игр вышла на новый уровень благодаря AI, но юридические и этические вопросы остаются открытыми, а сообщество разделено между стремлением к байт-в-байт совпадению и желанием улучшить игры. **Споры:** - Декомпиляция с опорой на исходный ассемблерный код противоположна «clean room» подходу, так как использует защищённый код вместо независимой реализации. - Воссоздание бинарного кода 1:1 одни считают нетрансформационным и незаконным, другие — fair use, поскольку проекты бесплатны и предназначены для владельцев оригинальных копий. - Часть сообщества требует выполнять декомпиляцию вручную без AI, иначе отказывается принимать результат; другие считают отказ от AI в 2026 году неоправданным ограничением. - Критики осуждают стремление к 100% совпадению с ассемблером вместо функциональной эквивалентности и чистого кода, отмечая отсутствие инструментов для проверки такой эквивалентности. **Практические результаты:** - Декомпиляция Snowboard Kids и других игр стала возможной благодаря накопленному опыту, работе сообщества и частичному использованию AI; ключевые вклады внесли inspectredc, Bl00D4NGEL и queueRAM. - AI построил синтезатор, воспроизводящий музыку из ROM Mega Man Battle Network, и автоматически сопоставил все треки. - Проекты вроде OpenTestDriveUnlimited и Severed Chains показывают, что декомпиляция может не только воссоздавать, но и улучшать игры — например, портировать движки на Vulkan или исправлять дизайн. - Декомпиляция одной игры ускоряет работу с другими играми того же разработчика благодаря узнаваемым паттернам. **Советы:** - Давать каждой задаче явный дедлайн, видимый AI-агентам, чтобы избежать излишней сложности и затянутых сроков. - «Принять AI» недостаточно — нужно выстроить строгую, высококачественную рабочую процедуру. - При работе с устаревшим IP готовиться к «IP hell»: права часто перепродавались, компании исчезли, документы хранятся на физических носителях, а проверка прав дорога и неопределённа. - Начинающим рекомендуется сосредоточиться на понимании игры и документировании, а не полагаться на AI для автоматического выполнения всех задач, иначе теряется глубокое понимание. **Трудности:** - Крупные издатели редко используют результаты декомпиляции для коммерческих релизов из-за сложных контрактов с актёрами, мокапом и неясных прав на IP. - Масштаб задач огромен: один участник потратил два месяца на декомпиляцию Monster Hunter 2 и добился лишь 5% результата. - Проекты со стремлением к 100% совпадению сталкиваются с наибольшими трудностями на последних 5% функций, где несоответствия вызваны спецификой компиляторов и оптимизаций, а не логикой игры.

How Quake.exe got its TCP/IP stack (fabiensanglard.net) 🔥 Горячее

В 1996 году id Software создали quake.exe, работающий как в DOS, так и в Windows 95, в период, когда доля DOS упала на 50%. Они использовали djgpp - компилятор GCC для DOS, позволяющий создавать 32-битные приложения. Ключевым достижением стало то, что их DPMI клиент мог работать как с сервером djgpp (cwsdpmi.exe), так и с DPMI сервером Windows 95. Raymond Chen из Microsoft назвал это "поразительным", так как программа, написанная для одной среды, успешно работала в совершенно другой.

В DOSquake.exe требовал всего четыре файла: сам исполняемый файл, конфигурацию, ресурсы и cwsdpmi.exe. Для многопользовательской игры IPX использовался PDIPX.EXE, а TCP/IP требовал дорогого TSR BWNFS стоимостью $395 в 1996 году ($830 в 2025), поэтому большинство игроков использовали IPX. В Windows 95 игра запускалась в "dos-box", упрощая установку, но требуя 16 МБ ОЗУ вместо 8 МБ.

by billiob • 18 ноября 2025 г. в 08:18 • 445 points

ОригиналHN

#djgpp#dos#gcc#id-software#ipx#quake#tcp-ip#windows-3.1#windows-95

Комментарии (118)

  • ggambetta поделился опытом пайки nullmodem и создания звуковой карты на параллельном порте в детстве.
  • afandian уточнил, что "Британский парень Генри" мог назвать Евротоннель в честь другого инженерного проекта.
  • sroussey отметил, что в Win95 TCP/IP уже был встроен, что подорвало бизнес компаний, ранее продававших это решение.
  • jahnu вспомнил использование Trumpet Winsock для сетевого доступа в Windows 3.1.

Git: Introduce Rust and announce it will become mandatory in the build system (lore.kernel.org) 🔥 Горячее 💬 Длинная дискуссия

В проекте Git предложено постепенное внедрение Rust в ядро системы, начиная с версии 3.0. Это тестовый шаг, аналогичный прошлым экспериментам с C99, чтобы дать сообществу время адаптироваться к новым требованиям инструментария. Первым кандидатом для перевода выбран модуль varint.c из-за его простоты и отсутствия зависимостей — уже реализованная версия на Rust прошла все тесты.

Пока поддержка Rust добавлена только в систему сборки Meson, с планами расширения на Makefiles. Также предстоит настроить CI-задачи для проверки сборки, форматирования кода и других аспектов. Это позволит поэтапно развивать инфраструктуру без немедленных обязательств, фокусируясь на процессе интеграции, а не на конкретных функциях.

by WhyNotHugo • 20 сентября 2025 г. в 12:17 • 281 points

ОригиналHN

#gcc#git#libgit2#meson#rust

Комментарии (246)

  • Предложение сделать Rust обязательной частью инфраструктуры сборки Git 3.0, пока как опциональная зависимость, с переходом на обязательную после появления поддержки в GCC.
  • Высказаны опасения о снижении портируемости из-за ограниченной поддержки платформ Rust, сложности инструментария и повышении порога входа для новых разработчиков.
  • Часть сообщества видит в этом ненужное усложнение для зрелого проекта и сомневается в целесообразности из-за малого объема нового кода.
  • Другие считают, что Rust улучшит безопасность и консолидирует код, заменив существующие скриптовые языки, и что изучение нового языка — норма для разработчиков.
  • Обсуждение включает технические детали о кросскомпиляции, поддержке различных архитектур и влиянии на такие проекты, как libgit2.