annotate tools/mod2wav.c @ 1606:93d1050eac99

Rename dmf_create_*() functions to dmf_open_*().
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 14 May 2018 11:20:05 +0300
parents ad3ad5d9681b
children c3e88d9343ca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 * mod2wav - Render XM/JSSMOD module to WAV waveform file
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 * Programmed and designed by Matti 'ccr' Hamalainen
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 * (C) Copyright 2007 Tecnic Software productions (TNSP)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 *
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 * Please read file 'COPYING' for information on license and distribution.
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 */
1432
a9516570cc26 Improve build, so that we can build the tools and tests with minimal
Matti Hamalainen <ccr@tnsp.org>
parents: 1235
diff changeset
8 #include "dmtool.h"
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 #include <stdio.h>
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 #include <stdlib.h>
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 #include "jss.h"
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 #include "jssmod.h"
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 #include "jssmix.h"
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 #include "jssplr.h"
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 #include "dmlib.h"
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 #include "dmargs.h"
206
9b6c0ed66960 Use the routines factored into dmwav module.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
17 #include "dmwav.h"
285
245b15cd1919 Don't link libSDL uselessly to utilities that do not actually use it.
Matti Hamalainen <ccr@tnsp.org>
parents: 206
diff changeset
18 #include "dmmutex.h"
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20
300
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
21 char *optInFilename = NULL, *optOutFilename = NULL;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 int optOutFormat = JSS_AUDIO_S16,
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 optOutChannels = 2,
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 optOutFreq = 44100,
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 optMuteOChannels = -1,
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 optStartOrder = -1;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 BOOL optUsePlayTime = FALSE;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 size_t optPlayTime;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30
860
daebbf28953d The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
31 static const DMOptArg optList[] =
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
32 {
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
33 { 0, '?', "help", "Show this help", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
34 { 2, 'v', "verbose", "Be more verbose", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
35 { 3, '1', "16bit", "16-bit output", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
36 { 4, '8', "8bit", "8-bit output", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
37 { 5, 'm', "mono", "Mono output", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
38 { 6, 's', "stereo", "Stereo output", OPT_NONE },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
39 { 7, 'f', "freq", "Output frequency", OPT_ARGREQ },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
40 { 8, 'M', "mute", "Mute other channels than #", OPT_ARGREQ },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
41 { 9, 'o', "order", "Start from order #", OPT_ARGREQ },
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
42 { 10, 't', "time", "Play for # seconds", OPT_ARGREQ },
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 // {10, 'l', "loop", "Loop for # times", OPT_ARGREQ },
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 };
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 const int optListN = sizeof(optList) / sizeof(optList[0]);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 BOOL argHandleOpt(const int optN, char *optArg, char *currArg)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 {
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 (void) optArg;
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
52
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
53 switch (optN)
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
54 {
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
55 case 0:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
56 dmPrintBanner(stdout, dmProgName,
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
57 "[options] [sourcefile] [destfile]");
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
58
860
daebbf28953d The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
59 dmArgsPrintHelp(stdout, optList, optListN, 0);
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
60 exit(0);
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
61 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
63 case 2:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
64 dmVerbosity++;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
65 break;
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
66
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
67 case 3:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
68 optOutFormat = JSS_AUDIO_S16;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
69 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
71 case 4:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
72 optOutFormat = JSS_AUDIO_U8;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
73 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
75 case 5:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
76 optOutChannels = JSS_AUDIO_MONO;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
77 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
79 case 6:
38
8b04b0b51edc Oops, fix a stupid bug in -s option .. it was setting the wrong variable. :|
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
80 optOutChannels = JSS_AUDIO_STEREO;
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
81 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
83 case 7:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
84 optOutFreq = atoi(optArg);
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
85 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
87 case 8:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
88 optMuteOChannels = atoi(optArg);
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
89 break;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
90
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
91 case 9:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
92 optStartOrder = atoi(optArg);
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
93 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
95 case 10:
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
96 optPlayTime = atoi(optArg);
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
97 optUsePlayTime = TRUE;
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
98 break;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
100 default:
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
101 dmErrorMsg("Unknown argument '%s'.\n", currArg);
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
102 return FALSE;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
104
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 return TRUE;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 BOOL argHandleFile(char *currArg)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110 {
300
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
111 if (!optInFilename)
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
112 optInFilename = currArg;
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
113 else
300
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
114 if (!optOutFilename)
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
115 optOutFilename = currArg;
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
116 else
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
117 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
118 dmErrorMsg("Too many filename arguments (only source and dest needed) '%s'\n", currArg);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 return FALSE;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
121
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 return TRUE;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 int main(int argc, char *argv[])
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 {
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
128 DMResource *inFile = NULL;
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
129 FILE *outFile = NULL;
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
130 JSSModule *mod = NULL;
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
131 JSSMixer *dev = NULL;
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
132 JSSPlayer *plr = NULL;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133 int result = -1;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134 size_t bufLen = 1024*4, dataTotal, dataWritten, sampSize;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135 Uint8 *mb = NULL;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137 dmInitProg("mod2wav", "XM/JSSMOD to WAV renderer", "0.2", NULL, NULL);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138 dmVerbosity = 1;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 // Parse arguments
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141 if (!dmArgsProcess(argc, argv, optList, optListN,
860
daebbf28953d The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
142 argHandleOpt, argHandleFile, OPTH_BAILOUT))
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143 exit(1);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145 // Check arguments
300
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
146 if (optInFilename == NULL || optOutFilename == NULL)
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
147 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
148 dmErrorMsg("Input or output file not specified. Try --help.\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149 return 1;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
151
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152 // Initialize miniJSS
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 jssInit();
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
154
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155 // Open the source file
1606
93d1050eac99 Rename dmf_create_*() functions to dmf_open_*().
Matti Hamalainen <ccr@tnsp.org>
parents: 1434
diff changeset
156 if ((result = dmf_open_stdio(optInFilename, "rb", &inFile)) != DMERR_OK)
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
157 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
158 dmErrorMsg("Error opening input file '%s', %d: %s\n",
730
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
159 optInFilename, result, dmErrorStr(result));
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
160 return 1;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163 // Read module file
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
164 dmMsg(1, "Reading file: %s\n", optInFilename);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165 #ifdef JSS_SUP_XM
797
f066e9dccf29 Oops, fix some inverted booleans.
Matti Hamalainen <ccr@tnsp.org>
parents: 796
diff changeset
166 result = jssLoadXM(inFile, &mod, TRUE);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 #endif
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 #ifdef JSS_SUP_JSSMOD
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
169 dmfreset(inFile);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
170 if (result != DMERR_OK)
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
171 {
777
ed60a7ee3ebb Change JSSMOD loader to use DMResources.
Matti Hamalainen <ccr@tnsp.org>
parents: 730
diff changeset
172 dmMsg(1, "* Trying JSSMOD ...\n");
797
f066e9dccf29 Oops, fix some inverted booleans.
Matti Hamalainen <ccr@tnsp.org>
parents: 796
diff changeset
173 result = jssLoadJSSMOD(inFile, &mod, TRUE);
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
174 dmfreset(inFile);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
175 if (result == DMERR_OK)
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
176 result = jssLoadJSSMOD(inFile, &mod, FALSE);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
177 }
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
178 else
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
179 {
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
180 dmMsg(2, "* Trying XM...\n");
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
181 result = jssLoadXM(inFile, &mod, FALSE);
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
182 }
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
183 #endif
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
184 dmf_close(inFile);
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
185
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
186 // Check for errors, we still might have some data tho
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
187 if (result != DMERR_OK)
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
188 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
189 dmErrorMsg("Error loading module file, %d: %s\n",
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
190 result, dmErrorStr(result));
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
191 }
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
192
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
193 // Check if we have anything
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
194 if (mod == NULL)
15
feec43a3497c Fix input file reading of mod2wav utility.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
195 return 3;
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
196
49
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
197 // Try to convert it
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
198 if ((result = jssConvertModuleForPlaying(mod)) != DMERR_OK)
49
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
199 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
200 dmErrorMsg("Could not convert module for playing, %d: %s\n",
49
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
201 result, dmErrorStr(result));
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
202 return 3;
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
203 }
033c660c25f5 Restructure module playing, removing 8bit sample mixing (output can still be
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
204
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
205 // Open mixer
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
206 dev = jvmInit(optOutFormat, optOutChannels, optOutFreq, JMIX_AUTO);
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
207 if (dev == NULL)
39
281b080e8c44 More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 38
diff changeset
208 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
209 dmErrorMsg("jvmInit() returned NULL\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
210 return 4;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
211 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
212
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
213 sampSize = jvmGetSampleSize(dev);
83
6b42aed2745b Cleanups and correct the dmf_create_stdio() issue here as well.
Matti Hamalainen <ccr@tnsp.org>
parents: 68
diff changeset
214 if ((mb = dmMalloc(bufLen * sampSize)) == NULL)
39
281b080e8c44 More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 38
diff changeset
215 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
216 dmErrorMsg("Could not allocate mixing buffer\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
217 return 5;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
218 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
219
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
220 dmMsg(1, "Using fmt=%d, bits=%d, channels=%d, freq=%d [%d / sample]\n",
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
221 optOutFormat, jvmGetSampleRes(dev), optOutChannels, optOutFreq,
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
222 sampSize);
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
223
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
224 // Initialize player
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
225 if ((plr = jmpInit(dev)) == NULL)
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
226 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
227 dmErrorMsg("jmpInit() returned NULL.\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
228 return 6;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
229 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
230
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
231 // Set callback
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
232 jvmSetCallback(dev, jmpExec, plr);
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
233
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
234 // Initialize playing
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
235 jmpSetModule(plr, mod);
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
236 if (optStartOrder >= 0)
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
237 {
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
238 dmMsg(1, "Starting from song order #%d\n", optStartOrder);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
239 } else
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
240 optStartOrder = 0;
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
241
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
242 jmpPlayOrder(plr, optStartOrder);
185
1f8f4d7cb33b Increase default global volume.
Matti Hamalainen <ccr@tnsp.org>
parents: 83
diff changeset
243 jvmSetGlobalVol(dev, 150);
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
244
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
245 if (optMuteOChannels > 0 && optMuteOChannels <= mod->nchannels)
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
246 {
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
247 int i;
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
248 for (i = 0; i < mod->nchannels; i++)
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
249 jvmMute(dev, i, TRUE);
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
250 jvmMute(dev, optMuteOChannels - 1, FALSE);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
251 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
252
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
253 // Open output file
300
4972ca91d062 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 285
diff changeset
254 if ((outFile = fopen(optOutFilename, "wb")) == NULL)
37
cec910d02b26 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
255 {
1434
ad3ad5d9681b Get rid of another direct 'errno' usage.
Matti Hamalainen <ccr@tnsp.org>
parents: 1432
diff changeset
256 int err = dmGetErrno();
ad3ad5d9681b Get rid of another direct 'errno' usage.
Matti Hamalainen <ccr@tnsp.org>
parents: 1432
diff changeset
257 dmErrorMsg("Error opening output file '%s' #%d: %s.\n",
ad3ad5d9681b Get rid of another direct 'errno' usage.
Matti Hamalainen <ccr@tnsp.org>
parents: 1432
diff changeset
258 optInFilename, err, dmErrorStr(err));
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
259 return 7;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
260 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
261
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
262 // Write initial header
206
9b6c0ed66960 Use the routines factored into dmwav module.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
263 dmWriteWAVHeader(outFile, jvmGetSampleRes(dev), optOutFreq, optOutChannels, 1024);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
264
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
265 // Render audio data and output to file
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
266 if (optUsePlayTime)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
267 dmMsg(1, "Rendering module (%d seconds) ...\n", optPlayTime);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
268 else
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
269 dmMsg(1, "Rendering module ...\n");
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
270
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
271 optPlayTime *= optOutFreq;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
272 dataTotal = 0;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
273 dataWritten = 1;
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
274 while (plr->isPlaying && dataWritten > 0)
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
275 {
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
276 size_t writeLen = bufLen;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
277 if (optUsePlayTime && (writeLen + dataTotal) > optPlayTime)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
278 writeLen = optPlayTime - dataTotal;
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
279
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
280 if (writeLen > 0)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
281 {
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
282 jvmRenderAudio(dev, mb, writeLen);
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
283 #if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
284 jssEncodeSample16((Uint16 *)mb, writeLen * optOutChannels, jsampSwapEndianess);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
285 #endif
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
286 dataWritten = fwrite(mb, sampSize, writeLen, outFile);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
287 if (dataWritten < writeLen)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
288 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
289 dmErrorMsg("Error writing data!\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
290 fclose(outFile);
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
291 return 8;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
292 }
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
293 dataTotal += dataWritten;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
294 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
295
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
296 if (optUsePlayTime && dataTotal >= optPlayTime)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
297 break;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
298 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
299
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
300 // Write the correct header
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
301 if (fseek(outFile, 0L, SEEK_SET) != 0)
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
302 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
303 dmErrorMsg("Error rewinding to header position!\n");
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
304 return 9;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
305 }
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
306
206
9b6c0ed66960 Use the routines factored into dmwav module.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
307 dmWriteWAVHeader(outFile, jvmGetSampleRes(dev), optOutFreq, optOutChannels, dataTotal);
1235
5b8245e5f785 Remove trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
308
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
309 // Done!
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
310 fclose(outFile);
68
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
311
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
312 jmpClose(plr);
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
313 jvmClose(dev);
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
314 jssFreeModule(mod);
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
315 jssClose();
182e5fac93f5 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 49
diff changeset
316
0
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
317 dmMsg(1, "OK.\n");
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
318 return 0;
32250b436bca Initial re-import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
319 }