i'm making a #QBasic game using mode 13h, 320x200 8bpp. i'm using the line doubling feature of the VGA card to make it 320x100 then manually doubling each pixel horizontally for 160x100

i realized i could use a palette with 3 bits red/green and 2 blue, and then do "subpixel" dither to generate the in between colors. i made a converter to test if that would look good, and it does

here's a thread of images showing what that looks like

1/5

#PixelArt #QBasic #dos #RetroComputing #RetroDev

every image has a CRTized version made using https://mattiasgustavsson.itch.io/crtview by @Mattias_G and the crispy pixel original

my converter has a bias factor between 0 and 1, that biases towards non-dithered colors. it's kind of a push and pull between less busy dithering and more detail

2/5

little known fact: qbasic can produce mind boggling effects

i'm making this engine in qbasic for DOS as a challenge, using qb1.1, the interpreted one, without resorting to assembly language hacks. hence the low resolution (fewer tiles/pixels = better performance)

3/5

right now my qbasic engine can run locked to 70, 60, 35, 30, or 18.2 frames per second. @discatte tested it and it runs at 35 fps on a 486sx-20mhz

i intend for it to have OPL music and sounds, with a PC speaker sfx and no music fallback for the 18.2 fps mode

4/5

the images here are all wallpapers (except for the FF7 one) that i grabbed off reddit for testing many years ago. they were all unsourced

5/5

and just to be clear: all of these images use *the same* single 8 bit, 256 color palette. the colors aren't adapted to fit the image. it's a one size fits all approach

@eniko

This is magically nostalgic for me. I had many friends in high school who were really pushing what could be done with VGA graphics with the tools we had available at the time (when we were supposed to be doing arrays or something in Turbo Pascal)

@venya i never managed to get very far with qbasic game development back in the day. lack of resources in the backwater part of the netherlands

so this is kind of like a revenge tour where i bend qbasic to my will after having been a professional gamedev for 10+ years >_>

@eniko @venya One thing I hate about QBasic is the "medium" memory model: together with the way strings work, it fills up available memory space like crazy.

I'm learning to use the VGA as well and I didn't know you could force it to double the scanlines. I knew that 320x200 is actually 320x400 with double scalines so is the screen actually copying the same scanline 4 times? If so: wow!

Nice project!

@Blackthorn @venya don't quote me on this one but i believe the "320x200 is actually 320x400" is just a quirk of how the VGA card interfaces with the monitor

meanwhile 320x100 is just the result of a bit you can set in one of the VGA's control registers that tells it "actually just double every logical line"