Guest User

Zelda 1 MMC1 to MMC3 Disassembly

a guest
Aug 8th, 2020
50
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×