Nesformer превращает стандартную языковую модель Qwen3.5 в процессор Nintendo Entertainment System. В веса компилируются 6502-совместимый CPU, 2 КБ рабочей RAM и программный ROM картриджа. Модель никто не обучал: каждый вес вычисляет компилятор, унаследованный у Qwenputer Дивьянша Агравала. Во время игры checkpoint генерирует журнал выполнения процессора по одному токену.
Это не эмуляция всей консоли исключительно нейросетью. Небольшая host-программа рисует PPU-кадры, читает контроллер, передаёт ответы I/O и запускает NMI на vblank. Внутри модели реализованы все 151 официальные инструкции, режимы адресации, флаги, стек, BRK и NMI. Звук не синтезируется, а APU-регистры просто принимают записи.
Ключевой приём — использование состояния Gated DeltaNet как памяти. Матрица состояния каждой головы имеет размер 128×128. При открытом gate и one-hot key обновление перезаписывает ровно одну строку, а one-hot query читает её обратно. Строки становятся ячейками для ROM, RAM и регистров. Checkpoint сохраняет обычный формат Hugging Face Qwen3_5ForCausalLM и загружается без пользовательского model code.
Модель содержит 466,6 млн параметров bf16 объёмом 933 МБ, но ненулевых только 9,3 млн, поэтому архив весов занимает 3,3 МБ. Семь Gated DeltaNet-слоёв выполняют выборку команды, декодирование, адресацию, арифметику и выбор следующего токена; восьмой нулевой attention-слой нужен Hugging Face cache. Program counter не записывается явно на каждой операции, а вычисляется по точке перехода и счётчикам длин команд.
Проверки включают nestest и сравнение с py65 на 5,7 млн инструкций. В свободной генерации трассы Thwaite и Full Game совпали с эталонным CPU; сохранённые кадры также совпали. Для 600 кадров Thwaite потребовалось 1 916 527 токенов, для 420 кадров Full Game — 2 645 885.
Скорость далека от NES. Numba-движок выполняет около 1650 токенов в секунду на одном CPU-ядре, NumPy — 210, stock transformers — примерно 10. Настоящей консоли соответствовало бы около 700 тысяч токенов в секунду. Десять секунд игрового времени занимают около 25 минут; пропуск повторяющихся idle-loop сокращает работу в 2,6–4,2 раза без изменения кадров и I/O.
Поддерживаются только NROM-картриджи mapper 0 и официальные opcodes, исполнение из RAM и IRQ отсутствуют. PPU упрощён: mid-scanline-эффекты не воспроизводятся, sprite-флаги приблизительны. Тем не менее одни веса запускают разные NROM ROM без пересборки, включая Super Mario Bros. при предоставленном пользователем образе.