Mosaic
Mosaic is a screen pixellation effect. It can be enabled or disabled on a per-background basis via bits 0-3 of 2106h. When enabled for a given background, the color of the pixel at screen position (H,V) is:
output_color(H,V) = input_color(floor(H/size)*size, floor(V/size)*size)
where size is the value of bits 4-7 of 2106h plus one. Thus, the shaded output consists of a grid of solid-colored squares where each entire square's color matches that of its top-leftmost input pixel.
The first mosaic square's location is always (0,0). Sprites are unaffected by the mosaic filter.
The mosaic filter has a horizontal and vertical subsystem. The horizontal mosaic latches remember the color of the top-leftmost pixel of each mosaicized block. The vertical mosaic latch remembers what the value of the PPU vertical scanline counter was at the top of each mosaicized block. [3]
Examples
Game Name | Mosaic Usage | Animated GIF |
---|---|---|
Final Fantasy III (US) | when trying to select a disabled menu option | |
Final Fantasy Mystic Quest | upon entering battles and before/after loading new sections of the map | |
Star Ocean | upon entering every battle | |
Super Mario World | after selecting and entering a level |
Apparent Resolution
This table describes how many mosaicized blocks appear on each axis when the mosaic filter is applied (the "apparent" screen resolution, in other words) disregarding overscan.
$2106.4-7 | Mosaic Block Size | rows of complete blocks | columns of complete blocks |
---|---|---|---|
0 | 1 | 224 | 256 |
1 | 2 | 112 | 128 |
2 | 3 | 74 | 85 |
3 | 4 | 56 | 64 |
4 | 5 | 44 | 51 |
5 | 6 | 37 | 42 |
6 | 7 | 32 | 36 |
7 | 8 | 28 | 32 |
8 | 9 | 24 | 28 |
9 | 10 | 22 | 25 |
10 | 11 | 20 | 23 |
11 | 12 | 18 | 21 |
12 | 13 | 17 | 19 |
13 | 14 | 16 | 18 |
14 | 15 | 14 | 17 |
15 | 16 | 14 | 16 |
References
- setting example: page 2-4-1 of Book I of the official Super Nintendo development manual
- bit-by-bit breakdown of the mosaic register: page 2-27-3 lbid
- display example of mosaic effect: Appendix A-7 lbid
- https://problemkaputt.de/fullsnes.htm#snesppubgcontrol
- [3] https://board.zsnes.com/phpBB3/viewtopic.php?p=204966#p204966