diff --git a/examples/sdl/src/main.rs b/examples/sdl/src/main.rs
index b072728fc9119ea2b0e84a3341c967ceacda1f78..ef757e75e0488f11ddcf1fe8a282b7732d2bb042 100644
--- a/examples/sdl/src/main.rs
+++ b/examples/sdl/src/main.rs
@@ -98,23 +98,26 @@ fn main() {
     //game_boy.load_rom_file("../../res/roms.prop/dr_mario.gb");
     //game_boy.load_rom_file("../../res/roms.prop/alleyway.gb");
     //game_boy.load_rom_file("../../res/roms.prop/super_mario.gb");
-    let rom = game_boy.load_rom_file("../../res/roms.prop/super_mario_2.gb");
-    println!("{}", rom);
+    //let rom = game_boy.load_rom_file("../../res/roms.prop/super_mario_2.gb");
 
     //game_boy.load_rom_file("../../res/roms/firstwhite.gb");
     //game_boy.load_rom_file("../../res/roms/opus5.gb");
 
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/01-special.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/02-interrupts.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/03-op sp,hl.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/04-op r,imm.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/05-op rp.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/06-ld r,r.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/07-jr,jp,call,ret,rst.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/08-misc instrs.gb");  // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/09-op r,r.gb"); // PASSED
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/10-bit ops.gb"); //
-    //game_boy.load_rom_file("../../res/roms/paradius/cpu/11-op a,(hl).gb"); // PASSED
+    //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/cpu_instrs.gb"); // CRASHED
+    let rom = game_boy.load_rom_file("../../res/roms/paradius/interrupt_time/interrupt_time.gb"); // CRASHED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/01-special.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/02-interrupts.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/03-op sp,hl.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/04-op r,imm.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/05-op rp.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/06-ld r,r.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/07-jr,jp,call,ret,rst.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/08-misc instrs.gb");  // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/09-op r,r.gb"); // PASSED
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/10-bit ops.gb"); //
+                                                                                                  //let rom = game_boy.load_rom_file("../../res/roms/paradius/cpu/11-op a,(hl).gb"); //let rom  PASSED
+
+    println!("ROM Information:\n{}", rom);
 
     let mut counter = 0u32;
 
diff --git a/res/roms/paradius/cpu/cpu_instrs.gb b/res/roms/paradius/cpu/cpu_instrs.gb
new file mode 100644
index 0000000000000000000000000000000000000000..7b06221b23dcd84644e7910bb8ba91a957c9ba04
Binary files /dev/null and b/res/roms/paradius/cpu/cpu_instrs.gb differ
diff --git a/res/roms/paradius/interrupt_time/interrupt_time.gb b/res/roms/paradius/interrupt_time/interrupt_time.gb
new file mode 100644
index 0000000000000000000000000000000000000000..1b17845e33205df4c97eaa140f8e6db2a1194ee0
Binary files /dev/null and b/res/roms/paradius/interrupt_time/interrupt_time.gb differ
diff --git a/src/rom.rs b/src/rom.rs
index ea1c7ed2858e34bb486c408d01446bdcd06b11ec..e7cd9ba04807fd23d63433e67459e28560285195 100644
--- a/src/rom.rs
+++ b/src/rom.rs
@@ -1,5 +1,8 @@
 use core::fmt;
-use std::fmt::{Display, Formatter};
+use std::{
+    cmp::max,
+    fmt::{Display, Formatter},
+};
 
 use crate::debugln;
 
@@ -257,6 +260,8 @@ impl Cartridge {
         self.ram_offset = 0x0000;
         self.set_mbc();
         self.allocate_ram();
+        self.set_rom_bank(1);
+        self.set_ram_bank(0);
     }
 
     fn set_mbc(&mut self) {
@@ -264,7 +269,8 @@ impl Cartridge {
     }
 
     fn allocate_ram(&mut self) {
-        self.ram_data = vec![0; self.ram_size().ram_banks() as usize * RAM_BANK_SIZE]
+        let ram_banks = max(self.ram_size().ram_banks(), 1);
+        self.ram_data = vec![0; ram_banks as usize * RAM_BANK_SIZE];
     }
 }
 
@@ -320,11 +326,12 @@ pub static MBC1: Mbc = Mbc {
     write_rom: |rom: &mut Cartridge, addr: u16, value: u8| {
         match addr & 0xf000 {
             0x0000 | 0x1000 => {
-                debugln!("RAM enable => {}", value);
+                println!("RAM enable => {}", value);
             }
             0x2000 | 0x3000 => {
                 // @todo this is slow and must be pre-computed in cartridge
-                let mut rom_bank = value & (rom.rom_size().rom_banks() * 2 - 1) as u8;
+                let mut rom_bank = value & 0x1f;
+                rom_bank = rom_bank & (rom.rom_size().rom_banks() * 2 - 1) as u8;
                 if rom_bank == 0 {
                     rom_bank = 1;
                 }