Log In  

Cart [#54912#] | Copy | Code | 2018-08-09 | Link

Just like the lady says, this program is ready to smash some bytes !!

Or to be more technical, DWORDS, where a single numeric value is saved in 4-bytes.

from the lab of dw817 comes a
new way of storing sram instead
of just with dget() and dset().

not all data that is recorded
needs to take 4-bytes per
variable leaving you only room
to store 64-numbers.

introducing "sram smasher."

a set of useful routines that
will squeeze your data into a
series of micro bits instead of
single fat 4-byte values.

safeguard ensures sram not
written to unless completely
without user errors.

(Demo values to test the functions is included)

P#54913 2018-08-09 22:16


Cart [#32026#] | Copy | Code | 2016-10-29 | Link

Final edition of this game, just before Halloween. :)




This game is also for sale (Worthware) in ITCH.IO. You pay what you think it's worth with a minimal of 99c. However, as you are a member and/or owner of the PICO-8 OS, you get it for free in here - with source.

For those of you who have made high score on the earlier version of this game, it is suggested you RESET your HIGH SCORE holding down (O) and (X) during HIGH SCORE to show considerably comparative and competitive scores.

There are now 4-levels of play.

[LEVEL 1] ... Very easy, start with 4 candles and bottle, see all ghosts and items at all times no matter the distance.

[LEVEL 2] ... More challenging, start with 3 candles, must find bottle, ghosts move, can only see them when near.

[LEVEL 3] ... Still more difficult, start with 2 candles, ghosts move very erratically, can only see them when very close.

[LEVEL 4] ... Hardest level, infinite time, must use compass and meter as all items are always invisible.

Major Updates:

  • Added Levels Of Play
    With challenge comes its reward. You can only hope to make the top of high score by playing and winning at level 4.

If you just want to make it on the board, by default, you will need to capture at least one ghost on the easiest level.

  • Fixed 'stray' cosmetic ghost image, actually fixed the code
  • Fixed 'catching' ghost. If you're one square away, you got 'im.
  • Added Meter to tell how far ghost is away
  • Added Compass to tell direction of nearest item
  • Fixed scoring measures, should be quite competive in all levels
  • Added new logo effects using earlier Fireball method
  • Added ability to reset High Score to defaults
  • changed text scrolling speed a tiny bit
  • Added information for people new to the controls

? Moved compressed image, just not enough memory
? Updated copyright

Have a great Halloween. I'll return when ZEP next updates PICO-8, or an error is found in the game. (hopefully not) :)

P#32028 2016-10-29 14:01 ( Edited 2016-10-30 11:08)


Cart [#31546#] | Copy | Code | 2016-10-23 | Link

Usage and routines included inside.

I mentioned this method earlier to someone - I guess they never got around to doing it. It's overdue so here it is.

proportional font utility routine
P#31547 2016-10-23 11:35 ( Edited 2016-10-23 11:38)


Cart [#31517#] | Copy | Code | 2016-10-23 | Link

Instructions included.

P#31518 2016-10-23 00:44 ( Edited 2016-10-24 11:20)


Now that I'm remembering code I wrote on other computer platforms (ow my head !) I am reminded of one unique feature that the Commodore Amiga 1000 had, and that was HARDWARE SPRITES.

Yessirree, I did not remember until now, just how powerful these little things were.

You had 16 of them, they used color sets 17-19, 21-23, 25-27, and 29-31. They could be any size vertical but only 16-pixels across. Not very exciting in itself, but let me explain.

In the Commodore Amiga, you could use one of these hardware sprites and it would appear on top of graphics. No, that's not correct. They would appear on TOP of graphics. That is, you did not plot them, you INVOKED these sprites, and when you did, when you changed their position, for instance, the background of what was beneath them was always remembered and untouched.

In the Commodore Amiga, you could give a hardware sprite an acceleration, that is, you could give one say AX+=.1 and AY=0 and it would creep to the right across the screen, but ALSO continue to creep even after you stopped running your code.

Curious little things. With the many ignored suggestions, I'd like to add this one, that PICO have the ability of being able to work with 16 "hardware" sprites. However, instead of being limited to 8 or 16-pixels across, you can choose the number of tiles it works with.

It also would not have a limited palette but be able to use the full 15-color set (with zero to show background through).

The advantage of this would be clear. You could invoke these sprites and not have to worry about "cleanup" behind when they moved off of an area. By giving them an acceleration, they would continue to move and not need code to continuously "push" it.

Additionally, you could not READ these sprites. That is, if you had a solid black screen and you invoked a sprite, say 8x8 that was white to appear in the top-left-hand corner, reading directly the pixels there would STILL be black, as these "hardware" sprites have their own invisible layer and would not be read by PGET().

MHWSPR(n,x,y,h,v) Make HW Sprite ID #n from tile set position x,y size across h and v down
RHWSPR(n) remove HW Sprite ID # n
HWSPR(n,x,y,a,b) move sprite #n to pixel x,y or, if zeroes, a & b are acceleration with real numbers.
s=(HWSPRCOL(n)) return 0 if no collisions or ID # if collided into other HW sprite

Collision checking is done by overlapping pixels, not area.

P#31491 2016-10-22 19:25 ( Edited 2016-10-28 21:04)


Cart [#31465#] | Copy | Code | 2016-10-22 | Link

10-22-16 Made code a lot smaller w better coding
10-22-16 Changed random for cycle, makes tighter maze
10-22-16 No hesitation, hold (O?) to build maze

Sometimes programming languages are too complex for their own good.

Take B4GL. It's designed for building 3D games so to even get a simple rectangle or square that is measured by true-pixels on your screen is a pain to achieve without first defining your graphic plane of existence.

Even BlitzMAX must rely on you saving regions of raster information on the order of R G B A where A is alpha, in order to read it back.

Clumsy - inefficient, and then there is PICO.

Read a pixel, write a pixel. What could be easier ? :)

This is a program I've been meaning to try for a-while but didn't want to fight the architect of the other languages that don't handle individual pixels so well.

I had it in my mind. Draw a random vertical or horizontal line. Draw another. If it intersects an existing line, HOP over it. Keep repeating until no more lines can be added. Done.

I really didn't know what to expect, and now I can see it is a very definite and DIFFERENT type of maze maker.

Try and solve the maze with your fingers from the top-left-hand corner to the bottom-right-hand corner. It's not as easy as it sounds.

Enjoi !


Does anyone know how to build a maze that does not have any dead ends ? That is, every point in the maze can reach every other point but never give you a choice or chance of directions, only turns in the maze.

P#31462 2016-10-22 13:21 ( Edited 2016-11-12 22:23)


Cart [#31458#] | Copy | Code | 2016-10-22 | Link

10-22-16 ... Took out freeze player for standard messages

SIGH This took a lot longer than it needed to. Kept running out of memory all kinds of directions. And - I guess this was a definitely learning experience.

The main thing is, THE GAME IS DONE !

Try it out (preferably with the EXE PICO or Google Chrome as Firefox can stagger).

Instructions ? I don't want to give out too much as curiosity is always rewarded in this game. :)

Use the arrow keys to navigate. Use the lightning to give clues as to where obstacles are. Hit (Z) (O?) to use up a valuable match. You start with 3, you might find more. You have a shield generator at 9.

Your mission, just as you were told, find out what happened to the relatives in Old Man Mildew's manor and report back.

Some things won't activate until you've done the right thing first. While the game is entirely turn-based, you have a relentless clock, and once it hits midnight, you'll have to deal with Mildew's angry and impatient spirit.

High Score and names are kept and recorded for 10-entries, even after rebooting.

As with all games you've played, PLEASE let me know if you find any bugs or outright crashes. I think it's pretty solid at this point. The code ? A little over 5,000 symbols of a possible 8192.

The characters, not so bad, 27870 out of 65536.

But really PICO is a bit of a cheat since right around this area, despite having space, it won't save to PNG with much more code. I would think since it's a fantasy system that only when you EXCEED your symbols or characters maximum space - THEN it can start complaining about not being able to save as a PNG.

Now, is the game too easy, too hard ? Is the clock too slow, too fast ? Let me know what you think !

Last minute changes:

  1. Sped up clock
  2. Integered clock (for scoring)
  3. Removed debug score line

Enjoi, and Happy Halloween ! :D


P#31409 2016-10-21 18:06 ( Edited 2016-10-28 21:06)


I am receiving this:

I suspect this means I will not be able to post my game Online. Any ideas ?

P#31229 2016-10-19 11:17


Just came across another nasty little thing about PICO. When referring to an array, it does not round down to the nearest integer when you make a regular array. Try the following:


for i=0,7 do

for i=0,7,.5 do

The results are:
1 NIL 2 NIL 3 NIL 4 NIL 5 NIL 6 NIL 7 NIL 8

Let's try the same thing in BlitzMAX:

Local i#,a[8] ' must be +1 of total (0-7)

For i#=0 To 7

For i#=0 To 7 Step .5
  Print a#[i]

The # represents that this is a floating point variable.

Results in this case are:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8

Which is the standard reply from this and many other BASIC programming languages.

Now apparently this does mean that it is possible to have fractional arrays. Something I've never seen until now.

P#31067 2016-10-16 17:29 ( Edited 2016-10-17 10:56)


Many programming languages allow you to make direct changes to arrays at a memory level using a command called VARPTR.


What I would like to do is:

for i=0,8191 do

until forever

Is this possible to do in PICO ?

P#31055 2016-10-16 14:55 ( Edited 2017-08-20 09:28)

:: More
About | Contact | Updates | Terms of Use
Follow Lexaloffle:        
Generated 2018-08-17 11:34 | 0.404s | 1835k | Q:75