         self.stopLoop()
         
         // And reset
-        
+        self.memory = [Int](count: Chip8.MemorySize, repeatedValue: 0)
+        self.V = [Int](count: Chip8.RegisterSize, repeatedValue: 0)
+        self.I = 0
+        self.stack = [Int](count: Chip8.StackSize, repeatedValue: 0)
+        self.sp = self.stack.count - 1
+        self.sp = 0
+        self.pc = 0
+        self.delayTimer = 0
+        self.soundTimer = 0
     }
     
     /**


import Foundation

class Chip8 : NSObject // Using performSelector to map opcodes to methods
{
    
    // Will hold the memory
    var memory = [Int](count: 0x1000, repeatedValue: 0)
    
    // The register (last item in the register (VF) doubles as carry flag)
    var V = [UInt8](count: 0xF, repeatedValue: 0)
    
    // The address register
    var I : UInt16 = 0
    
    // The stack
    var stack = [UInt16](count: 0xF, repeatedValue: 0)

    // Points to the current item in the stack
    var sp : UInt8 = 0
    
    // The program counter (e.g holds current executing memory address)
    var pc : Int = 0

        }
        
        // And the sound timer
        if(self.soundTimer > 0)
        {
            self.soundTimer--
        }
    }
    
}