 
     getLowerVROMBank: ->
         if @controllRegister & 0x10
-            (@vromBankRegister1 & 0x1F) # Selected 4K VROM bank
+            @vromBankRegister1 & 0x1F # Selected 4K VROM bank
         else
-            (@vromBankRegister1 & 0x1E) # Selected 8K VROM bank (first half)
+            @vromBankRegister1 & 0x1E # Selected 8K VROM bank (first half)
 
     getUpperVROMBank: ->
         if @controllRegister & 0x10
-            (@vromBankRegister2 & 0x1F)     # Selected 4K VROM bank
+            @vromBankRegister2 & 0x1F        # Selected 4K VROM bank
         else
-            (@vromBankRegister1 & 0x1E) + 1 # Selected 8K VROM bank (second half)
+            @vromBankRegister1 & 0x1E | 0x01 # Selected 8K VROM bank (second half)
 
     ###########################################################
     # ROM reading

    resetMapper: ->
        @resetShiftRegister()
        @resetBankRegisters()
        @synchronizeMapper()

    resetShiftRegister: ->

        @romBankRegister = 0     # 5-bit - selects lower/upper 16K ROM bank within a 256K page
        @vromBankRegister1 = 0   # 5-bit - selects lower 4K ROM bank
        @vromBankRegister2 = 0   # 5-bit - selects upper 4K ROM bank

    resetConstants: ->
        @lastROMBank = Math.min 0x0F, (@rom.length >>> 14) - 1

    ###########################################################
    # MMC writing
