Попросил GPT-5 high создать браузерный эмулятор аркадной Space Invaders. Вот что получилось со слов нейронки:
------------------
Этот эмулятор Space Invaders на базе процессора Intel 8080 включает:
Полная архитектура оригинальной платы Space Invaders (Intel 8080):
- 8-битный процессор Intel 8080 с регистрами A, B, C, D, E, H, L, SP, PC и флагами Z/S/P/CY/AC
- 64 КБ адресного пространства
- Память/маппинг, совместимый с аркадой:
- 0x0000–0x07FF — ROM invaders.h
- 0x0800–0x0FFF — ROM invaders.g
- 0x1000–0x17FF — ROM invaders.f
- 0x1800–0x1FFF — ROM invaders.e
- 0x2000–0x23FF — RAM
- 0x2400–0x3FFF — видеопамять (VRAM)
- Аппаратный 16-битный сдвиговый регистр:
- OUT 2 — установка смещения
- OUT 4 — загрузка данных
- IN 3 — чтение результата со смещением
- Порты ввода:
- IN 0 — 0x0F (DIP по умолчанию)
- IN 1 — кнопки игрока 1 и монета
- IN 2 — кнопки игрока 2
- Прерывания 60 Гц (два полукадра):
- Полукадр 1: RST 1 (0x0008)
- Полукадр 2: RST 2 (0x0010)
- Тактирование CPU ~ 2 МГц (2000 циклов/мс); синхронизация с кадровой развёрткой
Набор команд Intel 8080:
- Реализованы инструкции, необходимые для Space Invaders:
- Передача данных, стековые операции PUSH/POP
- Арифметика и логика: ADD/ADC/SUB/SBB/ANA/XRA/ORA/CMP/DAA
- Сдвиги/ротации: RLC/RRC/RAL/RAR, CMA, STC/CMC
- Переходы/вызовы/возвраты (условные и безусловные), RST-векторы
- IN/OUT (порты 0–5: сдвиговый регистр и звук)
- Неиспользуемые/недокументированные опкоды вызывают ошибку (в ROM игры не нужны)
Графическая система:
- Монохромный дисплей 224x256 пикселей (вертикальная ориентация)
- Масштабирование x2 для чётких «пикселей»
- Чтение VRAM по схеме 0x2400 + X*32 + Y/8 (вертикальные байтовые столбцы)
- Цветной оверлей (как на реальном автомате):
- Верх — белый; зона UFO — красная; игровое поле — зелёное; низ интерфейса — белый/зелёный
- Переключатель Color overlay
Ввод:
- Игрок 1: A/D — влево/вправо, W — выстрел
- Игрок 2: ←/→ — влево/вправо, ↑ — выстрел
- Монета/Старт: C — coin, 1 — старт 1P, 2 — старт 2P
- Маппинг по KeyboardEvent.code (работает в любой раскладке), предотвращается скролл страницы
Звук (Web Audio API):
- Эмуляция основных эффектов:
- НЛО (порт 3, бит 0), выстрел (бит 1), попадание по базе (бит 2), попадание по пришельцу (бит 3)
- Шаги флотилии (порт 5, биты 0–3), сбитие НЛО (порт 5, бит 4)
- Синтез: осцилляторы, шум, би-квад фильтры, огибающие, мастер-гейн и компрессор
- Регулировка громкости, режим Mute
Примечание о звуке
Эмуляция звука носит приблизительный характер и не является точной копией звучания оригинального аркадного автомата Space Invaders. На реальной плате использовались дискретные аналоговые цепи, тогда как в эмуляторе звук синтезируется средствами Web Audio. Поэтому тембры, огибающие, фильтрация и общая динамика могут заметно отличаться от оригинала.
Тайминг и синхронизация:
- Главный цикл 60 Гц; кадр делится на два полукадра с RST-прерываниями
- На полукадр CPU исполняет ~16 666 циклов; экран обновляется раз в кадр
Дополнительные возможности:
- Загрузка четырёх ROM-файлов: invaders.h, invaders.g, invaders.f, invaders.e
- Кнопки Start и Reset
- Переключатель цветного оверлея
- Настройка громкости и Mute
- Полностью в браузере: Canvas 2D + Web Audio
Как использовать:
1) Выберите 4 ROM-файла (invaders.h, invaders.g, invaders.f, invaders.e).
2) Нажмите Start — эмуляция начнётся.
3) Внесите «монету» клавишей C, затем 1 (1P) или 2 (2P).
4) Управление: A/D/W для игрока 1; ←/→/↑ для игрока 2.
5) При необходимости используйте Reset, Color overlay, Mute/громкость.
------------------
С интерфейсом эмулятора не заморачивался - сделал все максимально просто. Но по желанию можно прикрутить хоть рога черта и покрасить их в розовый цвет.
Вместе с файлом эмулятора выкладываю четыре рома игры.
Добавлено позже:Интересная новость
https://www.securitylab.ru/news/562633.php.