Guest User

Zelda 1 MMC1 to MMC3 Disassembly

a guest
Aug 8th, 2020
40
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //**********************************************
  2. // MMC1 to MMC3 hack for Zelda 1 (by Infidelity)
  3. //  Disassembled by ShadowOne333
  4. //**********************************************
  5.  
  6. //------------------------------------
  7. //  iNES Header
  8. //------------------------------------
  9.  
  10. // 0x00006 - 42
  11.     db $4E,$45,$53,$1A  // Header (NES $1A)
  12.     db 8            // 8 x 16k PRG banks
  13.     db 0            // 0 x 8k CHR banks
  14.     db %01000010       
  15.     //     ^--- Mirroring: Vertical
  16.     //    ^--- SRAM: Yes
  17.     //   ^--- 512k Trainer: Not used
  18.     //  ^--- 4 Screen VRAM: Not used
  19.     //  ^^^^--- Mapper: 3
  20.     db %00000000        // RomType: NES
  21.     db $00,$00,$00,$00  // iNES Tail
  22.     db $00,$00,$00,$00
  23.  
  24. //------------------------------------
  25. //  ROM Start
  26. //------------------------------------
  27.  
  28. bank 0;
  29. org $BF76   // 0x03F86
  30.     lda.b #$80
  31.     sta.w $A001
  32.     lda.b #$C0
  33.     jsr $BF98
  34.     lda.b #$00
  35.     sta.w $8001
  36.     jmp $BF90
  37.  
  38.     fill $08,$00
  39.  
  40.     lda.b #$07
  41.     jsr $FFAC
  42.     jmp $FFCD
  43.     sta.w $8000
  44.     rts
  45.  
  46. org $BFAC   // 0x03FBC
  47.     asl
  48.     pha
  49.     lda.b #$86
  50.     sta.w $8000
  51.     pla
  52.     sta.w $8001
  53.     ora.b #$01
  54.     pha
  55.     lda.b #$87
  56.     sta.w $8000
  57.     pla
  58.     sta.w $8001
  59.     rts
  60.     sta.w $0302
  61.     lda.b #$01
  62.     sta.w $A000
  63.     rts
  64.  
  65. org $BFDF   // 0x03FEF
  66.     sta.w $0302
  67.     lda.b #$01
  68.     sta.w $A000
  69.     rts
  70.  
  71. //------------------------------------
  72.  
  73. bank 1;
  74. org $AACB   // 0x06ADB
  75.     lda.b #$C0
  76.  
  77. org $BF76   // 0x07F86
  78.     lda.b #$80
  79.     sta.w $A001
  80.     lda.b #$C0
  81.     jsr $BF98
  82.     lda.b #$00
  83.     sta.w $8001
  84.     jmp $BF90
  85.  
  86.     fill $08,$00
  87.  
  88.     lda.b #$07
  89.     jsr $FFAC
  90.     jmp $FFCD
  91.     sta.w $8000
  92.     rts
  93.  
  94. org $BFAC   // 0x07FBC
  95.     asl
  96.     pha
  97.     lda.b #$86
  98.     sta.w $8000
  99.     pla
  100.     sta.w $8001
  101.     ora.b #$01
  102.     pha
  103.     lda.b #$87
  104.     sta.w $8000
  105.     pla
  106.     sta.w $8001
  107.     rts
  108.     sta.w $0302
  109.     lda.b #$01
  110.     sta.w $A000
  111.     rts
  112.  
  113. org $BFDF   // 0x07FEF
  114.     sta.w $0302
  115.     lda.b #$01
  116.     sta.w $A000
  117.     rts
  118.  
  119. //------------------------------------
  120.  
  121. bank 2;
  122. org $BF76   // 0x0BF86
  123.     lda.b #$80
  124.     sta.w $A001
  125.     lda.b #$C0
  126.     jsr $BF98
  127.     lda.b #$00
  128.     sta.w $8001
  129.     jmp $BF90
  130.  
  131.     fill $08,$00
  132.  
  133.     lda.b #$07
  134.     jsr $FFAC
  135.     jmp $FFCD
  136.     sta.w $8000
  137.     rts
  138.  
  139. org $BFAC   // 0x0BFBC
  140.     asl
  141.     pha
  142.     lda.b #$86
  143.     sta.w $8000
  144.     pla
  145.     sta.w $8001
  146.     ora.b #$01
  147.     pha
  148.     lda.b #$87
  149.     sta.w $8000
  150.     pla
  151.     sta.w $8001
  152.     rts
  153.     sta.w $0302
  154.     lda.b #$01
  155.     sta.w $A000
  156.     rts
  157.  
  158. org $BFDF   // 0x0BFEF
  159.     sta.w $0302
  160.     lda.b #$01
  161.     sta.w $A000
  162.     rts
  163.  
  164. //------------------------------------
  165.  
  166. bank 3;
  167. org $BF76   // 0x0FF86
  168.     lda.b #$80
  169.     sta.w $A001
  170.     lda.b #$C0
  171.     jsr $BF98
  172.     lda.b #$00
  173.     sta.w $8001
  174.     jmp $BF90
  175.  
  176.     fill $08,$00
  177.  
  178.     lda.b #$07
  179.     jsr $FFAC
  180.     jmp $FFCD
  181.     sta.w $8000
  182.     rts
  183.  
  184. org $BFAC   // 0x0FFBC
  185.     asl
  186.     pha
  187.     lda.b #$86
  188.     sta.w $8000
  189.     pla
  190.     sta.w $8001
  191.     ora.b #$01
  192.     pha
  193.     lda.b #$87
  194.     sta.w $8000
  195.     pla
  196.     sta.w $8001
  197.     rts
  198.     sta.w $0302
  199.     lda.b #$01
  200.     sta.w $A000
  201.     rts
  202.  
  203. org $BFDF   // 0x0FFEF
  204.     sta.w $0302
  205.     lda.b #$01
  206.     sta.w $A000
  207.     rts
  208.  
  209. //------------------------------------
  210.  
  211. bank 4;
  212. org $BF76   // 0x13F86
  213.     lda.b #$80
  214.     sta.w $A001
  215.     lda.b #$C0
  216.     jsr $BF98
  217.     lda.b #$00
  218.     sta.w $8001
  219.     jmp $BF90
  220.  
  221.     fill $08,$00
  222.  
  223.     lda.b #$07
  224.     jsr $FFAC
  225.     jmp $FFCD
  226.     sta.w $8000
  227.     rts
  228.  
  229. org $BFAC   // 0x13FBC
  230.     asl
  231.     pha
  232.     lda.b #$86
  233.     sta.w $8000
  234.     pla
  235.     sta.w $8001
  236.     ora.b #$01
  237.     pha
  238.     lda.b #$87
  239.     sta.w $8000
  240.     pla
  241.     sta.w $8001
  242.     rts
  243.     sta.w $0302
  244.     lda.b #$01
  245.     sta.w $A000
  246.     rts
  247.  
  248. org $BFDF   // 0x13FEF
  249.     sta.w $0302
  250.     lda.b #$01
  251.     sta.w $A000
  252.     rts
  253.  
  254. //------------------------------------
  255.  
  256. bank 5;
  257. org $BF76   // 0x17F86
  258.     lda.b #$80
  259.     sta.w $A001
  260.     lda.b #$C0
  261.     jsr $BF98
  262.     lda.b #$00
  263.     sta.w $8001
  264.     jmp $BF90
  265.  
  266.     fill $08,$00
  267.  
  268.     lda.b #$07
  269.     jsr $FFAC
  270.     jmp $FFCD
  271.     sta.w $8000
  272.     rts
  273.  
  274. org $BFAC   // 0x17FBC
  275.     asl
  276.     pha
  277.     lda.b #$86
  278.     sta.w $8000
  279.     pla
  280.     sta.w $8001
  281.     ora.b #$01
  282.     pha
  283.     lda.b #$87
  284.     sta.w $8000
  285.     pla
  286.     sta.w $8001
  287.     rts
  288.     sta.w $0302
  289.     lda.b #$01
  290.     sta.w $A000
  291.     rts
  292.  
  293. org $BFDF   // 0x17FEF
  294.     sta.w $0302
  295.     lda.b #$01
  296.     sta.w $A000
  297.     rts
  298.  
  299. //------------------------------------
  300.  
  301. bank 6;
  302. org $BF76   // 0x1BF86
  303.     lda.b #$80
  304.     sta.w $A001
  305.     lda.b #$C0
  306.     jsr $BF98
  307.     lda.b #$00
  308.     sta.w $8001
  309.     jmp $BF90
  310.  
  311.     fill $08,$00
  312.  
  313.     lda.b #$07
  314.     jsr $FFAC
  315.     jmp $FFCD
  316.     sta.w $8000
  317.     rts
  318.  
  319. org $BFAC   // 0x1BFBC
  320.     asl
  321.     pha
  322.     lda.b #$86
  323.     sta.w $8000
  324.     pla
  325.     sta.w $8001
  326.     ora.b #$01
  327.     pha
  328.     lda.b #$87
  329.     sta.w $8000
  330.     pla
  331.     sta.w $8001
  332.     rts
  333.     sta.w $0302
  334.     lda.b #$01
  335.     sta.w $A000
  336.     rts
  337.  
  338. org $BFDF   // 0x1BFEF
  339.     sta.w $0302
  340.     lda.b #$01
  341.     sta.w $A000
  342.     rts
  343.  
  344. //------------------------------------
  345.  
  346. bank 7;
  347. org $E621   // 0x1E631
  348.     jsr $FFC4
  349.  
  350. org $E9BD   // 0x1E9CD
  351.     lda.b #$00
  352.     sta.w $A000
  353.  
  354. org $E9CB   // 0x1E9DB
  355.     lda.b #$C0
  356.  
  357. org $EB70   // 0x1EB80
  358.     lda.b #$C0
  359.  
  360. org $EBB1   // 0x1EBC1
  361.     lda.b #$C0
  362.  
  363. org $FF76   // 0x1FF86
  364.     lda.b #$80
  365.     sta.w $A001
  366.     lda.b #$C0
  367.     jsr label1  // JSR $FF98
  368.     lda.b #$00
  369.     sta.w $8001
  370.     jmp label2  // JMP $FF90
  371.  
  372.     db $00,$00,$00,$02
  373.     db $04,$05,$06,$07
  374. label2: // FF90:
  375.     lda.b #$07
  376.     jsr $FFAC
  377.     jmp $FFCD
  378.  
  379. label1: // FF98:
  380.     sta.w $8000
  381.     rts
  382.  
  383. org $FFAC   // 0x1FFBC
  384. FFAC:
  385.     asl
  386.     pha
  387.     lda.b #$86
  388.     sta.w $8000
  389.     pla
  390.     sta.w $8001
  391.     ora.b #$01
  392.     pha
  393.     lda.b #$87
  394.     sta.w $8000
  395.     pla
  396.     sta.w $8001
  397.     rts
  398. FFC4:
  399.     sta.w $0302
  400.     lda.b #$01
  401.     sta.w $A000
  402.     rts
  403. FFCD:
  404.     ldx.b #$05
  405. label3: // $FFCF
  406.     stx.w $8000
  407.     lda.w $FF8A,x
  408.     sta.w $8001
  409.     dex
  410.     bpl label3  // BPL $F4
  411.     jmp $E440
  412.     db $FF
  413. // FFDF:
  414.     sta.w $0302
  415.     lda.b #$01
  416.     sta.w $A000
  417.     rts
  418.  
RAW Paste Data