add instrument palette
This commit is contained in:
parent
28b5d5f52e
commit
5596b3e646
44
src/instrument_palette.cpp
Normal file
44
src/instrument_palette.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "instrument_palette.hpp"
|
||||
|
||||
namespace instrument_palette {
|
||||
|
||||
uint32_t color[] = {
|
||||
0xe70000,
|
||||
0x38b144,
|
||||
0xef5983,
|
||||
0x61efcd,
|
||||
0xdf3700,
|
||||
0x019f5c,
|
||||
0xef9a5a,
|
||||
0x59c7ef,
|
||||
0xe55d00,
|
||||
0x0d789f,
|
||||
0xeee462,
|
||||
0x6197ef,
|
||||
0xe79c00,
|
||||
0x1a4697,
|
||||
0x65ef72,
|
||||
0xa57bef,
|
||||
};
|
||||
|
||||
vec3i color3[] = {
|
||||
{0xe7, 0x00, 0x00},
|
||||
{0x38, 0xb1, 0x44},
|
||||
{0xef, 0x59, 0x83},
|
||||
{0x61, 0xef, 0xcd},
|
||||
{0xdf, 0x37, 0x00},
|
||||
{0x01, 0x9f, 0x5c},
|
||||
{0xef, 0x9a, 0x5a},
|
||||
{0x59, 0xc7, 0xef},
|
||||
{0xe5, 0x5d, 0x00},
|
||||
{0x0d, 0x78, 0x9f},
|
||||
{0xee, 0xe4, 0x62},
|
||||
{0x61, 0x97, 0xef},
|
||||
{0xe7, 0x9c, 0x00},
|
||||
{0x1a, 0x46, 0x97},
|
||||
{0x65, 0xef, 0x72},
|
||||
{0xa5, 0x7b, 0xef},
|
||||
};
|
||||
}
|
11
src/instrument_palette.hpp
Normal file
11
src/instrument_palette.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "math/vec3.hpp"
|
||||
|
||||
using vec3i = vec<3, int>;
|
||||
|
||||
namespace instrument_palette {
|
||||
|
||||
extern uint32_t color[];
|
||||
extern vec3i color3[];
|
||||
}
|
@ -5,6 +5,7 @@
|
||||
|
||||
#include "channel_status.hpp"
|
||||
#include "texture.hpp"
|
||||
#include "instrument_palette.hpp"
|
||||
|
||||
static inline int round_up_div(int n, int m)
|
||||
{
|
||||
@ -64,7 +65,11 @@ void draw(ta_multiwriter& multi, int x, int y)
|
||||
|
||||
int keyon = 128 * (state.channel[ch].keyon - 224) / 16;
|
||||
if (keyon < 0) keyon = 0;
|
||||
uint32_t base_color = (keyon << 16) | (keyon << 8) | (keyon << 0);
|
||||
if (keyon > 255) keyon = 255;
|
||||
|
||||
int instrument_ix = state.channel[ch].instrument & 15;
|
||||
vec3i i_color = instrument_palette::color3[instrument_ix] * keyon / 255;
|
||||
uint32_t base_color = (i_color.x << 16) | (i_color.y << 8) | (i_color.z << 0);
|
||||
transfer_rectangle(multi.op,
|
||||
xi, y, 1.0 / 10000.0,
|
||||
width_per_col, height_per_row,
|
||||
|
@ -7,6 +7,8 @@
|
||||
#include "widget/button_label.hpp"
|
||||
#include "widget/left_aligned.hpp"
|
||||
|
||||
#include "instrument_palette.hpp"
|
||||
|
||||
namespace scene::tracker::tracklist {
|
||||
|
||||
static bool samples_tab = false;
|
||||
@ -24,7 +26,7 @@ namespace scene::tracker::tracklist {
|
||||
const float width = glyph::hori_advance * 20 + 3 * 2;
|
||||
const int line_rows_half = 5;
|
||||
const int line_rows = line_rows_half * 2 + 1;
|
||||
const float height = glyph::vert_advance * line_rows + 3 * 2;
|
||||
const float height = (glyph::vert_advance + 1) * line_rows + 3 * 2;
|
||||
|
||||
#define __length(c) ((sizeof (c)) / (sizeof (c[0])))
|
||||
|
||||
@ -72,8 +74,12 @@ namespace scene::tracker::tracklist {
|
||||
|
||||
transfer_string(writer, (const char *)interpreter::state.xm.instrument_header[i]->instrument_name,
|
||||
x, y, 1.0 / 10.0,
|
||||
0xffffff);
|
||||
y += glyph::vert_advance;
|
||||
instrument_palette::color[i & 15]);
|
||||
|
||||
transfer_string(writer, (const char *)interpreter::state.xm.instrument_header[i]->instrument_name,
|
||||
x+1, y+1, 1.0 / 11.0,
|
||||
0x444444);
|
||||
y += glyph::vert_advance + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@ XM_PLAYER_OBJ = \
|
||||
src/graphics_primitive.o \
|
||||
src/input.o \
|
||||
src/interpreter.o \
|
||||
src/instrument_palette.o \
|
||||
src/main.o \
|
||||
src/malloc.o \
|
||||
src/playlist.o \
|
||||
|
Loading…
x
Reference in New Issue
Block a user