アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
x | x | x | x | x | x | x | x |
x | x | x | x | x | x | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
x | x | x | x | x | x | x | x |
x | x | x | x | x | x | x | x |
これらは、 M7A ~ M7D と同じように 2 度書きレジスタで、 値は 2 の補数表現になる。
行列変換の式 :
[ X ] [ A B ] [ SX + M7HOFS - CX ] [ CX ] [ ] = [ ] * [ ] + [ ] [ Y ] [ C D ] [ SY + M7VOFS - CY ] [ CY ]
SX/SY はスクリーンの座標。 X/Y はプレイ中の画面から得られるピクセルの座標。 0x211a のビット 7 がクリアされている場合、 結果は 0<=X<=1023 と 0<=Y<=1023 の範囲に制限される。 0x211a のビット 6 と 7 が両方セットされていて、 X か Y が 0 より小さいか、 1023 より大きい場合、 それぞれの下位 3 ビットはキャラクタ 0 からピクセルが選択される。
ビット精度を考慮した式 :
#define CLIP(a) (((a)&0x2000)?((a)|~0x3ff):((a)&0x3ff)) X[0,y] = ((A*CLIP(HOFS-CX))&~63) + ((B*y)&~63) + ((B*CLIP(VOFS-CY))&~63) + (CX<<8) Y[0,y] = ((C*CLIP(HOFS-CX))&~63) + ((D*y)&~63) + ((D*CLIP(VOFS-CY))&~63) + (CY<<8) X[x,y] = X[x-1,y] + A Y[x,y] = Y[x-1,y] + C
(全ての場合で、X[], Y[] は 8 ビットの固定小数点表現)