Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #COMPILE EXE
- #DIM NONE
- FUNCTION PBMAIN () AS LONG
- PRINT "XM2ESF - Convert XM to Echo Stream Format"
- PRINT ""
- PRINT "
- IF COMMAND$ = "" THEN
- PRINT "usage: xm2esf <infile> <outfile>"
- END IF
- OPEN COMMAND$(1) FOR INPUT AS #1
- DIM xmfm&(1 TO 6)
- DIM xmpsg&(1 TO 3)
- DIM fm&
- DIM psg&
- WHILE setting$ <> "[Instruments]"
- LINE INPUT #1, setting$
- IF MID$(setting$, 1, 1) <> "#" THEN
- SELECT CASE spleft(setting$)
- CASE "FILE"
- xm$ = param(setting$, 1)
- PRINT "XM File: " + xm$
- CASE "TYPE"
- SELECT CASE param(setting$, 1)
- CASE "BGM"
- filetype& = 1
- CASE "SFX"
- filetype& = 2
- END SELECT
- SELECT CASE param(setting$, 2)
- CASE "LOOP"
- esfloop& = 1
- IF filetype& = 2 THEN
- PRINT "INPUT file errorneously declares LOOP WHILE being a SFX. File rejected."
- PRINT "Press ANY KEY!"
- WAITKEY$
- CLOSE
- EXIT FUNCTION
- END IF
- CASE "NOLOOP"
- esfloop& = 0
- END SELECT
- CASE "FM"
- fm& = VAL(param(setting$, 1))
- IF fm > 6 THEN
- PRINT "Declared more than 6 FM channels. Press ANY KEY!"
- WAITKEY$:CLOSE:EXIT FUNCTION
- END IF
- CASE "PSG"
- psg& = VAL(param(setting$, 1))
- IF psg& > 3 THEN
- PRINT "Declared more than 3 PSG channels. Press ANY KEY!"
- PRINT "Press ANY KEY!"
- WAITKEY$
- CLOSE
- EXIT FUNCTION
- END IF
- CASE "PCM"
- IF fm& = 6 THEN
- PRINT "INPUT file errorneously declares PCM even though 6 FM channels are used"
- PRINT "Press ANY KEY!"
- WAITKEY$
- CLOSE
- EXIT FUNCTION
- END IF
- CASE "NOISE"
- noise& = VAL(param(setting$, 1))
- CASE "FM1"
- xmfm&(1) = VAL(param(setting$, 1))
- CASE "FM2"
- xmfm&(2) = VAL(param(setting$, 1))
- CASE "FM3"
- xmfm&(3) = VAL(param(setting$, 1))
- CASE "FM4"
- xmfm&(4) = VAL(param(setting$, 1))
- CASE "FM5"
- xmfm&(5) = VAL(param(setting$, 1))
- CASE "FM6"
- xmfm&(6) = VAL(param(setting$, 1))
- CASE "PCMC"
- xmpcm& = VAL(param(setting$,1))
- CASE "PSG1"
- xmpsg&(1) = VAL(param(setting$, 1))
- CASE "PSG2"
- xmpsg&(2) = VAL(param(setting$, 1))
- CASE "PSG3"
- xmpsg&(3) = VAL(param(setting$, 1))
- CASE "PSGN"
- xmnoise& = VAL(param(setting$, 1))
- END SELECT
- END IF
- WEND
- s$ = "loadxm " + xm$
- PRINT "SHELL STEP: " + s$
- SHELL s$
- 'INSTRUMENT ASSIGNMENTS TODO
- 'PITCH TODO
- 'ACTUAL CONVERSION TODO ROFL
- END FUNCTION
- FUNCTION param(strn$, b&) AS STRING
- c& = 0
- i& = 1
- car$ = MID$(strn$, 1, 1)
- IF car$ = CHR$(34) THEN
- comp$ = CHR$(34)
- i& = 2
- car$ = MID$(strn$, 2, 1)
- ELSE
- comp$ = " "
- END IF
- WHILE c& <> b&
- WHILE car$ <> comp$
- SPEFT$ = SPEFT$ + car$
- i& = i& + 1
- car$ = MID$(strn$, i&, 1)
- IF i& > LEN(strn$) THEN
- SPEFT$ = ""
- param = SPEFT$
- EXIT FUNCTION
- END IF
- WEND
- i& = i& + 1
- c& = c& + 1
- ' SPEFT$ = MID$(strn$, i&, 1)
- car$ = SPEFT$
- WEND
- param = RTRIM$(spleft(MID$(strn$,i&)))
- END FUNCTION
- FUNCTION SPLEFT(strn$) AS STRING
- i& = 1
- car$ = MID$(strn$, 1, 1)
- IF car$ = CHR$(34) THEN
- comp$ = CHR$(34)
- i& = 2
- car$ = MID$(strn$, 2, 1)
- ELSE
- comp$ = " "
- END IF
- WHILE car$ <> comp$
- SPEFT$ = SPEFT$ + car$
- i& = i& + 1
- car$ = MID$(strn$, i&, 1)
- IF i& > LEN(strn$) THEN
- SPLEFT = SPEFT$ + cars$
- EXIT FUNCTION
- END IF
- WEND
- SPLEFT = SPEFT$
- END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement