

Sugarflower's Calendar
I once made a calendar that displays on a console as a school assignment.
I figured it might come in handy, so I’m sharing it here.
Feel free to tweak and use it however you like!
Since it doesn’t rely on an API, it can always display the correct calendar—even when online
overview
- A purely calculated calendar.
- It is not dependent on API behavior.
- Can be used as a widget.
control
- Left and Right to move the month.
- Down to move to today.
- x to enable/disable background transparency.
- z to switch to Sunday start/Monday start
update
- 0.0.3: Available for Monday starts.
- 0.0.2: Improved visibility when background is transparent using p8SCII
I found it difficult to find a specific Cart from bbs://.
So I tried making a tool that can find Carts from bbs:// using part of the name.
Use it in the terminal screen as follows. (Of course, the execution path needs to be set, so it's best to run it in the directory where findbbs.p64.png exists.)
> findbbs pico
I'm sure there will be plenty of ideas to make it more convenient in the future, such as adding a GUI :p

This cart reads the palette from memory and exports the aseprite palette file(.gpl).
Note: It does not work on BBS.
The exported gpl file contains metadata at the beginning for use with Picotron, so it cannot be directly read by Aseprite. Please delete the first line with an appropriate editor and save the file.

Yes! this one line.

Next, open the palette folder in Aseprite using 'Open Folder,' then copy the edited gpl file into the folder. You will then be able to use the Picotron palette (and you will also need to restart Aseprite).
While creating a program that uses Lua tables, I found it troublesome to check values, so I created this.
It is convenient to save it with a name such as dprt.lua and use it by including it.
--If you no longer need the debug display, you can disable it all together --by changing DEBUG_FLG to false. --Also, if you want to display it on the host, set DEBUG_TO_HOST to true DEBUG_FLG = true DEBUG_TO_HOST = true function dprt(v) local function dbg(v) local buf, t, i = "", type(v), 0 if t == "table" then buf = "table{" for i in pairs(v) do if v[i] != nil then buf = string.format("%s \n\t%s: %s", buf, i,dbg(v[i])) end end buf = string.format("%s \n},", buf) elseif t == "userdata" then buf = "userdata{" for i=0,#v-1 do buf = string.format("%s %s: %s", buf, i, dbg(v[i])) end buf = string.format("%s \n},", buf) elseif t == "number" then [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=160665#p) |
I've loved Internet Time ever since I first learned about it in the 1990s.
I'd love to be able to make my own wristwatch like .beat in the future, but for now I'm content with having it run on my beloved picotron.
update
- Reduced screen updates and CPU load.
- Utilized GUI functions to make it behave like a widget.


Thanks to HTML export, it's now possible to run picotron cartridges on a mobile phone.
However, at present the DPAD isn't displayed, and touch operations are replaced by mouse movements, making operation very uncomfortable.
So I wrote the following code to simulate touch operations.
This also led me to notice some strange behavior, but that's another story.
I'd be happy if the picotron itself could support touch operations in the future.

function _init() window{cursor=0} -- Hide the mouse cursor tch = touch.new() -- Initializing the touch structure end function _draw() -- Touch Structure Update. This is necessary to determine touch. tch:check() --[[ *** Wait until it truly becomes the initial state *** Since _init cannot fully initialize, it waits for time to pass in the main program. It seems that the time t() stops in _init, and the mouse position does not change. It seems that time progresses entirely within _draw(_update). This is to prevent unnecessary tap events from occurring because a touch is determined by moving the position of the mouse cursor, and the initial position of the mouse cannot be obtained correctly. There may be a way to avoid this using memory manipulation, etc. This decision statement is clearly a waste of processing. --]] if t() < 0.2 then return end -- Processes when it is determined that a touch has occurred. if tch.tap then splatter(tch.x, tch.y) end end -- [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=156240#p) |
I've put together a way to use the MISAKI font (https://littlelimit.net/misaki.htm) to display Japanese on picotoron.
Currently, only simple functions have been implemented, so there is still a lot to do before it can be used in practical use.
I can't keep up with the work by myself, so I decided to release it here so that it can be used partially. Basically, I think it's fine if you use it freely. (I would appreciate feedback as well.)
*You will need to know the kuten code to display it, but there is a lot of useful information on the Internet about this.
update 250121 - I've cleaned up the code a bit, and made the example code a bit friendlier.
A virtual computer that runs on a fantasy console. I find this very interesting, so I've made it work for now.
Key assignments
[1][2][3][4]
[q][w][e][r]
[a][s][d][f]
[z][x][c][v]
These can also be changed in key.lua if necessary.
0.0.1b
- Minor bug fixes
- Modified to load ROMs as external pod files by drag and drop (Thank you pancelor!)
- Change display from full screen to windowed (to drop the ROM)
How to create a "rom" pod.
store(filepath, userdata("u8", bytelength, romdata))
Specifically, it looks like this.
store("/logo.pod", userdata("u8", 132, "00e0a22a600c6108d01f7009a239d01fa2487008d01f7004a257d01f7008a266d01f7008a275d01f1228ff00ff003c003c003c003c00ff00ffff00ff0038003f003f003800ff00ff8000e000e00080008000e000e00080f800fc003e003f003b003900f800f8030007000f00bf00fb00f300e30043e505e2008507810180028007e106e7"))




- Operation cannot be confirmed online.
If you want to store floating point values ​​in user data (or POD storage), currently using floats in user data or memmaps will not give good results.
My guess is that using floats in user data will be treated as standard in the future.
This program, f32b.lua, is included, and main.lua contains a simple usage example.
It is very experimental, but may be useful in some way.
It may also be possible to improve it and achieve more.
I don't think f32b.lua is fully optimized, but someone could perfect it.
The usage is as follows (contents of main.lua):
include "f32b.lua" --[[ *** If you store it in user data. f32b.lua uses "u8" for user data. Each floating point value uses 4 bytes. In other words, if you want to save two values, create it as userdata("u8", 8). --]] mydata = userdata("u8", 8) -- To set a value for user data, do this: set_value(mydata, 0, -123.45) set_value(mydata, 1, 100.0) -- To extract it from the user data: print(get_value(mydata, 0)) print(get_value(mydata, 1)) -- [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=153082#p) |
function sel_layer(name) local m = fetch("map/0.map") local map_no = 0 for i in pairs(m) do if m[i].name == name then map_no = i break end end if map_no != 0 then memmap(m[map_no].bmp, 0x100000) else error("There is no map data named '" .. name .. "'") end end |
I have saved the aforementioned code as a file named 'layer.lua'.
By utilizing this code, we can load specific map layers based on their assigned names.

To illustrate, imagine a map with a layer configuration as depicted in the following image.
include "layer.lua" function _draw() sel_layer("sky") map(0, 0) sel_layer("house") map(0, 0) sel_layer("tree") map(0, 0) end |


I ported my favorite game for Gamebuino.
It's simple but very nice.
The original punkt is here.
Note: This game is not a complete port of the original punkt.
This was created to create an instruction list.
It will be useful to use spreadsheet software (such as Excel) to understand the whole.
The execution results are copied to the clipboard.
I also tried to get as much information as possible. This will help you find the location of code that references system/lib
.
update
- Fixed an issue where not all elements were being processed.