looking to contribute, also some questions (vga, audio, general)


Recommended Posts

This is really fantastic, I have tried a number of VGA boards and the papilio 500k running the ZPUino seems to be the ideal solution for me getting into VHDL and fpga technology. 

While the ISE downloads I have a ton of questions.

A little backstory, I'm an artist that makes interactive installations using projectors and computers with hefty gpus hooked up to external interfaces (usually arduino driven) all running under a few processing or openframeworks applcations managing everything.  I do a lot of interactive scientific simulations with physics engines and particle systems. It's great, and everyone loves the big openGL monsters I create, but there is a  problem in that I cannot sell these things when people inevitably ask me to buy it.  I can't reasonably sell someone my computer lab they see dragged into the gallery.

My goal is to create a standard rig, much like the papilio 500k + arcadewing, that I can create external analog or digital controls, write some cool software, and end up with a plug and play rich media installation where no laptop is involved.

I plan on sitting down with my freshman EE digital design textbook, the zpuino-HDL, and try to build a modified custom .BIT file to load with the papilio loader.


Where can I find documentation about the 8bit 160x120 vga controller?  While going through the zetris and jsw code I see calls to REGISTER(VGABASE,4) macros.  I have a strong C background and I know my fair share of java, but we are closer to the metal than I usually get.  It seems if I want to do a VGA sync so I lose the flicker  I get when I draw to the screen I would mask some bits into a register just right and I would get the desired behavior out of the hardware (ex. wait until previous draw command completed).  I seem to be able to use the values of registers in my code as if they were integers. Is my understanding accurate?

How exactly does the VHDL code and the compiler interface like that?  Where can I find the list of the behaviors of the registers?  Would I cross reference the memory addresses called in zpuino.h and registers.h with the VHDL code for those modules?

Where can I find this information about the behavior of the SID or YM2149 modules?  I have what I have gathered from zetris and jsw, but I'd love the entire reference.

I'm looking to contribute to this project.  I'm really impressed with what I have seen so far, and I would love to write documentation and tutorials while I learn the more advanced concepts.

Link to comment
Share on other sites

Hey Bill,

I just finished a proof of concept project that allows both the SID chip and the YM2149 chip to be played as a synth at the same time. So we are on the same wavelength! I hope to release it on Kickstarter this Monday, and I'd be happy to share the source code with you. I just need a couple of days to get the Kickstarter project released and the source code cleaned up.

In the meantime, the code snippet you probably need is:

#define SIDBASE IO_SLOT(14)

That should let you access the SID chip in the same way the YM chip is used in the project here.

I hope to have more to show very soon!


Link to comment
Share on other sites

Sounds great! 

Is there some sort of standard practice that I am not aware of regarding getting good video performance?  I have a fun little nBody simulation going but there is some serious flicker.  Do VGA draw commands happen asynchronously from the CPU itself?  What could I do to correct the tearing?

Link to comment
Share on other sites

Seems like big VGA operations are not allowed, and the move functions are preferred.  What else should I stay away from?  I'm having trouble testing if too many draws per horizontal line causes flicker...  I see in the VHDL it operates at a specific Hz, I'm going to see what I can do with a timer based interrupt.

Link to comment
Share on other sites

Bill, any chance you can get in 'skype' so we can talk a bit ?

You can find me there with username 'alvieboy'. I'm usually available everyday from 5PM UTC to 8PM UTC.

I'll gladly help you with your project, and explain everything else you need to know.



Link to comment
Share on other sites

I'm going to EyeO Festival (http://eyeofestival.com/) tomorrow.  On Wednesday, during the lunchtime show and tell, I'm going to do an animated slideshow presentation using the Papilio One 500k running ZPUino, about how great the PapilioOne and the ZPUino is.  I'll post pictures when I get back.  =)

I run linux, so no skype for me.  I'll see how it runs in a windows VM.

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.