Насколько далеко можно зайти, эмулируя старые технологии ПК на ещё более древней консоли? Один программист решил ответить на этот вопрос, используя целый арсенал программных трюков для достижения своей цели. К счастью, никакого реального оборудования при этом не пострадало.
NES86: Эмуляция ПК на Nintendo Entertainment System
NES86 — это новый проект, который позволяет эмулировать ранние системы ПК прямо на Nintendo Entertainment System (NES), более известного в наших кругах как Dendy. Этот эмулятор способен воссоздать процессор Intel 8086 и ключевые компоненты аппаратного обеспечения ПК с достаточной точностью, чтобы загружать и запускать урезанную версию ядра Linux.
Автор проекта, известный под ником decrazyo, разработал NES86 и выпустил видео, объясняющее, как ему удалось достичь этого впечатляющего результата. Первый IBM PC работал на процессоре x86 с частотой 4.77 МГц, что значительно быстрее, чем 1.79 МГц процессора NES. Поэтому, чтобы преодолеть такой разрыв, decrazyo использовал сложные техники эмуляции, чтобы тщательно воспроизвести работу ранних ПК на игровой консоли Nintendo.
Технические вызовы
У NES гораздо меньше оперативной памяти и адресуемого пространства, чем у IBM 5150, что потребовало от decrazyo внедрения методов отображения памяти для эффективного переключения между двумя системами. Выбор версии Linux для запуска на NES86 был относительно простым: программист ограничился использованием Embeddable Linux Kernel Subset (ELKS).
Проект ELKS предоставляет Linux-подобную операционную систему для 16-битных процессоров Intel, включая 8086 (используемый в IBM 5150), а также более поздние поколения, такие как 8088, 80188, 80186 и 80286, до появления первого 32-битного чипа x86 (80386). Несмотря на то, что ELKS является крайне компактным терминалом Linux, он никогда не сможет работать на реальном оборудовании NES из-за минимального требования в 256 КБ оперативной памяти, что значительно превышает возможности консоли.
Сложности запуска
Согласно официальной странице проекта на GitHub, NES86 сложно запустить даже на современных эмуляторах NES для ПК и других платформ. Совместимыми оказались лишь несколько эмуляторов.
Однако самый «лучший» опыт использования NES86 достигается довольно неожиданным способом: через эмуляцию игры Animal Crossing на GameCube. Социальный симулятор Nintendo 2001 года включал встроенный эмулятор NES, позволяющий игрокам собирать и играть в различные игры ретро-консоли через игровые механики.
Взломав эмулятор NES внутри Animal Crossing, работающий на эмуляторе GameCube, decrazyo смог запустить версию «Тетриса» для ПК с невероятной скоростью — 30 кадров в секунду. Кажется, на этом моменте у многих мог бы «взорваться мозг», как говорится.
Зачем всё это нужно?
Проект NES86 — это больше, чем просто технический эксперимент. Это демонстрация того, насколько далеко можно зайти, комбинируя программное обеспечение и эмуляцию. Хотя практической пользы от него немного, он вдохновляет на размышления о возможностях технологий и их границах. И, конечно, это отличный повод поразиться человеческой изобретательности. Аплодируем стоя!
Ещё по теме: