Breaknes

Эмуляторная часть проекта breaks по реверс-инжинирингу микросхем

Эмулятор NES / Famicom / Dendy на уровне вентилей.

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

Чипы на уровне вентилей

6502 (M6502Core), 2A03/2A07 CPU+звук (APUSim) и PPU 2C02 (PPUSim) исполняют логику, восстановленную с реальных кристаллов, — вплоть до внутренних сигналов и тайминговых аномалий. MMC1 моделируется как чип.

Картриджи как данные

Плата — это JSON-документ из компонентов и соединений (CartPcb), а не код на C++. Картриджи опознаются по CRC32 дампов PRG/CHR через базу, полученную из nescartdb.

Два фронтенда

Управляемое приложение WinForms и SDL2-порт, собираемый под Windows и Linux, — с юнит-тестами, отладочными инструментами и IO-подсистемой для контроллеров NES, Famicom и Dendy.

Документация — статьи и описания компонентов

О проекте

Обзор

О Breaknes

Эмулятор вкратце: что внутри, структура репозитория, компоненты симуляции, инструменты, сборка.

Руководство

Руководство пользователя

Главное окно и настройки управляемого приложения.

Устройство

Жизненный цикл эмулятора

Что происходит на событиях OnLoad, SaveSettings, LoadROM, Step и Exit.

Из Wiki

Руководство

Дамп видеосигнала в PPUPlayer

Как получить дамп видеосигнала PPU с помощью PPUPlayer и Nintendulator — включая формат RAW-дампа пикселей.

Исследование

Расследование: The Tower of Druaga

Кейс: проверка поведения игры на реальном картридже и починка в Breaknes (issue #527).

Компоненты

Компонент

CartPcb

Функциональная симуляция картриджных PCB: плата — JSON-документ из компонентов и соединений, а не код на C++.

Компонент

Nescartdb

Конвертированная в JSON база картриджей — опознание PCB по CRC32 дампов PRG/CHR.

Компонент

IO-подсистема

Контроллеры и устройства для NES, Famicom и Dendy и архитектура их привязки к материнской плате.

Компонент

Chips

Симуляторы на уровне вентилей: M6502Core (6502), APUSim (2A03/2A07), PPUSim (2C02/2C07), MMC1.

Компонент

Common

Общие библиотеки: BaseLogicLib, BaseBoardLib (LS139, LS373, SRAM, RomChip…), JsonLib, SharpTools.

Компонент

BreaksCore

Нативное ядро — материнские платы, разводка чипов, debug-хаб — и два фронтенда.

Тесты

UnitTest

Автоматические тесты чипов, ядер и общих библиотек.

Инструменты

Tools

Breakasm, BreaksDebug, PPU/APU-плееры, профилировщики и демо-программы.

Журнал изменений

Дайджест

Дайджест изменений · PR #518–#526

Шесть pull request'ов, влитых 30–31 августа 2026 года: единая система журналирования, перенос IO-подсистемы в SDL2-порт, до двух экранов с привязкой PPU⇄TV, приведение базы плат к реальным ревизиям материнских плат, иконка проекта и переработка CartPcb (scroll-перемычка, клеевая логика чипами, фолбэк по iNES).

30–31 августа 2026