You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Этот раздел для понимания как из зоопарка плат NES/Famicom/Dendy (читай "приставок") слепить что-то, что можно эмулировать.
Что значит борда
У нас низкоуровневый эмулятор на базе электронных компонентов (чипы, шины).
А борда приставки - это просто схема соединения чипов и шин. Хотя некоторые шины и уходят в основную часть эмулятора специальным образом (видеосигнал например), большая часть - это просто значения сигналов.
Имеем:
Мат плату со вспомогательными чипами
APU / PPU
Разъём карика, который также может отличаться или (LOL) отсутствовать (в аркадах например)
Как видно он определяет название борды и перечисляет какие компоненты на ней находятся.
Как всё это расползается в код?:
name: На базе имени платы выбирается реализация борды, напр. Famicom.cpp / NES.cpp / Что-тоещё.cpp
apu: Выбирается ревизия APU (просто рефлективное имя, которое преобразуется в APUSim::Revision)
ppu: Аналогично для PPU (PPUSim::Revision)
p1: Форм-фактор разъема кариков для подсистемы симуляции картриджей. Может быть Fami, NES, None.
Как лепить свою борду
Если борда минимально отличается от уже имеющихся (ревизиями чипов), то можно просто добавить name и в BoardFactory.cpp сказать что этот name - это например Famicom.
Если борда прям совсем новая, то нужно на базе AbstractBoard.cpp сделать новый МояБорда.cpp и в BoardFactory.cpp добавить новый name
Как лепить свой APU / PPU
Просто добавляем в APUSim/PPUSim новую ревизию чипа в enum и добавляем её особенности в C++ код.
После чего эту ревизию можно использовать в BoardDescription.
Некоторые Famiclone сделаны как NOAC
(NOAC - Nintendo on a chip).
Ну ничего страшного. ВНутри общего чипа же есть APU / PPU. Вот их "ревизии" и нужно будет добавить в APUSim / PPUSim. Таким образом NOAC как бы "расползётся" по двум библиотекам-симуляторам.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Этот раздел для понимания как из зоопарка плат NES/Famicom/Dendy (читай "приставок") слепить что-то, что можно эмулировать.
Что значит борда
У нас низкоуровневый эмулятор на базе электронных компонентов (чипы, шины).
А борда приставки - это просто схема соединения чипов и шин. Хотя некоторые шины и уходят в основную часть эмулятора специальным образом (видеосигнал например), большая часть - это просто значения сигналов.
Имеем:
BoardDescription.json
В эмуляторе сидит такой JSON:
Как видно он определяет название борды и перечисляет какие компоненты на ней находятся.
Как всё это расползается в код?:
Как лепить свою борду
Если борда минимально отличается от уже имеющихся (ревизиями чипов), то можно просто добавить name и в BoardFactory.cpp сказать что этот name - это например Famicom.
Если борда прям совсем новая, то нужно на базе AbstractBoard.cpp сделать новый МояБорда.cpp и в BoardFactory.cpp добавить новый name
Как лепить свой APU / PPU
Просто добавляем в APUSim/PPUSim новую ревизию чипа в enum и добавляем её особенности в C++ код.
После чего эту ревизию можно использовать в BoardDescription.
Некоторые Famiclone сделаны как NOAC
(NOAC - Nintendo on a chip).
Ну ничего страшного. ВНутри общего чипа же есть APU / PPU. Вот их "ревизии" и нужно будет добавить в APUSim / PPUSim. Таким образом NOAC как бы "расползётся" по двум библиотекам-симуляторам.
Beta Was this translation helpful? Give feedback.
All reactions