Básicamente metí el código siguiente en la etiqueta micont del firmware, con el objetivo de que se copiara un código sencillo en C000 en la página 13:
Código: Seleccionar todo
wreg master_conf, 1
wreg master_mapper, 13
jr startX2
nmicd nop
nop
nop
xor a
out (254),a
retn
startX2 ld hl, alto nmicd
ld de, $c000
ld bc,startX2-nmicd
ldir
wreg master_conf,0
Código: Seleccionar todo
nop
nop
nop
xor a
out (254),a
retn
Haciendo debug en ZesarUX vi que cuando se pulsa la NMI efectivamente se pagina la ROM boot, y poniendo un breakpoint en 66h veo que hay un JP C003h. El caso es que tras ejecutar esa instrucción no acabo en C003h sino en 2200h. Tras algunas pruebas llegamos a la conclusión de que el paginado de DivMMC interfiere. Si deshabilito totalmente DivMMC va a c003 como debe ser.
Mi idea era hacer un pequeño software pokeador que se activara con la NMI Especial de manera que el usuario pudiera cargar con el menu NMI de DivMMC y pokear con la NMI 2, pero me temo que así no se puede, tienes que elegir una u otra NMI al parecer.
¿Alguna idea de como poder hacer eso que quiero usando la NMI especial?