     private var mcm = false // Multi Color Mode
     private var raster: UInt16 = 0 // Raster Counter
     private var me: UInt8 = 0 // Sprite Enabled
+    private var mye: UInt8 = 0 // Sprite Y Expansion
     private var vm: UInt8 = 0 // Video matrix base address
     private var cb: UInt8 = 0 // Character base address
     private var ec: UInt8 = 0 // Border Color

                verticalBorder = false
            }
        case 65:
            currentCycle = 1
            if ++raster == 263 {
                raster = 0
                bufferPosition = 0
                currentScreenBuffer = currentScreenBuffer == screenBuffer1 ? screenBuffer2 : screenBuffer1
            }
            return
        default:
            break
        }
        draw()
        if currentCycle >= 16 && currentCycle <= 55 {
            gAccess()
        }
        draw()
        if currentCycle >= 15 && currentCycle <= 54 {
            cAccess()
        }
        ++currentCycle
    }
    
    // Video matrix access

                            graphicsSequencerShiftRegister <<= 2
                        }
                    }
                }
                if anySpriteDisplaying {
                    //TODO: z priority, multicolor mode, expansion
                    for i in 0...7 {
                        if spriteDisplay[i] {
                            if m_x[i] == rasterX {
                                spriteShiftRegisterCount[i] = 24
                            }
                            if spriteShiftRegisterCount[i] > 0 {
                                if spriteSequencerData[i] & 0x800000 != 0 {
                                    currentScreenBuffer[bufferPosition] = colors[Int(m_c[i])]
                                }
                                spriteSequencerData[i] <<= 1
                                spriteShiftRegisterCount[i]--
                            }
                        }
                    }
                }
                ++bufferPosition
            }
