Haciendo un programilla para IBM PC
Moderador: CEZ
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Haciendo un programilla para IBM PC
Hola a todos, primero quiero felicitar a los implicados en mantener ésta comunidad, me encanta la página y el ambiente que se respira en el foro.
Estoy interesado en hacer un juego sencillo que se pueda ejecutar en los primeros IBM PC, utilizando los clásicos modos de 4 colores de la CGA. La idea es darle algo de alegría a esas viejas máquinas de oficinas (popularmente conocidas como PC) para las que parece que ya casi nadie hace ningún juego.
Para el desarrollo dispongo de un viejo clónico de Phillips con un 386SX a 20Mhz que se puede poner a 8Mhz en la BIOS en modo compatibilidad, aunque principalmente uso el dosbox en otras máquinas. Lo estoy haciendo en ensamblador (NASM) para intentar que sea lo más rápido posible.
Ahora mismo estoy realizando las rutinas gráficas, es curioso al menos para mí encontrarme con un hardware que usa memoria entrelazada, entre eso y que casi no encuentro información sobre la CGA pues me ha costado un poco arrancar pero ya soy capaz de dibujar tiles en pantalla.
Espero en breve poder mostraos algunas capturas.
Ahora las dudas:
¿Conocéis algún buen manual para usar el PC-Speaker?
¿En un sistema con 4 colores como implementar las transparencias?
¿Herramientas para dibujar tiles en 4 colores? (Estoy usando unas para Game Boy, con editor de mapas incluido pero no me terminan de convencer)
Estoy interesado en hacer un juego sencillo que se pueda ejecutar en los primeros IBM PC, utilizando los clásicos modos de 4 colores de la CGA. La idea es darle algo de alegría a esas viejas máquinas de oficinas (popularmente conocidas como PC) para las que parece que ya casi nadie hace ningún juego.
Para el desarrollo dispongo de un viejo clónico de Phillips con un 386SX a 20Mhz que se puede poner a 8Mhz en la BIOS en modo compatibilidad, aunque principalmente uso el dosbox en otras máquinas. Lo estoy haciendo en ensamblador (NASM) para intentar que sea lo más rápido posible.
Ahora mismo estoy realizando las rutinas gráficas, es curioso al menos para mí encontrarme con un hardware que usa memoria entrelazada, entre eso y que casi no encuentro información sobre la CGA pues me ha costado un poco arrancar pero ya soy capaz de dibujar tiles en pantalla.
Espero en breve poder mostraos algunas capturas.
Ahora las dudas:
¿Conocéis algún buen manual para usar el PC-Speaker?
¿En un sistema con 4 colores como implementar las transparencias?
¿Herramientas para dibujar tiles en 4 colores? (Estoy usando unas para Game Boy, con editor de mapas incluido pero no me terminan de convencer)
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
Toda la información de sistemas de video lo tienes en el libro "Sistemas de Video", creo que de Anaya, que trata en profundidad Hércules, CGA, EGA y VGA (esta última es en la que menos profundiza). Yo lo tengo, si no lo consigues por ahí en PDF mándame un privado.
Las transparencias en los modos de video donde 1 byte > 1 pixel se consiguen utilizando máscaras. Como se hace en spectrum o cualquier sistema de 8 o 16 bits. Si te refieres a transparencias para realizar varios planos de scroll superpuestos hay trucos, aunque no te lo recomiendo porque los PC's de la época de la CGA no podrán correr tu juego por falta de velocidad.
El speaker en PC no tiene mucho misterio, es un simple zumbador/Beeper como el del spectrum, pero sí cambia un poco cuando lo utilizas por medio del 8256 para que los pitidos suenen sin ocupar CPU, cosa que en spectrum por ejemplo no se puede hacer. Yo tenía un libro que lo explicaba muy bien, de Peter Norton, pero no recuerdo el nombre. Seguro que en internet encuentras la información muy fácilmente de todas formas, busca por beeper PC o 8256 beeper pc.
Yo en esa época utilizaba herramientas para DOS, pero no recuerdo ninguna ahora para recomendarte, aunque creo que el Deluxe Paint 2 de PC te permite usar CGA y el mejor programa que se ha hecho para hacer sprites/tiles.
De mi código antiguo no guardo nada de la época CGA, todo es para VGA (lo poco que guardo), en ensamblador. Si insistiendo no encuentras más información intentaré echarte una mano.
Las transparencias en los modos de video donde 1 byte > 1 pixel se consiguen utilizando máscaras. Como se hace en spectrum o cualquier sistema de 8 o 16 bits. Si te refieres a transparencias para realizar varios planos de scroll superpuestos hay trucos, aunque no te lo recomiendo porque los PC's de la época de la CGA no podrán correr tu juego por falta de velocidad.
El speaker en PC no tiene mucho misterio, es un simple zumbador/Beeper como el del spectrum, pero sí cambia un poco cuando lo utilizas por medio del 8256 para que los pitidos suenen sin ocupar CPU, cosa que en spectrum por ejemplo no se puede hacer. Yo tenía un libro que lo explicaba muy bien, de Peter Norton, pero no recuerdo el nombre. Seguro que en internet encuentras la información muy fácilmente de todas formas, busca por beeper PC o 8256 beeper pc.
Yo en esa época utilizaba herramientas para DOS, pero no recuerdo ninguna ahora para recomendarte, aunque creo que el Deluxe Paint 2 de PC te permite usar CGA y el mejor programa que se ha hecho para hacer sprites/tiles.
De mi código antiguo no guardo nada de la época CGA, todo es para VGA (lo poco que guardo), en ensamblador. Si insistiendo no encuentras más información intentaré echarte una mano.
Un saludo,
MFM Gandulf
MFM Gandulf
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
Ostiasss... uno que quiere programar un juego para CGA
, a pesar de odiar profundamente las CGA y Hércules, reconozco que lo pasé bien haciendo cosas en aquellas épocas de MierdaPCs.
Yo tengo varias cosas todavía guardada, rutinas en Assembler para poner sprites en pantalla, código en turbo Pascal... creo que lo tengo todo relativamente a mano.
Yo tengo varias cosas todavía guardada, rutinas en Assembler para poner sprites en pantalla, código en turbo Pascal... creo que lo tengo todo relativamente a mano.
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
6502: por tu nombre intuyo que eres un posible Commodorero... ¿?
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Has acertado, además he tenido una NES que también llevaba una CPU con la arquitectura 6502 de ahí el nick.josepzin escribió:6502: por tu nombre intuyo que eres un posible Commodorero... ¿?
Lo estoy buscando, a ver si hay suerte.MFM escribió:Toda la información de sistemas de video lo tienes en el libro "Sistemas de Video", creo que de Anaya, que trata en profundidad Hércules, CGA, EGA y VGA (esta última es en la que menos profundiza). Yo lo tengo, si no lo consigues por ahí en PDF mándame un privado.
Pues claro un bit de máscaraMFM escribió:Las transparencias en los modos de video donde 1 byte > 1 pixel se consiguen utilizando máscaras. Como se hace en spectrum o cualquier sistema de 8 o 16 bits. Si te refieres a transparencias para realizar varios planos de scroll superpuestos hay trucos, aunque no te lo recomiendo porque los PC's de la época de la CGA no podrán correr tu juego por falta de velocidad.
El PIT siempre me ha dado miedo creo que lo dejaré para el final. Estoy mirando código para usar la clásica AdlibMFM escribió:El speaker en PC no tiene mucho misterio, es un simple zumbador/Beeper como el del spectrum, pero sí cambia un poco cuando lo utilizas por medio del 8256 para que los pitidos suenen sin ocupar CPU, cosa que en spectrum por ejemplo no se puede hacer. Yo tenía un libro que lo explicaba muy bien, de Peter Norton, pero no recuerdo el nombre. Seguro que en internet encuentras la información muy fácilmente de todas formas, busca por beeper PC o 8256 beeper pc.
Muchas gracias por ayudarme.
Saludos.
- na_th_an
- 256 bits

- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
Re: Haciendo un programilla para IBM PC
Hmmm - tengo que mirar en mi casa, pero seguro que te puedo pasar código para sintetizar sonidos FM y tocarlos en la Adlib (o compatibles). Está en BASIC, por lo que más fácil de entender, imposible.
Es que allá por 2001 o 2002 me dio por hacer un tracker de música FM que además traía un editor de instrumentos
La info la saqué de una colección de tutoriales que rulaba por ahí que no recuerdo como se llamaba pero que era muy famosa entre los que hacíamos nuestros pinitos para intentar montar intros y demos.
Es que allá por 2001 o 2002 me dio por hacer un tracker de música FM que además traía un editor de instrumentos
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Muchas gracias seguro que sería de gran utilidad.na_th_an escribió:Hmmm - tengo que mirar en mi casa, pero seguro que te puedo pasar código para sintetizar sonidos FM y tocarlos en la Adlib (o compatibles). Está en BASIC, por lo que más fácil de entender, imposible.
Os cuento un poco como van las cosas. Sigo programando la parte gráfica. Estoy haciendo la rutina que dibujará los tiles del fondo sobre el que irán los sprites. Tengo problemas a la hora de calcular los offsets donde tengo que escribir para dibujar un tile en una determinada posición (x,y). Ahora mismo los coloca en la memoria de video pero no en las posiciones que quiero
El código usa la directiva CPU 8086 que no te deja poner instrucciones posteriores, ni combinaciones de registros que la CPU del PC XT no pueda ejecutar, lo que dificulta un poco las cosas pero pero asegura que se pueda ejecutar en todos los PC.
Y para que os deis cuenta del "gran" artista que estoy hecho os pongo algunas capturas de los programas que uso para diseñar los tiles y los sprites.
http://2.bp.blogspot.com/_5yXiycVO_dc/S ... /cgatb.PNG
http://1.bp.blogspot.com/_5yXiycVO_dc/S ... /cgamb.PNG
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
Con respecto al tema del volcado de tiles y sprites, me imagino que ya lo sabes, pero si usas tiles para pintar el fondo en cada frame de juego no deberías trabajar directamente en pantalla, sino en un buffer intermedio y volcar el resultado a pantalla (te digo lo del buffer porque la CGA no tiene soporte para páginas de video, que es lo óptimo)
Con respecto al tema de los tiles, si sólo son para el fondo y el juego no tiene scroll, puedes poner el fondo de pantalla al inicio y luego que los sprites guarden y restauren el cuadrado sobre los que se van a pintar, de esta forma ahorras mucha velocidad. Si no tienes una cantidad grande de sprites puedes prescindir del buffer y trabajar directamente en memoria de video.
¿Tu intención es que además de ser para CGA se ejecute correctamente en un XT o un 286 lento?
Con respecto al tema de los tiles, si sólo son para el fondo y el juego no tiene scroll, puedes poner el fondo de pantalla al inicio y luego que los sprites guarden y restauren el cuadrado sobre los que se van a pintar, de esta forma ahorras mucha velocidad. Si no tienes una cantidad grande de sprites puedes prescindir del buffer y trabajar directamente en memoria de video.
¿Tu intención es que además de ser para CGA se ejecute correctamente en un XT o un 286 lento?
Un saludo,
MFM Gandulf
MFM Gandulf
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
Estuve probando mis archivos .EXE de aquellas épocas pre-VGA y me aparecen unos caracteres en pantalla, supongo que porque no puede setear el modo CGA. ¿Como puedo probar esas aplicaciones simulando una CGA?
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
Pues de la misma forma que ejecutas los juegos MS-DOS antiguos. DosBox por ejemplo, es muy fácil de usar.
Es la forma en que pruebo yo mis cosas de MS-DOS, herramientas antiguas, etc
Es la forma en que pruebo yo mis cosas de MS-DOS, herramientas antiguas, etc
Un saludo,
MFM Gandulf
MFM Gandulf
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Yo uso el emulador DosBox funciona bien incluso en máquinas con procesadores de otras arquitecturas como PowerPC, y te emula todo el hardware de un PC (incluyendo cosas como la tarjeta de sonido esa de disney, Adlib, Sound Blaster...)josepzin escribió:Estuve probando mis archivos .EXE de aquellas épocas pre-VGA y me aparecen unos caracteres en pantalla, supongo que porque no puede setear el modo CGA. ¿Como puedo probar esas aplicaciones simulando una CGA?

Exacto esa es la idea. El problema es que la memoria al ser entrelazada no me resulta sencillo calcular bien los offset como en los modos de 256 colores por ejemplo.MFM escribió:Con respecto al tema del volcado de tiles y sprites, me imagino que ya lo sabes, pero si usas tiles para pintar el fondo en cada frame de juego no deberías trabajar directamente en pantalla, sino en un buffer intermedio y volcar el resultado a pantalla (te digo lo del buffer porque la CGA no tiene soporte para páginas de video, que es lo óptimo)
Con respecto al tema de los tiles, si sólo son para el fondo y el juego no tiene scroll, puedes poner el fondo de pantalla al inicio y luego que los sprites guarden y restauren el cuadrado sobre los que se van a pintar, de esta forma ahorras mucha velocidad. Si no tienes una cantidad grande de sprites puedes prescindir del buffer y trabajar directamente en memoria de video.
¿Tu intención es que además de ser para CGA se ejecute correctamente en un XT o un 286 lento?
Uso algo asi como
offset = (y * 80) + x/4 (las operaciones con desplazamientos para no matar al Intel)
pero aun no va bien.
Saludos.
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
El disney sound source fue el peor truño de sonido que tuve la oportunidad de ver
. Lo compré para jugar al alone in the dark y escuchar mods (o eso pretendía) pero el sonido era realmente nefasto. El problema era el altavoz y el ampli por llamarlos de alguna forma. Al ver que sonaba tan pocho lo abrí y al ver el nivel de cutrería cogí tal cabreo que me deshice de él inmediatamente y me fui a comprar una sound blaster pro (la mejor compra de sonido que hice hasta que pasaron los años y me hice con una AWE64).
Un saludo,
MFM Gandulf
MFM Gandulf
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
Me he bajado el DosBoxPortable, aunque no sé como acceder al disco C. Tendré que mirar un poco la ayuda del programa.6502 escribió:Yo uso el emulador DosBox funciona bien incluso en máquinas con procesadores de otras arquitecturas como PowerPC, y te emula todo el hardware de un PC (incluyendo cosas como la tarjeta de sonido esa de disney, Adlib, Sound Blaster...)josepzin escribió:Estuve probando mis archivos .EXE de aquellas épocas pre-VGA y me aparecen unos caracteres en pantalla, supongo que porque no puede setear el modo CGA. ¿Como puedo probar esas aplicaciones simulando una CGA?
¿Y como muestras los graficos? Yo tenia unas rutinas en ASM, estuve rebuscando en el pasado y encontré esto:6502 escribió: . El problema es que la memoria al ser entrelazada no me resulta sencillo calcular bien los offset como en los modos de 256 colores por ejemplo.
Uso algo asi como
offset = (y * 80) + x/4 (las operaciones con desplazamientos para no matar al Intel)
pero aun no va bien.
Código: Seleccionar todo
;()------------------------------------------------------------------------()
;| Esta rutina pone un Bloque Grafico en la direccion donde apunta la |
;| Variable SegPantaMem, o sea a la Pantalla, y pone el grafico en forma |
;| entrelazada. |
;| |
;| PoneBlok(CoordX,CoordY,Ancho,Alto,Desde) |
;| |
;| Desde es una variable que apunta a la definicion del bloque grafico, |
;| la direccion es la suma de la Variable de Segmento SEGSPRITE + Desde |
;()-------------------------------------------------------------------------()
PoneBlok PROC FAR ;(x,y,ancho,alto,desde);
PUSH BP ;Save BP
MOV BP,SP ;Set up stack frame
MOV AX, X3Ptr ;x coord
MOV ParametroX, AX
MOV AX, Y3Ptr ;y coord
mov ParametroY, AX
shl Ancho3Ptr,1 ;* 2 (para tener ancho en Word)
mov ax,SegPantaMem
mov es,ax ; ES:BX := direcci¢n de byte del pixel
call AddrBase
MOV AX,[SegSprite]
MOV DS,AX
MOV SI,DesdePtr ;SI = FUENTE SPRITE
MOV BX, Alto3Ptr ;BX=contador de filas
SEG_1:
MOV CX, Ancho3Ptr ;AnchoWORDs ;NUEVO SIZE X DEL SPRITE
shr CX,1
REPNE MOVSW ;WORD (BYTE PTR ES:[DI],BYTE PTR DS:[SI]
add DI, 320 ;AnchoPantalla
sub DI, Ancho3Ptr ;AnchoBytes
dec BX
Jnz SEG_1
MOV AX, Data
MOV DS,AX ;restauro DATA SEGMENT
POP BP ;Restore BP
RET 10
PoneBlok ENDP- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
He encontrado unas rutinas de un tal Everett Kaser que trabajó o trabaja en HP. En origen eran de una librería gráfica para usar con el compilador Microsoft C 4.0. Mirando su código se me han aclarado muchas de las dudas que tenía. Si alguien las quiere las puedo subir.
Ya soy capaz de dibujar puntos en posiciones de pantalla, ahora a por los sprites
Yo tuve uno hecho a "mano" no el original de Disney, si quieres más información http://en.wikipedia.org/wiki/Disney_Sound_Source
Ya soy capaz de dibujar puntos en posiciones de pantalla, ahora a por los sprites
No era más que un conversor análogico digital montado con resistencias, por los ochenta ya circulaban circuitos por las BBS para montarte el tuyo propio. Y calidad pues para lo que te costaban las resistencias y el resto de componentes...MFM escribió:El disney sound source fue el peor truño de sonido que tuve la oportunidad de ver. Lo compré para jugar al alone in the dark y escuchar mods (o eso pretendía) pero el sonido era realmente nefasto. El problema era el altavoz y el ampli por llamarlos de alguna forma. Al ver que sonaba tan pocho lo abrí y al ver el nivel de cutrería cogí tal cabreo que me deshice de él inmediatamente y me fui a comprar una sound blaster pro (la mejor compra de sonido que hice hasta que pasaron los años y me hice con una AWE64).
Yo tuve uno hecho a "mano" no el original de Disney, si quieres más información http://en.wikipedia.org/wiki/Disney_Sound_Source
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
Ya, yo también era usuario de BBS por aquel entonces (punto de Fido, me imagino que tu tb). El tema era que el Disney este llevaba el p*to altavoz dentro de la caja de plástico blanca con las orejas de micky. Era un verdadero y espantoso TRUÑO.
Un saludo,
MFM Gandulf
MFM Gandulf
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Yo por aquel entonces no tenía módem, pero si conocía a gente que estaban enganchadas a la Fidonet. Jaja me gustaría ver fotos de ese altavoz.MFM escribió:Ya, yo también era usuario de BBS por aquel entonces (punto de Fido, me imagino que tu tb). El tema era que el Disney este llevaba el p*to altavoz dentro de la caja de plástico blanca con las orejas de micky. Era un verdadero y espantoso TRUÑO.
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
Pues es curioso porque casi no hay o directamente no hay imágenes del invento. Sólo encontré una pero estaba cerrado y es pequeñita, y la caja de plástico blanca no era la que tenía la imagen del ratón.
Creo que todo el mundo que compró este engendro en cuanto pudo se deshizo de él y vivió su vida como si el cacharro ni hubiera existido. Por eso no hay fotos.
Yo lo usé para cargar el Alone in the Dark y para escuchar mods con el Fast Tracker y el resultado era nefasto (obviamente era mejor que con el speaker, en función de lo exigente que sea uno con el sonido, a alguno le pudo valer). En el Alone la música me sonaba por la Adlib (gran tarjeta y grandes momentos tuve con ella), pero al sacar los sonidos por el dac de la disney, era tremendo. Sonido enlatado y plastificado, con ruído (normal, por tener un minialtavoz embutido en una cutre caja de plástico)
Creo que todo el mundo que compró este engendro en cuanto pudo se deshizo de él y vivió su vida como si el cacharro ni hubiera existido. Por eso no hay fotos.
Yo lo usé para cargar el Alone in the Dark y para escuchar mods con el Fast Tracker y el resultado era nefasto (obviamente era mejor que con el speaker, en función de lo exigente que sea uno con el sonido, a alguno le pudo valer). En el Alone la música me sonaba por la Adlib (gran tarjeta y grandes momentos tuve con ella), pero al sacar los sonidos por el dac de la disney, era tremendo. Sonido enlatado y plastificado, con ruído (normal, por tener un minialtavoz embutido en una cutre caja de plástico)
Un saludo,
MFM Gandulf
MFM Gandulf
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Lo he probado con mi viejo PC a 7Mhz y parece que las rutinas son lo suficientemente rápidas.
Os podéis bajar un test del siguiente enlace:
http://rapidshare.com/files/193921060/test.com.html
Os podéis bajar un test del siguiente enlace:
http://rapidshare.com/files/193921060/test.com.html
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
A ver si le agregas una lectura de cursores así podemos mover uno de los bichos
- jmp
- 8 bits

- Mensajes: 6
- Registrado: 29 Abr 2008 15:48
Re: Haciendo un programilla para IBM PC
Tengo exactamente lo que necesitas, pero no sé cómo o sencillamente, si se puede adjuntar en este foro ficheros, y yo me agobio con Megaupload et al, asi que dame un email y te lo envío.
Para que te fíes:
HelpPC (referencia para programadores del IBM PC, 1991)
PC Games Programmer's Encyclopaedia (¿1994?) (absolutamente excelente)
Ralf Brown's Interrupt List
Esto yo no sé si existe en Internet, yo me lo bajaba de BBS - Supongo que quizá estén en algún FTP perdido de la mano de Dios... Para abrirlos (son ejecutables en su mayoría) necesitarás MSDOS o un Windows 95 (XP parece que no funciona bien).
Además eres afortunado porque Borland ahora regala Turbo Pascal, Turbo C++ y con los anchos de banda de hoy día bajar DJGPP+RHIDE es pan comido.
Saludos.
Para que te fíes:
HelpPC (referencia para programadores del IBM PC, 1991)
PC Games Programmer's Encyclopaedia (¿1994?) (absolutamente excelente)
Ralf Brown's Interrupt List
Esto yo no sé si existe en Internet, yo me lo bajaba de BBS - Supongo que quizá estén en algún FTP perdido de la mano de Dios... Para abrirlos (son ejecutables en su mayoría) necesitarás MSDOS o un Windows 95 (XP parece que no funciona bien).
Además eres afortunado porque Borland ahora regala Turbo Pascal, Turbo C++ y con los anchos de banda de hoy día bajar DJGPP+RHIDE es pan comido.
Saludos.
- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
Esas tres referencias las he encontrado por la red en formato HTML, gracias por recomendarlas.
Ahora tengo un problema y es que tengo que Configurar la tarjeta CGA a bajo nivel sin usar la BIOS ya que las rutinas de la BIOS cuando cambio el color del fondo cambian el bit de intensidad no dejando usar los modos de alta intensidad. Se que se hace usando el puerto 3D9h pero no consigo que funcione.
También tengo que leer del puerto 3DAh para saber cuando se va a producir el Vblank pero esa es otra de las cosas que no me van bien.
Se ve que eso de leer y escribir en puertos no es lo mío, lo malo es tampoco encuentro ejemplos en donde hagan eso.
Ahora tengo un problema y es que tengo que Configurar la tarjeta CGA a bajo nivel sin usar la BIOS ya que las rutinas de la BIOS cuando cambio el color del fondo cambian el bit de intensidad no dejando usar los modos de alta intensidad. Se que se hace usando el puerto 3D9h pero no consigo que funcione.
También tengo que leer del puerto 3DAh para saber cuando se va a producir el Vblank pero esa es otra de las cosas que no me van bien.
Se ve que eso de leer y escribir en puertos no es lo mío, lo malo es tampoco encuentro ejemplos en donde hagan eso.
- josepzin
- 128 bits

- Mensajes: 2238
- Registrado: 25 Oct 2005 18:03
- Ubicación: Carthagonova
- Contactar:
Re: Haciendo un programilla para IBM PC
Del museo ASM:6502 escribió:También tengo que leer del puerto 3DAh para saber cuando se va a producir el Vblank pero esa es otra de las cosas que no me van bien.
Se ve que eso de leer y escribir en puertos no es lo mío, lo malo es tampoco encuentro ejemplos en donde hagan eso.
Código: Seleccionar todo
; espera barrido!!??
mov dx,3DAh ; Point DX to CGA status port
mov bl,9 ; Move horiz. + vertical retrace mask to bl
x5:
in al,dx ; Get 6845 status
rcr al,1 ; Check horizontal retrace
jb x5 ; Loop if in horizontal retrace: this prevents
; starting in mid-retrace, since there is
; exactly enough time for 1 and only 1 STOSW
; during horizontal retrace
cli ; No ints during critical section
x6:
in al,dx ; Get 6845 status
and al,bl ; Check for both kinds of retrace: IF the
; video board does not report horizontal
; retrace while in vertical retrace, this
; will allow several characters to be
; stuffed in during vertical retrace
jz x6 ; Loop if equal to zero
;- 6502
- 8 bits

- Mensajes: 18
- Registrado: 28 Ene 2009 16:14
Re: Haciendo un programilla para IBM PC
He subido los resultados a mi blog (código fuente, ejecutable), de momento lo dejo así para hacer otras "cosillas".
Las rutinas incluyen una que muestras imágenes codificadas en RLE (que es como el Deluxe Paint codifica los bitmaps), limpiado de pantalla, dibujo de puntos, dibujado de tiles y otras que pueden ser útiles. Las partes críticas del código tienen comentarios.
Tengo otra versión con double buffering que si alguien me la pide se la puedo pasar pero básicamente es igual y sobre esta técnica si que hay muchos ejemplos en la red.
Se que no es gran cosa pero partiendo casi desde cero (solo había usado el ensamblador para rutinas numéricas) estoy contento con el resultado.
Las rutinas incluyen una que muestras imágenes codificadas en RLE (que es como el Deluxe Paint codifica los bitmaps), limpiado de pantalla, dibujo de puntos, dibujado de tiles y otras que pueden ser útiles. Las partes críticas del código tienen comentarios.
Tengo otra versión con double buffering que si alguien me la pide se la puedo pasar pero básicamente es igual y sobre esta técnica si que hay muchos ejemplos en la red.
Se que no es gran cosa pero partiendo casi desde cero (solo había usado el ensamblador para rutinas numéricas) estoy contento con el resultado.
-
Ñuño Martínez
- 16 bits

- Mensajes: 65
- Registrado: 12 Ene 2009 16:45
- Ubicación: Ciudad Catedral, Españistán
Re: Haciendo un programilla para IBM PC
Yo también tengo la "PC Games Programmer's Encyclopaedia", versión 1.0. Siempre me he preguntado si salió alguna versión más. ¿Salió o se quedó ahí?
- jmp
- 8 bits

- Mensajes: 6
- Registrado: 29 Abr 2008 15:48
Re: Haciendo un programilla para IBM PC
Parece que iba a salir la v2 para Windows pero quedó en nada: Más info en: http://www.geocities.com/SiliconValley/2151/pcgpe.html
- MFM
- 16 bits

- Mensajes: 283
- Registrado: 17 Ene 2009 05:48
Re: Haciendo un programilla para IBM PC
La verdad es que veo casi lógico que la versión windows quedara en agua de borrajas. Mientras que en DOS la programación de juegos era "universal" (la misma VGA y las mismas técnicas para todo el mundo, sólo cambiaba el lenguaje a utilizar, pero para hacer lo mismo), en Windows tendrían que centrarse en una API en concreto, o abarcarlas todas (imposible). O se quedaban en la teoría (que tampoco estaría mal) o elegían una plataforma de desarrollo/API
Un saludo,
MFM Gandulf
MFM Gandulf
