# Источники и точность воспроизведения

Материалы проверены 23 сентября 2026 года.

## Процессор и прошивка

Основа порта — [ядро SM510/SM500/SM5A в MAME](https://github.com/mamedev/mame/tree/0f910564f74303d3fab3b4d4674ff3e980dc88bd/src/devices/cpu/sm510), автор **hap**, благодарность **Igor**, BSD-3-Clause. Использованы `sm5a.cpp`, `sm5a.h`, `sm500.cpp`, `sm500op.cpp`, `sm510op.cpp`, `sm510base.cpp`.

Реализованы инструкции SM5A, 11-битная ROM, LFSR-счётчик команд, одноуровневый стек, 65 четырёхбитных ячеек RAM с зеркалами, делитель 32768 Гц, матрица кнопок, W/W′. Распиновка и режим прямого звука R1 сверены с [драйвером ИМ-02](https://github.com/mamedev/mame/blob/0f910564f74303d3fab3b4d4674ff3e980dc88bd/src/mame/handheld/hh_sm510.cpp). ЖК-фильтр повторяет параметры драйвера: 1024 Гц, порог 8, накопление до 25 тиков.

ROM извлечена из `data/o.h` в [artyomsoft/pico-nu-pogodi](https://github.com/artyomsoft/pico-nu-pogodi/tree/5bce99a4bc6c996b63920388c8a3261c02ca65f0). Сигнатура контейнера называет игру Egg, но извлечённые байты совпадают с `im-02.bin` в MAME. По драйверу MAME ИМ-02 и Nintendo MC-25 используют идентичный образ.

| Файл | Размер | SHA-1 |
| --- | ---: | --- |
| `assets/im-02.bin` | 1856 | `7e94fc255f32db725d5aa9e196088e490c1a1443` |
| `assets/lcd.svg` | 156488 | `28cb05967837e52fc40f088361456e1dcd4ec09f` |

CRC32 ROM: `cb820c32`. Прошивка не патчится. `js/rom.js` содержит те же байты; совпадение проверяется тестом. В приложении нет читов и отдельно реализованных правил игры.

## Экран и корпус

Сегменты — `nupogodi/nupogodi.svg` из `gnw_mmouse.zip` в [архиве MAME 0.219](https://archive.org/details/MAME219RomsOnlyMerged). Это SVG-ревизия 2019 года, а не позднейшая ревизия текущего MAME. [Описание подготовки рисунка hap и Igor](https://forums.bannister.org/ubbthreads.php?Number=110177&ubb=showflat).

Скрипт подготовки сохраняет все пути и трансформации 72 сегментов `group.bit.common`, добавляет адреса для переключения и удаляет служебный белый фон. Куры, лотки и растительность находятся на неподвижной подложке.

Корпус и фон — [архивное оформление MAME, зеркало RetroBIOS](https://github.com/abdess/retrobios/blob/73be130e651eed55b305e92654eaeffa61d9d2c1/bios/Arcade/MAME/artwork/nupogodi.zip):

- **Lee Robson (hydef)** — дизайн, компоновка и обработка.
- **Henrik Algestam** — скан подложки.
- Геометрия слоёв следует виду **Unit Only** из `default.lay`: корпус 2782×1654; фон (716,385,1351,881); сегменты (756,418,1272,813).
- `unit.png` SHA-1: `6829366e655af75faa64b49e4491a9edcb9310d0`.
- `background.png` SHA-1: `d0c90e49efcf9cb13787081958e8832f3e073554`.
- `foreground.png` SHA-1: `18a90264dd03d33afafb43c40b8e5a2d1f214c23`.

PNG скопированы без изменений. Корпус — фанатская реконструкция конкретного варианта ИМ-02, не утверждение о тождестве всем заводским ревизиям.

## Заводская инструкция

[Скан руководства «Электроника ИМ02»](https://www.amuseum.bg/data/files/cms/0/%D0%A0%D1%8A%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%9D%D1%83%20%D0%9F%D0%BE%D0%B3%D0%BE%D0%B4%D0%B8.pdf), печатные страницы 5–12: кнопки, настройка времени/будильника, ДП/ПП, штрафы, Заяц, три штрафа до окончания, аннулирование на 200/500 и различие числа лотков А/Б.

Начальные часы — 12:00. При открытии страницы оболочка нажимает «Время», чтобы сразу показать штатную демонстрацию с часами. Маленькая кнопка с часами подаёт ACL и оставляет устройство в режиме установки времени.

## Границы точности

Правила и темп задаёт оригинальная программа. Порт проверен автоматическими прогонами, но не сравнивался с физическим ИМ-02 по каждой инструкции или осциллограмме. Гамма, оттенки, блики и инерция настоящего стекла воспроизводятся приближённо. Звук берётся с R1, но динамик компьютера и фильтры Web Audio не тождественны пьезоэлементу устройства. Процессор считает собственные такты, экран рисуется с частотой браузера.

Браузерные дополнения находятся под корпусом: пауза, выключение звука, инструкция, полный экран. При скрытии вкладки и открытии инструкции эмуляция и часы останавливаются. Долгие задержки браузера не проигрываются ускоренно. Для надёжного опроса кнопок короткое касание удерживается минимум 65 мс. Эти особенности не меняют прошивку, но являются отличиями от физического устройства.

[Результаты проверки](VALIDATION.md). [Опубликованная игра на GitHub Pages](https://positron48.github.io/nu-pogodi/).

## Права

BSD-3-Clause относится к коду и порту CPU. Исходная прошивка, персонажи и архивные изображения не объявляются свободными или общественным достоянием; права сохраняются у соответствующих правообладателей.

Оригинальный файл условий оформления сохранён в `assets/ARTWORK-README.txt`. Его автор отдельно запрещает продажу оформления. Доступность архивных файлов сама по себе не выдаёт новой лицензии на их коммерческое распространение.
