Advertisement
Guest User

MagiKoopa Bug

a guest
Mar 18th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ; Fire Magi Koopa
  3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5. ; Uses first extra bit: YES
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7.  
  8.             !Tile =     $99
  9.  
  10.             print "INIT ",pc
  11.             RTL
  12.             LDA !7FAB9E,x
  13.             STA $00
  14.             TXY
  15.             LDX #$09
  16. CheckSprite:
  17.             CPX $15E9|!Base2
  18.             BEQ NextSprite
  19.             LDA !14C8,x
  20.             BEQ NextSprite
  21.             LDA !7FAB9E,x
  22.             CMP $00
  23.             BNE NextSprite
  24.             LDA #$00
  25.             STA !14C8,y
  26.             TYX
  27.             RTL
  28. NextSprite: DEX
  29.             BPL CheckSprite
  30.             STZ $18BF|!Base2
  31.             TYX
  32.             RTL
  33.  
  34.             print "MAIN ",pc
  35.             PHB
  36.             PHK
  37.             PLB
  38.             LDA !9E,x
  39.             PHA
  40.             LDA #$1F
  41.             STA !9E,x
  42.             JSR MainCode
  43.             PLA
  44.             STA !9E,x
  45.             LDX $15E9|!Base2
  46.             LDA !14C8,x
  47.             BEQ ReturnL
  48.             CMP #$05
  49.             BCS ReturnL
  50.             LDA !14C8,x
  51.             STA !1FD6,x
  52.             LDA #$08
  53.             STA !14C8,x
  54. ReturnL:    PLB
  55.             RTL
  56.  
  57. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  58.  
  59. MainCode:   LDA !1FD6,x
  60.             BEQ LabelFF
  61.             BMI SprWait
  62.             CMP #$02
  63.             BEQ SprKilled
  64.             CMP #$04
  65.             BEQ SprSpinJump
  66. LabelFF:        LDA #$01
  67.             STA !15D0,x
  68.             LDA !15A0,x
  69.             BEQ Label00
  70.             STZ !C2,x
  71. Label00:    LDA !C2,x
  72.             AND #$03
  73.             JSL $0086DF|!BankB
  74.  
  75. States:     dw State0,State1,State2,State3
  76.  
  77. SprWait:    LDA $14
  78.             AND #$03
  79.             BEQ Return8
  80.             DEC !1626,x
  81.             BNE Return8
  82.             STZ !1FD6,x
  83.             LDA #$7F
  84.             AND !15F6,x
  85.             STA !15F6,x
  86.             LDA #$7F
  87.             AND !1686,x
  88.             STA !1686,x
  89.             STZ !C2,x
  90. Return8:    RTS
  91.  
  92. SprKilled:  LDA !1686,x
  93.             ORA #$80
  94.             STA !1686,x
  95.             LDA $9D
  96.             BNE LabelA0
  97.             JSL $01802A|!BankB
  98. LabelA0:    LDA #$00
  99.             %SubOffScreen()
  100.             LDA !15F6,x
  101.             ORA #$80
  102.             STA !15F6,x
  103.             STZ !1602,x
  104.             JSL $019D5F|!BankB      ;SubSprGfx1
  105.             RTS
  106.  
  107. SprSpinJump:
  108.             LDA #$FF
  109.             STA !1626,x
  110.             STA !1FD6,x
  111.             RTS
  112.  
  113. State0:     LDA $18BF|!Base2
  114.             BEQ Label10
  115.             STZ !14C8,x
  116.             RTS
  117.  
  118. Label10:        LDA $9D
  119.             BNE Return0
  120.             LDY #$24
  121.             STY $40
  122.             LDA !1540,x
  123.             BNE Return0
  124.             JSL $01ACF9|!BankB
  125.             CMP #$D1
  126.             BCS Return0
  127.             ;CLC
  128.             ADC $1C
  129.             AND #$F0
  130.             STA !D8,x
  131.             LDA $1D
  132.             ADC #$00
  133.             STA !14D4,x
  134.             JSL $01ACF9|!BankB
  135.             CLC
  136.             ADC $1A
  137.             AND #$F0
  138.             STA !E4,x
  139.             LDA $1B
  140.             ADC #$00
  141.             STA !14E0,x
  142.             %SubHorzPos()
  143.             LDA $0E
  144.             CLC
  145.             ADC #$20
  146.             CMP #$40
  147.             BCC Return0
  148.             STZ !AA,x
  149.             LDA #$01
  150.             STA !B6,x
  151.             JSL $019138|!BankB
  152.             LDA !1588,x
  153.             AND #$04
  154.             BEQ Return0
  155.             LDA $1862|!Base2
  156.             BNE Return0
  157.             INC !C2,x
  158.             STZ !1570,x
  159.             JSR S_Label0
  160.             %SubHorzPos()
  161.             TYA
  162.             STA !157C,x
  163. Return0:    RTS
  164.  
  165. Table00:        db $04,$02,$00
  166. X_Offset:       db $10,$F8
  167.  
  168. State2:     STZ !15D0,x
  169.             JSL $01803A|!BankB
  170.             %SubHorzPos()
  171.             TYA
  172.             STA !157C,x
  173.             LDA !1540,x
  174.             BNE Label08
  175.             INC !C2,x
  176. S_Label0:       LDY #$34
  177.             STY $40
  178. Label08:        CMP #$40
  179.             BNE Label1F
  180.             PHA
  181.             LDA $9D
  182.             ORA !15A0,x
  183.             BNE Label11
  184.             JSR S_Label1
  185. Label11:    PLA
  186. Label1F:    LSR
  187.             LSR
  188.             LSR
  189.             LSR
  190.             LSR
  191.             LSR
  192.             TAY
  193.             PHY
  194.             LDA !1540,x
  195.             LSR
  196.             LSR
  197.             LSR
  198.             AND #$01
  199.             ORA Table00,y
  200.             STA !1602,x
  201.             JSL $019D5F|!BankB      ;SubSprGfx1
  202.             LDA !1602,x
  203.             SEC
  204.             SBC #$02
  205.             CMP #$02
  206.             BCC Label12
  207.             LSR
  208.             BCC Label12
  209.             LDA !15EA,x
  210.             TAX
  211.             INC $0301|!Base2,x
  212.             LDX $15E9|!Base2
  213. Label12:        PLY
  214.             CPY #$01
  215.             BNE Label13
  216.             JSR S_Label2
  217. Label13:        LDA !1602,x
  218.             CMP #$04
  219.             BCC Return1
  220.             LDY !157C,x
  221.             LDA !E4,x
  222.             CLC
  223.             ADC X_Offset,y
  224.             SEC
  225.             SBC $1A
  226.             LDY !15EA,x
  227.             STA $0308|!Base2,y
  228.             LDA !D8,x
  229.             SEC
  230.             SBC $1C
  231.             CLC
  232.             ADC #$10
  233.             STA $0309|!Base2,y
  234.             LDA !157C,x
  235.             LSR A
  236.             BCS Label14
  237.             ORA #$40
  238. Label14:    ORA $64
  239.             ORA !15F6,x
  240.             STA $030B|!Base2,y
  241.             LDA #!Tile
  242.             STA $030A|!Base2,y
  243.             TYA
  244.             LSR A
  245.             LSR A
  246.             TAY
  247.             LDA !15A0,x
  248.             STA $0462|!Base2,y
  249. Return1:    RTS
  250.  
  251. S_Label1:   LDA !E4,x
  252.             CLC
  253.             ADC #$0A
  254.             STA $00
  255.             LDA !14E0,x
  256.             ADC #$00
  257.             STA $01
  258.             LDA !D8,x
  259.             STA $02
  260.             LDA !14D4,x
  261.             STA $03
  262.             REP #$20
  263.             LDA $94
  264.             STA $04
  265.             LDA $96
  266.             STA $06
  267.             SEP #$20
  268.             JSR GetAngle
  269.             LDA $00
  270.             STA $0C
  271.             LDA $01
  272.             STA $0D
  273.             LDY #$00
  274.             LDA !7FAB10,x
  275.             AND #$04
  276.             BEQ Label2F
  277.             LDY #$02
  278. Label2F:    STY $0F
  279.             LDA #$10
  280.             STA $1DF9|!Base2
  281. GenLoop:    LDY #$07
  282. Label21:    LDA $170B|!Base2,y
  283.             BEQ Label20
  284.             DEY
  285.             BPL Label21
  286.             RTS
  287.  
  288. AddAngleL:      db $00,$20,$E0
  289. AddAngleH:      db $00,$00,$FF
  290.  
  291. Label20:    LDA #$02
  292.             STA $170B|!Base2,y
  293.             LDA !E4,x
  294.             STA $171F|!Base2,y
  295.             LDA !14E0,x
  296.             STA $1733|!Base2,y
  297.             LDA !D8,x
  298.             CLC
  299.             ADC #$0A
  300.             STA $1715|!Base2,y
  301.             LDA !14D4,x
  302.             ADC #$00
  303.             STA $1729|!Base2,y
  304.             LDX $0F
  305.             LDA #$20
  306.             STA $0E
  307.             LDA $0C
  308.             CLC
  309.             ADC AddAngleL,x
  310.             STA $00
  311.             LDA $0D
  312.             ADC AddAngleH,x
  313.             STA $01
  314.             PHY
  315.             JSR S_Label3
  316.             PLY
  317.             LDX $15E9|!Base2
  318.             LDA $00
  319.             STA $1747|!Base2,y
  320.             LDA $01
  321.             STA $173D|!Base2,y
  322.             DEC $0F
  323.             BPL GenLoop
  324.             RTS
  325.  
  326. S_Label3:   REP #$31
  327.             LDA $00
  328.             ADC.w #$0080
  329.             AND.w #$01FF
  330.             STA $02
  331.             AND.w #$00FF
  332.             ASL A
  333.             TAX
  334.             LDA.l $07F7DB|!BankB,x
  335.             STA $06
  336.             LDA $00
  337.             AND.w #$00FF
  338.             ASL A
  339.             TAX
  340.             LDA.l $07F7DB|!BankB,x
  341.             STA $04
  342.             SEP #$30
  343.         if !SA1
  344.             STZ $2250
  345.         endif
  346.             LDA $0E
  347.         if !SA1
  348.             STA $2251
  349.             STZ $2252
  350.         else
  351.             STA $4202
  352.         endif
  353.             LDY $07
  354.             BNE SkipCos0
  355.             LDA $06
  356.         if !SA1
  357.             STA $2253
  358.             STZ $2254
  359.             NOP : BRA $00
  360.             ASL $2306
  361.             LDA $2307
  362.         else
  363.             STA $4203
  364.             NOP #4
  365.             ASL $4216
  366.             LDA $4217
  367.         endif
  368.             ADC #$00
  369. SkipCos0:   LSR $03
  370.             BCC NotNegCos0
  371.             EOR #$FF
  372.             INC A
  373. NotNegCos0: STA $00
  374.             LDA $0E
  375.             LDY $05
  376.             BNE SkipSin0
  377.         if !SA1
  378.             STZ $2250
  379.             LDA $0E
  380.             STA $2251
  381.             STZ $2252
  382.         endif
  383.             LDA $04
  384.         if !SA1
  385.             STA $2253
  386.             STZ $2254
  387.             NOP : BRA $00
  388.             ASL $2306
  389.             LDA $2307
  390.         else
  391.             STA $4203
  392.             NOP #4
  393.             ASL $4216
  394.             LDA $4217
  395.         endif
  396.             ADC #$00
  397. SkipSin0:   LSR $01
  398.             BCC NotNegSin0
  399.             EOR #$FF
  400.             INC A
  401. NotNegSin0: STA $01
  402.             RTS
  403.  
  404. S_Label2:   LDA $13
  405.             AND #$03
  406.             ORA !186C,x
  407.             ORA $9D
  408.             BNE Return2
  409.             JSL $01ACF9|!BankB
  410.             AND #$0F
  411.             CLC
  412.             LDY #$00
  413.             ADC #$FC
  414.             BPL Label40
  415.             DEY
  416. Label40:    CLC
  417.             ADC !E4,x
  418.             STA $02
  419.             TYA
  420.             ADC !14E0,x
  421.             PHA
  422.             LDA $02
  423.             CMP $1A
  424.             PLA
  425.             SBC $1B
  426.             BNE Return2
  427.             LDA $148E|!Base2
  428.             AND #$0F
  429.             ;CLC
  430.             ;ADC #$FE
  431.             ADC #$FD
  432.             ADC !D8,x
  433.             STA $00
  434.             LDA !14D4,x
  435.             ADC #$00
  436.             STA $01
  437.             JSL $0285BA|!BankB
  438. Return2:    RTS
  439.  
  440. State1:     JSR S_Label4
  441.             STZ !1602,x
  442.             JSL $019D5F|!BankB      ; SubSprGfx1
  443.             RTS
  444.  
  445. S_Label5:   LDA !1540,x
  446.             BNE Return5
  447.             LDA #$02
  448.             STA !1540,x
  449.             DEC !1570,x
  450.             BNE Label52
  451.             INC !C2,x
  452.             LDA #$10
  453.             STA !1540,x
  454.             PLA
  455.             PLA
  456. Return5:    RTS
  457.  
  458. S_Label4:   LDA !1540,x
  459.             BNE Label50
  460.             LDA #$04
  461.             STA !1540,x
  462.             INC !1570,x
  463.             LDA !1570,x
  464.             CMP #$09
  465.             BNE Label51
  466.             LDY #$24
  467.             STY $40
  468. Label51:    CMP #$09
  469.             BNE Label52
  470.             INC !C2,x
  471.             LDA #$70
  472.             STA !1540,x
  473.             RTS
  474.  
  475. Label52:    LDA !15F6,x
  476.             ASL A
  477.             ASL A
  478.             ASL A
  479.             ORA #$80
  480.             AND #$F0
  481.             STA $01
  482.             LDA !1570,x
  483.             DEC A
  484.             ASL A
  485.             ASL A
  486.             ASL A
  487.             ASL A
  488.             TAX
  489.             STZ $00
  490.             LDY $0681|!Base2
  491. Label53:    LDA MagiKoopaPals,x
  492.             STA $0684|!Base2,y
  493.             INY
  494.             INX
  495.             INC $00
  496.             LDA $00
  497.             CMP #$10
  498.             BNE Label53
  499.             LDX $0681|!Base2
  500.             LDA #$10
  501.             STA $0682|!Base2,x
  502.             LDA $01
  503.             STA $0683|!Base2,x
  504.             STZ $0694|!Base2,x
  505.             TXA
  506.             ;CLC
  507.             ;ADC #$12
  508.             ADC #$11
  509.             STA $0681|!Base2
  510. Label50:    LDX $15E9|!Base2
  511.             RTS
  512.  
  513. State3:     JSR S_Label5
  514.             JSL $019D5F|!BankB      ; SubSprGfx1
  515.             RTS
  516.  
  517. MagiKoopaPals:
  518.             dw $7FFF,$294A,$0000,$0404,$042A,$469F,$000A,$002A
  519.             dw $7FFF,$35AD,$0000,$0806,$044F,$321F,$000D,$00AD
  520.             dw $7FFF,$4210,$0000,$0809,$0451,$1D7F,$0050,$0110
  521.             dw $7FFF,$4E73,$0000,$080C,$0453,$08DF,$00B3,$0173
  522.             dw $7FFF,$5AD6,$0000,$080F,$0455,$049B,$0116,$01D6
  523.             dw $7FFF,$6739,$0000,$0812,$0458,$0457,$0179,$0239
  524.             dw $7FFF,$739C,$0000,$0815,$045B,$0452,$01DC,$029C
  525.             dw $7FFF,$7FFF,$0000,$0818,$087F,$087F,$023F,$02FF
  526.  
  527. ; 本家のパレットパターン
  528. ;           dw $7FFF,$294A,$0000,$1400,$2000,$7E92,$000A,$002A
  529. ;           dw $7FFF,$35AD,$0000,$2400,$2C00,$722F,$000D,$00AD
  530. ;           dw $7FFF,$4210,$0000,$3000,$3800,$65CC,$0050,$0110
  531. ;           dw $7FFF,$4E73,$0000,$3C00,$4441,$5969,$00B3,$0173
  532. ;           dw $7FFF,$5AD6,$0000,$4800,$50A4,$4D06,$0116,$01D6
  533. ;           dw $7FFF,$6739,$0000,$5442,$5D07,$40A3,$0179,$0239
  534. ;           dw $7FFF,$739C,$0000,$60A5,$696A,$3440,$01DC,$029C
  535. ;           dw $7FFF,$7FFF,$0000,$6D08,$75CD,$2800,$023F,$02FF
  536. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  537.  
  538. GetAngle:       REP #$20
  539.             LDY #$00
  540.             LDA $02
  541.             SEC
  542.             SBC $06
  543.             BPL If_Plus20
  544.             INY
  545.             EOR.w #$FFFF
  546.             INC A
  547. If_Plus20:      STA $02
  548.             LDA $00
  549.             SEC
  550.             SBC $04
  551.             BPL If_Plus21
  552.             INY
  553.             INY
  554.             EOR.w #$FFFF
  555.             INC A
  556. If_Plus21:      STA $00
  557.             STY $04
  558.             BEQ X_Zero
  559.             CMP.w #$0100
  560.             XBA
  561.             ROR A
  562.             XBA
  563.             TAY
  564.             LDA $02
  565.             BEQ Y_Zero
  566.             CMP.w #$0100
  567.             XBA
  568.             ROR A
  569.             AND.w #$FF80
  570.         if !SA1
  571.             PHA
  572.             LDA #$01
  573.             STA $2250
  574.             PLA
  575.             STA $2251
  576.             STZ $2252
  577.             STY $2253
  578.             ;STZ $2254
  579.             NOP : BRA $00
  580.             LDA $2307
  581.         else
  582.             STA $4204
  583.             STY $4206
  584.             LDA $4214
  585.         endif
  586.             LSR A
  587.             LSR A
  588.             LSR A
  589.             LSR A
  590.             CMP.w #$0100
  591.             SEP #$20
  592.             BCC NoOverFlow
  593.             LDA #$FF
  594. NoOverFlow:     TAY
  595.             LDA AtanTable,y
  596.             LSR $04
  597.             BCS If_Plus30
  598.             EOR #$FF        ;\
  599.             INC A           ; | θ:360°-θ
  600.             BEQ If_Plus30       ; |
  601.             INC $01         ;/
  602. If_Plus30:      LSR $04
  603.             BCS If_Plus31
  604.             EOR #$FF        ;\
  605.             INC A           ; | θ:180°-θ
  606.             BNE If_Plus31       ; |
  607.             INC $01         ;/
  608. If_Plus31:      STA $00
  609.             LDA #$FE
  610.             TRB $01
  611.             RTS
  612.  
  613. X_Zero:         SEP #$20
  614.             LDY #$00
  615.             LSR $04
  616.             BCS If_Plus32
  617.             INY
  618. If_Plus32:      STY $01
  619.             LDA #$80
  620.             STA $00
  621.             LDY #$FF
  622.             RTS
  623.  
  624. Y_Zero:         SEP #$20
  625.             STZ $00
  626.             LDY #$00
  627.             LDA $04
  628.             AND #$02
  629.             BNE If_Plus33
  630.             INY
  631. If_Plus33:      STY $01
  632.             LDY #$00
  633.             RTS
  634.  
  635. AtanTable:
  636. db $00,$05,$0A,$0F,$13,$18,$1D,$21,$25,$29,$2D,$31,$34,$37,$3A,$3D
  637. db $40,$42,$44,$46,$49,$4A,$4C,$4E,$50,$51,$53,$54,$55,$56,$58,$59
  638. db $5A,$5B,$5C,$5D,$5D,$5E,$5F,$60,$60,$61,$62,$62,$63,$64,$64,$65
  639. db $65,$66,$66,$67,$67,$68,$68,$68,$69,$69,$6A,$6A,$6A,$6B,$6B,$6B
  640. db $6C,$6C,$6C,$6C,$6D,$6D,$6D,$6D,$6E,$6E,$6E,$6E,$6F,$6F,$6F,$6F
  641. db $6F,$70,$70,$70,$70,$70,$71,$71,$71,$71,$71,$71,$71,$72,$72,$72
  642. db $72,$72,$72,$72,$73,$73,$73,$73,$73,$73,$73,$73,$74,$74,$74,$74
  643. db $74,$74,$74,$74,$74,$74,$75,$75,$75,$75,$75,$75,$75,$75,$75,$75
  644. db $75,$75,$76,$76,$76,$76,$76,$76,$76,$76,$76,$76,$76,$76,$76,$76
  645. db $76,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77
  646. db $77,$77,$77,$78,$78,$78,$78,$78,$78,$78,$78,$78,$78,$78,$78,$78
  647. db $78,$78,$78,$78,$78,$78,$78,$78,$78,$78,$79,$79,$79,$79,$79,$79
  648. db $79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79,$79
  649. db $79,$79,$79,$79,$79,$79,$79,$79,$79,$7A,$7A,$7A,$7A,$7A,$7A,$7A
  650. db $7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A
  651. db $7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$7A,$80;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement