Hoy presento un código en la línea del BGame, es decir, algo completamente inútil, hecho solo para quitarse el mono de ensamblador en ring 0.
Simplemente muestra un reloj binario (puro o en BCD, según le venga en gana al RealTimeClock =S )
Mostrando entradas con la etiqueta no-os. Mostrar todas las entradas
Mostrando entradas con la etiqueta no-os. Mostrar todas las entradas
jueves, 30 de septiembre de 2010
domingo, 2 de mayo de 2010
Bgame (un minijuego de 510 bytes)
Bgame es un juego hecho para probar un concepto, meter un juego en el bootsector de un disquete, y que el PC pueda cargar directamente (sin pasar por un SO)
El resultado es bastante cutre, en parte por la limitacion de 510 bytes ( 512- 2 para el numero magico), que es parte del reto, y en parte por la poca destreza del programador (yop), pero funciona, y sirve de practica sobre ensamblador en modo real, asi que cumplio su funcion :)}
Esta completamente escrito en ensamblador de 16 bits (no hay mas opciones, si tiene que funcionar sin un SO y en ese espacio)... aqui teneis el codigo fuente [bgame.asm] (con los comentarios en ingles), o con los comentarios traducidos [bgame_es.asm] , el makefile [Makefile] y la imagen del disquete generado [bgame.img] y todo en un ZIP [bgame.zip]
La idea es utilizar una maquina virtual, como virtual box, y cargar la imagen del disquete.
Es posible que interese cambiar un par de variables (nivel y velocidad del juego), esto se puede hacer en dos los primeros del codigo:
El "juego" es bastante simple, los disparos propios son " | ", los disparos que vienen de arriba son " ! ", y las explosiones (cuando chocan dos cosas), son " @ ", aunque las colisiones no van muy finas, a veces los disparos explotan por que si... pero es mas que nada estetico.
Las capturas, no pueden faltar en esta ocasion:

Y cuando pierdes...

Y no, no tengo ni idea de que pasara si se mete en un disquete y se bootea (hubo que recortar algo de codigo que hacian comprobaciones necesarias para PC's antiguos)
Por supuesto, aun se pueden hacer algunas mejoras al juego (como eliminar todo el codigo :D)
Hasta la proxima!
[Referencia]
osdev.org
El resultado es bastante cutre, en parte por la limitacion de 510 bytes ( 512- 2 para el numero magico), que es parte del reto, y en parte por la poca destreza del programador (yop), pero funciona, y sirve de practica sobre ensamblador en modo real, asi que cumplio su funcion :)}
Esta completamente escrito en ensamblador de 16 bits (no hay mas opciones, si tiene que funcionar sin un SO y en ese espacio)... aqui teneis el codigo fuente [bgame.asm] (con los comentarios en ingles), o con los comentarios traducidos [bgame_es.asm] , el makefile [Makefile] y la imagen del disquete generado [bgame.img] y todo en un ZIP [bgame.zip]
La idea es utilizar una maquina virtual, como virtual box, y cargar la imagen del disquete.
Es posible que interese cambiar un par de variables (nivel y velocidad del juego), esto se puede hacer en dos los primeros del codigo:
%define glevel 200 ; Nivel del juego (1-255) (1-0xFF)
%define step_speed 0xFF ; Tiempo por cada "tick" del juego (1-65535) (1-0xFFFF)
El "juego" es bastante simple, los disparos propios son " | ", los disparos que vienen de arriba son " ! ", y las explosiones (cuando chocan dos cosas), son " @ ", aunque las colisiones no van muy finas, a veces los disparos explotan por que si... pero es mas que nada estetico.
Las capturas, no pueden faltar en esta ocasion:

Y cuando pierdes...

Y no, no tengo ni idea de que pasara si se mete en un disquete y se bootea (hubo que recortar algo de codigo que hacian comprobaciones necesarias para PC's antiguos)
Por supuesto, aun se pueden hacer algunas mejoras al juego (como eliminar todo el codigo :D)
Hasta la proxima!
[Referencia]
osdev.org
Etiquetas:
asm,
bgame,
bootsector,
ensamblador,
no-os,
osdev
Suscribirse a:
Entradas (Atom)