Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
edc9e1dbb3
BIN
assets/sounds/genesis_bass/genesis_bass_024.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_024.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_025.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_025.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_026.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_026.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_027.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_027.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_028.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_028.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_029.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_029.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_030.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_030.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_031.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_031.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_032.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_032.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_033.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_033.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_034.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_034.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_035.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_035.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_036.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_036.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_037.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_037.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_038.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_038.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_039.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_039.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_040.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_040.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_041.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_041.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_042.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_042.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_043.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_043.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_044.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_044.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_045.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_045.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_046.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_046.wav
Normal file
Binary file not shown.
BIN
assets/sounds/genesis_bass/genesis_bass_047.wav
Normal file
BIN
assets/sounds/genesis_bass/genesis_bass_047.wav
Normal file
Binary file not shown.
@ -13,6 +13,7 @@
|
||||
namespace
|
||||
{
|
||||
constexpr int LANE_COUNT = 12;
|
||||
constexpr int OCTAVE_COUNT = 2;
|
||||
constexpr int MAX_GAMEPADS = 4;
|
||||
constexpr int MAX_INSTRUMENT_TYPES = MAX_GAMEPADS;
|
||||
constexpr float RECEPTOR_HEIGHT = 150.0f;
|
||||
@ -63,36 +64,63 @@ const Color INSTRUMENT_COLORS[MAX_INSTRUMENT_TYPES] = {
|
||||
{255, 200, 80, 255}, // yellow
|
||||
};
|
||||
|
||||
/* Per-instrument WAV paths (lane = midi % 12). C4–B4 map to lanes 0–11. Reuse same set until more assets exist. */
|
||||
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {
|
||||
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] {
|
||||
{ // Instrument 0
|
||||
"assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.wav"},
|
||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||
},
|
||||
{ // Instrument 1
|
||||
"assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.wav"},
|
||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||
},
|
||||
{ // Instrument 2
|
||||
"assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.wav"},
|
||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||
},
|
||||
{ // Instrument 3
|
||||
"assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
|
||||
"assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.wav"},
|
||||
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_036.wav", "assets/sounds/genesis_bass/genesis_bass_037.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_038.wav", "assets/sounds/genesis_bass/genesis_bass_039.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_040.wav", "assets/sounds/genesis_bass/genesis_bass_041.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_042.wav", "assets/sounds/genesis_bass/genesis_bass_043.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_044.wav", "assets/sounds/genesis_bass/genesis_bass_045.wav",
|
||||
"assets/sounds/genesis_bass/genesis_bass_046.wav", "assets/sounds/genesis_bass/genesis_bass_047.wav"
|
||||
}
|
||||
};
|
||||
|
||||
struct Glyph
|
||||
@ -100,6 +128,7 @@ struct Glyph
|
||||
float time = 0.0f;
|
||||
int lane = 0;
|
||||
int instrument_slot = 0;
|
||||
int octave = 0;
|
||||
|
||||
float y_position(float song_time, float hit_line_y) const
|
||||
{
|
||||
@ -125,7 +154,8 @@ std::vector<Glyph> chart_from_song(const Song& song)
|
||||
continue;
|
||||
float time_sec = note.ticks / ticks_per_sec;
|
||||
int lane = note.midi % LANE_COUNT;
|
||||
glyphs.push_back(Glyph{time_sec, lane, instrument_slot});
|
||||
int octave = note.midi % (LANE_COUNT * OCTAVE_COUNT);
|
||||
glyphs.push_back(Glyph{time_sec, lane, instrument_slot, octave});
|
||||
}
|
||||
}
|
||||
std::sort(glyphs.begin(), glyphs.end(),
|
||||
@ -180,8 +210,8 @@ public:
|
||||
float lane_width = 0.0f;
|
||||
float screen_width = 0.0f;
|
||||
float screen_height = 0.0f;
|
||||
Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {{0}};
|
||||
bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {{false}};
|
||||
Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{0}};
|
||||
bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{false}};
|
||||
static constexpr float PRESS_FLASH_DURATION = 0.12f;
|
||||
static constexpr float MISS_FLASH_DURATION = 0.15f;
|
||||
float press_flash_timer[LANE_COUNT] = {0};
|
||||
@ -241,7 +271,7 @@ public:
|
||||
}
|
||||
for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++)
|
||||
{
|
||||
for (int lane = 0; lane < LANE_COUNT; lane++)
|
||||
for (int lane = 0; lane < LANE_COUNT * OCTAVE_COUNT; lane++)
|
||||
{
|
||||
if (note_sounds_loaded[slot][lane])
|
||||
{
|
||||
@ -262,7 +292,7 @@ public:
|
||||
update_layout();
|
||||
for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++)
|
||||
{
|
||||
for (int lane = 0; lane < LANE_COUNT; lane++)
|
||||
for (int lane = 0; lane < LANE_COUNT * OCTAVE_COUNT; lane++)
|
||||
{
|
||||
const char* path = INSTRUMENT_LANE_WAV[slot][lane];
|
||||
if (FileExists(path))
|
||||
@ -348,8 +378,9 @@ public:
|
||||
hit_flash_timer[n->lane] = PRESS_FLASH_DURATION;
|
||||
spawned.erase(it);
|
||||
completed_notes.insert(n);
|
||||
if (note_sounds_loaded[n->instrument_slot][n->lane])
|
||||
PlaySound(note_sounds[n->instrument_slot][n->lane]);
|
||||
printf("note lane: %d, note octave: %d\n", n->lane, n->octave);
|
||||
if (note_sounds_loaded[n->instrument_slot][n->octave])
|
||||
PlaySound(note_sounds[n->instrument_slot][n->octave]);
|
||||
}
|
||||
combo++;
|
||||
score += 100 + std::min(combo * 10, 50);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user