Log In  
Follow
dddaaannn

I humbly request a bit of CSS attention for the BBS message editing interface in a mobile browser. The cursor mostly stays visible when typing, but textareas and previews get cut off on the right at mobile widths and I can’t relocate my cursor for edits easily if the text I want to edit is off the screen. It probably just needs a light massage. (I’d suggest a specific CSS change except I’m on mobile rn. ;) )

5
8 comments



The \t control code advances the cursor horizontal position to the next tab stop. However, it only does this when the cursor is not already at a tab stop. If the cursor is at a tab stop, the cursor position does not change. The expected behavior is for the cursor position to move to the next tab stop.

-- works as expected: prints x, advances to next tab stop, prints y
print("x\ty")

-- expected: indents by one tab stop, prints x
-- actual: cursor position does not change, prints x
print("\tx")

-- expected: prints x, advances two tab stops, prints y
-- actual: prints x, advances one tab stop, prints y
print("x\t\ty")

PICO-8 0.2.4b.

1 comment



The typical external editor workflow keeps a .p8 file open in both PICO-8 and a text editor. The author edits code in the text editor, saves the file in the editor, then presses Ctrl-R in PICO-8 to reload and run the new version. The author also edits sprites, map, sfx, or music in PICO-8, saves the file in PICO-8, then reloads in their editor (automatically in some editors).

To prevent a potential accident, PICO-8 has a failsafe that blocks Ctrl-R with a warning message if it detects that the cart has changed in memory since the last time it was saved from PICO-8 and the file on disk has been updated by an external editor. PICO-8 makes no further attempt to help resolve the merge conflict: it's up to the author to rescue the external edits, save the cart from PICO-8, then re-apply the edits.

This failsafe considers the entire cart—code, graphics, sound—as a single document for this purpose. This makes triggering the failsafe common in the typical workflow: even when the author uses the external editor exclusively for code and the internal editors exclusively for art, failing to save changes in one before making changes in the other will block reloads.

[ Continue Reading.. ]

1
2 comments



PICO-8 0.2.3:

  1. REBOOT PICO-8 to clear memory to defaults.
  2. Open the music editor.
  3. Navigate to pattern 63, then select it.
  4. Activate the fourth channel. Set its sfx to 63.
  5. SAVE NONEMPTY.P8
  6. REBOOT
  7. LOAD NONEMPTY.P8
  8. Navigate to pattern 63.

Expected: Pattern 63's fourth channel should still be active and set to 63.
Actual: It is empty.

Expected: The .p8 file contains a music section with 63 default patterns and one non-default pattern.
Actual: There is no music section.

This appears to be a bug in the P8 section truncation logic that omits trailing default (empty) lines of each section. This does not happen when saving as .p8.png. I can set earlier channel patterns and see them show up in the .p8 while the last one is still missing. At some point my messing around restores intended behavior, so I don't know how that works internally. But I can repro with the steps above.

0 comments



The audio print control code can take a number to refer to a specific sfx slot. Given only the number, it plays the sfx in that slot:

-- plays sfx 12 (silent if the slot is empty)
?"\a12"

When followed by a space and additional print material, I expect it to play the given sfx as above. Instead, it plays the standard beep as if no number is present. I can further confirm that it actually stores the system beep in the numbered slot, overriding whatever sfx data was there previously.

-- beeps (expected: play sfx 12)
?"\a12 sup yall"

-- beeps
sfx(12)

When followed by note data, this works as documented: it stores the note data in the given sfx slot, plays it, and prints the rest of the string.

-- stores note data in sfx 12 and plays it
?"\a12s4Xxc1egc2egc3egc4"

-- plays sfx 12
?"\a12"

-- plays sfx 12
sfx(12)

-- beeps (expected: play sfx 12)
?"\a12 sup yall"

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=97355#p)
0 comments



The Clockwork DevTerm is a small portable computer with ultra-wide screen, miniature keyboard, built-in gamepad keys, and a thermal printer. You can buy one configured with a Raspberry Pi core that can run PICO-8 (among other things). I recently live-tweeted my unboxing and set-up. This post is a summary of my review of the device, and PICO-8 set-up instructions.

Clockwork also makes the GameShell, a portable Game Boy-like gaming device. Both DevTerm and GameShell are designed as modular kits that you assemble. As with GameShell, the hardware designs and software for DevTerm are open source. The parts are high quality, the modules are well designed for reuse and expansion, and assembly instructions are easy and clear. The modular design, the breezy assembly process, and the iconic side knobs set the tone: this is your machine, and you can open it at any time.

[ Continue Reading.. ]

9
7 comments



Erroneous-looking interaction between draw y offset and character height in PICO-8 0.2.2c:

poke(0x5f5b, 0x62)  -- draw y=6, x=2
print("shifted\n\n")
-- prints 6 down, 2 over, full text visible

poke(0x5f5b, 0x72)  -- draw y=7, x=2
print("shifted\n\n")
-- prints 7 down, 2 over; text cut off vertically after first row of pixels
-- expected full text visible

poke(0x5f5b, 0x62)  -- draw y=6, x=2
print("shifted\n\n")
-- prints 6 down, 2 over; text cut off vertically after first two rows
-- expected full text visible

poke(0x5f59, 0xa4)  -- char size y=10, x=4
print("shifted\n\n")
-- prints 6 down, 2 over, full text visible

Setting draw y offset to 6 works as expected. Setting draw y offset to 7 appears to change some kind of state that cuts off characters vertically at a fixed height. Setting it back to 6 shows this state persists. Changing character height appears to clear this state.

[ Continue Reading.. ]

0 comments



In macOS (Big Sur but possibly others), there are a few bugs related to the selected system audio output device.

A) PICO-8 uses the audio output device selected by the OS at start-up time, and does not change when a different output device is selected while PICO-8 is running.

Repro:

  1. Select an audio output device, such as the laptop speakers.
  2. Open PICO-8.
  3. Test that audio is played from the laptop speakers. (E.g. draw then play a sfx.)
  4. Change the audio output device, such as headphones, using System Preferences or the Audio taskbar menu.
  5. Retry the audio test.

Expected: Audio should be emitted out of the new output device (headphones) and not the original device (laptop speakers).

Actual: Audio continues to be emitted by the original device.

B) If the output device that PICO-8 detects during start-up is no longer available, audio stops working entirely. In the SFX editor, the note playback indicator is also affected, which might hint at a cause.

Repro:

[ Continue Reading.. ]

1
0 comments



Harvard University's CS50 Games course has a free online version on edX. It's a great class for beginners with some coding experience, and uses Love2D and Lua. Nearly all of the concepts apply to PICO-8 development.

https://courses.edx.org/courses/course-v1:HarvardX+CS50G+Games/course/

It's not too difficult to translate in-class code to PICO-8 equivalent code, but it might be easier to stick with Love2D for the course, then figure out PICO-8 equivalents later. In-class code uses Lua standard library features, all with PICO-8 equivalents. Spreading code across multiple files could be done with code tabs or "#include" instead of "require". They also use a simple third-party object-oriented class package to teach OO concepts. This could be ported to PICO-8 but hasn't been yet.

If there's interest, I'm sure we could pull together a set of support materials for bridging CS50 and PICO-8. For now I'm just recommending the course.

3
0 comments



I'm noticing crackling or popping noises during music playback in the 0.2.0i web player, either on the BBS or standalone web. I cannot reproduce the noise for the same carts in PICO-8 native. For me this is noticeable and unpleasant, discovered in both the recent Pico Driller and Star Anise Chronicles.

Anyone else hearing this? I can try to record it if that helps.

Chrome 81.0.4044.138, macOS 10.15.4.

2
0 comments



Please add volume controls.

This is actually two requests: volume controls for the PICO-8 native apps, and volume controls for the web player (exported and BBS). BBS games in particular are always at full volume, and I rely on web media players to give me a volume setting I can adjust on a per-player basis.

2
5 comments



I'm seeing some new people picking up PICO-8 with the 0.2 release announcements (welcome!) and some discussion of the new visible tabs feature is giving the config.txt workflow some attention. People are tripping on the fact that PICO-8 overwrites config.txt on exit without testing for changes.

I'd like a smarter merge of in-memory and on-disk properties. The app should remember last loaded properties so it can calculate "dirty in memory" and "dirty on disk." DiM only? Update disk. DiD only? Update memory. Both DiM and DiD? Tricky, but maybe this is avoidable if PICO-8 always merges on every in-memory change.

I assume PICO-8 already has logic for preserving comments and resolving weird cases like a property appearing more than once, or not at all, in the file. :)

3
1 comment



I like how I can indent/dedent a block selection with tab/shift-tab, and I like the behavior where it operates on every line with at least one character selected. I notice an edge case that should be addressed: if the first line is indented and I have the intend spaces selected, when I dedent the space goes away but my selection start moves up to the previous line. If I dedent further now the previous line is getting included in the dedent.

6
1 comment



I like the new feature where shift-enter auto-indents. It also adds an "end" statement which is useful for closing blocks.

I'm wondering if it should always do this, or if it could do something more context sensitive. A full IDE would be running a full parser in the background which is probably overkill. A simpler behavior would just scan the current line for block starter keywords and only indent+end if it finds one.

I'd prefer this because I'm likely to get into the habit of shift+enter, enough to do it by accident, and if it always does what I want that'd be better than having to undo and try again.

3
1 comment



Cart #snowysskatingadventure-0 | 2019-12-17 | Code ▽ | Embed ▽ | No License
6

Snowy has skates and wants to help his friend Bunny decorate his tree! Skate the lake to find five ornaments for the tree.

  • Hold X and a direction to accelerate.
  • Press Z ("O") while moving to jump.

Tip: Hold Z ("O") for longer before letting go to jump longer.

Tip: If you get stuck in water, try jumping your way out. Snowy isn't a strong swimmer, but he's a great jumper!

This is my and TimSwast's contribution to PICO-8 Advent 2019. Thanks to everyone who participated, and everyone who played!

6
2 comments



I've thrown all my 32-bit games overboard and upgraded to macOS Catalina. I notice that the current PICO-8 binary (0.1.12c) asks for broad keyboard permissions (read keystrokes in all applications). I assume this permission isn't actually needed (I can deny it and everything seems to work) and this is a side effect of an older SDL macOS interaction. It'd be nice if the app can be configured to not ask for the permission.

If it is used for something I'd enjoy knowing what it is.

3
2 comments



This is a bit obscure and possibly a limitation of SDL, but I notice as of 0.1.12c that if my default audio output device changes while PICO-8 is running, PICO-8 will continue to use whatever output device was the default when PICO-8 started for output, instead of switching to the new device.

For example, if I start PICO-8, then connect headphones, PICO-8 will continue to use the speakers. The rest of the system (at least for apps that don't have this issue) will use the headphones. To get PICO-8 to use the headphones in this case, I have to restart PICO-8.

1
1 comment



The PICO-8 built-in editor supports up to 8 tabs. These are represented in the .p8 file as a single Lua code block delimited with -->8 comments. If I am editing the .p8 file with an external editor but still want to establish tabs for the internal editor, I add -->8 comments manually. If I add more tabs than the internal editor can handle (8 or more delimiters), code beyond the 8th tab is ignored.

It's a pretty edgy edge case to want both external editing and tabs for the internal editor, but I found this behavior surprising enough that I humbly request a tad more thought to it. I would agree that evaluating code that isn't displayed in the internal editor is not the right fix, nor is adding UI to support unlimited tabs. My preference would be to fail to load the file as if it didn't parse, with an explicit error message, or just consider everything beyond the 8th tab as part of the 8th tab.

1
1 comment



The inline code syntax matcher is too greedy. A single instance runs past the closing backtick to the end of the paragraph:

One `two three` four five

One two three four five

Multiple instances in a paragraph help to illuminate what's happening: the styled span starts at the opening backtick but closes at the end of the paragraph, so multiple instances produces nested spans:

One `two` three `four` five

One two three four five

1
2 comments



Chrome 76.0.3809.132, macOS 10.14.6. Cannot repro in Safari. Not sure when this started, but all of the web players on the BBS are blurry. Anyone else seeing this?

Web export from 0.1.12c still works fine, so I assume the BBS web player has an upgraded player with this regression.

1
1 comment





Top    Load More Posts ->