Desensamblado (Bytes 17-95): 00:8000:78 SEI (Desactiva IRQs) 00:8001:A9 00 LDA #$00 (Carga en A el valor $00) 00:8003:8D 00 20 STA $2000 = #$92 (Lo guarda. Desactiva NMI) 00:8006:D8 CLD (Desactiva el modo decimal=activa el hexadecimal) 00:8007:AD 02 20 LDA $2002 = #$0F (Carga en A el valor que hay en la dirección $2002) 00:800A:10 FB BPL $8007 (Espera Vblank) 00:800C:A9 00 LDA #$00 (Carga en A el valor $00) 00:800E:8D 00 20 STA $2000 = #$92 (Lo guarda. Desactiva NMI) 00:8011:EA NOP (No hace nada) 00:8012:AD 02 20 LDA $2002 = #$0F (Carga en A el valor que hay en la dirección $2002) 00:8015:10 FB BPL $8012 (Espera Vblank) 00:8017:A2 FF LDX #$FF (Carga en X el valor $FF) 00:8019:9A TXS (Transfiere X=$FF al registro de la pila) 00:801A:E8 INX (Incrementa X. X=X+1=$00) 00:801B:8E 10 40 STX $4010 = #$FF (Guarda en $4010 el valor $00. Desactiva DMC IRQs) 00:801E:86 67 STX $0067 = #$00 (Guarda el valor $00 en la dirección $0067) 00:8020:86 69 STX $0069 = #$00 (Guarda el valor $00 en la dirección $0069) 00:8022:A9 D0 LDA #$D0 (Carga en A el valor $D0) 00:8024:85 64 STA $0064 = #$D0 (Pone el valor $D0 en la dirección $0064) 00:8026:A9 07 LDA #$07 (Carga en A el valor $07) 00:8028:85 65 STA $0065 = #$07 (Pone el valor $07 en la dirección $0065) 00:802A:20 C8 A4 JSR $A4C8 (Salta a la subrutina que hay en la dirección $A4C8) 00:802D:A9 40 LDA #$40 (Carga en A el valor $40) 00:802F:8D 17 40 STA $4017 = #$FF (Lo guarda en la dirección $4017. Desactiva APU frame IRQ) 00:8032:20 50 A6 JSR $A650 (Salta a la subrutina que hay en la dirección $A650) 00:8035:20 E3 AB JSR $ABE3 (Salta a la subrutina que hay en la dirección $ABE3) 00:8038:A9 00 LDA #$00 (Carga en A el valor $00) 00:803A:85 97 STA $0097 = #$92 (Lo guarda en la dirección $0097) 00:803C:8D 00 20 STA $2000 = #$92 (Lo guarda en la dirección $2000) 00:803F:85 98 STA $0098 = #$1E (Lo guarda en la dirección $0098) 00:8041:8D 01 20 STA $2001 = #$1E (Lo guarda en la dirección $2001) 00:8044:85 9A STA $009A = #$F0 (Lo guarda en la dirección $009A) 00:8046:85 99 STA $0099 = #$00 (Lo guarda en la dirección $0099) 00:8048:A9 FF LDA #$FF (Carga en A el valor $FF) 00:804A:85 6B STA $006B = #$FF (Lo guarda en la dirección $006B) 00:804C:20 94 9C JSR $9C94 (Salta a la subrutina que hay en la dirección $9C94)
Desensamblado (Poner el tiempo inicial del juego) (Bytes 279-282): 00:8106:A9 78 LDA #$78 (Carga en A el valor $78=120=tiempo) 00:8108:85 2A STA $002A = #$00 (Lo guarda en la dirección $002A) 00:810A:A5 20 LDA $0020 = #$00 (Carga en A lo que hay en la dirección $0020) 00:810C:10 FC BPL $810A (Salta si flag negativo es cero a la dirección $810A) 00:810E:A9 10 LDA #$10 (Carga en A el valor $10) 00:8110:8D 00 20 STA $2000 = #$92 (Lo guarda en la dirección $2000. Sprite pattern table addres=$1000, background pattern table address=$0000,...) 00:8113:20 85 81 JSR $8185 (Salta a la subrutina que hay en la dirección $8185)... (Bytes 390-424) 00:8175:AD 02 20 LDA $2002 = #$00 (Carga en A lo que hay en la dirección $2002. Lee de PPU) 00:8178:A9 00 LDA #$00 (Carga en A el valor $00) 00:817A:8D 05 20 STA $2005 = #$00 (Lo guarda en $2005. Scroll fondo horizontal=0=desactivado) 00:817D:8D 05 20 STA $2005 = #$00 (Lo guarda en $2005. Scroll fondo vertical=0=desactivado) 00:8180:A9 0A LDA #$0A (Carga en A el valor $0A) 00:8182:8D 01 20 STA $2001 = #$1E (Lo guarda en la dirección $2001. Visibilidad del fondo, no clipping del fondo) 00:8185:A2 00 LDX #$00 (Carga en X el valor $00) 00:8187:A0 00 LDY #$00 (Carga en Y el valor $00) 00:8189:A9 08 LDA #$08 (Carga en A el valor $08) 00:818B:85 17 STA $0017 = #$00 (Lo guarda en la dirección $0017) 00:818D:88 DEY (Disminuye Y) 00:818E:D0 FD BNE $818D (Salta si flag zero=0 a la dirección $818D) 00:8190:CA DEX (Disminuye X) 00:8191:D0 FA BNE $818D (Salta si flag zero=0 a la dirección $818D) 00:8193:C6 17 DEC $0017 = #$00 (Disminuye el valor que hay en la dirección $0017) 00:8195:D0 F6 BNE $818D (Salta si flag zero=0 a la dirección $818D) 00:8197:60 RTS (Regresa de la subrutina) Desensamblado (Lectura del joystick. Lee los 8 botones: A, B, Select, Start, Arriba, Abajo, Izquierda, Derecha) (Bytes 1288-1321): 00:84F7:A9 01 LDA #$01 (Carga en A el valor $01) 00:84F9:8D 16 40 STA $4016 = #$FF (Lo guarda. Resetea el joypad strobe) 00:84FC:A9 00 LDA #$00 (Carga en A el valor $00) 00:84FE:8D 16 40 STA $4016 = #$FF (Lo guarda. Borra el joypad strobe) 00:8501:A2 08 LDX #$08 (Carga en X el valor $08 para leer los 8 botones) 00:8503:AD 16 40 LDA $4016 = #$FF (Carga en A lo que hay en $4016 para leer el primer botón) 00:8506:29 03 AND #$03 (Operación A And $03)
00:8508:C9 01 CMP #$01 (Compara ese valor con $01) 00:850A:66 94 ROR $0094 = #$00 (Rota los bits del valor que hay en la dirección $0094 a la derecha) 00:850C:AD 17 40 LDA $4017 = #$FF (Carga en A lo que hay en la dirección $4017) 00:850F:29 03 AND #$03 (Operación A And $03) 00:8511:C9 01 CMP #$01 (Compara ese valor con $01) 00:8513:66 95 ROR $0095 = #$00 (Rota los bits del valor que hay en la dirección $0095 a la derecha) 00:8515:CA DEX (Disminuir X que es el contador) 00:8516:D0 EB BNE $8503 (Si X no es igual a cero salta a $8503 para leer la pulsación de otro botón) 00:8518:60 RTS (Regresa de la subrutina) Desensamblado (Bytes 1420-1457): 00:857B:A9 3F LDA #$3F (Carga en A el valor $3F) 00:857D:8D 06 20 STA $2006 = #$A0 (Lo guarda) 00:8580:A9 00 LDA #$00 (Carga en A el valor $00) 00:8582:8D 06 20 STA $2006 = #$A0 (Lo guarda con lo que la dirección es $3F00) 00:8585:B9 00 03 LDA $0300,Y @ $0315 = #$00 (Carga en A lo que hay en la dirección $0300+Y) 00:8588:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:858B:C8 INY (Incrementa Y) 00:858C:C0 20 CPY #$20 (Compara Y con $20=32 decimal=nº colores de la paleta) 00:858E:90 F5 BCC $8585 (Si no es igual salta a la dirección $8585 para leer otro byte) 00:8590:A9 3F LDA #$3F (Carga en A el valor $3F) 00:8592:8D 06 20 STA $2006 = #$A0 (Lo guarda) 00:8595:A9 00 LDA #$00 (Carga en A el valor $00) 00:8597:8D 06 20 STA $2006 = #$A0 (Lo guarda con lo que la dirección es $3F00) 00:859A:8D 06 20 STA $2006 = #$A0 (Guarda el valor de A=0) 00:859D:8D 06 20 STA $2006 = #$A0 (Guarda el valor de A=0) 00:85A0:60 RTS (Regresa de la subrutina) Desensamblado (Bytes 1840-1854) (Poner scroll del fondo: horizontal y vertical): 00:871F:AD 02 20 LDA $2002 = #$00 (Carga en A lo que hay en la dirección $2002. Lee PPU) 00:8722:A5 99 LDA $0099 = #$00 (Carga en A lo que hay en la dirección $0099) 00:8724:8D 05 20 STA $2005 = #$00 (Lo guarda en $2005. Registro del scroll del fondo. Primer byte: Scroll horizontal) 00:8727:A6 9A LDX $009A = #$F0 (Carga en X el valor que hay en la dirección $009A) 00:8729:CA DEX (Disminuye X) 00:872A:8E 05 20 STX $2005 = #$00 (Lo guarda en $2005. Registro del scroll del fondo. Primer byte: Scroll vertical) 00:872D:60 RTS (Regresa de la subrutina)
Desensamblado (Bytes 1863-1875) (Transferencia DMA sprites. Se utiliza para pasar datos de la CPU a PPU. RAM desde $0200-$02FF): 00:8736:A9 00 LDA #$00 (Carga en A el valor $00) 00:8738:8D 03 20 STA $2003 = #$00 (Lo guarda) 00:873B:A9 02 LDA #$02 (Carga en A el valor $02) 00:873D:8D 14 40 STA $4014 = #$FF (Lo guarda con lo que la dirección para DMA transfer es la $0200 y empieza la transferencia) 00:8740:20 11 87 JSR $8711 (Salta a la subrutina que hay en la dirección $8711) Desensamblado (Bytes 2014-2022): 00:87CD:C6 2A DEC $002A = #$6E (Disminuye lo que hay en la dirección $002A: disminuye el tiempo) 00:87CF:10 02 BPL $87D3 (Salta si flag negativo es cero a la dirección $87D3) 00:87D1:E6 2A INC $002A = #$6E (Incrementa lo que hay en la dirección $002A: incrementa el tiempo) 00:87D3:20 19 A0 JSR $A019 (Salta a la subrutina que hay en la dirección $A019) Desensamblado (Poner varios valores) (Bytes 2174-2204): 00:886D:A2 0F LDX #$0F (Carga en X el valor $0F=15 decimal=nº de bytes a leer y escribir) 00:886F:BD 7C 88 LDA $887C,X @ $887D = #$02 (Carga en A lo que hay en la dirección $887C+X=$888B) 00:8872:95 20 STA $20,X @ $0021 = #$02 (Lo guarda en la dirección $20+X=$2F) 00:8874:95 30 STA $30,X @ $0031 = #$08 (Lo guarda en la dirección $30+X=$3F) 00:8876:95 40 STA $40,X @ $0041 = #$FF (Lo guarda en la dirección $40+X=$4F) 00:8878:CA DEX (Disminuye X) 00:8879:10 F4 BPL $886F (Salta a la dirección $886F si X no es cero para leer y escribir otro byte) 00:887B:60 RTS (Regresa de la subrutina) 00:887C:00 00:887D:02 (Nº de vidas al inicio del juego=$02) 00:887E:00 00:887F:00 00:8880:00 00:8881:00 00:8882:00 00:8883:00 00:8884:FF 00:8885:FF 00:8886:00 00:8887:00 00:8888:00 00:8889:00 00:888A:00
00:888B:00 Desensamblado (Bytes 6184-6214): 00:9817:A5 2A LDA $002A = #$78 (Carga en A lo que hay en la dirección $002A=tiempo) 00:9819:C9 64 CMP #$64 (Compara con $64=100) 00:981B:D0 18 BNE $9835 (Salta si flag zero=0 a la dirección $9835) 00:981D:A9 80 LDA #$80 (Carga en A el valor $80) 00:981F:8D E5 04 STA $04E5 = #$00 (Lo guarda en la dirección $04E5) 00:9822:A5 6C LDA $006C = #$00 (Carga en A lo que hay en la dirección $006C) 00:9824:29 E0 AND #$E0 (Operación A And $E0) 00:9826:D0 02 BNE $982A (Salta si flag zero=0 a la dirección $982A) 00:9828:A9 18 LDA #$18 (Carga en A el valor $18) 00:982A:8D E7 04 STA $04E7 = #$00 (Guarda el valor de A en al dirección $04E7) 00:982D:A9 00 LDA #$00 (Carga en A el valor $00) 00:982F:8D E8 04 STA $04E8 = #$00 (Guarda el valor de A en la dirección $04E8) 00:9832:8D E9 04 STA $04E9 = #$00 (Guarda el valor de A en la dirección $04E9) 00:9835:60 RTS (Regresa de la subrutina) Desensamblado (Bytes 7421-7485) (Dibujar símbolos japoneses de la pantalla de título): 00:9CEC:A2 00 LDX #$00 (Carga en X el valor $00) 00:9CEE:A9 09 LDA #$09 (Carga en A el valor $09=+1=10=nº de lineas que componen el rotulo de los simbolos japoneses) 00:9CF0:85 13 STA $0013 = #$09 (Lo guarda en la direccion $0013) 00:9CF2:A9 20 LDA #$20 (Carga en A el valor $20) 00:9CF4:85 12 STA $0012 = #$20 (Lo guarda en la direccion $0012) 00:9CF6:A9 C6 LDA #$C6 (Carga en A el valor $C6) 00:9CF8:85 11 STA $0011 = #$C6 (Lo guarda en la direccion $0011) 00:9CFA:AD 02 20 LDA $2002 = #$1F (Carga en A lo que hay en la direccion $2002) 00:9CFD:A5 12 LDA $0012 = #$20 (Carga en A lo que hay en la direccion $0012. A=$20) 00:9CFF:8D 06 20 STA $2006 = #$D5 (Lo guarda) 00:9D02:A5 11 LDA $0011 = #$C6 (Carga en A lo que hya en la direccion $0011. A=$C6) 00:9D04:8D 06 20 STA $2006 = #$D5 (Lo guarda con lo que la direccion es $20C6 que es donde se ponen los simbolos japoneses de la pantalla de titulo) 00:9D07:A0 00 LDY #$00 (Carga en Y el valor $00) 00:9D09:BD 06 AE LDA $AE06,X @ $AE15 = #$FF (Carga en A lo que hay en la direccion $AE06+X=$AE06) 00:9D0C:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9D0F:E8 INX (Incrementa X para leer otro byte. X=X+1) 00:9D10:C8 INY (Incrementa Y que es un contador=nº de tiles a escribir)
00:9D11:C0 15 CPY #$15 (Compara Y con $15=21 que es el nº de tiles a escribir) 00:9D13:90 F4 BCC $9D09 (Si no es igual salta a la direcci'on $9D09 para leer otro byte) 00:9D15:C6 13 DEC $0013 = #$09 (Disminuye lo que hay en la direccion $0013 00:9D17:10 01 BPL $9D1A (Salta si el flag negativo es cero a la direccion $9D1A cuando ha dibujado las nueve lineas) 00:9D19:60 RTS (Regresa de la subrutina) 00:9D1A:A5 11 LDA $0011 = #$C6 (Carga en A lo que hay en la direccion $0011) 00:9D1C:18 CLC (Pone el flag de carry a cero) 00:9D1D:69 20 ADC #$20 (Añade a A $20 para dibujar la siguiente línea que compone el rótulo de los símbolos japoneses) 00:9D1F:85 11 STA $0011 = #$C6 (Guarda el nuevo valor en la dirección $0011) 00:9D21:A5 12 LDA $0012 = #$20 (Carga en A lo que hay en la dirección $0012. A=$20) 00:9D23:69 00 ADC #$00 (Añade $00) 00:9D25:85 12 STA $0012 = #$20 (Guarda el valor de A en la dirección $0012) 00:9D27:4C FA 9C JMP $9CFA (Salta a la dirección $9CFA para dibujar otra línea) 00:9D2A:AD 02 20 LDA $2002 = #$1F (Carga en A lo que hay en la dirección $2002) Desensamblado (Bytes 7486-7512): 00:9D2D:A2 00 LDX #$00 (Carga en X el valor $00. X=contador) 00:9D2F:A9 20 LDA #$20 (Carga en A el valor $20) 00:9D31:8D 06 20 STA $2006 = #$64 (Lo guarda) 00:9D34:A9 64 LDA #$64 (Carga en A el valor $64) 00:9D36:8D 06 20 STA $2006 = #$64 (Lo guarda con lo que la dirección es $2064=PPU Address donde pone "1UP...") 00:9D39:BD 79 9D LDA $9D79,X @ $9D79 = #$01 (Carga en A lo que hay en la dirección $9D79+X) 00:9D3C:20 D6 9D JSR $9DD6 (Salta a la subrutina que hay en la dirección $9DD6) 00:9D3F:8D 07 20 STA $2007 = #$00 (Guarda el valor que hay en A) 00:9D42:E8 INX (Incrementa X para leer otro byte. X=X+1) 00:9D43:E0 17 CPX #$17 (Compara X con $17=23 decimal=nº de tiles a escribir) 00:9D45:90 F2 BCC $9D39 (Si no es igual salta a la dirección $9D39 para leer otro byte) 00:9D47:60 RTS (Regresa de la subrutina) 00:9D48:A9 23 LDA #$23 (Carga en A el valor $23) 00:9D4A:8D 06 20 STA $2006 = #$29 (Lo guarda) 00:9D4D:A9 29 LDA #$29 (Carga en A el valor $29) 00:9D4F:8D 06 20 STA $2006 = #$29 (Lo guarda con lo que la dirección es $2329 para poner el texto "(C) 1985 JALECO") 00:9D52:BD 79 9D LDA $9D79,X @ $9D90 = #$24 (Carga en A lo que hay en la dirección $9D79+X=$9D90) 00:9D55:20 D6 9D JSR $9DD6 (Salta a la subrutina que hay en la dirección $9DD6) 00:9D58:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9D5B:E8 INX (Incrementa X. X=X+1) 00:9D5C:E0 25 CPX #$25 (Compara X con $25=37 decimal)
00:9D5E:90 F2 BCC $9D52 (Si no es igual salta a la dirección $9D52 para leer otro byte) 00:9D60:A9 23 LDA #$23 (Carga en A el valor $23) 00:9D62:8D 06 20 STA $2006 = #$29 (Lo guarda) 00:9D65:A9 68 LDA #$68 (Carga en A el valor $68) 00:9D67:8D 06 20 STA $2006 = #$29 (Lo guarda con lo que la dirección es $2368 que es donde pone el texto "(C)1985 Licensed..") 00:9D6A:BD 79 9D LDA $9D79,X @ $9D90 = #$24 (Carga en A lo que hay en la dirección $9D79+X=$7D9E) 00:9D6D:20 D6 9D JSR $9DD6 (Salta a la subrutina que hay en la dirección $9DD6) 00:9D70:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9D73:E8 INX (Incrementa X. X=X+1) 00:9D74:E0 35 CPX #$35 (Compara X con $35=53) 00:9D76:90 F2 BCC $9D6A (Si es igual salta a la dirección $9D6A para leer otro byte) 00:9D78:60 RTS (Regresa de la subrutina)... (Bytes 7562-7584) 00:9D79:01 1E 19 30 30 30 30 30 11 12 30 1C 0C 18 1B 0E 30 30 30 30 02 1E 19 (Suma a estos valores 90h para poner el texto correspondiente) 01 1E 19 30 30 30 30 30 11 12 30 1C 0C 18 1B 0E 30 30 30 30 02 1E 19 --> Texto "1UP HI-SCORE 2UP" (Bytes 7585-7598) 00:9D90:24 30 01 09 08 05 30 30 13 0A 15 0E 0C 18 (Texto "(C) 1985 JALECO") (Bytes 7599-7614) 00:9D9E:27 28 29 2A 2B 2C 2D 2E 2F 67 68 69 6A 6B 6C 6D (Texto "(C)1985 Licensed by UPL Co Ltd.") ------------ 00:9DAE:A9 00 LDA #$00 (Carga en A el valor $00) 00:9DB0:8D 01 20 STA $2001 = #$0A (Lo guarda con lo que desactiva el rendering) 00:9DB3:A9 23 LDA #$23 (Carga en A el valor $23) 00:9DB5:8D 06 20 STA $2006 = #$A0 (Lo guarda) 00:9DB8:A9 C0 LDA #$C0 (Carga en A el valor $C0) 00:9DBA:8D 06 20 STA $2006 = #$A0 (Lo guarda con lo que la dirección es $23C0) 00:9DBD:A2 00 LDX #$00 (Carga en X el valor $00) 00:9DBF:BD AC 9C LDA $9CAC,X @ $9CC3 = #$FF (Carga en A lo que hay en la dirección $9CAC+X=$9CAC) 00:9DC2:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9DC5:E8 INX (Incrementa X) 00:9DC6:E0 40 CPX #$40 (Compara X con $40=64 para poner 64 tiles) 00:9DC8:90 F5 BCC $9DBF (Si no es igual salta a la dirección $9DBF para leer otro byte) 00:9DCA:A2 1F LDX #$1F (Carga en X el valor $1F) 00:9DCC:BD E1 9D LDA $9DE1,X @ $9DF8 = #$00 (Carga en A lo que hay en la dirección $9DE1+X=$9E00) 00:9DCF:9D 00 03 STA $0300,X @ $0317 = #$00 (Lo guarda en la dirección $0300+X=$031F) 00:9DD2:CA DEX (Disminuye X)
00:9DD3:10 F7 BPL $9DCC (Si no es igual a cero salta a la direccion $9DCC para leer otro byte) 00:9DD5:60 RTS (Regresa de la subrutina) (Bytes 7655-7665) 00:9DD6:C9 30 CMP #$30 (Compara el valor de A con $30 que es el tile del espacio) 00:9DD8:F0 04 BEQ $9DDE (Si es igual salta a la dirección $9DDE para poner el tile $FF: espacio) 00:9DDA:18 CLC (Pone el carry a 0) 00:9DDB:69 90 ADC #$90 (Añade $90 al valor que hay en la dirección $9EA7+X) 00:9DDD:60 RTS (Regresa de la subrutina) 00:9DDE:A9 FF LDA #$FF (Carga en A el valor $FF=tile espacio) 00:9DE0:60 RTS (Regresa de la subrutina)... (Bytes 7666-7697) 00:9DE1:0F 38 18 28 0F 12 30 00 0F 20 16 12 0F 30 2B 1B 0F 30 16 0D 0F 00 00 00 0F 00 00 00 0F 00 00 00 (Paleta) Desensamblado (Bytes 7698-7795): 00:9E01:A0 0F LDY #$0F (Carga en Y el valor $0F=nº de tiles de color azul=15) 00:9E03:AD 02 20 LDA $2002 = #$08 00:9E06:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E08:8D 06 20 STA $2006 = #$28 (Lo guarda) 00:9E0B:A9 28 LDA #$28 (Carga en A el valor $28) 00:9E0D:8D 06 20 STA $2006 = #$28 (Lo guarda con lo que la dirección es $2228 que es la parte superior del cuadro que encierra "1 PLAYER..") 00:9E10:A2 01 LDX #$01 (Carga en X el valor $01=tile que representa un cuadrado de color azul) 00:9E12:8E 07 20 STX $2007 = #$00 (Lo guarda) 00:9E15:88 DEY (Disminuye Y. Y=Y-1) 00:9E16:10 FA BPL $9E12 (Si no es igual a cero salta a la dirección $9E12 para poner otro cuadrado azul) 00:9E18:A0 0F LDY #$0F (Carga en Y el valor $0F=nº de tiles de color azul=15) 00:9E1A:AD 02 20 LDA $2002 = #$08 00:9E1D:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E1F:8D 06 20 STA $2006 = #$28 (Lo guarda) 00:9E22:A9 E8 LDA #$E8 (Carga en A el valor $E8) 00:9E24:8D 06 20 STA $2006 = #$28 (Lo guarda con lo que la dirección es $22E8 que es la parte inferior del cuadrado que encierra "1 PLAYER..") 00:9E27:8E 07 20 STX $2007 = #$00 (Guarda el valor X=$01=tile que representa un cuadrado de color azul) 00:9E2A:88 DEY (Disminuye Y) 00:9E2B:10 FA BPL $9E27 (Si no es igual a cero salta a la dirección $9E27 para poner otro cuadrado azul)
00:9E2D:A5 97 LDA $0097 = #$00 00:9E2F:09 04 ORA #$04 00:9E31:8D 00 20 STA $2000 = #$00 00:9E34:A0 04 LDY #$04 (Carga en Y el valor $04 ya que hay que poner 4 cuadrados azules en horizontal y 4 en vertical) 00:9E36:AD 02 20 LDA $2002 = #$08 00:9E39:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E3B:8D 06 20 STA $2006 = #$28 (Lo guarda) 00:9E3E:A9 48 LDA #$48 (Carga en A el valor $48) 00:9E40:8D 06 20 STA $2006 = #$28 (Lo guarda con lo que la dirección es $2248 para poner el resto del recuadro) 00:9E43:8E 07 20 STX $2007 = #$00 (Guarda el valor que hay en X) 00:9E46:88 DEY (Disminuye Y) 00:9E47:10 FA BPL $9E43 (Si no es igual salta a la dirección $9E43 para poner otro cuadrado de color azul) 00:9E49:AD 02 20 LDA $2002 = #$08 00:9E4C:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E4E:8D 06 20 STA $2006 = #$28 (Lo guarda) 00:9E51:A9 57 LDA #$57 (Carga en A el valor $57) 00:9E53:8D 06 20 STA $2006 = #$28 (Lo guarda con lo que la dirección es $2257 para poner el resto del recuadro) 00:9E56:A0 04 LDY #$04 (Carga en Y el valor $04 para poner los 4 cuadrados en vertical) 00:9E58:8E 07 20 STX $2007 = #$00 (Guarda en valor X=$01=cuadrado de color azul) 00:9E5B:88 DEY (Disminuye Y) 00:9E5C:10 FA BPL $9E58 (Si no es igual a cero salta a la dirección $9E58 para poner otro cuadrado) 00:9E5E:A5 97 LDA $0097 = #$00 (Carga en A lo que hay en la dirección $0097) 00:9E60:8D 00 20 STA $2000 = #$00 (Lo guarda en $2000) Desensamblado (Bytes 7796-7871) 00:9E63:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E65:8D 06 20 STA $2006 = #$6D (Lo guarda) 00:9E68:A9 6D LDA #$6D (Carga en A el valor $6D) 00:9E6A:8D 06 20 STA $2006 = #$6D (Lo guarda con lo que la dirección es $226D=PPU Address) 00:9E6D:A9 91 LDA #$91 (Carga en A el valor $91=Tile "1" del texto "1 PLAYER" del menú) 00:9E6F:8D 07 20 STA $2007 = #$00 (Lo guarda. Pone el tile $91 en la dirección $226D) 00:9E72:A2 00 LDX #$00 (Carga en X el valor $00. X es un contador) 00:9E74:BD A7 9E LDA $9EA7,X @ $9EA8 = #$19 (Carga en A lo que hay en la dirección $9EA7+X) 00:9E77:20 D6 9D JSR $9DD6 (Salta a la subrutina que hay en la dirección $9DD6) 00:9E7A:8D 07 20 STA $2007 = #$00 (Guarda el valor) 00:9E7D:E8 INX (Incrementa X. X=X+1) 00:9E7E:E0 07 CPX #$07 (Compara X con $07=nº de tiles a poner)
00:9E80:90 F2 BCC $9E74 (Si no es igual salta a $9E74 para leer otro byte) 00:9E82:A9 22 LDA #$22 (Carga en A el valor $22) 00:9E84:8D 06 20 STA $2006 = #$6D (Lo guarda) 00:9E87:A9 AD LDA #$AD (Pone en A el valor $AD) 00:9E89:8D 06 20 STA $2006 = #$6D (Lo guarda con lo que la dirección es $22AD donde se pone el texto "2 PLAYERS) 00:9E8C:A9 92 LDA #$92 (Pone en A el valor $92=tile "2" del texto "2 PLAYERS" del menú) 00:9E8E:8D 07 20 STA $2007 = #$00 (Lo guarda. Pone el tile $92 en la dirección $22AD) 00:9E91:A2 00 LDX #$00 (Carga en X el valor $00. X=contador) 00:9E93:BD A7 9E LDA $9EA7,X @ $9EA8 = #$19 (Carga en A lo que hay en la dirección $9EA7+X) 00:9E96:20 D6 9D JSR $9DD6 (Salta a la subrutina que hay en la dirección $9DD6) 00:9E99:8D 07 20 STA $2007 = #$00 (Guarda el valor que hay en A) 00:9E9C:E8 INX (Incrementa X) 00:9E9D:E0 07 CPX #$07 (Compara X con $07=nº de tiles a poner) 00:9E9F:90 F2 BCC $9E93 (Si no es igual salta a la dirección $9E93 para leer otro byte) 00:9EA1:A9 AC LDA #$AC (Carga en A el valor $AC=tile "S" de "2 PLAYERS") 00:9EA3:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9EA6:60 RTS (Regresa de la subrutina) ------------------------------------ 00:9EA7:30 19 15 0A 22 0E 1B FF (Suma a estos valores 90h para poner el texto correspondiente) 19 15 0A 22 0E 1B --> A9 A5 9A B2 9E AB (Texto "PLAYER") Desensamblado (Bytes 7883-7895): 00:9EBA:A9 20 LDA #$20 (Carga en A el valor $20) 00:9EBC:8D 06 20 STA $2006 = #$87 (Lo guarda) 00:9EBF:A9 83 LDA #$83 (Carga en A el valor $83) 00:9EC1:8D 06 20 STA $2006 = #$87 (Lo guarda con lo que la dirección es $2083=PPU Address) 00:9EC4:20 F4 9E JSR $9EF4 (Salta a la subrutina que hay en la dirección $9EF4) ------------------------------- 00:9EC7:A5 64 LDA $0064 = #$D0 (Carga en A lo que hay en la dirección $0064) 00:9EC9:85 11 STA $0011 = #$B0 (Lo guarda en la dirección $0011) 00:9ECB:A5 65 LDA $0065 = #$07 (Carga en a lo que hay en la dirección $0065) 00:9ECD:85 12 STA $0012 = #$00 (Lo guarda en la dirección $0012) 00:9ECF:20 02 9F JSR $9F02 (Salta a la subrutina que hay en la dirección $9F02) ------------------------------- 00:9ED2:A9 20 LDA #$20 (Carga en A el valor $20) 00:9ED4:8D 06 20 STA $2006 = #$87 (Lo guarda) 00:9ED7:A9 8D LDA #$8D (Carga en A el valor $8D)
00:9ED9:8D 06 20 STA $2006 = #$87 (Lo guarda con lo que la dirección es $208D) 00:9EDC:20 F4 9E JSR $9EF4 (Salta a la subrutina que hay en la dirección $9EF4) 00:9EDF:A5 62 LDA $0062 = #$00 00:9EE1:85 11 STA $0011 = #$B0 00:9EE3:A5 63 LDA $0063 = #$00 00:9EE5:85 12 STA $0012 = #$00 00:9EE7:20 02 9F JSR $9F02 --------------------------- 00:9EEA:A9 20 LDA #$20 (Carga en A el valor $20) 00:9EEC:8D 06 20 STA $2006 = #$87 (Lo guarda) 00:9EEF:A9 97 LDA #$97 (Carga en A el valor $97) 00:9EF1:8D 06 20 STA $2006 = #$87 (Lo guarda con lo que la dirección es $2097 que es lo que hay debajo del texto "2UP" de la pantalla de título) ---------------------------------- (Bytes 7941-7954): 00:9EF4:A2 00 LDX #$00 (Carga en X el valor $00. X=contador) 00:9EF6:BD 20 03 LDA $0320,X @ $0324 = #$90 (Carga en A el valor $0320+X) 00:9EF9:8D 07 20 STA $2007 = #$00 (Lo guarda) 00:9EFC:E8 INX (Incrementa X. X=X+1) 00:9EFD:E0 06 CPX #$06 (Compara X con $06=nº de tiles a poner en pantalla) 00:9EFF:90 F5 BCC $9EF6 (Si no es igual salta a la dirección $9EF6) 00:9F01:60 RTS (Regresa de la subrutina)... Desensamblado (Disminuir ciertos valores) (Bytes 8409-8448): 00:A0C8:A2 0F LDX #$0F 00:A0CA:B5 20 LDA $20,X @ $0021 = #$01 00:A0CC:95 30 STA $30,X @ $0031 = #$02 00:A0CE:CA DEX 00:A0CF:10 F9 BPL $A0CA 00:A0D1:60 RTS 00:A0D2:A2 0F LDX #$0F 00:A0D4:B5 20 LDA $20,X @ $0021 = #$01 00:A0D6:95 40 STA $40,X @ $0041 = #$FF 00:A0D8:CA DEX 00:A0D9:10 F9 BPL $A0D4 00:A0DB:60 RTS
00:A0DC:A2 0F LDX #$0F 00:A0DE:B5 30 LDA $30,X @ $0031 = #$02 00:A0E0:95 20 STA $20,X @ $0021 = #$01 00:A0E2:CA DEX 00:A0E3:10 F9 BPL $A0DE 00:A0E5:60 RTS 00:A0E6:A2 0F LDX #$0F 00:A0E8:B5 40 LDA $40,X @ $0041 = #$FF 00:A0EA:95 20 STA $20,X @ $0021 = #$01 00:A0EC:CA DEX 00:A0ED:10 F9 BPL $A0E8 00:A0EF:60 RTS Desensamblado (Bytes 11799-12008) (210 bytes para dibujar los símbolos japoneses de la pantalla de título): 10 líneas de 21 tiles cada una: Empieza en la dirección 00:AE06: D0C6C6C6C6C6C6D1FFFFFFFFD0D1FFFFFFFFCAD1FF D2C7C7FFFFC7FFFFC8FFFFC7C8C9C7FFFFCAFFCAFF FFD4C2C8FFCFFFFFC8FFD0FFFFC4D5D1C9FFCAFFFF FFC300C2CAC9FFFFC8FFD2FFC400C5D3C9FFCBFFFF FFCAC300C2CAFFCAFFD0C6CD00C5C6C6D1CBFFCBFF D0D1CAC3D7D2CAFFFFD2C400CCC7C7C7D3FFCED1C8 C8C9D0D1FFFFD0D1FFC400C5FFFFFFD1FFCAFFCAFF C8C9FFD4C2D4C2FFC8D6C5FFD4D5FFC9C9FFD0D1FF C8C9FFC3D7C3D7FFC8C9FFC6D6D7C6C9C9FFFFFFC8 D2D3D2C7C7C7C7D3FFFFD2C7C7C7C7D3FFD2D3D2C8 :0320:FF FF FF FF 90 90 (Texto " 00" que hay en la pantalla de título debajo del texto "1UP...") Desensamblado (Sonido): 00:A650:A0 03 LDY #$03 00:A652:A9 00 LDA #$00 00:A654:8D 15 40 STA $4015 = #$FF 00:A657:A9 00 LDA #$00 00:A659:99 6F 00 STA $006F,Y @ $016E = #$FF 00:A65C:99 73 00 STA $0073,Y @ $0172 = #$00 00:A65F:99 77 00 STA $0077,Y @ $0176 = #$FF
00:A662:A9 FF LDA #$FF 00:A664:99 7F 00 STA $007F,Y @ $017E = #$FF 00:A667:99 8B 00 STA $008B,Y @ $018A = #$00 00:A66A:88 DEY 00:A66B:10 EA BPL $A657 00:A66D:60 RTS Desensamblado: 00:A74F:A4 93 LDY $0093 = #$00 (Carga en Y lo que hay en la dirección $0093) 00:A751:99 00 40 STA $4000,Y @ $4000 = #$FF (Lo guarda en la dirección $4000+Y) 00:A754:95 8F STA $8F,X @ $008F = #$90 (Lo guarda en la9 dirección $8F+X 00:A756:60 RTS (Regresa de la subrutina) Desensamblado: 00:A791:A5 11 LDA $0011 = #$F0 00:A793:A4 93 LDY $0093 = #$0C (Carga en Y lo que hay en la dirección $0093) 00:A795:99 02 40 STA $4002,Y @ $4101 = #$FF (Guarda en la dirección $4002+Y lo que hay en A) 00:A798:A5 12 LDA $0012 = #$00 (Carga en A lo que hay en la dirección $0012) 00:A79A:99 03 40 STA $4003,Y @ $4102 = #$FF (Guarda el valor de A en la dirección $4003+Y) 00:A79D:60 RTS (Regresa de la subrutina) Desensamblado: 00:A803:AD 15 40 LDA $4015 = #$FF (Lee el estado del registro papu del sonido) 00:A806:1D 17 A8 ORA $A817,X @ $A818 = #$02 (Operación A OR lo que hay en la dirección $A817+X) 00:A809:8D 15 40 STA $4015 = #$FF (Guarda ese valor=control de los canales de audio) 00:A80C:60 RTS (Regresa de la subrutina) 00:A80D:AD 15 40 LDA $4015 = #$FF (Lee el estado del registro papu del sonido) 00:A810:3D 1B A8 AND $A81B,X @ $A81C = #$0D (Operación A And lo que hay en la dirección $A81B+X) 00:A813:8D 15 40 STA $4015 = #$FF (Guarda ese valor=control de los canales de audio) 00:A816:60 RTS (Regresa de la subrutina)