Doom, как известно, запускается практически на любом устройстве: от беспроводных наушников до электронного теста на беременность, «Блокнота» Windows и осциллографа. Но, кажется, наконец нашлось что-то, на чем эта легендарная игра вряд ли будет работать. Портал arstechnica.com рассказал, почему Doom не запустится на NeoGeo.
© Wikipedia
NeoGeo — платформа начала 1990-х, которую геймеры определенного возраста могут помнить по невероятно высокой цене на релизе и сравнительно мощному для своего времени железу. Тем не менее, YouTube-блогер Modern Vintage Gamer утверждает, что архитектура NeoGeo особенно плохо приспособлена для порта игры, которая знаменита портируемостью практически на любые платформы.
На первый взгляд кажется, что NeoGeo, по идее, должна потянуть Doom. Процессор Motorola 68000 внутри консоли — тот же чип, на котором работает Commodore Amiga, а на ней запускали не один кустарный порт шутера id Software.
Однако дело в том, что NeoGeo была создана специально для того, чтобы обрабатывать спрайтовую двухмерную графику, хранящуюся на картридже. CPU просто записывает номера тайлов, позиции и значения для масштабирования в видеопамять, после чего видео-процессор достает нужные спрайты для рендера с картриджа. Шина Motorola 68000 даже не может к нему обратиться — система физически не способна сэмплировать текстуры или читать специфические спрайты для пост-обработки.
К несчастью для потенциальных моддеров, желающих портировать Doom на NeoGeo, у консоли также нет графического режима битмаппинга, который позволил бы обойти спрайтовые ограничения. У нее попросту нет буферов кадрирования или битпланов в стиле Amiga, которые открывают возможность неограниченной прорисовки пикселей в любой точке экрана. То есть, даже целиком программный рендерер Doom не смог бы найти способ отображать результаты на дисплее.
При этом, несмотря на специфику железа, NeoGeo в теории может потянуть более простой FPS — например, Wolfenstein 3D. Для демонстрации Modern Vintage Gamer написал примитивный отслеживатель лучей, который приблизительно переводит 90-градусные стены, плоские полы и потолки игры на язык, понятный NeoGeo. Он работает, отправляя лучи от позиции игрока для расчета дистанции до первой стены, которую игрок видит по выбранной линии. Данные затем определяют высоту и цвета каждого из 80 4-пиксельных спрайтов, расставленных по экрану горизонтально. Поскольку NeoGeo может эффективно растягивать эти спрайты по вертикали, информацию отслеживателя можно быстро конвертировать во что-то, напоминающее камеру от первого лица.
Проблема лишь в одном: даже этот несложный код работает на консоли со скоростью 8 fps через эмуляцию, без поддержки каких-либо врагов или игровой логики. Да и для Doom она не сработает, потому что там есть куда более продвинутые элементы, вроде поднятых платформ, лестниц, лифтов, текстурированных стен и потолков, и многого другого.

