Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modos Gráficos (ensamblador)

Iniciado por J_F_NASH, 30 de Abril de 2005, 10:28:30 PM

« anterior - próximo »

J_F_NASH

 Estoy con ensamblador y no puedo determinar el modo gráfico porque no se sus códigos.
Me interesa saberlo en las ATI Radeon 9600.
¿Dónde puedo encontrar esta información?
¿Cuales son los modos de la tarjeta gráfica para acceder desde ensamblador?


S2.

Zaelsius

 Mmm por donde empiezo..

.. :blink:  :rolleyes:

Usando ensamblador tienes dos opciones:

- Programar en MS-Dos con el modo 13h y rezar para que funcione en los Windows 2K/XP(creo que hay algunos apaños por ahí). Resoluciones de 320x200 y poco más.. modo software por supuesto. Eres tú contra un búfer de memoria lineal, nada más.

- Programar a nivel de Win32, en ensamblador. Esto es algo hardcore, conste. Requiere de conocimientos bastante avanzados. De todas formas, al final estarás usando OpenGL o DirectX, luego, si no vas a programar una 4KB o 64KB.. no te recomiendo que gastes el tiempo con este tema.

MA]Mestre

Cita de: "ZaelSiuS"- Programar en MS-Dos con el modo 13h y rezar para que funcione en los Windows 2K/XP(creo que hay algunos apaños por ahí). Resoluciones de 320x200 y poco más.. modo software por supuesto. Eres tú contra un búfer de memoria lineal, nada más.

- Programar a nivel de Win32, en ensamblador. Esto es algo hardcore, conste. Requiere de conocimientos bastante avanzados. De todas formas, al final estarás usando OpenGL o DirectX, luego, si no vas a programar una 4KB o 64KB.. no te recomiendo que gastes el tiempo con este tema.
- En MS-Dos no solo tienes el modo 13h sino tambien los Vesa ( p.e. 1024x768x24 )... ...si partimos de la base que en MS-Dos solo tienes 640k, pues ya puedes mirarte como acceder a memoria extendida atraves del hymen.sys.

- Programar a nivel de Win32 en ensamblador, si quieres saber que modos te permite tu tarjeta pos llamas a la Api de Win32 desde asm ( EnumDisplaySettings ).

Un saludo.

_Grey

 Tu pregunta es muy generica, pero intentare poner algo de luz sobre ello.

Rebuscando por mis programillas (en C/C++ :P) e encontrado alguna cosa (aunque no sea ASM), por ejemplo para poner el modo 320x200x256 tendrias que poner 0x13 en el registro ax (mov ax,13h) y llamar a la interrupcion 0x10 de la BIOS (int 10h)  que es la que se encarga de esta faena.

Con esto tendrias el modo grafico dicho activado empieza en la zona de memoria a000:0000 para el modo real, puede que veas basura en pantalla por que puede no estar limpia la zona de memoria dicho.

Si quieres probar los modos de alta resolucion te recomiendo un vistazo a la documentacion VESA2, donde encontraras las llamadas a realizar, ten encuenta que estos modos VESA, no tienen por que tener un modelo de memoria lineal.

Saludos.

seryu

 Impresionante como a partir de una pregunta generica las respuestas han supuesto la informacion restante :D

Calantra

 http://pinsa.escomposlinux.org/sromero/art.../gfx/graf7.html

Resumen:

En modo vesa 1.2 uso de segmentos de no mas de 64kb, hay que utilizar bancos para ir mas alla de 320x200.

En modo vesa 2.0 se utiliza memoria lineal, osea sin limite de 64kb usando los registros estendidos (EAX) de 32 bits, en modo protegido.

Para fijar el modo es:

mov ax,4f02h
mov bx,100h  (por ejemplo para el modo 64x480x256colores)
int 10h

apartir de aqui devuelve en al 04fh si es un modo soportado y en ah el estado, 00h NoError 01h error.

Salu2.


0 for i=0 to 1000<br>20 print "Ya soy programador"<br>30 next i<br>

fiero

 Realmente es generica la pregunta :).

Acabo de revisar tambien mis viejas fuentes VESA2, así comentaba mi rutina de iniciación:

 asm{
 mov ax,0x4F02
 mov bx,modo
 int 10h
 mov salida,ax
}
if(salida!=0x004F)
{
 printf("\nERROR: ­Driver VESA no soportado!");
 terminarprograma(1);
}


que tiempos....

un saludo

PD: uy, he escrito lo mismo que dice Calantra, no me habia dado cuenta
www.videopanoramas.com Videopanoramas 3D player

MA]Mestre

Cita de: "Calantra"En modo vesa 2.0 se utiliza memoria lineal, osea sin limite de 64kb usando los registros estendidos (EAX) de 32 bits, en modo protegido.
Pero en MS-Dos no i tb puede usar el VESA2.0. Has de cambiar de bitplanes ( paneles de 64kb ), esto ya lo han comentado arriba.


Citarque tiempos....

...cuanta razón fiero... cuanta razón...  (ole)

Un saludo.

P.D: PC Interno Rules !!!!

Pogacha

 El Vesa 2.0 era famoso por tener la posibilidad del linear framebuffer (sin problemas de los 64K ni bancos, inclusive uno podia hacer un scroll para implementar double buffer) , pero ni idea de como poder activarlo sin usar Watcom con DOS4GW, o con el DJGCC con el extensor por DPMI. De los dos tengo codigo.

Tambien estan los modos X los cuales son de dimensiones redefinibles para 256 colores, pero dibujar sobre ellos supone un IQ mayor a 150.

Citarhttp://pinsa.escomposlinux.org/sromero/art.../gfx/graf7.html
Yo compraba esa revista.  :lol:

Saludos.

Calantra

Cita de: "MAMestre"]
Cita de: "Calantra"En modo vesa 2.0 se utiliza memoria lineal, osea sin limite de 64kb usando los registros estendidos (EAX) de 32 bits, en modo protegido.
Pero en MS-Dos no i tb puede usar el VESA2.0. Has de cambiar de bitplanes ( paneles de 64kb ), esto ya lo han comentado arriba.


Citarque tiempos....

...cuanta razón fiero... cuanta razón...  (ole)

Un saludo.

P.D: PC Interno Rules !!!!
En modo ms-dos tambien se puede, como dice pogacha utilizando un extensor, yo tampoco probe nunca a utilizarlo, pero si que programé desde tmt pascal usando la mayoria de codigo en ensamblador con modo vesa ya que este ultimo venia con el 24gw. Ah y en ms dos de win 98, que parece que no quedaba mu claro, ya que desde el 386 los procesadores son de 32 bits, da lo mismo que el sistema operativo sea de 16 bits, pa eso se usa el extensor.

Salu2.

P.d. Si que se siente nostalgia al recordar aquellos tiempos, donde nada te lo daban echo y todo salía de la creatividad de uno mismo.
0 for i=0 to 1000<br>20 print "Ya soy programador"<br>30 next i<br>

Calantra

 Bueno, como me entro la nostalgia y me picó la curiosidad, he estado mirando los programillas y mini juegos de ace un millón de años realizados en asm, ha sido una pena, pues la mitad de las cosas o no funcionan o no lo hacen del todo bien  :P .

Despues de esto le he hechado un vistazo al google en busca del modo protegido en asm y me he dado de bruces con el, asín que pongo el enlace por si le sirve a nuestro amigo para sus propositos.

http://www.geocities.com/SiliconValley/Cam...sh/extensor.htm

Salu2.
0 for i=0 to 1000<br>20 print "Ya soy programador"<br>30 next i<br>

HgH

 
Cita de: "Pogacha"Tambien estan los modos X los cuales son de dimensiones redefinibles para 256 colores, pero dibujar sobre ellos supone un IQ mayor a 150.

La verdad es que era raro de poner (creo que dos pixels contiguos estaban separados por cosa de 16 k's, dependiendo de como lo habias montado), pero más raro era si cabe los modos de "alta resolución vga", tipo 640x480 de 4bpp, donde cada bit del pixel era el que estaba separado de los demás (creo recordar) ....  :D  
gH _ TLOTB
..................
"No queremos estar obligados, por nada ni nadie, a pensar sólo en lo que es más comercial. Siempre seremos, antes que nada, programadores"

- Equipo de Zigurat -

ethernet

 Estando en 2005 este post me parece subrealista (yo lo hubiera puesto en offtopic) XDD

seryu

Cita de: "ethernet"Estando en 2005 este post me parece subrealista (yo lo hubiera puesto en offtopic) XDD
eso díselo al hombre que está con el port de la abadia del crímen a win32  :P  

Calantra

Cita de: "ethernet"Estando en 2005 este post me parece subrealista (yo lo hubiera puesto en offtopic) XDD
Si tienes razón colega, yo mandaría a la mi*rd* todas las lenguas muertas, el Latíin,el Griego  etc,etc.
Que perdida de tiempo intentar entender algo como la escritura de los egipcios, si total pa decir que Ra no se que, que Amon no se cuanto tenian que taladrar una parez entera, con lo facil que es hoy en dia pinchar la teclas para escribir, yo hasta eliminaba los lapizeros y boligrafos, por no hablar del papel, que cosas mas anticuadas. Y la radio? por dios, si eso es de cuando los dinosaurios andaban por la tierra, si para oir musica me pongo el WMP y lo oigo 1000000 de veces mejor y si quiero enterarme de las noticias =. Ademas, tampoco entiendo para que enseñan en los colegios a sumar, restar y multiplicar, por dios que estamos en 2005 y ahora eso lo hacen hasta las planchas. En fin que yo ponía todo lo que no fuera Windows offtopic del mundo y de la cultura, ¿para que vamos a reinventar la rueda si bill gates ya nos da la rueda el carro y lo bueyes?

¿Se nota el sarcasmo?

P.d Hostias, si hubiera escrito este "post" con Microsoft Word no hubiera cometido ni una sola falta de ortografia, mira que perder el tiempo en el colegio aprendiendo ortografia, teniendo el Word.  (nooo)




0 for i=0 to 1000<br>20 print "Ya soy programador"<br>30 next i<br>






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.