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.
  • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

    @gloriouscow the 2350 also has an extremely flexible clock tree for micro; each off the gpouts has an individual int/frac divider with duty cycle correction and coarse phase adjustment

    The PLL can also run up to 1600MHz (don't think any of the IO buffers can manage that though) and you can input an external clock to it (I think this is what you're doing)

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

    @ldcd The plan is to drive the ISA board version off OSC, yeah. Can you give a Pico 2 board an external oscillator?

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

      @ldcd The plan is to drive the ISA board version off OSC, yeah. Can you give a Pico 2 board an external oscillator?

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

      @gloriouscow you can clock the system off of GPIN yes, although I don't think you can clock the PLLs off of it.

      (So like if you had an NTSC freq input you could clock a PIO SM off of it or the CPU off of it but you couldn't generate a multiple of it with the PLL unless you remove the crystal and solder a lead to one of the pads)

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

        I can't overstate how useful it is to have a working digital simulation of the thing you are intending to make.

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

        Time to start breadboarding!

        Link Preview Image
        gloriouscow@oldbytes.spaceG 1 Reply Last reply
        0
        • ldcd@social.treehouse.systemsL ldcd@social.treehouse.systems

          @gloriouscow you can clock the system off of GPIN yes, although I don't think you can clock the PLLs off of it.

          (So like if you had an NTSC freq input you could clock a PIO SM off of it or the CPU off of it but you couldn't generate a multiple of it with the PLL unless you remove the crystal and solder a lead to one of the pads)

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

          @gloriouscow I wish you could clock them off of gpclk0/1 but that would have probably been a pain to route

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

            Time to start breadboarding!

            Link Preview Image
            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
            #46

            You know, I just thought of something - the same technique I use in GlyphBlaster of formatting video frames as 912x262 would work for a static test. Except we expand it to 8 bits. That's 238KB which will still fit in the Pico's RAM.

            The lower nibble will drive the RGBI outputs, while two bits in the upper nibble can directly drive HSYNC and VSYNC. We just need to center a 640x200 image in a 912x262 black bitmap, then just paint the sync periods in the overscan.

            Screw boring test patterns, lets go directly for graphics!

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

              You know, I just thought of something - the same technique I use in GlyphBlaster of formatting video frames as 912x262 would work for a static test. Except we expand it to 8 bits. That's 238KB which will still fit in the Pico's RAM.

              The lower nibble will drive the RGBI outputs, while two bits in the upper nibble can directly drive HSYNC and VSYNC. We just need to center a 640x200 image in a 912x262 black bitmap, then just paint the sync periods in the overscan.

              Screw boring test patterns, lets go directly for graphics!

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

              we can represent this with a 8-bit palette in Aesprite. We have our normal RGBI palette, then we have hsync (green), vsync (blue) and hsync-in-vsync (cyan).

              Now I just need a good picture to use. The easiest thing is to take a 320x200 4bpp image from Tandy or EGA graphics, and horizontally stretch it 2x.

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

                we can represent this with a 8-bit palette in Aesprite. We have our normal RGBI palette, then we have hsync (green), vsync (blue) and hsync-in-vsync (cyan).

                Now I just need a good picture to use. The easiest thing is to take a 320x200 4bpp image from Tandy or EGA graphics, and horizontally stretch it 2x.

                Link Preview Image
                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
                #48

                There sure is a lot of 320x200 pornography.

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

                  There sure is a lot of 320x200 pornography.

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

                  I'm gonna use the title screen from 1990's VAXINE by The Assembly Line, published by US Gold.

                  I don't remember anything about this game, but the title graphics are bangin'

                  Link Preview Image
                  gloriouscow@oldbytes.spaceG 1 Reply Last reply
                  0
                  • gloriouscow@oldbytes.spaceG gloriouscow@oldbytes.space
                    • I've written a cycle accurate CGA emulation
                    • I've made a working simulation of the CGA in a digital logic simulator
                    • I've reproduced 80% of the original CGA PCB in KiCad (I really need to finish that)
                    • I've captured digital logic traces from the CGA running demanding demoscene productions
                    • I am intimately familiar with the ISA bus and bus timings
                    • I've designed several PCBs in KiCad already and some of them even worked

                    ...so why not?

                    jrsharp@mastodon.sdf.orgJ This user is from outside of this forum
                    jrsharp@mastodon.sdf.orgJ This user is from outside of this forum
                    jrsharp@mastodon.sdf.org
                    wrote last edited by
                    #50

                    @gloriouscow #doit

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

                      I'm gonna use the title screen from 1990's VAXINE by The Assembly Line, published by US Gold.

                      I don't remember anything about this game, but the title graphics are bangin'

                      Link Preview Image
                      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
                      #51

                      this is our final 912x262 video signal bitmap. The graphics don't actually need to be centered, since we're not trying to sync to VSYNC - we're producing VSYNC, so it can happen whenever. In this case its easier to translate CRTC parameters keeping the active display area origin at 0,0.

                      Now we just need to save it as a raw binary.

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

                        this is our final 912x262 video signal bitmap. The graphics don't actually need to be centered, since we're not trying to sync to VSYNC - we're producing VSYNC, so it can happen whenever. In this case its easier to translate CRTC parameters keeping the active display area origin at 0,0.

                        Now we just need to save it as a raw binary.

                        Link Preview Image
                        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
                        #52

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

                          This wasn't just a spur of the moment decision. I think ultimately, GlyphBlaster just makes more sense as an ISA card rather than being limited to living in the font ROM socket, and I've always wanted to make my own ISA card.

                          Designs for ISA cards in KiCad can be found all over the place, but they usually have other people's projects on them.

                          One thing I worked on previously is making a clean ISA card template in KiCad that you could start a new ISA card project with.

                          Credit to @tubetime as I basically took his EGA card project and scraped everything off of it, keeping the edge connector, and IO plate engineering drawings.

                          Link Preview Image
                          tubetime@mastodon.socialT This user is from outside of this forum
                          tubetime@mastodon.socialT This user is from outside of this forum
                          tubetime@mastodon.social
                          wrote last edited by
                          #53

                          @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 1 Reply Last reply
                          0
                          • 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
                                          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