Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. Let's make a Pi Pico 2 powered video card.

Let's make a Pi Pico 2 powered video card.

Scheduled Pinned Locked Moved Uncategorized
retrocomputing
144 Posts 30 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

    "RAW binary" isn't one of Aseprite's export options, unfortunately, but we have BMP. The resulting BMP file is 240,022 bytes. That's an additional 1,078 bytes. That just so happens to be:

    BMP file header:      14 bytes
    DIB header: 40 bytes
    palette: 1024 bytes (256 entries × 4 bytes)
    ------------------------------
    final data offset: 1078 bytes
    gloriouscow@oldbytes.spaceG This user is from outside of this forum
    gloriouscow@oldbytes.spaceG This user is from outside of this forum
    gloriouscow@oldbytes.space
    wrote last edited by
    #59

    one thing i've been struggling with all evening is how to restart the DMA buffer without inducing some sort of sync-killing delay or jitter

    zachr@infosec.exchangeZ gloriouscow@oldbytes.spaceG 2 Replies Last reply
    0
    • mirabilos@toot.mirbsd.orgM mirabilos@toot.mirbsd.org

      @gloriouscow let’s rather not buy stuff off the “surveillance cop, proud of it and silencing questioning voices” organisation

      gloriouscow@oldbytes.spaceG This user is from outside of this forum
      gloriouscow@oldbytes.spaceG This user is from outside of this forum
      gloriouscow@oldbytes.space
      wrote last edited by
      #60

      @mirabilos do you know how little that narrows it down

      mirabilos@toot.mirbsd.orgM 1 Reply Last reply
      0
      • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

        @mirabilos do you know how little that narrows it down

        mirabilos@toot.mirbsd.orgM This user is from outside of this forum
        mirabilos@toot.mirbsd.orgM This user is from outside of this forum
        mirabilos@toot.mirbsd.org
        wrote last edited by
        #61

        @gloriouscow the raspberry pi foundation, in this case (I have more grievances than just that one, too)

        gloriouscow@oldbytes.spaceG 1 Reply Last reply
        0
        • mirabilos@toot.mirbsd.orgM mirabilos@toot.mirbsd.org

          @gloriouscow the raspberry pi foundation, in this case (I have more grievances than just that one, too)

          gloriouscow@oldbytes.spaceG This user is from outside of this forum
          gloriouscow@oldbytes.spaceG This user is from outside of this forum
          gloriouscow@oldbytes.space
          wrote last edited by
          #62

          @mirabilos Cool! Why don't you go share those grievances in your own thread!

          mirabilos@toot.mirbsd.orgM 1 Reply Last reply
          0
          • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

            @mirabilos Cool! Why don't you go share those grievances in your own thread!

            mirabilos@toot.mirbsd.orgM This user is from outside of this forum
            mirabilos@toot.mirbsd.orgM This user is from outside of this forum
            mirabilos@toot.mirbsd.org
            wrote last edited by
            #63

            @gloriouscow already did

            1 Reply Last reply
            0
            • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

              one thing i've been struggling with all evening is how to restart the DMA buffer without inducing some sort of sync-killing delay or jitter

              zachr@infosec.exchangeZ This user is from outside of this forum
              zachr@infosec.exchangeZ This user is from outside of this forum
              zachr@infosec.exchange
              wrote last edited by
              #64

              @gloriouscow that was kind of a pain when I was doing a similar thing, are you chaining two dma channels? Iirc that's fast but I couldn't make it wait for the frame buffer to be ready so there was some tearing. I also didn't have a lookup table so that would complicate matters

              Here is a writeup (not mine) of some PIO/DMA graphics gymnastics that does involve a lookup table, maybe some of the tricks will be useful: https://dmitry.gr/?r=06.%20Thoughts&proj=09.ComplexPioMachines

              Good luck and I look forward to seeing the updates!

              1 Reply Last reply
              0
              • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                To simulate the OSC pin, I will program another Pico to just generate a 14.3181818 clock.

                "What's my purpose?"

                "You generate a clock."

                bytex64@awesome.gardenB This user is from outside of this forum
                bytex64@awesome.gardenB This user is from outside of this forum
                bytex64@awesome.garden
                wrote last edited by
                #65

                @gloriouscow I’ve done the exact same thing for a VGA 25.175MHz clock. 🙂

                gloriouscow@oldbytes.spaceG 1 Reply Last reply
                0
                • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                  one thing i've been struggling with all evening is how to restart the DMA buffer without inducing some sort of sync-killing delay or jitter

                  gloriouscow@oldbytes.spaceG This user is from outside of this forum
                  gloriouscow@oldbytes.spaceG This user is from outside of this forum
                  gloriouscow@oldbytes.space
                  wrote last edited by
                  #66

                  We have a picture. It isn't perfect - there's some flickery bits - I don't know if dot crawl is the right word. Not sure what's going on there.

                  Driving sync signals with a single image buffer was untenable - it's really difficult to have seamless, continuous DMA on the Pico. Every time you restart DMA there's a discontinuity, and if the thing you're DMA'ing represents every single clock cycle in a video field, inserting extra time messes up your picture.

                  So separate PIO programs generate hsync and vsync, and we restart our now image-only DMA in vsync, just like the OG Glyphblaster does, which we already know works.

                  I think the crawling may be that the color output is not perfectly aligned with the dot clock.

                  gloriouscow@oldbytes.spaceG 1 Reply Last reply
                  0
                  • bytex64@awesome.gardenB bytex64@awesome.garden

                    @gloriouscow I’ve done the exact same thing for a VGA 25.175MHz clock. 🙂

                    gloriouscow@oldbytes.spaceG This user is from outside of this forum
                    gloriouscow@oldbytes.spaceG This user is from outside of this forum
                    gloriouscow@oldbytes.space
                    wrote last edited by
                    #67

                    @bytex64 just out of curiosity what's the derivation of that how how did you drive it with a pico?

                    bytex64@awesome.gardenB 1 Reply Last reply
                    0
                    • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                      We have a picture. It isn't perfect - there's some flickery bits - I don't know if dot crawl is the right word. Not sure what's going on there.

                      Driving sync signals with a single image buffer was untenable - it's really difficult to have seamless, continuous DMA on the Pico. Every time you restart DMA there's a discontinuity, and if the thing you're DMA'ing represents every single clock cycle in a video field, inserting extra time messes up your picture.

                      So separate PIO programs generate hsync and vsync, and we restart our now image-only DMA in vsync, just like the OG Glyphblaster does, which we already know works.

                      I think the crawling may be that the color output is not perfectly aligned with the dot clock.

                      gloriouscow@oldbytes.spaceG This user is from outside of this forum
                      gloriouscow@oldbytes.spaceG This user is from outside of this forum
                      gloriouscow@oldbytes.space
                      wrote last edited by
                      #68

                      I'm starting to think a pico is not the appropriate thing to build a video card with.

                      all my fun ideas always end up with me concluding i should use an FPGA.

                      FPGAs are like the crabs of electronics projects. everything wants to turn into an FPGA if you give it enough time.

                      ldcd@social.treehouse.systemsL gloriouscow@oldbytes.spaceG fraggle@social.coopF jordan@sometimes.socialJ arclight@oldbytes.spaceA 6 Replies Last reply
                      0
                      • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                        I'm starting to think a pico is not the appropriate thing to build a video card with.

                        all my fun ideas always end up with me concluding i should use an FPGA.

                        FPGAs are like the crabs of electronics projects. everything wants to turn into an FPGA if you give it enough time.

                        ldcd@social.treehouse.systemsL This user is from outside of this forum
                        ldcd@social.treehouse.systemsL This user is from outside of this forum
                        ldcd@social.treehouse.systems
                        wrote last edited by
                        #69

                        @gloriouscow is the pico generating the dot clock? EDIT: the same one generating the pixel data

                        gloriouscow@oldbytes.spaceG ldcd@social.treehouse.systemsL 2 Replies Last reply
                        0
                        • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

                          @gloriouscow is the pico generating the dot clock? EDIT: the same one generating the pixel data

                          gloriouscow@oldbytes.spaceG This user is from outside of this forum
                          gloriouscow@oldbytes.spaceG This user is from outside of this forum
                          gloriouscow@oldbytes.space
                          wrote last edited by
                          #70

                          @ldcd Yeah. For the moment.

                          1 Reply Last reply
                          0
                          • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

                            @gloriouscow is the pico generating the dot clock? EDIT: the same one generating the pixel data

                            ldcd@social.treehouse.systemsL This user is from outside of this forum
                            ldcd@social.treehouse.systemsL This user is from outside of this forum
                            ldcd@social.treehouse.systems
                            wrote last edited by
                            #71

                            @gloriouscow oh there's no clock on the CGA port just HSYNC VSYNC and it's an alignment issue?

                            gloriouscow@oldbytes.spaceG 1 Reply Last reply
                            0
                            • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                              I'm starting to think a pico is not the appropriate thing to build a video card with.

                              all my fun ideas always end up with me concluding i should use an FPGA.

                              FPGAs are like the crabs of electronics projects. everything wants to turn into an FPGA if you give it enough time.

                              gloriouscow@oldbytes.spaceG This user is from outside of this forum
                              gloriouscow@oldbytes.spaceG This user is from outside of this forum
                              gloriouscow@oldbytes.space
                              wrote last edited by
                              #72

                              I do have a de10 nano FPGA board. It's in my MiSTer. Which I never use!

                              2ndnaturedev@mastodon.nu2 gloriouscow@oldbytes.spaceG 2 Replies Last reply
                              0
                              • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

                                @gloriouscow oh there's no clock on the CGA port just HSYNC VSYNC and it's an alignment issue?

                                gloriouscow@oldbytes.spaceG This user is from outside of this forum
                                gloriouscow@oldbytes.spaceG This user is from outside of this forum
                                gloriouscow@oldbytes.space
                                wrote last edited by
                                #73

                                @ldcd correct there's no clock line on the video connector. The monitor has PLLs to synchronize to vertical and horizontal frequencies within a certain range. A CGA monitor expects a 15.7kHZ hsync, for example. The signal, although digital in color, is put through analog circuit and so the monitor does not have to sample colors.

                                The Pi in the rgb2hdmi is sampling the color at a certain period within a dot window. If I am writing colors out of phase with the sampling then we will have various flickering going on. Why only in those specific areas? I am not really sure.

                                ldcd@social.treehouse.systemsL 1 Reply Last reply
                                0
                                • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                                  I'm starting to think a pico is not the appropriate thing to build a video card with.

                                  all my fun ideas always end up with me concluding i should use an FPGA.

                                  FPGAs are like the crabs of electronics projects. everything wants to turn into an FPGA if you give it enough time.

                                  fraggle@social.coopF This user is from outside of this forum
                                  fraggle@social.coopF This user is from outside of this forum
                                  fraggle@social.coop
                                  wrote last edited by
                                  #74

                                  @gloriouscow I think it's easy to just default to implementing solutions in software. There are plenty of good reasons why - the tooling is usually better and more familiar, it requires less specialized knowledge, it's often easier to throw together the first PoC and to extend it later.

                                  Often the "proper" solution is that you probably should be working at a lower level - whether that's FPGAs or discrete components. The classic example is using an Arduino to make a blinking light. I don't think there should be any shame in it no matter what solution one uses, but good engineering involves knowing when you've outgrown the current approach

                                  gloriouscow@oldbytes.spaceG 1 Reply Last reply
                                  0
                                  • fraggle@social.coopF fraggle@social.coop

                                    @gloriouscow I think it's easy to just default to implementing solutions in software. There are plenty of good reasons why - the tooling is usually better and more familiar, it requires less specialized knowledge, it's often easier to throw together the first PoC and to extend it later.

                                    Often the "proper" solution is that you probably should be working at a lower level - whether that's FPGAs or discrete components. The classic example is using an Arduino to make a blinking light. I don't think there should be any shame in it no matter what solution one uses, but good engineering involves knowing when you've outgrown the current approach

                                    gloriouscow@oldbytes.spaceG This user is from outside of this forum
                                    gloriouscow@oldbytes.spaceG This user is from outside of this forum
                                    gloriouscow@oldbytes.space
                                    wrote last edited by
                                    #75

                                    @fraggle

                                    I didn't know how to program Picos a month ago, now I do. I will bet good money future me will not be afraid of FPGAs, but they scare current me a lot

                                    1 Reply Last reply
                                    0
                                    • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space

                                      @ldcd correct there's no clock line on the video connector. The monitor has PLLs to synchronize to vertical and horizontal frequencies within a certain range. A CGA monitor expects a 15.7kHZ hsync, for example. The signal, although digital in color, is put through analog circuit and so the monitor does not have to sample colors.

                                      The Pi in the rgb2hdmi is sampling the color at a certain period within a dot window. If I am writing colors out of phase with the sampling then we will have various flickering going on. Why only in those specific areas? I am not really sure.

                                      ldcd@social.treehouse.systemsL This user is from outside of this forum
                                      ldcd@social.treehouse.systemsL This user is from outside of this forum
                                      ldcd@social.treehouse.systems
                                      wrote last edited by
                                      #76

                                      @gloriouscow hmm I wonder if you're seeing some crosstalk between the different lines? Breadboards tend to have a lot of parasitics

                                      ldcd@social.treehouse.systemsL 1 Reply Last reply
                                      0
                                      • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

                                        @gloriouscow hmm I wonder if you're seeing some crosstalk between the different lines? Breadboards tend to have a lot of parasitics

                                        ldcd@social.treehouse.systemsL This user is from outside of this forum
                                        ldcd@social.treehouse.systemsL This user is from outside of this forum
                                        ldcd@social.treehouse.systems
                                        wrote last edited by
                                        #77

                                        @gloriouscow hmm actually I don't think that would do it

                                        ldcd@social.treehouse.systemsL 1 Reply Last reply
                                        0
                                        • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

                                          @gloriouscow hmm actually I don't think that would do it

                                          ldcd@social.treehouse.systemsL This user is from outside of this forum
                                          ldcd@social.treehouse.systemsL This user is from outside of this forum
                                          ldcd@social.treehouse.systems
                                          wrote last edited by
                                          #78

                                          @gloriouscow dumb question but have you checked HSYNC and VSYNC with a scope? I've had some monitors (although HDMI so probably quite different) where I've inverted or neglected one or the other and the PLL still sorta locks and you get an image

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups