A raíz de las pruebas del post anterior, que lo que pretendía era dibujar usando comandos tales como mover a coordenada (x,y) y dibujar una línea hasta la coordenada (x1,y1), he estado mirando cómo dibujar figuras más complejas ya que el firmware del CPC no tiene una rutina para dibujar círculos.
Resulta que hubo un trabajador de IBM, Jack Bresenham, que en 1962 inventó un método para trazar líneas en plotters y pantallas de ordenador. Su método evalúa, dado un punto de partida y punto final, qué “pixels” debe pintar, paso a paso, de modo que el error respecto a la fórmula de la línea. Esto lo hace buscando el mínimo error y usando sólo valores enteros por lo que es muy eficaz en la computación.
Tenéis más información sobre el algoritmo en inglés y en castellano, Os recomiendo la edición en inglés que es bastante más completa.
El caso es que a partir de las ideas de Bresenham para trazar líneas, se ha ido evolucionando y modificando el algoritmo para otros dibujos, por ejemplo para dibujar círculos está el algoritmo del punto medio que también dibuja buscando el mínimo error posible entre un pixel y el siguiente. La característica más llamativa es que el dibujo se realiza por cuadrantes para ahorrar cálculos (recordemos que un círculo es bastante simétrico), en cada paso del programa se dibujan 8 puntos “simultáneamente”.
No entro en explicaciones teóricas del algoritmo del punto medio que ya hay mucha literatura al respecto en internet y además, puede resultar farragosa si no se tienen ciertos fundamentos de matemática. Os pongo la rutina en ensamblador para CPC, aunque cambiando la función “plot” que es la que usa para dibujar el pixel, se podría adaptar a cualquier ordenador que corra bajo Zilog Z80.
Un par de notas sobre Programa para dibujar un círculo:
- El algoritmo no se puede decir que esté muy optimizado, más bien todo lo contrario, es casi una copia literal del algoritmo en papel así que no se tome como una lección maestra de programación en ensamblador.
- La función plot llama a una rutina del firmware del CPC que enciende pixels en la pantalla.

Este año en RetroMadrid se presentó el pack #1 de juegos ESP Soft el cual fue un éxito, se vendieron las 15 que sacamos. Bueno, mejor dicho, que se encargó el amigo David (6128) de sacar ya que él promovió toda la historia, desde convencernos para sacar el pack hasta [...]
Tenía curiosidad por ver cómo estaba hecho el juego Sol Negro de Opera Soft, principalmente en cómo gestiona la pantalla así que me puse a mirar un poco las tripas del mismo con el WinApe que para esto da muchas facilidades. ¿Por qué de mi curiosidad? Pues porque me llamó [...]
Tras un arreón estos últimos días, ya tengo portada la librería para SDCC. Ahora llega la fase de ponerla bonita y testearla profundamente. Afortunadamente no me estoy encontrando muchos errores y, en el proceso de portado, alguna mínima modificación/optimización sí que se ha ganado con lo que alguna mejora habrá. [...]