From 414b02e732ff0fc0a9ff3707577c405e953e11a4 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 16 Aug 2024 19:36:16 +0200 Subject: [PATCH] Add oam and background explanaiton in the gb blog --- content/blogs/gameboy-jam/bg-debug.jpg | Bin 0 -> 11894 bytes content/blogs/gameboy-jam/index.md | 46 ++++++++++++++++++++++++- content/blogs/gameboy-jam/oam.jpg | Bin 0 -> 12582 bytes 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 content/blogs/gameboy-jam/bg-debug.jpg create mode 100644 content/blogs/gameboy-jam/oam.jpg diff --git a/content/blogs/gameboy-jam/bg-debug.jpg b/content/blogs/gameboy-jam/bg-debug.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f8a954242505a97bcecaf7ab40c1d1892f585b9 GIT binary patch literal 11894 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 + +You might have guessed but the `SCX` and `SCY` registers are of course memory mapped, meaning to set them you just need to write at `$FF43` and `$FF42` respectively. In c, it would be something like: + +```c +uint8_t *scroll_x = 0xFF43; +*scrool_x = 12; // set scrool to 12 (or whatever value you want) +``` + +{{< /alert >}} + ### Cool stuff diff --git a/content/blogs/gameboy-jam/oam.jpg b/content/blogs/gameboy-jam/oam.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e2d88e5a1232897a1b3c5853e05dcdf6ff3dbdb GIT binary patch literal 12582 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 literal 0 HcmV?d00001