Use some basic SFX scripting to make a DDR "demake." Slam Jam is further along than I am. Go enjoy that, too.
Okay. So I did most of this last week. I'll probably revisit this after Concert of the Damned; I certainly would like to get way better with SFX/Music tracker stuff, and code to manipulate it from within. So far it has arrows (that can be recolored for 1/8 and 1/16 notes, holds, etc.), a "hold blur" that can be flipped each direction, some system icons and CD banners (which can also be palette swapped, but for now they're pretty straightforward).
Not a whole lot, but it's there.
The music part is gonna be a bit trickier; but I believe still doable. The thing is, I'm going to need a way to create a few functions that make and load SFX structures - or at least can reassign the IDs on the fly - so that the song select screen has 64 samples; and then once a stage is chosen, it can write the song data into the music tracker for gameplay purposes - and then play a sequence of the structures (1-8, 9-16, 17-23, 9-16, 24-32; for example); and at the end of the stage - during the EVAL loop - it reloads the samples.
Fact is, a lot of songs share many of the same core beats and structures, only the main melodies and tempos are really different. The tempo will have to be totally reimagined (to work with PICO's "speed" setting instead), but a common factor should control both that and the arrow speed. And since the game doesn't require external sound effects, it can actually use all 4 sound channels for composition purposes.
That said though? I'll fully admit I hardly know diddly about how the data structure for that stuff works right now. So "Music Monday" may be a good few months of constant tweaking to make right; and really, none of the other gameplay works without that. But I'm posting the current source material here because someone here may be able to run with it better than I can.
Visualizer code after that? I mean... it exists now elsewhere, so we'll see what happens with that.
BONUS ROUND: Name all of the songs that the CD cover sprites reference!!
Another similar concept popped into mind after this, and it might be equally amusing, as well as different enough to be compelling.
You control a character, and a corresponding stepzone (just Z/X, it's two arrows wide) located above them (they both snap to the tile grid). Easy charts are 4 columns acrpss, mediums are 6, hards are 8. As targets approach the stepzone, you have to move the character to the position and then tap Z/X with the rhythmwork. Charts also contain "spikes" which you have to move the character/stepzone to AVOID. You can also "slide" targets by holding Z/X and then moving left/right with the correct timing (or holding both of them; which can also sustain holds).
It's similar enough in structure to reuse the music code; but also different enough to be its own beast. Oh well, there's always later.
As also mentioned in my tandem project "Concert of the Damned," didn't get a whole lot of ground yesterday or today. But what little I did do, I was doing here (little logo stuff; I am requesting permission to use a slight deviance of the real PICO-8 logo in it)... and also questions. The most prominent being:
IS MUSIC/SFX SPEED AN INTEGER OR A DOUBLE?
I've papered out a "BPM to 30 FPS chart" - seems like the music speed variable is literally the number of programming steps/frames between sounds/notes. So "actual BPMs" I can use include:
1800 (!!), 900, 600, 450, 360, 300, ~257, 225, 200, 180, ~163, 150, ~138, 128.5, 112.5, ~106, 100, ~95, 90, 85, 81, 78.5, 75, 72, 69, 64, 60, skip-a-few, 50.
Three very noticable vacancies here:
400, 190~380, and 170~340 BPM.
Now, there's three ways I can go about making the songs in/around those ranges:
-If "Music/SFX Speed" is a double, I can just make the decimal values (170 BPM, for example, is 11.5 steps @ 30 FPS) into the Speed, and all is well.
-If "Music/SFX Speed" is an integer, I'll have to compose the songs in the slower BPM range, and then multiply the arrow speed to compensate. This will result in considerably simplified compositions, especially the 340/380 - since I'd have to compose in 85/~95 BPM (= 21/19 frames per note, or about 3 notes every two seconds... eww!) and then quadruple the arrow speed.
-OR, I'd have to round these up/down to the nearest common denominator, so stages of these tempos will feel noticably slower or faster.
I did entertain the idea of changing the internal FPS to compensate, but you know what else that changes? The timing/judgement windows. Busted!
Still learning sound tracker stuff - very useful and pertinent stuff from studying music carts. Layering faster and slower speed stuff together makes looping and composing MUCH MUCH easier than I expected it to be. Now that I know I can fit 8~9 entire songs in memory at once, that means I only have to rewrite the data every "mix," and I only have to reassign Music channels or SFX notes in the middle of the song, rather than both.
I also just learned about update60, which makes the 400 and 170/190 tempos both work! All that plays "simplified" now is the 340/380, and to be honest, even the in-game tracks like that are just artifically double-timed.
WHEW! Things coming together little by little. A shame I only have about an hour to fiddle with this at all today... nothing much to update, except that I'm still learning this stuff!
These two projects may be a full monther, if my job keeps spreading me so thin!
[Please log in to post a comment]