Compare commits

..

No commits in common. "2c76479f1eb3d7d70bc325f51a4bd5c4d952daf5" and "0be0ff963e38fb2e50c094b5ed3d558c5c32bb24" have entirely different histories.

25 changed files with 33 additions and 64 deletions

View File

@ -13,7 +13,6 @@
namespace namespace
{ {
constexpr int LANE_COUNT = 12; constexpr int LANE_COUNT = 12;
constexpr int OCTAVE_COUNT = 2;
constexpr int MAX_GAMEPADS = 4; constexpr int MAX_GAMEPADS = 4;
constexpr int MAX_INSTRUMENT_TYPES = MAX_GAMEPADS; constexpr int MAX_INSTRUMENT_TYPES = MAX_GAMEPADS;
constexpr float RECEPTOR_HEIGHT = 150.0f; constexpr float RECEPTOR_HEIGHT = 150.0f;
@ -63,63 +62,36 @@ const Color INSTRUMENT_COLORS[MAX_INSTRUMENT_TYPES] = {
{255, 200, 80, 255}, // yellow {255, 200, 80, 255}, // yellow
}; };
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] { /* Per-instrument WAV paths (lane = midi % 12). C4B4 map to lanes 011. Reuse same set until more assets exist. */
const char* const INSTRUMENT_LANE_WAV[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {
{ // Instrument 0 { // Instrument 0
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav", "assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav", "assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav", "assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav", "assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav", "assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav", "assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.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 { // Instrument 1
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav", "assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav", "assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav", "assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav", "assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav", "assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav", "assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.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 { // Instrument 2
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav", "assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav", "assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav", "assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav", "assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav", "assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav", "assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.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 { // Instrument 3
"assets/sounds/genesis_bass/genesis_bass_024.wav", "assets/sounds/genesis_bass/genesis_bass_025.wav", "assets/sounds/nes_harp/nes_harp_C4.wav", "assets/sounds/nes_harp/nes_harp_Cs4.wav",
"assets/sounds/genesis_bass/genesis_bass_026.wav", "assets/sounds/genesis_bass/genesis_bass_027.wav", "assets/sounds/nes_harp/nes_harp_D4.wav", "assets/sounds/nes_harp/nes_harp_Ds4.wav",
"assets/sounds/genesis_bass/genesis_bass_028.wav", "assets/sounds/genesis_bass/genesis_bass_029.wav", "assets/sounds/nes_harp/nes_harp_E4.wav", "assets/sounds/nes_harp/nes_harp_F4.wav",
"assets/sounds/genesis_bass/genesis_bass_030.wav", "assets/sounds/genesis_bass/genesis_bass_031.wav", "assets/sounds/nes_harp/nes_harp_Fs4.wav", "assets/sounds/nes_harp/nes_harp_G4.wav",
"assets/sounds/genesis_bass/genesis_bass_032.wav", "assets/sounds/genesis_bass/genesis_bass_033.wav", "assets/sounds/nes_harp/nes_harp_Gs4.wav", "assets/sounds/nes_harp/nes_harp_A4.wav",
"assets/sounds/genesis_bass/genesis_bass_034.wav", "assets/sounds/genesis_bass/genesis_bass_035.wav", "assets/sounds/nes_harp/nes_harp_As4.wav", "assets/sounds/nes_harp/nes_harp_B4.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 struct Glyph
@ -127,7 +99,6 @@ struct Glyph
float time = 0.0f; float time = 0.0f;
int lane = 0; int lane = 0;
int instrument_slot = 0; int instrument_slot = 0;
int octave = 0;
float y_position(float song_time, float hit_line_y) const float y_position(float song_time, float hit_line_y) const
{ {
@ -153,8 +124,7 @@ std::vector<Glyph> chart_from_song(const Song& song)
continue; continue;
float time_sec = note.ticks / ticks_per_sec; float time_sec = note.ticks / ticks_per_sec;
int lane = note.midi % LANE_COUNT; int lane = note.midi % LANE_COUNT;
int octave = note.midi % (LANE_COUNT * OCTAVE_COUNT); glyphs.push_back(Glyph{time_sec, lane, instrument_slot});
glyphs.push_back(Glyph{time_sec, lane, instrument_slot, octave});
} }
} }
std::sort(glyphs.begin(), glyphs.end(), std::sort(glyphs.begin(), glyphs.end(),
@ -209,8 +179,8 @@ public:
float lane_width = 0.0f; float lane_width = 0.0f;
float screen_width = 0.0f; float screen_width = 0.0f;
float screen_height = 0.0f; float screen_height = 0.0f;
Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{0}}; Sound note_sounds[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {{0}};
bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT * OCTAVE_COUNT] = {{false}}; bool note_sounds_loaded[MAX_INSTRUMENT_TYPES][LANE_COUNT] = {{false}};
static constexpr float PRESS_FLASH_DURATION = 0.12f; static constexpr float PRESS_FLASH_DURATION = 0.12f;
static constexpr float MISS_FLASH_DURATION = 0.15f; static constexpr float MISS_FLASH_DURATION = 0.15f;
float press_flash_timer[LANE_COUNT] = {0}; float press_flash_timer[LANE_COUNT] = {0};
@ -270,7 +240,7 @@ public:
} }
for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++) for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++)
{ {
for (int lane = 0; lane < LANE_COUNT * OCTAVE_COUNT; lane++) for (int lane = 0; lane < LANE_COUNT; lane++)
{ {
if (note_sounds_loaded[slot][lane]) if (note_sounds_loaded[slot][lane])
{ {
@ -291,7 +261,7 @@ public:
update_layout(); update_layout();
for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++) for (int slot = 0; slot < MAX_INSTRUMENT_TYPES; slot++)
{ {
for (int lane = 0; lane < LANE_COUNT * OCTAVE_COUNT; lane++) for (int lane = 0; lane < LANE_COUNT; lane++)
{ {
const char* path = INSTRUMENT_LANE_WAV[slot][lane]; const char* path = INSTRUMENT_LANE_WAV[slot][lane];
if (FileExists(path)) if (FileExists(path))
@ -377,9 +347,8 @@ public:
hit_flash_timer[n->lane] = PRESS_FLASH_DURATION; hit_flash_timer[n->lane] = PRESS_FLASH_DURATION;
spawned.erase(it); spawned.erase(it);
completed_notes.insert(n); completed_notes.insert(n);
printf("note lane: %d, note octave: %d\n", n->lane, n->octave); if (note_sounds_loaded[n->instrument_slot][n->lane])
if (note_sounds_loaded[n->instrument_slot][n->octave]) PlaySound(note_sounds[n->instrument_slot][n->lane]);
PlaySound(note_sounds[n->instrument_slot][n->octave]);
} }
combo++; combo++;
score += 100 + std::min(combo * 10, 50); score += 100 + std::min(combo * 10, 50);