Usando el controlador de interfaz de gráficos IBM 3514 Borland en modo de alta resolución en Turbo C ++ en Windows 7 de 64 bits usando Dosbox

StackOverflow https://stackoverflow.com/questions/7808504

Pregunta

Estoy ejecutando un programa gráfico en Turbo C ++ usando Dosbox en Windows 7 de 64 bits. Ahora quiero usar el IBM3514 controlador gráfico en el modo de alta resolución (IBM3514HI). Entonces, escribí el siguiente programa Bare Bones para probarlo:

#include <graphics.h>
#include <iostream.h>

void main() {
    int gd = IBM3514, gm = IBM3514HI, e;
    initgraph(&gd, &gm, "C:\\TC\\BGI");
    if (e = graphresult()) {
        cout << grapherrormsg(e);
    }
    cleardevice();
    rectangle(100, 100, 300, 300);
    cin.get();
    closegraph();
    restorecrtmode();
}

Ahora, el programa se compila y se ejecuta sin ningún error. sin embargo, el initgraph La llamada de función no inicializa el modo gráfico. El valor de retorno de graphresult es 0. Por lo tanto, no se ha producido ningún error. Sin embargo, el programa aún se ejecuta en modo de texto. El subrayado parpadeante es visible y el rectángulo no se dibuja.

Revisé mi C:\TC\BGI carpeta y el IMB3514.BGI El archivo existe. Por lo tanto, supongo que carga el controlador de gráficos. Sin embargo, no puedo entender por qué el programa no se ejecuta en modo gráfico, o incluso arroja un error. Sin embargo, funciona perfectamente bien si uso la configuración predeterminada: int gd = DETECT, gm;

Cualquier explicación de por qué mi programa no funciona será muy apreciado. Intente proporcionar una solución a este problema. Realmente me gustaría dibujar un 1024x768 pantalla 256 colores.

¿Fue útil?

Solución

En Windows, su adaptador gráfico está virtualizado. No puede acceder a él directamente y usar sus características específicas (a menos que use DirectX/OpenGL/Otros métodos extraños). Dosbox emula algunos adaptadores gráficos "históricos" para los programas que ejecuta (para ser precisos: Tandy/Hercules/CGA/EGA/VGA/VESA). Debe usar el controlador VESA 2.0 de TC (o en general el controlador VESA).

Otros consejos

El nombre correcto del controlador es IBM8514.bgi - no "3514" y no "IMB" más o menos. Pero como dijo mi altavoz anterior, mejor usas otro conductor. La mejor opción es usar el controlador egavga.bgi del turbo resp. Paquete Borland C ++ o Turbo Pascal. Entonces debes compilarlos con éxito.
Espere que necesite una característica especial de este controlador. Entonces debe verificarlos de este esfuerzo si los necesita. Creo que el egavga.bgi, VESA o un interruptor directamente al modo GRAFIC con algunas rutinas especiales para hacer que GRAFIC funcione en Dosbox, Emudos o en todas las versiones de 32 bits de Windows como Windows XP más o menos. Guenni60

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top