About
History
Algorithm
Scale2x & EPX
Download
Snapshots 4x
Snapshots 2x
Authors

Support
Forum
SF Project

SourceForge Project

Support This Project

Friends
AdvanceMAME
TommyDS
SnapRAID
by am

Scale2x Algorithm

The effect works repeating a computation pattern for every pixel of the original image. The pattern starts from a square of 9 pixels and expands the central pixel computing 4 new pixels.

Starting from this pattern :

ABC
DEF
GHI

The central pixel E is expanded in 4 new pixels:

E0E1
E2E3

with these rules (in C language) :

E0 = D == B && B != F && D != H ? D : E;
E1 = B == F && B != D && F != H ? F : E;
E2 = D == H && D != B && H != F ? D : E;
E3 = H == F && D != H && B != F ? F : E;
which can be rewritten as :
E0 = D == B && B != H && D != F ? D : E;
E1 = B == F && B != H && D != F ? F : E;
E2 = D == H && B != H && D != F ? D : E;
E3 = H == F && B != H && D != F ? F : E;
and optimized as:
if (B != H && D != F) {
	E0 = D == B ? D : E;
	E1 = B == F ? F : E;
	E2 = D == H ? D : E;
	E3 = H == F ? F : E;
} else {
	E0 = E;
	E1 = E;
	E2 = E;
	E3 = E;
}

The image border is computed reusing the value of the nearest pixel on the border when the value of a pixel over the border is required.

Scale3x Algorithm

Starting from this pattern :

ABC
DEF
GHI

The central pixel E is expanded in 9 new pixels:

E0E1E2
E3E4E5
E6E7E8

with these rules (in C language) :

E0 = D == B && B != F && D != H ? D : E;
E1 = (D == B && B != F && D != H && E != C) || (B == F && B != D && F != H && E != A) ? B : E;
E2 = B == F && B != D && F != H ? F : E;
E3 = (D == B && B != F && D != H && E != G) || (D == H && D != B && H != F && E != A) ? D : E;
E4 = E
E5 = (B == F && B != D && F != H && E != I) || (H == F && D != H && B != F && E != C) ? F : E;
E6 = D == H && D != B && H != F ? D : E;
E7 = (D == H && D != B && H != F && E != I) || (H == F && D != H && B != F && E != G) ? H : E;
E8 = H == F && D != H && B != F ? F : E;
and optimized as:
if (B != H && D != F) {
	E0 = D == B ? D : E;
	E1 = (D == B && E != C) || (B == F && E != A) ? B : E;
	E2 = B == F ? F : E;
	E3 = (D == B && E != G) || (D == H && E != A) ? D : E;
	E4 = E;
	E5 = (B == F && E != I) || (H == F && E != C) ? F : E;
	E6 = D == H ? D : E;
	E7 = (D == H && E != I) || (H == F && E != G) ? H : E;
	E8 = H == F ? F : E;
} else {
	E0 = E;
	E1 = E;
	E2 = E;
	E3 = E;
	E4 = E;
	E5 = E;
	E6 = E;
	E7 = E;
	E8 = E;
}

Scale4x Algorithm

The Scale4x effect is simply the Scale2x effect applied two times.

Examples

The following are some examples that show the application of the effects.

original

scale2x

scale3x

scale4x