Here's an Avisynth script that converts the raw emulator output to a TV screen (using idealized parameters). The size goes from 256×192 to 640×480.
Language: Avisynth
f1 = "Ghostbusters.png"
f2 = "Lord of the Sword.png"
f3 = "Sonic 1.png"
f4 = "Sonic Chaos.png"
ImageReader(f1, 0, 0) +\
ImageReader(f2, 0, 0) +\
ImageReader(f3, 0, 0) +\
ImageReader(f4, 0, 0)
ConvertToRGB32
v1 = last .Crop(1, 1, -1, -1).AddBorders(1, 1, 1, 1, $FF0000)
v2 = SMS_TV_Screen.Crop(1, 1, -1, -1).AddBorders(1, 1, 1, 1, $00FF00)
StackHorizontal(v1.AddBorders(0, 0, 0, v2.Height - v1.Height), v2)
function SMS_TV_Screen(clip c) {
TV_LineCount = 525 - 1
TV_OverscanTop = 22
TV_OverscanBottom = 22
TV_PixelsPerLine = round((TV_LineCount - TV_OverscanTop - TV_OverscanBottom) * 4 / 3)
Console_LineCount = 192 * 2
Console_PixelsPerLine = 256
Console_StartingLine = (TV_LineCount - Console_LineCount) / 2
Console_Bitmap = c.ConvertToRGB32.PointResize(c.Width, c.Height * 2)
BlankClip(length=c.FrameCount, width=Console_PixelsPerLine, height=TV_LineCount)
Layer(last, Console_Bitmap, y=Console_StartingLine)
Crop(0, TV_OverscanTop, -0, -TV_OverscanBottom)
BilinearResize(TV_PixelsPerLine, Height)
}
http://i.imgur.com/SL1GXL5.gif