***************************************************** ** KRIS Converter by Vampire / PseudoDOS Group ** ** ----------------------------------------------- ** ** converts a KRIS-Track into a M.K.tracker-Module ** ** ----------------------------------------------- ** ** the KRIS-Track must be loaded to (kris) ** ** the NT-Mod ranges from (mt_a) to ($000) ** ** abort converting by pressing the left one ** ***************************************************** >extern "dh0:code/kris",kris ; still important !! kris = $50000 mt_a = $d00000 TestProg: move.l $4.w,a6 jsr -132(a6) jsr x_init clr.l readyflag lea mt_a,a1 ; to place ST-mod here lea kris,a0 moveq #4,d0 hdr_1 move.l (a0)+,(a1)+ dbf d0,hdr_1 addq.l #2,a0 moveq #30,d0 hdr_smp moveq #6,d1 hdr_2 move.l (a0)+,(a1)+ dbf d1,hdr_2 lsr.w -2(a1) move.w (a0)+,(a1)+ dbf d0,hdr_smp moveq #0,d0 move.b 4(a0),d0 move.b d0,(a1)+ move.b #$7f,(a1)+ lea $80(a1),a0 moveq #0,d1 subq.b #1,d0 hdr_3 move.b d1,(a1)+ addq.b #1,d1 dbf d0,hdr_3 move.l a0,a1 move.l #"M.K.",(a1)+ move.l a1,mt_actadr loop: move.w #$f00,$dff180 ; pattern loop jsr x_music move.w #$00f,$dff180 tst.w readyflag beq.s loop move.l smplanf(pc),a0 move.l mt_actadr(pc),a1 smp_1 move.w (a0)+,(a1)+ cmp.l smplend(pc),a0 bne.s smp_1 move.l a1,mt_actadr move.l $4.w,a6 jsr -138(a6) rts readyflag: dc.w 0 actnote: dc.w 0 acteff: dc.w 0 actdat: dc.w 0 mt_actadr: dc.l 0 smplanf: dc.l 0 smplend: dc.l 0 x_init lea kris,A0 LEA $03BE(A0),A1 MOVEQ #0,D0 MOVE.B $03BC(A0),D0 ADD.W D0,D0 ADD.W D0,D0 SUBQ.W #1,D0 MOVEQ #0,D1 L_0000002C MOVE.B (A1),D2 CMP.B D1,D2 BLS.S L_00000034 MOVE.B D2,D1 L_00000034 ADDQ.L #2,A1 DBRA D0,L_0000002C ADDQ.W #1,D1 MULU.w #$0100,D1 LEA $07C0(A0),A1 LEA (A1,D1.W),A1 LEA $0016(A0),A2 MOVEQ #$001E,D0 move.l a1,smplanf L_00000052 move.l a1,smplend MOVEQ #0,D1 MOVE.W $0016(A2),D1 ADD.L D1,D1 CMPI.W #1,$001C(A2) BEQ.S L_00000084 MOVEQ #0,D2 MOVE.W $001A(A2),D2 LEA (A1,D2.L),A6 L_00000084 ADDA.L D1,A1 LEA $001E(A2),A2 DBRA D0,L_00000052 LEA x_pos(PC),A5 CLR.L 0(A5) ; songpos CLR.L 8(A5) CLR.L 4(A5) MOVE.W #6,6(A5) RTS x_music LEA x_pos(PC),A5 LEA kris,A3 LEA $03BE(A3),A3 MOVE.w (A5),D0 LSL.W #3,D0 LEA (A3,D0.W),A3 LEA x_voicedat(PC),A2 CLR.W 8(A5) MOVEQ #1,D7 MOVEQ #3,D6 x_voiceloop ; d6=dbf clr.l actnote TST.W $0020(A2) BNE x_novoc MOVEQ #0,D0 MOVE.B (A3),D0 mulu.w #$100,d0 lea kris+$7c0,A0 lea (A0,D0.W),A0 ADDA.W 2(A5),A0 move.w 2(a0),acteff ; effect MOVE.L (A0),$0014(A2) TST.B $0015(A2) BEQ.S L_000003F6 MOVEQ #0,D0 MOVE.B $0015(A2),D0 move.b d0,d1 and.b #$f0,d1 or.b d1,actnote move.b d0,d1 lsl.b #4,d1 or.b d1,acteff LSL.W #4,D0 LEA x_voicedat,A0 LEA (A0,D0.W),A0 MOVE.L (A0)+,6(A2) MOVE.W (A0)+,$000A(A2) MOVE.L (A0)+,$000C(A2) MOVE.W (A0)+,$0010(A2) MOVE.W (A0),2(A2) L_000003F6 MOVEQ #0,D0 MOVE.B $0014(A2),D0 CMP.B #$a8,D0 BEQ.S L_00000464 LEA x_perio(PC),A0 MOVE.B 1(A3),D1 BEQ.S L_00000418 EXT.W D1 ADD.W D1,D1 ADD.W D1,D0 L_00000418 MOVE.W D0,$0018(A2) MOVE.W (A0,D0.W),D0 or.w d0,actnote CMPI.B #3,$0016(A2) BNE.S L_00000444 MOVE.W D0,$001C(A2) CLR.B $001A(A2) CMP.W 0(A2),D0 BEQ.S L_0000043E BGE.S L_00000464 ADDQ.B #1,$001A(A2) BRA.S L_00000464 L_0000043E CLR.W $001C(A2) BRA.S L_00000464 L_00000444 MOVE.W D0,0(A2) CLR.B $001F(A2) OR.W D7,8(A5) L_00000464 x_novoc LEA $0022(A2),A2 ADDQ.L #2,A3 ADD.W D7,D7 move.l actnote(pc),(a1)+ DBRA D6,x_voiceloop TST.W $000A(A5) BNE.S L_00000492 ADDQ.W #4,2(A5) CMPI.W #$0100,2(A5) BNE.S L_000004B2 L_00000492 CLR.W $000A(A5) CLR.W 2(A5) ADDQ.W #1,0(A5) MOVE.B kris+$3BC,D0 ; anz patterns CMP.B 1(A5),D0 BNE.S nonew move.w #$ff,readyflag nonew: add.l #$400,mt_actadr move.l mt_actadr,a1 L_000004B2 ORI.W #-$7E00,8(A5) RTS x_voicedat blk.L $34,0 x_perio DC.W $1AC0,$1940,$17D0,$1680,$1530,$1400,$12E0,$11D0,$10D0 DC.W $FE0,$F00,$E28,$D60,$CA0,$BE8,$B40,$A98,$A00,$970,$8E8 DC.W $868,$7F0,$780,$714,$6B0,$650,$5F4,$5A0,$54C,$500,$4B8 DC.W $474,$434,$3F8,$3C0,$38A,$358,$328,$2FA,$2D0,$2A6,$280 DC.W $25C,$23A,$21A,$1FC,$1E0,$1C5,$1AC,$194,$17D,$168,$153 DC.W $140,$12E,$11D,$10D,$FE,$F0,$E2,$D6,$CA,$BE,$B4,$AA,$A0 DC.W $97,$8F,$87,$7F,$78,$71,0,0,0 x_pos BLK.L 5,0 .