VOGONS


Future45.qlb and DOSBox

Topic actions

First post, by Kagehi

User metadata
Rank Newbie
Rank
Newbie

I doubt this is something caused by my hardware, and half the stuff you ask for is stuff I can't ever remember anyway, like what MB I am using. 🤣 Its video related, so I have an EVGA 7600GS, and I am running DOSBox 0.72. The problem crops up when using the Future45 library with QB45 (library can be found here: http://basix.8m.net/downloads/fl35.zip ). This is supposed to allow support for VESA resolutions, which either isn't supported normally via QuickBASIC, or requires some other addon I don't have. In any case, it works up to 800x600, but then things get funky.. The basic code I tried was this (note, you have to "compile" the library and some other stuff before it will work, but it uses QB itself to do this, so its not a huge issue):

'$INCLUDE: 'FUTURE.BI'
Set1024x768 32
Future.Cls
Future.LoadBMP "Vanuard.bmp", 0, 0

This is supposed to set it in 1024x768 mode, 32-bit, then load an image. The image is just a 24-bit BMP of about 108x108 pixels.

Now, the problem is, at this resolution DOSBox seems to get confused and *wraps* the image. So, you get one copy of the image at 0,0, but also a second copy at 0,500. Printing to the screen using the Future library functions for that produces a) copies of the first few lines, when drawn in the area that lies within the gap between the bottom of this image and the bottom of the drawing area, and b) once you attempt to print at a location "below" line 500, it instead starts to draw (with 8x16 characters) at.. roughly 500+(y-500\6), where y is the line you "intended" it to draw on.

This means that you can't draw below line 500, and everything between 0-267 is "duplicated" between 500 and 767 on the display, when in 1024x768.

I can only guess that something about the way the library turns on that video mode, confuses DOSBox and the result is that it "thinks" there are only 500 lines available, though why it would then also "tile" the result...

Note, this is the code I used to "test" where the cut off lines are:

'$INCLUDE: 'FUTURE.BI'
Set1024x768 32
Future.Cls
Future.LoadBMP "Vanuard.bmp", 0, 0
for t = 0 to 767
Future.print 0, t, str$(t), RGB2Color(255, 255, 255), 0
do
loop until inkey$ <> ""
next

Note that the print function in this library is more flexible, but at the same time a major pain in the ass. 🤣 I wouldn't mind a more sane library for this thing, which can handle the normal print functions, but.. I finished what I needed to do with it. Just figured you might want to take a look and see what this things it doing and why it doesn't work right with DOSBox.

Reply 1 of 3, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I believe the official build of DOSBox emulates an S3 video card with 2MB of video memory. At that res and color depth, you'd need at least 3MB of video memory. Even 24bpp would need 2.25MB...

There is an SVGA patch that adds additional video chipset and VESA support, but dunno what it offers in the way of more video memory.

Reply 3 of 3, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

CVS still has only 2MB video memory

1+1=10