I am sure this has been brought up a few times already. I would really like to see a new version of pico-8 have a widescreen option.
120x160 would be much better, although I am not sure that is possible. Now that people love pico-8, and they want to expand it to the physical world with LCD screens, it seems time to update the aspect ratio from 4:3 to 16:9
I understand it is meant to be retro aspect of 4:3, but that also means it is not fully compatible with 99% of flat screens! I have found a few 8" screens that are 4:3 ratio, but why spend $100 on a screen, just to remove the the black bars? This creates an retro game problem of having empty screen space on each side, making the player wish their screen was a bit taller, every single time they go to play a game. If there were more pixels instead, say 120x160, then the older 4:3 ratio games could have the black bars on the side, and still be compatible with the new, widescreen version.
I feel like this is the natural evolution of what pico-8 users want: we want to use any screen without compromising our screens potential. The new rpi 3 has 2GB of ram, so maybe 120x160 would run well, or maybe the engine is at it's limitations already. I am very happy pico-8 is now catching on like wildfire! I feel that widescreen support would make it unstoppable!
What do you guys think? 120x160, 96x128, or let's be stubborn and stick with 128x128, potentially decreasing new user appeal.
Thanks for the reply Sunsailor, we need more people to show an interest in destroying blank screen bars!
I really think the home hobbyist arduino, rpi, C.H.I.P users are going to jump on the pico-8 train now. We just need makers and hackers to be able to use their little screens with pico-8 resolutions. I have 5 small screens and 3 raspberry pi's that need to be using pico-8, yet none of those screens are square, they are all 16:9 aspect ratio. There are no affordable options that properly fit the pico-8 resolution, it really is retro in that way!
I considered buying a little portable tv from the 80's just for it's 4:3 aspect ratio. Honestly, it's like 1 out of 10,000 screens are 4:3 these days.
Neither 160x128 nor 128x96 are 16:9 ratios: 160x128 is 5:4 and 128x96 is 4:3. Pico-8's is square, so even with a 4:3 screen you'd still have black borders.
Pico-8's framebuffer takes 8192 bytes: 128x128x4 bits per pixel. Pico-8's entire cart memory is 16kb, and the framebuffer occupies the back half of that; so technically, expanding the total memory to accommodate a larger framebuffer wouldn't affect the rest of the memory layout.
But IMO it would be interesting to permit the use of nonstandard video modes as long as they squeezed into the same 8192 bytes: e.g. 170x96 is a near-16:9 resolution, and fits into 8192 bytes with 32 bytes to spare.
Thanks for the info Viggles. I am glad the memory permits more. It seems the ideal resolution would be 120x160. Small screens for RPI, and Arduino, usually follow this format: 240x320, 320x480, 480x640. So 120x160 would be a perfect low resolution to be scaled up, as it is half of the next size up, and still within memory constraints I think.
What does everyone think? Does 120x160 sound like an improvement? I think Zep is underestimating the hackaday.com crowd. This is gonna blow up real fast! All we need is a little more flexibility, like small screen compatibility and networking for multiplayer. With those 2 (very complex) improvements, PICO-8 would be "the Raspberry Pi of software" and create a huge following! Seriously, this could be a very big deal, replacing software like Scratch and Stencyl for beginners, while still being complex enough for experts!
I was wrong, pico-8's total RAM is 32kb of which the last 8kb is framebuffer. You can see the memory layout here: https://www.lexaloffle.com/pico-8.php?page=manual (search for "memory layout").
To be clear, the other 24kb stores cart data and runtime state: it's not like there's a vast empty pool that's waiting to be filled by a larger framebuffer. What I meant was that the 32kb limit and the 128x128 resolution are arbitrary, so there's no technical reason it couldn't be extended (and the extra space at the end reserved for more framebuffer) without affecting the rest of the memory layout. Which is important: pico-8's memory is directly addressible, so you can read and write any byte in that 32kb.
But pico-8 is all about toothsome constraints; impractical as it is, the square frame impacts game design in important ways, and is one of the things that gives pico-8 its distinctive flavour.
I'd love to see a mode, perhaps only accessible through a poke, that extended each leftmost and rightmost pixel to the physical edge of the screen, or perhaps just changes the colour of the background. I feel that might be a good compromise.
I agree with jayminer, border graphics would be better (really cool too).
To allow for a wider screen would mean that any people who want to use lower resolution square displays (possibly such as a CRT for nostalgic reasons) would be boned.
I don't agree with this - having black borders is just a natural result of playing a retro game. I don't notice them, eg. when I play an emulator game. The active part becomes the new "screen".
I think it's the opposite of what Pico people want, since it moves away with actually running Pico8 on old style hardware.
And then why stop there? Why not add a few more colours? Bigger sprites? Multiple code files? You move further and further away with each "feature" from what Pico8 is meant to be.
So not many people want a 120x160 option? There is no reason to add extra features beyond that. I just think the raspberry pi and PocketCHIP communities would really appreciate this feature. It's just basic compatibility: if you want to build a custom PICO-8 console, there would actually be screens that fit. I would go purchase a PocketCHIP right now, if I could use more of the screen real estate. The pocketCHIP could fit 2 PICO-8 screens side by side using the one screen it comes with -- I would be into that if it was an option!
An ebay search returns 1270 listings for screens ranging from $10 to $60. None of them would display PICO-8 correctly. If we had the option to use 120x160, than 80% of those screens would be great for custom-built consoles.
There's plenty of 128x128 displays... and you can always use anything bigger and stick a bezel over the unused parts.
I'd argue in favor of keeping it fixed it at 128x128 along these lines:
- It's standard across all carts, so all carts fit everywhere
- It's square, so beginners have less to think about
- It's a viable minimum for multiple display aspect ratios
- Full screen experiences and dedicated hardware are far from the only intended use cases
- Rotatable devices can orient the display without squishing
The border fill idea is compelling, especially to not match the game background without spending game real estate on a border. An off-palette dark grey might suffice. When running in the native OS's full screen mode, go full on the narrow display dimension, center, and fill the wide dimension with dark grey. Right now it fills with black (and I'm not sure it gets the centering right on all native OSes and displays).
The display (resolution, aspect ratio, color palette) is the most defining quality of Pico-8. I'd be very surprised, and a little bit sad, if there were ever an option to change the game-accessible display area. That all games share the same visual and audible qualities is a critical pillar of the Pico-8 community.
"stick a bezel over the unused parts."
That's exactly what I did for a desktop arcade I built, it only plays older games. In fact I brought the walls inward and hid some of the width inside the walls, the bezel does the rest, you wouldn't know it has a widescreen in it.
"I would go purchase a PocketCHIP right now, if I could use more of the screen real estate."
breadbeard I think if that's the only thing stopping you then you're not really into the nature of Pico-8. I think if every display in the world was widescreen then it might make sense, but it seems for handheld devices, widescreen is not as important, as the availability of those 128x128 screens would seem to indicate. And these cheap Chinese game knock-off systems https://ky-ic.en.alibaba.com/product/581508672-801791434/HG_815_TERMINATOR_1_8_Pocket_TFT_Game_1_8_INCH_TFT_20_Funny_Games_Business_Cashcow.html
Pico 8 would be awesome if it could exist in a cheap device like that but at the moment it seems the specs are picked on what's fun and low spec, and not what cheap parts are available. So a cheap dedicated device isn't here yet - the Chip still emulates the Pico like our desktops do, because it's powerful, not cheap.
Also widescreen kind of doesn't "fit" neatly into memory architecture - if the Pico-8 was a real device, there would already be specific resources devoted to 128x128 and making it wider would mean making the device more expensive or taking rows of pixels away from the height.
As for the Chip, they could have done a 4:3 screen but they went with widescreen, so we'll see how that works out for them and Pico-8. I guess they need to support modern computer applications, games and movies.
Just an aside; it looks very obnoxious when requesting a feature to call it a "fix", implying that the product is broken and not behaving the way it was intended (when it actually is).
Nothing is broken. I am amazed by pico-8 the way it is. I am just being idealistic, that doesn't mean I don't appreciate pico-8. I did not expect such defensiveness, I just wanted to throw some ideas out there, and see what this forum thought.
The conclusion seems to be:
1 Yes, 10 No
Devs take note, nobody wants widescreen. The color border sidebars is a good idea though! Maybe for the pChip version?
I considered hacking around by letting the program print pixel data for an extra 128x128 screen on the right of the actual screen. Another program would read that data and shows the extra display on the right of the pico-8 window.
Printing pixel data sounded crazy, but on the network thread, https://www.lexaloffle.com/bbs/?tid=2718, jabyrd3 even suggested to use communication via an audio channel. We could also use that for the extra screen, but obviously that would bother the user with extra audio.
Pretty sure ZEP isn't going to change his favored and cosy 128x128 for anything.
If you remember the live conversation video he gave at the seminar.
"One choice you can remove is which way you can put your action."
"No primary axis."
I'm a new user, all this is fascinating. I really like what I've seen of Pico 8, and it's quite similar to a retro system.
But: I've got to say being limited to a square in an HD world seems like Problem #1.
Here's a thought - have a run mode with non-square pixels, which would fill in the space without changing existing Carts, and minimal change to main code.
Other ways to fill the space include - zooming the 128, to lose some on the top and bottom! but fill the sides.
( depending on the Cart, this would be a problem or not. )
duplicating the edges to fill the empty space,
As for actually adding to the code, real 8 bit systems had various graphics modes added later.
If the Cart doesn't change the mode, there's no difference. If it does, then you can draw wide if you want!
As the screen is 128x128, provided ZEP releases his cosy space, it should be possible to have the following resolutions with no change to the 8k memory it is stored in.
+ 128x128 (8192 bytes) 1x1 DEFAULT SQUARE + 146x112 (8176 bytes) 4x3 RECTANGLE + 112x146 (8176 bytes) 3x4 TALL RECTANGLE + 182x90 (8190 bytes) 2x1 WIDESCREEN + 90x182 (8190 bytes) 1x2 PORTRAIT
Yeah if you didn't mind losing pixels to change your aspect ratio you could just use
clip(...) at the start of your game and only use a central slice.
There was a game a few months ago - I've forgotten what it was called, it was a metroidvania staring a green dragon, but it had half the screen as hud and the other half as game so the game was effectively wide-screen since the gameplay was in 128x64 resolution.
Absolutely, Davbo. I've already cordoned off the top and bottom for static information in my carts.
If you want to do a perfect 4x3 center, that would be: 128x96 where the pixel range is 0x16 to 127x111.
For widescreen that would be: 128x64 where the pixel range is 0x32 to to 127x95.
-- demonstrate clipping off -- regions for 4x3 display cls() for i=1,3 do if (i==1) clip(0,0,128,16) if (i==2) clip(0,16,128,96) if (i==3) clip(0,112,128,16) for j=1,200 do circ(rnd(128),rnd(128),7,i) end end
Hope This Helps !
[Please log in to post a comment]