aboutsummaryrefslogtreecommitdiff
path: root/fx/README.md
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-01-23 16:14:12 +0100
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-02-04 22:00:07 +0100
commitfdf44365e56c3741f47cbd421a57f0d074a5492c (patch)
tree92b55944dd84171f6c42857402b1f90f835abfa2 /fx/README.md
parent6c207c192b7ce1a292249afd7b0a3499be70d03c (diff)
downloadcode.nes-fdf44365e56c3741f47cbd421a57f0d074a5492c.tar.gz
code.nes-fdf44365e56c3741f47cbd421a57f0d074a5492c.zip
fx: Provide an example of PPU bank switching
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'fx/README.md')
-rw-r--r--fx/README.md14
1 files changed, 11 insertions, 3 deletions
diff --git a/fx/README.md b/fx/README.md
index 746e922..e7194dc 100644
--- a/fx/README.md
+++ b/fx/README.md
@@ -1,4 +1,12 @@
-TBD
+## Effects by bank switching on CHR-ROM
-- Animating through CHR bank switching (a la Megaman 5 with MMC3)
-- Shrinking a sprite rendered through CHR-RAM
+Some games like Megaman 5/6 performed some subtle background effects by
+performing bank switching on the PPU thanks to the capabilities of the MMC3.
+That is, the trick is to devote at least two similar 1KB chunks where one
+contains a subtly changed version of the other. This way, you can simply perform
+a periodic bank switch and the PPU will render subtly different things every
+time, without the CPU having to dedicate any resources on changing any values on
+the data.
+
+A very simple example is provided in [blink.s](./blink.s) where a character
+blinks periodically.