-- Information: -- -- PPU (Picture processing unit) -- -- RP2C03/RP2C04/RP2C05 with MMC5 -- -- (Memory management controller) -- return { screen = { width = 256, height = 224, vsync = 60.0985, origin = { x = 0, y = -8, }, -- Total of unique texels, pixels and vertices on VRAM -- pixels = 1081344, texels = 16640, vertices = false, }, colours = { total = 64, limit = false, transparent = { sprite = 'colourKey', tile = 'colourKey', }, tileDepth = 'colourKey', palettes = { { total = 1, type = 'perTexel', colours = 4, layers = false, }, }, }, meshes = false, shaders = { api = false, version = false, fragment = false, vectex = false, geometry = false, tessellation = false, }, physic = false, sprites = { -- Limit sprites on screen -- onScreen = 256, -- Limit sprites on line (scanline) without flickering -- onLine = 8, unique = 256, transform = { move = true, rotate = false, scale = 'flip', shear = false, affine = false, }, -- Sprite sizes in pixels -- sizes = { { width = 8, height = 8, }, { width = 8, height = 16, }, }, }, tiles = { layers = { { -- Total tiles and pixels on VRAM -- onVRAM = { screenSections = { all = { Xtiles = 64, Ytiles = 60, tiles = 3840, pixels = 245760, }, }, tiles = 'screenSections', pixels = 'screenSections', }, -- Total tiles and pixels on screen -- onScreen = { screenSections = { -- On screen section with support scrolling X and/or Y, -- -- will be include one tile by axis -- all = { Xtiles = 32+1, Ytiles = 30+1, tiles = 960+32+30+1, pixels = 61440, }, }, tiles = 'screenSections', pixels = 'screenSections', }, -- Total of tiles on VRAM -- unique = { data = 256+256, background = 'data', total = 512, }, maximum = 16384, mirror = { switchable = true, nametables = 4, 'horizontal', 'vertical', '1 screen', '4 screen', 'diagonal', 'l shaped', '3 screen vertical', '3 screen horizontal', '3 screen diagonal', }, screenSections = { main = { optional = false, moveSection = false, { startSection = { x = 'startVRAM', y = 'startVRAM', }, endSection = { x = 'endVRAM', y = 'endVRAM', }, size = { -- Tile size in pixels -- width = 8, height = 8, }, transform = { move = true, rotate = false, scale = false, shear = false, affine = false, }, }, }, overlay0 = { optional = true, moveSection = true, { startSection = { x = 'free', y = 'free', }, endSection = { x = 'free', y = 'free', }, size = { -- Tile size in pixels -- width = 8, height = 8, }, transform = { move = false, rotate = false, scale = false, shear = false, affine = false, }, }, }, overlay1 = { optional = true, moveSection = true, { startSection = { x = 'free', y = 'free', }, endSection = { x = 'free', y = 'free', }, size = { -- Tile size in pixels -- width = 8, height = 8, }, transform = { move = false, rotate = false, scale = false, shear = false, affine = false, }, }, }, overlay2 = { optional = true, moveSection = true, { startSection = { x = 'free', y = 'free', }, endSection = { x = 'free', y = 'free', }, size = { -- Tile size in pixels -- width = 8, height = 8, }, transform = { move = false, rotate = false, scale = false, shear = false, affine = false, }, }, }, }, }, }, }, }