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.
  • tubetime@mastodon.socialT tubetime@mastodon.social

    @gloriouscow keep in mind the descender behind the edge fingers will prevent this card from fitting in a 16-bit slot. you might want to pull that back.

    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
    #54

    @tubetime I mentioned that later!

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

      @Kroc Oh, believe me, I know all those guys (hi @polpo) and they've been a huge help already in making GlyphBlaster so far.

      polpo@chaos.socialP This user is from outside of this forum
      polpo@chaos.socialP This user is from outside of this forum
      polpo@chaos.social
      wrote last edited by
      #55

      @gloriouscow @Kroc 👋

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

        I own a lot of ISA cards and I took measurements from several video cards, and there's no real standard - things vary a lot. You'll notice on this particular layout, the board edge dips down to give the most usable real estate after the end of the 8-bit ISA edge connector.

        Unfortunately this means you can't plug an an original IBM CGA into your AT. We'll probably want to avoid that limitation. With a Pico replacing most of the logic on the board I don't really think we're going to need a full-length card in the first place.

        polpo@chaos.socialP This user is from outside of this forum
        polpo@chaos.socialP This user is from outside of this forum
        polpo@chaos.social
        wrote last edited by
        #56

        @gloriouscow I’ve found the drawings in the EISA spec (https://picogus.com/docs/isa/EISA_Specification-v3.1.pdf) to be the closest thing to actual cards I’ve seen BTW

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

          With a full board though, we could have a separate microcontroller that just handles the Wi-Fi. Maybe another RP2350? Maybe an ESP32? STM32 lol? I don't know. Worry about that later.

          polpo@chaos.socialP This user is from outside of this forum
          polpo@chaos.socialP This user is from outside of this forum
          polpo@chaos.social
          wrote last edited by
          #57

          @gloriouscow I’m pretty happy with my decision to use an ESP32 on PicoIDE. It’s a little awkward dealing with a different SDK and toolchain but kind of fun?

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

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

            This is going to be a long thread that either ends in glorious triumph or hilarious failure.

            #retrocomputing

            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
            #58

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

            gloriouscow@oldbytes.spaceG 1 Reply Last reply
            0
            • 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
                                          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