Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 02:49 25 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : PicoMiteHDMI framebuffer thoughts

     Page 1 of 4    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 02:41pm 15 Aug 2024
Copy link to clipboard 
Print this post

The RP2350 has 520Kb RAM vs 264 on the RP2040

The PicoMite VGA uses all of the 264 and this limits program size to 100Kb (96 for the USB version). Of the 264K 38400 bytes (37.5K) is used for the VGA framebuffer (640x480x1bit = 320x240x4bits)

So for a 100Kb program size MMBasic is effectively using 226 KBytes. To achieve the performance given in the Pico2 thread I have used the hashed mechanism for subroutine and label search which uses something over 12K so say 240kBytes total

This leaves 520-240= 280K free on the Pico2 with no framebuffer

The question then arises how best to use this? Note that 280K is less than the 300K needed for a full 640x480 RGB332 framebuffer.
Options are:
1: Stay with the 37.5K framebuffer and increase the maximum program size
2: Increase to 75K to give 320x240x8bits RGB332 and increase the maximum program size. In this case 320x240x8 would be a new mode 2 (640x480x2 mode 3?)
3: Increase to 250K to give 640x400x8bits with no significant increase in program size. In this case 640x400x8 would be a new mode 2
4: Increase to 218K to give 640x350x8bits with no significant increase in program size. In this case 640x350x8 would be a new mode 2


I quite like the 3 option as certainly on my 1080p monitor 640x400 automatically scales to full height and near full width




Option 4 also works well on my monitor. The aspect ratio is just greater than 1080p so there is a gap top and bottom but the width is filled and it does allow for a small increase in program size.



Both these images are created by a RP2350 in HDMI with all the HDMI code running on the second processor like the VGA RP2040 version




The image quality and stability is remarkably good considering the flying Dupont leads. Thoughts and other suggestions for memory use appreciated.
When anyone has any RP2350 boards let me know and I'll post test programs for you to play with.



Edited 2024-08-16 00:43 by matherp
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4036
Posted: 03:04pm 15 Aug 2024
Copy link to clipboard 
Print this post

I'm probably being slow, but whilst you talk about program size and frame buffer, you don't mention MMBasic's working RAM/heap ?

And presumably you need two frame buffers if you are also going to have the [ L ]ayer ?

Best wishes,

Tom
Edited 2024-08-16 01:04 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 03:07pm 15 Aug 2024
Copy link to clipboard 
Print this post

RAM/Heap = program size as RAM is used to buffer the program while editing/loading etc.

Things like layers would continue to be 320x240x4 so all mode 2 code would work as before
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4036
Posted: 03:20pm 15 Aug 2024
Copy link to clipboard 
Print this post

  matherp said  RAM/Heap = program size as RAM is used to buffer the program while editing/loading etc.


Right, the tokenized program is in flash then ? - sorry I've slept since I last knew.

  matherp said  Things like layers would continue to be 320x240x4 so all mode 2 code would work as before


IMO for the purposes of games the current weaknesses of the RP2040 based PicoMite which it would be nice to have addressed are:

- Lack of grey in the palette, it would be really nice to have the equivalent of the EGA palette, or even better 16 colours from a choice of 64/256/whatever (including for the layer)
- Another 20-30K of MMBasic heap would not go amiss (plus the continuing ability to use flash-slots as ROM for assets)

I'm of the opinion that for games we shouldn't expect to be able to go beyond 320x240 resolution on either of the RP.

Hope that helps,

Tom
Edited 2024-08-16 01:22 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 03:31pm 15 Aug 2024
Copy link to clipboard 
Print this post

16 colours from choice of 256 is easy. The HDMI will be running at 640x480x8 under all circumstances. The framebuffer maps to two 640 byte linebuffers which feed the output so from 4 to 8-bits via a map table lookup is trivial.
 
Sasquatch

Guru

Joined: 08/05/2020
Location: United States
Posts: 362
Posted: 03:34pm 15 Aug 2024
Copy link to clipboard 
Print this post

I haven't looked into the details of using the second processor with the HSTX peripheral, but I was wondering if it might be possible to implement some type of "Palette" or CLUT between the memory and the HDMI.

This would allow for video modes with fewer bits-per-pixel and still have a wide range of colors available.  For example, 640X480X4bits for a 16 color palette chosen from 8,16, or 24bit colors.  This also allows for some interesting visual effects by just changing the entries in the look up table.

This could also mitigate some of the compatibility issues as the table could default to the existing PicoMite Palette for 320X240 mode.

Just dreaming here, but you never know unless you ask LOL
-Carl
 
Sasquatch

Guru

Joined: 08/05/2020
Location: United States
Posts: 362
Posted: 03:35pm 15 Aug 2024
Copy link to clipboard 
Print this post

LOL, thread moved on while I was typing my post!

Also, your demo image reminds me of the "Maroon Bells" here in Colorado USA.
Edited 2024-08-16 01:44 by Sasquatch
-Carl
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4036
Posted: 03:42pm 15 Aug 2024
Copy link to clipboard 
Print this post

It sounds like a "Boot to BASIC computer" with HDMI, 16-colour graphics, USB keyboard, mouse and controllers and 100+ KB of RAM is within reach with the RP2350, nice .

... of course you can create the hardware and some of us can write the software, but I don't imagine any of us will do much good at promoting and selling it beyond our cosy little niche  .

Thanks for your efforts Peter, I hope you enjoyed your break whilst it lasted.

Tom
Edited 2024-08-16 01:43 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6781
Posted: 03:46pm 15 Aug 2024
Copy link to clipboard 
Print this post

For photos I prefer option 3 judging by your pics. I suspect it would look better on most monitors. Option 4 might look very small on a 4:3 display.

Option 2 has its merits. It might be faster to work with for games as well as giving more free RAM.


The hardware is being experimented with in SL6, Tom. :)  The design in my "I got bored" thread has been hacked about and the video now uses (or has reserved) the 8 GPIO pins that HSRX uses. At the moment it's VGA.

.
Edited 2024-08-16 01:51 by Mixtel90
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Sasquatch

Guru

Joined: 08/05/2020
Location: United States
Posts: 362
Posted: 03:50pm 15 Aug 2024
Copy link to clipboard 
Print this post

  matherp said  The image quality and stability is remarkably good considering the flying Dupont leads. Thoughts and other suggestions for memory use appreciated.
When anyone has any RP2350 boards let me know and I'll post test programs for you to play with.


This is the advantage provided by digital differential signaling, it is very immune to noise, bad cabling etc. it either works or not,  there isn't too much in-between.

I have some RP2350 devices on order.  Likely a week or two before they arrive from Pimoroni or SparkFun.
-Carl
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6781
Posted: 03:53pm 15 Aug 2024
Copy link to clipboard 
Print this post

Sorry - I mis-tryped HSTX as HSRX...
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2350
Posted: 03:58pm 15 Aug 2024
Copy link to clipboard 
Print this post

hi Peter,
   is  720x400 at 70Hz technically achievable? this is what the VGA text mode uses, and allows for 80 columns of text with a much nicer (IMHO) 9 pixel wide font that would look great in the editor. it would require 144k for a 4-bit deep frame buffer.


cheers,
rob   :-)
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 857
Posted: 04:06pm 15 Aug 2024
Copy link to clipboard 
Print this post

  robert.rozee said  hi Peter,
   is  720x400 at 70Hz technically achievable? this is what the VGA text mode uses, and allows for 80 columns of text with a much nicer (IMHO) 9 pixel wide font that would look great in the editor. it would require 144k for a 4-bit deep frame buffer.


cheers,
rob   :-)


Oooo that sounds nice  
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 04:15pm 15 Aug 2024
Copy link to clipboard 
Print this post

720x400 is an old vesa standard and I can find no evidence that it has ever been supported over hdmi. Lots of posts from people who want vga to hdmi converters for 720x400 and no solutions
AND before anyone asks, unlike vga, you cannot do things like 960x540 over hdmi as hdmi needs a clock signal that has to be at a recognized frequency - 5 clock pulses per pixel
Edited 2024-08-16 02:20 by matherp
 
gadgetjack
Senior Member

Joined: 15/07/2016
Location: United States
Posts: 142
Posted: 04:26pm 15 Aug 2024
Copy link to clipboard 
Print this post

I think I like option 4 the best. For most hdmi monitors or tv’s it would look very good.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4223
Posted: 04:35pm 15 Aug 2024
Copy link to clipboard 
Print this post

I see 2 applications. The games, and the control interface.

For games, it is needed to work with layers, framebuffers. The CPU speed did not increase that much to allow for games in much higher resolutio and color depth. So i would suggest keep 320x240 with 16, max 64 colors (222), or palette mode.
But note, video is infinitely memory hungry.graphics cards have 16Gbyte ( NOT Mbyte). Of ram.

For control you do not meed the frame buffers. So pick whatever suits...
Maybe align with CMM2 for geometry.

Volhout
Edited 2024-08-16 02:39 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Sasquatch

Guru

Joined: 08/05/2020
Location: United States
Posts: 362
Posted: 05:07pm 15 Aug 2024
Copy link to clipboard 
Print this post

I'm still cogitating on this, but here is my current Christmas wish list:

Mode 1 : 640 x 480 x 1bit with color tiles.  For compatibility with existing PicoMite VGA code.

Mode 2 :  320 x 240 x 4bit with 8 bit palette?  if the palette defaults to the current PicoMite VGA palette, this would be highly compatible with PicoMite VGA Mode 2 for existing code, games etc.

Mode 3:  640 x 4XX x 4bit with 8 bit palette?

Mode 4:  320 x 240 x 8bit color.  Note that if the hardware is only supporting 8 bit color the CLUT would not be needed but would still be a nice feature.

Anyways, these are just my current thoughts, I guess we will see what is possible or practical.  I am really excited about these developments and can't wait to see what matherp and the community come up with!

And of course, what shall we call the new device?  PicoMite2, PicoMiteII, PicoMite//, PicoMite][, PicoMite)(, PicoMite Due ???
Edited 2024-08-16 03:16 by Sasquatch
-Carl
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9110
Posted: 05:14pm 15 Aug 2024
Copy link to clipboard 
Print this post

  Quote  
Mode 3:  640 x 4XX x 4bit with 8 bit palette?


Hmm, that's interesting - why?
 
Sasquatch

Guru

Joined: 08/05/2020
Location: United States
Posts: 362
Posted: 05:20pm 15 Aug 2024
Copy link to clipboard 
Print this post

  matherp said  
  Quote  
Mode 3:  640 x 4XX x 4bit with 8 bit palette?


Hmm, that's interesting - why?


Well just thinking that 8 bit style games would most likely be at 320 x 240 so personally I don't see much need for 256 colors at 640 x 4XX and it gobbles up memory quickly at higher resolution.  Of course others may have a different opinion, that's why we are having this conversation!

Also, if you can choose the 16 colors from a larger palette, this is still very versatile even at 4bits.
Edited 2024-08-16 03:26 by Sasquatch
-Carl
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1113
Posted: 05:22pm 15 Aug 2024
Copy link to clipboard 
Print this post

  thwill said  

- Lack of grey in the palette, it would be really nice to have the equivalent of the EGA palette, or even better 16 colours from a choice of 64/256/whatever (including for the layer)
...
I'm of the opinion that for games we shouldn't expect to be able to go beyond 320x240 resolution on either of the RP.

Hope that helps,

Tom

Almost like the Atari ST Low-Res mode, (16 colors out of 512), except that we have 40 lines more. the memory would stay at 38.400 Bytes, During image generation, the output must convert the memory values via a pallet.
'no comment
 
     Page 1 of 4    
Print this page
© JAQ Software 2024