Jednotka zpracování obrazu - Picture Processing Unit

NES PPU (Ricoh RP2C07) v PAL NES

PPU ( Picture Processing Unit ), konkrétněji známý jako Ricoh RP2C02 ( NTSC verze) / RP2C07 ( PAL verze), je integrovaný obvod na Nintendo Entertainment System zodpovědný za generování video signálů z grafických dat uložených v paměti.

Čip je známý pro efektivní využití paměti , protože k ukládání grafických dat využívá velmi málo paměti. Bylo to dost pokročilé na svou dobu, kdy byl propuštěn Famicom (japonská verze Nintendo Entertainment System), který měl plnou podporu sprite , pohyblivé pozadí a mnoho barev na obrazovce současně. Aby Nintendo konkurovalo jiným videoherním systémům, jako je graficky vynikající systém Sega Master System , rozšířilo technické možnosti PPU také pomocí mapovačů , které byly umístěny na herní kazetě. Mapovače přidaly více paměti nebo mohly přepínat data do adresového prostoru PPU , což umožnilo vytvářet pokročilejší grafiku s použitím více barev a větších sad dlaždic .

Klíčové vlastnosti

  • 2 kB externí RAM pro uložení rozložení dlaždic a pomocných barevných informací pro grafiku na pozadí (běžně označované jako jmenovky )
  • 288 (256 + 32) bajtů interní paměti DRAM pro ukládání atributů sprite . To se měří v množství spotřebovaného adresního prostoru ; ne každý bit každého bajtu existuje v PPU.
  • 32 bajtů interního SRAM pro uložení palety. Stejně jako u úložiště atributů sprite neexistují v PPU všechny bity.
  • Spritové o velikosti 8 × 8 nebo 8 × 16 (volitelné)
  • Dvě externí sady dlaždic 4 kB s prostorem pro každou z 256 dlaždic, obvykle uložených buď v paměti RAM nebo ROM na herní kazetě
  • Až 64 skřítků (pohyblivých objektů) na obrazovce současně (pouze 8 viditelných na řádek skenování )
  • 25 barev současně (i když je pomocí programovacích triků možné více barev) z hardwarové palety barev 54 barev
  • Rozlišení obrazu 256 × 240 pixelů (plně viditelné na PAL, ale oříznuté na 256 × 224 na většině starších televizních přijímačů NTSC ), ačkoli HDTV a snímací zařízení mají tendenci zobrazovat celý obraz bez ohledu na to.

Technické informace

PPU je řízen přes osm registrů viditelných v adresním prostoru CPU v adresách $ 2 000 až 2007. Všechna data a informace jsou prostřednictvím nich předávány do PPU, s výjimkou nezpracovaných dat dlaždic (existují výjimky, protože některé hry měly místo paměti ROM místo paměti ROM pro ukládání dat dlaždic a dlaždice se musely zapisovat pokaždé), což je pevné do adresního prostoru PPU. PPU používá grafická data dlaždic spolu s informacemi uloženými programem v RAM PPU, jako je barva a poloha, k vykreslení konečného grafického výstupu na obrazovku.

Nejnižší grafické komponenty, s nimiž PPU pracuje, jsou dlaždice , které jsou bloky 8 × 8 nebo 8 × 16 pixelů. Dlaždice jsou uloženy v ROM čipu na herní kazetě. Jsou to základní stavební bloky, které se používají k vytváření větších pohyblivých objektů nebo velkých statických pozadí.

Vzhledem k malé velikosti spritů NES je většina pohyblivých objektů vyrobena z několika spritů. Na jeden řádek skenování lze nakreslit pouze 8 skřítků, a proto PPU obsahuje příznak „přetečení“, který se nastaví, pokud se na skenovacím řádku objeví více než 8 skřítků. Tento příznak je však chybný a generuje jak falešná pozitiva, tak falešná negativa, takže byl použit jen zřídka.

Jak již bylo uvedeno výše, některé hry (většinou rané tituly MMC1 jako Legend of Zelda a Castlevania ) ukládají svá grafická data do hlavní PRG ROM. Ty mají místo paměti ROM čip CHR RAM a předávají data z PRG ROM do paměti CHR RAM, přičemž hlavním účelem je výroba animovaných dlaždic pozadí. Příchod mapovače MMC3 v roce 1988 tuto potřebu eliminoval, protože animované dlaždice mohly být nyní za chodu převáděny z CHR ROM. PPU může přistupovat až k 8 KB CHR ROM nebo RAM najednou.

PPU v zásadě podporuje dva různé druhy tažných objektů: pohyblivé (skřítci) a nepohyblivé (pozadí). Oba druhy objektů se skládají z dlaždic a navíc sprite a objekt na pozadí mohou používat stejnou dlaždici. Rozdíl je v tom, že dlaždice použitá jako sprite se může pohybovat, zatímco dlaždice použitá jako pozadí se nemůže pohybovat. Neexistují žádné registry detekce kolizí pro skřítky, jak to bylo běžné ve většině herních systémů té doby.

Sprite data jsou uložena ve speciální paměti zvané „Object Attribute Memory“ nebo zkráceně „OAM“, což je 256bajtová paměť zabudovaná do jádra PPU. Data zde uložená jsou 4 bajty: poloha, barva a dlaždice pro každého ze 64 spritů. Tato data používá PPU k umístění sprite, když vykreslí rámeček. Objekty na pozadí se však ukládají mnohem méně výlučným způsobem, který se více podobá způsobu ukládání znaků v textovém režimu na počítačích . Pozadí je definováno jednoduchou datovou strukturou zvanou jmenná tabulka, což je v podstatě dvourozměrné pole. Celočíselná hodnota v každém slotu pole odpovídá číslu dlaždice a indexové hodnoty tohoto slotu odpovídají zamýšlené poloze dlaždice x / y na obrazovce. PPU má bez použití mapovačů paměti dvě jmenné tabulky, takže je možné plynulé posouvání mezi pozadími.

Jakmile jsou data dlaždic nastavena v pojmenovatelném seznamu, je snadné upravit rolovací registry PPU X / Y tak, aby se obrazovka pohybovala.

Aby bylo možné zobrazit grafiku na obrazovce, musí být definována barevná paleta. Je uložen v samostatném 32 bajtovém umístění v paměti RAM, známém jako „paleta RAM“. Každá položka zde vybere barvu z palety barev hardwaru, což jsou předdefinované barvy, ze kterých si můžete vybrat. K dispozici jsou čtyři palety pozadí a čtyři palety sprite, každá se třemi barvami plus průhlednost. K dispozici je také barva pozadí, která je obvykle vidět za průhlednými oblastmi dlaždic pozadí. PPU tedy může na obrazovku normálně kreslit 25 jedinečných barev.

Viz také

externí odkazy