From 4a9c6fc806a99ff8aba7b340dbf8c04aedc7d325 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Thu, 7 Jul 2022 23:51:36 +0100
Subject: [PATCH] fix: else if in interrup handling

---
 examples/sdl/src/main.rs | 4 ++--
 src/cpu.rs               | 3 +--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/examples/sdl/src/main.rs b/examples/sdl/src/main.rs
index 2e236739..140783c7 100644
--- a/examples/sdl/src/main.rs
+++ b/examples/sdl/src/main.rs
@@ -85,14 +85,14 @@ fn main() {
     game_boy.load_boot_default();
 
     //game_boy.load_rom_file("../../res/roms.prop/tetris.gb");
-    game_boy.load_rom_file("../../res/roms.prop/dr_mario.gb");
+    //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/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");
+    game_boy.load_rom_file("../../res/roms/paradius/cpu/02-interrupts.gb");
     //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
diff --git a/src/cpu.rs b/src/cpu.rs
index ad6e6b3b..5d3b2c5f 100644
--- a/src/cpu.rs
+++ b/src/cpu.rs
@@ -130,9 +130,8 @@ impl Cpu {
 
                 return 16;
             }
-
             // @todo aggregate the handling of these interrupts
-            if (self.mmu.ie & 0x04 == 0x04) && self.mmu.timer().int_tima() {
+            else if (self.mmu.ie & 0x04 == 0x04) && self.mmu.timer().int_tima() {
                 println!("Going to run Timer interrupt handler (0x50)");
 
                 self.disable_int();
-- 
GitLab