Log In  

BBS > Superblog
Posts: All | Following    GIFs: All | Postcarts    Off-site: Accounts

Cart #picotron_filter_testbench-0 | 2024-07-21 | Embed ▽ | No License
1

This is a tool for visualizing the impulse response (top) and frequency magnitude response (bottom) of different filters. The frequency magnitude response is determined by taking the magnitude of the FFT of the impulse response.

It's a pretty messy tool that's accumulated a few different features from various things I've been trying to do, but I want to refer to the cart in a Mastodon post so I'm posting it here. Ignore the blue and orange lines, those are from a different experiment; just focus on green and red.

Basic usage: left/right changes cutoff, up/down changes resonance, Z/X rotate through filter modes. There are some modes labeled "zep" that are more relevant to the Picotron filter. The ladder filters work fine at 0 resonance, the zep modes need at least a tiny bit of resonance to produce a signal (so you'll need to hit the up arrow a bit to get them to work).

1
2 comments


Cart #acowsadventure-1 | 2024-07-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Main Controls: Z - Open Shop/Back | X - Shoot/Confirm | Arrow Keys - Move
Alt Controls: N - Open Shop/Back | M - Shoot/Confirm | ESDF - Move

Welcome to A Cow's Adventure!

This is my first game on Pico-8 and, actually, ever! I made it in 7 days (+ 1 day bug fixing/balancing) and have been learning lua for ~5 days prior so this was a SUPER fun and educational experience!

In this game, traverse different farms as a Cow of your choosing, each class providing different base stats. Shoot your way to victory with careful planning, basic upgrades, and simple vertical movement. Enjoy some great classic arcade vibes thanks to Gruber's Pico-8 Tunes Volume 1 music set! Each Victory rewards you with a unique "Trophy" that will be added to the farm you start in. Each Cow + Difficulty gives a different one, try to collect them all!

[ Continue Reading.. ]

2
2 comments


Cart #pss_example_project-7 | 2024-07-21 | Embed ▽ | License: CC4-BY-NC-SA
19

load #pss_example_project

You can create mods for Picotron Solitaire Suite from this example project cart. the cart contains a single solitaire variant from which you can learn how the api works and build your own games from. Try to keep all changes you make inside cart_games/ and card_backs/. Though you should probably adjust suite_scripts/main_menu.lua to better match your game.

I highly recommennd reading the READMEFIRST file inside the cart.

All the functions inside cards_api/ and suite_scripts/ should have comments that help tell you what they do. The readme files in for the suite and api git repositories also have some information on the available functions. You can also look at the games inside the suite in order to get an idea of how those games apply the api and suite functions.

[ Continue Reading.. ]

19
2 comments


Cart #in_the_middle-1 | 2024-07-21 | Embed ▽ | License: CC4-BY-NC-SA

This cart was made as a silly little entry for the Goblin Bunker July 2024 Game Jam, between July 19th and July 20th, 2024

The font is Maple by Chevy Ray

If you download it, it will track your score

0 comments


I wanted a tool to help me import a large folder of asset .pngs (such as one you might get from https://kenney.nl/) into .gfx files. I know there are tools such as @pancelor 's helpful importpng.p64 (or just click-n-dragging onto the gfx editor), but I didn't want to do that for hundreds of files.

Using importpng.p64 as a foundation, I create a command-line utility for Picotron that will import entire folders of assets into .gfx files! Below is the snippet that you'll put in /appdata/system/utils/simport.lua

-- a tool to import all pngs in a folder into a single .gfx file
-- tool by  @fletch_pico
-- version 1.1
-- 
-- makes use of:
-- importpng.p64 code by   @pancelor
-- https://www.lexaloffle.com/bbs/?tid=141149

cd(env().path)
local argv = env().argv

if (argv[1] == "--help") then
	print("Usage: simport [FOLDER]")
	print("Populate the .gfx file using a folder of PNGs.")

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=151555#p)
2
1 comment


Cart #greenhousetest-0 | 2024-07-20 | Code ▽ | Embed ▽ | No License

0 comments


Cart #hauler-0 | 2024-07-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Hauler

Welcome to the Zeta Sector in a remote part of the Milky Way. You are a Space Trucker for the Eastwood Mifune Cooperative. Your job is to transport cargo and people from one space station to another. Or deliver a delicious Moloko Shake from a diner to a customer.

Explore a compact sector of the galaxy with planets to scan, jobs to complete, and Easter eggs to discover. Only one thing seems to be missing: Good coffee. Can you solve the mystery of where to get it?

What you can do

  • Docking at stations to accept fetch quests.
  • Fuel scoop at stars.
  • Collect salvage or mine resources to sell.
  • Scan planets to document the sector.
  • Use your friendship drive to jump to other systems.

[ Continue Reading.. ]

5
0 comments


Cart #pizzatowerpicoedition-0 | 2024-07-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8

Previews

Dev Notes

You Can Make Mods With This Engine
Just Credit Me

Notes

I Do Not Own Any Of The Characters
So Please Credit Mcpig When Making A Mod

New Features

Wallrunning
High Jump

8
4 comments


Cart #druid_dash_ppp-0 | 2024-07-20 | Code ▽ | Embed ▽ | No License
3

This game was made for the Pursuing Pixels James Jam Game Gam #3 with theme parallel. Some art (mainly my trees and grass) were taken from the first version: Druid Dash: Magic Mushroom Mania

Shorter than what I wanted, but that is the life of weeklong jams that you develop under 10 hours.

There is a bug that sometimes comes up with spirits not moving, you will have to restart the stage with C x)

Gameplay:

Move spirits around the map and guide them to their shrines. Once they move, they will continue to do so until they hit a wall.

⬅️⬇️⬆️➡️ - Move around

❎: X - Next Stage

🅾️: C or Y/Z - Restart Level
Devlogs:

You can read all about the development if you are into things like that:

[ Continue Reading.. ]

3
0 comments


Cart #only_three_wizards-0 | 2024-07-20 | Code ▽ | Embed ▽ | No License
5

This game was made for the Minigame A Month May 2024 for theme WIZARDS!
Gameplay:

Move around on the field to avoid the relentless attacks of the mages.

⬅️⬇️⬆️➡️ - Move around on the board.

❎: X - Activates Currently held Item.

🅾️: C or Y/Z - Switch your current color.

Stand on appearing attack spots with the right color to hurt the mage of that color.
Items:

Sands of Time: Freezes time for the world. You are allowed to move, but nothing else.
Chromatic Star: Allowes you to become invulnerable, and hurt any mage while stepping on attack spots.

Wizards:

Each wizards has a unique logic behind their patterns as three distinc phases with them. Figure out who does what an plan ahead!

[ Continue Reading.. ]

5
0 comments


Cart #obnoxious_love-2 | 2024-07-20 | Embed ▽ | License: CC4-BY-NC-SA
2

a little obnoxious, jittery, lovey screensaver I made for fun offered as is

edit the "str" variable to change the displayed text. edit the "range" variable to adjust severity of jitter

2
0 comments


I've struggled with collision for a long time, but I've discovered/learned two collision types that can be implemented into just about any game genre.

This is my first time writing a tutorial so please any advice or mistakes a must.

Some background:

What is an object? An object can be something as simple as you having to make a tabel/array of said thing.

And what is a tile? A tile refers to what you place down in the tile-map which is the brick icon at the top.

A flag is something you can set in the sprite creator. It's the row of 8 buttons underneath the color palette.
The reason for these buttons is for easier management of sprites, if you want to have a block that damages the player you can set a flag for that. Or in this context for a solid wall.

PROBLEMS AND SOLUTIONS OF THESE COLLISIONS WILL BE LOCATED AT THE BOTTOM

OBJECT-TO-OBJECT COLLISION

This collision type involves four to eight parameters.

  • A first X value (x1)

[ Continue Reading.. ]

1
4 comments



Cart #hebyowaha-1 | 2024-07-20 | Embed ▽ | License: CC4-BY-NC-SA
4

generates random mazes every few seconds!! it makes for a fun screensaver :]

4
0 comments


Cart #bucketball-0 | 2024-07-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2


In this game you use the arrow keys to move a bucket and catch a ball from falling into lava

2
0 comments


Cart #knucklebones-6 | 2024-07-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
11

Knucklebones

Controls

⬅️⬆️➡️⬇️ Move cursor ❎/X or 🅾️/Z Select

Rules

Each player has a 3x3 grid, organized into three columns. They take turns rolling a die and placing it into an open spot in their grid. If there is a matching die in their opponent's matching column, the opponent must remove all matching dice in that column. When one player's grid is full, the game is over and the player with the highest score is the winner.

Scoring

Each column is calculated separately, then added to the player's total score. If there are matching dice in the column, their values are added together and multiplied by the amount of matching dice.

[ Continue Reading.. ]

11
5 comments


Cart #zip-1 | 2024-07-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


I am working on compressing .p8 files.
That's all you need to know.

Currently it is only saving characters by only advancing tokens once.

2 comments


Cart #appleget_img_01-0 | 2024-07-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

I decided to test out a cutscene, by loading an IRL apple into Pico 8.
It's for a new project that'll have short clips for getting items.

Tell me what you think, and if you have any tips for this kind of thing. Cheers!

4
2 comments


As far as I know, every variable is returning as nil. That doesn't mean that it is. I cant get far enough into my game to figure out more

I am unsure what i did. I have gone through my code multiple times and i am just done currently. Any help or advice would be greatly appreciated.

[hidden]

-- game loop

function _init()
 gamestart()
	_upd=update_game()
	_drw=draw_game()
end

function _update()
	frm+=1
	_upd()
end

function _draw()
	_drw()
end

function gamestart()
	frm=1
	col=false
----------------
--menus
----------------
	men_main={
		items={"start game","controls"},
		menx=10,
		meny=10,
		curx=2,
		cury=10,
		menoff=7
	}
----------------
--player
----------------
	p={
	sp=1,
	x=48,
	xo=0,
	y=40,
	yo=0,
	w=8,
	h=8,
	ymt=0,
	spd=1,
	flp=false,
	dx=0,
	dy=0,
	--gravity/collision stuff
	hbx1=1,
	hbx2=6,
	hby1=7,
	hby2=1,
	grv=0.2,
	acc=0.5,
	landed=false,
	jumping=false,
	running=false,
	falling=false,
	dashing=false,
	rolling=false,
	attacking=false,
	itemgrab=false,
	--animation (in sprite #)
		frame=0,
		anim_idle=1,
		anim_walk={1,2,3,4},
		anim_jf=5,
		anim_atk={1,4,6},
		anim_dashing=8,
		anim_rolling={9,10,11,9},
		anim_attacking=6,
		anim_itemgrab=7,
	--game stats
		mhp=10,
		chp=10,
		atk=1,
		def=1,
		agi=1.1,--1.1 beacuse fucking math
}
		inv={}
		abilities={}
----------------
--tiles
----------------
	--collision
	t={--x1=l x2=r y1=t y2=b
		wall={x1=4,x2=6,y1=0,y2=7},
		floor={x1=0,x2=7,y1=4,y2=7}
	}
end
-->8
-- updates
function update_game()
--player---------------------
-----------------------------
		p.frame+=1
		if p.frame==5 then
		 p.frame=1
		end
		if (btn(⬅️))	then
			p.dx=-1
			p.flp=true
			p.running=true
		elseif (btn(➡️))	then
			p.dx=1
			p.flp=false
			p.running=true
		else
			p.dx=0
			p.running=false
		end

--collisions & gravity
		local ly=p.y
		p.dy+=p.grv

--check collision left and right
  if p.dx<0 then
    if collide_map(p,"left",0) then
      p.dx=0
    end
  elseif p.dx>0 then
    if collide_map(p,"right",0) then
      p.dx=0
    end
  end

  --jump
  if btnp(⬆️)
  and p.landed then
    p.dy-=2
    p.landed=false
  end

  --check collision up and down
  if p.dy>0 then
    p.falling=true
    p.landed=false
    p.jumping=false

    if collide_map(p,"down",0) then
      p.landed=true
      p.falling=false
      p.dy=0
      p.y-=((p.y+p.h+1)%8)-1
    end
  elseif p.dy<0 then
    p.jumping=true
    if collide_map(p,"up",0) then
      p.dy=0
    end
  end
	p.x+=p.dx
	p.y+=p.dy
--animation
	if p.jumping or p.falling then
		p.sp=p.anim_jf
	elseif p.running then
		if frm%5<=4 then
			p.sp=p.anim_walk[p.frame]
		end 
	elseif p.attacking then
		p.sp=p.anim_attack
	else --player idle
		p.sp=1
	end

end

function update_mm()
	upd_menu(men_main)
end
-->8
-- draws
function draw_game()
	cls()
	map()
	spr(p.sp,p.x,p.y,1,1,p.flp)
	camera(p.x-60,p.y-60)

	print(p.dx,1+p.x-59,1+p.y-59,8)
	print(p.dy,9+p.x-59,1+p.y-59,8)
end

function draw_mm() 
	cls()
	menutext(men_main.items,men_main.menx,men_main.meny,8)
	drw_menucur(men_main)
end

-->8
--functions
function does_tile(flag,x,y) -- bool
	tile=mget(x,y)
	has_flag=fget(tile,flag)
	return has_flag
end

function collide_map(obj,aim,flag)
 --obj = table needs x,y,w,h
 --aim = left,right,up,down

 local x=obj.x  local y=obj.y
 local w=obj.w  local h=obj.h

 local x1=0	 local y1=0
 local x2=0  local y2=0

 if aim=="left" then
   x1=x-1  y1=y
   x2=x    y2=y+h-1

 elseif aim=="right" then
   x1=x+w-1    y1=y
   x2=x+w  y2=y+h-1

 elseif aim=="up" then
   x1=x+2    y1=y-1
   x2=x+w-3  y2=y

 elseif aim=="down" then
   x1=x+2      y1=y+h
   x2=x+w-3    y2=y+h
 end

 --pixels to tiles
 x1/=8    y1/=8
 x2/=8    y2/=8

 if fget(mget(x1,y1), flag)
 or fget(mget(x1,y2), flag)
 or fget(mget(x2,y1), flag)
 or fget(mget(x2,y2), flag) then
   return true
 else
   return false
 end

end

-->8
--menu

function startmenu(menutable)

end

function menutext(menutable,x,y,off)
	for i=1, #menutable do
		print(menutable[i],x,y+menutable.off*i)
	end
end

function drw_menucur(menutable)	
	local x1 = menutable.curx-8
	local y1 = menutable.cury-10
	local x2 = x1+12
	local y2 = y1+6

	rectfill(x1,y1,x2,y2,7)
end

function upd_menu(menutable)
	if btnp(⬆️) then
	 menutable.cury-=7 
	end
	if btnp(⬇️) then
	 menutable.cury+=7
	end
--	if btnp(❎) then menuacc(menutable)
--	if btnp(🅾️) then menuden(menutable)

end

[ Continue Reading.. ]

1 comment


I've been trying for a day to figure this out and I can't. There's barely any information online about this. Although it feels like everyone knows it but me.

My idea is on initialize to run a nested for loop and add any enemies to a list. And in the update move them.
I did this and it worked! But it incremented in grids. There's no actual code of this since I deleted it, but I could easily reprogram it, if someone asks what the block was.

1
5 comments




Top    Load More Posts ->