Bueno, hoy vamos con la rutina de inicialización, en la dirección $02A3, que es a donde se salta tras realizarse el boot de la dirección $0000:
Código: Seleccionar todo
Initialize:
02A3: AF XOR A
02A4: 32 08 B8 LD (IRQENABLE),A ; Deshabilita las interrupciones
02A7: 32 05 88 LD ($8805),A ; ???
02AA: 32 10 B8 LD (FLIPX),A ; Deshabilita el giro horizontal de la imagen
02AD: 32 0C B8 LD (FLIPY),A ; Deshabilita el giro vertical de la imagen
02B0: 21 00 80 LD HL,$8000 ; Borra la memoria RAM ($8000 a $87FF)
02B3: 11 01 80 LD DE,$8001
02B6: 01 FF 07 LD BC,$07FF
02B9: 75 LD (HL),L
02BA: ED B0 LDIR
02BC: 21 00 B0 LD HL,$B000 ; Borra la memoria de objetos, sprites y atributos ($B000 a $B0FF)
02BF: 01 00 00 LD BC,$0000
02C2: 71 LD (HL),C
02C3: 2C INC L
02C4: 10 FC DJNZ $2C2
02C6: 3A 02 E0 LD A, (IN1);Captura el estado del puerto #1
02C9: 16 2E LD D,$2E ; Prepara la dirección $2E00
02CB: E6 03 AND $03 ; Los 2 últimos bits del puerto 1 es el número de vidas por crédito
02CD: 5F LD E,A ; Ese número de vidas se almacena en $2E00 a $2E03
02CE: 1A LD A,(DE) ; Captura el número de vidas
02CF: 32 E4 83 LD ($83E4),A ; Lo almacena en su variable ($83E4 numLifes: DB 0)
02D2: 3A 04 E0 LD A,(IN2);Captura el estado del puerto #2
02D5: 67 LD H,A
02D6: CB 5C BIT 3,H
02D8: 28 05 JR Z,$2DF ; Si el mueble es de tipo UPRIGHT, salta a $2DF
Con este simple trozo hemos descubierto cómo tener vidas infinitas en el Frogger, jiji, ya que vemos que en ($83E4) se almacena el número de vidas. Por tanto sólo hay que evitar decrementar su valor.
Si algo funciona... ¡¡NO LO TOQUES!! ¡¡NI DE COÑA!!