Skip to content

Commit 8950a75

Browse files
committed
Pushed v1.38 code
1 parent 6c56bc9 commit 8950a75

39 files changed

+961
-637
lines changed

release/macos/protracker.ini

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@
1111
; ENTRY=VALUE (only strings can have spaces!)
1212
;
1313

14+
[SAMPLE LENGTH LIMIT]
15+
; Limit samples to 64kB (65534/$FFFE), like intended in ProTracker
16+
; Syntax: TRUE or FALSE
17+
; Default value: TRUE
18+
; Comment: Setting it to FALSE will remove the 64kB (65534/$FFFE) sample
19+
; length limit and support 128kB samples (131070/$1FFFE).
20+
; Keep in mind that >64kB samples are not officially supported in most
21+
; ProTracker trackers and replayers, and will often result in bugs.
22+
;
23+
; CAUTION: The 9xx command (Set Sample Offset) doesn't work at all if
24+
; the sample length is above 65534/$FFFE. This is a known bug
25+
; in all ProTracker versions. I am not fixing this bug as I
26+
; want to keep the ProTracker 2.3D replayer quirks.
27+
;
28+
; Please do not change this setting unless you're aware of the problems
29+
; you might face when creating >64k-sample PT MODs!
30+
;
31+
64K_LIMIT=TRUE
32+
1433
[VIDEO SETTINGS]
1534
; Video scaling factor
1635
; Syntax: 1X, 2X, 3X ... 9X

release/other/protracker.ini

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@
1111
; ENTRY=VALUE (only strings can have spaces!)
1212
;
1313

14+
[SAMPLE LENGTH LIMIT]
15+
; Limit samples to 64kB (65534/$FFFE), like intended in ProTracker
16+
; Syntax: TRUE or FALSE
17+
; Default value: TRUE
18+
; Comment: Setting it to FALSE will remove the 64kB (65534/$FFFE) sample
19+
; length limit and support 128kB samples (131070/$1FFFE).
20+
; Keep in mind that >64kB samples are not officially supported in most
21+
; ProTracker trackers and replayers, and will often result in bugs.
22+
;
23+
; CAUTION: The 9xx command (Set Sample Offset) doesn't work at all if
24+
; the sample length is above 65534/$FFFE. This is a known bug
25+
; in all ProTracker versions. I am not fixing this bug as I
26+
; want to keep the ProTracker 2.3D replayer quirks.
27+
;
28+
; Please do not change this setting unless you're aware of the problems
29+
; you might face when creating >64k-sample PT MODs!
30+
;
31+
64K_LIMIT=TRUE
32+
1433
[VIDEO SETTINGS]
1534
; Video scaling factor
1635
; Syntax: 1X, 2X, 3X ... 9X

release/win32/protracker.ini

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@
1111
; ENTRY=VALUE (only strings can have spaces!)
1212
;
1313

14+
[SAMPLE LENGTH LIMIT]
15+
; Limit samples to 64kB (65534/$FFFE), like intended in ProTracker
16+
; Syntax: TRUE or FALSE
17+
; Default value: TRUE
18+
; Comment: Setting it to FALSE will remove the 64kB (65534/$FFFE) sample
19+
; length limit and support 128kB samples (131070/$1FFFE).
20+
; Keep in mind that >64kB samples are not officially supported in most
21+
; ProTracker trackers and replayers, and will often result in bugs.
22+
;
23+
; CAUTION: The 9xx command (Set Sample Offset) doesn't work at all if
24+
; the sample length is above 65534/$FFFE. This is a known bug
25+
; in all ProTracker versions. I am not fixing this bug as I
26+
; want to keep the ProTracker 2.3D replayer quirks.
27+
;
28+
; Please do not change this setting unless you're aware of the problems
29+
; you might face when creating >64k-sample PT MODs!
30+
;
31+
64K_LIMIT=TRUE
32+
1433
[VIDEO SETTINGS]
1534
; Video scaling factor
1635
; Syntax: 1X, 2X, 3X ... 9X

release/win64/protracker.ini

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@
1111
; ENTRY=VALUE (only strings can have spaces!)
1212
;
1313

14+
[SAMPLE LENGTH LIMIT]
15+
; Limit samples to 64kB (65534/$FFFE), like intended in ProTracker
16+
; Syntax: TRUE or FALSE
17+
; Default value: TRUE
18+
; Comment: Setting it to FALSE will remove the 64kB (65534/$FFFE) sample
19+
; length limit and support 128kB samples (131070/$1FFFE).
20+
; Keep in mind that >64kB samples are not officially supported in most
21+
; ProTracker trackers and replayers, and will often result in bugs.
22+
;
23+
; CAUTION: The 9xx command (Set Sample Offset) doesn't work at all if
24+
; the sample length is above 65534/$FFFE. This is a known bug
25+
; in all ProTracker versions. I am not fixing this bug as I
26+
; want to keep the ProTracker 2.3D replayer quirks.
27+
;
28+
; Please do not change this setting unless you're aware of the problems
29+
; you might face when creating >64k-sample PT MODs!
30+
;
31+
64K_LIMIT=TRUE
32+
1433
[VIDEO SETTINGS]
1534
; Video scaling factor
1635
; Syntax: 1X, 2X, 3X ... 9X

src/gfx/pt2_gfx_editop.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
#include <stdint.h>
22

3+
// Final unpack length: 352
4+
// Decoded length: 88 (first four bytes of buffer)
5+
const uint8_t fix128KPosPackedBMP[81] =
6+
{
7+
0x00,0x00,0x00,0x58,0xCC,0x05,0x55,0x95,0x55,0x6A,0xCC,0x04,0xAA,0xDA,0xAA,0x6A,0xCC,0x04,0xAA,0xDA,
8+
0xAA,0x65,0x56,0xA5,0x5A,0x95,0x5A,0xDA,0xAA,0x65,0xF5,0x97,0xD6,0x5F,0xFE,0xDA,0xAA,0x65,0x57,0xD7,
9+
0x97,0x95,0x6A,0xDA,0xAA,0x65,0xFF,0x97,0x97,0xAF,0x5A,0xDA,0xAA,0x65,0xEA,0xA5,0x5F,0x55,0x7E,0xDA,
10+
0xAA,0x6B,0xEA,0xAB,0xFE,0xBF,0xFA,0xDA,0xAA,0x6A,0xCC,0x04,0xAA,0xDA,0xAA,0xBF,0xCC,0x04,0xFF,0xEF,
11+
0xFF
12+
};
13+
14+
// Final unpack length: 528
15+
// Decoded length: 132 (first four bytes of buffer)
16+
const uint8_t fix128KChordPackedBMP[110] =
17+
{
18+
0x00,0x00,0x00,0x84,0xCC,0x08,0x55,0x65,0x55,0x55,0x6A,0xCC,0x07,0xAA,0xB6,0xAA,0xAA,0x6A,0xCC,0x07,
19+
0xAA,0xB6,0xAA,0xAA,0x6A,0xA9,0x6A,0xA5,0x55,0x96,0x96,0xAA,0xAA,0xB6,0xAA,0xAA,0x6A,0xA9,0x7A,0xA5,
20+
0xFF,0xD5,0x97,0xAA,0xAA,0xB6,0xAA,0xAA,0x6A,0xA9,0x7A,0xA5,0x5A,0x95,0x57,0xAA,0xAA,0xB6,0xAA,0xAA,
21+
0x6A,0xA9,0x7A,0xA5,0xFE,0x97,0x57,0x5A,0xAA,0xB6,0xAA,0xAA,0x6A,0xA9,0x55,0x65,0x55,0x97,0x97,0x5E,
22+
0xAA,0xB6,0xAA,0xAA,0x6A,0xAA,0xFF,0xFB,0xFF,0xEF,0xAF,0xBE,0xAA,0xB6,0xAA,0xAA,0x6A,0xCC,0x07,0xAA,
23+
0xB6,0xAA,0xAA,0xBF,0xCC,0x07,0xFF,0xFB,0xFF,0xFF
24+
};
25+
326
// Final unpack length: 336
427
// Decoded length: 84 (first four bytes of buffer)
528
const uint8_t editOpModeCharsPackedBMP[88] =

src/gfx/pt2_gfx_tracker.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
#include <stdint.h>
22

3+
// Final unpack length: 2108
4+
// Decoded length: 527 (first four bytes of buffer)
5+
const uint8_t tracker128KFixPackedBMP[363] =
6+
{
7+
0x00,0x00,0x02,0x0F,0xCC,0x0C,0xAA,0xFF,0xFF,0xEA,0xCC,0x0B,0xAA,0xAD,0x55,0x55,0xCC,0x0C,0xAA,0xDA,
8+
0xAA,0xAA,0xA9,0x6A,0xA5,0x55,0x96,0x96,0x95,0x59,0x55,0x65,0xA5,0xAA,0xAD,0xAA,0xAA,0xAA,0x97,0xAA,
9+
0x5F,0xFD,0x59,0x75,0xFF,0xED,0x7F,0x5E,0x5E,0xAA,0xDA,0xAA,0xAA,0xA9,0x7A,0xA5,0x56,0x95,0x57,0x5D,
10+
0x5A,0x97,0xA5,0x55,0xEA,0xAD,0xAA,0xAA,0xAA,0x97,0xAA,0x5F,0xF9,0x75,0x75,0xE5,0xE9,0x7A,0x5F,0x5E,
11+
0xAA,0xDA,0xAA,0xAA,0xA9,0x55,0x65,0x55,0x97,0x97,0x95,0x5E,0x97,0xA5,0xE5,0xEA,0xAD,0xAA,0xAA,0xAA,
12+
0xAF,0xFF,0xBF,0xFE,0xFA,0xFA,0xFF,0xEA,0xFA,0xBE,0xBE,0xAA,0xDA,0xCC,0x0D,0xAA,0xAD,0xCC,0x0E,0xAA,
13+
0xDA,0xCC,0x0D,0xAA,0xAE,0xFF,0xFF,0xCC,0x0C,0xAA,0xD5,0x55,0x5A,0xCC,0x0B,0xAA,0xAD,0xAA,0xAA,0xAA,
14+
0x95,0x5A,0x55,0x59,0x55,0xA5,0x55,0xA5,0x5A,0x55,0x5A,0xAA,0xDA,0xAA,0xAA,0xA9,0x7D,0x65,0xFF,0xD7,
15+
0xD6,0x5F,0xFD,0x7D,0x6B,0x5F,0xEA,0xAD,0xAA,0xAA,0xAA,0x95,0x5F,0x55,0x69,0x55,0xF5,0x56,0x95,0x57,
16+
0xA5,0xEA,0xAA,0xDA,0xAA,0xAA,0xA9,0x75,0xE5,0xFF,0x97,0xFE,0x5F,0xF9,0x7D,0x7A,0x5E,0xAA,0xAD,0xAA,
17+
0xAA,0xAA,0x97,0x96,0x55,0x59,0x7A,0xA5,0x55,0x97,0x97,0xA5,0xEA,0xAA,0xDA,0xAA,0xAA,0xAA,0xFA,0xFB,
18+
0xFF,0xEF,0xAA,0xBF,0xFE,0xFA,0xFA,0xBE,0xAA,0xAD,0xCC,0x0E,0xAA,0xDA,0xCC,0x0D,0xAA,0xAD,0xCC,0x0E,
19+
0xAA,0xEF,0xFF,0xFA,0xCC,0x0B,0xAA,0xAD,0x55,0x55,0xCC,0x0C,0xAA,0xDA,0xAA,0xAA,0xA9,0x55,0xA5,0x55,
20+
0x95,0x5A,0x5A,0xA9,0x55,0x65,0xA5,0xAA,0xAD,0xAA,0xAA,0xAA,0x97,0xD6,0x5F,0xFD,0x7D,0x65,0xEA,0x97,
21+
0xFF,0x56,0x5E,0xAA,0xDA,0xAA,0xAA,0xA9,0x55,0xF5,0x56,0x95,0x5F,0x5E,0xA9,0x55,0xA5,0x55,0xEA,0xAD,
22+
0xAA,0xAA,0xAA,0x97,0x5E,0x5F,0xF9,0x7F,0xE5,0xEA,0x97,0xFE,0x5D,0x5E,0xAA,0xDA,0xAA,0xAA,0xA9,0x79,
23+
0x65,0x55,0x97,0xAA,0x55,0x59,0x55,0x65,0xE5,0xEA,0xAD,0xAA,0xAA,0xAA,0xAF,0xAF,0xBF,0xFE,0xFA,0xAB,
24+
0xFF,0xEF,0xFF,0xBE,0xBE,0xAA,0xDA,0xCC,0x0D,0xAA,0xAD,0xCC,0x0E,0xAA,0xDA,0xAA,0xAF,0xCC,0x0B,0xFF,
25+
0xFE,0xFF,0xFF
26+
};
27+
328
// Final unpack length: 81600
429
// Decoded length: 20400 (first four bytes of buffer)
530
const uint8_t trackerFramePackedBMP[8486] =

src/pt2_audio.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#include "pt2_rcfilter.h"
3535
#include "pt2_ledfilter.h"
3636
#include "pt2_downsample2x.h"
37+
#include "pt2_hpc.h"
3738

3839
#define STEREO_NORM_FACTOR 0.5 /* cumulative mid/side normalization factor (1/sqrt(2))*(1/sqrt(2)) */
3940

@@ -129,14 +130,13 @@ static void calcAudioLatencyVars(int32_t audioBufferSize, int32_t audioFreq)
129130

130131
const double dAudioLatencySecs = audioBufferSize / (double)audioFreq;
131132

132-
dFrac = modf(dAudioLatencySecs * editor.dPerfFreq, &dInt);
133+
dFrac = modf(dAudioLatencySecs * hpcFreq.dFreq, &dInt);
133134

134135
// integer part
135-
audLatencyPerfValInt = (int32_t)dInt;
136+
audLatencyPerfValInt = (uint32_t)dInt;
136137

137138
// fractional part (scaled to 0..2^32-1)
138-
dFrac *= UINT32_MAX+1.0;
139-
audLatencyPerfValFrac = (uint32_t)dFrac;
139+
audLatencyPerfValFrac = (uint32_t)((dFrac * (UINT32_MAX+1.0)) + 0.5); // rounded
140140
}
141141

142142
void setSyncTickTimeLen(uint32_t timeLen, uint32_t timeLenFrac)
@@ -181,7 +181,7 @@ void mixerUpdateLoops(void) // updates Paula loop (+ scopes)
181181
const moduleSample_t *s = &song->samples[editor.currSample];
182182

183183
paulaSetData(i, ch->n_start + s->loopStart);
184-
paulaSetLength(i, s->loopLength >> 1);
184+
paulaSetLength(i, (uint16_t)(s->loopLength >> 1));
185185
}
186186
}
187187

@@ -335,7 +335,7 @@ void paulaSetData(int32_t ch, const int8_t *src)
335335
paulaVoice_t *v = &paula[ch];
336336

337337
if (src == NULL)
338-
src = &song->sampleData[RESERVED_SAMPLE_OFFSET]; // 128K reserved sample
338+
src = &song->sampleData[config.reservedSampleOffset]; // 128K reserved sample
339339

340340
v->AUD_LC = src;
341341

@@ -362,7 +362,7 @@ void paulaStartDMA(int32_t ch)
362362
paulaVoice_t *v = &paula[ch];
363363

364364
if (v->AUD_LC == NULL)
365-
v->AUD_LC = &song->sampleData[RESERVED_SAMPLE_OFFSET]; // 128K reserved sample
365+
v->AUD_LC = &song->sampleData[config.reservedSampleOffset]; // 128K reserved sample
366366

367367
/* This is not really accurate to what happens on Paula
368368
** during DMA start, but it's good enough.
@@ -801,8 +801,8 @@ void outputAudio(int16_t *target, int32_t numSamples)
801801
// render to sample (PAT2SMP)
802802

803803
int32_t samplesTodo = numSamples;
804-
if (editor.pat2SmpPos+samplesTodo > MAX_SAMPLE_LEN)
805-
samplesTodo = MAX_SAMPLE_LEN-editor.pat2SmpPos;
804+
if (editor.pat2SmpPos+samplesTodo > config.maxSampleLength)
805+
samplesTodo = config.maxSampleLength-editor.pat2SmpPos;
806806

807807
// mix channels (with 2x oversampling, PAT2SMP needs it)
808808
mixChannels(samplesTodo*2);
@@ -821,7 +821,7 @@ void outputAudio(int16_t *target, int32_t numSamples)
821821
}
822822

823823
editor.pat2SmpPos += samplesTodo;
824-
if (editor.pat2SmpPos >= MAX_SAMPLE_LEN)
824+
if (editor.pat2SmpPos >= config.maxSampleLength)
825825
{
826826
editor.smpRenderingDone = true;
827827
updateWindowTitle(MOD_IS_MODIFIED);
@@ -1127,10 +1127,10 @@ static void generateTickLengthTable(bool vblankTimingFlag)
11271127

11281128
// BPM -> Hz -> tick length for performance counter (syncing visuals to audio)
11291129
double dTimeInt;
1130-
double dTimeFrac = modf(editor.dPerfFreq / dHz, &dTimeInt);
1130+
double dTimeFrac = modf(hpcFreq.dFreq / dHz, &dTimeInt);
11311131
const int32_t timeInt = (int32_t)dTimeInt;
11321132

1133-
dTimeFrac = floor((UINT32_MAX+1.0) * dTimeFrac); // fractional part (scaled to 0..2^32-1)
1133+
dTimeFrac = floor((dTimeFrac * (UINT32_MAX+1.0)) + 0.5); // fractional part (scaled to 0..2^32-1)
11341134

11351135
audio.tickLengthTable[bpm-32] = ((uint64_t)timeInt << 32) | (uint32_t)dTimeFrac;
11361136
}

src/pt2_bmp.c

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ uint32_t *samplerScreenBMP = NULL, *pat2SmpDialogBMP = NULL, *trackerFrameBMP
2020
uint32_t *yesNoDialogBMP = NULL, *bigYesNoDialogBMP = NULL, *sampleMonitorBMP = NULL;
2121
uint32_t *samplingBoxBMP = NULL;
2222

23+
// fix-bitmaps for 128K sample mode
24+
uint32_t *fix128KTrackerBMP = NULL;
25+
uint32_t *fix128KPosBMP = NULL;
26+
uint32_t *fix128KChordBMP = NULL;
27+
2328
void createBitmaps(void)
2429
{
2530
uint8_t r8, g8, b8, r8_2, g8_2, b8_2;
@@ -161,6 +166,9 @@ void createBitmaps(void)
161166

162167
void freeBMPs(void)
163168
{
169+
if (fix128KChordBMP != NULL) free(fix128KChordBMP);
170+
if (fix128KPosBMP != NULL) free(fix128KPosBMP);
171+
if (fix128KTrackerBMP != NULL) free(fix128KTrackerBMP);
164172
if (trackerFrameBMP != NULL) free(trackerFrameBMP);
165173
if (samplerScreenBMP != NULL) free(samplerScreenBMP);
166174
if (samplerVolumeBMP != NULL) free(samplerVolumeBMP);
@@ -189,27 +197,29 @@ uint32_t *unpackBMP(const uint8_t *src, uint32_t packedLen)
189197
const uint8_t *packSrc;
190198
uint8_t *tmpBuffer, *packDst, byteIn;
191199
int16_t count;
192-
uint32_t *dst, decodedLength, i;
200+
uint32_t *dst;
201+
202+
int32_t decodedLength, i;
193203

194204
// RLE decode
195205
decodedLength = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
196206

197207
// 2-bit to 8-bit conversion
198-
dst = (uint32_t *)malloc((decodedLength * 4) * sizeof (int32_t));
208+
dst = (uint32_t *)malloc(((decodedLength * 4) * sizeof (int32_t)) + 8);
199209
if (dst == NULL)
200210
return NULL;
201211

202-
tmpBuffer = (uint8_t *)malloc(decodedLength + 512); // some margin is needed, the packer is buggy
212+
tmpBuffer = (uint8_t *)malloc(decodedLength + 128); // some margin is needed, the packer is buggy
203213
if (tmpBuffer == NULL)
204214
{
205215
free(dst);
206216
return NULL;
207217
}
208218

209-
packSrc = src + 4;
219+
packSrc = src + 4; // skip "length" field
210220
packDst = tmpBuffer;
211221

212-
i = packedLen - 4;
222+
i = packedLen - 4; // subtract "length" field
213223
while (i > 0)
214224
{
215225
byteIn = *packSrc++;
@@ -256,6 +266,9 @@ uint32_t *unpackBMP(const uint8_t *src, uint32_t packedLen)
256266

257267
bool unpackBMPs(void)
258268
{
269+
fix128KChordBMP = unpackBMP(fix128KChordPackedBMP, sizeof (fix128KChordPackedBMP));
270+
fix128KPosBMP = unpackBMP(fix128KPosPackedBMP, sizeof (fix128KPosPackedBMP));
271+
fix128KTrackerBMP = unpackBMP(tracker128KFixPackedBMP, sizeof (tracker128KFixPackedBMP));
259272
trackerFrameBMP = unpackBMP(trackerFramePackedBMP, sizeof (trackerFramePackedBMP));
260273
samplerScreenBMP = unpackBMP(samplerScreenPackedBMP, sizeof (samplerScreenPackedBMP));
261274
samplerVolumeBMP = unpackBMP(samplerVolumePackedBMP, sizeof (samplerVolumePackedBMP));
@@ -278,13 +291,14 @@ bool unpackBMPs(void)
278291
sampleMonitorBMP = unpackBMP(sampleMonitorPackedBMP, sizeof (sampleMonitorPackedBMP));
279292
samplingBoxBMP = unpackBMP(samplingBoxPackedBMP, sizeof (samplingBoxPackedBMP));
280293

281-
if (trackerFrameBMP == NULL || samplerScreenBMP == NULL || samplerVolumeBMP == NULL ||
282-
clearDialogBMP == NULL || diskOpScreenBMP == NULL || mod2wavBMP == NULL ||
283-
posEdBMP == NULL || spectrumVisualsBMP == NULL || yesNoDialogBMP == NULL ||
284-
editOpScreen1BMP == NULL || editOpScreen2BMP == NULL || editOpScreen3BMP == NULL ||
285-
editOpScreen4BMP == NULL || aboutScreenBMP == NULL || muteButtonsBMP == NULL ||
286-
editOpModeCharsBMP == NULL || samplerFiltersBMP == NULL || yesNoDialogBMP == NULL ||
287-
bigYesNoDialogBMP == NULL || sampleMonitorBMP == NULL || samplingBoxBMP == NULL)
294+
if (fix128KTrackerBMP == NULL || fix128KPosBMP == NULL || fix128KChordBMP == NULL ||
295+
trackerFrameBMP == NULL || samplerScreenBMP == NULL || samplerVolumeBMP == NULL ||
296+
clearDialogBMP == NULL || diskOpScreenBMP == NULL || mod2wavBMP == NULL ||
297+
posEdBMP == NULL || spectrumVisualsBMP == NULL || yesNoDialogBMP == NULL ||
298+
editOpScreen1BMP == NULL || editOpScreen2BMP == NULL || editOpScreen3BMP == NULL ||
299+
editOpScreen4BMP == NULL || aboutScreenBMP == NULL || muteButtonsBMP == NULL ||
300+
editOpModeCharsBMP == NULL || samplerFiltersBMP == NULL || yesNoDialogBMP == NULL ||
301+
bigYesNoDialogBMP == NULL || sampleMonitorBMP == NULL || samplingBoxBMP == NULL)
288302
{
289303
showErrorMsgBox("Out of memory!");
290304
return false; // BMPs are free'd in cleanUp()

src/pt2_bmp.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ extern const uint8_t fontBMP[6096];
2121
extern const uint8_t aboutScreenPackedBMP[1408];
2222
extern const uint8_t clearDialogPackedBMP[525];
2323
extern const uint8_t diskOpScreenPackedBMP[1898];
24+
extern const uint8_t fix128KChordPackedBMP[110];
25+
extern const uint8_t fix128KPosPackedBMP[81];
2426
extern const uint8_t editOpModeCharsPackedBMP[88];
2527
extern const uint8_t editOpScreen1PackedBMP[1481];
2628
extern const uint8_t editOpScreen2PackedBMP[1502];
@@ -34,6 +36,7 @@ extern const uint8_t samplerVolumePackedBMP[706];
3436
extern const uint8_t samplerFiltersPackedBMP[933];
3537
extern const uint8_t samplerScreenPackedBMP[3076];
3638
extern const uint8_t spectrumVisualsPackedBMP[2217];
39+
extern const uint8_t tracker128KFixPackedBMP[363];
3740
extern const uint8_t trackerFramePackedBMP[8486];
3841
extern const uint8_t yesNoDialogPackedBMP[476];
3942
extern const uint8_t bigYesNoDialogPackedBMP[472];
@@ -68,6 +71,11 @@ extern uint32_t *pat2SmpDialogBMP;
6871
extern uint32_t *sampleMonitorBMP;
6972
extern uint32_t *samplingBoxBMP;
7073

74+
// fix-bitmaps for 128K sample mode
75+
extern uint32_t *fix128KTrackerBMP;
76+
extern uint32_t *fix128KPosBMP;
77+
extern uint32_t *fix128KChordBMP;
78+
7179
bool unpackBMPs(void);
7280
void createBitmaps(void);
7381
void freeBMPs(void);

0 commit comments

Comments
 (0)