All posts by jihem

i_editor 1.5


. displays result in the drawing (up to 17 lines)

Sample 1
5 4 + .

Clipboard enabled (<CP, >CP)

CLR : clear
<CP : copy from clipboard
>CP : copy to clipboard

Copy the line below into the clipboard

:a 10 fd 90 tr ; a a a a

Paste in PICO-8, then activate <CP


Sample 2
:a >a # <a / flr # b >b <a * – <a 2 / flr # ?a ; :b cl 4 c ; :c 1 – # 3 fd 3 bd 90 tr 1 fd 90 tl ?c ; pu 20 20 mv pd 62 128 a pu pd 20 24 mv 127 128 a pu 20 28 mv pd 73 128 a pu 20 32 mv pd 127 128 a pu 20 36 mv pd 62 128 a pu 20 40 mv pd 42 128 a

Clipboard functions (<CP,>CP) aren’t working in HTML exported cartridge.
Copy from notepad (text in the html browser may contain tag or additional characters).



Choose the command in the first column (up/down, x)
Change column (left/right)

Change the value in the second colum (x, then left/right to decrease/increase)
Delete instruction in the second colum with (o)

Have a look on i_core¬†post to have more explanation about the language “I”.

I will make a tutorial soon and post a link and additional information here.

Sample 1 (gif)

:A 20 FD 90 TR ; :B 1 – # A ?B ; 4 B

Sample 2 (gif) made by roywig



You can accelerate the rendering process in the M:DRAW method. At the end, change from



while i>0 and self.vm:state()!=3 do

i_core + turtle


This cartridge includes i_core and the turtle extension.
It shows how to:
– bind a personal extension (turtle object, turtle binding) to the language core engine,
– initialize the external extension and call its methods (from PICO-I and i_core)
– pass parameters from PICO-8 to i_core (N).

The turtle extension includes the following commands:
– FD forward, 20 FD
– BD backward, 20 BD
– TR turn right, 90 TR
– TL turn left, 90 TL
– CL change color, 1 CL
– PU pen up, PU
– PD pen down, PD
– TO go to, 10 10 TO
– HD head to (0 right, 90 top, 180 left, 270 down), 0 HD

Sample :

‘:loop 20 fd <a tr 1 – # ?loop ; :side >n 360 <n / >a <n loop ; cls 4 side’

Have fun ūüėČ






This is the core engine of a language (‘I’) and its virtual machine (all of this in PICO-8).
You can extend this engine (see how _SHW or _CLS are implemented).
You can create synonyms for a simplier use (see _ADD and _+).

The programs must be writen in a line. Terms are separated by space.

The engine is stack based (like forth): ‘5 4 + .’ => shows 9

The operators + – * / and flr function are available.
The ‘#’ duplicates the last value (of the stack).

You can evaluate (5 + 4) * (3 + 2) with ‘5 4 + 3 2 + * .’ => 45

Create a sub function

:NAME <sequence of instructions> ;

‘:A 5 4 + ; :B 3 2 + ; A B * .’ => 45

You can call the sub function NAME with its NAME (see A and B in the sample).

Create SQUARE and evaluate 3^2:

‘:SQUARE # * ; 3 SQUARE .’ => 9

Conditional call


If the last value in the stack isn’t zero it calls NAME else it goes to the next instruction.

This is usefull to create tests and loops:

‘:SA # . 1 – ; :LP SA # ?LP ; 5 LP 0 .’

Count down from 5 to 0 (then stop).

You can use variables:
>NAME (load value from stack)
<NAME (push value in the stack)

‘1 >A <A <A + .’ =>2

You can use many :EVAL call to enter your program (one line per call).
You can use as many i_core engines as you want at the same time (object).
You can execute the whole program (:EXEC) or run it :STEP by step.

:STATE returns 3 when done. You can restart with :STATE(0).

If you have read the description so far, you may have a question.
This sounds crazy… So, why?

I’m working on two games. In the first you have to build a program by stacking graphic items to draw on screen to replicate a drawing with the minimal amonth of items. In the second, some robots fight together using genetic algorithms to evolve (by sharing part of their own code to create new ones).

I think I can share this library and my interest in doing this.


VCT from PICO-8 to Monkey2

For the PICO-8 Jam#2, I have done a game : “VCT”. You can play it here or download the cartridge (below).


Now, I’m working on a enhanced version using Monkey2. The first step was the translation of the main methods : ¬†_init, _update and ¬†_draw. For this, I have made a basic version of the VCT “engine” (which uses vectors to ¬†draw and animate) with pico-8. You can use left, right, up keys (or a gamepad) to test. The cartridge and explanations are available (or will be soon) ¬†in picozine#5.


Then I started to write all the required stuff to produce the same with monkey2. The result is pretty good. I have to polish the switch between full screen and window mode. You can download and compare : windows binary (auto-extractible).

Right now, I’m sure Monkey2 is the good tool to go further.
Stay tuned, I’ll post updates in the next coming weeks about this.


After spending some months, working on¬†and not updating codyssea, I’m back here. I have discovered a new great language done by Mark Sibly : Monkey2.¬† It’s free, opensource and fully fonctional. I’m working on the translation of a game made with pico-8.


The submission period for the ¬†first PICO-8 JAM #1 will end soon (finishes at 24:00 PST on the 29th). More information are available on this page. The subject is the¬†rain. I didn’t have much time this week, but really wanted to do something for the first pico8 jam. So I made a cartridge: pluere.


If you don’t have PICO-8, you can have a look here.