i_editor 1.5

i_editor-p8

. 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

pico-8_1

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
pico-8_0

/!\ WARNING:
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).

i_editor

i_editor-p8

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

pico-8_7

pico-8_8

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

self.vm:step()

to

i=4
while i>0 and self.vm:state()!=3 do
self.vm:step()
i-=1
end

i_core + turtle

i_turtle-p8

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 😉

jihem

 

i_core

i_core-p8

 

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

?NAME

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.

jihem