summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu>2017-01-10 23:54:09 -0300
committercoadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu>2017-01-10 23:54:09 -0300
commitbbcb3e3b315c140d6716248c0620c74d64568b8b (patch)
tree6782fc297e2df76e5afae4849162c72c5145f61a
parent4877509bbc81c398eb2ef2d699f51f374315809e (diff)
Update graphics modes
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+129.lua180
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+mmc1.lua148
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+mmc2.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+mmc3.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+mmc5.lua15
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02+vrc6.lua174
-rw-r--r--src/hardware_data/graphics/ppu_rp2c02.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+129.lua180
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+mmc1.lua148
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+mmc2.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+mmc3.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+mmc5.lua15
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03+vrc6.lua174
-rw-r--r--src/hardware_data/graphics/ppu_rp2c03.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+129.lua180
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+mmc1.lua148
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+mmc2.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+mmc3.lua8
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+mmc5.lua15
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07+vrc6.lua174
-rw-r--r--src/hardware_data/graphics/ppu_rp2c07.lua8
21 files changed, 1611 insertions, 12 deletions
diff --git a/src/hardware_data/graphics/ppu_rp2c02+129.lua b/src/hardware_data/graphics/ppu_rp2c02+129.lua
new file mode 100644
index 0000000..82ccc52
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c02+129.lua
@@ -0,0 +1,180 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C02 with 129/163 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 224,
+ vsync = 60.0988,
+ origin = {
+ x = 0,
+ y = -8,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 227,
+ '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 = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c02+mmc1.lua b/src/hardware_data/graphics/ppu_rp2c02+mmc1.lua
new file mode 100644
index 0000000..56d6ff0
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c02+mmc1.lua
@@ -0,0 +1,148 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C02 with MMC1 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 224,
+ vsync = 60.0988,
+ origin = {
+ x = 0,
+ y = -8,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ transform = {
+ move = true,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c02+mmc2.lua b/src/hardware_data/graphics/ppu_rp2c02+mmc2.lua
index 9d74e75..ef0c457 100644
--- a/src/hardware_data/graphics/ppu_rp2c02+mmc2.lua
+++ b/src/hardware_data/graphics/ppu_rp2c02+mmc2.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 512,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c02+mmc3.lua b/src/hardware_data/graphics/ppu_rp2c02+mmc3.lua
index 302e401..872c958 100644
--- a/src/hardware_data/graphics/ppu_rp2c02+mmc3.lua
+++ b/src/hardware_data/graphics/ppu_rp2c02+mmc3.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c02+mmc5.lua b/src/hardware_data/graphics/ppu_rp2c02+mmc5.lua
index 977dcbd..e4098f9 100644
--- a/src/hardware_data/graphics/ppu_rp2c02+mmc5.lua
+++ b/src/hardware_data/graphics/ppu_rp2c02+mmc5.lua
@@ -98,9 +98,22 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
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,
diff --git a/src/hardware_data/graphics/ppu_rp2c02+vrc6.lua b/src/hardware_data/graphics/ppu_rp2c02+vrc6.lua
new file mode 100644
index 0000000..4bc3ada
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c02+vrc6.lua
@@ -0,0 +1,174 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C02 with VRC6/VRC7 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 224,
+ vsync = 60.0988,
+ origin = {
+ x = 0,
+ y = -8,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c02.lua b/src/hardware_data/graphics/ppu_rp2c02.lua
index f9807a9..ef5b24f 100644
--- a/src/hardware_data/graphics/ppu_rp2c02.lua
+++ b/src/hardware_data/graphics/ppu_rp2c02.lua
@@ -103,9 +103,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = false,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c03+129.lua b/src/hardware_data/graphics/ppu_rp2c03+129.lua
new file mode 100644
index 0000000..1b0e1f6
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c03+129.lua
@@ -0,0 +1,180 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C03/RP2C04/RP2C05 with MMC3/MMC6 --
+-- (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 = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 227,
+ '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 = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c03+mmc1.lua b/src/hardware_data/graphics/ppu_rp2c03+mmc1.lua
new file mode 100644
index 0000000..1ee5ce1
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c03+mmc1.lua
@@ -0,0 +1,148 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C03/RP2C04/RP2C05 with MMC1 --
+-- (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 = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ transform = {
+ move = true,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c03+mmc2.lua b/src/hardware_data/graphics/ppu_rp2c03+mmc2.lua
index d7e14c2..ca01dcd 100644
--- a/src/hardware_data/graphics/ppu_rp2c03+mmc2.lua
+++ b/src/hardware_data/graphics/ppu_rp2c03+mmc2.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 512,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c03+mmc3.lua b/src/hardware_data/graphics/ppu_rp2c03+mmc3.lua
index 11d2a28..90ef5bf 100644
--- a/src/hardware_data/graphics/ppu_rp2c03+mmc3.lua
+++ b/src/hardware_data/graphics/ppu_rp2c03+mmc3.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c03+mmc5.lua b/src/hardware_data/graphics/ppu_rp2c03+mmc5.lua
index 4b9fa42..73de0df 100644
--- a/src/hardware_data/graphics/ppu_rp2c03+mmc5.lua
+++ b/src/hardware_data/graphics/ppu_rp2c03+mmc5.lua
@@ -98,9 +98,22 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
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,
diff --git a/src/hardware_data/graphics/ppu_rp2c03+vrc6.lua b/src/hardware_data/graphics/ppu_rp2c03+vrc6.lua
new file mode 100644
index 0000000..86c5e34
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c03+vrc6.lua
@@ -0,0 +1,174 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C03/RP2C04/RP2C05 with VRC6/VRC7 --
+-- (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 = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c03.lua b/src/hardware_data/graphics/ppu_rp2c03.lua
index 2b534b7..9bbf23d 100644
--- a/src/hardware_data/graphics/ppu_rp2c03.lua
+++ b/src/hardware_data/graphics/ppu_rp2c03.lua
@@ -103,9 +103,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = false,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c07+129.lua b/src/hardware_data/graphics/ppu_rp2c07+129.lua
new file mode 100644
index 0000000..eb1deb0
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c07+129.lua
@@ -0,0 +1,180 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C07 with MMC3/MMC6 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 240,
+ vsync = 50.0070,
+ origin = {
+ x = 0,
+ y = 0,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 227,
+ '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 = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c07+mmc1.lua b/src/hardware_data/graphics/ppu_rp2c07+mmc1.lua
new file mode 100644
index 0000000..7dc5c99
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c07+mmc1.lua
@@ -0,0 +1,148 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C07 with MMC1 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 240,
+ vsync = 50.0070,
+ origin = {
+ x = 0,
+ y = 0,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ transform = {
+ move = true,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c07+mmc2.lua b/src/hardware_data/graphics/ppu_rp2c07+mmc2.lua
index 795750f..c250eb2 100644
--- a/src/hardware_data/graphics/ppu_rp2c07+mmc2.lua
+++ b/src/hardware_data/graphics/ppu_rp2c07+mmc2.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 512,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c07+mmc3.lua b/src/hardware_data/graphics/ppu_rp2c07+mmc3.lua
index ef896bf..2346f84 100644
--- a/src/hardware_data/graphics/ppu_rp2c07+mmc3.lua
+++ b/src/hardware_data/graphics/ppu_rp2c07+mmc3.lua
@@ -104,9 +104,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,
diff --git a/src/hardware_data/graphics/ppu_rp2c07+mmc5.lua b/src/hardware_data/graphics/ppu_rp2c07+mmc5.lua
index b108ca5..8c68b89 100644
--- a/src/hardware_data/graphics/ppu_rp2c07+mmc5.lua
+++ b/src/hardware_data/graphics/ppu_rp2c07+mmc5.lua
@@ -98,9 +98,22 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
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,
diff --git a/src/hardware_data/graphics/ppu_rp2c07+vrc6.lua b/src/hardware_data/graphics/ppu_rp2c07+vrc6.lua
new file mode 100644
index 0000000..c33dd69
--- /dev/null
+++ b/src/hardware_data/graphics/ppu_rp2c07+vrc6.lua
@@ -0,0 +1,174 @@
+-- Information: --
+-- PPU (Picture processing unit) --
+-- RP2C07 with VRC6/VRC7 --
+-- (Memory management controller) --
+
+return {
+ screen = {
+ width = 256,
+ height = 240,
+ vsync = 50.0070,
+ origin = {
+ x = 0,
+ y = 0,
+ },
+ -- Total of unique texels, pixels and vertices on VRAM --
+ pixels = 73728,
+ texels = 320,
+ vertices = false,
+ },
+ colours = {
+ total = 64,
+ limit = 25,
+ transparent = {
+ sprite = colourKey,
+ tile = colourKey,
+ },
+ palettes = {
+ {
+ total = 4,
+ type = 'tilePerPalette',
+ colours = 3,
+ layers = false,
+ },
+ {
+ total = 4,
+ type = 'spritePerPalette',
+ colours = 3,
+ 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 = 64,
+ -- Limit sprites on line (scanline) without flickering --
+ onLine = 8,
+ 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 = 32,
+ Ytiles = 30,
+ tiles = 960,
+ 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 = 16+1,
+ Ytiles = 15+1,
+ tiles = 240+16+15+1,
+ pixels = 61440,
+ },
+ },
+ tiles = 'screenSections',
+ pixels = 'screenSections',
+ },
+ -- Total of tiles on VRAM --
+ unique = false,
+ maximum = 256,
+ mirror = {
+ switchable = true,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ '1 screen',
+ },
+ screenSections = {
+ main = {
+ optional = false,
+ moveSection = false,
+ {
+ startSection = {
+ x = 'startVRAM',
+ y = 'startVRAM',
+ },
+ endSection = {
+ x = 'endVRAM',
+ y = 'endVRAM',
+ },
+ size = {
+ -- Tile size in pixels --
+ width = 16,
+ height = 16,
+ },
+ 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 = 16,
+ height = 16,
+ },
+ transform = {
+ move = false,
+ rotate = false,
+ scale = false,
+ shear = false,
+ affine = false,
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+}
diff --git a/src/hardware_data/graphics/ppu_rp2c07.lua b/src/hardware_data/graphics/ppu_rp2c07.lua
index 79b7ebd..d4d610a 100644
--- a/src/hardware_data/graphics/ppu_rp2c07.lua
+++ b/src/hardware_data/graphics/ppu_rp2c07.lua
@@ -103,9 +103,15 @@ return {
tiles = 'screenSections',
pixels = 'screenSections',
},
- -- Total of unique tiles on VRAM --
+ -- Total of tiles on VRAM --
unique = false,
maximum = 256,
+ mirror = {
+ switchable = false,
+ nametables = 4,
+ 'horizontal',
+ 'vertical',
+ },
screenSections = {
main = {
optional = false,