pureikyubu/SRC/Hardware
2020-07-31 00:02:15 +03:00
..
Scripts/VS2019 Fixed headers 2020-07-23 20:47:42 +03:00
AI.cpp Cleanup debug 2020-07-27 00:51:09 +03:00
AI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
AR.cpp Fixed bug releasing Bootrom in MI.cpp 2020-07-23 17:31:15 +03:00
AR.h Cpp alike structs 2020-06-28 16:01:58 +03:00
CP.cpp Fixed bug releasing Bootrom in MI.cpp 2020-07-23 17:31:15 +03:00
CP.h Cpp alike structs 2020-06-28 16:01:58 +03:00
DI.cpp Refactoring WIP 2020-07-21 23:28:29 +03:00
DI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
EFB.cpp Refactoring WIP 2020-07-21 23:28:29 +03:00
EFB.h Datatype and refactoring completed 2020-03-05 11:18:20 +03:00
EXI.cpp HW compiled 2020-07-22 22:19:55 +03:00
EXI.h Refactoring WIP 2020-07-21 23:28:29 +03:00
FIFO.cpp GX FIFO Redone 2020-04-26 01:35:23 +03:00
FIFO.h GX FIFO Redone 2020-04-26 01:35:23 +03:00
HW.cpp Null backends ready 2020-07-23 01:54:58 +03:00
HW.h Refactored header includes 2020-07-23 17:00:48 +03:00
HwCommands.cpp HW compiled 2020-07-22 22:19:55 +03:00
HwCommands.h TLB support enabled 2020-05-05 13:38:27 +03:00
HWConfig.h Refactored header includes 2020-07-23 17:00:48 +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 UI fixes 2020-07-31 00:02:15 +03:00
MC.h Legacy UI refactoring 2020-07-23 13:58:46 +03:00
MI.cpp Debug message queue 2020-07-23 19:35:26 +03:00
MI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
pch.cpp Hardware and HLE in standalone libs (WIP) 2020-03-08 15:25:58 +03:00
pch.h Fixed bug releasing Bootrom in MI.cpp 2020-07-23 17:31:15 +03:00
PI.cpp Refactoring WIP 2020-07-21 23:28:29 +03:00
PI.h Cpp alike structs 2020-06-28 16:01:58 +03:00
Readme.md Fixed headers 2020-07-23 20:47:42 +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 Refactored header includes 2020-07-23 17:00:48 +03:00

GCN Hardware

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

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

There is also an emulation of memory cards (MC).

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.