While trying to make a "cycle" function that would wrap the value into a range, I have noticed an odd thing about the "%"-operator -- it seems to be trying to do some wrapping on it's own. And that would be okay (so long as it's documented), however:
1%3 == 1
2%3 == 2
3%3 == 0 (this makes sense)
0%3 == 0
-1%3 == 2
-2%3 == 1 (okay, so it goes back, right?)
-3%3 == 3 (fooled you.)
Such inconsistency (-x%x returning x) can be rater bothersome for multiple use cases, as "%" implies that the return value can not be larger or equal to the second argument.
I suppose that this is due to implementation being something like
return x < 0 ? (x % y + y) : (x % y); |
while it should have been around
auto r = x % y; return r < 0 ? (r + y) : r; |

Save humanity from extinction:
Shoot and Cross your beams to destroy invaders!
- Up/Down to move BLUE shooter
- Left/Right to move YELLOW shooter
- Their intersection is a GREEN beam
- Z to shoot
- Kill the enemies with the righ beam color or they will spawn 2 other enemies! (killing a blue or yellow enemy with the green intersection = fail)
POST YOUR HIGH-SCORE
Feedbacks appreciated :)
Updated : added music made with a friend. Only problem : I forgot that I had SFX and he made a 4 channel music :s so I had to mute the drums... (at least I will not do that mistake again)
This is my first game with pico8, it was a lot of fun to do! I don't have a lot of spare time and Pico8 allows very short code/creation sessions! Thanks Zep!

So I finally had some time to play with Pico-8 yesterday, and wrote two tiny cartridges, and instead of spamming zep on Twitter I thought it would be more useful to post my thoughts here, in order of appearance.
-
Jelpi is a pretty impressive demo, i love everything about this handheld console that never existed :D
-
There should be a version of the manual that looks like a 90's devkit manual black & white hardcopy, with a serious layout like the devkit cost $10k. But this is a bootlegged copy of the manual, so it got xerox smudges, is not fully level and is obviously copied right out of a bound book, and right on the first page it says stuff like "FOR YOUR EYES ONLY. YOU ARE CONTRACTUALLY BOUND TO NOT DISCLOSE ANY INFO" etc. On the second page there's a pompous introductory text from the company founder that flaunts the pico-8's luxurious capabilities, telling you how you can be proud to be able to develop for this console and how it's lightyears ahead of the competition. The manual is not even a full copy, it seems like it's just the most important pages copied out; the pages are numbered like 110-112, 351, 430, with paragraphs that make reference to appendixes that don't exist ("see Appendix E for chipset layout").
-
It's obvious that this pico-8 firmware is the devkit, which starts with a prompt. I imagine a "consumer device" would boot right into the cartridges. :-)
-
First I thought Lua's numeric type had been downgraded to signed short, but then I realized it's actually fixed point 16bit for both integer and fractional part. Very cool.
-
I'd remove all references to Lua and give this language a different name, e.g. Picoscript or Picolua; otherwise I'd just expect everything to work the same way; it's sufficiently different, i think. Considering how all the commands are named, PicoBASIC seems most fitting.
- I thought that it would be more useful to arrange the palette in a way that makes the 4-bits more significant (e.g. LRGB), similar to how the default EGA color palette is arranged. In EGA, bit 3 effectively changes brightness (sort of) without altering hue, that allows for very easy lighting tricks. The numeric bits correspond to RGB, so you can fake additive light effects with simple bit twiddling. Here, i'd ultimately do it with a lookup table; I guess it's too late to change it anyway.

Hello!
This is the prototype version of:
---- The Aggressive Botany League ----
a local multiplayer plant based deathmatch
Plant seeds into walls to push your opponent into the ocean (or to squish him!)
--- Controls ---
-
Movement
Player1: arrows
Player2: EDSF -
Wall breaking:
Face a wall and press Z (player2: TAB) 3 times to break it - Plant seed:
Face a wall and press X (player2: Q) to plant a seed into it
There are 4 types of seed (green, yellow, red and black) each with a different effect
You can carry only one seed at a time
best played with 2-4 gamepads
enjoy!





1 comment










