From 6171fd99a90ecd601a3a67f099354348fc695b1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Fri, 11 Nov 2022 08:17:52 +0000
Subject: [PATCH] feat: more PPU registers

---
 examples/web/index.ts                                     | 4 ++++
 .../web/react/components/registers-gb/registers-gb.tsx    | 4 ++++
 src/gb.rs                                                 | 8 ++++++++
 src/ppu.rs                                                | 8 ++++++++
 4 files changed, 24 insertions(+)

diff --git a/examples/web/index.ts b/examples/web/index.ts
index f8f1cb19..16e211d8 100644
--- a/examples/web/index.ts
+++ b/examples/web/index.ts
@@ -552,6 +552,10 @@ class GameboyEmulator extends EmulatorBase implements Emulator {
             e: registers.e,
             h: registers.h,
             l: registers.l,
+            scy: registers.scy,
+            scx: registers.scx,
+            wy: registers.wy,
+            wx: registers.wx,
             ly: registers.ly,
             lyc: registers.lyc
         };
diff --git a/examples/web/react/components/registers-gb/registers-gb.tsx b/examples/web/react/components/registers-gb/registers-gb.tsx
index 804494df..988ba20e 100644
--- a/examples/web/react/components/registers-gb/registers-gb.tsx
+++ b/examples/web/react/components/registers-gb/registers-gb.tsx
@@ -65,6 +65,10 @@ export const RegistersGB: FC<RegistersGBProps> = ({
             </div>
             <div className="section">
                 <h4>PPU</h4>
+                {renderRegister("SCY", registers.scy as number)}
+                {renderRegister("SCX", registers.scx as number)}
+                {renderRegister("WY", registers.wy as number)}
+                {renderRegister("WX", registers.wx as number)}
                 {renderRegister("LY", registers.ly as number)}
                 {renderRegister("LYC", registers.lyc as number)}
             </div>
diff --git a/src/gb.rs b/src/gb.rs
index ad846604..f074fa04 100644
--- a/src/gb.rs
+++ b/src/gb.rs
@@ -34,6 +34,10 @@ pub struct Registers {
     pub e: u8,
     pub h: u8,
     pub l: u8,
+    pub scy: u8,
+    pub scx: u8,
+    pub wy: u8,
+    pub wx: u8,
     pub ly: u8,
     pub lyc: u8,
 }
@@ -140,6 +144,10 @@ impl GameBoy {
             e: self.cpu.e,
             h: self.cpu.h,
             l: self.cpu.l,
+            scy: ppu_registers.scy,
+            scx: ppu_registers.scx,
+            wy: ppu_registers.wy,
+            wx: ppu_registers.wx,
             ly: ppu_registers.ly,
             lyc: ppu_registers.lyc,
         }
diff --git a/src/ppu.rs b/src/ppu.rs
index e10f8913..e576c770 100644
--- a/src/ppu.rs
+++ b/src/ppu.rs
@@ -123,6 +123,10 @@ impl Display for ObjectData {
 }
 
 pub struct PpuRegisters {
+    pub scy: u8,
+    pub scx: u8,
+    pub wy: u8,
+    pub wx: u8,
     pub ly: u8,
     pub lyc: u8,
 }
@@ -680,6 +684,10 @@ impl Ppu {
 
     pub fn registers(&self) -> PpuRegisters {
         PpuRegisters {
+            scy: self.scy,
+            scx: self.scx,
+            wy: self.wy,
+            wx: self.wx,
             ly: self.ly,
             lyc: self.lyc,
         }
-- 
GitLab