О Breaknes

Эмуляция NES / Famicom / Dendy на уровне вентилей — эмуляторная часть проекта breaks по реверс-инжинирингу микросхем

Breaknes — эмулятор NES/Famicom/Dendy на уровне вентилей. Чипы эмулируются не «по поведению»: логические схемы, восстановленные с реальных кристаллов, повторены на C++, поэтому эмулированный 6502 ведёт себя так же, как настоящий, — те же вентили, те же триггеры, те же шины, те же особенности.

Что внутри

Репозиторий содержит сам эмулятор, симуляторы чипов на уровне вентилей, управляемый данными симулятор картриджных плат, конвертированную базу картриджей, юнит-тесты и набор инструментов. У эмулятора два фронтенда на общем нативном ядре: управляемое приложение WinForms и SDL2-порт, собираемый под Windows и Linux.

Структура репозитория

ПапкаЧто внутри
Breaknes/Сам эмулятор: управляемый GUI (Breaknes/Breaknes), SDL2-порт (Breaknes/BreaknesSDL) и общее нативное ядро BreaksCore.
Chips/Симуляторы чипов на уровне вентилей: M6502Core (6502), APUSim (2A03/2A07 CPU+звук), PPUSim (2C02 PPU), MMC1.
CartPcb/Функциональная симуляция картриджных PCB. Плата — это данные: JSON-документ с компонентами и соединениями, а не код на C++.
Common/Общий код: BaseLogicLib (логические примитивы), BaseBoardLib (компоненты материнских плат: LS139, LS373, SRAM, RomChip…), JsonLib, SharpTools (C#-контролы отладчика).
IO/Устройства ввода-вывода: контроллеры NES/Famicom/Dendy, виртуальные контроллеры, CD4021, UM6582.
Nescartdb/Конвертированная база nescartdb (JSON) — опознаёт картридж по CRC32 дампов PRG/CHR.
Tools/Утилиты (ассемблер, GUI-отладчик, PPU/APU-плееры, демо…).
UnitTest/Юнит-тесты чипов и ядер.
Wiki/Дизайн-документация — частично переиздана на этом сайте.

Компоненты симуляции

Инструменты

ИнструментЧто делает
BreakasmМаксимально простой ассемблер 6502 (C++ и Python-порт).
BreaksDebugGUI для изучения ядра 6502: сигналы, регистры, память, дизассемблер.
PPUPlayerПроигрывает дампы регистров PPU, записанные в эмуляторе.
APUPlayerПроигрывает дампы регистров APU, записанные в эмуляторе.
PpuPumpkin / ApuPumpkinДемо профилирования скорости PPUSim / APUSim.
SlooowPlaaayerПроигрывает аудио, захваченное с медленных источников.
SignalPlotDemo, FurryPlotDemo, InfernoColormapДемо самодельных WinForms-контролов.
DumpRegdump / NescartdbConvertPython-скрипты: дамп regdump / конвертация nescartdb XML→JSON.

Сборка

Windows: VS2026 — откройте Breaknes.sln и соберите. Требуется .NET 6.0 Desktop Runtime. Для минимальной сборки используйте SDL2-порт (Breaknes/BreaknesSDL).

Linux: обычный CMake-процесс (cmake .. + make в папке build/), на выходе — SDL2-бинарник.

Источник: Readme.md, Wiki/Readme.md · страница входит в сайт документации.