Usted está aquí

Bajo un océano de bits, mes XX

Recuperando un poco el tema bajo el que nació este epígrafe, este mes el foco ha vuelto a dirigirse hacia la programación.

Empezaremos con un clásico por estos lares, los vídeos del señor Fran Gallego1. Este mes ha subido cinco nuevas entradas en su canal, todas ellas con reflexiones que siempre viene bien tener presentes.
En las dos primeras habla acerca de la necesidad de no limitarse a copiar cosas de Stackoverflow y similares. En tratar de ir más allá y leer el código de las cosas que estamos utilizando en nuestros proyectos.
Como de costumbre, la cosa aún me viene muy grande, pero no puedo estar más de acuerdo con este señor.

Además de esto, y dentro de su labor de divulgación del CPC, se ha montado un concurso para animar a la gente a programar cosas para esa máquina. Un reto en el que, bajo el justag de tuister #AmstradGameDevChallenge2, Héctor Linares y él están haciendo un “Rpg” para la máquina de Alan Sugar. Dentro de este reto, cada uno de ellos forma parte de un equipo diferente en el enfrentamiento, el de los defensores del BASIC contra el de los partidarios del C.

Por supuesto, mientras se lanzan pullas amistosas entre ellos van demostrando distintas maneras de afrontar los mismos problemas.

Este mes también he descubierto una nueva fuente de información para seguir adelante con mi reto principal; el libro “Programación Retro del Commodore 64”3. Una obra que, lamentablemente, al venderse únicamente a través de Amazon no voy a comprar.

Mandé una consulta a su autor preguntándole por la posibilidad de adquirirlo a través de otras plataformas pero me dijo que, por el momento, no había alternativas. En su respuesta también me decía que, básicamente, lo que venía en el libro no deja de ser lo mismo que había apareciendo en su blog así que, acto seguido, lo que sí que hice fue fabricarme un PDF a partir de las entradas publicadas en él.
Aun así, si a alguien le interesa el libro no llega a los seis euros, así que el dinero no debería ser un problema para que os hagáis con él. Eso sí, igual si le da el coñazo un número mayor de personas decide ponerlo también en Lulu o alguna plataforma de POD.

Entre lo que encuentre en él y las referencias que va mencionando, espero llegar a ser capaz de desensamblar el Traz de Commodore para poder hacer un port lo más fiel posible a todos los niveles para PC.

Como él ha escrito el libro utilizando Windows y CBM Prg Studio, los ejemplos que se pueden descargar de su web no me sirven tal cual están, lo que pretendo utilizar a mi favor dentro de mi proceso de aprendizaje. Dado que el compilador de ese programa no es Acme, tendré que ir haciendo yo las conversiones a mano y ver las diferencias entre ambos.

Por el momento los cambios que he tenido que hacer no hay sido excesivos. Cosas como sustituir las cadena de bytes que Prg studio llama “byte” por “!byte”, o “text” por “!scr”.
También he tenido que añadir unas cuantas cabeceras para que el programa resultante funcione en el emulador. Por más que el compilador no diese errores a la hora de crear el archivo, el prg resultante no funcionaba en el emulador.

Las cabeceras

Supongo que estas son cosas que CBM Prg Studio “ofusca” y hace de forma automática dentro de sus proyectos para simplificar la labor del desarrollador, pero prefiero hacerlas a mano (y tratar de entender que hay en las posiciones de memoria a las que se llama byte a byte)

Otra diferencia que he encontrado es que ambos no tratan de la misma manera los caracteres y que, si quiero que me aparezca texto, tengo que escribir este en minúsculas ya que, si lo escribo en mayúsculas, lo que aparece en pantalla son los símbolos especiales que se encuentran en esas teclas.
Supongo que si quiero escribir el texto en minúsculas tendré que llamar a la rutina que cambia el modo gráfico de la pantalla, pero aún no he llegado a eso.

En paralelo a todo esto también he comenzado a mirar con un poco más de detenimiento los tutoriales de Dustlayer4 donde hay unos cuantos artículos muy interesantes acerca del hardware del Commodore. Por otro lado, los ejemplos que trae están diseñados para Acme, por lo que esos no voy a tener que tocarlos para que funcionen (aunque su autor los haya creado en un Mac).

Dentro de mis búsquedas a través de la red también he encontrado una nueva herramienta para el desarrollo, C64 Unit5; un framework de pruebas para software de Commodore. Aún queda mucho para que pueda plantearme el utilizarlo, pero no está de más el tenerlo localizado.
Eso sí, para compilarlo he necesitado instalar un compilador cruzado más; 64tass.

Antes de terminar por hoy, sólo pondré un par de apuntes adicionales.
Por un lado, que no lo haya mencionado en esta entrada no quiere decir que haya abandonado el tema de las EEPROMS6. He retomado (por vez N) un libro de fundamentos de la electrónica que me dejó un amigo hace años. A falta de más vídeos de Ben Eater, también sigo buscando otras fuentes a ese respecto (aunque no todas son igual de amistosas).

Por otro, y siguiendo con el tema del visionado de vídeos, no podían faltar por aquí los habituales enlaces a las charlas del GDC7 que han caído este mes.

Y más o menos eso ha sido todo lo que he hecho desde la última entrada. A día de hoy, mi escenario de trabajo es Vim + Acme + Vim-acme + Droid 64 + Vice 3.3 y, de aquí a un tiempo, supongo que empezaré a utilizar SpritePad, VChar64 y C64 Debugger.

Salvo Vim, el resto de cosas que voy utilizando las he compilado a mano porque, en la versión de Vice que está en los repositorios de Ubuntu, el monitor con el que se accede al estado de la memoria tenía un comportamiento un poco extraño.

Si a alguien le interesa montarse un entorno similar, no tendría problema en publicar por aquí una guía acerca de cómo he ido montando esto en mi máquina.

Enlaces:

1. Profesor Retromán
- C++ : ¿Por qué reserva 71K un programa vacío?
- Habilidades para ser mejores ingenieros

- Amstrad GameDev Challenge #01: BASIC vs C
- Amstrad GameDev Challenge #02: BASIC vs C
- Amstrad GameDev Challenge #03: BASIC vs C

2. Los contendientes y su juastag
- Fran Gallego
- Hector Linares
- #AmstradGameDevChallenge

3. Programación Retro del Commodore 64
- El libro
- El blog
- Entrevista al autor en AmigaWave #168

4. Dustlayer y el hardware
- Ram under Rom - a brief look into C64 memory
- Hardware Basics Part 1 - Tick Tock, know your Clock
- Hardware Basics Part 2 - A Complicated Relationship

5. C64 Unit
- C64 Unit - La web
- C64 Unit - En BitBucket
- 64tass - El compilador
- 64tass - La guía

6. La electrónica
- The Learning Circuit - How Logic Gates Work
- The Learning Circuit - Making Logic Gates From Discrete Components
- Fundamentos de Sistemas Digitales
- Basic Willem EPROM Programmer To Make Sega Genesis/Mega Drive Reproductions
- Retro EPROM Programming Tutorial
- Lecture 36 ROM-EPROM,EEPROM and Flash EPROM

7. Charlas GDC
- Letting Go: A Florence Postmortem
- Motion Capture Performance: An Actor's Approach
- Trailer Made: What Makes a Successful and Memorable Game Trailer
- Math for Game Programmers: Dark Secrets of the RNG
- Three Statistical Tests Every Game Developer Should Know
- 2019 Animation Tricks of the Trade

Añadir nuevo comentario

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer