Log In  

Cart #feed_crow_a_peanut-0 | 2023-04-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
23

Bury a dancing crow behind a wall of peanuts. This is what it wants.

Hey! This is an idle game designed to put the player in tension between queuing more actions (and hence making progress) and actually witnessing the gameplay.

Also, there's a chiptune. It incorporates Pico-8's built-in sound, but also some homemade synth code for the bassline.

Epilepsy warning: there's a little flashing, but all of it is localized to small areas of the screen. (under 16x16)

P#129170 2023-04-30 03:47 ( Edited 2023-04-30 03:55)

1

I love this so much you don't even know

P#129183 2023-04-30 13:48
1

The crow consumed enough offerings to break reality and this is fine.

P#129184 2023-04-30 14:14
1

HEHEHEH
the music and animation is so good

P#129222 2023-05-01 09:54
1

Never thought a simple game like this could go so hard

P#129295 2023-05-02 08:05
1

I feel like i like this way more than i should

P#129385 2023-05-04 17:26
1

Hey seriously, could you explain your hoover code? I know the Alpha Juno sound involved a sawtooth wave amplitude modulated by PWM, so did you write it as sort of a bytebeat thing?

P#129468 2023-05-07 13:04

I don't know if there's much to explain for the hoover other than what's in the code! (Which is pretty short, if you scroll through the cart.)

It's two pulse waves x 0.125 where the transition point (pwm) is modulated over time, plus a sine wave x0.75. The two square waves are at slightly different frequencies, so you'll hear hoovering. After that, I saturate it a little with tbl[i]=tbl[i] * 0.5 + sgn(tbl[i])*sqrt(abs(tbl[i])) * 0.5, which is just waveshaping by sqrt() at 50% wetness.

IMHO, the real trick here is that, because the 0x808 stuff is limited to 5512hz, and the sequencer melody is limited to 22khz, the hoover sounds intentionally lowpassed to make room for the melody. (so my mix accidentally sounds competent) There's a game by someone else called Aquaverge coming out in a few days where I wrote the soundtrack but didn't use the same trick, and the bassline (despite being in the same frequency range, and using similar elements) sounds a lot more abrasive.

The other trick here is just that moving in octaves (as I did in the second part) sounds full and adds a lot of rhythm without me compromising on loudness. It's also just a really good chord progression (I'm not self-praising in this case: it's a lift and simplification of the chords from All I Do by Stevie Wonder) and everything but the melody is in Pythagorean tuning, which is going to make it sound thick and wholesome.

P#129477 2023-05-07 17:11 ( Edited 2023-05-07 17:11)

Oh, and if you're not familiar with pcm nonsense in Pico 8, here's a quick demo cart! As an exercise for the reader, generate two square waves and one sin wave, then apply sqrt shaping instead:

-- pico 8 automatically muffles 0x808 audio, turn that off!
poke(0x5f36,peek(0x5f36)|0x20)

function _init()
   sw_pos=0
end

function _update60()
   while stat(108)<stat(109) do

      local addr=0x8000

      -- 140 hz, but add wobble
      local frequency=140+sin(time()*4)*4

      -- 0x808 audio is at 5512 hz
      -- so there are 2x as many
      -- audio frames
      local base=5512*2

      -- how much progress do we make on
      -- the waveform per audio frame?
      local ratio=frequency/base

      -- generate 32 frames of audio
      for _=0,31 do
         -- advance saw pos for this frame
         sw_pos+=ratio
         sw_pos%=1
         -- generate saw from 0 to 1
         local samp=sw_pos

         -- save one sample to memory
         -- (it has to be from 0 to 255
         --  or 0x808 won't understand it!)
         local amp=flr(samp*255)
         poke(addr,amp)
         addr+=1
      end

      -- send it to the audio output!
      serial(0x808,0x8000,32)
   end
end
P#129479 2023-05-07 17:14 ( Edited 2023-05-07 18:35)
1

P E A N U T

P#129520 2023-05-08 12:24
1

this is amazing

P#129521 2023-05-08 12:52
1
P#132089 2023-07-18 02:31

[Please log in to post a comment]