implement support for volume column byte
This commit is contained in:
parent
96adadac52
commit
28b5d5f52e
@ -91,8 +91,16 @@ void _play_note(int ch, const xm_pattern_format_t * pf)
|
|||||||
if (loop_type == 2) // bidirectional
|
if (loop_type == 2) // bidirectional
|
||||||
len += len - 2;
|
len += len - 2;
|
||||||
|
|
||||||
|
int volume_column = state.channel[ch].volume;
|
||||||
|
if (pf->volume_column_byte >= 0x10 && pf->volume_column_byte <= 0x50) {
|
||||||
|
volume_column = pf->volume_column_byte - 0x10;
|
||||||
|
state.channel[ch].volume = volume_column;
|
||||||
|
}
|
||||||
|
|
||||||
assert(sample_header->volume >= 0 && sample_header->volume <= 64);
|
assert(sample_header->volume >= 0 && sample_header->volume <= 64);
|
||||||
int disdl = volume_table[sample_header->volume];
|
int volume = (sample_header->volume * volume_column) / 64;
|
||||||
|
assert(volume >= 0 && volume <= 64);
|
||||||
|
int disdl = volume_table[volume];
|
||||||
bool pcms = !sample_type;
|
bool pcms = !sample_type;
|
||||||
wait(); aica_sound.channel[ch].PCMS(pcms);
|
wait(); aica_sound.channel[ch].PCMS(pcms);
|
||||||
wait(); aica_sound.channel[ch].SA(start);
|
wait(); aica_sound.channel[ch].SA(start);
|
||||||
@ -341,6 +349,7 @@ void init(float clock_multiplier)
|
|||||||
next_pattern();
|
next_pattern();
|
||||||
for (int ch = 0; ch < 64; ch++) {
|
for (int ch = 0; ch < 64; ch++) {
|
||||||
state.channel[ch].keyon = 0;
|
state.channel[ch].keyon = 0;
|
||||||
|
state.channel[ch].volume = 64;
|
||||||
}
|
}
|
||||||
state.paused = false;
|
state.paused = false;
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ constexpr int max_channels = 64;
|
|||||||
struct channel_state {
|
struct channel_state {
|
||||||
uint8_t instrument;
|
uint8_t instrument;
|
||||||
uint8_t keyon;
|
uint8_t keyon;
|
||||||
|
uint8_t volume;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct interpreter_state {
|
struct interpreter_state {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "xm/milkypack01.xm.h"
|
#include "xm/milkypack01.xm.h"
|
||||||
#include "xm/CottageFantasy2.xm.h"
|
#include "xm/CottageFantasy2.xm.h"
|
||||||
#include "xm/CloudsAhead6.xm.h"
|
#include "xm/CloudsAhead6.xm.h"
|
||||||
|
#include "xm/SummerDreamsDemoTrackv4.xm.h"
|
||||||
|
|
||||||
#include "scene/tracker/cover.hpp"
|
#include "scene/tracker/cover.hpp"
|
||||||
|
|
||||||
@ -28,6 +29,12 @@ namespace playlist {
|
|||||||
.start = (int)&_binary_xm_CloudsAhead6_xm_start,
|
.start = (int)&_binary_xm_CloudsAhead6_xm_start,
|
||||||
.cover_ix = scene::tracker::cover::mountain,
|
.cover_ix = scene::tracker::cover::mountain,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.artist = "Cai",
|
||||||
|
.title = "SummerDreamsDemov4",
|
||||||
|
.start = (int)&_binary_xm_SummerDreamsDemoTrackv4_xm_start,
|
||||||
|
.cover_ix = scene::tracker::cover::mountain,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const int playlist_length = (sizeof (playlist)) / (sizeof (playlist[0]));
|
const int playlist_length = (sizeof (playlist)) / (sizeof (playlist[0]));
|
||||||
|
BIN
xm/SummerDreamsDemoTrackv4.xm
Normal file
BIN
xm/SummerDreamsDemoTrackv4.xm
Normal file
Binary file not shown.
15
xm/SummerDreamsDemoTrackv4.xm.h
Normal file
15
xm/SummerDreamsDemoTrackv4.xm.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint32_t _binary_xm_SummerDreamsDemoTrackv4_xm_start __asm("_binary_xm_SummerDreamsDemoTrackv4_xm_start");
|
||||||
|
extern uint32_t _binary_xm_SummerDreamsDemoTrackv4_xm_end __asm("_binary_xm_SummerDreamsDemoTrackv4_xm_end");
|
||||||
|
extern uint32_t _binary_xm_SummerDreamsDemoTrackv4_xm_size __asm("_binary_xm_SummerDreamsDemoTrackv4_xm_size");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -1,7 +1,8 @@
|
|||||||
XM_OBJ = \
|
XM_OBJ = \
|
||||||
xm/milkypack01.xm.o \
|
xm/milkypack01.xm.o \
|
||||||
xm/CottageFantasy2.xm.o \
|
xm/CottageFantasy2.xm.o \
|
||||||
xm/CloudsAhead6.xm.o
|
xm/CloudsAhead6.xm.o \
|
||||||
|
xm/SummerDreamsDemoTrackv4.xm.o
|
||||||
|
|
||||||
TEXTURE_OBJ = \
|
TEXTURE_OBJ = \
|
||||||
font/tandy1k.data.o \
|
font/tandy1k.data.o \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user