PICO-8 0.2.0 !

Ça y est : le PICO nouveau (0.2.0) est sorti. J’ai dû faire un gros effort sur le titre pour le pas ajouter une vingtaine de points d’exclamations. Pour être honnête, après le 5e, je me suis dit que cela ne faisait pas très sérieux : j’en ai donc retiré 4.


Les nouveautés les plus visibles sont l’arrivés de 16 onglets, de la possibilité d’afficher les tabulations (aide à aligner le code), l’ajout de deux polices de caractères supplémentaires :  Puny  (minuscule latine => [ctrl]-[p]) et Katanaka (japonais => [ctrl]-[k]).

Les nouvelles fonction ord() et chr() permettent respectivement  de récupérer le code ASCII d’un caractère et le caractère d’un code ASCII, exemple :

Affiche : 97, 128, 65, 204. A noter que le ‘A’ classque correspond au ‘A’ en minuscule (de la table ASCII) et le ‘A’ pony (3e) au ‘A’ majuscule (malgré leur aspect respectif à l’écran).

La nouvelle  instruction   tline permet  de dessiner des lignes texturées à l’écran.  La durée d’attente d’une pression sur les boutons de la manette (ou d’une touches associées au clavier) avec btnp peut être réglée. De nouveaux opérateurs en préfixe d’affection sont également disponibles , exemple  :  ..=   ,   ^=   , etc. L’accès à la mémoire est simplifiée : $<adresse> à la place de PEEK(<adresse>). etc. Les amateurs de tweet  card vont apprécier.

La fonction de parcours ipairs() vient également étendre les capacité du  language.  De nombreuses autres  ajouts et modifications sont également présents, voir liste ci-après :

Added: 8-bit character set with kana, alt font
 Added: ord(), chr()
 Added: SFX / Pattern organiser view
 Added: SFX edit buttons on pattern channels
 Added: tline // textured line drawing
 Added: SPLORE automatically updates BBS carts when online
 Added: Search for similar (shared tags) cartridges, or by thread
 Added: predefined fillp() pattern values assigned to glyphs
 Added: btnp() custom delays (poke 0x5f5c, 0x5f5d)
 Added: "." shorthand command for advancing a single frame (calls _update, _draw if they exist)
 Added: Current editor/cart view is recorded every 3 seconds to [app_data]/activity_log.txt
 Added: Cutting (ctrl-x) and pasting selected sprites while in map view to also adjust map references to those sprites
 Added: Clipboard is supported in the html exports (with some limitations) // load #wobblepaint for an example.
 Added: Can load .lua files as cartridges
 Added: Operators: ..= ^= \ \= & | ^^ << >> >>> ~ &= |= ^^= <<= >>= >>>= @ @@ $
 Added: New demo carts: waves.p8 dots3d.p8 auto2d.p8 wander.p8 cast.p8 jelpi.p8 (use INSTALL_DEMOS)
 Added: Extra pre-installed games: Embrace, 8 Legs to Love (use INSTALL_GAMES)
 Added: Splore cart labels for .p8 files
 Added: Now 16 code tabs (click on the rightmost ones to scroll)
 Added: ipairs()
 Added: SAVE from commandline to quick-save current cartridge (same as ctrl-s)
 Added: BACKUP from commandline to save a backup of current cartridge
 Added: CPU usage widget (ctrl-p while running cartridge)
 Added: Button / dpad states exposed in memory at 0x5f4c (8 bytes)
 Added: Random number generator state exposed at 0x5f44 (8 bytes)
 Added: pico8_dyn version is included when exporting to Raspberry Pi
 Added: allow_function_keys option in config.txt (CTRL 6..9 are now preferred -- will phase out F6..F9 if practical)
 Added: Visible tab characters (draw_tabs in config.txt)
 Added: pal(16,{1,2,3..}) means: use the value for each key 0..15 in a table
 Added: palt(16, bitfield) means: set the colour transparency for all 16 colours, starting with the highest bit
 Added: Options menu for binary exports (sound / fullscreen / controls)
 Added: Shape drawing tools in sprite and map editor
 Improved: Miscellaneous HTML shell / player optimisations and adjustments
 Improved: Lower cpu usage for small foreground_sleep_ms values (changed host event loop & fps switching strategy)
 Changed: This update is called 0.2.0, not 0.1.12d! (grew into plans for 0.2.0, and bumped cart version number)
 Changed: negative numbers expressed with a '-' count as a single token
 Changed: glitchy reset effect does not leave residue in base RAM (but maybe on screen when using sprites / tiles)
 Changed: sset() with 2 parameters uses the draw state colour as default
 Changed: line() or line(col) can be used to skip drawing and set the (line_x1, line_y1) state on the next call to line(x1,y1)
 Changed: vital system functions (load, reboot etc.) can only be overwritten during cartridge execution
 Changed: sqrt(x) is now more accurate, and a little faster than x^.5
 Changed: sqrt(x) returns 0 for negative values of x
 Changed: btnp() delay and repeats now work independently per-button
 Changed: pairs(nil) returns an empty function
 Changed: Default screenshot scale (now 4x), gif scale (now 3x)
 Changed: gif_len now means the length when no start point is specified (used to be the maximum recordable length)
 Changed: (Multicarts) When loading data from many different carts, the swap delay maxes out at ~2 seconds
 Changed: (Raspberry Pi) removed support for (and dependency on) libsndio
 Changed: camera(), cursor(), color(), pal(), palt(), fillp(), clip() return their previous state
 Changed: Can not call folder() from a BBS cart running under splore
 Changed: F9 resets the video, so that multiple presses results in a sequence of clips that can be joined to together
 Changed: color() defaults to 6 (was 0)
 Changed: Backed up filenames are prefixed with a timestamp.
 Changed: Automatically start on the (host's) current path if it is inside PICO-8's root path
 Changed: tostr(x,true) can also be used to view the hex value of functions and tables (uses Lua's tostring)
 Changed: Can hold control when clicking number fields (spd, pattern index etc.) to increment/decrement by 4 (was shift)
 Fixed: HTML exports running at 60fps sometimes appear to repeatedly speed up and slow down
 Fixed: HTML export layout: sometimes broken -- option buttons overlapping in the same place
 Fixed: __tostring metatable methods not observed by tostr() / print() / printh()
 Fixed: Mac OSX keyboard permissions (fixed in SDL2 0.2.12)
 Fixed: Audio mixer: SFX with loop_end > 32 would sometimes fail to loop back
 Fixed: btn() firing a frame late, and not on the same frame as stat(30)
 Fixed: #include can not handle files saved by some Windows text editors in default format (w/ BOM / CRLF)
 Fixed: Exports do not flatten #include'd files
 Fixed: Default window size has too much black border (now reverted to previous default)
 Fixed: Functions yielded inbetween frames occasionally push an extra return value (type:function) to the stack
 Fixed: can't load png-encoded carts with code that starts with a :
 Fixed: .gif output unnecessarily large
 Fixed: .gif recording skipping frames when running at 15fps
 Fixed: printh does not convert to unicode when writing to console or to a file
 Fixed: cart data sometimes not flushed when loading another cart during runtime
 Fixed: Can not navigate patterns with -,+ during music playback
 Fixed: Mouse cursor not a hand over some buttons
 Fixed: Laggy mouseover messages (e.g. showing current colour index, or map coordinates)
 Fixed: Can't paste glyphs into search field
 Fixed: Tab spacing always jumps config.tab_spaces instead of snapping to next column
 Fixed: -p switch name is wrong (was only accepting "-param" in 0.12.*
 Fixed: Code editor highlighting goes out of sync after some operations
 Fixed: Multicart communication problem (affecting PICOWARE)
 Fixed: time() speeds up after using the RESUME command
 Fixed: Audio state is clobbered when using the RESUME command
 Fixed: Audio glitch when fading out music containing slide effect (1)
 Fixed: Toggling sound from splore cart->options menu has no effect
 Fixed: Devkit keyboard works when paused
 Fixed: "-32768 % y" gives wrong results
 Fixed: Replacing all text in code editor breaks undo history
 Fixed: Double click to select last word in code does not include the last character
 Fixed: Weird block comment behavior in code editor
 Fixed: HTML export: cart names can not contain quotes
 Fixed: HTML export: menu button layout under chromium
 Fixed: HTML export: Adding content above cartridge breaks mobile layout
 Fixed: HTML export: Can touch-drag PICO-8 screen around (breaks simulated mouse input)
 Fixed: LOAD("#ABC") does not always immediately yield
 Fixed: Infinite RUN() loop crashes PICO-8
 Fixed: Mouse cursor is not a finger on top of most "pressable" button-style elements
 Fixed: CD command fails when root_path is relative (e.g. "pico8 -root_path .")
 Fixed: poke in fill pattern addresses (0x5f31..0x5f33) discards some bits
 Fixed: After using ctrl-click in map editor, can not modify map outside that region
 Fixed: Shift-selecting sprites from bottom right to top left selects wrong region
 Fixed: Changing GIF_LEN from PICO-8 commandline sometimes breaks gif saving
 Fixed: pget() sometimes returns values with high bits set
 Fixed: Preprocessor: unary operator lhs is not separated in some cases (e.g. x=1y+=1)
 Fixed: Preprocessor: ? shorthand prevents other preprocess replacements on same line
 Fixed: Preprocessor: fails when multiple shorthand expressions + strings containing brackets appear on the same line
 Fixed: Loading a .p8 file with too many tabs discards the excess code.
 Fixed: Map editor's stamp tool wraps around when stamping overlapping the right edge.
 Fixed: Very quick/light tap events sometimes do not register
 Fixed: SFX tracker mode: can't copy notes with shift-cursors before clicking (whole sfx is copied instead)
 Fixed: "..." breaks syntax highlighting
 Fixed: Click on text, press up/down -> cursor reverts to previous horizontal position
 Fixed: CTRL-[a..z] combinations processed twice under some linux window managers
 Fixed: ctrl-up/down to jump to functions in the code editor breaks when "function" is followed by a tab
 Fixed: map & gfx drawing selection is not applied consistently between tools
 Fixed: Using right mouse button to pick up a colour / tile value sometimes also applies current tool

Et oui… tout ça :-)
La mise à jour est disponible sur le site officiel :  https://lexaloffle.com.

Bon code à tous,


FUZE, documentation en français (brouillon)


Je travaille sur une traduction française de la documentation officielle de FUZE. Si vous souhaitez obtenir le brouillon (version en cours), vous pouvez le télécharger en format pdf.

Vous êtes invités à faire suivre vos remarques et commentaires sur twitter (@wdwave).  Il reste encore par mal de travail mais c’est un début :-)



A propos de FUZE…

FUZE4 Nintendo Switch est une application de codage pour Nintendo Switch. Elle a été conçue et développée par une équipe de joueurs, programmeurs, artistes et éducateurs aguerris. Le résultat final est un langage parfaitement adapté aux jeux et applications de codage pour les débutants absolus, mais aussi les programmeurs chevronnés.

Sprite-Show pour PICO-8 sous Windows

En janvier 2020, @s_yanik (pixel artist et développeur PICO-8) a publié sur itch.io un éditeur d’animations. Ci-après le verbatim d’un (court) échange avec l’auteur  :

Yannick, pourquoi avoir développé Sprite-Show  ?

  • Chaque fois que je dessinais un décor pour un jeu ou un personnage à animer, je perdais du temps à tester les animations ou les décors. Puisqu’il n’y avait pas d’outil aussi simple à utiliser que PICO-8, j’ai fait Sprite-Show que j’ai testé avec succès en tant que designer lors du jam Ludum Dare45. (Jouez à Greta-LDd45 sur itch.io et Lexaloffle).

Comment s’utilise Sprite-Show ?

  • Après avoir dessiné vos sprites (comme d’habitude) sous PICO-8 et avoir enregistré la cartouche sous le nom « mysprite.p8 », vous pouvez lancer Sprite-Show. A partir de celui-ci, vous pouvez simplement les afficher sur l’écran où ils vont se déplacer, sauter, voler, etc. Vous pouvez alors décider de les retravailler immédiatement ou de les utiliser dans votre Jeu.

Est-il possible de voir quelques images ?


Mise en situation des animations


Planche de   sprites

Combien ça coûte  ?