diff --git a/CHANGELOG.md b/CHANGELOG.md
index be1f1c57e241a0e131ca77687ff12c5af2a11b8d..c3b9efacf3c22b98fd13f30ee5c25345c664683f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-*
+* Major JoyPad issue with Action/Select read in register
 
 ## [0.7.2] - 2023-03-04
 
diff --git a/doc/inspiration.md b/doc/inspiration.md
index 5a9583e989ce17d9208b8c8ef171418d5ace0c90..2ca9d3f86d306b9e90d047429112d68ab2f12283 100644
--- a/doc/inspiration.md
+++ b/doc/inspiration.md
@@ -20,12 +20,14 @@
 
 * [GitHub - LIJI32/SameBoy (C)](https://github.com/LIJI32/SameBoy)
 * [GitHub - binji/binjgb (C)](https://github.com/binji/binjgb)
+* [GitHub - 7thSamurai/Azayaka (C++)](https://github.com/7thSamurai/Azayaka)
 * [GitHub - feo-boy/feo-boy (Rust)](https://github.com/feo-boy/feo-boy)
 * [GitHub - Rodrigodd/gameroy (Rust)](https://github.com/Rodrigodd/gameroy)
 * [GitHub - simias/gb-rs (Rust)](https://github.com/simias/gb-rs)
 * [GitHub - RubenG123/frosty (Rust)](https://github.com/RubenG123/frosty)
 * [GitHub - calvinbaart/gameboy (TypeScript)](https://github.com/calvinbaart/gameboy)
 * [GitHub - djhworld/gomeboycolor-wasm (Go)](https://github.com/djhworld/gomeboycolor-wasm)
+* [GitHub - torch2424/wasmboy (WASM)](https://github.com/torch2424/wasmboy)
 
 ## Videos
 
diff --git a/src/pad.rs b/src/pad.rs
index a36940a8f275507cdad9ced69c38a3f873b7da0e..36c10a1715f80741916a3d6dd55bce5e28d67532 100644
--- a/src/pad.rs
+++ b/src/pad.rs
@@ -5,6 +5,7 @@ use crate::warnln;
 
 #[derive(Clone, Copy, PartialEq, Eq)]
 pub enum PadSelection {
+    None,
     Action,
     Direction,
 }
@@ -45,7 +46,7 @@ impl Pad {
             select: false,
             b: false,
             a: false,
-            selection: PadSelection::Action,
+            selection: PadSelection::None,
             int_pad: false,
         }
     }
@@ -70,15 +71,12 @@ impl Pad {
                             | if self.up { 0x00 } else { 0x04 }
                             | if self.down { 0x00 } else { 0x08 })
                     }
+                    PadSelection::None => 0x0f,
                 };
-                value |= if self.selection == PadSelection::Direction {
-                    0x10
-                } else {
-                    0x00
-                } | if self.selection == PadSelection::Action {
-                    0x20
-                } else {
-                    0x00
+                value |= match self.selection {
+                    PadSelection::Action => 0x10,
+                    PadSelection::Direction => 0x20,
+                    PadSelection::None => 0x30,
                 };
                 value
             }
@@ -92,11 +90,12 @@ impl Pad {
     pub fn write(&mut self, addr: u16, value: u8) {
         match addr & 0x00ff {
             0x0000 => {
-                self.selection = if value & 0x10 == 0x00 {
-                    PadSelection::Direction
-                } else {
-                    PadSelection::Action
-                }
+                self.selection = match value & 0x30 {
+                    0x10 => PadSelection::Action,
+                    0x20 => PadSelection::Direction,
+                    0x30 => PadSelection::None,
+                    _ => PadSelection::None,
+                };
             }
             _ => warnln!("Writing to unknown Pad location 0x{:04x}", addr),
         }