Log In  

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

I wrote a new tool that turns carts upside down.

% ./p8upsidedown jelpi.p8.png

Cart #16098 | 2015-11-02 | Code ▽ | Embed ▽ | No License
1

The tool is built with the picotool library (discussion). This version of the tool inverts the sprites, inverts the map, and translates the code to use inverted coordinates for drawing functions.

This is meant as a hack/demo and is known not to work with every cart. It works with many carts, and some of the failures are interesting. Notably:

  • The code translation increases the token count, so large carts (Celeste, Dusk Child) can't be turned upside down.

  • This version doesn't support spr/sspr calls that draw a rectangle of tiles. This wouldn't be too difficult to support: it'd need to flip the entire spritesheet not just individual sprites, translate the sprite IDs in the map, and extend the code to rewrite sprite ID args. But I have other things to do this weekend. :)

  • The print function will always print left to right, so we compromise and merely relocate the y coordinate for print / cursor calls. There's nothing the tool can do with carts that call multiple coordinate-less prints.

  • I wrote this to exercise and demonstrate the picotool libraries for mutating Lua code via the AST. The lib doesn't know how to write out an arbitrary AST and preserve other comments/spaces, so p8upsidedown generates hideous code. Unfortunately the luafmt writer isn't entirely up to snuff either so it's not much help. This is mostly not an issue to Pico-8, though I did find a bug where Pico-8's special "t += val" syntax rejects a newline between the "+=" and the "val", which p8upsidedown might accidentally introduce.

Anyway, a fun weekend hack with picotool. Enjoy!

-- Dan

1
4 comments


Cart #16375 | 2015-11-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

(old tag: 16090)

I thought I wanted to make a game about launching missiles, but then I thought about it some more. All I really wanted was to make a game about moving an unwieldy cursor over a radar screen and pressing a button to do something.

So here we have SUPPLYDROP, in which you control a crosshair over a busy radar screen. Distant and imperilled groups of people have pooled their scant resources to send a distress signal, in the hope of reaching you and calling down desperately-needed supplies. You can help them, but their signals are terribly brief. Moreover, you only have ten supply drops to use. One supply drop can feed many people, but do you want to hold it back, in hopes of two beacons near each other? Or will you respond immediately to each call?

Watch for the signal beacons (orange squares). Move the crosshair with the arrow keys and use Z to place supplies near or on them to help those people. At the end of the game, you'll see your score and how many groups you saved. Any groups you missed will lower your score.

(Press Z on the score screen to restart.)

I had a lot of fun making this one over the last few days. I hope you enjoy playing it!

2
5 comments


I would like to learn how to reproduce the famous sinus scroller text effect, but i can't make it to work.

Can someone explain the idea behind this ? I don't want the code (i want to find it myself), i just want to understand how to approach this.

I've created a table with a cell for each letter of my text, now i need to print and move each later to the left in a sinus pattern, but i can't figured out :

cls()
table={1,2,3,4,5,6}
x=127

function _update()
end

function _draw()

for i=1,6 do
print(table[i],127-i*10,cos(i*3/12)*20+60)
end

end

With this i have a sinus with my text, but it's not moving in real time, and it's in reverse mode. At some point i need to erase each letter from their previous position ? How to erase only one printed letter ? Print the same letter at the same position with transparent color ? Maybe sprite are better for this because they are easiest to move ?

2
5 comments


Cart #16069 | 2015-11-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
7

Extremely limited (hacked-together) work in progress:

Explore a room!
Listen to some (unfinished) music!
Feast your eyes on a colour! (two, if you count black)

(the piano was playable - two chords - but i've switched it off so the music plays through)

7
8 comments


I had thirty bucks to blow, so I got a Game Gear (No picture, due to my phone sucking).

I know this is unrelated to PICO-8, but this thing is amazing!
Came with Sonic the Hedgehog 2, which is a BLAST (see what I did there?).

Sorry to waste your time, I just wanted to tell you guys.

1
1 comment


Cart #16052 | 2015-10-31 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

Ratio.

1
0 comments


Cart #16045 | 2015-10-31 | Code ▽ | Embed ▽ | No License
21

Minesweeper! Features multiple difficulty levels and amazing sound effects. Released under the zlib/libpng license.

Arrows transport cursor and navigate menu
Z reveal tiles or activate menu options, menu opened when tiles not revealed
X flag tiles for knowledge

21
13 comments


Hi, new member here.

I have some requests for the pattern editor:

  1. insert/delete line: please assign ins/del for that, leaving the Delete key as it is
  2. please allow copy/paste and undo for notes
  3. please give us one octave above, for convincing high-hats. one octave below for pounding bass would be nice too
  4. I suspect the way effects 6 and 7 work, only allow for 4/4 signatures. I'd love to be able to start the effect on the exact same line that I call it, instead of every 4 lines.

I know some of these are doable by editing the cart data, but leaving pico8 is a hassle when you're in the zone.

By the way I wrote this:

6
4 comments




Hello, community,

My first cartridge is here: 40 levels to make your brain burn.
Enjoy ! :)

Rules:
Take the red token to the center of the board.
You can move any token.
The tokens can only move iif there's another one to stop it.

0.1.1 changelog:

  • added: onscreen controls

NYI:

  • Menu and ingame bgm.
  • Juice it or lose it (tweening, camera effects...).
8
7 comments




I'm pleased to announce picotool, a set of tools and Python libraries for manipulating Pico-8 game files. picotool can read .p8.png and .p8 files, and can write .p8 files.

To get picotool and learn how to use it, visit the picotool Github repo.

The p8tool command is a multi-tool with multiple functions. You can run it like this:

% p8tool stats helloworld.p8.png
hello world (helloworld.p8.png)
by zep
version: 0  lines: 48  chars: 419  tokens: 134

picotool currently includes the following tools:

  • build: builds a cart from pieces of other carts
  • stats: a statistics reporting tool
  • listlua: prints the Lua region of a cart
  • writep8: converts a .p8.png cart to a .p8 cart
  • luafmt: writes a new .p8 cart with Lua rewritten with regular formatting, to make it easier to read

[ Continue Reading.. ]

23
60 comments


On the lower right corner of the code, i can see a field displaying how many tokens I use out of the 32000 token limit. But I'd swear that some days before, it was displaying my number of symbol usage out of the symbol limits.

Is there a way to switch between the two ?

1 comment




the second thing i have ever coded in my life, this cartridge is a MUST HAVE collectible for when i become a billionaire pico-8 video game designer specialist executive.

UPDATES

0.0.2 -new content in the first few minutes of release, this developer is on fire!
-character will now warp when reaching the edge of the screen.

3 comments


Cart #17003 | 2015-11-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
203

New Version 1.1.1:
Oops I introduced a bug with previous version. Fixed!


Version 1.1:
As I was asked several times, I added options to allow manual fire and non inverted Y axis.
I also slightly lowered the laser sound as it was a bit annoying (It is still but lower :D)

I finally found the time to finish my shooter.

Here is Hyperspace, a 3D shooter with endless enemy waves. Try to beat your score during your last stand! Dodge through asteroids, resist enemy waves and defeat the bosses.

The barrel roll (with X) allows you to be untouchable for a short period of time.
The time is accelerating continuously so kill all enemies the fastest possible to get the best score.

I struggled a lot with token limit and I couldnt implement all i wanted. The code is messy as hell as I had to hardcode everything to save tokens
More sfx/music can still be added if I find some more tokens.

Looking forward to seeing your feelings about the game! And dont hesitate to share your highscores!

PS: The webplayer may have some slowdowns from time to time, the game in pico 8 client should run at a stable 30fps

[ Continue Reading.. ]

203
36 comments


Hello !

I'm rather new to pico-8 and the community... and I've just fallen in love with both of them.
Searching resources and toys for my personal pico-library, I have found some API cheatsheets. But I think these are for older versions (v0.1.2) or don't have some other tips I have found throughout the forums.

So I have built my own API cheatsheet !
Here it is: http://neko250.github.io/pico8-api/

I hope you find it useful ! :)

22
20 comments


Cart #15928 | 2015-10-27 | Code ▽ | Embed ▽ | No License
64

This is a small graphics exercise & de-facto walking simulator.

it features:
-Nice isometric tiles.
-Simple collisions.
-Color cycling & Day/Night palette.
-Looping map
-Some other things

I wasn't smart enough to figure out:
-Dynamic z-ordering
-Level compression

Also, the "music" was made in a previous version,
so some of the patterns do not loop as originally intended.

Legal Boilerplate:


You have my permission to use this stuff in non-commercial pico-8 carts.
Much of this cart's code was liberally copied from other projects on the BBS... specifically zep's Wall Collision Example, & Connorses' Swirlthing.
stuff shall hereby be defined as those portions of this cart's content which I own the rights to.

64
18 comments


Cart #15900 | 2015-10-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4


edit: C64 version
Cart #15954 | 2015-10-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4


Could do with some squeaky tape sounds, but i just knocked this up quick for anyone that wants it. (wish I'd put it on my cracktro ;) )
edit: updated with a press play on tape

4
2 comments


Cart #15888 | 2015-10-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3


X + Arrows: select element
Z: put particles.

Notes:
-Water is very buggy
-I get lag when i put more than 50 particles.
-Made in 6 hours c:

TODO:
-fix water.
-add plants
-add ice
-add lava
etc.

Feedback will be great c:

3
1 comment




So I've been working on this cracktro for my feature about P8 on Indie Retro News, here's the finished cartridge and the article is here: www.indieretronews.com

enjoy!
(and thanks for everyone who's helped me on my journey. It's been emotional :)

8
9 comments


Cart #57897 | 2018-10-13 | Code ▽ | Embed ▽ | No License
22

A partial port of Kid Radd from the classic Seveightgo Entertainment Unit (səu)

The original ROM is hard to come across on the web nowadays. They started mysteriously self-destructing sometime around 2003, and the ones that are still intact seem to have a lot of data missing... Forgive me if this replica isn't exactly how you remember it, I don't have a good reference for most of this.

Changelog:
[hidden]
Unreleased

  • Reset Radd's "on ground" property between levels so if you're jumping at fadeout you don't immediately get stuck "landing" when the next level loads.

Alpha 19

  • Reset Radd's invulnerability frames between lives. (bug fix)
  • Reset momentum after taking damage. (bug fix)
  • Made health persistent across levels and saving.
  • Made next powerup spawn persistent across saving.
  • Re-enabled Radd's wider variety of intermission screen facial expressions and added a new one.
    • Radd will have a happy face at the next stage's title card if you cleared the stage without taking damage.
    • Radd will have a serious/angry face when respawning for his last life.
    • New: Radd will have a surprised/scared face when clearing a stage on your last life with only 1 hit point left.
  • Removed the "Sharp Painful Object Land" stage title, it turns out that was just a punchline made up for the webcomic.
  • Added label rendering to gs_title (A proper "label screen" hadn't been done since alpha 11.)
  • Clear enemies while exiting the stage in level clear state (bug fix)

Alpha 18

  • Added proper damage and death states for the player and enemies.
  • Added death sprites for enemies
  • Compacted SFX into quarter sfx units, and added a few new ones.
  • New sfx player function, to manage sound channels and priorities effectively for minimal impact on the music.
  • Added unique behaviors for Bogus (underground Bogey)
  • Added "powerups" to heal Radd.
  • Renamed most of the stages.

Alpha 17

  • Added entity-to-entity collision possibilities. (Bogey can now bump into eachother.)
  • Simplified tile collision handling for most entities.
  • Added the ability to charge and shoot Radd Beams (but they can't interact with enemies yet)
  • Split the source code into those newfangled tab-pages.
  • Added CPU counter to sprite viewer.
  • Lowered music volume further to not compete with sfx.

Alpha 16

  • Minor text processing optimizations
  • Added scenery for Yellow Brick Road (flowers, clouds)
  • New intermission font.
  • New Yellow Brick Road end screen.
  • More (empty) level slots explorable.
  • Implemented compression for the main player sprite bank (which was full) to also hold the intermission font. (This makes the Sprite Test screen really interesting, depending on whether you view it before or after going to a level...)
  • Implemented death pit functionality (Object to object collision is still missing.)

Alpha 15

  • Added a brief "landing" pause between jumps
  • Fixed up map and collision systems to accommodate maps larger than 1024 pixels wide with wraparound.
  • Added simplified stage clear sequence.
  • Removed menu sfx to make room for stage clear jingle. :( Removing sfx for music is a tradeoff I've been making way too much with this project...
  • Re-added background scenery objects to Radical Boardwalk.
  • Added a new kind of platform collision for underground.
  • Added underground enemies.

Alpha 14

  • Finally got the map tiles up again, and now they actually have proper collision!
  • Added another string parser for entity animation data.
  • Added Radd, Bogey, and jumping physics.
  • The engine rewrite finally paid off.

Alpha 13

  • Fleshed out a lot more sprite mappings, including Radd's shoot animations, projectiles, alt. enemy colors, ...
  • Moved fade colormap data out of the source code into sprite #255
  • Clear title screen graphics out of shared sprite memory and put active map tile data there in-game.

Alpha 12
I'm in the middle of an engine rewrite to simplify things and compact the data and stuff.

  • Added more sprites and sound effects.
  • Added the actual "boss" music. (Listen to it on the sound test menu!)
  • Removed Bogey landing sound effect. There's not enough space for it at the moment!
  • Moved Sound Test to a new debug stuff menu if you press "right" at the title screen.
  • Added a Sprite Test to go with the Sound Test.
  • Game is no longer in an even slightly playable state, again. u_u; But it will come out better than before, surely!

Alpha 11

  • Added a sound test, including the currently unused tracks that are completed in the game.
  • Broke/disabled the limited entity --> tile collision code, I'm still trying to figure out the best way to do this across nonlinear map segments and whatnot...
  • Fixed the exceedingly minor death animation bug.

Alpha 10

  • Changed pain and death states to kill momentum instead of pausing
  • Added damage immunity flashing after pain
  • Death animation waits until floor impact (for future where there will be floorless rooms with an alternate death animation)
  • New map segment system implemented, getting the level geometry back again and highly optimized in memory.
  • New entity --> tile collision code partially implemented (but not even close to fully functional yet). Try watching the first enemy in the game for a while.
  • Bug: This build broke the last part of Radd's death animation (woops)

Alpha 9

  • Added per sub-sprite flipping and palette remapping, for advanced effects and optimizations.
  • Added pain / death / game over for the player.
  • Still no level geometry or win condition. I'm getting there...

Alpha 8

  • Expanded jumping mechanics to allow better freedom of movement and a tiny delay before jumping.
  • Lowered walking speed to make the air movement speed difference feel less conspicuous.
  • Added sfx for jumping, landing, and title screen menu
  • Lowered music volumes so the music doesn't totally drown out sfx...
  • Added a bunch more player sprites in preparation for a fully functional game. (unused)

Alpha 7

  • Fixed music bugs relating to title screen (dissonant notes, way too fast song speed)
  • Packed in a lot more sprites (unused)
  • Rewrote entity animation system to handle multiple connected sprites per frame of animation. (no visual difference to the user, but it made sprite sheet optimizations possible.)
  • Temporarily removed complex map geometry.
  • Added "underground" song (unused)
  • Synchronized enemies
  • Added jumping ability.

Alpha 6

  • Added title screen, title music, and screen fades.
  • Changed background rendering to a dynamic looping scene, in preparation for map crushing.

Alpha 5

  • Added non-interactive enemies.
  • Changed sky color to light grey.

Alpha 4

  • Redid music (I'm getting the hang of this system now...)

[ Continue Reading.. ]

22
18 comments




Top    Load More Posts ->