                                     default:
                                         break
                                     }
-                                    if (!xExpansion && i % 2 == 1) || (xExpansion && i % 4 == 3) {
+                                    if state.spriteShiftRegisterShouldShift[spriteIndex] {
                                         state.spriteSequencerData[spriteIndex] <<= 2
                                         state.spriteShiftRegisterCount[spriteIndex] -= 2
                                     }

                                    if state.spriteSequencerData[spriteIndex] & 0x800000 != 0 {
                                        currentSpritePixel = Int(state.m_c[spriteIndex])
                                    }
                                    if !xExpansion || (xExpansion && i % 2 == 1) {
                                        state.spriteSequencerData[spriteIndex] <<= 1
                                        state.spriteShiftRegisterCount[spriteIndex] -= 1
                                    }

        case 0x1C:
            return state.mmc
        case 0x1D:
            return state.nextPipe.mxe
        case 0x1E:
            let value = state.mm
            state.mm = 0
