30 May 2015, 15:35 | #1 |
Registered User
Join Date: Nov 2010
Location: Germany
Posts: 117
|
Can someone explain this Suntronic ASM code?
Hi,
this is the well-known "sound-exe" by TSM (soundformat called Suntronic) used in many cracktros. Can somebody explain me this code? I just want to play around with it... add/change patterns, melody, ... Code (some parts truncated, full code attached!): Code:
SECTION " 0",CODE L_0 MOVEA.L 4.L,A6 MOVE.L #$000001A0,D0 MOVEQ #3,D1 JSR -$00C6(A6) MOVE.L D0,VOICEDATA_ADR MOVEA.L D0,A0 MOVE.W #$0067,D0 CLEARVD CLR.L (A0)+ DBRA D0,CLEARVD MOVEA.L VOICEDATA_ADR,A0 LEA PATTERNS,A1 MOVE.W #3,D0 INIT MOVE.L (A1)+,(A0) MOVE.B #-1,$0014(A0) ADDA.L #$00000068,A0 DBRA D0,INIT MOVEA.L VOICEDATA_ADR,A0 MOVE.W #3,D0 INIT1 MOVE.B (A1)+,$0066(A0) ADDA.L #$00000068,A0 DBRA D0,INIT1 MOVEA.L 4.L,A6 LEA DATA,A1 CLR.L D0 JSR -$0198(A6) MOVEA.L D0,A6 MOVEA.L A6,A3 LEA INSTLENGTHS,A5 LEA INSTLENGTHS,A4 LEA INSTADRS,A2 INIT3 MOVE.L A5,D1 MOVE.L #$000003ED,D2 JSR -$001E(A6) MOVE.L D0,D7 BEQ.B ENDOFREAD CLR.L D0 MOVE.L (A4),D0 MOVEQ #3,D1 MOVEA.L 4.L,A6 JSR -$00C6(A6) MOVE.L D0,(A2) MOVE.L D0,D2 MOVE.L D7,D1 CLR.L D3 MOVE.L (A4)+,D3 MOVEA.L A3,A6 JSR -$002A(A6) MOVEA.L (A2)+,A1 CLR.L (A1) MOVE.L D7,D1 JSR -$0024(A6) INIT2 TST.B (A5)+ BNE.B INIT2 TST.L (A4) BNE.B INIT3 ENDOFREAD MOVEA.L A6,A1 MOVEA.L 4.L,A6 JSR -$019E(A6) LEA INSTRUMENTS2,A0 LEA INSTADRS,A1 INIT4 TST.L (A0) BEQ.W ENDOFINIT MOVE.L $0012(A0),D0 LSL.L #2,D0 MOVE.L (A1,D0.W),$0012(A0) ADDA.L #$0000001C,A0 BRA.B INIT4 ENDOFINIT MOVE.L $0000006C.L,OLDINT MOVE.L #NEWINT,$0000006C.L LOOP BTST #6,$00BFE001.L BNE.B LOOP MOVEA.L 4.L,A6 MOVEA.L VOICEDATA_ADR,A1 MOVE.L #$000001A0,D0 JSR -$00D2(A6) LEA INSTADRS,A5 LEA INSTLENGTHS,A4 END1 TST.L (A4) BEQ.B ENDOFEND TST.L (A5) BEQ.B ENDOFEND CLR.L D0 MOVE.L (A4)+,D0 MOVEA.L (A5)+,A1 JSR -$00D2(A6) BRA.B END1 ENDOFEND MOVE.L OLDINT,$0000006C.L MOVE.W #$000F,$00DFF096.L CLR.W D0 RTS NEWINT DC.B 'H' DC.B -$19 DC.W -$3F3A DC.B 'A' DC.B -7 DC.W $DF DC.W -$1000 DC.B ',y',0 DC.B 0 DC.W 4 DC.B '2(',0 DC.B $1C DC.W $801 DC.W $E DC.B 'g<' DC.W -$3D98 DC.W $1E DC.W $801 DC.W 6 DC.B 'g' DC.B $C DC.B 'L' DC.B -$12 DC.B '"',0 DC.W $9C DC.B 'Hn' DC.W -$24 DC.B 'N' [... see attachment for more code here ...] DC.B 'Nu' DATA DC.B 'dos.library',0 OLDINT DC.W 0 DC.W 0 DC.W $5FF DC.W $600 DC.W 0 VOICEDATA_ADR DC.W 0 DC.W 0 INSTLENGTHS DC.W 0 DC.W 0 INSTADRS DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W $3E DC.W $47 DC.W $4B DC.W $50 [ ... ] DC.W $FE0 DC.L HUELL5 DC.W 4 DC.W 3 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA6 DC.W 6 DC.W 5 DC.L INSTR6 DC.W 0 DC.W 0 DC.L HUELL1 DC.W 1 DC.W 0 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA5 DC.W 3 DC.W 2 DC.L INSTR4 DC.W 0 DC.W 0 DC.L HUELL1 DC.W 1 DC.W 0 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA4 DC.W 3 DC.W 2 DC.L INSTR4 DC.W 0 DC.W 0 DC.L HUELL4 DC.W 6 DC.W 5 DC.L VIB2 DC.W 3 DC.W 2 DC.W $1F40 DC.L MEGA3 DC.W 9 DC.W 8 DC.L INSTR6 DC.W 0 DC.W 0 DC.L HUELL1 DC.W 6 DC.W 5 DC.L VIB2 DC.W 3 DC.W 2 DC.W $1F40 DC.L MEGA4 DC.W 3 DC.W 2 DC.L INSTR4 DC.L INSTR7 DC.L HUELL3 DC.W 6 DC.W 5 DC.L VIB2 DC.W 3 DC.W 2 DC.W $1F40 DC.L MEGA4 DC.W 3 DC.W 2 DC.L INSTR6 DC.W 0 DC.W 0 DC.L HUELL5 DC.W 4 DC.W 3 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA7 DC.W 6 DC.W 5 DC.L INSTR7 DC.W 0 DC.W 0 DC.L HUELL5 DC.W 4 DC.W 3 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA8 DC.W 6 DC.W 5 DC.L INSTR7 DC.W 0 DC.W 0 DC.L HUELL5 DC.W 4 DC.W 3 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA9 DC.W 6 DC.W 5 DC.L INSTR7 DC.W 0 DC.W 0 DC.L HUELL5 DC.W 4 DC.W 3 DC.L VIB2 DC.W 2 DC.W 1 DC.W $1F40 DC.L MEGA10 DC.W 6 DC.W 5 DC.L INSTR7 DC.W 0 DC.W 0 INSTRUMENTS2 DC.W 0 DC.W 0 PATTERNS DC.L X2 DC.L X3 DC.L X6 DC.L X19 DC.W $303 DC.W $303 DC.L X2 DC.L X4 DC.L X7 DC.L X20 DC.W $303 DC.W $303 DC.L X2 DC.L X5 DC.L X1 DC.L X1 DC.W $303 DC.W $303 [....] DC.L X28 DC.L X32 DC.L X36 DC.L X40 DC.W $803 DC.W $303 DC.W 0 DC.W 0 VIB2 DC.W $A0A DC.B $1E HUELL1 DC.B '@6,"' DC.B $18 DC.W $E40 DC.W $1C36 DC.B '2/,' HUELL3 DC.B '<2(' DC.W $1E14 DC.B $A HUELL4 DC.B ',' DC.W $1C22 DC.W $1414 DC.B $14 HUELL5 DC.B '@2(@' MEGA4 DC.B '2' DC.W $A05 DC.B 0 MEGA3 DC.B 0 DC.W $102 DC.W $408 DC.W $1020 DC.B '@',0 MEGA5 DC.W $1428 DC.B '2FP',0 MEGA6 DC.W $A14 DC.W $1E23 DC.B '(',0 MEGA7 DC.W $F19 DC.B '#(-' DC.B $1E MEGA8 DC.W $141E DC.B '(-2<' MEGA9 DC.W $1923 DC.B '-27Z' MEGA10 DC.W $1E28 DC.B '27<x' INSTR4 DC.B 'xndZPF<2(' DC.B $1E DC.W $140A DC.W $78 DC.B 'ndZPF<2(' DC.W $1E14 DC.W $A00 DC.W 0 DC.W 0 DC.W 0 DC.W $7D DC.W $7E7F DC.W $7F7F DC.W $7F7F DC.W $7F7F DC.W $7F7F DC.W $7F7E DC.B '}',0 DC.W $7D DC.W $7E7F DC.W $7F7F DC.W $7F7F DC.W $7F7F DC.W $7F7F DC.W $7F7E DC.B '}',0 INSTR6 DC.W $102 [...] INSTR7 DC.W $49 DC.B 'H$D' [...] X1 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 X2 DC.B 'Ä@' DC.W -$66C0 DC.W -$67FB DC.W 0 DC.B 'ÄF',0 DC.B 0 DC.B 'ÄG',0 DC.B 0 DC.B 'ÄH',0 DC.B 0 DC.B 'ÄI',0 DC.B 0 DC.B 'ÄH',0 DC.B 0 DC.B 'ÄG',0 DC.B 0 DC.B 'ÄF',0 DC.B 0 X3 DC.W -$17BF DC.W -$66C0 DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FE DC.W 0 DC.W 0 X4 DC.W -$17BF DC.W -$66C0 DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FD DC.W 0 DC.W 0 X5 DC.W -$17BF DC.W -$66C0 DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W -$17BE DC.W -$63FE DC.W 0 X6 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 X7 DC.W 0 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W -$15BD DC.W 0 DC.W -$14BD DC.W 0 DC.W -$12BD DC.W 0 DC.W -$19BD DC.W 0 DC.W 0 DC.W -$17BD DC.W 0 X8 DC.W 0 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W -$15BD DC.W 0 DC.W -$14BD DC.W 0 DC.W -$12BD DC.W 0 DC.W -$19BD DC.W 0 DC.W 0 DC.W -$1CBD DC.W 0 X9 DC.W -$17BE DC.W -$66C0 DC.W -$63FC DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FB DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W 0 X10 DC.W -$17BE DC.W -$66C0 DC.W -$63FC DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FB DC.W 0 DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 X11 DC.W -$17BE DC.W -$63FF DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FF DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FB DC.W 0 DC.W 0 DC.W -$17BF DC.W -$63FE DC.W 0 DC.W -$17BE DC.W -$63FF DC.W 0 X12 DC.W 0 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W -$15BD DC.W 0 DC.W -$17BD DC.W 0 DC.W -$FBD DC.W 0 DC.W -$10BD DC.W 0 DC.W 0 DC.W -$17BD DC.W 0 X13 DC.W 0 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W -$15BD DC.W 0 DC.W -$17BD DC.W 0 DC.W -$FBD DC.W 0 DC.W -$10BD DC.W 0 DC.W -$14BD DC.W 0 DC.W -$17BD DC.W 0 X14 DC.W 0 DC.W -$17BD DC.W -$66C0 DC.W 0 DC.W -$15BD DC.W 0 DC.W -$17BD DC.W 0 DC.W -$FBD DC.W 0 DC.W -$10BD DC.W 0 DC.W -$14BD DC.W 0 DC.W -$17BD DC.W -$63FF DC.W 0 X15 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W -$64EC DC.W 0 DC.W 0 DC.W 0 DC.W 0 X16 DC.W 0 DC.W -$1CBD DC.W 0 DC.W -$19BD DC.W 0 DC.W -$1CBD DC.W 0 DC.W 0 DC.W -$17BD DC.W 0 DC.W 0 DC.W -$1CBD DC.W 0 X17 DC.W -$19BD DC.W 0 DC.W -$1CBD DC.W 0 DC.W 0 DC.W 0 DC.W -$17BD DC.W 0 DC.W -$14BD DC.W 0 DC.W -$15BD DC.W 0 DC.W -$17BD DC.W 0 DC.W -$FBD DC.W -$6700 DC.W $E8 DC.B 'C',0 DC.W -$10BD DC.W $E8 DC.B 'C',0 DC.W -$FBD DC.W $E8 DC.B 'C',0 DC.W -$10BD DC.W $E8 DC.B 'C',0 DC.W -$FBD DC.W $E8 DC.B 'C',0 DC.W -$10BD DC.W $E8 DC.B 'C',0 DC.W -$FBD DC.W $E8 DC.B 'C',0 DC.W -$10BD DC.W $E8 DC.B 'C',0 X19 DC.W $E8 DC.B 'E' DC.B -$67 DC.B '@',0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 X20 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $EB DC.B 'E',0 DC.W $ED DC.B 'E',0 DC.W $E6 DC.B 'E',0 DC.W 0 DC.W $E8 DC.B 'E',0 X21 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $EB DC.B 'E',0 DC.W $ED DC.B 'E',0 DC.W $E6 DC.B 'E',0 DC.W 0 DC.W $E3 DC.B 'E',0 X22 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $E8 DC.B 'E',0 DC.W $F0 DC.B 'E',0 DC.W $EF DC.B 'E',0 DC.W 0 DC.W $E8 DC.B 'E',0 X23 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $E8 DC.B 'E',0 DC.W $F0 DC.B 'E',0 DC.W $EF DC.B 'E',0 DC.W $EB DC.B 'E',0 DC.W $E8 DC.B 'E',0 X24 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $E8 DC.B 'E',0 DC.W $F0 DC.B 'E',0 DC.W $EF DC.B 'E',0 DC.W $EB DC.B 'E',0 DC.W $E8 DC.B 'E' DC.B -$64 DC.W $100 X25 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W $9B DC.B '<',0 DC.W 0 DC.W 0 DC.W 0 X26 DC.W 0 DC.W $E3 DC.B 'E',0 DC.W $E6 DC.B 'E',0 DC.W $E3 DC.B 'E',0 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W 0 DC.W $E3 DC.B 'E',0 X27 DC.W $E6 DC.B 'E',0 DC.W $E3 DC.B 'E',0 DC.W 0 DC.W 0 DC.W $E8 DC.B 'E',0 DC.W $EB DC.B 'E',0 DC.W $EA DC.B 'E',0 DC.W $E8 DC.B 'E',0 X28 DC.B 'Ä@' DC.W -$66C0 DC.W -$67FB DC.W 0 DC.B 'ÄF',0 DC.B 0 DC.B 'ÄG',0 DC.B 0 DC.B 'ÄH',0 DC.B 0 DC.B 'ÄI',0 DC.B 0 DC.B 'ÄH',0 DC.B 0 DC.B 'ÄG',0 DC.B 0 DC.B 'ÄF',0 DC.B 'ÄF',0 X29 DC.W -$1EBF DC.W -$66C0 DC.W -$63FD DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63FD DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W 0 X30 DC.W -$1EBF DC.W -$63FD DC.W 0 DC.W -$1EBF DC.W -$63FD DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63FF DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 X31 DC.W -$1EBF DC.W -$66C0 DC.W -$63FE DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63FE DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63FE DC.W 0 DC.W 0 X32 DC.W -$1EBF DC.W -$63FA DC.W 0 DC.W -$1EBF DC.W -$63FA DC.W 0 DC.W 0 DC.W -$1EBF DC.W -$63F9 DC.W 0 DC.W 0 DC.W 0 DC.W 0 DC.W 0 X33 DC.W 0 DC.B 'ßC' DC.W -$66C0 DC.W 0 DC.W -$1EBD DC.W 0 DC.B 'ßC',0 DC.B 0 DC.W -$1EBD DC.W 0 DC.W $E4 DC.B 'C',0 DC.W 0 DC.W -$1EBD DC.B 0 X34 DC.B 0 DC.W $DF DC.B 'C' DC.B -$67 DC.B '@',0 DC.W $E1 DC.B 'C',0 DC.W $DF DC.B 'C',0 DC.W $E1 DC.B 'C',0 DC.W 0 DC.W -$19BD DC.W 0 DC.W $E1 DC.B 'C',0 X35 DC.W 0 DC.B 'ßC' DC.W -$66C0 DC.W 0 DC.W -$1EBD DC.W 0 DC.B 'ßC',0 DC.B 0 DC.W -$1EBD DC.W 0 DC.W $E8 DC.B 'C',0 DC.W 0 DC.W -$1EBD DC.B 0 X36 DC.B 0 DC.W $EB DC.B 'C' DC.B -$67 DC.B '@',0 DC.W 0 DC.W $E8 DC.B 'C',0 DC.W 0 DC.W $EB DC.B 'C',0 DC.W 0 DC.W $ED DC.B 'C',0 X37 DC.W 0 DC.W $DF DC.B 'C' DC.B -$67 DC.B '@',0 DC.W $E1 DC.B 'C',0 DC.W $DF DC.B 'C',0 DC.W $E1 DC.B 'C',0 DC.W 0 DC.B 'äC',0 DC.B 0 DC.B 0 X38 DC.B -$1F DC.B 'C',0 DC.W 0 DC.B 'ßC' DC.W -$66C0 DC.W 0 DC.W -$1EBD DC.W 0 DC.B 'ßC',0 DC.B 0 DC.W -$1EBD DC.W 0 DC.W $E6 DC.B 'C',0 DC.W 0 X39 DC.W -$1EBD DC.W 0 DC.W $DF DC.B 'C' DC.B -$67 DC.B '@',0 DC.W $E1 DC.B 'C',0 DC.W $DF DC.B 'C',0 DC.W $E1 DC.B 'C',0 DC.W 0 DC.W -$17BD DC.W 0 DC.B 0 X40 DC.B -$1F DC.B 'C',0 DC.W 0 DC.W -$14BD DC.W -$66C0 DC.W 0 DC.W 0 DC.W -$17BD DC.W 0 DC.W 0 DC.W -$14BD DC.W 0 DC.W 0 DC.W -$12BD DC.B 0 [...] 4 channels and "DC.W $303" is a delimiter for the next pattern? X2,X3,X6 and X19 are channels full of melody? So you are very flexible and can assign easily other melodies into the channel of a pattern? Code:
DC.L X2 DC.L X3 DC.L X6 DC.L X19 DC.W $303 DC.W $303 |
31 May 2015, 17:32 | #2 | |
AMOS Extensions Developer
Join Date: Jun 2007
Location: near Cambridge, UK
Age: 44
Posts: 1,924
|
Quote:
I was waiting for somone more experienced to answer this, but I shall jump in for now... Yes, it looks to me like you are correct. X2, X3, X6 and X19 are all address pointers to (audio?) data later in the code. |
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Looking for Ultimate Soundtracker ASM source code | 8bitbubsy | Coders. Asm / Hardware | 1 | 13 April 2013 00:17 |
Wanting to start learning to code amiga in asm | fishyfish | Coders. Asm / Hardware | 5 | 03 March 2012 06:11 |
Problems with a little ASM code | VoltureX | Coders. General | 7 | 12 December 2011 13:10 |
Rip suntronic tunes | bLAZER | request.Modules | 23 | 05 January 2009 18:45 |
Lots of ASM code | Ray Norrish | Coders. General | 9 | 22 February 2006 02:20 |
|
|