Despite the unassuming version number of 0.1.11, this update marks something of a milestone: The core of PICO-8 is now feature-complete, with API and specifications that are likely to remain fixed. Before it becomes entombed as a read-only blob of C code however, there is still some time before beta to address any issues that crop up. Let's see how 0.1.11 works out and what points of friction emerge.
One of the goals of PICO-8 is to create a stable, familiar medium in contrast to the shifting sands of modern software development. Instead of growing by changing the core of PICO-8 over time, I'm aiming to settle on a minimal, eternal component that can be built on top of (improved tools and bbs integration), extended sideways (extra ports / host platform support), built out from the inside (making useful snippets and carts!), and around (nicer BBS, cartverse, documentation, resources and community events).
Multicarts can be created the same way as exporting HTML -- just add up to 15 .p8 or .p8.png filenames at the end of the EXPORT command. Bundled carts behave just the same as local files -- they can be RELOAD()ed, CSTORE()ed to, and chain loaded with LOAD(), using the new breadcrumb and parameter features explained below.
Until 0.1.10, each of the 32 notes in a SFX were internally described with 15 bits: 6 for pitch, 3 each for instrument, volume and effect. 0.1.11 adds one extra bit to round out the 2 bytes: "SFX instrument mode" that can be set by toggling the button to the right of the instruments list.
When it is set, the instrument buttons turn into indexes 0..7, and when placing notes you'll see the instrument index appear green instead of pink. Instead of playing the built-in instrument, these notes will trigger the SFX of that index. In other words, SFX 0..7 are acting as instrument definitions. Each note will advance at the same speed as the definition, with the pitch shifted (relative to C-2), the volume multiplied, and the effects layered on top of each other. This can be used to reach a greater range of pitches, create per-note changes in texture and tone, and set up detailed volume envelopes.
For example, FILLP(4+8+64+128+  256+512+4096+8192) would create a checkerboard pattern.
The default fill pattern is 0, which means a single solid colour is drawn.
An additional bit 0b0.1 can be set to indicate that the second colour is not drawn.
You can now organise your code into numbered tabs. They are not separate files, but rather the same block of code chopped up with special markers (internally: "-->8"). Hovering over a tab number displays the first line of code if is commented, which can be used as a makeshift method of naming tabs. To remove the right-most tab, just delete all of the text in the tab and then move off it.
Editing operations like undo, search and selections apply per-tab. It isn't currently possible to search across tabs -- this will be added later along with improved error messages that span multiple tabs.
This will execute each line of build.p8 as if it had been typed in from a fresh boot of PICO-8, but without ever opening a window. It isn't truely headless yet because it still requires SDL2 (along with the video/audio driver) -- e.g. you can still play sound from it. I'll look at improving this in the future for people who want to make twitter bots and whatnot.
It is also possible in 0.1.11 to export the .js file separately (EXPORT FOO.JS) so that it is easier to work on the accompanying .html in the same folder as the exported cart.
An extra per-cart menu can be accessed from splore by pressing the menu button (X and O still immediately launch the cart as before). This menu allows you to open the cart's BBS thread, remove it from favourites, and open a minimal options menu. The options menu includes SHUTDOWN which allows PICO-8 to be used from start to finish with only a controller (in -splore mode).
Extra splore tip that I forgot to mention in the docs: instead of typing SPLORE, you can use just S.
There are many adjustments to the cost of calling api functions in 0.1.11. Some of them are due to fixing bugs including the ability to trick PICO-8 into giving back unlimited CPU cycles (!), some are to make costs feel more consistent with each other, to more accurately reflect the real world cost of the host machine (pffft -- like that matters), and finally to give a small bump to graphically intensive carts now that making 60fps carts is becoming more common.
Use LOAD("#45481") to load a cartridge directly from the BBS. The number can (and normally should be) the containing post id, (not the id of the cart itself), in which case the most recent version of the cart is fetched. This can be called from a running cartridge, in which case the cartridge is immediately launched.
The third parameter to LOAD() is an arbitrary string up to 1024 chars long that can be read by the receiving cart with STAT(6). When using a breadcrumb to get back to a cartridge, the parameter that cartridge was initially run with is restored.
Fixed: Preprocessor bug regressions: "if (..) or", "a.b -= c - d"
Added: extcmd(): audio_rec, audio_end to record all audio output.
Fixed: Preprocessor bugs: "a+=1+2\n*3", "a+=(1)ba=42", "a[(1)]+=1"
Fixed: Preprocessor performs replacements inside a string printed with ?
Woah, that is a lot of changes! Thank you for all! I really enjoy code tabs! Also, I'm really happy, that pico-8 will go into beta soon!
I'm already in love with the Code Tabs!
I've been thinking for a while now that, with this functionality, we can essentially create mini "PICO-8 Internet", where each cart can be the entry point to other cart "pico-sites", which link to other cart/pico-sites... etc. etc.
Some carts could be like mini websites (info about a topic/yourself/etc. perhaps with code examples/tutorials/etc. all linked together by Post/Cart ID's.
I'm picturing something like a cross-between the old Teletext/Ceefax system that used to be on TV's (pre-internet) and kinda like a good ol' dial-up BBS system. Where you have a few linked carts that represent your mini-site and other people's carts (in this whole Cartverse) can offer up links to yours.
I would trade my soul in for what Liquidream is describing.
Maybe it's even time to make a multicart OS, with browsers and all kinds of stuff!
kinda like a good ol' dial-up BBS system.
Someone needs to make a Tradewars client.
btn() with no parameters returns the same as btnp() // doesn't affect many carts, but is very confusing!
A mini cart internet, yes! There is a lot to take from this analogy -- homepages, hyperlinks, webrings all transfer in cute ways. The parameter strings in this context act like everything after the '?' in web urls, which is why the they are restored when popping back up the stack of previously visited carts -- they are part of the locator.
Something that feels like door games (with or without the cartverse) is something I'm also indirectly aiming for. Expandable MUDs, board games, turned based strategy games. It would be great! The online scores scheme is designed to be abused in order to store small amounts of persistent world data so that we can make such things.
0.1.12 won't be a very big update -- likely sometime in December to scoop up leftover bugs, add some html templates and an in-game options menu.
Any chance of a transpose argument to sfx(), now that that's available for instrument purposes? It'd be nice to be able to give pitch-based feedback (for, e.g., a vehicle engine noise) without using up a bunch of sfx for the purpose.
Please take a peek at this...?
Yes! @zep Congrats on this update! Really excited about this.
which is kinda broken now.
EDIT: oh, just saw it'd be part of next version bugfixes, cool then!
also btnp() bit 6 is gone (menu button). it could be used with poke(0x5f30,1) to enable a custom pause menu.
The cartverse in a way solves the mutli-cart problem for BBS carts. Can't partially load data from another cartridge but can break up your game into multiple carts and and have one load the next when you complete the first one.
Please make the editor full-screen on PocketCHIP.
Or at least make the CHIP version load to the console.
We all love Pico-8 for its restrictions. But using it on a PocketCHIP is restrictive enough without being forced to use 128x128.
oh, no...I use the undocumented btnp() bit 6 [start button] + poke(0x5f30,1) for my Zelda game to bring up the map and inventory.
Are we getting a leaderboard system anytime soon? Like just a way to upload high scores to the BBS and download the back to the cart? Or some sort of really low-level networking would be cool too.
This is super cool, started playing with it on my retropie rig.
Being able to exit without using a keyboard or forcing a reboot over putty is AWESOME!!! It fits perfectly into my retropie now!
Unfortunately I'm having a weird bug with the audio where it just cuts out every 10-15 seconds. I don't remember this happening on the last version I used, so it may be new.
Thanks for the hard work, this cartverse stuff is going to be AMAZING.
Oh, I have to use parentheses and commas when using CLS and SPR now! That was a surprise!
What do you mean, Tinglar? Could you give before/after examples?
two of my favorite older carts—Postcards from the Fringe and Endless Sky, both by @electricgryphon—are broken in 0.1.11. Both feature similar visual artifacts and Postcards from the Fringe will occasionally crash on load.
I've seen similar behaviour with the x key on PC. Line keeps jumping to where my mouse is when I'm trying to do any maths involving co-ordinates.
Any update on a Pocket CHIP build?
I mean that, before this update, I could write cls or spr x in my code and have them run. After this update, I have to use cls() and spr(x), instead.
How do I update? I Cant wait to make an OS. Something I wanted to do for so long!!
Oh, really? Lua wouldn't normally let you call a function without parentheses anyway. I suspect he fixed a bug. Bummer, though, it would have been nice to save the tokens.
yes, I got the same problem (the linux x86 is actually a 64bit binary). I want pico8 on my old atom based netbook and this is blocking me.
I really like the -x addition. I've used Pico-8 to draw some stuff and create maps for some c64 tests. It's nice to be able to put the exporting into the build process.
I've only got my iPad here with me now. Does anyone know if -x and stat(6) work together? I.e. is it possible to give the cart parameters from the command line?
Oh, what a great idea. I have an old HP Mini-Note I should be using for Pico-8, silly me for not thinking of it.
But yeah, I'll need a true 32-bit build for it to run, since the thing runs on a Via Nano (atom-like x86) processor.
0.1.11g is now available at Lexaloffle and Humble.
More bug fixes, correct 32-bit Linux executeable this time, and I've included pico8_dyn in all 3 linux versions should you want to provide your own SDL.
Because of improved adaptive framerate handling introduced earlier in 0.1.11, there is much less slowdown on heavier carts running on the PocketCHIP.
There are a couple of features (content filter, cartverse id support) that aren't live yet, but will become operational after the next BBS update.
If there are no serious issues, this will be the last time the file version is bumped for a while, so we can get some future compatibility going again. But you'll need to update to this version in order to play any carts made in 0.1.11g.
Fixed: Preprocessor can't handle glyphs in form: "♥.x += 1"
Background: if I run the app windowed, on Windows 7 x64 in my case, with my monitor set to a refresh rate of 60Hz, it holds vsync as steady as a rock. I can flip between red and green and get a uniform khaki color. No tearing, no dropping, just a little bit of blood from my eyes.
However, if I up the desktop refresh rate to 120Hz, which is becoming much more common among gamers, and which I would prefer to do all of the time, pico-8 starts tearing very badly and dropping frames all over the place. It's a real mess. My eyes have exploded so many times that I've had to ask our waste disposal company for an extra biomass container.
I'd expect it to handle an even multiple of 60 gracefully. I know 144Hz or 90Hz isn't going to work cleanly, but if the desktop is running at an even multiple of 60, it really ought to be able to work flawlessly.
If it helps, the FPS counter wibbles around the neighborhood of 110-115fps, but I've seen it go as low as 107 and as high as 120.
Also, this is irrespective of window size and scaling, and I'm running it on a very capable cpu with an extremely capable gpu.
Thanks for the update so I can use assert(coresume( feels cleaner than the workaround I had been using before to printout errors from within coroutines!
Agreed, big thumbs up for that feature.
I'm very happy with this update.
Specially with the command line option -x.
This will open the way for tool making.
I tried playing sounds with the -x option but it crashes :C.
I hope there will be a way to create a command line utility for playing music only carts.
Was messing around with 0.1.11G in the music editor and I noticed some oddities in SFX editing. Putting a value in the volume column automatically makes a note appear there (usually C1); and then trying to backspace that value or note would result in the entire lineup of notes being bumped up a space, without any noticable way to "insert" a blank note in its' place. The backspacing issue happens on existing notes now, too; so it's not limited to just that. But there doesn't seem to be a way to eliminate accidental note placements in ways that doesn't screw up the rest of the SFX's structure.
Unless I'm missing some new hotkeys now, which I might be. Good thing I had saved before that!
I think the key you are looking for to insert a blank note is Enter.
To delete without moving other notes, you can highlight some part of the note's row of numbers (using Shift + left/right) and then push either Backspace or Delete.
When entering notes and making a mistake, though, I usually just push Up (to go to the previous note) and and then retype the note, because entering new things overwrites whatever is under the cursor.
Ahhh, okay. I was trying "Insert" which wasn't doing anything; and expecting Enter to do the same as the spacebar, to play/pause the section. Thank you!


text:
Mug Shot Monday (continued)
St. John's student gets prison for 'despicable' stalking
A New York man who confessed to cyberstalking his ex-girlfriend, posting her personal information on a prostitution site and mailing her drugs at college in an attempt to get her arrested, was sentenced to four years in prison on Wednesday.
Thomas Traficante, 23, of Seaford, was convicted of "cyberstalking and distribution of a controlled substance" after US District Judge David Larimer found Traficante's actions "despicable," the Democrat & Chronicle reported.
"If you had a modicum of intelligence, you should know that what you did, repeatedly, was despicable," Larimer said.
Raymond Perini, Traficante's lawyer, said they planned to appeal the sentencing. In March, Traficante pleaded guilty to cyberstalking and distribution of a controlled substance.
Traficante, a student at St. John's University in Queens, met his former girlfriend, a SUNY Geneseo student who was not identified, through an online dating website. The two broke up on Oct. 26, 2017.
The spurned lover then started sending his ex-girlfriend and her sorority sisters cryptic text messages telling them "it's not safe out there tonight" and "there are various people among different orgs who have me. My plan is to hurt them," prosecutors said.
At one point, Traficante reportedly used a device to alter his voice, telling the woman's roommates "I'm in the house." The woman changed her cellphone number, but Traficante was able to find the new one and threaten her further, prosecutors said.
In November, Traficante mailed the woman drugs, including cocaine and methamphetamines, to her college mailbox. He then notified police about the drugs in order to set up the woman.
Newsday reported the woman's room was searched but nothing was found. The victim told officers her ex-boyfriend was "controlling." She also showed officers texts from Traficante in which he threatened to share her personal information on a prostitution site if "she did something he strongly disagreed with."
The Democrat & Chronicle reported Traficante posted the woman's information on Backpage.com, under a prostitution category, and she received some 60 calls from men asking for sex. She also said her former boyfriend hacked into her Amazon account and sent her a book titled "I'm Watching You." He also allegedly hacked into her email, cellphone and social media accounts.
The woman also claimed Traficante gained access to her school account and took quizzes under her name, purposely getting her a failing grade. Traficante was also accused of shooting the victim's parents' home with a BB gun.
When police arrested him at his mother's home in December 2017, a loaded AR-15 rifle was found. It was not immediately clear if Traficante had purchased the gun legally. Traficante was enrolled in a master's degree program at the time of his arrest.
Traficante's victim was in the courtroom on Wednesday. Assistant US Attorney Melissa Marangola said the woman was thinking of changing her name after what she endured.
Traficante has been accused of stalking previously. From 2014 to 2015, another woman claimed she was cyberstalked by Traficante, but he was not charged in that case. (Via NYP)
posted by Kenneth M. Walsh at 12:52 AM

redpajama_set_name: RedPajamaCommonCrawl


jQuery select event occurs when a text is marked or selected in text area or a text field. This event is limited to <input type="text"> fields and <textarea> boxes. When the select event occurs, the select() method attaches a function to run.
It triggers the select event for selected elements.
It adds a function to the select event.
Function It is an optional parameter. It is used to specify the function to run when the select event is executed.
Let's take an example to demonstrate jQuery select() event.
Select the text on the box: click and drag the mouse to select text.


Robert Shulman, the former Hicksville postal worker whose spree of murdering, dismembering and discarding young women horrified Long Island a decade ago and made him the Island's first death row inmate in decades, died in an Albany hospital yesterday, state correction officials said.
Shulman, 52, had been recently resentenced to life without parole after New York's death penalty was overturned. Shulman's closest living relatives - brothers Barry and Sheldon, of Long Beach, did not return calls for comment.
"Vengeance is mine, sayeth the Lord," said Ruth Brown, of York, Pa., yesterday in her first words after hearing the man who killed her daughter, Lisa Ann Warner, had died. "Even though man took away the death penalty, he deserved it, and he got it. ... I feel it's the Almighty's justice system."
State Department of Correctional Services spokeswoman Linda Foglia said Shulman, who was serving his sentence at the Clinton Correctional Facility in upstate Dannemora, was transferred to a local hospital on Tuesday, requiring undisclosed medical treatment.
"There was no assault, nothing suspicious. He was having medical problems," Foglia said.
He was later transferred to Albany Medical Center, where he was pronounced dead at 3:15 a.m.. Foglia said Shulman's cause of death, pending an autopsy, is tentatively classified as natural causes.
"He was one of the few, true serial killers that I've ever come across," said former Suffolk County District Attorney James Catterson, who sought the death penalty in the case. "He received the ultimate penalty anyway. He was shut away from society, from anyone, and died alone, and, I'm sure, unmourned." Ten years ago this month, Shulman was arrested inside a cramped and filthy Hicksville apartment that prosecutors called the killer's "slaughterhouse."
Inside, police say, Shulman bludgeoned to death three women - believed by authorities to have been prostitutes - shattering their skulls with a blunt object. Shulman then dismembered his victims - before discarding their body parts in various locations.
In 1999 Shulman was convicted of murdering Warner, 18, of Jamaica, Queens, whose body was found in April 1995 at a Brooklyn recycling plant; Kelly Sue Bunting, 28, of Hollis; and an unidentified woman whose body was found in December 1994 by the side of Long Island Avenue in Medford.
Two other victims, Lori Vasquez, 24, of Brooklyn, and another unidentified woman were found dumped in Yonkers. Shulman was separately tried and convicted for their murders.
Shulman was sentenced to death, but his sentence was nullified by a 2004 Court of Appeals ruling that found part of the state's capital punishment law to be unconstitutional.
Shulman's Hauppauge defense attorney Paul Gianelli said his client's life was one ravaged by mental disease and a tragic childhood. Shulman maintained his innocence when he was resentenced in November.
John Collins, chief of homicide for the district attorney, faced off with Shulman in court that day. "The legacy left by Robert Shulman is one of abject violence and senseless destruction of precious human life," Collins said. "The sooner he is forgotten by the people of Suffolk County, the better."