Quark-328 - A Single Chip 184x160 VGA Game System for ATMega-328.

Go To Last Post
31 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 2

Continuing the development of my new "Quark" Video Driver, I have now ported it to an ATMega-328.

Even though this 28 PIN DIP Processor only has 2K of SRAM, it can perform the following...

 

- 184x160 or 184x240 VGA with 64 or 128 simultaneous colors on screen.

- Flexible Sprites of any size with full color, including an alpha channel.

- Dual stereo sound with outputs compatible with any computer speaker.

- Atari / C64 compatible joystick input.

 

This is a true bit-mapped Game Engine, not a tile generator.

So far, only 8 resistors and 2 capacitors are needed!

 

I will detail progress in this thread as the Engine is completed.

 

Here is a basic test, showing a 64x64 Boing Sprite moving over a palette screen.

Sorry for the quality... my vidcam hates filming a monitor like this, and I was in a hurry.

To make it look decent, I have to back up and shoot from across the lab, or I get moire lines.

 

https://youtu.be/PMNYFMkyOTY

 

The Transparent overlay is a built-in feature that graphically displays the free cycle time on each line.

This can be turned on when designing games to know when you may risk dropping below 60FPS.

 

It will be nice to have the 32k of Flash to store more detailed Sprites and Background images.

Engine now works on any AVR that can clock up to 36Mhz, and that is a good many.

 

More to come...

Brad

 

** Note to Hackaday **

Please don't post this until it is complete.

The final product will be MUCH more capable.

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Wed. Dec 30, 2015 - 09:25 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hmm...

 

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Doh... there is a "publish" button! I fixed it now.

Will do a much better demo soon anyhow.

 

Hey... how did you get the vid to show right in the forum?

I tried all kinds of options, and it ended up asking me some garb about a drupal server or something!

I can't mess around too much out here, as my Internet is 10x slower than 1990's dialup.

Took several hours just to up that little video form here!

 

Brad

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Tue. Dec 29, 2015 - 04:18 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hey... how did you get the vid to show right in the forum?

Just a screenshot, cropped.

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

you are getting crazier by the minute Brad.......

Wonder what your French friend has to say on this when it is posted.

 

when do you think you have the schematic finished?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

<iframe width="560" height="315" src="https://www.youtube.com/embed/PM..." frameborder="0" allowfullscreen></iframe>

 

Is the "shadow" to the left of the ball intended?

 

(I copy/pasted the embed code for your video into the message. Did not work.)

274,207,281-1 The largest known Mersenne Prime

Measure twice, cry, go back to the hardware store

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

>(I copy/pasted the embed code for your video into the message. Did not work.)
Let me try disabling JS first:

 

EDIT: Hey whaddaya know!

EDIT2: Boo.  Editing the post with JS re-enabled purges the embed code.

EDIT3: Here we go again:

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

Last Edited: Tue. Dec 29, 2015 - 02:53 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Eureka!

 

Now if only Michael's web team can figure out how to fix 'Add Media', this won't be necessary.

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Cool, let me know what you did to get the video into the post!

On the topic of adding media, does anyone know what a "drupal" is, and why I might want to select it?

 

Here is a preliminary schematic of Quark-328 as of the last video.

I am going to experiment with 128 colors, by adding a 7th bit to the DAC to create a "Half-Bright" mode.

 

 

The "shadow" behind the ball is a demonstration of what I call the "Visual Cycle Display".

You can enable this in the Video Driver when you are designing a game, to help determine how many free cycles are left.

This neat feature just lays a semi-transparent series of lines over the screen representing how many cycles are used.

 

As you can see, where the Ball Sprite is drawn, the lines reach further to the right of the screen, representing used cycles.

Because I am actually decompressing the bitmap on the fly, it uses a lot of cycle time.

This compression is due to the code being copied from my Quark-85 demo, which has to use Flash memory sparingly.

In this new version, I can spit out full bytes, so 64 or 128 color Sprites use much less cycle time.

 

If the overlayed horizontal lines reach to the end of the screen, then your free cycle time is being stretched.

If you spend too much time drawing things to the screen, then you risk dropping the frame rate from 60FPS to 30FPS.

This is a great visual aid, that allows the programmer to "code and see" without having to calculate instruction cycles.

 

I will explain this in a lot more detail as this thread progresses.

 

Brad

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Cool, let me know what you did to get the video into the post!

I did it by disabling JavaScript.

 

NOTE: I'll make this explanatory post in multiple edits, as it will be easier since I'll be switching between JS enabled and JS disabled.

 

I use NoScript, with scripts from avrfreaks.net and jsdelivr.net normally allowed.  Just forbid scripts from avrfreaks.net temporarily.  This exposes the underlying HTML of your post content in the WYSINWYG editor.

 

For example, here's what this post looks like when I disable JS and edit it:

 

 

 

Now I'll add Tom's HTML embedding code:

 

 

 

Note how towards the top of the editor you can see a bunch of base64 encoded data.  That represents the first embedded image (screenshot) above.

 

When I took the second screenshot, I didn't commit the edit, so that I could return here and add the screenshot.

 

Now I'll actually commit Tom's embed code:

 

 

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

Last Edited: Tue. Dec 29, 2015 - 04:16 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, I see it's more that just pasting a code.

I probably won't bother jumping through that many hoops!

 

Brad

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, I see it's more that just pasting a code.

Not >>much<< more.  All the 'hoops' above are so that I could show you how to do it.

 

Basically:

 

  • Compose your post as normal, and post it
  • Disable JS (for avrfreaks.net at least)
  • Edit your post
  • Paste or type Tom's embed code (at the bottom is simplest, but if you're careful not to break the existing HTML structure you can put it anywhere)
  • Post the edit
  • Re-enable JS

 

What's annoying is that if in the future you edit your post with JS enabled, the editor will strip that embed code.

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, will see if it works from my home system.

Even hitting edit here can sometimes take several minutes and 2 or 3 retries to get the post to save.

Ah.... progress!

 

I adjusted my schematic, and will be testing this tonight.

I can't use bit 6 of the port, but bit 7 is free, so this should double the number of colors.

There will now be 64 colors, with an intensity bit, creating 128 possible colors.

 

 

If I have time, I will try it tonight.

 

Brad

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Forgive me but, for the audio outputs, shouldn't the resistor come before the capacitor?

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

joeymorin wrote:

Forgive me but, for the audio outputs, shouldn't the resistor come before the capacitor?

 

It certainly should!

That fix will come on the next rendition.

Thanks for noticing the error.

 

Cheers!

Brad

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Tue. Dec 29, 2015 - 07:26 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Looks like the "Half Bright" mode works ok...

 

128 Colors from a 7 bit DAC

 

I will have to adjust my BMP to DATA converter to handle the odd mapping of this palette and see how a real image looks.

This is an oddball... RR-GG-BB-X-I

 

Bits 0:1 = Red

Bits 2:3 = Green

Bits 4:5 = Blue

Bit 6 = Used by Clock Input

Bit 7 = Intensity

 

Oh well, 128 colors is better than 64, since it cost nothing extra!

 

More test to come.

Brad

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AtomicZombie wrote:

 

The "shadow" behind the ball is a demonstration of what I call the "Visual Cycle Display".

...

This is a great visual aid, that allows the programmer to "code and see" without having to calculate instruction cycles.

A nifty idea.... :)

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ok, I have done some more testing on various DAC configurations, and found one that I like.

The RR-GG-BB-X-I version was not so good, as the Intensity bit really just washed out color.

 

I have now decided to go with RR-GG-BB-X-G, which will offer 128 unique colors, with Green having 3 bits.

The X bit is not available as color output as it is used by the clock input, but this actually works out ok.

In my code, the X bit is checked, and if set, the color is considered Alpha, or transparent.

Now I can use all 128 colors for Sprites, and not have to loose one to the Alpha Color.

 

I wrote a Windoze program to convert images to various Palettes to see the quality.

Here are the resulting Palettes and the images converted using their values....

 

 

This is the original 6 Bit Palette using RR-GG-BB

 

 

 

 

 

 

Converted using 6 Bit Palette

 

 

 

This is the new7 Bit Palette using RR-GG-BB-X-G

 

 

 

Converted using 7 Bit Palette

 

 

 

This is the Original 24 Bit Image

 

 

The 7 Bit Palette certainly looks better than the 6 Bit Version.

And both look better than the Half-Bright version, which I did not bother to post images for.

 

So that concludes the DAC design, which now uses 9 resistors.

This could be reduced to 7 resistors, but 9 makes it easier as you can use the same 3 values.

 

Here is the new Schematic...

 

 

I will now get some coding done, and wee how this thing works!

 

Cheers!

Brad

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

In my code, the X bit is checked, and if set, the color is considered Alpha, or transparent.

Now I can use all 128 colors for Sprites, and not have to loose one to the Alpha Color.

Nice.

 

It might be too much to squeeze in, but what if bit six signified not only an alpha channel, but (some of) the remaining bits encoded an opacity?

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"Read a lot.  Write a lot."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

This could be possible, since that part of the coding is under user control.

In the Video Driver Interrupt, bytes are just spewed out to the DAC at a rate of 7.2MHz, and there is no awareness of the value.

 

In the User Code section, Sprites are drawn by a routine, and it can be made to do anything really.

Right now, the best efficiency seems to be "SBRS R16,6", to see if bit 6 is set, and then skip the save to the Line Buffer.

Since Bit 6 is an input, it writing to the port has no effect on that Pin, which is connected to the 36MHz clock.

I used to do "CPSE R16,R17", where R16 is the data read from memory, and R17 is the assigned Alpha Value.

This worked just as well, but meant that you lost one of the colors. Now the unused bit is the Alpha Flag.

 

So far, I have managed to move a 128 Color Sprite with the dimensions of 128x128 around the screen at 60 frames per second!

Kind of nutz, considering the entire screen size is only 184x160, but it does show how much "Sprite Bandwidth" is available.

It still baffles me as to how far an AVR can be pushed! This is why this is so much fun.

This weekend, I may try pumping it up to 6V, and getting past 45MHz, which would mean 40Mhz could be considered "safe".

 

Somewhere there will be a limit.... I will release the accelerator when I find it!

 

On a funny note, a few years back when I used to power my boards with a dual bench supply, I was having an issue with an ATMega-324 VGA Game System I made.

No matter how many times I checked my resitor DAC values, the colors on the monitor were way too bright.

After an entire day of messing around, I finally figure out why the output was supersaturated....

 

I was powering the AVR at 12 frickin' volts!!

 

Yeah... at 12 volts, it ran for at least 4 hours, and didn't have any issues besides spitting out too much voltage on the IO pins.

I even kept the part in the project, and to this day, it still powers up and works at 25.175 MHz on the proper 5 volts.

 

Just a little testament to how robust these  really are, not that I would ever try 12v as part of my overclocking!

 

Cheers!

Brad

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Wed. Dec 30, 2015 - 05:06 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Impressive results on the photo.

 

Wow. 12v and the thing continued to operate. If you don't mind, I'll not try it.

274,207,281-1 The largest known Mersenne Prime

Measure twice, cry, go back to the hardware store

Last Edited: Wed. Dec 30, 2015 - 11:59 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for the comments!

Had an hour in my basement Lab tonight, and did some tests.

 

In order to compare the DAC against my expected image converter, I dug out the obligatory Amiga Deluxe Paint image of ole' Tutankhamen.

The results were great, and the image looks as good as expected with my "close enough" resistor values...

 


A 184x160 Image with 128 Colors Generated by a single ATMega-328!

 

Here is a video of the current configuration....

 

https://youtu.be/vj3kpg9FS9c

 

I am satisfied with the quality of the Video section of the code, so now I will start on the new Sound Generator.

Since I am not restricted like the ATTiny-85 version, sound will be much better, and include waveforms and envelopes.

 

Here is the original Bitmap, converted by my Windoze program to RR-GG-BB-XG...

 

 

 

Here is the hardware (or lack thereof) so far...

 

Nothing here but 11 resistors and a clock oscillator!

 

The resistor DAC only requires 7 resistors, but I am using 9 so that I only need 3 values.

As you can see in the image, the first 2 resistors on the RED and BLUE segments are just tied together.

Values are 3K, 1.5K, and 750 Ohms. The first 2 on RED and BLUE can be swapped for a single 4.5K.

 

So far so good!

Now let's see how much Sound Generator Code I can jam in the 100 or so free cycles!

If I can get Dual Voice Stereo with Square, Triangle, and Noise waveforms and a Decay Envelope, I will be happy!

 

Ok, no more coding until after the New year.... I am going to be into the sauce for a few days!

 

Wishing all you Freaks a great 11111100000, 7E0, and 3740!

 

Cheers!

Brad

 

 

 

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Thu. Dec 31, 2015 - 12:27 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

AtomicZombie wrote:

Wishing all you Freaks a great 11111100000, 7E0, and 3740!

 

 

And in base 12, it's 1200.

274,207,281-1 The largest known Mersenne Prime

Measure twice, cry, go back to the hardware store

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Had a bit of time to mess around with the sound routines, and made "some" progress.

 

I am using the 2 left over 8 bit timers to generate sound, in Fast PWM mode, non inverted output.

Clock is divided by 1024 for a top frequency of about 35KHz.

 

Since Sound happens in the Horizontal Line at 31.5KHz, I cannot load and send bytes to create waveforms.

There is not enough time for that, and the highest frequency would be about 123 Hz doing it that way.

So instead, I use the Pin Toggle PWM as the sound output.

 

Setting Top with OCR0A works as expected, and gives me a frequency on the PWM pin.

Setting the Duty Cycle with OCR0B also works for Volume Level, but it has some drawbacks.

 

Unfortunately, OCR0B must always be some value less than OCR0A, which makes sense as this sets the pulse width.

It's just too bad that OCR0B wasn't an "offest" of OCR0A, then volume control would be easy.

 

As it stands now, you can't just ramp down OCR0B, as it has to begin less than OCR0A.

No problem, this is easy, but now you loose your linear volume control.

 

For instance, this setting generates a tone with full volume level...

 

; SET FREQUENCY
ldi r16,120
out OCR0A,r16

; SET VOLUME
ldi r16,60
out OCR0B,r16

 

Easy enough.

And of course, setting OCR0B to 30 would be half the volume level and so on.

 

But in my Driver, I have an envelope generator, which looks at the value in OCR0B, and brings it slow up to OCR0A, giving the sound a decay ramp.

This is nice, as sound is made more interesting, and music sound better with a "ping" sound, rather than full on or full off.

 

The issue is that depending on the Frequency (value of OCR0A), the ramp value is completely different.

Now look at this frequency value...

 

; SET FREQUENCY
ldi r16,42
out OCR0A,r16

; SET VOLUME
ldi r16,21
out OCR0B,r16

With a value of 42 in OCR0A, there are only 21 steps of volume control, so the decay ramp counts a lot faster.

It would take a lot of code to compute the proper ramp for all 255 possible not values!

 

Right now, a high frequency not makes a nice "BING" sound, while a low note take a lot longer "BBBBIIIIIINNNNNGGGGG".

 

I guess it will be a lookup table of some sort!

Too bad PWM could not be set like this...

 

OCR0A = Frequency (the reset value in cycles)

OCR0B = Duty Cycle (0-255 calculated internally)

 

Instead, it works like this...

 

OCR0A = Top (the reset value)

OCR0B = Count (the start value)

 

So instead of defining a square wave with a frequency and duty cycle, you must define a square wave that starts and stops and some value, but with start always at least one less than stop.

 

My understanding of AVR PWM is "ok at best", so if someone can point out a better way, I would be grateful indeed!

 

Cheers!

Brad

 

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Thu. Dec 31, 2015 - 06:03 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Driving back home, I thought of a way to solve the sound problem.

I should be able to get a nice even 256 steps of volume control, dual channels, and even a noise channel.

 

Will try later.

Brad

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nothing beats a Tequila hangover like cold coffee and 4 hours of assembly coding!

 

Managed to get the entire Audio/Video system completed, and with a few improvements.

I reworked the IO ports, and decided to forget about PWM audio and just bit banged it instead!

Sometimes the internal peripherals are not always the best way to go.

 

Both Video and Audio are better than originally planned. Here are the final specs...

Video : 184 x 160 VGA with 256 simultaneous colors.

Palette : RRR-GGG-BB using only 9 resistors.

Sound : 3 Pulse Wave Channels and 1 Noise Channel

Input : Standard Atari / C64 style Joystick Port

 

Also built into the Driver at no cost to the Main Loop...

- 24 Bit Random Number Generator that returns a 1 byte value

- Auto Frame Sync system to make all animations smooth at 60FPS

- Cycle Speedometer that can show free cycles as an onscreen overlay

 

Although the Audio / Video Driver is the most intense bit of code I have ever done, programming games or demos on this platform will be remarkably easy.

The "Main Loop" needs no awareness of video timings or interrupts, and could even be done in C if that's how you like to roll.

Ironically, the code still works on an ATTiny, although with only 8 colors, or 4 Colors and 1 Voice Sound.

 

Only 190 of the 2048 Bytes of SRAM are used, so the Main Loop has 1858 Free Bytes to work with.

 

The entire BOM is now just : 15 resistors, 4 capacitors, and 1 clock oscillator!

I will get a new demo done sometime next week showing the full capabilities with Music, Joystick, and 256 color Sprites.

 

Due to the simplicity of the hardware, and capabilities of the engine, I think this is my favorite AVR game system to date!

 

Here's to a good 2016!

Brad

 

 

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

Last Edited: Sat. Jan 2, 2016 - 12:26 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

Here is a simple demonstration of the new 256 Color Palette and 4 Voice Sound...

 

https://youtu.be/HQs7GKT593w

 

For the sound, I just supplied the X and Y values of the sprite as the frequency.

You can hear the 3 pulse wave voices and the noise voice sweeping.

 

When I have time, I will do some music and a real demo.

The hardware is now complete. Schematic coming soon.

 

Cheers!

Brad

 

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Things were coming along nicely until I bricked my only 328 last night!

Dang... never mess with the fuse bits when you are tired.

I will go back to Quark-85 for a while until my next Digikey order.

No... not going to make am HVP, I already tossed the chip.

 

No problem, the other one is not finished until I find a way to get sound out of it!

 

Brad

I Like to Build Bikes : http://www.AtomicZombie.com

I Like to Hack Stuff : http://www.LucidScience.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What happened to this guy and the project and the code?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

ajtaji wrote:
What happened to this guy ...
He be's and do's as he wills ... Always something cool

https://www.youtube.com/user/LucidScience/videos

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks...I like that kinda stuff