I figured out how to use distance formulas to determine if a point lies within a non-orthogonal rectangular region. I can see many possible applications of this and thought I would share my solution. I'm sure there is a more efficient way to do this, but this is the best solution I could come up with at the time that didn't involve vector math. I tried to comment my code to help people understand it better, but I didn't go into great detail with explaining the math. Anyway, It only took me about an hour to come up with this demo but I hope someone can find it useful.
A PICO-8 demake of FEZ.
You can also find this game on itch.io!
CONTROLS (Original Version)
Z/X: Rotate the world
CONTROLS (Mobile-Friendly Version)
Left/Right while holding X: Rotate the world
This is a tiny adventure based directly on FEZ, a game by the Polytron Corporation. It is a fan work, and was not made in collaboration with or endorsed by them.
FUZ features a total of 8 distinct areas. Its visuals, mechanics, and puzzles are all based off those in the original.
I made the music myself, as while FEZ has a phenomenal soundtrack a lot of it does not translate well to PICO-8. I can't claim to be very musically inclined, but I hope it works well enough.
Also, while there is no save system, the game is completable very quickly if you know what to do so getting back to your previous place is not hard.
And if you'd like to follow my work, check out my Twitter: @Jusiv_
Thanks for playing, and let me know what you think!
Finally managed to get somewhere by the end of this weekend (10:30pm) after setting myself the challenge of learning how to start building the old raycasting engine ala Wolfenstein 3D!
It's a start, more to come! Just found Pico-8 on Tuesday last week, saw the cool things people were making, purchased it immediately, and totally loving it to pieces!!
Just wanted to put an initial version of this game up to show it to people! It's still a little buggy, but works to the point where people can play!
Arrows - Move
Button 1 - Harvest Crop
Button 2 - Plant Crop (Hold, then press a direction)
r=rnd function _draw() srand(1) clv() for i=0,32 do ot = r(16)-8 tf = flr((t()+ot)*16) op = r() c = 96+r(7) sh = r(4)+12 z = r(63) yb= r(127) for x=0,48 do h = sin(x/48)*5+6 X = (x + tf)%128 y = sin(X/96 + op) * sh + yb line3d(X, y, z, X, y + h, z, c) end end end
r=rnd function _draw() srand(1) clv() for i=0,32 do ot = r(16)-8 tf = flr((t()+ot)*16) op = r() sh = r(4)+12 z = r(63) Y= r(127) for x=0,48 do X = (x + tf)%128 y = sin(X/96 + op) * sh + Y line3d(X, y, z, X, y + sin(x/48)*5+6, z, 96+7-(z/9)) end end end
It's a neat little title screen with a short musical loop and music jingle. Might end up being part of a new project, might not! I had fun making it, at any rate.
Hi everyone, i've been working on a pico-8 project to act as a stepping stone to a harder project.
Whilst it's going smoothly, it would be alot easier for my project if I could animate over a table of
sprites rather than the regular spr += 1 thing I see in all the tutorials.
It would allow me to use any sprite i needed from the table without having to organise the table so strictly. Furthermore, because I am using 2x2 sprites I can't as easily loop over sprites using the regular method because just going to the next line of tiles won't really help.
I tried checking some games on splore but I havn't found an answer yet.
Does anyone know a good solution?
This is a Befunge-93 interpreter that I made in a few days. Tested on all examples from Rosetta Code that fit. You can finally code in an esoteric language inside a fantasy console!
Excuse me, what is Befunge?
Befunge is a stack-based, esoteric programming language, in which the code is represented on a two-dimensional grid. The control flow of the program is directed using instructions such as v, >, ^ and < (respectively: down, right, up, left). If a border is reached, the program wraps around (both directions). Single character instructions can pop values of the stack, or place them on top of the stack, and act based on the retrieved values. Read more on Wikipedia.
Here's the list of all instructions explained, also on Wikipedia. There are not many of them, and most are self-explanatory (arrow instructions, arithmetic operators, numbers). Just like with any other language, the more fun you have with it, the more you'll learn!
…and why should I care?
In my opinion, Befunge really tests (and improves) your logical thinking and flow control skills. This is also a language like no other, in which you can actually visualize the control flow on a grid. Lastly, this is a stack based language, so it teaches you how to operate under a set of limitations (of course, you can just store and read values using g and p instructions, but that's cheating (not really)).
Also, you don't have to care if you don't want to! Democracy!
Okay, maybe some examples?
First, " enables string mode; all characters until next " will be pushed into the stack as ASCII values. Then, the string hello world! is pushed onto the stack (values go bottom to top on the stack). Then , prints a single character, so all characters are printed. Finally, @ ends the program.
Multiply n numbers together
Push 1, then prompt user for n (&, stack: 1 [n]). Swap two top values (\, stack: [n] 1). Prompt user for a number a (stack: [n] 1 [a]), then multiply (*, stack: [n] 1*[a]). Swap values again (stack: 1*[a] [n]), subtract 1 (stack: 1*[a] [n]-1), and if the new value is 0, go right (_), swap values (stack: 0 1*[a]), print number (.) and end the program (@). Otherwise, repeat.
99 Bottles of Beer
92+9*07pv,_ $:| > >:^:< > 70g!#@_^ ^:+670+1g70"bottles of beer on"< >"selttob"07g1+067+",llaw eht "^ ^" of beer"+76"take one down a"< >"lttob"07g0"dnuora ti ssap dn"^ ^"es of beer on the wall!"+76 < vp70.:-1<
Sadly, I made this one myself. I'll let you figure this one out. Most important aspects of this code:
- 07p stores the top value in cell (0,7), 07g retrieves it
- +67 is 6+7=13 == "\r", carriage return, which is a newline in PICO-8
- a 0 is always appended after bottle count, that is to be able to discern if a character or a number should be printed
- going past grid borders wraps around
- Visualization! See the instruction pointer move and wiggle as the code is being executed!
- Load/save support! And it autosaves when you run! And it apparently also works in the browser!
- Hints! Find out what a certain instruction does by hovering over it with the cursor!
- It just works! I'm surprised that it really works, and it works good!
- You can't copy/paste code in or out! This is a nightmare!
- Procedural sound! Instructions make little bleeps when they are being executed, and so do your keys! Doesn't seem to work in the browser! Family fun!
If you want to share your code, you can either share a screenshot, or you can copy the save file, which should be in your usual PICO-8 cart location under the name _picofunge_save.p8. Interwebz!
How to use:
All the usual ASCII characters from your keyboard work, so just poke the interpreter in any way you want!
Use arrow keys to navigate the grid. Use Backspace to erase an instruction and go back one cell, or Space to go forward.
Use Tab to quickly run code. You can also use the Tab button as an alternative for Enter in situations where you would normally use the latter, since Enter opens the pause menu.
Use Enter to enter the pause menu, in which you'll find the following options:
- RUN/STOP CODE
- CLEAR GRID
- ENABLE/DISABLE AUTOSAVE
- ENABLE/DISABLE SOUND
To reload code, restart the cart. There is no LOAD button, since there are only 5 menu items available to me :(
- Backspace button doesn't work in the browser (tested in Firefox)
- If the p instruction is used to put a nonprintable (value outside of ASCII) character in the grid, the character is displayed in a distinct way as a "glitch", it is considered data, and is not saved
- The P key opens up the main menu, which can be sometimes annoying, but is not otherwise a problem
- The grid is smaller than usual Befunge (it's size is 32 columns and 8 rows)
- There is currently no support for big numbers, numbers inside the interpreter are normal PICO-8 numbers (so usual things like integer overflow can happen)
- Small ASCII character codes assumed for letters, since PICO-8 only supports one case.
Source code, or "how can I make this about me"
If you have any ideas on how you could use this project, the source code is extensively documented — each function and class is explained and I tried to comment every important bit that needed explanation or description. This cart is released under a CC4-BY-NC-SA licence on this website thanks to an upload option, and this is also released on GitHub under the MIT licence. Basically, do anything you want with it, if you want to, and I'll be happy if you let me know!
Last question — why?
Please don't ask.
Implementation of lox language (see this awesome book to learn more about it) in PICO-8.
Try typing basic commands like:
rectfill(32, 32, 58, 58, 9) print("hello", 10, 10, 8)
For more syntax reffer to this page. I dont think I've implemented OOP, tho.
Runs a basic AST-walker, so it might be slow, but I got some simple PICO-8 carts running, like this one:
(see the source code)
I have been using Pico-8 for quite some time on a Windows Terminal Client and everything went smoothly.
However, since updating to 0.1.12c I only get a notification window when clicking the Pico-8 Icon.
The message is not very helpful, stating only that the program is no longer working.
Did anybody else encouter this problem?
How can I possibly fix it?
Artificial Life Meetup 2019
when: May 14th, 2019 Noon-2pm
where: Oakland Museum of California (loitering in cafe/courtyard), Oakland, CA
This is a tweetcart implementation of almost conway's game of life. If you're interested in artificial life and in the area, come join us to hang out and chat!
Follow @antovsky on twitter for more details.
Tweetcart by: @stephan_gfx on twitter
People have made mockups of how a "real" PICO-8 console and controller could look... But what about the devkit keyboard?
- Small, compact keyboard layout, like 75%, 65% or 60%
- Mechanical clicky switches
- Retro keycap profile (ADA?)
- Iconic PICO-8 font and colors on the keycaps
Here's a quick 75%-ish mockup I made (in ISO-NO since that's what I use, but a real one would probably be ANSI or JIS?). It's pretty busy, printing is WIP, and it's probably a bit too big; I added the F key row to try out symbols for GIF recording and stuff.
Group buy when?
I am writing data to a p8 file from a Python program - format for 0x0-0x3200 ROM range is ok.
Issue is sfx section - each sfx (68 bytes) is actually written as 84 bytes (??) with empty bits left and right.
I have no clue what is the masking/bitshifting/... logic between my input value and the resulting p8 string.