Log In  

BBS > Community Superblog
All Users | Following | GIFs | Postcarts | Off-site

Cart #dashlessplus-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

2 comments


Cart #dualnback-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3


n-back (Wikipedia, Gwern)

How to play:

1-Back: Remember whether the position or color (or both) is the same as in the previous round, press the according button/buttons if they match.

2-Back: Remember whether position or color are the same as 2 rounds ago.

N-back: Remember whether position or color are the same as n rounds ago.

Controls:

Z or <- for a position match

X or -> for a color match

P to pause (+ additional menu)

Tips:

Try playing in standard mode to understand how the game works, in endless the game ends when you make a mistake or miss a match.

[ Continue Reading.. ]

3
0 comments


Cart #cascade_cascade-2 | 2024-04-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

Cascade Cascade

A game somewhere in the space between a breakout clone and a puzzle bobble clone, inspired by a half-remembered game I played on an airplane seatback.

Controls

  • Aim with left and right arrows
  • Press [x] to fire

Or, as of 2024.04.27, point and click with the mouse to aim and fire.

Rules

This is an endless arcade game. Your goal is to survive by keeping the blocks from reaching the bottom.

  • Each hit reduces a block's strength by one. When a block's strength reaches zero, it's destroyed.
  • Powerups (white concentric circles) increase the number of balls you can accumulate for your next shot.
  • The number of balls you'll fire next shot is indicated by the combo meter on the right side of the screen. It increases by one-half for each block you hit.

[ Continue Reading.. ]

9
3 comments


Cart #astroyd-2 | 2024-05-02 | Embed ▽ | License: CC4-BY-NC-SA
25

ASTROYD

Any good computer needs one of these. This is my version, with a bunch of juiceful extra stuff that wasn't in the original classic release.

What, I really have to explain the game? In this day and age? Fine...

The Controls

  • ⬅️ and ➡️ to steer.
  • ⬆️ to thrust forward.
  • [Z] to perform a hyperspace warp! Your momentum is conserved. You might warp face-first into an asteroid, though.
  • [X] to fire.

The Game

As you destroy asteroids and flying saucers, you will gain points. See, this is one of those "arcade games" where the points are the point, and the reward is a high score.

That's neat and all, but the game will also become more difficult as you increase your score and clear screens. I wonder if there's a limit...

[ Continue Reading.. ]

25
10 comments


Cart #donarumobraingames-0 | 2024-04-23 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
10


Welcome to Brain Games. A collection of puzzles and game to test our logic and puzzle-solving skills. Take your time and have fun in these 6 different games.

Jumps
Use peg solitaire rules to solve these puzzles. Use one chip to jump over another and remove the jumped chip from the board. The puzzles get more difficult as the levels get higher! Can you get the board down to one chip?

Dice
Can you get all the dice to the six face? These puzzles start out easy but increase in difficult as you level up. You'll need to use Rubik's Cube like logic to solve the more complex levels.

[ Continue Reading.. ]

10
4 comments


Mate-in-2 Volume 2. 33 more puzzles. White to move.

Cart #matein2vol2-0 | 2024-04-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

2
1 comment


Cart #cgol-2 | 2024-04-23 | Embed ▽ | License: CC4-BY-NC-SA
5

Here is Conway's Game of Life in Picotron, using the colour tables as a fast way to count all the pixels at once.
This version does not work in the web player, because input is not detected ( @zep pls fix!)

Controls:
Up: Increase simulation speed
Down: Decrease simulation speed
Space: Pause
F: Step one frame
C: Clear screen
R: Randomise screen
L-Click: Draw pixels
R-Click: Erase Pixels
L: Toggle large cursor

Basic code:
[hidden]

function _init()
	frame = 0

	-- Set up userdata so we can draw the screen to itself
	-- by using memcpy() to a memmapped region of memory.
	-- The userdata is now the contents of the previous frame,
	-- and it is now possible to modify the current frame.
	-- We can also call spr() with userdata
	-- to draw the previous frame to the current one

	screen = userdata("u8", 480, 270)
	memmap(0x30000, screen)
end

function set_col_table(new, current, col)
	poke(0x8000 + 64*new + current, col)
end

function _draw()
	frame += 1

	if frame == 1 then
		-- Randomise the screen for the first frame.
		for y=0,269 do
			for x=0,479 do
				if (rnd() < 0.2) pset(x, y, 7)
			end
		end

		-- Copy the current screen to the buffer, just for the first frame
		memcpy(0x30000, 0x10000, 0x20000)

	end

	--if (frame % 32 > 0) return

	cls()

	-- White cells drawn onto colour 0 will set the colour to 1, white onto 1 will be 2
	-- and so on. This counts the number of neighbouring cells very quickly
	for i=0, 7 do
		set_col_table(7, i, i+1)
	end

	-- Draw the screen 8 times in a ring, for each neighbour. The colour tables
	-- do the counting
	for y=-1,1 do
		for x=-1,1 do
			if (x!=0 or y!=0) spr(screen, x, y)
		end
	end

	-- Set up colour tables to turn the "counted" screen into the next frame
	-- Set every colour to black except for drawing black onto 3 (brought back alive)
	-- and 2 or 3 neighbours for alive (stay alive)
	for i=0, 9 do
		set_col_table(0, i, 0)
		set_col_table(7, i, 0)
	end
	set_col_table(0, 3, 7)
	set_col_table(7, 2, 7)
	set_col_table(7, 3, 7)

	-- Draw the screen to the "counted" version, with the rules set above
	spr(screen, 0, 0)

	-- Reset the draw state to make sure we have a predictable next frame
	reset()

	-- Copy the screen to the buffer for the next frame,
	-- before we pollute it with the FPS counter
	memcpy(0x30000, 0x10000, 0x20000)

	-- FPS counter
	if key("x") then
		rectfill(0, 0, 44, 8, 0)
		print("FPS: "..stat(7), 1, 1, 8)
	end

end

[ Continue Reading.. ]

5
0 comments


Cart #flapperduck-0 | 2024-04-22 | Embed ▽ | License: CC4-BY-NC-SA
4

hey people,
this is flapperDuck,
a flappy bird game that I made after watching enough tutorials on Picotron to feel comfortable coding a game in it, for whatever reason I decided not to look up or actually play flappy bird before making this so this is all from memory and I'm sure not everything is the same, in fact other than the gameplay I'm guessing its quite different

anyway-
keyboard controls are:

z - jump/select
arrows - selecting on the menu
(space also works for jumping but not in browser version)

controller controls are (Xbox controller):

A - select
A/B/X/Y - jump
d-pad - selecting on the menu

the last 2 skins are unlocked when you reach a high score of 8000
and if you (like me) really like the look of old original Gameboy games you might like one of the unlockable skins
as you can see in the screenshot my high score is 12874
feel free to post your high score in the description and have fun

-playerMan

4
3 comments


Cart #stellae-0 | 2024-04-22 | Code ▽ | Embed ▽ | No License

This is a Space Invaders clone that I was making some time last year. Maybe I'll continue with the project.

0 comments


Cart #rfidezaro-0 | 2024-04-22 | Code ▽ | Embed ▽ | No License
1

1
2 comments


I usually keep all my carts in a specific folder in Picotron, but it's annoying having to cd into that folder every time I want to load a cart, or type the whole path out. I'd rather just be able to load carts from that folder from anywhere in the filesystem.

So, I made loadcart. It's like load (and even uses load to do the actual loading), but you can run it from anywhere and it'll always load from a folder you specify. (It will default to /desktop if you don't set a folder.)

Let's say /desktop/carts is where you store all your carts. You'd run loadcart -d /desktop/carts at some point to set loadcart's saved folder. Now, from that points on, from anywhere in your filesystem, you can type loadcart mycart and it would be the same as running load /desktop/carts/mycart.p64.

Here's the contents of the .lua file. Just save it to /appdata/system/util/loadcart.lua. When you run it with the -d switch, the saved folder will be set in /appdata/loadcart.pod.

--[[
	For loading carts from a specific
	saved folder.
]]

function print_usage()
	print("\f6usage:\t\tloadcart filename\n\t\t\t\tcan be file or directory\n")
	print("\f6\t\t\tloadcart -d directory_name\n\t\t\t\tsets carts directory (defaults to \"/desktop\")\n")
	if (fstat("/appdata/loadcart.pod")) then
		local meta = fetch_metadata("/appdata/loadcart.pod")
		if (fstat(meta.dir) == "folder") then
			print("\f6current: "..meta.dir)
		else
			print("\f6current: /desktop")
		end
	else
		print("\f6current: /desktop")
	end
end

--show help
local e = env()
local argv = e.argv
if (#argv < 1 or #argv > 2) then
	print_usage()
	exit(1)
end

--load cart based on settings or default to /desktop
if (#argv == 1) then
	if (argv

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=147116#p)
8
0 comments


Cart #ji-1 | 2024-05-03 | Embed ▽ | License: CC4-BY-NC-SA
6

From the moment I saw tuning as a parameter in the synth doc,
I knew I had to get just intonation into Picotron.
So I did.
There is code in the cart to copy into your cart, with instructions
on how to call the function with different musical keys (including a
dynamic key that changes according to channel 0!)
The cartridge includes a song I composed ages ago, which you are
welcome to use for any project you might like. :)

v1.1 Okay, so, the effect I achieved before was very close to just intonation but was not just intonation. I've since achieved true just intonation (you will probably not be able to tell the difference but the math is extra good now, I promise) and this updated cart reflects that.

6
0 comments


Hi all,

Just as PowKiddy RGB30 is the perfect handheld for PICO-8, I was wondering which handheld could y'all recommend to run Picotron, including its desktop and the entire development experience. I mean a device that has an option to connect a Bluetooth keyboard & mouse. Thinking about some "recreational coding" gear :-)

1
12 comments


Hey guys!

It's been more than 2 years since I last posted on here. I never really thanked all the people for playing DUNGEON so I'd just like to express my gratitude! I'm typically more active with responding to comments on my itch.io page because more of my games are there.

Also, I never would've imagined DUNGEON would get featured on the front page! Definitely made me smile, so thanks to the pico8 team for putting it there.

I'm shocked people are still commenting on the game even as recent as a few weeks ago, so it convinced me to just make this blog post to try to reach out to the fans that are still here 2 years later. For years I've wanted to do an update to the game where I fix all the bugs and stuff, because believe me I'm aware of the bugs...

Some of them are just dumb mistakes, like how one of the death-screen hints tell you the shop is at level 12 when its really at level 8.

Others are just bad decisions, like making it so that spiders can't be jumped on. Don't know why I did that. Or calling the game's levels 'procedurally generated'. I think I didn't understand what that word meant at all lol.

And YES... I know about the wall jumping. Like 1/3 of the comments mention it lol. I know it sucks. But to be totally honest, I've spent countless hours trying to come up with something better and I can't. Whenever I try to ask a playtester how to fix it, they either say they've gotten too used to it for it to change or just to "make it work like this other game". Which isn't very helpful to me.

Anyhow, I thought I could publish the source code of the game since somebody recently asked for it. But just be warned, it's not remotely organized or thought-out, it's mostly just full of hacky code lol. Every time I look back at it I try to optimize it again but then I realize it's probably not worth it. Which is probably why I never bothered to make a big update fixing any of the bugs. I think I can just accept the way the game is. Plus I've mostly just moved on.

Source code here!

[ Continue Reading.. ]

1
0 comments


Cart #picojoe-0 | 2024-04-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

Controls:

Movement

Shooting

Interactions

About :

Pico joe is a remake of the classic video game Communist joe created to celebrate its 5 year anniversary a bit later than I would have liked. The story is a retelling / retexturizing of the original, following the protagonist joe through the events of the first game in a new light chasing after an ever better bottle of sweet, sweet vodka, destroying planet after planet collecting bounty after bounty and building up a stack of cash bigger than the Eiffel tower just to endorse your habits, you must fight your way to the top and ensure the universes safety whilst your there, good luck and what not.

[ Continue Reading.. ]

6
0 comments


Cart #drydock_scsv-3 | 2024-10-06 | Embed ▽ | License: CC4-BY-NC-SA
21

Here's a screensaver I made using the 3d assets from my latest project. Some of the ships are a bit scuffed if you look too closely.

V 1.2.1:
Inspired by Profi06's URL Dodecahedron demo I added a fade in and out for the 3d models.

V 1.2:
Changed engine to use matmul3d() and refined most models to look better on a big screen. Ironically it seems to perform worse in the web browser now...

V 1.1:
Added a few extra ships

21
5 comments


I'm trying to run a /system/util command from my own custom /appdata/system/util command, but I can't seem to get the output from the /system/util to show up when I run it.

For example, let's take a dumb example and pretend I want a custom command called sys_ls to list the contents of the system folder. I would think my /appdata/system/util/sys_ls.lua would look like this:

create_process("/system/util/ls.lua", {
	argv = {"/system"}
})

And then running sys_ls should spit out the same output as if I ran ls /system. But it doesn't. Instead it outputs nothing at all.

Any idea how to get the called command's output to actually display in terminal along with any other output from a custom command?

3
1 comment


hi! when i use lua i usually use a library that prevents me from accidentally using/setting globals that aren't already defined, in order to cut down on typos. i've collected a small whitelist of globals that need to be available for picotron. i noticed in terminal.lua there's a comment saying it's not supposed to set any globals, so i thought i'd report them in case they should be fixed.

here's what i have so far in my whitelist:

-- terminal.lua
cproj_draw
cproj_update
_
_is_terminal_command
k
res
-- gui.lua
drag_t

and here's the full script i'm using to protect globals in case it's helpful:

-- if you're using include(), include this after including everything else,
-- since most included modules will need to assign global variables on load

-- these globals are needed by picotron
_init = _init or false
_draw = _draw or false
_update = _update or false
-- these are used by the picotron terminal
cproj_draw = cproj_draw or false
cproj_update = cproj_update or false
_ = _ or false
_is_terminal_command = _is_terminal_command or false
k = k or false
res = res or false
-- gui needs these
drag_t = drag_t or false

local function unknown_variable (t, k)
  error (debug.traceback ('unknown variable ' .. tostring (k), 2))
end

setmetatable (_G, {
  __index = unknown_variable,
  __newindex = unknown_variable,
})

it's probably a good idea not to use it in finished carts because then changes to picotron might break them

5
0 comments


Due to how tabs are saved in the .p8 file format, they can cause overflows into the sprite sheet. Each tab is saved as 6 characters in the .p8 file. However, those are not counted as part of the character limit until the cart is run or saved. If you have a cart that has multiple tabs and is at or just below the character limit, trying to run or save the cart will cause part of the code to overflow into the sprite sheet before giving an error, either "**** save failed ****" when saving or "program exceeds char limit" when running. In testing I've also had Pico-8 completely crash when trying to run a cart whose tabs push it over the character limit, but I was unable to replicate this.

(pico-8 version 0.2.6b)

The best way to solve this in my eyes, is to have each added tab of code add 6 to the character count in the code editor. That way, in the same way it's impossible to type over the character limit, it'd also be impossible to have tabs push over the character limit and overflow into the sprite sheet.

[ Continue Reading.. ]

5
0 comments






Top    Load More Posts ->