Log In  
PICO-8 0.2.6
PkZ - Pokemon Gen 1 Sprite Compression Algorithm
Save 8k Of Persistent Data !
[ :: Read More :: ]

Version 0.9: monster graphics!

Cart #teddblue_monv9-0 | 2024-06-15 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


  • Mons in save data
  • Image decompression system added
    • based off the system used in the gen 1 and 2 pokemon games with some changes to better fit pico-8
  • Display mons in battle mode
  • mon info menu system
    • view mons
    • view stats, moves, info
    • change mon placement
  • mons appear on start menu
    • i thought it would be a fun way to show off all the cool monsters that are in the game so far
    • you cant catch all of the ones shown
  • cleanup and token saving measures

story time

Hello! this update came out really fast as far as this major feature being added. this is because i had been working on this part in a separate project as i was making the rest of the engine. It loads an image compressed into a string. there are some improvements i wouldve wanted to make but it didnt seem worth the token cost. anyways it works now. this was a major feature that i had to have in the game for it to be worth the challenge.
As far as future updates... The battle system is due for another update, but ive decided to finish the other essential parts of the engine that arent in yet since the current battle system is at least made and working. My next update will be a big one for npcs and npc nodes. I want to give them more functionality for the story and such.
I've recently started a new summer job, so updates might take a bit longer than usual. I'll still spend as much time as i can on this since i really do enjoy this project. pretty soon ill be working on the actual content of the game and only sometimes tweaking the engine. I dont want to spoil too much, but ill try to post updates that showcase the changes in the engine and my progress in the making of the actual game.
With all that being said, please leave any questions, comments, concerns, and all that jazz down below :)

P#149960 2024-06-15 02:11

[ :: Read More :: ]

So I'm trying to use two sprite sheets per frame in my game using the new high memory video mapping. at the start of the game the video memory is moved to 0x8000. there are special sprites that are loaded from a string into 0xa0. What im trying to do is quickly switch to 0xa0, load/draw the compressed sprite, then switch back to the 0x80 sprite sheet. for some reason loading the sprite into 0xa0 overwrites sprites at the same position in 0x80, which is my main issue here. if anyone has advice or help id appreciate, i understand its a new feature so its not as well documented just yet.

copying sprites from video memory to 0x8000 (this is done in _init):


loading sprite data from string into 0xa000 (this is called sometimes during _update within a decoding function):

poke(0x5f54,0xa0) --load 0xa000 memory
--buncha stuff that loads decompressed sprite
for i=0,4096do
local sx,sy,i=32-w\2+slot*64,128-h,1
for y=0,h-1 do
    for x=0,w-1 do
poke(0x5f54,0x80) --load back 0x8000 memory

drawing the sprite loaded into 0xa000 memory (done during _draw as needed during its own function)


i wanted to put it out there that im ok with only being able to draw from 1 of the sheets per frame. as long as i can load gfx from one without corrupting the other.

P#149955 2024-06-14 23:35 ( Edited 2024-06-15 00:53)

[ :: Read More :: ]

Cart #teddblue_monv8-0 | 2024-06-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Mon Engine Version 0.8

  • Move loading bug fix
  • Wild encounter pools
    • Wild encounters are selected randomly from a weighted list
    • Each map can specify which pool to select a Mon from
    • Wild encounter data load
    • Map data can store a byte referencing their wild encounter pool
  • Text input system
    • simple arrows to move cursor, [X] to add a letter, [O] to delete a letter
  • saving
    • save to .p8 file
    • load from .p8 file
  • Start menu
    • load save file if present
    • start new game if save file not present
    • enter name for character
    • pick colors of character
  • Monster catching
    • uses experimental petting system
    • youll see the player character move back and forth during catching
    • hit [X] as the direction changes to up chances of a catch
    • numbers at top-left of screen give info on the catching
    • first number is stage in battle, second is catch chance, third is the amount catch chance was changed on last tap

Other Developments

Ive decided a name! at least for now im calling it oscimons (subject to change). "Oscilation" was the only word i could fit well with "mon" that had to do with the creatures. In addition, I plan on redoing the battle system again but with better a designed turn system. Thats going to be on a waitlist until other features are ready. I'm starting a job soon so please be patient to all 2 people that are keeping up with this.

Next Time

I plan on going ahead with adding the image loader ive been working on, so im pretty excited! Ill also add a mon info screen for the worldmap. then a few smaller things i havent gotten around to yet like structure collision, trigger zones, etc. but some of those features are pretty big and will wait longer.


leave any questions, comments, concerns, and advice down below!

P#149397 2024-06-03 20:13

[ :: Read More :: ]

so i didn't know if i was gonna share this or not, but I've spent a bit of time on this version.

Cart #teddbluemonv0_6-0 | 2024-05-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


battle system rewrite:
battle system was written a while back and needed to be cleaned up. now it is

battle loading:
battles can now be triggered by the init_btl() function. it is currently being used during NPC interaction and wild encounters, which work but are currently disabled. In addition, NPCs havea new interaction node that triggers a battle. You can try it out by answering "no" to the NPC.

code improvements in loading data:
cleaned up, rewrote, and overall made loading data neater and more token-efficient. a new read() function added to assist in this mission. All parts of the code written as table["attribute"] have been rewritten to table.attribute (i blame python for my weird writing of it).

monster and move data load:
the bulk of time spent on this update was used to make and debug the loading systems for monster data and move data. I don't feel like explaining it other than that this data is loaded at the start as opposed to before being used like the maps are.

in other news, i wrote a variation of the sprite compression system used in gen 1 and 2 Pokemon games. I'm not yet ready to share this, but you'll prolly see it in an update soon. the read() function was made for this part of the project. The important thing is that it finally works and really ups the scope of the game.

Next update

Currently i am very tired so i don't want to type too much more. I will say that v0.8 will be out soon. Turns out work goes a lot faster when you're not trying to fix the umpteenth data loading problem. One thing i want to get done before releasing v0.8 is finding a good title. If anyone would like to help with that, heres some LORE!


all the monsters have been blipped into our world, and have completely overtaken native wildlife in their small territory. These aliens are connected to the rhythmic phenomenon that got them here. instead of "capturing" you need to connect to their "rhythm" by petting them just right. Then a special device can blip them over to you for battling. I know this is pretty complicated, but ill have something better written for v0.8 and I'll answer any questions you have.


Thank you for taking the time to check in! please leave any questions, comments, concerns, advice, or anything else for me to read!

P#148965 2024-05-26 00:47

[ :: Read More :: ]

Cart #teddblumonv6-2 | 2024-01-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I've been working on this project for quite some time now. Its a very ambitious project that aims to make a monster-catching game akin to the gen 1 and 2 Pokemon games. v6 is the first one I'm showing off. All it has is a complicated map compression system and some nice map physics. current features include:

  • text engine
  • simple battle engine (to be rewritten)
  • simple mon, move, and team data (to be rewritten)
  • custom map scrolling system
  • map and object collision
  • objects with node based ai system
  • nodes for opening text box, asking yes/no question
  • map data decompression
  • teleporting player to different maps/positions via node

if anyone has any advice i'd be happy to take it. this project has 2 main goals: to push pico-8 (and myself) to its limits, and to create a mon game that has all the charm of pokemon while doing better in the things gamefreak does poorly (like graphics, mechanics, story, etc.). I want to make a whole YT video on this stuff but there were 5 other iterations and i wanted to get something about this game out there.
I'm not too ready for ideas for mons, story, ect. since im avoiding scope creep and I also want to find a good way to credit outside help (pretty hard to fit alot in an already cramped game). But I do want to give some famemons and fanmons a home in my game.

P#140080 2024-01-13 19:56 ( Edited 2024-01-13 20:00)