cast:
- change dimension of userdata buffer for 2d operations
buffer=userdata("u8",4096) -- get a 8x8 sprite out of it sprite=cast(buffer,"u8",8,8,1040) |
note: not sure how GC can track these chunks - ok to have that as weak references only.
-
matmul with stride
align with other userdata operations - all ops to allow for source index
use case: array of vectors referenced by index
big_array=userdata(‘f64’,4,500) …. indices = userdata(‘i32’, 4) indices:set(0, 3,89,0,75) out=big_array:matmul(m, indices) |
-
min/max
note: can be done with sort (but overkill) - dot:
cannot operate on partial userdata
🄿🄸🄲🄾🄿🄷🄾🄽🄴
PicoPhone is a lightweight open-source multi tool widget designed to run in Picotron's desktop2 and to use as less CPU as possible. https://github.com/369px/PicoPhone
It aims to completely replace your smartphone and give you back the focus you need while completing your gems. Just load #phone
in the Picotron terminal to get started!
Latest version: 0.5.35
NEW: Automatic updates at boot-up!
PicoPhone now checks the BBS for updates!
So you never miss the latest features.
I've made a video on how I auto-update here:
https://www.youtube.com/watch?v=88nRTLXdAGs
NEW MiniApp: Control Panel!
Do the boring stuff with a click!
A simple animated wallpaper or screensaver. Two sides locked in an eternal battle.
The two colors are taken from your current desktop theme.
Inspired by the web version by Koen van Gilst, with some code snippets being adapted from it.
Save as wallpaper
If you haven't already, create a user wallpaper directory in /appdata/system
. Changes to the system wallpapers won't persist across a reboot.
cp /system/wallpapers /appdata/system/wallpapers |
Load and save the cart.
load #pong_wars save /appdata/system/wallpapers/ |
Save as screensaver
If you haven't already, create a user screensaver directory in /appdata/system
. Changes to the system screensavers won't persist across a reboot.
(Access it from BBS with load #miditron-0
)
Miditron!
The first midi-to-picotron conversion tool!
This tool allows you to convert .mid or .midi files into .sfx files used by the Picotron synth tracker.
Just drag and drop the desired midi onto the window, and voila! Your midi is transformed into a .sfx file, conveniently placed onto your sfx folder in your current cart~
Beware!! The tool is pretty barebones though! And far, far from perfect. So you might encounter glitched tracks and have to manually adjust patterns and tracks to fit the desired results.
Some handy tips for adjusting your midi files for an optimal result would be:
- Use only 2/4, 3/4 and 4/4 meters; These meters are the most optimally supported by the tool
- Avoid odd-numbered sections of the song (sections are separated by time signature change or tempo change)
- Avoid using .midi with too many simultaneous notes/instruments (Picotron only supports 8 a time)
Want to get seasick while coding in Picotron? I got you covered! I made a Picotron wallpaper based on my latest PICO-8 game Jaw.
Make sure you have already created your personal system folder inside Picotron and copy jawpaper.p64.png to appdata/system/wallpapers/ and/or appdata/system/screensavers/
Go to the system settings inside Picotron and select "jawpaper" as wallpaper or screensaver.
Enjoy.
Update 2024-04-09: Added Icon and metadata.
this game has a nice peel..
controls:
- Up and Down = move the knife/stick
- hold c = move faster vertically
Lore:
After years of practice this now is the final exam, bob has to make it. After failing school, work and college, his only choice was clear. To eat potatoes, that would make him grow bigger and stronger, or so he thought. Life is hard, it was a constant pressure on him, he could not rest a minute. that's how busy he was, peeling potatoes. The problem was there, bob didn't have a proper peeler, or a knife. He had to use a stick (don't ask how its possible). The potatoes were weird as well, there were only huge ones. In fact, he was standing on the potatoes. But after years of training and hard work, it finally came to him. He knew the perfect job for him. So he applied for a job at peelstation, you know, the place where they make potato games. But here comes the twist. His parents were actually giraffes. But to him, it didn't matter, his goal is clear. He needs to get a 100% on this test, otherwise he isn't the potato master. Just imagine the consecutive, it would be eternal shame. This here is the moment, can YOU make it ?
BE ADVISED:
Pursuant to recent directives, all able-bodied citizens over the age of seven are strongly encouraged to engage in our government-sanctioned directional input training simulation. Here, with dedication and diligence, you will undertake rigorous exercises designed to sharpen your combat abilities to their utmost potential. Mastering precise weapon deployment isn't just a task; It's a solemn vow to safeguard our nation's sovereignty and ensure victory. Your unwavering commitment to this endeavor is the embodiment of our collective devotion to defense, security, and the long reach of democracy.
ATTENTION : If your device lacks Pico-8 compatibility, it is your duty to promptly report to the 'Super Earth Treason Tribunal' for further assessment and potential rectification. Your compliance is appreciated.
I think all Retina screens are affected.
The image is a little bit blurry. The smaller the window is, the more blurriness is visible. But it's blurry even in the full screen mode, just much harder to notice.
In order to compare images you may need to download them and open them in a non-blurring-when-zooming-in image viewer. I think the old good MS Paint zooms image with integer scaling.
Picotron on my MacBook is not pixel-perfect:
PICO-8 on my friend's MacBook is also not pixel-perfect:
Pixel perfect image for comparison, made using a different retro game engine called Pyxel https://github.com/kitao/pyxel
Thinking about putting together a collection of free instruments for the community - simple stuff with one or two nodes and one or two envelopes, like this:
...so as to leave a lot of room for modification by users.
What instruments would y'all want in a free patch collection? Right now we have crude versions of:
- violin
- piano
- pipe
- organ
- kick
- snare
- hat
- crash
but a single .sfx file can hold up to 24 instruments, so it feels like we should offer more than eight.
I'm trying to learn myself about bitmap rotation algorithms. I've been documenting my exploration in the attached cart. If you run it in your browser, what you're seeing is the same sprite from the spritesheet being rendered in four different ways:
1) rotating each pixel location via standard sin/cos rotation matrix
2) rotating each pixel location via the 3 shears method
3) rotating each pixel location via 3 shears + a fix for Picotron's rounding during tan() calculations
4) rotation each texture endpoint via standard sin/cos rotation matrix, then drawing with tline3d
Each method is labeled with a title and the approximate CPU usage each one uses when being drawn alone. You'll note that the tline3d implementation is the fastest, but also has the most "holes" along non-orthogonal rotations.
classic screensaver
V0.3 UPDATE: now contains a settings window
running the p64 from filenav will open a window where you can change the settings to this screensaver
the same p64 can be called as a screensaver from the system settings and will use the settings saved on it
main.lua contains screensaver settings program
screensaver.lua contains screensaver code and all info the settings program uses to build itself
you can reuse main.lua and write your own screensaver.lua to make your own screensavers with settings screens
note: to quit screensaver test you need to press esc. this does not seem to work on the embed at the moment.
have fun
I cannot figure out what's happening with btn()
. It seems totally random. I made this cart so you can see. I thought it was supposed to imitate PICO-8's btn()
function, but that's clearly not happening.
Also, if anyone knows how to get data from different controllers, please share. Usually I would do something like btn(btn_num, controller_num)
but with btn()
acting the way it is... 🤷😂
🎮 Join the Picotron Game Jam! 🚀
Are you ready for a week of intense coding and fun? The Picotron Game Jam is here! Code your game in a week (any theme!), vote the next, and see if you can become the community favorite.
👾 Starts: April 10th, 2024
🏁 Ends: April 17th, 2024
🗳️ Voting: April 18th - 25th, 2024
No prize, just glory! Only game submitters can vote, so your game is your ticket in.
🔗 Join now: https://itch.io/jam/picotron-jam
May the best game win!