Hello. This is my first attempt to convert a multi-track MIDI song to Pico-8 through the use of @bikibird's own DENOTE tool. And I believe I was successful.
https://bikibird.itch.io/denote
As for the picture, it helps to squint. Sorry, that's the best I can do. :)
Run in immediate mode for zero hiccups in flicker.



Shovel Knight Main Theme
Music by @Fettuccini
Art by @SmellyFishstiks
I actually made this a while ago, but just never got around to posting it here on the BBS. Thanks to @SmellyFishstiks for taking the time to make the art for it!
Any recommendations for other Shovel Knight songs to demake? Let me know, and I just might do it :)
Hot Diggin'
A game in less than 1kb for PICO-1K jam 2022
Help Digson get away from the falling lava! Dig as fast as you can! Why is the lava falling? Who knows!
HOW TO PLAY:
- arrow keys (or gamepad DPAD) - move left and right
- action button (Z,C, or N on keyboard, "A" on XBOX gamepad) - dig!
- you can dig left and right by holding that direction while digging. Otherwise, you will try to dig down. You can only dig when your feet are on hard ground.
- Your only goal is to outrun the falling lava. Touching red blocks will make the lava run faster. You can dig through red blocks, but doing so will GREATLY speed up the lava, so try to avoid this.




My Pico-8 game inspired by the 1980 Stern Electronics game and made possible by the excellent "Speako8 Speech Synthesis Library" by @bikibird - https://www.lexaloffle.com/bbs/?pid=116919#p
How to Play
Shoot the robots. Avoid the walls. Don't stay in a room for too long!
Controls
[X] - Laser (stands still so you can accurate fire in one of 8 directions)
[O] - Laser (while running)
Thanks To
- Finn for testing
- @bikibird for creating Speako8
Version History
0.80 - 26-Sep-2022 - Released
0.81 - 27-Sep-2022 - Otto now destroys robots
0.82 - 28-Sep-2022 - Updated credits and fixed bug walking through exit door










Shovel Knight Main Theme
[sfx]
Here's my pico-8 transcription of the main theme from Shovel Knight :)
My pixel art skills aren't the most refined, so if anyone out there would like to take a stab at making a 128x128 title screen for this, I'll gladly use that to post this as a cart instead and credit you.





Hello all! I'm having an issue with a game I'm developing, where the collision is working flawlessly with any side other than the left side. for some reason it just wont work with the warps in game and I'm not sure why. left side collisions are working everywhere else, namely with stopping the player walking thru the walls. but not for the warps in game, which are supposed to work kind of like Pokémon's teleporting system. Frankly, I'm stumped and would appreciate if someone could take a look at this. Linked are not only the relevant code in the game, but a test cartridge as well to see what the problem is.
the main files i believe the bug should be happening in is input.lua, collision.lua, and game_manager.lua
collision.lua
--collsion for the map function collide_map(obj,aim,flag) --obj = table needs x,y,w,h --aim = left,right,up,down local x=obj.x local y=obj.y local w=obj.w local h=obj.h local x1=0 local y1=0 local x2=0 local y2=0 if aim=="left" then x1=x-1 y1=y x2=x y2=y+h-1 elseif aim=="right" then x1=x+w-1 y1=y x2=x+w y2=y+h-1 elseif aim=="up" then x1=x+2 y1=y-1 x2=x+w-3 y2=y elseif aim=="down" then x1=x+2 y1=y+h x2=x+w-3 y2=y+h end --pixels to tiles x1/=8 y1/=8 x2/=8 y2/=8 if fget(mget(x1,y1), flag) or fget(mget(x1,y2), flag) or fget(mget(x2,y1), flag) or fget(mget(x2,y2), flag) then return true else return false end end |
game_manager.lua
--manages all overarching functions and mechanics --ex: turns --turn structure turns = { turn = 0, moves = 4, actions = 2, end_moves = false, end_actions = false } --moves player with given direction function move(dir) --if moving left and not colliding with walls if turns.moves > 0 and dir == "left" and not collide_map(p, dir, 1) then p.x -= 8 turns.moves -= 1 printh("col: "..tostring(collide_map(p, dir, 3)), "log", false) --check if colliding with left side warp !NOT WORKING! if collide_map(p, dir, 3) then -- move map printh("moving map left", "log", false) _map.last_x = _map.x _map.x -= 1 printh("x:".._map.x, "log", false) p.x = 120 end --if moving left and not colliding with walls elseif turns.moves > 0 and dir == "right" and not collide_map(p, dir, 1) then p.x += 8 turns.moves -= 1 --check if colliding with right side warp !WORKING! if collide_map(p, dir, 3) then -- move map printh("moving map right", "log", false) _map.last_x = _map.x _map.x += 1 printh("x:".._map.x, "log", false) p.x = 8 end elseif turns.moves > 0 and dir == "up" and not collide_map(p, dir, 1) then p.y -= 8 turns.moves -= 1 elseif turns.moves > 0 and dir == "down" and not collide_map(p, dir, 1) then p.y += 8 turns.moves -= 1 else if turns.actions > 0 and turns.moves <= 0 then turns.end_moves = true elseif turns.actions <= 0 then turns.end_actions = true end end end function end_turn() turns.turn += 1 turns.moves = 4 turns.actions = 2 turns.end_moves = false turns.end_actions = false end function draw_turns() if turns.end_moves then print("out of moves", 32, 0) elseif turns.end_actions then print("out of actions", 32, 0) end print("turn: "..turns.turn, 0, 0) print("moves: "..turns.moves, 0, 8) print("actions: "..turns.actions, 0, 16) end |
map.lua
-- map functionality, using the x and y in _map to determine which room the player is in _map = { x = 0, y = 0, last_x = 0, last_y = 0 } --draws the map function draw_map() local x = 0 local y = 0 if _map.x ~= 0 then x = (_map.x - _map.last_x)*(_map.x+15) end if _map.y ~= 0 then y = (_map.y - _map.last_x)*(_map.x+15) end printh("draw_x:"..x, "log", false) map(x, y) end |
input.lua
--input variables input_frozen = false --input function --gets input for all buttons in the game and provides logic behind them function input() if btnp(5) and not menu.menu_opened then open_menu() elseif btnp(5) and menu.menu_opened then close_menu() end if not input_frozen then if btnp(0) then move("left") end if btnp(1) then move("right") end if btnp(2) then move("up") end if btnp(3) then move("down") end if btnp(4) then end_turn() end end end |
player.lua
--player class, contains all information relavent to the player character --structure containing all variables relevant to the player p = { sp = 1, x = 64, y = 64, w = 8, h = 8 } --draws the player to the screen function draw_player() spr(p.sp, p.x, p.y) end |
menu.lua
--menu class containing all logic for the in game menu --structure containing all variabkes relevant to the menu menu = { menu_opened = false } --opens the menu function open_menu() input_frozen = true menu.menu_opened = true end --closes the menu function close_menu() input_frozen = false menu.menu_opened = false end -- draws the menu function draw_menu() cls(0) map(112, 48) print("menu", 59, 6) end |
main.lua
--default functions draw, update, and init function _init() --setting player p.sp = 1 p.x = 64 p.y = 64 --resetting menu and input menu.menu_opened = false input_frozen = false end function _draw() if menu.menu_opened then draw_menu() elseif not menu.menu_opened then cls(3) draw_map() draw_player() draw_turns() end end function _update() input() end |
here is a test cartridge to see the issue at play
controls:
left: move left
right: move right
up: move up
down: move down
x: open menu
z: advance turn
to recreate the bug, you can walk through the warp on the right of the screen from spawn (orange arrows)
but when you make it to the other side, you cannot warp back even though the logic should let you.

An homage to our favorite guy, the one and only Emil Grubak Schmalfeldt ❤️
Made by four friends on a rainy day in Odense, Denmark on the 24th of September, 2022.
Credits & Thanks
To crank out a fun game in a single day, we build upon the engine and assets from Harold's Bad Day by @biovoid. This game would not have been possible without it!
The Team
- Christian Kudahl (code, design)
- Andrew Skjellerup (design)
- Jeppe Due Hunsdahl (music, sfx)
- Kasper Meyer (art, janitorial work)


I'm working on a simple space invaders clone to teach a workshop this october.
This is what I've got:
INVADERS GAME:
Update 1:
- Added lives can't lose em yet.
- Added ufo
Update 2:
- Added levels
- Added level transition
Update 3:
- Added game over
- Scaling difficulty with levels
Update 4:
- Added start screen
- Capped level difficulty
- Changed reset from O to X



Here's a flute I made for a track in my current project. I tried to capture the breathy harmonics that happen on the attack of a note. After the note is held, it goes into a looping tremelo.
I didn't switch on the reverb here, but I am using it with medium reverb on the pattern in my track.
For a softer sound, you can use the fade-in effect (4), or alternate between fading in and hard attack for more variety in sound. I've also had success with using a fast arpeggio between 2 notes for a trill effect.
Feel free to use it in your projects under CC4-BY-NC-SA license. Enjoy!


My family like the online word game Waffle but wanted to play more than once a day. So I wrote them this version in Pico-8. Along the way I reimagined it as an 8-bit console title with sound effects, music, particles, multiple levels, ramping difficulty, and a final “boss battle” that you unlock by completing all the preceding levels.
How to Play

Scrambled words are arranged in a grid. Unscramble all the words by swapping pairs of letters. You have a limited number of swaps to complete each level. Run out of swaps and you have to try again. Complete the level with swaps left over to score points.





Dart-07
A scrolling shooter. As the Dart-07 you fight on Emerald Islands, Outpost in Space, and in the interstellar Phoslar Mine |
This is a PICO-8 game, which I made during Basic Shmup Showcase event organised by Lazy Devs Academy.
You can play it here and on https://beetrootpaul.itch.io/dart-07 .
⚠️ Please be aware this game is under development. Mission 1 is complete and ready to play, but you enter missions 2 and 3 on your own risk 😄
If you want to take a look at the codebase, please visit https://github.com/beetrootpaul/dart-07 (the code inside PICO-8 carts of this game is minified, therefore not suitable for reading).


.png)
