In order to be compatible with a wide variety of Chip 8 ROMs, a change to the shift operation is required. In the original language specification two registers were required: the destination register x, and the source register y. The source register y value was shifted one bit left or right, and stored in x. For example, shift left was defined as:
Vx = Vy << 1
However, with the updated language specification, the source and destination register are assumed to always be the same, thus the y register is ignored and instead the value is sourced from x as such:
Vx = Vx << 1
Setting --shift_quirks will alter the shift operation to the latter behaviour.
In order to be compatible with a wide variety of Chip 8 ROMs, a change to the shift operation is required. In the original language specification two registers were required: the destination register
x
, and the source registery
. The source registery
value was shifted one bit left or right, and stored inx
. For example, shift left was defined as:However, with the updated language specification, the source and destination register are assumed to always be the same, thus the
y
register is ignored and instead the value is sourced fromx
as such:Setting
--shift_quirks
will alter the shift operation to the latter behaviour.