
Controls
arrow keys and the "X" and "C" buttons
Description
This is a small roguelike inspired by the Shin Megami Tensei games
How To Play
Controls
- Left Arrow and Right Arrow to turn
- Down Arrow to turn 180 degrees
- Up Arrow to move forward
- X to open/close the map and to select moves when in combat
- Z to run when in combat
Gameplay
You will encounter enemies while you explore the dungeon. Each enemy will have a weakness. The likelihood of encountering an enemy is indicated by the compass. When the compass has a red ring, you will encounter an enemy soon.

You will find a ladder on each level. This level will take you to the next floor. Each floor will increase the enemies difficulty.

You can press X to open the map. Use this to find items and the ladder.

Throughout the dungeon you will find various items. Health items will increase your max health and current health.

MP items will raise your max MP and your current MP. MP is used to cast spells.

Power items will increase the amount of damage you deal to an enemy.

Random items will give you either a random stat buff or a debuff.

Logarithm Benchmark
Logarithm algorithms
wiki method
stats
tokens:46
description
the wiki method uses an interesting property of logarithms to compute a value. specifically:
log(A * B) = log(A) + log(B)
by using a look up table for all the logarithms (base 10 of course) of the first 9 digits (1-9) we can use the following code to compute logarithms:
log10_table = { 0, 0.3, 0.475, 0.6, 0.7, 0.775, 0.8375, 0.9, 0.95, 1 } function log10(n) if (n < 1) return nil local t = 0 while n > 10 do n /= 10 t += 1 end return log10_table[flr(n)] + t end |
what this algorithm actually does is repeatedly divide by 10 and add the number of times it does this to a counter. Essentially we are assuming the number n can be expressed as m * 10 *10 *10... and we are simply removing these tens. then re-adding them in at the end.
extended wiki method
stats
tokens:98 (can probably be improved easily)
description
its the same thing but we use the following properties to extend the domain of the function:
log base n of m = log base 10 of n / log base 10 of m
log(n)=log(A)-log(A/n) when 0 < n < 1
my method
stats
tokens:118
description
I simply test 'all' the possible digits and calculate the error. then take the digit with the lowest error then I move on to test the next digit. Effectivly a brute force method.
The code:
function log(n,m) assert(n>0and m>0and m!=1) if(m<1)return log(n,10)/log(m,10) if(n<1)return -log(1/n,m) local g,cur,err='0000.0000',g,9999 for i=1,9do if i!=5then for j=0,9do cur=sub(g,1,i-1)..j..sub(g,i+1) local c=m^tonum(cur)-n if abs(c)< err and c<=0then g,err=cur,abs(c) end end end end return tonum(g) end |
This is a sample jukebox of songs made with bebop, a music generator desktop app I created for making songs for videogames. With bebop you can generate songs in .wav format or export a function that saves the song in your Pico-8 cartridge in the sfx and pattern slots (either momentarily or permanently).
You can find the tool here: https://srsergior.itch.io/bebop
This jukebox has a couple of generated songs that show the type of music that bebop can make. I think that this tool can be useful for giving Pico-8 games that extra musical polish in fast game jams and other projects :)
(it is not an AI tool)
how to export from bebop to Pico-8
Hey @zep I was working on my game and found that my pokes were failing to update the .p8d.txt?
here I tried doing:
?"⁶!5e00²" ?dget(0) stop() |

I found it replicable by doing
cartdata"test" color(7) local v = @0x5e00 if v<8 then [email protected] ?"⁶!5e00"..chr(v+1) run() end ?"done" |
I understand if it's meant to take time to update the file but my game depends on this writing to memory for handling state and I wish I could rely on it.. is there some way to make sure the file has time to be written to that'd be token cheap? like giving it extra flip time or something?
I'm on v0.2.5e not sure if this exists on newer versions.
Random Cart loader
Loads random cartridge off bbs
Fun for wasting time and getting nothing done!
dear @zep
so, i use pico 8 EDU, everywhere! (songs, games, existential crisis, you name it!) and I usually use my PC for it! the problem is, sometimes i get too exited and accidently tap my screen, EDU thinks that means im on mobile and i cant use my real mouse, so i have to quickly save the project and load it back in on another tab, seeing as how many times i ( and most of everybody who has AD(H)D)do this a day, it gets annoying, fast, please fix this!!!
- tetris mino
PICO-VIEW: May 2023

Hello Pico-View Reader, this May issue is the fifth in the series. This month has been jammed full of fun in the community. In this issue we are placing a focus on the multiple game jams that occured in May and the many PICO-8 games made for them!
We'll begin with our usual tasty Game Dev Articles, and then we'll take a look at each major jam that happened this month, with some jam-specific articles sprinkled in there as well. This issue is stuffed with games, so if you missed out on all the releases this month, don't worry, we've got you covered with the must-plays.
Thank you to the writers, contributors, and all supporters, that includes you reader! We thank you from the bottom of our hearts. And with that, have fun adventuring through the pixels and paragraphs of this issue of the Pico-View web-zine!
Authors:
Glimm, RidgeK, Luchak, Citizen608, Marina, Achie, Andrew Reist, Fletch, Kevin Portelli, and Nerdy Teachers
Contributors:
Godmil, NoBad7049, Munchkin
Contents:
-So You want to Make a Game - Glimm
-Basic Chord Progressions - RidgeK
-RP-8 Rendering (Part 2) - Luchak
-Featured Interview - Citizen608 ft. Marina
-Start of Game Jam Section
-PICO-butter and Jam: Spreading Game Dev Delight in every Byte - NerdyTeachers
-Game Jam #1
-Ludum Dare Jam 53 Intro
-LD Jam Featured PICO-8 Games
-Featured Game Review: Air Delivery - Achie
-Game Jam #2
-TweetTweet Jam 8 Intro - Andrew Reist
-TT Jam Featured PICO-8 Games
-The Making of TweetTweet Game: XTRIS - Fletch
-Game Jam #3
-Pursuing Pixels Jam 2 Intro - Kevin Portelli
-PPJJGG Jam Featured PICO-8 Games
-Conclusion of Game Jam Section
-Random Reviews - New Release Recommendations
-Prototype Party
-Closing Remarks
To read this issue of the Pico-View Web-Zine go to the nerdyteachers website here:
https://nerdyteachers.com/PICO-8/Pico-View/?issue=5
Did anyone else get swarm racer 3000 with their copy of pico-8 (and is it any good) or is it just me
From your local autism gremlin
lil demake of shazia from counterpact :3
arrow keys to move, z to jump, x to dash.
you can change direction mid-dash!
a mod of Celeste by Maddy Thorson and Noel Berry:
https://www.lexaloffle.com/bbs/?tid=2145
Texting and Driving Simulator!
Arrow Keys- rotate and move the car in forward or reverse
Z and X- use to type messages: unpack your complicated relationship with Buddy and Sarah!
Try and type as many characters as possible while dodging oncoming traffic and hopefully making it back home in one piece!
Hello!
This is a small, narrative game that I've been working on for a little while.
I hope that you connect with the story and have fun exploring it's world.
This is definitely a version 0.5, but I felt like there was enough here to share and I welcome any feedback that you all have.
Credit and gratitude to Nerdy Teachers and Lazy Game Devs. I spent a lot of time with your tutorials and they have helped so much! (And I definitely used the code for the Nerdy Teachers platformer tutorial as the starting point for this game.)
I've also been incredibly inspired by playing others games in Splore. It's so awesome that a community like this exists.
Thank you for playing!
anthroacoustic
When using multiscreen mode, the following function (which should print a scaled text) turned out to render only on the first screen:
function scale_text(str,x,y,c,scale) memcpy(0x4300,0x0,0x0200) memset(0x0,0,0x0200) -- draw to spr mem at 0x0000 poke(0x5f55,0x00) print(str,0,0,7) -- draw to screen mem again poke(0x5f55,0x60) local w,h = #str*4,5 pal(7,c) palt(0,true) sspr(0,0,w,h,x,y,w*scale,h*scale) pal() memcpy(0x0,0x4300,0x0200) end |
Just like normal printing, I expected this to work in multiscreen with the following calling code:
poke(0x5f36,1) scrs_w, scrs_h = 3,1; scr_ix = 0; _camera = camera function camera(x,y) x = x or 0 y = y or 0 local dx=flr(scr_ix % scrs_w) local dy=flr(scr_ix / scrs_w) _camera(x+128*dx, y+128*dy) end function _draw() scr_ix = stat(3) camera(0,0) cls(scr_ix+5) sspr(0,0,24,24,200,30,48,48) print("hello",120,80,8) scale_text("hello",110,60,12,1.5) return scr_ix < stat(11)-1 end |
But the result is a cut-off scaled text, while the normal text and the other sspr() call work just fine.

I think this is a bug in PICO-8, with remapping gfx memory not properly working in multiscreen mode.