i use Pinball Dreams and Pinball Fantasies and i use the 320 x 200 Vga-Mode (normal/low) in these Pinball-Games. But the 320x350 seems like not to work in fullscreen. Every conf-setting in fullscreen causes non-proportional Spheres.
The only solution was the window in a strange resolution, windowresolution=939x1007 but how can i say dosbox that the don't automatic change the resolution like in fullscreen? In fullscreen in understand the crt/vga->lcd problematic but in windows mode i can use any resolution that i want.
I want say dosbox please let the window in the given resolution. How can i do that?
Or Better how can i say dosbox use windowsresolution=320x350 and scale this resolution up, made no aspect ratio or something automatic resolution change?
My hope is that one day dosbox can handle the 320x350er Resolution from Pinball Deluxe and Fanatasies. All other Pinball Games run very good and with rounded spheres.
I use the Dosbox-ECE Version and my hope that the pixel perfect patch can handle 320x350 is gone:). I will write in this thread my proposal that i have. In the moment i hope i can resolve the 320x350 Aspect Ratiob bug with the windowmode in dosbox/dosbox-ece.
Here is how to convert 640xYYY mode to 320xYYY on any card, register-compatible with either EGA or VGA.
What is it for: thou could utilize graphics/text mode with 16 colors from 64 for EGA (256 for VGA) with lower descaled by 1/2 bandwidth.
First of all set mode utilizing 640xXXX resolution, either text or graphics:
on EGA : 02h, 03h, 04h, 05h, 06h, 07h, 0Eh, 0Fh, 10h,
on VGA: 04h, 05h, 06h, 07h, 0Eh, 0Fh, 10h, 11h, 12h. Then call descale_x():
Details
1////////////////////////////////////////////////////// 2 code for Borland C/C++ for DOS 3////////////////////////////////////////////////////// 4/// default is EGA with Color 200/350-line monitor !!! 5/// #define VC_VGA // VGA 6/// #define VC_EGAM // EGA with MDA Monochrome 350-line monitor 7/// #define BASEPORT 0x3B4 // Mono 8/// #define BASEPORT 0x3D4 // Color 9 10#ifdef VC_VGA 11void setVidOff(void) 12{ 13 _asm{ 14 cli 15 mov dx,BASEPORT 16 mov al,0x17 17 out dx,al 18 inc dl 19 in al,dx 20 and al, 0x7F 21 out dx,al // turn off sync 22 dec dl 23 mov al,0x11 24 out dx,al 25 inc dl 26 in al,dx 27 and al,0x7F // unprotect 28 out dx,al 29 sti 30 } 31} 32void setVidOn(void) 33{ 34 _asm { 35 cli 36 mov dx,BASEPORT 37 mov al,0x17 38 out dx,al 39 inc dl 40 in al,dx 41 or al, 0x80 42 out dx,al // turn on sync 43 dec dl 44 mov al,0x11 45 out dx,al 46 inc dl 47 in al,dx 48 or al,0x80 // protect 49 out dx,al 50 sti 51 } 52} 53#endif 54void descale_x(void) 55{ 56 #ifdef VC_VGA 57 setVidOff(); 58 outpw(0x3C4,0x0901); // scan-doubling for X 59 outpw(BASEPORT,0x2D00); // HTOT 60 outpw(BASEPORT,0x2701); // HDE 0x28 - 1
HTOT, HBS, HBE, HRS, HRE could be adjusted to fit into your monitor alignment by increase/decrease these values.
Don't use AI for calculating these values. Thou could damage some monitors. 😀