Fuentes propias de texto y código absoluto [GameDev asm Z80][7.2][2018]
Channel: Profesor Retroman
Date: 06/02/2019

Analizamos el uso de las funciones de dibujado de cadenas (drawString) en #CPCtelera. Entendemos que requieren el firmware bajo y, por tanto, su código debe estar fuera del rango 0000-4000h. Después, analizamos cómo funciona su código y cómo podemos modificarlas para tener fuentes te texto propias:

Contenido detallado:
  - Análisis del funcionamiento de la función cpct_drawStringM0
  - Funcionamiento de la memoria y las ROMS en #Amstrad
  - El problema del shadowing de código: al activar la ROM, todo el código que está en RAM en la misma posición deja de poder leerse
  - Uso del fichero .map en la carpeta obj/ para saber dónde está ubicado el código de la función
  - Análisis del código de la función cpct_drawStringM0: vemos cómo activa y desactiva la ROM
  - Idea: eliminar el código de activado y desactivado de ROM de la función cpct_drawStringM0 para que lea de RAM 
  - Corrección: Las posiciones donde están las definiciones de fuentes es de 0x3800 a 0x3FFF (en el vídeo pone 0x38FF, es un error)
  - Entendiendo cómo posicionar de forma absoluta código usando las directivas .org y .area 
  - Entendiendo la importancia de ir a los manuales, libros y artículos para buscar información de primera mano
  - Resolvemos una duda sobre el uso de los bytes de memoria de 0x0000 a 0x0040 (el vector de interrupciones).
  - Enteniendo los modos de interrupcion del #z80
  - Modo de interrupciones 1: en cada interrupción se realiza call a 0x0038. Funcionamiento de cpct_disableFirmware.

#GameDev #Amstrad #CPCtelera #z80 #Assembler #Programming