diff --git a/src/mmu.rs b/src/mmu.rs
index 853d19cda8370a676d43cee7853b28c37e73bb4a..15df0604e16dcc473c1051ad6aaf94b4d53e4570 100644
--- a/src/mmu.rs
+++ b/src/mmu.rs
@@ -1,4 +1,4 @@
-use crate::{pad::Pad, ppu::Ppu, timer::Timer};
+use crate::{pad::Pad, ppu::Ppu, timer::Timer, rom::Rom};
 
 pub const BIOS_SIZE: usize = 256;
 pub const ROM_SIZE: usize = 32768;
@@ -251,6 +251,7 @@ impl Mmu {
 }
 
 struct Mbc1 {
+    rom: Rom,
     rom_bank: u8,
 }
 
diff --git a/src/rom.rs b/src/rom.rs
index d9b2a25beb7873d8a57928b164b7500e735ccaf7..279480fdd1dc7ab0120233b0b17f0f0a45e2281f 100644
--- a/src/rom.rs
+++ b/src/rom.rs
@@ -1,6 +1,8 @@
 use core::fmt;
 use std::fmt::{Display, Formatter};
 
+pub const BANK_SIZE: usize = 16384;
+
 pub struct Rom {
     data: Vec<u8>,
 }
@@ -84,6 +86,12 @@ impl Rom {
         &self.data
     }
 
+    pub fn get_bank(&self, index: u8) -> &[u8] {
+        let start = index as usize * BANK_SIZE;
+        let end = (index + 1) as usize * BANK_SIZE;
+        &self.data[start..end]
+    }
+
     pub fn title(&self) -> &str {
         std::str::from_utf8(&self.data[0x0134..0x0143]).unwrap()
     }