aboutsummaryrefslogtreecommitdiff
path: root/scroll/README.md
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-02-04 11:00:22 +0100
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-02-04 22:00:07 +0100
commit6c4ac7727094259b3b5a25e8c168245983e70b2f (patch)
tree089c185a436f57a58f43b6c0ed3eed53e8b93da5 /scroll/README.md
parentfdf44365e56c3741f47cbd421a57f0d074a5492c (diff)
downloadcode.nes-6c4ac7727094259b3b5a25e8c168245983e70b2f.tar.gz
code.nes-6c4ac7727094259b3b5a25e8c168245983e70b2f.zip
scroll: Implement a roulette-like game
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'scroll/README.md')
-rw-r--r--scroll/README.md21
1 files changed, 17 insertions, 4 deletions
diff --git a/scroll/README.md b/scroll/README.md
index d24117d..be33f87 100644
--- a/scroll/README.md
+++ b/scroll/README.md
@@ -15,7 +15,20 @@ information), while allowing the rest of the screen to scroll as expected. In
the end, it's the same example as `level.s` (same level to scroll), but the top
part does not move and shows a "THIS DOES NOT MOVE" message.
-Last but not least, the `mmc3.s` example shows how to configure the MMC3 chip
-(e.g. Super Mario Bros. 3, Kirby's Adventure) to have better control on which
-parts of the screen to scroll or not. To showcase this the example implements a
-roulette mini-game (similar to Super Mario Bros. 3 but simpler).
+## Scrolling in different ways in the same frame
+
+Some chips like the MMC3 give programmers a lot of flexibility when it comes to
+mid-frame customization. That is, chips like the MMC3 give an interface in which
+programmers can ask the chip to submit an IRQ on a given exact scanline. One
+main usage of this was to allow a top section of the screen to scroll, while
+leaving a small section at the bottom not to scroll. This way, games were no
+longer required to have a status bar at the top and they could have it at the
+bottom. But these chips allow for a lot of flexibility, so programmers can get
+playful with it. One simple example is the roulette mini-game from Super Mario
+Bros. 3. In here the game asks for two scanline IRQs and then the scroll
+direction is changed on each given IRQ. This way, the background is split in
+three sections that move in different directions/speed. Something similar (but
+more simple) has been reproduced in [roulette.s](./roulette.s), giving the
+following result:
+
+![roulette.png](../docs/roulette.gif)