// Steady On Tim, It's Only A Budget Game // by Gasman / Hooy-Program // ported to MicroW8 by exoticorn/icebird include "../include/microw8-api.cwa" fn melody(t: i32, T: i32) -> i32 { let inline riff_pos = abs(((T&31) - 16) as f32) as i32; let lazy shift = ((1-((T>>5)&3))%2-1) as f32 / 6 as f32; let inline note_count = 5 - (T >= 512); let inline octave = (riff_pos/5) as f32; let inline riff_note = 5514 >> (riff_pos % note_count * 4) & 15; let inline melody_freq = pow(2 as f32, shift + octave - (riff_note as f32 / 12 as f32)); let inline melody = (t as f32 * melody_freq) as i32 & 128; let inline arp_note = ((0x85>>((t>>12)%3*4)) & 15) - 1; let inline arp_freq = pow(2 as f32, shift + (arp_note as f32 / 12 as f32)); let inline arp_vol = (T >= 256) * (12-T%12); let inline arpeggio = ((t as f32 * arp_freq) as i32 & 128) * arp_vol / 12; melody + arpeggio } export fn snd(t: i32) -> f32 { let lazy T = t/10000; let inline mel_arp = melody(t, T)/3 + melody(t, T-3)/5; let inline bass_vol = (T >= 128) & (197 >> (T % 8)); let inline bass_freq = pow(2 as f32, (((T & 4) * ((T & 7) - 1)) as f32 / 24 as f32 - 5 as f32)); let inline bass = ((t as f32 * bass_freq) as i32 & 63) * bass_vol; let inline snare_ish = (random() & 31) * (8 - (T + 4) % 8) / 8; let inline sample = mel_arp + bass + snare_ish; sample as f32 / 255 as f32 }