Main transform function with fixed point aritmetics. Returns the point where the pixel is needed to be read from.
256 equals with 1.
The function reads as:
[x',y'] = ([A,B,C,D] * ([x,y] + [sX,sY] - [x_0,y_0]))>>>8 + [x_0,y_0]
ABCD:
A/0: Horizontal scaling. 256 means no scaling at all, negative values end up in a mirrored image.
B/1: Horizontal shearing. 0 means no shearing at all.
C/2: Vertical shearing. 0 means no shearing at all.
D/3: Vertical scaling. 256 means no scaling at all, negative values end up in a mirrored image.
</ br>
xy:
Contains the screen coordinates. x:0 y:1
</ br>
x0y0:
Origin point. x_0:0/2 y_0:1/3
</ br>
sXsY:
Scrolling point. sX:0/2 sY:1/3
Main transform function with fixed point aritmetics. Returns the point where the pixel is needed to be read from. 256 equals with 1. The function reads as: [x',y'] = ([A,B,C,D] * ([x,y] + [sX,sY] - [x_0,y_0]))>>>8 + [x_0,y_0] ABCD: A/0: Horizontal scaling. 256 means no scaling at all, negative values end up in a mirrored image. B/1: Horizontal shearing. 0 means no shearing at all. C/2: Vertical shearing. 0 means no shearing at all. D/3: Vertical scaling. 256 means no scaling at all, negative values end up in a mirrored image. </ br> xy: Contains the screen coordinates. x:0 y:1 </ br> x0y0: Origin point. x_0:0/2 y_0:1/3 </ br> sXsY: Scrolling point. sX:0/2 sY:1/3