Advertisement
KSSBrawl_

pdp data decompression routine

Jul 22nd, 2018
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. sub_80a116:
  2.     php
  3.     phb
  4.     rep #$30
  5.     ldy $7c
  6.     stz $7c
  7.     sep #$20
  8.     stz $85
  9.     lda $81
  10.     pha
  11.     plb
  12.     ldx $7f
  13.     jmp loc_80a2a1
  14.    
  15. sub_80a12b:
  16.     lda [$7c],y
  17.     iny
  18.     bne loc_80a133
  19.     jsr sub_80a149
  20. loc_80a133:
  21.     pha
  22.     lda $85
  23.     beq loc_80a13b
  24.     jsr sub_80a13d
  25. loc_80a13b:
  26.     pla
  27.     rts
  28.  
  29. sub_80a13d:
  30.     dec
  31.     sta $85
  32.     bne loc_80a148
  33.     lda $84
  34.     sta $7e
  35.     ldy $82
  36. loc_80a148:
  37.     rts
  38.  
  39. sub_80a149:
  40.     inc $7e
  41.     ldy #$8000
  42.     rts
  43.  
  44. loc_80a14f:
  45.     sta $7f
  46.     asl
  47.     bpl loc_80a176
  48.     and #$20
  49.     beq loc_80a168
  50.     lda $7f
  51.     asl
  52.     asl
  53.     asl
  54.     asl
  55.     ora #$0f
  56.     sta $0000,x
  57.     inx
  58.     lda #$1f
  59.     bra loc_80a1a0
  60. loc_80a168:
  61.     lda $7f
  62.     and #$0f
  63.     ora #$f0
  64.     sta $0000,x
  65.     inx
  66.     lda #$0f
  67.     bra loc_80a1a0
  68. loc_80a176:
  69.     and #$20
  70.     beq loc_80a188
  71.     lda $7f
  72.     asl
  73.     asl
  74.     asl
  75.     asl
  76.     sta $0000,x
  77.     inx
  78.     lda #$10
  79.     bra loc_80a1a0
  80. loc_80a188:
  81.     lda $7f
  82.     and #$0f
  83.     sta $0000,x
  84.     inx
  85.     lda #$00
  86.     bra loc_80a1a0
  87. loc_80a194:
  88.     and #$0f
  89.     inc
  90.     sta $81
  91.     jsr sub_80a12b
  92.     cmp #$80
  93.     bcs loc_80a14f
  94. loc_80a1a0:
  95.     cmp #$10
  96.     bcc loc_80a1cc
  97.     and #$0f
  98.     sta $7f
  99. loc_80a1a8:
  100.     jsr sub_80a12b
  101.     sta $80
  102.     and #$f0
  103.     ora $7f
  104.     sta $0000,x
  105.     inx
  106.     dec $81
  107.     bmi loc_80a1f3
  108.     lda $80
  109.     asl
  110.     asl
  111.     asl
  112.     asl
  113.     ora $7f
  114.     sta $0000,x
  115.     inx
  116.     dec $81
  117.     bpl loc_80a1a8
  118.     jmp loc_80a2a1
  119. loc_80a1cc:
  120.     asl
  121.     asl
  122.     asl
  123.     asl
  124.     sta $7f
  125. loc_80a1d2:
  126.     jsr sub_80a12b
  127.     sta $80
  128.     lsr
  129.     lsr
  130.     lsr
  131.     lsr
  132.     ora $7f
  133.     sta $0000,x
  134.     inx
  135.     dec $81
  136.     bmi loc_80a1f3
  137.     lda $80
  138.     and #$0f
  139.     ora $7f
  140.     sta $0000,x
  141.     inx
  142.     dec $81
  143.     bpl loc_80a1d2
  144. loc_80a1f3:
  145.     jmp loc_80a2a1
  146. loc_80a1f6:
  147.     cmp #$50
  148.     bcc loc_80a194
  149.     and #$0f
  150.     sta $81
  151. loc_80a1fe:
  152.     lda [$7c],y
  153.     iny
  154.     bne loc_80a206
  155.     jsr sub_80a149
  156. loc_80a206:
  157.     pha
  158.     lda $85
  159.     beq loc_80a20e
  160.     jsr sub_80a13d
  161. loc_80a20e:
  162.     pla
  163.     sta $0000,x
  164.     inx
  165.     sta $0000,x
  166.     inx
  167.     dec $81
  168.     bpl loc_80a1fe
  169.     jmp loc_80a2a1
  170. loc_80a21e:
  171.     lsr
  172.     cmp #$60
  173.     bcc loc_80a1f6
  174.     xba
  175.     lda [$7c],y
  176.     iny
  177.     bne loc_80a22c
  178.     jsr sub_80a149
  179. loc_80a22c:
  180.     pha
  181.     lda $85
  182.     beq loc_80a234
  183.     jsr sub_80a13d
  184. loc_80a234:
  185.     pla
  186.     sta $7f
  187.     xba
  188.     cmp #$70
  189.     and #$0f
  190.     inc
  191.     sta $81
  192.     bcs loc_80a262
  193. loc_80a241:
  194.     lda $7f
  195.     sta $0000,x
  196.     inx
  197.     lda [$7c],y
  198.     iny
  199.     bne loc_80a24f
  200.     jsr sub_80a149
  201. loc_80a24f:
  202.     pha
  203.     lda $85
  204.     beq loc_80a257
  205.     jsr sub_80a13d
  206. loc_80a257:
  207.     pla
  208.     sta $0000,x
  209.     inx
  210.     dec $81
  211.     bpl loc_80a241
  212.     bra loc_80a2a1
  213. loc_80a262:
  214.     lda [$7c],y
  215.     iny
  216.     bne loc_80a26a
  217.     jsr sub_80a149
  218. loc_80a26a:
  219.     pha
  220.     lda $85
  221.     beq loc_80a272
  222.     jsr sub_80a13d
  223. loc_80a272:
  224.     pla
  225.     sta $0000,x
  226.     inx
  227.     lda $7f
  228.     sta $0000,x
  229.     inx
  230.     dec $81
  231.     bpl loc_80a262
  232.     bra loc_80a2a1
  233. loc_80a283:
  234.     bmi loc_80a21e
  235.     lsr
  236.     sta $81
  237. loc_80a288:
  238.     lda [$7c],y
  239.     iny
  240.     bne loc_80a290
  241.     jsr sub_80a149
  242. loc_80a290:
  243.     pha
  244.     lda $85
  245.     beq loc_80a298
  246.     jsr sub_80a13d
  247. loc_80a298:
  248.     pla
  249.     sta $0000,x
  250.     inx
  251.     dec $81
  252.     bpl loc_80a288
  253. loc_80a2a1:
  254.     lda [$7c],y
  255.     iny
  256.     bne loc_80a2a9
  257.     jsr sub_80a149
  258. loc_80a2a9:
  259.     pha
  260.     lda $85
  261.     beq loc_80a2b1
  262.     jsr sub_80a13d
  263. loc_80a2b1:
  264.     pla
  265.     asl
  266.     bcc loc_80a283
  267.     bmi loc_80a2ec
  268.     lsr
  269.     pha
  270.     lsr
  271.     lsr
  272.     inc
  273.     sta $81
  274.     pla
  275.     and #$03
  276.     xba
  277. loc_80a2c2:
  278.     lda [$7c],y
  279.     iny
  280.     bne loc_80a2ca
  281.     jsr sub_80a149
  282. loc_80a2ca:
  283.     phy
  284.     rep #$20
  285.     sta $7f
  286.     txa
  287.     sec
  288.     sbc $7f
  289.     tay
  290.     sep #$20
  291. loc_80a2d6:
  292.     lda $0000,y
  293.     sta $0000,x
  294.     iny
  295.     inx
  296.     dec $81
  297.     bpl loc_80a2d6
  298.     ply
  299. loc_80a2e3:
  300.     lda $85
  301.     beq loc_80a2a1
  302.     jsr sub_80a13d
  303.     bra loc_80a2a1
  304. loc_80a2ec:
  305.     ror
  306.     cmp #$e0
  307.     bcs loc_80a311
  308.     and #$1f
  309.     xba
  310.     lda [$7c],y
  311.     iny
  312.     bne loc_80a2fc
  313.     jsr sub_80a149
  314. loc_80a2fc:
  315.     pha
  316.     lda $85
  317.     beq loc_80a304
  318.     jsr sub_80a13d
  319. loc_80a304:
  320.     pla
  321.     rep #$20
  322.     asl
  323.     sep #$20
  324.     lsr
  325.     xba
  326.     inc
  327.     sta $81
  328.     bra loc_80a2c2
  329. loc_80a311:
  330.     cmp #$f0
  331.     bcs loc_80a355
  332.     and #$0f
  333.     sta $80
  334.     lda [$7c],y
  335.     iny
  336.     bne loc_80a321
  337.     jsr sub_80a149
  338. loc_80a321:
  339.     pha
  340.     lda $85
  341.     beq loc_80a329
  342.     jsr sub_80a13d
  343. loc_80a329:
  344.     pla
  345.     sta $7f
  346.     lda [$7c],y
  347.     iny
  348.     bne loc_80a334
  349.     jsr sub_80a149
  350. loc_80a334:
  351.     phy
  352.     pha
  353.     pha
  354.     rep #$20
  355.     lda $7f
  356.     clc
  357.     adc #$0003
  358.     lsr
  359.     tay
  360.     pla
  361. loc_80a342:
  362.     sta $0000,x
  363.     inx
  364.     inx
  365.     dey
  366.     bne loc_80a342
  367.     sep #$20
  368.     bcc loc_80a352
  369.     sta $0000,x
  370.     inx
  371. loc_80a352:
  372.     ply
  373.     bra loc_80a2e3
  374. loc_80a355:
  375.     cmp #$f8
  376.     bcs loc_80a372
  377.     and #$07
  378.     adc #$02
  379.     sta $81
  380.     lda [$7c],y
  381.     iny
  382.     bne loc_80a367
  383.     jsr sub_80a149
  384. loc_80a367:
  385.     sta $0000,x
  386.     inx
  387.     dec $81
  388.     bpl loc_80a367
  389.     jmp loc_80a2e3
  390. loc_80a372:
  391.     cmp #$fc
  392.     bcs loc_80a3bf
  393.     and #$03
  394.     xba
  395.     lda [$7c],y
  396.     iny
  397.     bne loc_80a381
  398.     jsr sub_80a149
  399. loc_80a381:
  400.     rep #$20
  401.     asl
  402.     asl
  403.     asl
  404.     sep #$20
  405.     lsr
  406.     lsr
  407.     lsr
  408.     xba
  409.     pha
  410.     lda [$7c],y
  411.     iny
  412.     bne loc_80a395
  413.     jsr sub_80a149
  414. loc_80a395:
  415.     rep #$20
  416.     clc
  417.     adc #$0003
  418. loc_80a39b:
  419.     sty $82
  420.     sta $7f
  421.     sep #$20
  422.     lda $7e
  423.     sta $84
  424.     rep #$20
  425.     tya
  426.     sec
  427.     sbc $7f
  428.     bmi loc_80a3b3
  429.     clc
  430.     adc #$8000
  431.     dec $7e
  432. loc_80a3b3:
  433.     tay
  434.     sep #$20
  435.     pla
  436.     clc
  437.     adc #$03
  438.     sta $85
  439.     jmp loc_80a2a1
  440. loc_80a3bf:
  441.     cmp #$fe
  442.     bcs loc_80a3e2
  443.     and #$01
  444.     xba
  445.     lda [$7c],y
  446.     iny
  447.     bne loc_80a3ce
  448.     jsr sub_80a149
  449. loc_80a3ce:
  450.     rep #$20
  451.     asl
  452.     asl
  453.     sep #$20
  454.     xba
  455.     pha
  456.     xba
  457.     lsr
  458.     lsr
  459.     rep #$20
  460.     and #$003f
  461.     inc
  462.     inc
  463.     bra loc_80a39b
  464. loc_80a3e2:
  465.     plb
  466.     plp
  467.     rtl
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement