![]() |
[8x8] |
Well guys, if I can pull you from your projects for just a short moment. I =WOULD= like to wish each and every one of you a very safe and Happy Halloween.
http://www.writerscafe.org/writing/dw817/1838331/
I =WILL= be writing a Halloween themed game in PICO-8 based on an old Apple ][ classic. How about you, are you going to write any Halloween or Haunted House themed games this holiday season for others to try out and enjoy ?


Simple question. Difficult answer likely. Is there any way to FORCE the mouse to a position ?
That is, I can select MOVEMOUSE(0,0) and the mouse cursor will suddenly appear at the top. It's not an X/Y adjustment either, it TRULY moves the mouse pointer there so that if I pick up the mouse and move it slightly up, it will be out of the application.
If I just do a mathematical adjustment, I'll quickly be off the edge of the screen with a mouse that is off-center in reading.
I want to do this for my input routine as I want it to be intuitive when it already knows where the player is moving it to.
Picoscope2016 is coming in April 2017
Hi,
We are organising a PICO-8 coding party in France.
You are welcome to join us in the workshops.
=> Website (near 30 places remaining)
=> Follow us on facebook and/or twitter
jihem (@wdwave)





So, in between lunch breaks, I've made tiny-but-significant progress in my level generation code. It's part of a "bigger picture" thing, and meant to be useful across multiple projects; since I'm kind of digging into proc-gen core gaming. Even this little project is a proof-of-concept of a major undertaking, depending on if I can squish this into tokens available.
The idea here is to take a number of levels "LV" and make each one a 15-plus-one table - the first 15 being a kind of "perlin noise" function used to script "rooms" into the level, and the last being a control variable "BIOME" which influences the level's colors, themed elements, etc. I'm planning on coupling this with horizontal and vertical "targets" - ones to collect, ones to avoid, ones to attack, etc. Well, a "target" can be oriented both vertically and horizontally, and in varying speeds (more on this after my next WIP major chunk of code, "MAKETARGET()").
So MAKELEVEL(3) would generate 3 "output" tables:
LVL1={n1,n2...n15,biome}
LVL2={n1,n2...n15,biome}
LVL3={n1,n2...n15,biome}
...and then these tables will define the 5x3 screen map of each level.
I'll have to add "biome control" in later scripting, depending on the kind of game it generates, after the level generation. The "doorway" table definition occurs BEFORE it runs... for instance, it makes sense for a platformer to limit "doorways" to being {0,4,5,9,10,14}, where in top-down adventure or RPG games, it could be anywhere.
That said... still checking this for proper P8 syntax, and to see if it can be simplified. Being intermediate-level at best, I have the suspicion this can be streamlined a little bit still. Maybe even a lot.
function makelevel(lv or 15) if (lv>15) lv=15 winlevel=lv for lv>0, do "lvl"lv={} level={scr1=0,scr2=0,scr3=0,scr4=0,scr5=0,scr6=0,scr7=0,scr8=0,scr9=0,scr10=0,scr11=0,scr12=0,scr13=0,scr14=0,scr15=0,biome} -- create sequence of 16 doors -- we don't have to use them all doorshuf={rnd(1,6),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5)} ezpath={} hdpath={} d=0 n=1 for n=1 to lv do d+=doorshuf(n) add doorlist (return doorways,d) n+=1 end --each exit makes a short, --high-risk way, then a long --low-risk alternative for n=1 to lv do stdoor=doorlist(n) endoor=doorlist(n+1) --vertical paths? vstep=(stdoor/5)-(endoor/5) if (vstep<0) vstep*=-1 --horizontal paths? hstep=(stdoor\5)-(endoor\5) if (hstep<0) hstep*=-1 --add values to paths for n=vstep to 0 do if (stdoor/5)<(endoor/5) then add ezpath "5" add hdpath "5" else add ezpath "-5" add hdpath "-5" vstep-=1 end for n=hstep to 0 do if (stdoor\5)<(endoor\5) then add ezpath "1" add hdpath "1" else add ezpath "-1" add hdpath "-1" hstep-=1 end end add ezpath {"1","-1","5","-5"} if (#hdpath<3) add hdpath{"1","-1"} --shuffle ezpath/hdpath order shuf(ezpath) shuf(hdpath) --read paths, edit level table local pos=stdoor for i=#hdpath,2,-1 do local step={ -1=(makelevel(pos)+=18,makelevel(pos-1)+=4,pos-=1), 1=(makelevel(pos)+=20,makelevel(pos+1)+=2,pos+=1), -5=(makelevel(pos)+=17,makelevel(pos-5)+=8,pos-=5), 5=(makelevel(pos)+=24,makelevel(pos+5)+=1,pos+=5)} end local pos=stdoor for i=#ezpath,2,-1 do local step={ -1=(makelevel(pos)+=2,makelevel(pos-1)+=4,pos-=1), 1=(makelevel(pos)+=4,makelevel(pos+1)+=2,pos+=1), -5=(makelevel(pos)+=1,makelevel(pos-5)+=8,pos-=5), 5=(makelevel(pos)+=8,makelevel(pos+5)+=1,pos+=5)} end --return generated results as a --list of "lvl1,lvl2" tables... return "lvl"lv{}=level{} end end |

Was using PICO's sound editor and after highlighting a region, pressed CTRL-C. Then ALT-TABBED to a different PICO already open, and pressed CTRL-V. It did not copy.
Isn't it possible to transfer audio from one cart to the next without having to manually look at one screen and type digit values on the next ?
And, for that matter, does anyone know the length of audio in memory ? The instructions say:
0x3200 sfx
0x4300 user data
Is this then saying that sound effects are 4352-bytes in length in toto ? And, does anyone have a schematic for the sound cel ? How many bytes are used to save one sound, for instance ?


Just a quick update:
-
I'm still alive. I was uploading updates almost daily at first but now I'm at a point where I needed new enemies and mechanics to expand the level, and I needed an expanded level to showcase the new enemies and mechanics, so I've just added lots and lots of new stuff, to upload all at once.
-
There's now health pickups (not many though)
-
There are 8 (or 10, not yet decided) golden cups to collect throughout the world. These are a kind of side-objective to officially '100%' the game.
-
There are now archers. Lots of archers.
-
There's knights. Knights will destroy you pretty quickly and they take a lot of hits. They're quite easy to kill once you get the hang of it though
-
The world map is almost entirely complete. I've finished 30 out of the maximum 32 screens.
-
There are two new bits of music
-
I'm currently working on the final boss room. After having finished this, the game will basically be complete
- I'm toying with the idea of having a menu when you die, that shows stuff like how many cups you've collected, how many enemies you've killed and how many map tiles you've visited on that one particular run, then give you a percentage to show a score of how much you've done. This is so that even if you die early on in the game, you can get numerical proof when you get better at the game.
Not going to upload the newest build until the boss is functional, I think.
That's it really :D Taaa


Colors are not just pretty, they serve a vital purpose. Our brains can look at one image and be fooled into believing something that is not there.
Take this classic 3-dimensional model to show the difference of tints in locations:

From this clear image, you can see that (A) is darker color than (B).
But now let's start to cut down the colors to see what happens. First off, let's convert it to 256-colors, black and white.

So far so good, only the pillar changed. Let's go further. Now resize it to 128x128, the standard resolution of PICO:

We lost some detail on the text of (A) and (B), but that's fine. The board can still be seen clearly.
Now let's hack it down to 16-colors, here's where problems start to develop:

Ragged edges and clear compression shades. It's not pretty, but it's still there.
Now - keep an eye on the two marks where (A) and (B) are supposed. At this point we are going to simply load IMPORT this image:




Finding a rather strange situation. =ALL= BASICS I know would hang this code at 5.
PICO, bless it's strange and awkward self, however, does not.
for i=1,10 do i=5 print(i) end |
This could be a problem as I have oft directly modified a FOR/NEXT loop to skip over values or to return back to older ones. Is there some special argument to put in FOR() that will cause this to hang on 5 ?





Yep, I just received my first PICO Magazine, a lovely 47-page magazine dedicated entirely to PICO-8.
Opening the pages, here are the table of contents:
3 ... A Brief History Of PICO-8
We interview ZEP himself ! The founder of PICO-8, and what a tangled tale he weaves ! Telling us not just about the origins of PICO but systems he created prior including POIDO (Pointy Dough), Lex500, and Voxatron.
10 ... Squashy
Your first PICO game ! Introduces you to Command Mode, some command functions, user input, sprites, sound effects, and putting it all together - with full source code and screenshots included.
22 ... Let's Make Some Music
Gives you firsthand experience of the sound and music editor, and how to build effects and songs in them.
30 ... Toy Train
A more advanced look at programming introducing topics such as object-oriented programming, switch states, and having one object follow another through recursion. As SQUASHY is, full-source code and screenshots for all images are included for this game as well.
38 ... Geodezik
A simple program to type, complex in its execution, however. Draws lines out as vectors and creates a type of Spyrograph effect in the center.
39 ... Smoke Particle
Particle effects to me are one of the most exciting features of PICO. With it, you don't just hit a bad guy and flash a single POW sprite. No, you can have particles, hundreds of 'em ! All dashing off with their own properties to give you some serious and true eye candy for the agile player.
The example code demonstrates the ability to create 'smoke.' Complete with source and text on just what is happening and where in the code.
. . .
Between chapters are some niceties, like a truly retro picture of what PICO would look like were it a real console for its time and some lovely vector graphics below.
43 ... Welcome to PICO-8 !
ZEP returns and talks about his wonderchild, CELESTE. Not just your basic platformer but a high-powered one with special moves any super heroine would want.
. . .
What follows are screenshots descriptions, instructions, and download links by the programming author.
Stories At The Dawn
A decidedly darker platformer with tricky puzzles to say the least.
Pat Shooter
A serious topview shooter with lots of particle effects, ship's shielding, and enemy strengths.
Transdimensional Butterfly
A PICO program that explores the beauty and complexity of math to make this mesmerizing and most-colorful animated display.
The Tower Of Archeos
A tricky turn-based puzzle where you must survive by intelligently picking your battles with a large number of critters and enemies. Do well and you are granted the next level of play.
Tempest
A work-in-progress that is still in beta but still holds a few bugs. The premise is amazing for tiny little PICO-8 to run though - a topview adventure game where survival is key, including finding food and shelter.
WormWormWormWorm
Another Screen Teaser, this time a kaleidoscopic worm wanders the screen and computer-generated music plays in the background.
MTRX
You're familiar with the special MATRIX effects of the green characters descending from the top of the screen, right ? Well, in this program they collide from all 4-corners, crashing into each other with a cacophony of sound effects.
Delia Mute In Grave Grotto
An impressive rogue-like game with item pickups, combat, and traveling further underground through a series of descending stairs.
The Adventures Of Jelpi (with Corrupt mode)
A curiously unusual game to say the least. It's your basic platformer but enemies here poke values directly into memory causing your game to glitch. It's up to you to find the exit before PICO crashes !
All programs include an ONLINE LINK to each of the featured carts so you don't have to code them in yourself.
Additional carts mentioned w playable and download links are: Stray Shot, Endless Train, Random Sound Generator, Video Poker, Piano Simulator, Duangle 2015 Intro, Thopter Escape, Bounce, Puzzle Cave, and Sumo Pico.
. . .
While the hardcopy magazines of PICO-8 are now sold out, you can still get the digital version of the magazine to read from Online. And that link can be found right HERE:

This is a feature request, and I hope not a lightly dismissed one.
Having tried out some games that keep track of your personal high-score, would it be possible to have a future PICO save not just a unique file but a SHARED online file. Perhaps no bigger than 256-bytes per cart ?
In this, people could play a game, post their high score. And afterwards - see EVERYONE else's high score for who played the same video game written by the same author so they have something to compete over.
This would open up all kinds of interesting new things including MORPG, MUDS, and 2- or more simultaneous player games.
cartdata("rockets_romance") sharedno=wget(0) |
So let's say two people are playing the game at the same time.
The moment wget() or wset() is activated, it retrieves that value from Online.
To prevent a bottleneck, if the system is 'busy' with someone else reading or writing an Online value, it waits until it can have a turn to read or post a value.
And it also uses a method of timeout for everyone else so few to zero bottlenecks would ever be reached. Possibly a 1-second delay to read the same Online value more than once by the same person (which should only occur if you reboot the game).


Or perhaps ... that should be Co-Creationism ? :)
I've come across this helpful site with 2 curious pages:
https://neko250.github.io/pico8-api/#coroutines
While these commands are listed in PICO help as part of updates, no information is given as to what they do or how to use them.
The other curious bit from there is a POKE chart. I tried poking numbers into these and plotting sprites and text afterwards in an attempt to get double-size pixels; they all appear at normal size.
https://neko250.github.io/pico8-api/#peekpoke
A fully working example program for either of these would be immensely helpful.
One more thing, perhaps a little simpler. Is there a way to retrieve the current X & Y of where the text cursor is currently in a cart (Prior to PRINT()) ?


Likely this question has been asked, but I'll ask it again anyways.
With PICO, you can create games. To run either in Lexaloffle's BBS or with HTM/.JS elsewhere.
Is there a way or is it planned that games might be compiled to true FLASH ? *.SWF.
I just uploaded my notepad cart to Kongregate to check it and, sure enough, it still has staggering issues. I will say ALL PICO programs I have seen since I arrived, all stagger in my Firefox browser.
Is there a way to fix this or is it an inherent trait of Java/LUA ?
What Flash programs I have written in the past - all run top-speed today and have never shown any Online hesitation.



It is popular with some programs to POKE directly into the graphic tile space either temporarily for storage or to save off some new generated tiles.
cls() poke(0,255) spr(0,64,64) recover(0,1) |
My question is - is there a way or command to 'recover' the tiles (or any other memory location you've messed with) WITHOUT creating or using a separate array of prior storage ?
These memory locations are after all ROM in every sense of the word in that when the program ends and you are back to the editor, all your tiles or mapping, etc. are untouched despite you using their space during run-time.


3D test & Sprite data converte
https://www.lexaloffle.com/bbs/?tid=27767
Add a text data output in the "PICO-8 Palette Mosaic"

PICO-8 Palette Mosaic
http://www6.plala.or.jp/TimeTripper/html5/pico8.html
Yep, some more casual observations by dw817.
Just a suggestion for the FORUM. Can add a NEXT or PREVIOUS when reading BBS messages to go to the next or previous initial BBS message that was written.
Signature lines for the forum anyone ?
Errors (or problems) I found:
local a,b,c -- accepted
local a=3,b,c -- accepted (This method is listed in LUA help)
local a=3,b=2,c -- error
local a,b,c=3 -- read wrong, number stored in "a"
Loading code currently includes loading any spaces that might be inadvertently added to the end of a line.
Suggest in loading they be truncated, I.E.:
One line could read:
"cls() " -- and have 2-spaces on the end. This is saved when the source is saved.
Loading a code could truncate this:
"cls()"
Or even in the EDITOR, automatically truncate leading spaces as they are not needed.
While they don't count in TOKENS, they =DO= count in source code bytes used of the available 65536.
Since the code editor's top-left-hand corner of the screen is blank, it could include information including the name of the last saved file. This would be useful when working with two-different PICO files that are open in two PICO editors so you don't confused as to which is which.
Suggest that anything between --
Hey everybody!
I downloaded Pico-8 a little while ago because while I've developed some games in the past - they've all been with programs that didn't require any coding on my part (like Twine). But I've really wanted to start working on what I've always wanted to make: a basic exploration-based platformer. I've never really worked with code in my life and I've looked up several tutorials, but I haven't found anything yet on how to make a game like this and I'm really struggling with getting started on this (coding is a lot more intimidating than I thought even though Pico-8 simplifies things by a huge margin).
Basically what I'm asking is - where do I get started to make a basic 2D platformer ala Super Mario? Thank you so much to anyone in advance who has any helpful advice or comments. If I ever get my passion project made I'll be sure to share it with everyone here :-)
