alberthrocks

MT3 source

Nov 26th, 2011
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;-----------------------------------------
  2.  
  3. ;
  4.  
  5. ;       mobileTunes 3
  6.  
  7. ;         by Kerm Martian
  8.  
  9. ;
  10.  
  11. ;-----------------------------------------
  12.  
  13. .nolist
  14.  
  15. #include "dcs7.inc"
  16.  
  17. #include "keyval.inc"
  18. #include "ti83plus.inc"
  19.  
  20. OpenFileFlag    .equ AppBackupScreen+94     ;byte
  21.  
  22. FilePtr .equ AppBackupScreen+95     ;word
  23.  
  24. FileSize    .equ AppBackupScreen+97     ;word
  25.  
  26. OffsetTable .equ    AppBackupScreen+99  ;word
  27.  
  28. OffsetSection .equ AppBackupScreen+101  ;word
  29.  
  30. SongNoteLength .equ AppBackupScreen+103 ;word
  31.  
  32. SongNoteCurrent .equ AppBackupScreen+105    ;word
  33.  
  34. bPort .equ 0
  35.  
  36. MouseY  .equ    $989E   ; [header.asm:141]
  37.  
  38. MouseX  .equ    $989F   ; [header.asm:142]
  39.  
  40.  
  41.  
  42. .list
  43.  
  44.     .org progstart
  45.  
  46.     .db $BB,$6D
  47.  
  48. INIT:
  49.  
  50.     xor d
  51.  
  52.     .db $C9
  53.  
  54.     jr Start
  55.  
  56.     .dw $0000
  57.  
  58.     .db $06,$00
  59.  
  60.     .dw Icon
  61.  
  62.     .dw $0000
  63.  
  64.     .dw Apstart         ;the routine to open files.
  65.  
  66.     .db $31,$7F         ;argh, this be an APMain
  67.  
  68.     .db $02             ;number of accepted filetypes
  69.  
  70. MyType1:
  71.  
  72.     .db 0,1,4           ;plaintext
  73.  
  74. Icon:
  75.  
  76.     .db $07,$E0,$1C,$38,$32,$0C,$75,$0E,$48,$D6,$EC,$73,$D4,$2F,$AC,$17
  77.  
  78.     .db $D8,$1D,$FC,$2F,$FC,$7F,$7C,$FE,$7D,$FE,$3F,$FC,$1F,$F8,$07,$E0
  79.  
  80. APIcon:
  81.  
  82.     .db $3F,$F0,$20,$18,$20,$14,$20,$1E,$3E,$02,$57,$02,$EA,$82,$A5,$82
  83.  
  84.     .db $E3,$82,$E7,$82,$EF,$82,$7F,$02,$3E,$02,$20,$02,$20,$02,$3F,$FE
  85.  
  86. Start:
  87.  
  88.     xor a
  89.  
  90.     ld (OpenFileFlag),a
  91.  
  92.     ld hl,0
  93.  
  94.     ld (FilePtr),hl
  95.  
  96.     ld (FileSize),hl
  97.  
  98.     call SetupGUI
  99.  
  100. MainMouse:
  101.  
  102.     ld hl,MouseHook
  103.  
  104.     call GUIMouse
  105.  
  106. MouseHook:
  107.  
  108.     ld a,$ff
  109.  
  110.     out (1),a
  111.  
  112.     nop \ nop
  113.  
  114.     ld a,KeyRow_Top
  115.  
  116.     out (1),a
  117.  
  118.     nop \ nop
  119.  
  120.     in a,(1)
  121.  
  122.     cp dkY
  123.  
  124.     jr z,MouseHookPlayPause
  125.  
  126.     cp dkWindow
  127.  
  128.     jr z,MouseHookStop
  129.  
  130.     cp dkGraph
  131.  
  132.     jr z,MouseHookOpen
  133.  
  134.     ld a,$ff
  135.  
  136.     out (1),a
  137.  
  138.     nop \ nop
  139.  
  140.     ld a,KeyRow_5
  141.  
  142.     out (1),a
  143.  
  144.     nop \ nop
  145.  
  146.     in a,(1)
  147.  
  148.     cp dkClear
  149.  
  150.     ret nz
  151.  
  152.     ld hl,MouseY
  153.  
  154.     ld (hl),4
  155.  
  156.     inc hl
  157.  
  158.     ld (hl),92
  159.  
  160.     pop hl
  161.  
  162.     ret
  163.  
  164. MouseHookPlayPause:
  165.  
  166.     ld hl,MouseY
  167.  
  168.     ld (hl),48
  169.  
  170.     inc hl
  171.  
  172.     ld (hl),14
  173.  
  174.     pop hl
  175.  
  176.     ret
  177.  
  178. MouseHookStop:
  179.  
  180.     ld hl,MouseY
  181.  
  182.     ld (hl),56
  183.  
  184.     inc hl
  185.  
  186.     ld (hl),30
  187.  
  188.     pop hl
  189.  
  190.     ret
  191.  
  192. MouseHookOpen:
  193.  
  194.     ld hl,MouseY
  195.  
  196.     ld (hl),56
  197.  
  198.     inc hl
  199.  
  200.     ld (hl),85
  201.  
  202.     pop hl
  203.  
  204.     ret
  205.  
  206. Quit:
  207.  
  208.     call ResetAppPage
  209.  
  210.     call CloseGUIStack
  211.  
  212.     ret
  213.  
  214. SetupGUI:
  215.  
  216.     call OpenGUIStack
  217.  
  218.     ;now, set it up
  219.  
  220.     ld hl,LargeWinData
  221.  
  222.     ld de,LargeWinDataE-LargeWinData
  223.  
  224.     ld a,1
  225.  
  226.     call PushGUIStack
  227.  
  228.     ld hl,WinButtons
  229.  
  230.     ld de,WinButtonsE-WinButtons
  231.  
  232.     ld a,5
  233.  
  234.     call PushGUIStack
  235.  
  236.     ld hl,OriginalButtons
  237.  
  238.     ld de,OriginalButtonsE-OriginalButtons
  239.  
  240.     ld a,$11
  241.  
  242.     call PushGUIStack
  243.  
  244.     ld hl,Hotspot_Open
  245.  
  246.     ld de,Hotspot_OpenE-Hotspot_Open
  247.  
  248.     ld a,$0e
  249.  
  250.     call PushGUIStack
  251.  
  252.     ld hl,Hotspot_PlayPause
  253.  
  254.     ld de,Hotspot_PlayPauseE-Hotspot_PlayPause
  255.  
  256.     ld a,$0e
  257.  
  258.     call PushGUIStack
  259.  
  260.     ld hl,Hotspot_Stop
  261.  
  262.     ld de,Hotspot_StopE-Hotspot_Stop
  263.  
  264.     ld a,$0e
  265.  
  266.     call PushGUIStack
  267.  
  268.     ld hl,Hotspot_Rev
  269.  
  270.     ld de,Hotspot_RevE-Hotspot_Rev
  271.  
  272.     ld a,$0e
  273.  
  274.     call PushGUIStack
  275.  
  276.     ld hl,Hotspot_FF
  277.  
  278.     ld de,Hotspot_FFE-Hotspot_FF
  279.  
  280.     ld a,$0e
  281.  
  282.     call PushGUIStack
  283.  
  284.     ret
  285.  
  286. Button_PlayPause:
  287.  
  288.     call ResetAppPage
  289.  
  290.     ld hl,PlayPauseMask
  291.  
  292.     ld de,PlayPauseMaskE-PlayPauseMask
  293.  
  294.     ld a,$10
  295.  
  296.     call PushGUIStack
  297.  
  298.     call RenderGUI
  299.  
  300.     call playNow
  301.  
  302.     call PopGUIStack
  303.  
  304.     jp MainMouse
  305.  
  306. Button_Stop:
  307.  
  308.     call ResetAppPage
  309.  
  310.     ld a,(OpenFileFlag)
  311.  
  312.     or a
  313.  
  314.     jp z,MainMouse
  315.  
  316.     call PlayStop
  317.  
  318.     jp MainMouse
  319.  
  320. Button_FF:
  321.  
  322.     call ResetAppPage
  323.  
  324.     ld hl,SmallWinAbout
  325.  
  326.     ld de,SmallWinAboutE-SmallWinAbout
  327.  
  328.     ld a,2
  329.  
  330.     call PushGUIStack
  331.  
  332.     ld hl,SmallWinButtons
  333.  
  334.     ld de,SmallWinButtonsE-SmallWinButtons
  335.  
  336.     ld a,5
  337.  
  338.     call PushGUIStack
  339.  
  340.     ld hl,SmallWinAboutT1
  341.  
  342.     ld de,SmallWinAboutT2-SmallWinAboutT1
  343.  
  344.     ld a,4
  345.  
  346.     call PushGUIStack
  347.  
  348.     ld hl,SmallWinAboutT2
  349.  
  350.     ld de,SmallWinAboutT3-SmallWinAboutT2
  351.  
  352.     ld a,4
  353.  
  354.     call PushGUIStack
  355.  
  356.     ld hl,SmallWinAboutT3
  357.  
  358.     ld de,SmallWinAboutT4-SmallWinAboutT3
  359.  
  360.     ld a,4
  361.  
  362.     call PushGUIStack
  363.  
  364.     ld hl,SmallWinAboutT4
  365.  
  366.     ld de,SmallWinAboutT5-SmallWinAboutT4
  367.  
  368.     ld a,4
  369.  
  370.     call PushGUIStack
  371.  
  372.     ld hl,0
  373.  
  374.     call GUIMouse
  375.  
  376. DispAboutClose:
  377.  
  378.     call ResetAppPage
  379.  
  380.     ld b,6
  381.  
  382.     call PopGUIStacks
  383.  
  384.  
  385.  
  386.     jp MainMouse
  387.  
  388. Button_Open:
  389.  
  390.     call ResetAppPage
  391.  
  392.     ld a,0
  393.  
  394.     call FileOpen
  395.  
  396.     ld a,h
  397.  
  398.     or l
  399.  
  400.     jp z,MainMouse
  401.  
  402.     push hl
  403.  
  404. ;       dec hl
  405.  
  406. ;       ld a,(hl)
  407.  
  408. ;       cp 4
  409.  
  410. ;       jp nz,OpenFail
  411.  
  412. ;       dec hl
  413.  
  414. ;       ld a,(hl)
  415.  
  416. ;       cp 1
  417.  
  418. ;       jp nz,OpenFail
  419.  
  420. ;       dec hl
  421.  
  422. ;       ld a,(hl)
  423.  
  424. ;       or a
  425.  
  426. ;       jp nz,OpenFail
  427.  
  428.         push de
  429.  
  430.             push bc
  431.  
  432.                 ld a,(OpenFileFlag)
  433.  
  434.                 or a
  435.  
  436.                 jr z,Button_Open2
  437.  
  438.                 ld b,3
  439.  
  440.                 call PopGUIStacks
  441.  
  442. Button_Open2:
  443.  
  444.                 pop hl
  445.  
  446.             ld (FileSize),hl
  447.  
  448.             pop de
  449.  
  450.         pop hl
  451.  
  452. Button_Open_APIns:
  453.  
  454.     ld b,3
  455.  
  456. Button_Open_LL:
  457.  
  458.     ld de,TextLabelTemplate
  459.  
  460.     ex de,hl
  461.  
  462.     ld a,3
  463.  
  464.     sub b
  465.  
  466.     add a,a
  467.  
  468.     add a,a
  469.  
  470.     add a,a
  471.  
  472.     inc a
  473.  
  474.     ld (hl),1
  475.  
  476.     inc hl
  477.  
  478.     ld (hl),a
  479.  
  480.     inc hl
  481.  
  482.     inc hl
  483.  
  484. Button_Open_L1
  485.  
  486.     ld a,(de)
  487.  
  488.     ld (hl),a
  489.  
  490.     inc hl
  491.  
  492.     inc de
  493.  
  494.     or a
  495.  
  496.     jr nz,Button_Open_L1
  497.  
  498.     push hl
  499.  
  500.         push de
  501.  
  502.             push bc
  503.  
  504.                 ld hl,TextLabelTemplate
  505.  
  506.                 ld de,TextLabelTemplateE-TextLabelTemplate
  507.  
  508.                 ld a,4
  509.  
  510.                 call PushGUIStack
  511.  
  512.                 pop bc
  513.  
  514.             pop hl
  515.  
  516.         pop de
  517.  
  518.     djnz Button_Open_LL
  519.  
  520.     ld (FilePtr),hl
  521.  
  522.     ld a,1
  523.  
  524.     ld (OpenFileFlag),a
  525.  
  526.     ld hl,0
  527.  
  528.     ld (OffsetTable),hl
  529.  
  530.     ld (OffsetSection),hl
  531.  
  532.     ld (SongNoteCurrent),hl
  533.  
  534.     push hl
  535.  
  536.     pop bc
  537.  
  538.     ld hl,(FilePtr)
  539.  
  540. CountNotes:
  541.  
  542.     push hl
  543.  
  544.     bcall(_ldhlind)
  545.  
  546.     ld a,h
  547.  
  548.     or l
  549.  
  550.     jr z,CountNotesDone
  551.  
  552.     ld de,(FilePtr)
  553.  
  554.     add hl,de
  555.  
  556.     push hl
  557.  
  558.     pop ix
  559.  
  560. CountNotesInner:
  561.  
  562.     ld a,(ix+4)
  563.  
  564.     or (ix+5)
  565.  
  566.     jr z,CountNotesNext
  567.  
  568.     inc ix
  569.  
  570.     inc ix
  571.  
  572.     inc ix
  573.  
  574.     inc ix
  575.  
  576.     inc ix
  577.  
  578.     inc ix
  579.  
  580.     inc bc
  581.  
  582.     jr CountNotesInner
  583.  
  584. CountNotesNext:
  585.  
  586.     pop hl
  587.  
  588.     inc hl
  589.  
  590.     inc hl
  591.  
  592.     jr CountNotes
  593.  
  594. CountNotesDone:
  595.  
  596.     pop hl
  597.  
  598.     push bc
  599.  
  600.     pop hl
  601.  
  602.     ld (SongNoteLength),hl
  603.  
  604.     call UpdateSlider
  605.  
  606.     jp MainMouse
  607.  
  608. OpenFail:
  609.  
  610.         pop hl
  611.  
  612.     jp MainMouse
  613.  
  614. APStart:
  615.  
  616.     push ix
  617.  
  618.     call SetupGUI
  619.  
  620.     pop hl
  621.  
  622.     push hl
  623.  
  624.     ld de,-8
  625.  
  626.     add hl,de
  627.  
  628.     bcall(_ldhlind)
  629.  
  630.     ld (FileSize),hl
  631.  
  632.     pop hl
  633.  
  634.     jp Button_Open_APIns
  635.  
  636. UpdateSlider:
  637.  
  638.     ld de,(SongNoteCurrent)
  639.  
  640.     ld a,59
  641.  
  642.     call MultADE
  643.  
  644.     ld b,h
  645.  
  646.     ld c,l
  647.  
  648.     ld de,(SongNoteLength)
  649.  
  650.     call DivABCDE
  651.  
  652.     ld a,34
  653.  
  654.     add a,c
  655.  
  656.     ld e,47
  657.  
  658.     call iGetPixel
  659.  
  660.     push af
  661.  
  662.         xor $ff
  663.  
  664.         and (hl)
  665.  
  666.         ld (hl),a
  667.  
  668.         ld b,0
  669.  
  670.         pop af
  671.  
  672.     sla a
  673.  
  674.     rl b
  675.  
  676.     or (hl)
  677.  
  678.     ld (hl),a
  679.  
  680.     dec hl
  681.  
  682.     ld a,b
  683.  
  684.     or (hl)
  685.  
  686.     ld (hl),a
  687.  
  688.     call iFastCopy
  689.  
  690.     ret
  691.  
  692. MultADE:
  693.  
  694.     ld c,0
  695.  
  696.     ld h,c
  697.  
  698.     ld l,c
  699.  
  700.     add a,a     ; optimised 1st iteration
  701.  
  702.     jr  nc,$+4
  703.  
  704.     ld  h,d
  705.  
  706.     ld  l,e
  707.  
  708.     ld b,7
  709.  
  710. MultADE1:
  711.  
  712.     add hl,hl       ; unroll 7 times
  713.  
  714.     rla         ; ...
  715.  
  716.     jr  nc,$+4      ; ...
  717.  
  718.     add hl,de       ; ...
  719.  
  720.     adc a,c     ; ...
  721.  
  722.     djnz MultADE1
  723.  
  724.     ret
  725.  
  726. DivABCDE:
  727.  
  728.     ld hl,0
  729.  
  730.     slia    c       ; unroll 24 times
  731.  
  732.     rl  b       ; ...
  733.  
  734.     rla         ; ...
  735.  
  736.     adc hl,hl       ; ...
  737.  
  738.     sbc hl,de       ; ...
  739.  
  740.     jr  nc,$+4      ; ...
  741.  
  742.     add hl,de       ; ...
  743.  
  744.     dec c       ; ...
  745.  
  746.     slia    c       ; unroll 24 times
  747.  
  748.     rl  b       ; ...
  749.  
  750.     rla         ; ...
  751.  
  752.     adc hl,hl       ; ...
  753.  
  754.     sbc hl,de       ; ...
  755.  
  756.     jr  nc,$+4      ; ...
  757.  
  758.     add hl,de       ; ...
  759.  
  760.     dec c       ; ...
  761.  
  762.     slia    c       ; unroll 24 times
  763.  
  764.     rl  b       ; ...
  765.  
  766.     rla         ; ...
  767.  
  768.     adc hl,hl       ; ...
  769.  
  770.     sbc hl,de       ; ...
  771.  
  772.     jr  nc,$+4      ; ...
  773.  
  774.     add hl,de       ; ...
  775.  
  776.     dec c       ; ...
  777.  
  778.     slia    c       ; unroll 24 times
  779.  
  780.     rl  b       ; ...
  781.  
  782.     rla         ; ...
  783.  
  784.     adc hl,hl       ; ...
  785.  
  786.     sbc hl,de       ; ...
  787.  
  788.     jr  nc,$+4      ; ...
  789.  
  790.     add hl,de       ; ...
  791.  
  792.     dec c       ; ...
  793.  
  794.     slia    c       ; unroll 24 times
  795.  
  796.     rl  b       ; ...
  797.  
  798.     rla         ; ...
  799.  
  800.     adc hl,hl       ; ...
  801.  
  802.     sbc hl,de       ; ...
  803.  
  804.     jr  nc,$+4      ; ...
  805.  
  806.     add hl,de       ; ...
  807.  
  808.     dec c       ; ...
  809.  
  810.     slia    c       ; unroll 24 times
  811.  
  812.     rl  b       ; ...
  813.  
  814.     rla         ; ...
  815.  
  816.     adc hl,hl       ; ...
  817.  
  818.     sbc hl,de       ; ...
  819.  
  820.     jr  nc,$+4      ; ...
  821.  
  822.     add hl,de       ; ...
  823.  
  824.     dec c       ; ...
  825.  
  826.     slia    c       ; unroll 24 times
  827.  
  828.     rl  b       ; ...
  829.  
  830.     rla         ; ...
  831.  
  832.     adc hl,hl       ; ...
  833.  
  834.     sbc hl,de       ; ...
  835.  
  836.     jr  nc,$+4      ; ...
  837.  
  838.     add hl,de       ; ...
  839.  
  840.     dec c       ; ...
  841.  
  842.     slia    c       ; unroll 24 times
  843.  
  844.     rl  b       ; ...
  845.  
  846.     rla         ; ...
  847.  
  848.     adc hl,hl       ; ...
  849.  
  850.     sbc hl,de       ; ...
  851.  
  852.     jr  nc,$+4      ; ...
  853.  
  854.     add hl,de       ; ...
  855.  
  856.     dec c       ; ...
  857.  
  858.     slia    c       ; unroll 24 times
  859.  
  860.     rl  b       ; ...
  861.  
  862.     rla         ; ...
  863.  
  864.     adc hl,hl       ; ...
  865.  
  866.     sbc hl,de       ; ...
  867.  
  868.     jr  nc,$+4      ; ...
  869.  
  870.     add hl,de       ; ...
  871.  
  872.     dec c       ; ...
  873.  
  874.     slia    c       ; unroll 24 times
  875.  
  876.     rl  b       ; ...
  877.  
  878.     rla         ; ...
  879.  
  880.     adc hl,hl       ; ...
  881.  
  882.     sbc hl,de       ; ...
  883.  
  884.     jr  nc,$+4      ; ...
  885.  
  886.     add hl,de       ; ...
  887.  
  888.     dec c       ; ...
  889.  
  890.     slia    c       ; unroll 24 times
  891.  
  892.     rl  b       ; ...
  893.  
  894.     rla         ; ...
  895.  
  896.     adc hl,hl       ; ...
  897.  
  898.     sbc hl,de       ; ...
  899.  
  900.     jr  nc,$+4      ; ...
  901.  
  902.     add hl,de       ; ...
  903.  
  904.     dec c       ; ...
  905.  
  906.     slia    c       ; unroll 24 times
  907.  
  908.     rl  b       ; ...
  909.  
  910.     rla         ; ...
  911.  
  912.     adc hl,hl       ; ...
  913.  
  914.     sbc hl,de       ; ...
  915.  
  916.     jr  nc,$+4      ; ...
  917.  
  918.     add hl,de       ; ...
  919.  
  920.     dec c       ; ...
  921.  
  922.     slia    c       ; unroll 24 times
  923.  
  924.     rl  b       ; ...
  925.  
  926.     rla         ; ...
  927.  
  928.     adc hl,hl       ; ...
  929.  
  930.     sbc hl,de       ; ...
  931.  
  932.     jr  nc,$+4      ; ...
  933.  
  934.     add hl,de       ; ...
  935.  
  936.     dec c       ; ...
  937.  
  938.     slia    c       ; unroll 24 times
  939.  
  940.     rl  b       ; ...
  941.  
  942.     rla         ; ...
  943.  
  944.     adc hl,hl       ; ...
  945.  
  946.     sbc hl,de       ; ...
  947.  
  948.     jr  nc,$+4      ; ...
  949.  
  950.     add hl,de       ; ...
  951.  
  952.     dec c       ; ...
  953.  
  954.     slia    c       ; unroll 24 times
  955.  
  956.     rl  b       ; ...
  957.  
  958.     rla         ; ...
  959.  
  960.     adc hl,hl       ; ...
  961.  
  962.     sbc hl,de       ; ...
  963.  
  964.     jr  nc,$+4      ; ...
  965.  
  966.     add hl,de       ; ...
  967.  
  968.     dec c       ; ...
  969.  
  970.     slia    c       ; unroll 24 times
  971.  
  972.     rl  b       ; ...
  973.  
  974.     rla         ; ...
  975.  
  976.     adc hl,hl       ; ...
  977.  
  978.     sbc hl,de       ; ...
  979.  
  980.     jr  nc,$+4      ; ...
  981.  
  982.     add hl,de       ; ...
  983.  
  984.     dec c       ; ...
  985.  
  986.     slia    c       ; unroll 24 times
  987.  
  988.     rl  b       ; ...
  989.  
  990.     rla         ; ...
  991.  
  992.     adc hl,hl       ; ...
  993.  
  994.     sbc hl,de       ; ...
  995.  
  996.     jr  nc,$+4      ; ...
  997.  
  998.     add hl,de       ; ...
  999.  
  1000.     dec c       ; ...
  1001.  
  1002.     slia    c       ; unroll 24 times
  1003.  
  1004.     rl  b       ; ...
  1005.  
  1006.     rla         ; ...
  1007.  
  1008.     adc hl,hl       ; ...
  1009.  
  1010.     sbc hl,de       ; ...
  1011.  
  1012.     jr  nc,$+4      ; ...
  1013.  
  1014.     add hl,de       ; ...
  1015.  
  1016.     dec c       ; ...
  1017.  
  1018.     slia    c       ; unroll 24 times
  1019.  
  1020.     rl  b       ; ...
  1021.  
  1022.     rla         ; ...
  1023.  
  1024.     adc hl,hl       ; ...
  1025.  
  1026.     sbc hl,de       ; ...
  1027.  
  1028.     jr  nc,$+4      ; ...
  1029.  
  1030.     add hl,de       ; ...
  1031.  
  1032.     dec c       ; ...
  1033.  
  1034.     slia    c       ; unroll 24 times
  1035.  
  1036.     rl  b       ; ...
  1037.  
  1038.     rla         ; ...
  1039.  
  1040.     adc hl,hl       ; ...
  1041.  
  1042.     sbc hl,de       ; ...
  1043.  
  1044.     jr  nc,$+4      ; ...
  1045.  
  1046.     add hl,de       ; ...
  1047.  
  1048.     dec c       ; ...
  1049.  
  1050.     slia    c       ; unroll 24 times
  1051.  
  1052.     rl  b       ; ...
  1053.  
  1054.     rla         ; ...
  1055.  
  1056.     adc hl,hl       ; ...
  1057.  
  1058.     sbc hl,de       ; ...
  1059.  
  1060.     jr  nc,$+4      ; ...
  1061.  
  1062.     add hl,de       ; ...
  1063.  
  1064.     dec c       ; ...
  1065.  
  1066.     slia    c       ; unroll 24 times
  1067.  
  1068.     rl  b       ; ...
  1069.  
  1070.     rla         ; ...
  1071.  
  1072.     adc hl,hl       ; ...
  1073.  
  1074.     sbc hl,de       ; ...
  1075.  
  1076.     jr  nc,$+4      ; ...
  1077.  
  1078.     add hl,de       ; ...
  1079.  
  1080.     dec c       ; ...
  1081.  
  1082.     slia    c       ; unroll 24 times
  1083.  
  1084.     rl  b       ; ...
  1085.  
  1086.     rla         ; ...
  1087.  
  1088.     adc hl,hl       ; ...
  1089.  
  1090.     sbc hl,de       ; ...
  1091.  
  1092.     jr  nc,$+4      ; ...
  1093.  
  1094.     add hl,de       ; ...
  1095.  
  1096.     dec c       ; ...
  1097.  
  1098.     slia    c       ; unroll 24 times
  1099.  
  1100.     rl  b       ; ...
  1101.  
  1102.     rla         ; ...
  1103.  
  1104.     adc hl,hl       ; ...
  1105.  
  1106.     sbc hl,de       ; ...
  1107.  
  1108.     jr  nc,$+4      ; ...
  1109.  
  1110.     add hl,de       ; ...
  1111.  
  1112.     dec c       ; ...
  1113.  
  1114.     ret
  1115.  
  1116. playNow:
  1117.  
  1118.     ld hl,(FilePtr)
  1119.  
  1120.     ld de,(OffsetTable)
  1121.  
  1122.     add hl,de
  1123.  
  1124.     push hl
  1125.  
  1126.     pop ix
  1127.  
  1128.     ld a,(ix+0)
  1129.  
  1130.     or (ix+1)
  1131.  
  1132.     jr nz,PlaySection
  1133.  
  1134. playStop:
  1135.  
  1136.     ld hl,0                     ;reset stuff here
  1137.  
  1138.     ld (OffsetTable),hl
  1139.  
  1140.     ld (OffsetSection),hl
  1141.  
  1142.     ld (SongNoteCurrent),hl
  1143.  
  1144.     call UpdateSlider
  1145.  
  1146.     ret
  1147.  
  1148. playSection:
  1149.  
  1150.     push ix
  1151.  
  1152.     pop hl
  1153.  
  1154.     ld a,(hl)
  1155.  
  1156.     inc hl
  1157.  
  1158.     ld h,(hl)
  1159.  
  1160.     ld l,a
  1161.  
  1162.     ld de,(FilePtr)
  1163.  
  1164.     add hl,de
  1165.  
  1166.     ld de,(OffsetSection)
  1167.  
  1168.     add hl,de
  1169.  
  1170.     push hl
  1171.  
  1172.     pop ix
  1173.  
  1174. playNoteLoop:
  1175.  
  1176.     ld a,(ix+4)
  1177.  
  1178.     or (ix+5)
  1179.  
  1180.     jr z,playNextSection
  1181.  
  1182.     ld b,(ix+5)
  1183.  
  1184.     ld c,(ix+4)
  1185.  
  1186.     ld h,(ix+0)
  1187.  
  1188.     ld l,(ix+1)
  1189.  
  1190.     ld d,(ix+2)
  1191.  
  1192.     ld e,(ix+3)
  1193.  
  1194.     inc ix
  1195.  
  1196.     inc ix
  1197.  
  1198.     inc ix
  1199.  
  1200.     inc ix
  1201.  
  1202.     inc ix
  1203.  
  1204.     inc ix
  1205.  
  1206.     call playTone
  1207.  
  1208.     ld hl,(SongNoteCurrent)
  1209.  
  1210.     inc hl
  1211.  
  1212.     ld (SongNoteCurrent),hl
  1213.  
  1214.     call UpdateSlider
  1215.  
  1216.     ld a,KeyRow_Top
  1217.  
  1218.     out (1),a
  1219.  
  1220.     nop \ nop
  1221.  
  1222.     in a,(1)
  1223.  
  1224.     cp dkWindow
  1225.  
  1226.     jr z,playStop
  1227.  
  1228.     ld hl,(OffsetSection)
  1229.  
  1230.     ld de,6
  1231.  
  1232.     add hl,de
  1233.  
  1234.     ld (OffsetSection),hl
  1235.  
  1236.     jr playNoteLoop
  1237.  
  1238. playNextSection:
  1239.  
  1240.     ld hl,(OffsetTable)
  1241.  
  1242.     inc hl
  1243.  
  1244.     inc hl
  1245.  
  1246.     ld (OffsetTable),hl
  1247.  
  1248.     ld hl,0
  1249.  
  1250.     ld (OffsetSection),hl
  1251.  
  1252.     jp PlayNow
  1253.  
  1254.  
  1255.  
  1256. ; Play the tone dur=bc, period = h,l,d,e (4 channel sound - h,l = left speaker, d,e = right speaker)
  1257.  
  1258. playTone:
  1259.  
  1260.     di
  1261.  
  1262.     xor a
  1263.  
  1264.     ld (toneMask1+1),a
  1265.  
  1266.     ld (toneMask2+1),a
  1267.  
  1268.     inc b
  1269.  
  1270. ; INIT CHANNEL A
  1271.  
  1272.  
  1273.  
  1274.     ld a,h
  1275.  
  1276.     ld (toneAPitch+1),a
  1277.  
  1278.     or a
  1279.  
  1280.     jr z,isRestA
  1281.  
  1282.     ld a,1
  1283.  
  1284.     jr notRestA
  1285.  
  1286. isRestA:
  1287.  
  1288.     xor a
  1289.  
  1290. notRestA:
  1291.  
  1292.     ld (toneAChange+1),a
  1293.  
  1294.  
  1295.  
  1296. ; INIT CHANNEL B
  1297.  
  1298.  
  1299.  
  1300.     ld a,l
  1301.  
  1302.     ld (toneBPitch+1),a
  1303.  
  1304.     or a
  1305.  
  1306.     jr z,isRestB
  1307.  
  1308.     ld a,1
  1309.  
  1310.     jr notRestB
  1311.  
  1312. isRestB:
  1313.  
  1314.     xor a
  1315.  
  1316. notRestB:
  1317.  
  1318.     ld (toneBChange+1),a
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. ; INIT CHANNEL C
  1325.  
  1326.  
  1327.  
  1328.     ld a,d
  1329.  
  1330.     ld (toneCPitch+1),a
  1331.  
  1332.     or a
  1333.  
  1334.     jr z,isRestC
  1335.  
  1336.     ld a,2
  1337.  
  1338.     jr notRestC
  1339.  
  1340. isRestC:
  1341.  
  1342.     xor a
  1343.  
  1344. notRestC:
  1345.  
  1346.     ld (toneCChange+1),a
  1347.  
  1348.  
  1349.  
  1350. ; INIT CHANNEL D
  1351.  
  1352.  
  1353.  
  1354.     ld a,e
  1355.  
  1356.     ld (toneDPitch+1),a
  1357.  
  1358.     or a
  1359.  
  1360.     jr z,isRestD
  1361.  
  1362.     ld a,2
  1363.  
  1364.     jr notRestD
  1365.  
  1366. isRestD:
  1367.  
  1368.     xor a
  1369.  
  1370. notRestD:
  1371.  
  1372.     ld (toneDChange+1),a
  1373.  
  1374.  
  1375.  
  1376. toneMaskPreserve:
  1377.  
  1378.     push bc
  1379.  
  1380. toneMask:
  1381.  
  1382.     and 1
  1383.  
  1384.     jr z,playPart2
  1385.  
  1386.     ld a,(toneMask1+1)
  1387.  
  1388.     jr playPart1
  1389.  
  1390. playPart2:
  1391.  
  1392.     ld a,(toneMask2+1)
  1393.  
  1394. playPart1:
  1395.  
  1396.     out (bPort),a
  1397.  
  1398. pitchLoop:
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.     dec h
  1405.  
  1406.     jr nz,noPitchA
  1407.  
  1408. toneMask1:
  1409.  
  1410.     ld a,0
  1411.  
  1412. toneAChange:
  1413.  
  1414.     xor 0
  1415.  
  1416.     ld (toneMask1+1),a
  1417.  
  1418. toneAPitch:
  1419.  
  1420.     ld h,0
  1421.  
  1422. noPitchA:
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.     dec l
  1429.  
  1430.     jr nz,noPitchB
  1431.  
  1432. toneMask2:
  1433.  
  1434.     ld a,0
  1435.  
  1436. toneBChange:
  1437.  
  1438.     xor 0
  1439.  
  1440.     ld (toneMask2+1),a
  1441.  
  1442. toneBPitch:
  1443.  
  1444.     ld l,0
  1445.  
  1446. noPitchB:
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.     dec d
  1455.  
  1456.     jr nz,noPitchC
  1457.  
  1458.     ld a,(toneMask1+1)
  1459.  
  1460. toneCChange:
  1461.  
  1462.     xor 0
  1463.  
  1464.     ld (toneMask1+1),a
  1465.  
  1466. toneCPitch:
  1467.  
  1468.     ld d,0
  1469.  
  1470. noPitchC:
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.     dec e
  1477.  
  1478.     jr nz,noPitchD
  1479.  
  1480.     ld a,(toneMask2+1)
  1481.  
  1482. toneDChange:
  1483.  
  1484.     xor 0
  1485.  
  1486.     ld (toneMask2+1),a
  1487.  
  1488. toneDPitch:
  1489.  
  1490.     ld e,0
  1491.  
  1492. noPitchD:
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500. extendDuration:
  1501.  
  1502.     ld a,0
  1503.  
  1504.     dec a
  1505.  
  1506.     ld (extendDuration+1),a
  1507.  
  1508.     jr nz,toneMask
  1509.  
  1510.  
  1511.  
  1512.     ld a,KeyRow_Top
  1513.  
  1514.     pop bc
  1515.  
  1516.     out (1),a
  1517.  
  1518.     in a,(1)
  1519.  
  1520.     cp dkY
  1521.  
  1522.     jr nz,notTimeToQuit
  1523.  
  1524.     pop hl
  1525.  
  1526.     ret
  1527.  
  1528. notTimeToQuit:
  1529.  
  1530.     dec c
  1531.  
  1532.     jp nz,toneMaskPreserve
  1533.  
  1534.     dec b
  1535.  
  1536.     jp nz,toneMaskPreserve
  1537.  
  1538.  
  1539.  
  1540.     ret
  1541.  
  1542.  
  1543.  
  1544. LargeWinData:
  1545.  
  1546.     .db %01111000
  1547.  
  1548.     .db %01001000
  1549.  
  1550.     .db %01011000
  1551.  
  1552.     .db %11011000
  1553.  
  1554.     .db %11000000
  1555.  
  1556.     .db "mobileTunes 3.1",0
  1557.  
  1558. LargeWinDataE:
  1559.  
  1560. WinButtons:
  1561.  
  1562.     ;[which {-,[],X,00000}, onclick[-] {word}, onclick[] {word}, onclick[X] {word}]
  1563.  
  1564.     .db %00100000
  1565.  
  1566.     .dw 0,0
  1567.  
  1568.     .dw Quit
  1569.  
  1570. WinButtonsE:
  1571.  
  1572. Hotspot_Open:
  1573.  
  1574.     .db 78,43
  1575.  
  1576.     .db 13,10
  1577.  
  1578.     .dw Button_Open
  1579.  
  1580. Hotspot_OpenE:
  1581.  
  1582. Hotspot_PlayPause:
  1583.  
  1584.     .db 3,32
  1585.  
  1586.     .db 21,21
  1587.  
  1588.     .dw Button_PlayPause
  1589.  
  1590. Hotspot_PlayPauseE:
  1591.  
  1592. Hotspot_Stop:
  1593.  
  1594.     .db 26,44
  1595.  
  1596.     .db 9,9
  1597.  
  1598.     .dw Button_Stop
  1599.  
  1600. Hotspot_StopE:
  1601.  
  1602. Hotspot_Rev:
  1603.  
  1604.     .db 36,44
  1605.  
  1606.     .db 9,9
  1607.  
  1608.     .dw Button_Stop
  1609.  
  1610. Hotspot_RevE:
  1611.  
  1612. Hotspot_FF:
  1613.  
  1614.     .db 46,44
  1615.  
  1616.     .db 9,9
  1617.  
  1618.     .dw Button_FF
  1619.  
  1620. Hotspot_FFE:
  1621.  
  1622. TextLabelTemplate:
  1623.  
  1624.     .db 1,1
  1625.  
  1626.     .db 0
  1627.  
  1628.     .db 0,0,0,0,0,0,0,0
  1629.  
  1630.     .db 0,0,0,0,0,0,0,0
  1631.  
  1632.     .db 0,0,0,0,0,0,0,0
  1633.  
  1634.     .db 0,0,0,0,0,0,0,0
  1635.  
  1636. TextLabelTemplateE:
  1637.  
  1638. OriginalButtons:
  1639.  
  1640.     .db -1,29
  1641.  
  1642.     .db 12
  1643.  
  1644.     .db 25
  1645.  
  1646.     .db $00,$1F,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60,$30,$00
  1647.  
  1648.     .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$80,$0C,$00,$00,$00,$00,$00
  1649.  
  1650.     .db $00,$00,$00,$00,$02,$1F,$C2,$00,$00,$00,$00,$00,$00,$00,$00,$00
  1651.  
  1652.     .db $04,$7F,$F1,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$F8,$F8,$FF
  1653.  
  1654.     .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$01,$D1,$5C,$40,$00,$00,$00,$00
  1655.  
  1656.     .db $00,$00,$00,$00,$03,$EA,$3E,$40,$00,$00,$00,$00,$00,$00,$00,$00
  1657.  
  1658.     .db $07,$55,$57,$20,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FC,$07,$E3,$BF,$20
  1659.  
  1660.     .db $7F,$FF,$FF,$FF,$FF,$FF,$FF,$FC,$0F,$51,$57,$90,$7F,$FF,$FF,$FF
  1661.  
  1662.     .db $FF,$FF,$FF,$FC,$0F,$B0,$EF,$88,$00,$00,$00,$00,$00,$00,$00,$00
  1663.  
  1664.     .db $0D,$50,$57,$86,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$F0,$3F,$81
  1665.  
  1666.     .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$0E,$F0,$7B,$80,$00,$00,$00,$FF
  1667.  
  1668.     .db $FF,$FF,$00,$0E,$0F,$D0,$DF,$87,$C1,$F0,$7C,$1F,$FF,$FE,$FF,$F6
  1669.  
  1670.     .db $0F,$F1,$FF,$88,$22,$08,$82,$03,$FF,$FE,$C0,$F6,$07,$F3,$FF,$17
  1671.  
  1672.     .db $D5,$D5,$45,$00,$FF,$FE,$BF,$76,$07,$F7,$FF,$1C,$77,$9D,$F7,$00
  1673.  
  1674.     .db $7F,$FE,$A0,$16,$03,$FF,$FE,$1C,$77,$1D,$EF,$00,$3F,$FE,$AF,$D6
  1675.  
  1676.     .db $01,$FF,$FC,$1C,$77,$9D,$FF,$00,$1F,$FE,$9F,$B6,$00,$FF,$F8,$1F
  1677.  
  1678.     .db $F7,$DD,$EF,$00,$0F,$FE,$9F,$B6,$00,$7F,$F0,$0F,$E3,$F8,$FE,$00
  1679.  
  1680.     .db $07,$FE,$C0,$76,$00,$1F,$C0,$07,$C1,$F0,$7C,$00,$01,$FF,$7F,$EE
  1681.  
  1682.     .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$FE
  1683.  
  1684. OriginalButtonsE:
  1685.  
  1686. PlayPauseMask:
  1687.  
  1688.     .db 10,36
  1689.  
  1690.     .db 12
  1691.  
  1692. .db $04,$82,$2C,$92,$BE,$AA,$B8,$9A,$BE,$B6,$A6,$86
  1693.  
  1694. PlayPauseMaskE:
  1695.  
  1696.  
  1697.  
  1698. SmallWinAbout:
  1699.  
  1700.     .db 8,8
  1701.  
  1702.     .db %01111000
  1703.  
  1704.     .db %01001000
  1705.  
  1706.     .db %01011000
  1707.  
  1708.     .db %11011000
  1709.  
  1710.     .db %11000000
  1711.  
  1712.     .db "mt3 | About",0
  1713.  
  1714. SmallWinAboutE:
  1715.  
  1716. SmallWinButtons:
  1717.  
  1718.     ;[which {-,[],X,00000}, onclick[-] {word}, onclick[] {word}, onclick[X] {word}]
  1719.  
  1720.     .db %00100000
  1721.  
  1722.     .dw 0,0
  1723.  
  1724.     .dw DispAboutClose
  1725.  
  1726. SmallWinButtonsE:
  1727.  
  1728. SmallWinAboutT1:
  1729.  
  1730.     .db 1,1,0,"mobileTunes v3.1",0
  1731.  
  1732. SmallWinAboutT2:
  1733.  
  1734.     .db 1,8,0,"By Kerm Martian",0
  1735.  
  1736. SmallWinAboutT3:
  1737.  
  1738.     .db 1,15,0,"July 25, 2010",0
  1739.  
  1740. SmallWinAboutT4:
  1741.  
  1742.     .db 1,22,0,"www.cemetech.net",0
  1743.  
  1744. SmallWinAboutT5:
  1745.  
  1746. .end
  1747.  
  1748. END
Advertisement
Add Comment
Please, Sign In to add comment