annotate tools/ppl.c @ 1323:2260ed90ab6b

Remove dmgfx and move the functions used to PPL and Auval.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 22 Aug 2017 00:51:45 +0300
parents 13c274d22a29
children 59e9ad13b50e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
216
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
1 /*
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
2 * Cyrbe Pasci Player - A simple SDL-based UI for XM module playing
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
3 * Programmed and designed by Matti 'ccr' Hamalainen
1096
96e0798f602b Bump copyright year.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
4 * (C) Copyright 2012-2015 Tecnic Software productions (TNSP)
216
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
5 *
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
6 * Please read file 'COPYING' for information on license and distribution.
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
7 */
643
ad738873083e Add SDL.h #include to ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 584
diff changeset
8 #include <SDL.h>
ad738873083e Add SDL.h #include to ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 584
diff changeset
9 #include "dmlib.h"
ad738873083e Add SDL.h #include to ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 584
diff changeset
10
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 #include "jss.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 #include "jssmod.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 #include "jssmix.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 #include "jssplr.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 #include "dmargs.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 #include "dmimage.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 #include "dmtext.h"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19
584
923d920a8a85 Build setupfont.h and setupimage.h from source data files. Use setupfont in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 559
diff changeset
20 #include "setupfont.h"
164
a49d431ff40e Add a hardcoded font to PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 159
diff changeset
21
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 struct
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 BOOL exitFlag;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 SDL_Surface *screen;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 SDL_Event event;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 int optScrWidth, optScrHeight, optVFlags, optScrDepth;
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
29
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
30 int actChannel;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
31 BOOL pauseFlag;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
32
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
33 JSSModule *mod;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
34 JSSMixer *dev;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
35 JSSPlayer *plr;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
36 SDL_AudioSpec afmt;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 } engine;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 struct
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 {
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
41 Uint32 boxBg, inboxBg, box1, box2, viewDiv, activeRow, activeChannel;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 } col;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 DMBitmapFont *font = NULL;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46
273
3b5493fac928 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 216
diff changeset
47 char *optFilename = NULL;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 int optOutFormat = JSS_AUDIO_S16,
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 optOutChannels = 2,
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 optOutFreq = 48000,
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 optMuteOChannels = -1,
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
52 optStartOrder = 0;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 BOOL optUsePlayTime = FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 size_t optPlayTime;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56
860
daebbf28953d The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents: 809
diff changeset
57 static const DMOptArg optList[] =
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 { 0, '?', "help", "Show this help", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 { 1, 'v', "verbose", "Be more verbose", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 { 2, 0, "fs", "Fullscreen", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
62 { 3, 'w', "window", "Initial window size/resolution -w 640x480", OPT_ARGREQ },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
63
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
64 { 4, '1', "16bit", "16-bit output", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
65 { 5, '8', "8bit", "8-bit output", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
66 { 6, 'm', "mono", "Mono output", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
67 { 7, 's', "stereo", "Stereo output", OPT_NONE },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
68 { 8, 'f', "freq", "Output frequency", OPT_ARGREQ },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70 { 9, 'M', "mute", "Mute other channels than #", OPT_ARGREQ },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71 { 10, 'o', "order", "Start from order #", OPT_ARGREQ },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
72 { 11, 't', "time", "Play for # seconds", OPT_ARGREQ },
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 };
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 const int optListN = sizeof(optList) / sizeof(optList[0]);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 void argShowHelp()
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 dmPrintBanner(stdout, dmProgName, "[options] <module>");
860
daebbf28953d The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents: 809
diff changeset
81 dmArgsPrintHelp(stdout, optList, optListN, 0);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85 BOOL argHandleOpt(const int optN, char *optArg, char *currArg)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 switch (optN) {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 case 0:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89 argShowHelp();
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90 exit(0);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
92
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 case 1:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 dmVerbosity++;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 break;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
96
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97 case 2:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 engine.optVFlags |= SDL_FULLSCREEN;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101 case 3:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 int w, h;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 if (sscanf(optArg, "%dx%d", &w, &h) == 2)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
106 if (w < 320 || h < 200 || w > 3200 || h > 3200)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
108 dmErrorMsg("Invalid width or height: %d x %d\n", w, h);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 return FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111 engine.optScrWidth = w;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
112 engine.optScrHeight = h;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
113 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
114 else
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
115 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
116 dmErrorMsg("Invalid size argument '%s'.\n", optArg);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117 return FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
119 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
121
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
122 case 4:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
123 optOutFormat = JSS_AUDIO_S16;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
124 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
125
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
126 case 5:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 optOutFormat = JSS_AUDIO_U8;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
129
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
130 case 6:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
131 optOutChannels = JSS_AUDIO_MONO;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
132 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
133
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
134 case 7:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
135 optOutChannels = JSS_AUDIO_STEREO;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
136 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
137
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
138 case 8:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
139 optOutFreq = atoi(optArg);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
140 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
141
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
142 case 9:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
143 optMuteOChannels = atoi(optArg);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
144 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
145
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 case 10:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
147 optStartOrder = atoi(optArg);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
148 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
149
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
150 case 11:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
151 optPlayTime = atoi(optArg);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
152 optUsePlayTime = TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
153 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
154
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
155 default:
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
156 dmErrorMsg("Unknown option '%s'.\n", currArg);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
157 return FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
158 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
159
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
160 return TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
161 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
163
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
164 BOOL argHandleFile(char *currArg)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
165 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
166 if (!optFilename)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167 optFilename = currArg;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
168 else
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
169 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
170 dmErrorMsg("Too many filename arguments '%s'\n", currArg);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
171 return FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
172 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
173
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
174 return TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
175 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
176
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
177
1323
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
178 void dmFillRect(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 col)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
179 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
180 SDL_Rect rc;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
181 rc.x = x0;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
182 rc.y = y0;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
183 rc.w = x1 - x0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
184 rc.h = y1 - y0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
185 SDL_FillRect(screen, &rc, col);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
186 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
187
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
188
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
189 void dmDrawHLine(SDL_Surface *screen, int x0, int x1, int yc, const Uint32 col)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
190 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
191 const int bpp = screen->format->BytesPerPixel,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
192 cx0 = screen->clip_rect.x, cy0 = screen->clip_rect.y,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
193 cx1 = screen->clip_rect.x + screen->clip_rect.w - 1,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
194 cy1 = screen->clip_rect.y + screen->clip_rect.h - 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
195
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
196 DM_SWAP(int, x0, x1);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
197 if (yc < cy0|| yc > cy1 || x1 < cx0 || x0 > cx1) return;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
198 if (x0 < cx0) x0 = cx0;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
199 if (x1 > cx1) x1 = cx1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
200
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
201 int x = x1 - x0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
202 Uint8 *pix = ((Uint8 *) screen->pixels) + yc * screen->pitch + (x0 * bpp);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
203 switch (screen->format->BitsPerPixel)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
204 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
205 case 8:
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
206 while (x--)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
207 *pix++ = col;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
208 break;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
209
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
210 case 32:
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
211 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
212 Uint32 *p = (Uint32 *) pix;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
213 while (x--)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
214 *p++ = col;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
215 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
216 break;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
217 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
218 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
219
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
220
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
221 void dmDrawVLine(SDL_Surface *screen, int y0, int y1, int xc, const Uint32 col)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
222 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
223 const int bpp = screen->format->BytesPerPixel,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
224 pitch = screen->pitch / bpp,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
225 cx0 = screen->clip_rect.x, cy0 = screen->clip_rect.y,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
226 cx1 = screen->clip_rect.x + screen->clip_rect.w - 1,
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
227 cy1 = screen->clip_rect.y + screen->clip_rect.h - 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
228
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
229 DM_SWAP(int, y0, y1);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
230 if (xc < cx0 || xc > cx1 || y1 < cy0 || y0 > cy1) return;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
231 if (y0 < cy0) y0 = cy0;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
232 if (y1 > cy1) y1 = cy1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
233
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
234 int y = y1 - y0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
235 Uint8 *pix = ((Uint8 *) screen->pixels) + y0 * screen->pitch + (xc * bpp);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
236 switch (screen->format->BitsPerPixel)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
237 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
238 case 8:
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
239 while (y--)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
240 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
241 *pix = col;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
242 pix += pitch;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
243 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
244 break;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
245
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
246 case 32:
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
247 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
248 Uint32 *p = (Uint32 *) pix;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
249 while (y--)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
250 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
251 *p = col;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
252 p += pitch;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
253 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
254 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
255 break;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
256 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
257 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
258
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
259
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
260 void dmDrawBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 ucol, Uint32 dcol)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
261 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
262 dmDrawHLine(screen, x0 , x1 - 1, y0, ucol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
263 dmDrawHLine(screen, x0 + 1, x1 , y1, dcol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
264
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
265 dmDrawVLine(screen, y0 , y1 - 1, x0, ucol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
266 dmDrawVLine(screen, y0 + 1, y1 , x1, dcol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
267 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
268
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
269
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
270 void dmFillBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 bgcol, Uint32 ucol, Uint32 dcol)
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
271 {
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
272 SDL_Rect rc;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
273
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
274 rc.x = x0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
275 rc.y = y0 + 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
276 rc.w = x1 - x0 - 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
277 rc.h = y1 - y0 - 1;
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
278 SDL_FillRect(screen, &rc, bgcol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
279
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
280 dmDrawBox3D(screen, x0, y0, x1, y1, ucol, dcol);
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
281 }
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
282
2260ed90ab6b Remove dmgfx and move the functions used to PPL and Auval.
Matti Hamalainen <ccr@tnsp.org>
parents: 1258
diff changeset
283
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
284 void dmDrawBMTextConstQ(SDL_Surface *screen, DMBitmapFont *font, int mode, int xc, int yc, const char *fmt)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
285 {
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
286 const char *ptr = fmt;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
287 DMUnscaledBlitFunc blit = NULL;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
288
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
289 while (*ptr)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
290 {
745
ab645f4cb8fa Uppercase the strings in PPL for now.
Matti Hamalainen <ccr@tnsp.org>
parents: 730
diff changeset
291 int ch = toupper(*ptr++);
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
292 SDL_Surface *glyph;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
293
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
294 if (ch == '_')
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
295 {
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
296 xc += 4;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
297 continue;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
298 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
299
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
300 if (ch >= 0 && ch < font->nglyphs && (glyph = font->glyphs[ch]) != NULL)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
301 {
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
302 if (blit == NULL)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
303 blit = dmGetUnscaledBlitFunc(glyph->format, screen->format, mode);
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
304
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
305 blit(glyph, xc, yc, screen);
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
306 xc += font->width;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
307 }
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
308 else
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
309 xc += font->width;
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
310 }
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
311 }
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
312
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
313
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
314 void dmDrawBMTextVAQ(SDL_Surface *screen, DMBitmapFont *font, int mode, int xc, int yc, const char *fmt, va_list ap)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
315 {
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
316 char tmp[512];
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
317 vsnprintf(tmp, sizeof(tmp), fmt, ap);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
318 dmDrawBMTextConstQ(screen, font, mode, xc, yc, tmp);
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
319 }
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
320
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
321
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
322 void dmDrawBMTextQ(SDL_Surface *screen, DMBitmapFont *font, int mode, int xc, int yc, const char *fmt, ...)
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
323 {
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
324 va_list ap;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
325
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
326 va_start(ap, fmt);
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
327 dmDrawBMTextVAQ(screen, font, mode, xc, yc, fmt, ap);
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
328 va_end(ap);
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
329 }
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
330
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
331
78
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
332 Uint32 dmCol(float r, float g, float b)
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
333 {
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
334 return dmMapRGB(engine.screen, 255.0f * r, 255.0f * g, 255.0f * b);
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
335 }
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
336
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
337
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
338 BOOL dmInitializeVideo()
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
339 {
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
340 SDL_FreeSurface(engine.screen);
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
341
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
342 engine.screen = SDL_SetVideoMode(
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
343 engine.optScrWidth, engine.optScrHeight, engine.optScrDepth,
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
344 engine.optVFlags | SDL_RESIZABLE | SDL_SWSURFACE | SDL_HWPALETTE);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
345
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
346 if (engine.screen == NULL)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
347 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
348 dmErrorMsg("Can't SDL_SetVideoMode(): %s\n", SDL_GetError());
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
349 return FALSE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
350 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
351
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
352 col.inboxBg = dmCol(0.6, 0.5, 0.2);
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
353 col.boxBg = dmCol(0.7, 0.6, 0.3);
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
354 col.box1 = dmCol(1.0, 0.9, 0.6);
78
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
355 col.box2 = dmCol(0.3, 0.3, 0.15);
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
356 col.viewDiv = dmCol(0,0,0);
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
357 col.activeRow = dmCol(0.5,0.4,0.1);
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
358 col.activeChannel = dmCol(0.6, 0.8, 0.2);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
359
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
360 return TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
361 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
362
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
363
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
364 void dmDisplayChn(SDL_Surface *screen, int x0, int y0, int x1, int y1, int nchannel, JSSChannel *chn)
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
365 {
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
366 int yh = y1 - y0 - 2;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
367 if (yh < 10 || chn == NULL)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
368 return;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
369
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
370 int xc, ym = y0 + (y1 - y0) / 2, vol = FP_GETH32(chn->chVolume);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
371 int pitch = screen->pitch / sizeof(Uint32);
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
372 int len = FP_GETH32(chn->chSize);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
373 DMFixedPoint offs = chn->chPos;
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
374 Uint32 coln = dmCol(0.0, 0.8, 0.0), colx = dmCol(1.0, 0, 0);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
375 Uint32 *pix = screen->pixels;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
376 Sint16 *data = chn->chData;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
377
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
378
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
379 dmFillBox3D(screen, x0, y0, x1, y1,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
380 (chn->chMute ? dmCol(0.3,0.1,0.1) : dmCol(0,0,0)),
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
381 nchannel == engine.actChannel ? colx : col.box2,
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
382 nchannel == engine.actChannel ? colx : col.box1);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
383
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
384 if (chn->chData == NULL || !chn->chPlaying)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
385 return;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
386
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
387 if (chn->chDirection)
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
388 {
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
389 for (xc = x0 + 1; xc < x1 - 1; xc++)
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
390 {
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
391 if (FP_GETH32(offs) >= len)
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
392 break;
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
393 Sint16 val = ym + (data[FP_GETH32(offs)] * yh * vol) / (65535 * 255);
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
394 pix[xc + val * pitch] = coln;
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
395 FP_ADD(offs, chn->chDeltaO);
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
396 }
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
397 }
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
398 else
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
399 {
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
400 for (xc = x0 + 1; xc < x1 - 1; xc++)
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
401 {
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
402 if (FP_GETH32(offs) < 0)
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
403 break;
809
eba3b87f3f84 Add some separate macros for 64/32 precision fixed point types.
Matti Hamalainen <ccr@tnsp.org>
parents: 797
diff changeset
404 Sint16 val = ym + (data[FP_GETH32(offs)] * yh * vol) / (65535 * 255);
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
405 pix[xc + val * pitch] = coln;
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
406 FP_SUB(offs, chn->chDeltaO);
274
31e62b1f1b6e Add boundary checks for the scope drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 273
diff changeset
407 }
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
408 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
409 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
410
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
411
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
412 void dmDisplayChannels(SDL_Surface *screen, int x0, int y0, int x1, int y1, JSSMixer *dev)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
413 {
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
414 int nchannel, qx, qy,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
415 qwidth = x1 - x0,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
416 qheight = y1 - y0,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
417 nwidth = jsetNChannels,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
418 nheight = 1;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
419
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
420 if (qheight < 40)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
421 return;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
422
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
423 while (qwidth / nwidth <= 60 && qheight / nheight >= 40)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
424 {
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
425 nheight++;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
426 nwidth /= nheight;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
427 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
428
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
429 // fprintf(stderr, "%d x %d\n", nwidth, nheight);
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
430
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
431 if (qheight / nheight <= 40)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
432 {
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
433 nwidth = qwidth / 60;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
434 nheight = qheight / 40;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
435 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
436
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
437 qwidth /= nwidth;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
438 qheight /= nheight;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
439
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
440 for (nchannel = qy = 0; qy < nheight && nchannel < jsetNChannels; qy++)
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
441 {
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
442 for (qx = 0; qx < nwidth && nchannel < jsetNChannels; qx++)
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
443 {
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
444 int xc = x0 + qx * qwidth,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
445 yc = y0 + qy * qheight;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
446
165
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
447 dmDisplayChn(screen, xc + 1, yc + 1,
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
448 xc + qwidth - 1, yc + qheight - 1,
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
449 nchannel, &dev->channels[nchannel]);
3e8e0dc30711 Minor visual improvements.
Matti Hamalainen <ccr@tnsp.org>
parents: 164
diff changeset
450
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
451 nchannel++;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
452 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
453 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
454 }
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
455
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
456
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
457 static const char patNoteTable[12][3] =
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
458 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
459 "C-", "C#", "D-",
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
460 "D#", "E-", "F-",
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
461 "F#", "G-", "G#",
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
462 "A-", "A#", "B-"
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
463 };
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
464
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
465
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
466 #define jmpNMODEffectTable (36)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
467 static const char jmpMODEffectTable[jmpNMODEffectTable] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
468
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
469 static const char jmpHexTab[16] = "0123456789ABCDEF";
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
470
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
471 static inline char dmHexVal(int v)
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
472 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
473 return jmpHexTab[v & 15];
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
474 }
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
475
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
476 void dmPrintNote(SDL_Surface *screen, int xc, int yc, JSSNote *n)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
477 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
478 char text[32];
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
479 char *ptr = text;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
480
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
481 switch (n->note)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
482 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
483 case jsetNotSet:
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
484 strcpy(ptr, "..._");
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
485 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
486 case jsetNoteOff:
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
487 strcpy(ptr, "===_");
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
488 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
489 default:
78
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
490 sprintf(ptr, "%s%i_",
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
491 patNoteTable[n->note % 12],
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
492 n->note / 12);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
493 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
494 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
495
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
496 ptr += 4;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
497
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
498 if (n->instrument != jsetNotSet)
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
499 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
500 int v = n->instrument + 1;
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
501 *ptr++ = dmHexVal(v >> 4);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
502 *ptr++ = dmHexVal(v);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
503 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
504 else
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
505 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
506 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
507 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
508 }
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
509 *ptr++ = '_';
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
510
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
511 if (n->volume == jsetNotSet)
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
512 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
513 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
514 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
515 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
516 else
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
517 if (n->volume >= 0x00 && n->volume <= 0x40)
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
518 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
519 *ptr++ = dmHexVal(n->volume >> 4);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
520 *ptr++ = dmHexVal(n->volume);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
521 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
522 else
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
523 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
524 char c;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
525 switch (n->volume & 0xf0)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
526 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
527 case 0x50: c = '-'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
528 case 0x60: c = '+'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
529 case 0x70: c = '/'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
530 case 0x80: c = '\\'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
531 case 0x90: c = 'S'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
532 case 0xa0: c = 'V'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
533 case 0xb0: c = 'P'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
534 case 0xc0: c = '<'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
535 case 0xd0: c = '>'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
536 case 0xe0: c = 'M'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
537 default: c = '?'; break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
538 }
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
539 *ptr++ = c;
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
540 *ptr++ = dmHexVal(n->volume);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
541 }
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
542 *ptr++ = '_';
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
543
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
544 if (n->effect >= 0 && n->effect < jmpNMODEffectTable)
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
545 *ptr++ = jmpMODEffectTable[n->effect];
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
546 else
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
547 *ptr++ = (n->effect == jsetNotSet ? '.' : '?');
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
548
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
549 if (n->param != jsetNotSet)
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
550 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
551 *ptr++ = dmHexVal(n->param >> 4);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
552 *ptr++ = dmHexVal(n->param);
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
553 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
554 else
201
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
555 {
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
556 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
557 *ptr++ = '.';
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
558 }
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
559
844f38cbff65 Optimize pattern drawing a bit.
Matti Hamalainen <ccr@tnsp.org>
parents: 199
diff changeset
560 *ptr = 0;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
561
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
562 dmDrawBMTextConstQ(screen, font, DMD_TRANSPARENT, xc, yc, text);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
563 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
564
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
565
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
566 void dmDisplayPattern(SDL_Surface *screen, int x0, int y0, int x1, int y1, JSSPattern *pat, int row)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
567 {
78
3b3908d28a4b PPL now looks a bit saner, but does not do anything interesting yet.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
568 int cwidth = (font->width * 10 + 3 * 4 + 5),
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
569 lwidth = 6 + font->width * 3,
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
570 qy0 = y0 + font->height + 2,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
571 qy1 = y1 - font->height - 2,
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
572 qwidth = ((x1 - x0 - lwidth) / cwidth),
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
573 qheight = ((qy1 - qy0 - 4) / (font->height + 1)),
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
574 nrow, nchannel, yc, choffs,
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
575 midrow = qheight / 2;
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
576
1258
13c274d22a29 Add some extra error checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 1238
diff changeset
577 if (pat == NULL)
13c274d22a29 Add some extra error checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 1238
diff changeset
578 return;
13c274d22a29 Add some extra error checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 1238
diff changeset
579
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
580 if (engine.actChannel < qwidth / 2)
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
581 choffs = 0;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
582 else
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
583 if (engine.actChannel >= pat->nchannels - qwidth/2)
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
584 choffs = pat->nchannels - qwidth;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
585 else
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
586 choffs = engine.actChannel - qwidth/2;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
587
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
588 dmDrawBox3D(screen, x0 + lwidth, qy0, x1, qy1, col.box2, col.box1);
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
589
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
590 for (nchannel = 0; nchannel < qwidth; nchannel++)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
591 {
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
592 int bx0 = x0 + lwidth + 1 + nchannel * cwidth,
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
593 bx1 = bx0 + cwidth;
1098
441a1ca43b02 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 1096
diff changeset
594
441a1ca43b02 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 1096
diff changeset
595 dmFillRect(screen, bx0+1, qy0+1, bx1-1, qy1-1,
441a1ca43b02 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 1096
diff changeset
596 (engine.actChannel == nchannel + choffs) ? col.activeChannel : col.inboxBg);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
597 }
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
598
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
599 yc = qy0 + 2 + (font->height + 1) * midrow;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
600 dmFillRect(screen, x0 + lwidth + 1, yc - 1, x1 - 1, yc + font->height, col.activeRow);
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
601
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
602 for (nchannel = 0; nchannel < qwidth; nchannel++)
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
603 {
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
604 int bx0 = x0 + lwidth + 1 + nchannel * cwidth,
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
605 bx1 = bx0 + cwidth;
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
606
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
607 dmDrawVLine(screen, qy0 + 1, qy1 - 1, bx1, col.viewDiv);
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
608
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
609 if (jvmGetMute(engine.dev, nchannel + choffs))
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
610 {
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
611 dmDrawBMTextConstQ(screen, font, DMD_TRANSPARENT,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
612 bx0 + (cwidth - font->width * 5) / 2, qy1 + 3, "MUTED");
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
613 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
614
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
615 dmDrawBMTextQ(screen, font, DMD_TRANSPARENT,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
616 bx0 + (cwidth - font->width * 3) / 2, y0 + 1, "%3d",
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
617 nchannel + choffs);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
618 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
619
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
620 for (nrow = 0; nrow < qheight; nrow++)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
621 {
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
622 int crow = nrow - midrow + row;
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
623 yc = qy0 + 2 + (font->height + 1) * nrow;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
624
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
625 if (crow >= 0 && crow < pat->nrows)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
626 {
130
1d7dc7c8745c Move custom bitmap font text rendering functions into PPL code itself.
Matti Hamalainen <ccr@tnsp.org>
parents: 99
diff changeset
627 dmDrawBMTextQ(screen, font, DMD_TRANSPARENT, x0, yc, "%03d", crow);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
628
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
629 for (nchannel = 0; nchannel < qwidth; nchannel++)
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
630 {
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
631 if (choffs + nchannel >= pat->nchannels)
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
632 break;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
633
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
634 dmPrintNote(screen, x0 + lwidth + 4 + nchannel * cwidth, yc,
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
635 pat->data + (pat->nchannels * crow) + choffs + nchannel);
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
636 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
637 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
638 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
639 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
640
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
641
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
642 void audioCallback(void *userdata, Uint8 *stream, int len)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
643 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
644 JSSMixer *d = (JSSMixer *) userdata;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
645
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
646 if (d != NULL)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
647 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
648 jvmRenderAudio(d, stream, len / jvmGetSampleSize(d));
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
649 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
650 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
651
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
652
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
653 void dmMuteChannels(BOOL mute)
198
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
654 {
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
655 int i;
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
656 for (i = 0; i < engine.mod->nchannels; i++)
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
657 jvmMute(engine.dev, i, mute);
198
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
658 }
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
659
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
660 int main(int argc, char *argv[])
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
661 {
290
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
662 BOOL initSDL = FALSE, audioInit = FALSE;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
663 DMResource *file = NULL;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
664 int result = -1;
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
665 BOOL muteState = FALSE;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
666
1167
848a88ce7a57 Use dmMemset().
Matti Hamalainen <ccr@tnsp.org>
parents: 1098
diff changeset
667 dmMemset(&engine, 0, sizeof(engine));
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
668
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
669 engine.optScrWidth = 640;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
670 engine.optScrHeight = 480;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
671 engine.optScrDepth = 32;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
672
216
247b03797fc9 Rename player, add a copyright note.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
673 dmInitProg("CBP", "Cyrbe Basci Player", "0.1", NULL, NULL);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
674
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
675 // Parse arguments
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
676 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: 809
diff changeset
677 argHandleOpt, argHandleFile, OPTH_BAILOUT))
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
678 exit(1);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
679
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
680 // Open the files
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
681 if (optFilename == NULL)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
682 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
683 dmErrorMsg("No filename specified.\n");
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
684 return 1;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
685 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
686
730
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
687 if ((result = dmf_create_stdio(optFilename, "rb", &file)) != DMERR_OK)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
688 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
689 dmErrorMsg("Error opening file '%s', %d: (%s)\n",
730
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
690 optFilename, result, dmErrorStr(result));
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
691 return 1;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
692 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
693
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
694 // Initialize miniJSS
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
695 jssInit();
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
696
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
697 // Read module file
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
698 dmMsg(1, "Reading file: %s\n", optFilename);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
699 #ifdef JSS_SUP_XM
797
f066e9dccf29 Oops, fix some inverted booleans.
Matti Hamalainen <ccr@tnsp.org>
parents: 796
diff changeset
700 result = jssLoadXM(file, &engine.mod, TRUE);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
701 #endif
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
702 #ifdef JSS_SUP_JSSMOD
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
703 dmfreset(file);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
704 if (result != DMERR_OK)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
705 {
777
ed60a7ee3ebb Change JSSMOD loader to use DMResources.
Matti Hamalainen <ccr@tnsp.org>
parents: 745
diff changeset
706 dmMsg(1, "* Trying JSSMOD ...\n");
797
f066e9dccf29 Oops, fix some inverted booleans.
Matti Hamalainen <ccr@tnsp.org>
parents: 796
diff changeset
707 result = jssLoadJSSMOD(file, &engine.mod, TRUE);
1199
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
708 dmfreset(file);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
709 if (result == DMERR_OK)
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
710 result = jssLoadJSSMOD(file, &engine.mod, FALSE);
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
711 }
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
712 else
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
713 {
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
714 dmMsg(2, "* Trying XM...\n");
a79edf59d5d8 Improve use of probing in dumpmod, mod2wav and ppl.
Matti Hamalainen <ccr@tnsp.org>
parents: 1167
diff changeset
715 result = jssLoadXM(file, &engine.mod, FALSE);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
716 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
717 #endif
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
718 dmf_close(file);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
719
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
720 if (result != DMERR_OK)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
721 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
722 dmErrorMsg("Error loading module file, %d: %s\n",
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
723 result, dmErrorStr(result));
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
724 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
725 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
726
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
727 // Try to convert it
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
728 if ((result = jssConvertModuleForPlaying(engine.mod)) != DMERR_OK)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
729 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
730 dmErrorMsg("Could not convert module for playing, %d: %s\n",
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
731 result, dmErrorStr(result));
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
732 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
733 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
734
164
a49d431ff40e Add a hardcoded font to PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 159
diff changeset
735 // Get font
730
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
736 result = dmf_create_memio(NULL, "pplfont.fnt", engineSetupFont, sizeof(engineSetupFont), &file);
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
737 if (result != DMERR_OK)
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
738 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
739 dmErrorMsg("Error opening font file 'pplfont.fnt', #%d: %s\n",
730
3d813c81f33c More work on resources API.
Matti Hamalainen <ccr@tnsp.org>
parents: 652
diff changeset
740 result, dmErrorStr(result));
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
741 goto error_exit;
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
742 }
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
743 result = dmLoadBitmapFont(file, &font);
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
744 dmf_close(file);
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
745 if (result != DMERR_OK)
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
746 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
747 dmErrorMsg("Could not load font from file, %d: %s\n",
99
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
748 result, dmErrorStr(result));
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
749 goto error_exit;
7a59611f9d4f Various minor improvements in PPL.
Matti Hamalainen <ccr@tnsp.org>
parents: 80
diff changeset
750 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
751
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
752 // Initialize SDL components
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
753 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) != 0)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
754 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
755 dmErrorMsg("Could not initialize SDL: %s\n", SDL_GetError());
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
756 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
757 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
758 initSDL = TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
759
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
760
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
761 // Initialize mixing device
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
762 dmMsg(2, "Initializing miniJSS mixer with: %d, %d, %d\n",
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
763 optOutFormat, optOutChannels, optOutFreq);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
764
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
765 engine.dev = jvmInit(optOutFormat, optOutChannels, optOutFreq, JMIX_AUTO);
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
766 if (engine.dev == NULL)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
767 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
768 dmErrorMsg("jvmInit() returned NULL\n");
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
769 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
770 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
771
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
772 switch (optOutFormat)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
773 {
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
774 case JSS_AUDIO_S16: engine.afmt.format = AUDIO_S16SYS; break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
775 case JSS_AUDIO_U16: engine.afmt.format = AUDIO_U16SYS; break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
776 case JSS_AUDIO_S8: engine.afmt.format = AUDIO_S8; break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
777 case JSS_AUDIO_U8: engine.afmt.format = AUDIO_U8; break;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
778 default:
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
779 dmErrorMsg("Unsupported audio format %d (could not set matching SDL format)\n",
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
780 optOutFormat);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
781 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
782 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
783
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
784 engine.afmt.freq = optOutFreq;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
785 engine.afmt.channels = optOutChannels;
297
a991e4f0acfe Make audio buffer smaller, for now.
Matti Hamalainen <ccr@tnsp.org>
parents: 296
diff changeset
786 engine.afmt.samples = optOutFreq / 16;
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
787 engine.afmt.callback = audioCallback;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
788 engine.afmt.userdata = (void *) engine.dev;
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
789
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
790 // Open the audio device
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
791 if (SDL_OpenAudio(&engine.afmt, NULL) < 0)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
792 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
793 dmErrorMsg("Couldn't open SDL audio: %s\n",
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
794 SDL_GetError());
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
795 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
796 }
290
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
797 audioInit = TRUE;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
798
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
799 // Initialize player
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
800 if ((engine.plr = jmpInit(engine.dev)) == NULL)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
801 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
802 dmErrorMsg("jmpInit() returned NULL\n");
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
803 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
804 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
805
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
806 jvmSetCallback(engine.dev, jmpExec, engine.plr);
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
807 jmpSetModule(engine.plr, engine.mod);
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
808 jmpPlayOrder(engine.plr, optStartOrder);
190
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
809 jvmSetGlobalVol(engine.dev, 64);
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
810
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
811 if (optMuteOChannels >= 0 && optMuteOChannels < engine.mod->nchannels)
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
812 {
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
813 dmMuteChannels(TRUE);
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
814 jvmMute(engine.dev, optMuteOChannels, FALSE);
190
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
815 engine.actChannel = optMuteOChannels;
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
816 muteState = TRUE;
190
87b46e61f2c4 Make it possible to mute channels.
Matti Hamalainen <ccr@tnsp.org>
parents: 185
diff changeset
817 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
818
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
819 // Initialize video
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
820 if (!dmInitializeVideo())
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
821 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
822
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
823 SDL_WM_SetCaption(dmProgDesc, dmProgName);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
824
275
26d714c72c0f Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 274
diff changeset
825 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
26d714c72c0f Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 274
diff changeset
826
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
827 // okay, main loop here ... "play" module and print out info
275
26d714c72c0f Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 274
diff changeset
828 SDL_LockAudio();
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
829 SDL_PauseAudio(0);
275
26d714c72c0f Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 274
diff changeset
830 SDL_UnlockAudio();
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
831
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
832 int currTick, prevTick = 0, prevRow = -1;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
833
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
834 while (!engine.exitFlag)
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
835 {
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
836 currTick = SDL_GetTicks();
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
837 BOOL force = (currTick - prevTick > 500), updated = FALSE;
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
838
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
839 while (SDL_PollEvent(&engine.event))
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
840 switch (engine.event.type)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
841 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
842 case SDL_KEYDOWN:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
843 switch (engine.event.key.keysym.sym)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
844 {
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
845 case SDLK_ESCAPE:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
846 engine.exitFlag = TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
847 break;
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
848
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
849 case SDLK_SPACE:
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
850 engine.pauseFlag = !engine.pauseFlag;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
851 SDL_PauseAudio(engine.pauseFlag);
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
852 break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
853
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
854 case SDLK_LEFT:
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
855 if (engine.actChannel > 0)
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
856 {
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
857 engine.actChannel--;
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
858 force = TRUE;
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
859 }
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
860 break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
861
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
862 case SDLK_RIGHT:
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
863 if (engine.actChannel < engine.mod->nchannels)
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
864 {
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
865 engine.actChannel++;
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
866 force = TRUE;
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
867 }
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
868 break;
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
869
198
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
870 case SDLK_m:
203
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
871 if (engine.event.key.keysym.mod & KMOD_SHIFT)
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
872 {
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
873 muteState = !muteState;
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
874 dmMuteChannels(muteState);
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
875 }
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
876 else
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
877 if (engine.event.key.keysym.mod & KMOD_CTRL)
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
878 {
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
879 dmMuteChannels(FALSE);
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
880 }
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
881 else
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
882 {
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
883 jvmMute(engine.dev, engine.actChannel, !jvmGetMute(engine.dev, engine.actChannel));
bed7457cd8da Improve channel mute control. Now shift+M will toggle mute of all channels,
Matti Hamalainen <ccr@tnsp.org>
parents: 201
diff changeset
884 }
198
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
885 force = TRUE;
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
886 break;
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
887
167
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
888 case SDLK_PAGEUP:
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
889 JSS_LOCK(engine.dev);
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
890 JSS_LOCK(engine.plr);
182
9024d249e47a Add a new function jmpChangeOrder() to change orderlist position "on fly",
Matti Hamalainen <ccr@tnsp.org>
parents: 179
diff changeset
891 jmpChangeOrder(engine.plr, dmClamp(engine.plr->order - 1, 0, engine.mod->norders));
167
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
892 JSS_UNLOCK(engine.plr);
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
893 JSS_UNLOCK(engine.dev);
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
894 force = TRUE;
167
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
895 break;
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
896
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
897 case SDLK_PAGEDOWN:
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
898 JSS_LOCK(engine.dev);
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
899 JSS_LOCK(engine.plr);
182
9024d249e47a Add a new function jmpChangeOrder() to change orderlist position "on fly",
Matti Hamalainen <ccr@tnsp.org>
parents: 179
diff changeset
900 jmpChangeOrder(engine.plr, dmClamp(engine.plr->order + 1, 0, engine.mod->norders));
167
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
901 JSS_UNLOCK(engine.plr);
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
902 JSS_UNLOCK(engine.dev);
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
903 force = TRUE;
167
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
904 break;
e281663f04ba Implement moving around in order list via pageup/down.
Matti Hamalainen <ccr@tnsp.org>
parents: 165
diff changeset
905
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
906 case SDLK_f:
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
907 engine.optVFlags ^= SDL_FULLSCREEN;
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
908 if (!dmInitializeVideo())
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
909 goto error_exit;
198
4568c479541c Make 'm' key mute all but selected active channel.
Matti Hamalainen <ccr@tnsp.org>
parents: 190
diff changeset
910 force = TRUE;
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
911 break;
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
912
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
913 default:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
914 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
915 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
916
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
917 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
918
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
919 case SDL_VIDEORESIZE:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
920 engine.optScrWidth = engine.event.resize.w;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
921 engine.optScrHeight = engine.event.resize.h;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
922
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
923 if (!dmInitializeVideo())
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
924 goto error_exit;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
925
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
926 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
927
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
928 case SDL_VIDEOEXPOSE:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
929 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
930
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
931 case SDL_QUIT:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
932 engine.exitFlag = TRUE;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
933 break;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
934 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
935
137
f721f9f7838a Remove toupper() from custom text drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 130
diff changeset
936
f721f9f7838a Remove toupper() from custom text drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 130
diff changeset
937 #if 1
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
938 JSS_LOCK(engine.plr);
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
939 JSSPattern *currPattern = engine.plr->pattern;
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
940 int currRow = engine.plr->row;
293
bc2e8ce003d7 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 290
diff changeset
941 if (!engine.plr->isPlaying)
bc2e8ce003d7 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 290
diff changeset
942 engine.exitFlag = TRUE;
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
943 JSS_UNLOCK(engine.plr);
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
944
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
945 if (currRow != prevRow || force)
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
946 {
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
947 prevRow = currRow;
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
948 force = TRUE;
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
949 }
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
950
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
951 // Draw frame
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
952 if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0)
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
953 {
958
985225a93aeb Add error code parameter to dmError() and dmErrorVA().
Matti Hamalainen <ccr@tnsp.org>
parents: 860
diff changeset
954 dmErrorMsg("Can't lock surface.\n");
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
955 goto error_exit;
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
956 }
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
957
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
958 if (force)
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
959 {
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
960 dmClearSurface(engine.screen, col.boxBg);
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
961
1096
96e0798f602b Bump copyright year.
Matti Hamalainen <ccr@tnsp.org>
parents: 958
diff changeset
962 dmDrawBMTextQ(engine.screen, font, DMD_TRANSPARENT, 5, 5, "%s v%s by ccr/TNSP - (c) Copyright 2012-2015 TNSP", dmProgDesc, dmProgVersion);
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
963
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
964 dmDrawBMTextQ(engine.screen, font, DMD_TRANSPARENT, 5, 5 + 12 + 11,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
965 "Song: '%s'",
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
966 engine.mod->moduleName);
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
967
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
968 dmDisplayPattern(engine.screen, 5, 40,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
969 engine.screen->w - 6, engine.screen->h * 0.8,
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
970 currPattern, currRow);
1238
e8c99da451cd Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 1199
diff changeset
971
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
972 JSS_LOCK(engine.plr);
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
973 dmDrawBMTextQ(engine.screen, font, DMD_TRANSPARENT, 5, 5 + 12,
179
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
974 "Tempo: %3d | Speed: %3d | Row: %3d/%-3d | Order: %3d/%-3d | Pattern: %3d/%-3d",
b29c9a2fbeb5 Add full screen switching to PPL via 'f' key, and various other
Matti Hamalainen <ccr@tnsp.org>
parents: 176
diff changeset
975 engine.plr->tempo, engine.plr->speed,
1258
13c274d22a29 Add some extra error checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 1238
diff changeset
976 engine.plr->row, (engine.plr->pattern != NULL) ? engine.plr->pattern->nrows : 0,
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
977 engine.plr->order, engine.mod->norders,
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
978 engine.plr->npattern, engine.mod->npatterns);
276
40efff364904 Fix some possible data races.
Matti Hamalainen <ccr@tnsp.org>
parents: 275
diff changeset
979 JSS_UNLOCK(engine.plr);
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
980 updated = TRUE;
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
981 }
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
982
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
983 if (force || currTick - prevTick >= (engine.pauseFlag ? 100 : 20))
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
984 {
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
985 JSS_LOCK(engine.dev);
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
986 dmDisplayChannels(engine.screen, 5, engine.screen->h * 0.8 + 5,
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
987 engine.screen->w - 5, engine.screen->h - 5, engine.dev);
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
988 JSS_UNLOCK(engine.dev);
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
989 updated = TRUE;
176
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
990 }
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
991
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
992 if (force)
dfe7e392ea7e Optimize screen updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 167
diff changeset
993 prevTick = currTick;
151
8708b0354eb8 Various improvements and small optimizations in display drawing/updating.
Matti Hamalainen <ccr@tnsp.org>
parents: 148
diff changeset
994
137
f721f9f7838a Remove toupper() from custom text drawing.
Matti Hamalainen <ccr@tnsp.org>
parents: 130
diff changeset
995 #endif
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
996 // Flip screen
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
997 if (SDL_MUSTLOCK(engine.screen) != 0)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
998 SDL_UnlockSurface(engine.screen);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
999
296
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
1000 if (updated)
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
1001 SDL_Flip(engine.screen);
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
1002
6d62918739c6 Improve screen update logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
1003 SDL_Delay(engine.pauseFlag ? 100 : 30);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1004 }
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1005
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1006 error_exit:
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1007 if (engine.screen)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1008 SDL_FreeSurface(engine.screen);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1009
290
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1010 dmMsg(0, "Audio shutdown.\n");
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1011 if (audioInit)
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1012 {
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1013 SDL_LockAudio();
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1014 SDL_PauseAudio(1);
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1015 SDL_UnlockAudio();
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1016 SDL_CloseAudio();
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1017 }
61cab36b6d32 Improve locking.
Matti Hamalainen <ccr@tnsp.org>
parents: 287
diff changeset
1018
147
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
1019 jmpClose(engine.plr);
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
1020 jvmClose(engine.dev);
ead759da30b4 Various improvements, implement channel muting.
Matti Hamalainen <ccr@tnsp.org>
parents: 137
diff changeset
1021 jssFreeModule(engine.mod);
71
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1022
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1023 dmFreeBitmapFont(font);
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1024
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1025 if (initSDL)
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1026 SDL_Quit();
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1027
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1028 jssClose();
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1029
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1030 return 0;
b908fda1036e Add a simplistic skeleton of a module player with SDL-based view.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1031 }