ddrio: Add hdxs output functions

Also fixes IDS_DDR_P1_BOTTOM_LIGHT schema being incorrectly mapped (on SD)
This commit is contained in:
Will Xyen
2020-06-29 06:50:26 -07:00
parent b408cd9687
commit 3c26a3f315
10 changed files with 241 additions and 84 deletions

View File

@@ -41,7 +41,27 @@ enum p3io_light_bit {
LIGHT_P2_LOWER_LAMP = 0x04,
LIGHT_P2_UPPER_LAMP = 0x05,
LIGHT_P1_LOWER_LAMP = 0x06,
LIGHT_P1_UPPER_LAMP = 0x07
LIGHT_P1_UPPER_LAMP = 0x07,
LIGHT_HD_P1_START = 0x08,
LIGHT_HD_P1_UP_DOWN = 0x09,
LIGHT_HD_P1_LEFT_RIGHT = 0x0A,
LIGHT_HD_P2_START = 0x0B,
LIGHT_HD_P2_UP_DOWN = 0x0C,
LIGHT_HD_P2_LEFT_RIGHT = 0x0D,
LIGHT_HD_P1_SPEAKER_F_R = 0x20,
LIGHT_HD_P1_SPEAKER_F_G = 0x21,
LIGHT_HD_P1_SPEAKER_F_B = 0x22,
LIGHT_HD_P2_SPEAKER_F_R = 0x23,
LIGHT_HD_P2_SPEAKER_F_G = 0x24,
LIGHT_HD_P2_SPEAKER_F_B = 0x25,
LIGHT_HD_P1_SPEAKER_W_R = 0x26,
LIGHT_HD_P1_SPEAKER_W_G = 0x27,
LIGHT_HD_P1_SPEAKER_W_B = 0x28,
LIGHT_HD_P2_SPEAKER_W_R = 0x29,
LIGHT_HD_P2_SPEAKER_W_G = 0x2A,
LIGHT_HD_P2_SPEAKER_W_B = 0x2B,
};
enum extio_light_bit {
@@ -84,6 +104,8 @@ bool ddr_io_init(
uint32_t ddr_io_read_pad(void);
void ddr_io_set_lights_extio(uint32_t extio_lights);
void ddr_io_set_lights_p3io(uint32_t p3io_lights);
void ddr_io_set_lights_hdxs_panel(uint32_t hdxs_lights);
void ddr_io_set_lights_hdxs_rgb(uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
void ddr_io_fini(void);
#endif

View File

@@ -256,13 +256,33 @@ STRINGTABLE
IDS_DDR_P2_DOWN "P2 Down"
IDS_DDR_P2_LEFT "P2 Left"
IDS_DDR_P2_RIGHT "P2 Right"
IDS_DDR_P1_MENU_LIGHT "P1 Menu Lights"
IDS_DDR_P1_MENU_LIGHT "P1 Menu Lights / HD Spot Red Satellite"
IDS_DDR_P1_TOP_LIGHT "P1 Marquee Top Light"
IDS_DDR_P1_BOTTOM_LIGHT "P1 Marquee Bottom Light"
IDS_DDR_P2_MENU_LIGHT "P2 Menu Lights"
IDS_DDR_P2_MENU_LIGHT "P2 Menu Lights / HD Spot Blue Satellite"
IDS_DDR_P2_TOP_LIGHT "P2 Marquee Top Light"
IDS_DDR_P2_BOTTOM_LIGHT "P2 Marquee Bottom Light"
IDS_DDR_BASS_LIGHT "Bass Neons"
IDS_DDR_HD_P1_START "P1 HD Start"
IDS_DDR_HD_P1_UP_DOWN "P1 HD Up/Down"
IDS_DDR_HD_P1_LEFT_RIGHT "P1 HD Left/Right"
IDS_DDR_HD_P2_START "P2 HD Start"
IDS_DDR_HD_P2_UP_DOWN "P2 HD Up/Down"
IDS_DDR_HD_P2_LEFT_RIGHT "P2 HD Left/Right"
IDS_DDR_HD_P1_SPEAKER_F_R "P1 HD Speaker F R"
IDS_DDR_HD_P1_SPEAKER_F_G "P1 HD Speaker F G"
IDS_DDR_HD_P1_SPEAKER_F_B "P1 HD Speaker F B"
IDS_DDR_HD_P2_SPEAKER_F_R "P2 HD Speaker F R"
IDS_DDR_HD_P2_SPEAKER_F_G "P2 HD Speaker F G"
IDS_DDR_HD_P2_SPEAKER_F_B "P2 HD Speaker F B"
IDS_DDR_HD_P1_SPEAKER_W_R "P1 HD Speaker W R"
IDS_DDR_HD_P1_SPEAKER_W_G "P1 HD Speaker W G"
IDS_DDR_HD_P1_SPEAKER_W_B "P1 HD Speaker W B"
IDS_DDR_HD_P2_SPEAKER_W_R "P2 HD Speaker W R"
IDS_DDR_HD_P2_SPEAKER_W_G "P2 HD Speaker W G"
IDS_DDR_HD_P2_SPEAKER_W_B "P2 HD Speaker W B"
IDS_DDR_HD_SPOT_RED_TOP "HD Spot Red Top"
IDS_DDR_HD_SPOT_BLUE_TOP "HD Spot Blue Top"
IDS_PNM_SCHEMA "pop'n music"
IDS_PNM_BTN1 "Button 1"
IDS_PNM_BTN2 "Button 2"

View File

@@ -248,7 +248,27 @@
#define IDS_PNM_TOP3 40205
#define IDS_PNM_TOP4 40206
#define IDS_PNM_TOP5 40207
#define IDS_PNM_LB 40208
#define IDS_PNM_LR 40209
#define IDS_PNM_RB 40210
#define IDS_PNM_RR 40211
#define IDS_PNM_LB 40208
#define IDS_PNM_LR 40209
#define IDS_PNM_RB 40210
#define IDS_PNM_RR 40211
#define IDS_DDR_HD_P1_START 40212
#define IDS_DDR_HD_P1_UP_DOWN 40213
#define IDS_DDR_HD_P1_LEFT_RIGHT 40214
#define IDS_DDR_HD_P2_START 40215
#define IDS_DDR_HD_P2_UP_DOWN 40216
#define IDS_DDR_HD_P2_LEFT_RIGHT 40217
#define IDS_DDR_HD_P1_SPEAKER_F_R 40218
#define IDS_DDR_HD_P1_SPEAKER_F_G 40219
#define IDS_DDR_HD_P1_SPEAKER_F_B 40220
#define IDS_DDR_HD_P2_SPEAKER_F_R 40221
#define IDS_DDR_HD_P2_SPEAKER_F_G 40222
#define IDS_DDR_HD_P2_SPEAKER_F_B 40223
#define IDS_DDR_HD_P1_SPEAKER_W_R 40224
#define IDS_DDR_HD_P1_SPEAKER_W_G 40225
#define IDS_DDR_HD_P1_SPEAKER_W_B 40226
#define IDS_DDR_HD_P2_SPEAKER_W_R 40227
#define IDS_DDR_HD_P2_SPEAKER_W_G 40228
#define IDS_DDR_HD_P2_SPEAKER_W_B 40229
#define IDS_DDR_HD_SPOT_RED_TOP 40230
#define IDS_DDR_HD_SPOT_BLUE_TOP 40231

View File

@@ -3,30 +3,32 @@
#include "util/defs.h"
static const struct action_def dm_actions[] = {{0x01, IDS_GENERIC_TEST},
{0x00, IDS_GENERIC_SERVICE},
static const struct action_def dm_actions[] = {
{0x01, IDS_GENERIC_TEST},
{0x00, IDS_GENERIC_SERVICE},
{0x08, IDS_DM_START},
{0x0F, IDS_DM_MENU_LEFT},
{0x11, IDS_DM_MENU_RIGHT},
{0x08, IDS_DM_START},
{0x0F, IDS_DM_MENU_LEFT},
{0x11, IDS_DM_MENU_RIGHT},
{0x0A, IDS_DM_HI_HAT},
{0x0C, IDS_DM_SNARE},
{0x0E, IDS_DM_HIGH_TOM},
{0x10, IDS_DM_LOW_TOM},
{0x12, IDS_DM_CYMBAL},
{0x16, IDS_DM_BASS}};
{0x0A, IDS_DM_HI_HAT},
{0x0C, IDS_DM_SNARE},
{0x0E, IDS_DM_HIGH_TOM},
{0x10, IDS_DM_LOW_TOM},
{0x12, IDS_DM_CYMBAL},
{0x16, IDS_DM_BASS}};
static const struct light_def dm_lights[] = {{0x00, IDS_DM_HI_HAT},
{0x01, IDS_DM_SNARE},
{0x02, IDS_DM_HIGH_TOM},
{0x03, IDS_DM_LOW_TOM},
{0x04, IDS_DM_CYMBAL},
{0x09, IDS_DM_BASS},
{0x0A, IDS_DM_SPEAKER_LIGHT},
{0x08, IDS_DM_SPOT_LIGHT},
{0x06, IDS_DM_START_LIGHT},
{0x07, IDS_DM_MENU_LIGHT}};
static const struct light_def dm_lights[] = {
{0x00, IDS_DM_HI_HAT},
{0x01, IDS_DM_SNARE},
{0x02, IDS_DM_HIGH_TOM},
{0x03, IDS_DM_LOW_TOM},
{0x04, IDS_DM_CYMBAL},
{0x09, IDS_DM_BASS},
{0x0A, IDS_DM_SPEAKER_LIGHT},
{0x08, IDS_DM_SPOT_LIGHT},
{0x06, IDS_DM_START_LIGHT},
{0x07, IDS_DM_MENU_LIGHT}};
static const struct action_def gf_actions[] = {
{0x01, IDS_GENERIC_TEST}, {0x00, IDS_GENERIC_SERVICE},
@@ -43,10 +45,11 @@ static const struct action_def gf_actions[] = {
{0x13, IDS_GF_P2_RED}, {0x15, IDS_GF_P2_GREEN},
{0x17, IDS_GF_P2_BLUE}};
static const struct light_def gf_lights[] = {{0x08, IDS_GF_P1_SPOT_LIGHT},
{0x09, IDS_GF_P2_SPOT_LIGHT},
{0x0A, IDS_GF_P1_START},
{0x0B, IDS_GF_P2_START}};
static const struct light_def gf_lights[] = {
{0x08, IDS_GF_P1_SPOT_LIGHT},
{0x09, IDS_GF_P2_SPOT_LIGHT},
{0x0A, IDS_GF_P1_START},
{0x0B, IDS_GF_P2_START}};
static const struct action_def iidx_actions[] = {
{0x1C, IDS_GENERIC_TEST}, {0x1D, IDS_GENERIC_SERVICE},
@@ -101,8 +104,8 @@ static const struct light_def iidx_lights[] = {
{0x1F, IDS_IIDX_NEON_LIGHT}};
static const struct analog_def iidx_analogs[] = {{0, IDS_IIDX_P1_TT},
{1, IDS_IIDX_P2_TT}};
static const struct analog_def iidx_analogs[] = {
{0, IDS_IIDX_P1_TT}, {1, IDS_IIDX_P2_TT}};
static const struct action_def ddr_actions[] = {
{0x04, IDS_GENERIC_TEST}, {0x06, IDS_GENERIC_SERVICE},
@@ -122,19 +125,48 @@ static const struct action_def ddr_actions[] = {
static const struct light_def ddr_lights[] = {
/* These are split between non-overlapping P3IO and EXTIO state words */
// P3IO: SD
{0x00, IDS_DDR_P1_MENU_LIGHT},
{0x07, IDS_DDR_P1_TOP_LIGHT},
{0x07, IDS_DDR_P1_BOTTOM_LIGHT},
{0x1E, IDS_DDR_P1_UP},
{0x1D, IDS_DDR_P1_DOWN},
{0x1C, IDS_DDR_P1_LEFT},
{0x1B, IDS_DDR_P1_RIGHT},
{0x06, IDS_DDR_P1_BOTTOM_LIGHT},
{0x01, IDS_DDR_P2_MENU_LIGHT},
{0x05, IDS_DDR_P2_TOP_LIGHT},
{0x04, IDS_DDR_P2_BOTTOM_LIGHT},
// P3IO: HD
{0x02, IDS_DDR_HD_SPOT_RED_TOP},
{0x03, IDS_DDR_HD_SPOT_BLUE_TOP},
// P3IO: HDXS
{0x08, IDS_DDR_HD_P1_START},
{0x09, IDS_DDR_HD_P1_UP_DOWN},
{0x0A, IDS_DDR_HD_P1_LEFT_RIGHT},
{0x0B, IDS_DDR_HD_P2_START},
{0x0C, IDS_DDR_HD_P2_UP_DOWN},
{0x0D, IDS_DDR_HD_P2_LEFT_RIGHT},
{0x20, IDS_DDR_HD_P1_SPEAKER_F_R},
{0x21, IDS_DDR_HD_P1_SPEAKER_F_G},
{0x22, IDS_DDR_HD_P1_SPEAKER_F_B},
{0x23, IDS_DDR_HD_P2_SPEAKER_F_R},
{0x24, IDS_DDR_HD_P2_SPEAKER_F_G},
{0x25, IDS_DDR_HD_P2_SPEAKER_F_B},
{0x26, IDS_DDR_HD_P1_SPEAKER_W_R},
{0x27, IDS_DDR_HD_P1_SPEAKER_W_G},
{0x28, IDS_DDR_HD_P1_SPEAKER_W_B},
{0x29, IDS_DDR_HD_P2_SPEAKER_W_R},
{0x2A, IDS_DDR_HD_P2_SPEAKER_W_G},
{0x2B, IDS_DDR_HD_P2_SPEAKER_W_B},
// EXTIO
{0x1E, IDS_DDR_P1_UP},
{0x1D, IDS_DDR_P1_DOWN},
{0x1C, IDS_DDR_P1_LEFT},
{0x1B, IDS_DDR_P1_RIGHT},
{0x16, IDS_DDR_P2_UP},
{0x15, IDS_DDR_P2_DOWN},
{0x14, IDS_DDR_P2_LEFT},
@@ -142,18 +174,19 @@ static const struct light_def ddr_lights[] = {
{0x0E, IDS_DDR_BASS_LIGHT}};
static const struct action_def pnm_actions[] = {{0x07, IDS_GENERIC_TEST},
{0x06, IDS_GENERIC_SERVICE},
static const struct action_def pnm_actions[] = {
{0x07, IDS_GENERIC_TEST},
{0x06, IDS_GENERIC_SERVICE},
{0x08, IDS_PNM_BTN1},
{0x09, IDS_PNM_BTN2},
{0x0A, IDS_PNM_BTN3},
{0x0B, IDS_PNM_BTN4},
{0x0C, IDS_PNM_BTN5},
{0x0D, IDS_PNM_BTN6},
{0x0E, IDS_PNM_BTN7},
{0x0F, IDS_PNM_BTN8},
{0x10, IDS_PNM_BTN9}};
{0x08, IDS_PNM_BTN1},
{0x09, IDS_PNM_BTN2},
{0x0A, IDS_PNM_BTN3},
{0x0B, IDS_PNM_BTN4},
{0x0C, IDS_PNM_BTN5},
{0x0D, IDS_PNM_BTN6},
{0x0E, IDS_PNM_BTN7},
{0x0F, IDS_PNM_BTN8},
{0x10, IDS_PNM_BTN9}};
static const struct light_def pnm_lights[] = {
{0x17, IDS_PNM_BTN1},
@@ -176,25 +209,26 @@ static const struct light_def pnm_lights[] = {
{0x28, IDS_PNM_RR},
};
static const struct action_def jb_actions[] = {{0x10, IDS_GENERIC_TEST},
{0x11, IDS_GENERIC_SERVICE},
static const struct action_def jb_actions[] = {
{0x10, IDS_GENERIC_TEST},
{0x11, IDS_GENERIC_SERVICE},
{0x00, IDS_JB_PANEL1},
{0x01, IDS_JB_PANEL2},
{0x02, IDS_JB_PANEL3},
{0x03, IDS_JB_PANEL4},
{0x04, IDS_JB_PANEL5},
{0x05, IDS_JB_PANEL6},
{0x06, IDS_JB_PANEL7},
{0x07, IDS_JB_PANEL8},
{0x08, IDS_JB_PANEL9},
{0x09, IDS_JB_PANEL10},
{0x0A, IDS_JB_PANEL11},
{0x0B, IDS_JB_PANEL12},
{0x0C, IDS_JB_PANEL13},
{0x0D, IDS_JB_PANEL14},
{0x0E, IDS_JB_PANEL15},
{0x0F, IDS_JB_PANEL16}};
{0x00, IDS_JB_PANEL1},
{0x01, IDS_JB_PANEL2},
{0x02, IDS_JB_PANEL3},
{0x03, IDS_JB_PANEL4},
{0x04, IDS_JB_PANEL5},
{0x05, IDS_JB_PANEL6},
{0x06, IDS_JB_PANEL7},
{0x07, IDS_JB_PANEL8},
{0x08, IDS_JB_PANEL9},
{0x09, IDS_JB_PANEL10},
{0x0A, IDS_JB_PANEL11},
{0x0B, IDS_JB_PANEL12},
{0x0C, IDS_JB_PANEL13},
{0x0D, IDS_JB_PANEL14},
{0x0E, IDS_JB_PANEL15},
{0x0F, IDS_JB_PANEL16}};
static const struct light_def jb_lights[] = {
{0x00, IDS_JB_RGB_FRONT_R},
@@ -217,15 +251,16 @@ static const struct light_def jb_lights[] = {
{0x11, IDS_JB_RGB_WOOFER_B},
};
static const struct action_def sdvx_actions[] = {{0x05, IDS_GENERIC_TEST},
{0x04, IDS_GENERIC_SERVICE},
{0x0B, IDS_SDVX_START},
{0x0A, IDS_SDVX_BTN_A},
{0x09, IDS_SDVX_BTN_B},
{0x08, IDS_SDVX_BTN_C},
{0x15, IDS_SDVX_BTN_D},
{0x14, IDS_SDVX_FX_L},
{0x13, IDS_SDVX_FX_R}};
static const struct action_def sdvx_actions[] = {
{0x05, IDS_GENERIC_TEST},
{0x04, IDS_GENERIC_SERVICE},
{0x0B, IDS_SDVX_START},
{0x0A, IDS_SDVX_BTN_A},
{0x09, IDS_SDVX_BTN_B},
{0x08, IDS_SDVX_BTN_C},
{0x15, IDS_SDVX_BTN_D},
{0x14, IDS_SDVX_FX_L},
{0x13, IDS_SDVX_FX_R}};
static const struct light_def sdvx_lights[] = {
{0x0D, IDS_SDVX_BTN_A}, {0x0E, IDS_SDVX_BTN_B}, {0x0F, IDS_SDVX_BTN_C},
@@ -238,19 +273,19 @@ static const struct light_def sdvx_lights[] = {
{0x1E, IDS_SDVX_RGB5_B}, {0x1F, IDS_SDVX_RGB6_R}, {0x20, IDS_SDVX_RGB6_G},
{0x21, IDS_SDVX_RGB6_B}};
static const struct analog_def sdvx_analogs[] = {{0, IDS_SDVX_VOL_L},
{1, IDS_SDVX_VOL_R}};
static const struct analog_def sdvx_analogs[] = {
{0, IDS_SDVX_VOL_L}, {1, IDS_SDVX_VOL_R}};
static const struct action_def rb_actions[] = {{0x00, IDS_GENERIC_TEST},
{0x01, IDS_GENERIC_SERVICE}};
static const struct action_def rb_actions[] = {
{0x00, IDS_GENERIC_TEST}, {0x01, IDS_GENERIC_SERVICE}};
static const struct action_def bst_actions[] = {
{0x05, IDS_GENERIC_TEST},
{0x04, IDS_GENERIC_SERVICE},
};
static const struct eam_unit_def schema_eam_unit_defs[] = {{IDS_READER_P1, 0},
{IDS_READER_P2, 1}};
static const struct eam_unit_def schema_eam_unit_defs[] = {
{IDS_READER_P1, 0}, {IDS_READER_P2, 1}};
const struct schema schemas[] = {
{"iidx",

View File

@@ -7,3 +7,5 @@ EXPORTS
ddr_io_read_pad
ddr_io_set_lights_extio
ddr_io_set_lights_p3io
ddr_io_set_lights_hdxs_panel
ddr_io_set_lights_hdxs_rgb

View File

@@ -207,6 +207,22 @@ void ddr_io_set_lights_p3io(uint32_t p3io_lights)
atomic_fetch_and(&out.lights, ~clr);
}
void ddr_io_set_lights_hdxs_panel(uint32_t lights)
{
(void) lights;
// stubbed
}
void ddr_io_set_lights_hdxs_rgb(uint8_t idx, uint8_t r, uint8_t g, uint8_t b)
{
(void) idx;
(void) r;
(void) g;
(void) b;
// stubbed
}
void ddr_io_fini(void)
{
if (initted) {

View File

@@ -7,3 +7,5 @@ EXPORTS
ddr_io_read_pad
ddr_io_set_lights_extio
ddr_io_set_lights_p3io
ddr_io_set_lights_hdxs_panel
ddr_io_set_lights_hdxs_rgb

View File

@@ -173,6 +173,25 @@ void ddr_io_set_lights_p3io(uint32_t lights)
}
}
void ddr_io_set_lights_hdxs_panel(uint32_t lights)
{
uint8_t i;
for (i = 0x08; i <= 0x0D; i++) {
mapper_write_light(i, lights & (1 << i) ? 255 : 0);
}
}
void ddr_io_set_lights_hdxs_rgb(uint8_t idx, uint8_t r, uint8_t g, uint8_t b)
{
if (idx < 4) {
uint8_t base = 0x20 + idx * 3;
mapper_write_light(base + 0, r);
mapper_write_light(base + 1, g);
mapper_write_light(base + 2, b);
}
}
void ddr_io_fini(void)
{
log_info("Stopping SMX.DLL");

View File

@@ -57,6 +57,25 @@ void ddr_io_set_lights_p3io(uint32_t lights)
}
}
void ddr_io_set_lights_hdxs_panel(uint32_t lights)
{
uint8_t i;
for (i = 0x08; i <= 0x0D; i++) {
mapper_write_light(i, lights & (1 << i) ? 255 : 0);
}
}
void ddr_io_set_lights_hdxs_rgb(uint8_t idx, uint8_t r, uint8_t g, uint8_t b)
{
if (idx < 4) {
uint8_t base = 0x20 + idx * 3;
mapper_write_light(base + 0, r);
mapper_write_light(base + 1, g);
mapper_write_light(base + 2, b);
}
}
void ddr_io_fini(void)
{
input_fini();

View File

@@ -7,3 +7,5 @@ EXPORTS
ddr_io_read_pad
ddr_io_set_lights_extio
ddr_io_set_lights_p3io
ddr_io_set_lights_hdxs_panel
ddr_io_set_lights_hdxs_rgb