pureikyubu/SRC/Hardware
2020-10-16 15:46:33 +03:00
..
Scripts CP/FIFO refactoring 2020-08-24 22:47:24 +03:00
AI.cpp Flipper AI refactoring 2020-08-24 12:16:54 +03:00
AI.h Flipper AI refactoring 2020-08-24 12:16:54 +03:00
AR.cpp Flipper AI refactoring 2020-08-24 12:16:54 +03:00
AR.h Cleaned registers 2020-08-22 17:51:11 +03:00
CP_PE.cpp Fixed reentrancy bug 2020-09-09 22:57:18 +03:00
CP_PE.h Cleanup 2020-08-25 01:44:25 +03:00
DI.cpp Another part of portable code 2020-08-09 12:46:30 +03:00
DI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
EXI.cpp PVS found some bugs 2020-09-04 14:48:47 +03:00
EXI.h Paths fixed for pissed linux 2020-08-09 21:36:10 +03:00
HW.cpp Performance counters 2020-09-04 00:26:40 +03:00
HW.h Flipper AI refactoring 2020-08-24 12:16:54 +03:00
HwCommands.cpp First wave of PI-CP FIFO refactoring 2020-08-24 23:53:57 +03:00
HwCommands.h Paths fixed for pissed linux 2020-08-09 21:36:10 +03:00
HWConfig.h First wave refactoring (remove TCHAR) 2020-08-06 22:18:38 +03:00
IPLDescrambler.cpp Bootrom support 2020-03-11 17:04:16 +03:00
IPLDescrambler.h Bootrom support 2020-03-11 17:04:16 +03:00
MC.cpp Memcards fix 2020-08-27 23:12:08 +03:00
MC.h Eliminated TCHAR from DolwinEmu core 2020-08-06 22:47:44 +03:00
MI.cpp Update MI.cpp 2020-10-16 15:46:33 +03:00
MI.h First wave of PI-CP FIFO refactoring 2020-08-24 23:53:57 +03:00
pch.cpp Hardware and HLE in standalone libs (WIP) 2020-03-08 15:25:58 +03:00
pch.h CP/FIFO refactoring 2020-08-24 22:47:24 +03:00
PI.cpp Performance counters 2020-09-04 00:26:40 +03:00
PI.h Performance counters 2020-09-04 00:26:40 +03:00
Readme.md Update Readme.md 2020-08-24 12:19:26 +03:00
SI.cpp HW compiled 2020-07-22 22:19:55 +03:00
SI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
VI.cpp Null backends ready 2020-07-23 01:54:58 +03:00
VI.h Performance counters 2020-09-04 00:26:40 +03:00

GCN Hardware

This component emulates everything inside the ASIC Flipper, except the graphics system (GX) and DSP.

Flipper_Block_Diagram

A short tour into the Flipper stuff, without shocking details:

  • AI: Audio DMA
  • AR: Aux. memory (ARAM) controller
  • CP: Command Processor for GX FIFO
  • EXI: SPI-like Macronix interface
  • MI: Memory Interface
  • PI: Processor Interface (interrupts, etc.)
  • SI: Serial Interface (goes to GameCube controllers connectors)
  • VI: Video output

Somehow also emulation of memory cards (Memcards) got here. For now, let it stay here, then we'll move it somewhere, if the emulation of more accessories and peripherals appears.

Real revisions of Flipper

It is documented (in the Dolphin SDK) that there were at least 2 versions of Flipper hardware - HW1 (an early debug version) and HW2 (contained in the latest Devkits and Retail consoles).

A small note on VI

GameCube uses a slightly alien image rendering engine:

  • The scene is drawn by the GPU into the internal Flipper frame buffer (EFB)
  • Then a special circuit (Copy Engine) copies this buffer to external memory on the fly converting RGB to YUV
  • Buffer from external memory (XFB) is used by the video output circuit to directly send the picture to the TV

All this is wildly unoptimized in terms of emulation and is a lot of pain.

Therefore, emulator developers ignore the XFB output and display in the emulator what the GPU draws. With rare exceptions, this works in most games, but it does not work in Homebrew and the games of some perverse developers.

GCNHardwareForPlayground

A special build version that defines Null backends for use in DolwinPlayground.