PDA

View Full Version : Propeller based demo to be released at Breakpoint.



Linus Akesson
04-05-2009, 04:51 PM
Hi!

Just wanted to give you all a heads-up, that I will be releasing a new microcontroller demo at this year's Breakpoint (during the Easter weekend). It's based on the propeller and compatible with the propeller demo board. It uses VGA for graphics, and I do believe that I've invented some new techniques that push the boundaries of what the propeller can do.

I'll post the .eeprom file here as soon as the demo party is over, but I won't release the source code until somebody figures out some of the tricks I used, because I think it will be a fun reverse engineering challenge.

That's all for now...

BradC
04-05-2009, 05:44 PM
Linus Akesson said...
Hi!

Just wanted to give you all a heads-up, that I will be releasing a new microcontroller demo at this year's Breakpoint (during the Easter weekend). It's based on the propeller and compatible with the propeller demo board. It uses VGA for graphics, and I do believe that I've invented some new techniques that push the boundaries of what the propeller can do.

I'll post the .eeprom file here as soon as the demo party is over, but I won't release the source code until somebody figures out some of the tricks I used, because I think it will be a fun reverse engineering challenge.

That's all for now...


Looking forward to that :) Lucky we have disassemblers!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cardinal Fang! Fetch the comfy chair.

virtuPIC
04-05-2009, 06:30 PM
Linus Akesson said...

Just wanted to give you all a heads-up, that I will be releasing a new microcontroller demo at this year's Breakpoint...

I'll post the .eeprom file here as soon as the demo party is over...




BradC said...
Looking forward to that


So do I! I'm so curious... http://forums.parallax.com/images/smilies/wink.gif And I'll take the challenge - if it's worth the effort.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Airspace V - international hangar flying!
www.airspace-v.com/ggadgets (http://www.airspace-v.com/ggadgets) for tools & toys

Ale
04-05-2009, 06:35 PM
And we have simulators http://forums.parallax.com/images/smilies/smile.gif.

StefanL38
04-05-2009, 07:15 PM
Hello Linus,

hooo woow ! http://forums.parallax.com/images/smilies/roll.gif very BIG smile on my face http://forums.parallax.com/images/smilies/smilewinkgrin.gif
Most of the time I don't use smilies here I do

http://forums.parallax.com/images/smilies/lol.gif http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/yeah.gif http://forums.parallax.com/images/smilies/tongue.gif http://forums.parallax.com/images/smilies/lol.gif

I'm so curious about it ! It's almost like if I were a child and couldn't wait anymore for the "eastern rabbit"
to hide the eggs and presents in the garden

I almost need some tranquilizers to get down on a normal level again

looking forward to what it will be

best regards

Stefan

Post Edited (StefanL38) : 4/5/2009 12:11:17 PM GMT

heater
04-05-2009, 08:06 PM
Linus, great to hear that.

I've been patiently waiting for you to reappear with some Propeller magic. I knew you would.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.

potatohead
04-06-2009, 12:21 AM
Nice!!

A reason to look forward to Easter! Looking forward to seeing the demo. Breakpoint and other demo scene party stuff is something I look forward to every year. Just when you think you've seen it all from a particular bit of hardware, somebody goes and does something. It is just great to see a Propeller there.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Oldbitcollector (Jeff)
04-06-2009, 12:40 AM
An Easter egg hunt! Nice! Looking forward this as well.

OBC

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?

Visit the: The Propeller Pages (http://www.warrantyvoid.us/tiki-index.php?page=Propeller) @ Warranty Void.

Toby Seckshund
04-06-2009, 05:36 AM
The AVR demo I saw last year was gobsmacking, so much from so little. With the extra resorces of the prop we will probably get bored before it gets the chance to finish!

CassLan
04-06-2009, 11:57 AM
Dude that other demo was off the hook.

I'm so happy that there will be a Propeller based demo at Breakpoint!!

We all know there is noone better to deliver it than you.



This will show people what the prop can do, I bet sales will rise after this release + the $7.99 price!!
Does it have Audio also?

Just in case folks haven't seen this yet, here is the one he did with an AVR:
http://www.linusakesson.net/scene/craft/



Rick

Coley
04-11-2009, 04:57 PM
Not long now...... http://forums.parallax.com/images/smilies/turn.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

potatohead
04-12-2009, 01:17 AM
Gotta wait until Sunday....

:)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

potatohead
04-12-2009, 01:34 PM
http://bptv.untergrund.net/

See it here first!

If their time is Germany time, then the Wild Compo begins at 10:00 PST, otherwise it's probably noon, PST.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Post Edited (potatohead) : 4/12/2009 6:33:17 AM GMT

Baggers
04-12-2009, 08:00 PM
Welcome back to the forums Linus, I also can't wait to see what stuff you've done for this demo :)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

heater
04-12-2009, 08:32 PM
So it's 14:31 in Germany now, Competitions should start at 13:30. BreakpointTV is a blank red screen. What goes on ?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.

Baggers
04-12-2009, 09:21 PM
it's showing demos on mine heater

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

Baggers
04-12-2009, 09:22 PM
well, zooming photo's anyway, and some cheers and music.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

Ale
04-12-2009, 09:36 PM
I just saw the 4K graphics, it is now 15:38. Now it comes something about streaming something http://forums.parallax.com/images/smilies/smile.gif

Edit: It is about streaming music.

At 19:00 hs is the real wild, so at that time we will find out!

Post Edited (Ale) : 4/12/2009 1:45:52 PM GMT

Baggers
04-12-2009, 09:41 PM
Anyone got any ideas when his video is going to be shown?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

Bob Lawrence (VE1RLL)
04-12-2009, 09:46 PM
For anyone that doesn't know ... you can right click the player to get a full screen option and the ESC to escape full screen. :)

Happy Easter! to all that celebrate http://forums.parallax.com/images/smilies/smilewinkgrin.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

heater
04-12-2009, 10:13 PM
OK. Helps to have flash installed !!!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.

heater
04-12-2009, 11:23 PM
Computers, music, beer. Do I wish I was there!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.

StefanL38
04-13-2009, 12:45 AM
hello,

I had a short look in the website of linus

his CRAFT-demo was in the category "Console/Real Wild"
the timetable says this competetion starts at 19:00 MET
15 Minutes ahead from the timestamp of this posting

cheers

Stefan

Coley
04-13-2009, 12:48 AM
It's a real Geekfest http://forums.parallax.com/images/smilies/tongue.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

hover1
04-13-2009, 12:54 AM
Coley said...
It's a real Geekfest http://forums.parallax.com/images/smilies/tongue.gif


Been watching on and off for last two hours. Looks like a very well planned event! Good video feed and great music!

Jim

potatohead
04-13-2009, 01:18 AM
C64 just ended

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Ale
04-13-2009, 01:21 AM
Real geek indeed, very few females and all!
Well The C64 demos are done, now we have to wait till 8 for the real wild and console :-(. I was hoping it was gonna be at 7!

Coley
04-13-2009, 01:30 AM
I just spotted some young children too, a real family event.
Now if I can just persuade the wife...........

http://forums.parallax.com/images/smilies/tongue.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

potatohead
04-13-2009, 01:30 AM
No kidding!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

potatohead
04-13-2009, 02:03 AM
Wild is coming up next. The Propeller is on the stage in the next hour or so!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

potatohead
04-13-2009, 02:19 AM
The event is now!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

briankb
04-13-2009, 02:29 AM
Where is the main website for this event? Is there a schedule for the stream?

I think I found the website: breakpoint.untergrund.net (http://breakpoint.untergrund.net)

and the schedule breakpoint.untergrund.net/timetable.php (http://breakpoint.untergrund.net/timetable.php)

Post Edited (briankb) : 4/12/2009 6:44:34 PM GMT

Coley
04-13-2009, 02:38 AM
bptv.untergrund.net/ (http://bptv.untergrund.net/)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

simonl
04-13-2009, 02:54 AM
Has Linus been on yet?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
-------------------------------

www.norfolkhelicopterclub.com (http://www.norfolkhelicopterclub.com)

You'll always have as many take-offs as landings, the trick is to be sure you can take-off again http://forums.parallax.com/images/smilies/wink.gif
BTW: I type as I'm thinking, so please don't take any offence at my writing style http://forums.parallax.com/images/smilies/smile.gif

potatohead
04-13-2009, 02:56 AM
No. We are about 11 demos into the Wild event.

Could be any minute!

Some clown just did one in MS Office 2003!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Zap-o
04-13-2009, 02:59 AM
Looks like this only works for Internet explorer. Great show so far

simonl
04-13-2009, 02:59 AM
I really should be programming my Prop! Instead, I'm watching PSP demos - LOL

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
-------------------------------

www.norfolkhelicopterclub.com (http://www.norfolkhelicopterclub.com)

You'll always have as many take-offs as landings, the trick is to be sure you can take-off again http://forums.parallax.com/images/smilies/wink.gif
BTW: I type as I'm thinking, so please don't take any offence at my writing style http://forums.parallax.com/images/smilies/smile.gif

simonl
04-13-2009, 03:07 AM
Here it is #14

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
-------------------------------

www.norfolkhelicopterclub.com (http://www.norfolkhelicopterclub.com)

You'll always have as many take-offs as landings, the trick is to be sure you can take-off again http://forums.parallax.com/images/smilies/wink.gif
BTW: I type as I'm thinking, so please don't take any offence at my writing style http://forums.parallax.com/images/smilies/smile.gif

Zap-o
04-13-2009, 03:14 AM
Yea it was a nice video. I liked the mountains and sky part. Shows some of the power that this propeller has.

potatohead
04-13-2009, 03:15 AM
Just watched it #14.

I know he's doing overlay with VGA. More than one COG rendering to the video output pins. Great demo, and he gave props to Chip!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

heater
04-13-2009, 03:15 AM
woot !!!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
For me, the past is not over yet.

hover1
04-13-2009, 03:16 AM
simonl said...
Here it is #14's
That was awsome!! And I saw Chips name in there too.

Coley
04-13-2009, 03:17 AM
Excellent!

Well done Linus, truly inspiring!

http://forums.parallax.com/images/smilies/yeah.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

potatohead
04-13-2009, 03:18 AM
Nicely done Linus!

BTW: I think we will see results here, in a short while.

http://www.pouet.net/party.php?which=450&when=2009

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Ale
04-13-2009, 03:18 AM
The propeller Rulez !, great demo!
Linus you are the best !

potatohead
04-13-2009, 03:24 AM
...and no multiply instruction.

Bet that got some people thinking.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Ale
04-13-2009, 03:28 AM
t works well on Camino on Mac OS X no need for Internet Exploder http://forums.parallax.com/images/smilies/smile.gif

Baggers
04-13-2009, 03:31 AM
Great demo Linus, nice usage of overlying the vga drivers :)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

potatohead
04-13-2009, 03:38 AM
I was watching on Firefox + XP.

Now, we wait for video and a file....

I want to watch it again.

This should ship on demoboard EEPROMs, with maybe a title screen with some credits and such.

Edit: BTW: I love the "Hi I'm Linus, and this is my micro with battery" intro. Connect the 9V, and off we go!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Post Edited (potatohead) : 4/12/2009 7:48:25 PM GMT

Linus Akesson
04-13-2009, 05:14 AM
Hi! Thanks for your feedback so far!

I'm attaching the .eeprom binary, so that all of you with demo boards can watch it. There will be a proper homepage and video download in the near future.

Coley
04-13-2009, 05:17 AM
Thanks Linus, tremendous demo and well worth the wait.

Regards,

Coley

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

Toby Seckshund
04-13-2009, 05:46 AM
linus

the download shows 96.9... MHz and strange original figures, runs though.

You've made a happy man feel very old.

Coley
04-13-2009, 06:08 AM
Yeah I just noticed that too and the demo doesn't seem to run correctly.
The music is fine but the VGA is way off, just a blue scrren to begin with then a few glitches then I get 'parts' of the graphics....

Stock issue demoboard and everything else works ok....

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

nutson
04-13-2009, 06:42 AM
Wow, great demo. Incredible that a single prop can do this. Runs fine on my demoboard.

BTX
04-13-2009, 06:50 AM
Linus
Nah... I was doing a graphic demo, and now I should go to the psychoanalyst. (And obviously forget my idea).

E X C E L L E N T ! ! ! !

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Regards.

Alberto.

Bob Lawrence (VE1RLL)
04-13-2009, 07:04 AM
Linus,

My little prop can do all that ... http://forums.parallax.com/images/smilies/jumpin.gif Wow!!! it was fun. Thanks!! http://forums.parallax.com/images/smilies/yeah.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

Oldbitcollector (Jeff)
04-13-2009, 07:06 AM
I've been in a horizontal position all day and missed the live presentation. (flu-like symptoms)

Which connections do I need to make this work? VGA and sound? or TV and sound?

Thanks!
OBC

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?

Visit the: The Propeller Pages (http://www.warrantyvoid.us/tiki-index.php?page=Propeller) @ Warranty Void.

Timothy D. Swieter
04-13-2009, 07:13 AM
Anyone got a video of the demo posted?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com (http://www.brilldea.com) - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com (http://www.tdswieter.com)

potatohead
04-13-2009, 08:21 AM
OBC, you need VGA and sound, demoboard pin layout.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

CassLan
04-13-2009, 08:45 AM
Anyone have a link to the video??

My Prop stuff is un available for a couple days....

Rick

potatohead
04-13-2009, 09:07 AM
Linus will probably put a page up. There isn't one right now.

Some productions are showing up here:

www.pouet.net/party.php?which=450&when=2009 (http://www.pouet.net/party.php?which=450&when=2009)

I see two from the wild compo. Not sure anybody captured the Breakpoint feed. I couldn't on the machine and network I was watching from. Glitchy..

While you are waiting, check out some of the PC 4K demos. Some have videos!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Post Edited (potatohead) : 4/13/2009 1:17:53 AM GMT

Linus Akesson
04-13-2009, 05:49 PM
Coley: Make sure pins P0-P9 aren't driven from the outside. That might be the reason for your problem.

Coley
04-13-2009, 05:58 PM
Linus,
thanks, I think that will be the cause of the problem, as P0 and P1 on my demoboard are faulty, I tried it on a protoboard and it was fine, thanks once again.


Linus Akesson said...
Coley: Make sure pins P0-P9 aren't driven from the outside. That might be the reason for your problem.

I think this maybe gives us a clue to one of your techniques http://forums.parallax.com/images/smilies/tongue.gif

Regards,

Coley

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

Toby Seckshund
04-13-2009, 06:00 PM
So why the strange clock figures? Or is that one of the many "little mysteries" that you are setting?

tonyp12
04-13-2009, 10:15 PM
Video is here:
http://www.pouet.net/prod.php?which=53003

Wish there was a video version that is not using a camera to record from the monitor.
·

Bamse
04-13-2009, 10:28 PM
Amazing...

Is the demo ported to the Hydra yet ?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Living on the planet Earth might be expensive but it includes a free trip around the sun every year...

Experience level:
[ ] Let's connect the motor to pin 1, it's a 6V motor so it should be fine.
[ ] OK, I got my resistors hooked up with the LEDs.
[X] I got the Motor hooked up with the H-bridge and the 555 is supplying the PWM.
[ ] Now, if I can only program the BOE-BOT to interface with he Flux Capacitor.
[ ] I dream in SX28 assembler...

/Bamse

potatohead
04-13-2009, 10:54 PM
Demoboard only for now. Linus wants us to pick at it before we see source.

And it's first place!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Baggers
04-13-2009, 11:14 PM
Just to let people know, it works well on protoboard too, just no sound :D

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

Toby Seckshund
04-13-2009, 11:37 PM
When it rus on my "Prop nailed to a Z80" abortion the monitor LEDs on P0..3 modulate and P4..7 less so. P10 and11 are obviously the sound. Me thinks the boy is sneeky!

Lawson
04-14-2009, 01:16 AM
Wow! Can't wait to get this running on my Protoboard. The smoke rising/free convection effect was really cool, that must've been a bear with no multiply!

Two guesses at what pins 0-9 do. First I'm guessing 2-3 of them are handshake lines for some of the video overlay modes. Second, due to the look of the dithering, I'd guess one pin is a noise source that a spare counter in any of the video cogs can count.

Lawson

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Lunch cures all problems! have you had lunch?

BEEP
04-14-2009, 05:51 AM
Thumb Up!

When I see the tunnel Im thinking on one of 3Dmark test (2000?).
The landscape, is it based on a voxel-rendering technique?

simonl
04-14-2009, 06:32 AM
Hey well done Linus - 1st place http://forums.parallax.com/images/smilies/yeah.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
-------------------------------

www.norfolkhelicopterclub.com (http://www.norfolkhelicopterclub.com)

You'll always have as many take-offs as landings, the trick is to be sure you can take-off again http://forums.parallax.com/images/smilies/wink.gif
BTW: I type as I'm thinking, so please don't take any offence at my writing style http://forums.parallax.com/images/smilies/smile.gif

FearTurtles
04-14-2009, 07:24 AM
OK I downloaded the video but all I get is the sound. I'm using Windows Media play and Vista. What is the trick?

Timothy D. Swieter
04-14-2009, 07:35 AM
Thanks for the video link - WOW! That is worth repeating. WOW!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com (http://www.brilldea.com) - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com (http://www.tdswieter.com)

simonl
04-14-2009, 08:14 AM
@FearTurtles: I had same problem. It's because it's HD. I ended-up installing VLC www.videolan.org (http://www.videolan.org)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
-------------------------------

www.norfolkhelicopterclub.com (http://www.norfolkhelicopterclub.com)

You'll always have as many take-offs as landings, the trick is to be sure you can take-off again http://forums.parallax.com/images/smilies/wink.gif
BTW: I type as I'm thinking, so please don't take any offence at my writing style http://forums.parallax.com/images/smilies/smile.gif

FearTurtles
04-14-2009, 07:44 PM
Thanks Simon, That did the trick. It seems my laptop still chokes up a little on HD but the video played.


Great Demo Linus,

Cluso99
04-14-2009, 09:00 PM
Amazing demo Linus :D

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:

· Home of the MultiBladeProps: TriBladeProp (http://forums.parallax.com/showthread.php?p=786418), SixBladeProp (http://forums.parallax.com/showthread.php?p=780033), website (Multiple propeller pcbs) (http://bluemagic.biz/cluso.htm)
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator) (http://forums.parallax.com/showthread.php?p=790917)
· Prop Tools under Development or Completed (Index) (http://forums.parallax.com/showthread.php?p=753439)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index (http://forums.parallax.com/showthread.php?p=778427))
· Search the Propeller forums (via Google) (http://search.parallax.com/search?site=parallax&client=parallax&output=xml_no_dtd&proxystylesheet=parallax&proxycustom=<HOME/>&ie=&oe=&lr=)
My cruising website is: ·www.bluemagic.biz (http://www.bluemagic.biz)·· MultiBladeProp is: www.bluemagic.biz/cluso.htm (http://www.bluemagic.biz/cluso.htm)

Kye
04-14-2009, 09:49 PM
Parallax should grab this video and put it up in the propeller section of their website. It may attract more customers.


Amazing demo also, I loved the part with the faces.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nyamekye,

Ahle2
04-14-2009, 10:43 PM
Mighty impressive !

I just ran it on my demo board, and i must say that it's fun to see effects that the OCS/ECS Amiga struggled with some 17 years ago, run in full frame rate on a chip that is smaller than my thumb nail.
The propeller is actually about 200 times faster than an OCS/ECS Amiga ( CPU power wise )
Add some more memory and a GPU, and the propeller should be able to do DOOM in 256 colors and full frame rate.

To Linus!
Jag trodde att jag skulle bli först med att släppa ett demo på propellern eftersom ingen verkade vara intresserad av att göra något sådant.
Sedan kom detta som en blixt ifrån klar himmel :)

Ale
04-14-2009, 10:59 PM
Ahle2:

To do DOOM the cog should be a bit different. The small memory and high penalty to access external memory limit its usability. btw, the code foot print of DOOM is quite big and the dataset is even bigger. I think a really cut down version rendering with all COG may produce something but only at 64 colors. Wolf 3D may be possible, though http://forums.parallax.com/images/smilies/smile.gif

Bamse
04-14-2009, 11:59 PM
Maybe Doom will come alive on Prop 2... http://forums.parallax.com/images/smilies/wink.gif

@ Linus,
Grattis till första platsen i BreakPoint...
Helt underbar demo, jag hoppas det blir fler i framtiden.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Living on the planet Earth might be expensive but it includes a free trip around the sun every year...

Experience level:
[ ] Let's connect the motor to pin 1, it's a 6V motor so it should be fine.
[ ] OK, I got my resistors hooked up with the LEDs.
[X] I got the Motor hooked up with the H-bridge and the 555 is supplying the PWM.
[ ] Now, if I can only program the BOE-BOT to interface with he Flux Capacitor.
[ ] I dream in SX28 assembler...

/Bamse

Ahle2
04-15-2009, 12:13 AM
Of course all cogs should be used, and an external memory and a GPU should be connected to the prop using a parallel bus.
I know there might not be enough pins, and the COG memory is likeyly to small to hold a descent PASM DOOM engine.
But, it MIGHT just be possible with some thinkering :P

I actually made a ray casting engine some years ago, so i know that it's simple enough to fit in a COG.

Cole Logan
04-15-2009, 02:46 AM
I just watched the video and it is really cool I would never had thought that was possible on the PROP1

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
1986 Chevy EL Camino·· No prop yet

1984 Suzukie GS1100GK No prop yet

liljoentx
04-15-2009, 06:08 AM
Thanks, Linus, that is an impressive demo of the Prop!

······ http://capped.tv/playeralt.php?vid=lft-turbulence

worked great for me and even includes a nice Intro by Linus himself!

Plus, seeing it displayed on his monitor, I think gives more understanding to what he is doing.

Now to break out my demoboard and see if I can run it locally! http://forums.parallax.com/images/smilies/tongue.gif

Lil'Joe

Timothy D. Swieter
04-15-2009, 07:21 AM
Any further guesses on how it is done? I don't see an SD card in the setup, so the EEPROM must contain the images, but there is some form of processing going on for some of the procedural stuff like the smoke effect and such. What resolution do you suppose the VGA is running at?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com (http://www.brilldea.com) - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com (http://www.tdswieter.com)

Rob7
04-15-2009, 07:33 AM
Linus,

Great work, you are showing what the propeller can do and it is blowing my mind !

OwenS
04-15-2009, 07:35 AM
Theres definitely compression going on since I don't even see the ASCII greet strings in the EEPROM

Cole Logan
04-15-2009, 07:52 AM
On my moniter it says that it is getting a 640x480 signal at 60hz

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
1986 Chevy EL Camino·· No prop yet

1984 Suzukie GS1100GK No prop yet

Oldbitcollector (Jeff)
04-15-2009, 07:58 AM
Has anyone run it enough times to determine if the 1's and 0's are random?
Perhaps these are being generated by a noisy pin or two as well?

OBC

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?

Visit the: The Propeller Pages (http://www.warrantyvoid.us/tiki-index.php?page=Propeller) @ Warranty Void.

localroger
04-15-2009, 09:44 AM
I would suspect the 1's and 0's are images of the object code itself. The source imagery is mostly procedural starting with extremely low resolution sources; I doubt if the face bitmap source is larger than 16x16 pixels, and you can even see the square pixels that start off the smoke. And while there's no multiply there are log and antilog tables in the ROM, and you can fake a multiply by converting to log, adding, then doing antilog; I once did this myself to get polar-cartesian conversion on an Atari 2600 demo.

Lawson
04-15-2009, 11:31 AM
Timothy D. Swieter said...
Any further guesses on how it is done? I don't see an SD card in the setup, so the EEPROM must contain the images, but there is some form of processing going on for some of the procedural stuff like the smoke effect and such. What resolution do you suppose the VGA is running at?


Got an additional clue, when I tried to load the demo to ram on my proto-board. It gave me a nice VGA screen telling me that the demo MUST be loaded to eeprom to work. My guess is this means that after the initial cogs are loaded, a table of pointers to assembly code sections is made and, hub ram is cleared to use as data space. All further re-loading of cogs happen by transferring code from the eeprom to a buffer in hub-ram, and then loading the cog form that buffer.

Further I'd expect the above system to need a house-keeping cog running all the time. Not a bad thing really, as it could also provide the noise source, other timing signals, etc.

Unless someone beats me to it, I'm thinking it'd be rather interesting to probe pins 0-9 with an oscilloscope that is triggered off of the VGA's Hsync and Vsync lines. This would confirm/refute a lot of my hot air on overlay hand-shaking lines.

Hairdryer,
Lawson

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Lunch cures all problems! have you had lunch?

Bob Lawrence (VE1RLL)
04-15-2009, 12:09 PM
I just watched the Video demo (no sound) on my Hybrid board. It's even more cool! live. http://forums.parallax.com/images/smilies/jumpin.gif

@Coley

I connected a VGA connector to a resistor board to the expansion board( I kept the wiring on the expansion board to a minimum so I could re-use it later) It's not pretty but it works. http://forums.parallax.com/images/smilies/lol.gif I had to remove the SD card as well and change the Xtal to 5MHz(actually a Fox 5.06880 that I found in my old Xtal pile)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

Post Edited (Bob Lawrence (VE1RLL)) : 4/15/2009 10:24:22 AM GMT

jazzed
04-15-2009, 01:22 PM
Well it aint spin except for "most" words in the header and starting the first cog ;)

The word at address $18 $2c353535 says coginit(0,0,0) which means the first cog PASM instruction is $5c7c0007 at $0 which means jump to long #$7 which is $1c. Address $1c contains $a0fc060b or mov $3, #$b which is the beginning of some init stuff. That's as far as I get ... will someone with a PASM disassembler please stand up ? Maybe you could simulate this in GEAR.

BTW: Great demo Linus.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

Shazz
04-15-2009, 08:21 PM
Oh ! I did not see this post before so I was starting the challenge alone (as published on linus' website) !

I tried to use proplist to disassemble and gear to run but I was first disappointed by the header which is not compliant by what I saw in a Parallax doc (frequencies, checksum). So I was wondering why it was starting by 70007C5C. so thanks jazzed for the explanation... (so the frequencies in the header are used when compiling/assembling) ?

Now I wonder why no strings or bitmap appear in the eeprom, possible to write a short decompressor in such few memory ?

So I will follow this thread actively and try to help :)

kuroneko
04-15-2009, 08:50 PM
Shazz said...
... I was first disappointed by the header which is not compliant by what I saw in a Parallax doc (frequencies, checksum).

While the first long is - by convention - used as the clock frequency, its actual value doesn't really matter. Byte 4 ($6F) OTOH looks like a valid clock mode (XTAL1 + PLL16X) which is the important bit.

jazzed
04-16-2009, 03:50 AM
Welcome Shazz

Use Hippy's VB6 PropLoad.zip from http://forums.parallax.com/forums/default.aspx?f=25&p=1&m=205628
Enable asm debug with "Help->Debug Asmb" then add some debug info like instruction word column ... need to add conditional mnemonics or interpret manually.

Here's some partial dumps ...
remember that to see something in the data referenced by an instruction, the address needs *= 4.





Init 0018

Spin 0018 PUSH $00000000 / +0
Spin 0019 PUSH $00000000 / +0
Spin 001A PUSH $00000000 / +0
Spin 001B COGISUB $00000000 / +0
Asmb 0000 Starts
Asmb 0000 000 5C7C0007 JMP 000, #007
Goto 001C 007
Asmb 001C 007 A0FC060B MOV 003, #00B
Asmb 0020 008 5CFC6830 JMPRET 034, #030
Call 00C0 030
Asmb 00C0 Starts
Asmb 00C0 030 A0FC0800 MOV 004, #000
Asmb 00C4 031 5CFC5A2B JMPRET 02D, #02B
Call 00AC 02B
Asmb 00AC Starts
Asmb 00AC 02B 623C482F TEST 024, 02F
Asmb 00B0 02C 29D44801 SHR 024, #001
Asmb 00B4 02D 5C540000 JMP 000, #000
Asmb 00B8 02E 5C7C0026 JMP 000, #026
Goto 0098 026
Asmb 0098 026 00BC0424 RDBYTE 002, 024
Asmb 009C 027 58FC0500 MOVI 002, #100
Asmb 00A0 028 80FC4801 ADD 024, #001
Asmb 00A4 029 2CFC4808 SHL 024, #008
Asmb 00A8 02A 68BC4802 OR 024, 002
Asmb 00C8 032 34FC0801 RCL 004, #001
Asmb 00CC 033 E4FC0631 DJNZ 003, #031
Call 00C4 031
Asmb 00C4 Starts
Asmb 00D0 034 5C7C0000 JMP 000, #000
Exit
...







000000 5c7c0007 0010a66f 7fcc7fc4 7fd00018 >..|\o...........<
000010 00027fb4 00000008 2c353535 a0fc060b >........555,....<
000020 5cfc6830 a0bc0a04 5cfc5a2b 5c4c0019 >0h.\....+Z.\..L\<
000030 a0fc0608 5cfc6830 a0bc0c25 84bc0c04 >....0h.\%.......<
000040 a0fc0606 5cfc6830 80fc0802 00bfe006 >....0h.\........<
000050 80fc0c01 80fc4a01 003fe025 e4fc0813 >.....J..%.?.....<
000060 5c7c0022 a0fc0604 5cfc6830 a0bc0c04 >".|\....0h.\....<
000070 80fc0c01 a0fc0608 5cfc6830 80fc4a01 >........0h.\.J..<
000080 003c0825 e4fc0c1d e4fc0a0a 5c7c0035 >%.<.........5.|\<
000090 00000c24 7d2800d3 00bc0424 58fc0500 >$.....(}$......X<
0000a0 80fc4801 2cfc4808 68bc4802 623c482f >.H...H.,.H.h/H<b<
0000b0 29d44801 5c540000 5c7c0026 ff000000 >.H.)..T\&.|\....<
0000c0 a0fc0800 5cfc5a2b 34fc0801 e4fc0631 >....+Z.\...41...<
0000d0 5c7c0000 0c7fea02 7571205b 65726561 >..|\....[ quaere<
0000e0 206f646e 65766e69 7465696e 5d207369 >ndo invenietis ]<
0000f0 055c8190 02010020 c800b900 1f219003 >..\. .........!.<
000100 795c8040 00040200 219003c8 0080401f >@.\y.......!.@..<
000110 07cae400 90002010 00008001 3c836400 >..... .......d.<<
000120 010c8990 00000200 60be4000 00000100 >.........@.`....<
000130 3e41d200 00821608 90000000 6460800e >..A>..........`d<
000140 00002000 52006900 05880304 e2001c40 >. ...i.R....@...<
000150 100803a5 0890142c 10849011 00748240 >....,.......@.t.<
000160 c4018229 00192002 0401d2f1 880a1608 >).... ..........<
000170 46881f82 1a462008 608045c8 000c8010 >...F. F..E.`....<
000180 74800004 00030400 0d200000 106081e4 >...t...... ...`.<
000190 80065c20 00000130 00220000 483e4000 > \..0....."..@>H<
0001a0 1000a143 2211542c 0c544135 00094420 >C...,T."5AT. D..<
0001b0 be84014a a88a4065 5770f81c 7f1a7100 >J...e@....pW.q..<
0001c0 a3077021 12a88019 002a8840 f02351a1 >!p......@.*..Q#.<
0001d0 1e06ade1 9dc035fc 20755a89 3d5f3f87 >.....5...Zu .?_=<
0001e0 3442c1dc 348e1168 86100804 420a0460 >..B4h..4....`..B<
0001f0 00020006 401d2b90 00a16080 02100110 >.....+.@.`......<
000200 200e93c8 00003040 01d20000 0a160811 >... @0..........<
000210 21003f00 00697c80 88030452 001c4005 >.?.!.|i.R....@..<


▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

Shazz
04-16-2009, 03:54 AM
As the behavior differs from loading the binary in RAM or in EEPROM, it means that it's not equivalent, somebody can explain me the difference ? While reading the Propeller Manual, I did not find any obvious difference, it is said the entire 32Kb are written to the RAM. So I may think that's not the truth...

Shazz
04-16-2009, 04:03 AM
Damb ! There is an hidden part ! a long scrolltext and a 3D green rotating cube, and music ! gosh.....

jazzed
04-16-2009, 04:15 AM
Interesting what you get by Googling "Quaerendo Invenietis" ... seek and ye shall find ... wonder what other shades of meaning it has. I don't know the difference between loading RAM or EEPROM .... You can look at the rom interpreter source which is on line: http://forums.parallax.com/forums/default.aspx?f=25&m=252691

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

Shazz
04-16-2009, 04:30 AM
jazzed, I tried PropLoad.. fails, says names have changes I have to use PropView... I run PropView.. Execution error 13...
I tried PropList, it works but the result is quite different :




PropList Propeller Bytecode Disassembler - Version 1.01 #0245 (C) 2008-2009, AiChip Industries

Disassembly of turbulence.eeprom
================================

Addr Org Instruction Label Opcode Operand
---- --- ----------- ----- ------ -------

0000 00 00 7C 5C I0 LONG 1551630336 ; Clock Freq
0004 6F BYTE XTAL1_PLL16x ; Clock Mode

0005 A6 BYTE $A6 ; Checksum - INCORRECT

0006 10 00 WORD O1 ; PBASE - Base of Program
0008 C4 7F WORD VBASE ; VBASE - Base of Variables
000A CC 7F WORD SBASE ; SBASE - Base of Stack
000C 18 00 WORD S3 ; PINIT - Initial Program Counter
000E D0 7F WORD SINIT ; SINIT - Initial Stack Pointer

PBASE ALIGN OBJECT

0010 B4 7F 02 00 O1 LINK VBASE, 1, 0 ; +0 - Standalone program, no sub-objects
0014 08 00 00 00 X2 LINK S3 ; +1

PINIT ALIGN SPIN

0018 35 S3 PUSH 0
0019 35 PUSH 0
001A 35 PUSH 0
001B 2C COGISUB
001C 0B 06 JPT T4
001E FC EQ
001F A0 30 68 FC PUSH MEM[].WORD

0023 5C ?? BYTE $5C

0024 04 0A T4 GOTO J5

...




I'll dig into the rom interpreter... I need to understand what's going on (and what I do to run the hidden screen !)

ok.. I took a look at Chip's booter and if the launch step is the same (i.e. chedck pbase, set clock, run interpreter), the way to copy the data into the RAM is not the same. But I did not yet understand what makes a real difference...

Post Edited (Shazz) : 4/15/2009 9:17:53 PM GMT

localroger
04-16-2009, 07:53 AM
I suspect you will find he is overwriting lots of his original EE to RAM download to use for scratch RAM, then reloading from the EE when the overwritten data are actually needed. Notice in the intro he says the Prop has "48 kilobytes of RAM." Demos are about creatively using every last byte, and while none of the stuff on the demo requires a tremendous amount of source bitmap, some of it does require quite a bit of scratchpad.

ProcessingData...
04-16-2009, 12:16 PM
Whoa, loaded the program onto my board, even dad was wowed. Can't wait for the code! ;)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Basic Stamp,···· Propeller,·· · SX,·· FUN!


START:·
>Proccessing Data. . . .··
>Task Complete. . .·.
>Saving Data. . . .
>Entering SLEEP Mode. . . .
>Signing OFF


·

Shazz
04-16-2009, 03:10 PM
localroger said...
I suspect you will find he is overwriting lots of his original EE to RAM download to use for scratch RAM, then reloading from the EE when the overwritten data are actually needed. Notice in the intro he says the Prop has "48 kilobytes of RAM." Demos are about creatively using every last byte, and while none of the stuff on the demo requires a tremendous amount of source bitmap, some of it does require quite a bit of scratchpad.


Yeah, I understood that this night (hard to sleep !)

In fact, I took the problem upside down, loading from EEPROM or RAM is the same (easy to check, if the demo is already in the EEPROM, if you load it from the IDE in RAM it works), the difference is after, I guess in fact the EEPROM consists in only a tiny loader/unpacker/VGA Text Driver and a big bunch of packed data, the EEPROM works like a cheap 32Kb mass storage.

1. So in RAM then one cog only the loader/depacker/driver is init'd and this one, as Chip's booter does, is trying to read packed data from the EEPROM, unpack them in Hub RAM, call the good coginit.
2. If it cannot find what it looks for, it displays the message to load the demo in the EEPROM.

So Roger as you said the RAM is probably always updated by this loader each time a new screen has to be shown and the loader does the coginit to transfer those new data to available cogs.

What I don't understand yet, why don't we see the ASCII message ("please load from eeprom blablabla") in cleartext... is it an anagram of Quaerendo Invenietis ? :D

Maybe I took another dead end... but I feel more confident this time :)

Post Edited (Shazz) : 4/16/2009 7:17:27 AM GMT

MagIO2
04-16-2009, 04:37 PM
You don't see the string because it's also packed. To have max. room for your demo code you'd pack everything but the packer and the first line of code, which unpacks the first lines of demo code which obviously is the check if the code is available in EEPROM.

I'd bet that the whole demo runs in PASM. It's using one COG to unpack code. Fetching it via I2C and transferring it to COG-RAM via port overlaying the old code - as it is much faster than unpacking it to HUB-RAM and then loading it to COG-RAM. The whole HUB-memory can then be used for data. Running one part of the demo, one or two COGs can already prepare the data for the next part (e.g. a mipmap of the picture).

Shazz
04-16-2009, 04:51 PM
MagIO2 said...
You don't see the string because it's also packed. To have max. room for your demo code you'd pack everything but the packer and the first line of code, which unpacks the first lines of demo code which obviously is the check if the code is available in EEPROM.


Hummmmm, for sure it's not clear text... but packed I don't know... As the text appears if the EEPROM is not filled, I understand the text is not fetched from the packed data.. So it means in this case this packed data is fetched from RAM by default (sort of exception)... yep makes sense.. So first goal isolate the depacker code ! Any good disassembler available ?


MagIO2 said...
I'd bet that the whole demo runs in PASM. It's using one COG to unpack code. Fetching it via I2C and transferring it to COG-RAM via port overlaying the old code - as it is much faster than unpacking it to HUB-RAM and then loading it to COG-RAM. The whole HUB-memory can then be used for data. Running one part of the demo, one or two COGs can already prepare the data for the next part (e.g. a mipmap of the picture).


Makes sense too, I did not know that you can directly from one cog update RAM of another cog without passing thru the hub. So globally the Hub RAM is the VGA frame buffer (I don't know if it is possible to use the Hub RAM directly as a Frame buffer of the rdlong penalty is too much for filling the waitvid...) ?

Timothy D. Swieter
04-16-2009, 04:55 PM
Shazz said...
I did not know that you can directly from one cog update RAM of another cog without passing thru the hub. So globally the Hub RAM is the VGA frame buffer (I don't know if it is possible to use the Hub RAM directly as a Frame buffer of the rdlong penalty is too much for filling the waitvid...) ?


You can pass data from one cog to another cog using the I/O pins and bypass the HUB RAM, it sounds like from previous posts that this may be happening.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Timothy D. Swieter, E.I.
www.brilldea.com (http://www.brilldea.com) - Prop Blade, LED Painter, RGB LEDs, 3.0" LCD Composite video display, eProto for SunSPOT
www.tdswieter.com (http://www.tdswieter.com)

Sapieha
04-16-2009, 05:01 PM
Makes sense too, I did not know that you can directly from one cog update RAM of another cog without passing thru the hub. So globally the Hub RAM is the VGA frame buffer (I don't know if it is possible to use the Hub RAM directly as a Frame buffer of the rdlong penalty is too much for filling the waitvid...) ?
Hi Shazz (http://forums.parallax.com/member.php?u=56153)

It is posible at hi comunicate COG to COG with PINs 0..9
With no attention on HUB

Ps. Pins 0..9 give 8 Data bits and 2 signaling lines

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

Post Edited (Sapieha) : 4/16/2009 9:06:23 AM GMT

Ale
04-16-2009, 05:20 PM
I think the relevant info is contained here http://forums.parallax.com/images/smilies/smile.gif

I'm using a not-yet-fully-functional-but-still-useful version of unpublished pPropellerSim everyone forgot about http://forums.parallax.com/images/smilies/cry.gif

Edit: Do not pay attention to the label's names, they are the interpreter's.

Shazz
04-16-2009, 05:30 PM
Ah ! very cool !
I tried to use pPropellerSim but I was not able to load what I want so I gave up... Ca you export the full disassembly listing and post it ? I'd like to follow it carefully and try understand what the routine in $030 is doing (coginit OUTB ???)

kuroneko
04-16-2009, 05:37 PM
Re: packing

It may be packed (I simply don't know) but then why would you waste 0K5 bytes at the end? Just to fill the 32K? It looks more like plain obfuscation.

Ahle2
04-16-2009, 05:58 PM
I can confirm that there is data being sent on the IO pins, as a lot of them "goes crasy" between the different parts in the Demo.

He uses up to 3 different graphics layers, with different resolutions and palettes, by using multiply video generators at the same time.
I'm not quite sure how the transparency works though, as there seems to be some "in between" colors of the mixed sources (like the SNES)
It would be easy to do it using only masking, like some kind of genlock/overlay, the same way as the dual playfield mode works on the Amiga.

One cog is loaded with the music player + music data, and just keeps on playing until the there is no more data.
You can actually hear the "PSG" still making sounds after the demos is finished, because the "envelopes" doesn't mute the "oscilators" entirely.

I'm quite sure that he uses some kind of "raster" technique for the blue zooming/rotating tube effect.

Ale
04-16-2009, 07:44 PM
The listing is as I posted it, it does not execute anything outside that small range. After some 7000 cycles executes the coginit OUTB. OUTB has a value of $00_a8_0b_0f.
Address for PAR = 00 00 00 00 10 10 10 = $00_a8
Address of code to load = %00_00_00_10 11 00_00 << 2 = %10 11000000 = $2c0

There is some code @2c0 mostly word writes to HUB RAM but the simulator fails when reading an address from memory. I have to add a mask.

Here is the disassembly of $2c0 till it fails at the djnz :-(

Bob Lawrence (VE1RLL)
04-16-2009, 08:27 PM
String list file attached(it's a little long to post it all):
Example 1:



seg000:00000018 00000005 C 555,\v
seg000:000000AB 00000005 C h/H<b
seg000:000000D8 00000018 C [ quaerendo invenietis ]
seg000:0000013F 00000006 unicode d
seg000:0000022A 00000006 C \bHB\b A
seg000:0000024B 00000006 C @0rE\"
seg000:000002E2 00000010 unicode \x1B*9GRcmx
seg000:00000302 00000006 unicode 9Yg

Example 2:

seg000:00007A11 00000008 C @&igbjjB
seg000:00007A1D 00000005 C 2[KgS
seg000:00007A39 00000005 C t\t\r\"{
seg000:00007ACE 00000005 C \r=i\b,
seg000:00007ADB 00000005 C ],ml\b
seg000:00007AFF 00000005 C v3 L`
seg000:00007B55 00000005 C O 46,
seg000:00007B5B 00000008 C rS7S'O{;
seg000:00007B81 00000005 C +4DM\r
seg000:00007C18 00000006 C peU77
seg000:00007D51 00000005 C oW<Ct
seg000:00007FA2 0000000D C turbulence
seg000:00007FB2 0000000D C lft 2009


▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

Post Edited (Bob Lawrence (VE1RLL)) : 4/16/2009 12:33:31 PM GMT

Shazz
04-16-2009, 09:58 PM
kuroneko said...
It may be packed (I simply don't know) but then why would you waste 0K5 bytes at the end? Just to fill the 32K? It looks more like plain obfuscation.


Oh you're right, that's just a guess but....
1. considering the bunch of stuff in the demo (rotozoom lenna bitmap, turbulence logo, the rose flower, the trees, 2 songs...) it starts to make some kbytes
2. in his Craft demo, Linus used a packer if I'm not wrong to depack on the fly data from the eeprom
3. in case of plain obfuscation, pattern/sequences are still there and looking at the binary, I did not find any pattern (usually very easy to "see" bitmaps & music stuff when watching the hexadecimal stuff), looks very condense like packed data. But ok not a formal proof
4. as Linus says in the hidden screen, he cannot filled the 32 Kb ! no more motivation+idea ! :D So yes, room left...

But I agree... you can be right :)

Shazz
04-16-2009, 10:03 PM
@CosmicBob : funny extract :) Sometimes I think I recognize words from the hidden part scroll text :) but I guess that's an optical illusion :) But definitively it looks like packed data as the size is smaller than real text (comparing to obfuscation/encryption)

@Ahle2 : I don't know how you did to understand all of that but really interesting ! And WOW the display technique seems coming from another palnet (in my noob mind)

Community hacking is really fun :) I learn a lot !

Post Edited (Shazz) : 4/16/2009 2:12:02 PM GMT

ProcessingData...
04-16-2009, 10:29 PM
I checked and the numbers displayed are not random.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Basic Stamp,···· Propeller,·· · SX,·· FUN!


START:·
>Proccessing Data. . . .··
>Task Complete. . .·.
>Saving Data. . . .
>Entering SLEEP Mode. . . .
>Signing OFF


·

Oldbitcollector (Jeff)
04-16-2009, 10:30 PM
Does anyone remember if the Demoboard ships with a 64K EEPROM?

I know the Protoboard does.. Has this been considered?

OBC

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?

Visit the: The Propeller Pages (http://www.warrantyvoid.us/tiki-index.php?page=Propeller) @ Warranty Void.

Shazz
04-16-2009, 10:32 PM
Oldbitcollector said...
Does anyone remember if the Demoboard ships with a 64K EEPROM?



I'll check at home but the Parallax DS says : 24LC256-I/ST (32K) and I don't think Linus cheats with that :)

Ahle2
04-16-2009, 11:15 PM
@Shazz
He he, i don't actually now anything, pure speculation using the exclusion method (there really isn't many options)
It kind of helps to know how those effects were made on the C64/Amiga ( which i do know )

The zooming part of the "roto zoomer", could have been done by altering some video parameters on the fly.

It's seems like everytime there is more than one layer of graphics on screen, some pins goes wild.
Transfering layer data between cogs/Syncing video generators?

potatohead
04-16-2009, 11:34 PM
My Demoboard had a 32K EEPROM.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

KPR
04-17-2009, 01:34 AM
I can't wait to see how this goes.. Being a noob, I'll just monitor, it helps if one know the language before one tries to hack.. I'm still going through the networking code trying to figure it out..

But that being said, I look forward in knowing how to pack/unpack code .. I think the time hit to unpack and move code into ram is a small price to pay considering the extra storage one can get in the eeprom..

I am assuming the same could be done for a 64k and a 128k??

I wonder how big his code is unpacked??

k.

Bob Lawrence (VE1RLL)
04-17-2009, 09:26 AM
Shazz said...
@CosmicBob : funny extract :) Sometimes I think I recognize words from the hidden part scroll text :) but I guess that's an optical illusion :) But definitively it looks like packed data as the size is smaller than real text (comparing to obfuscation/encryption)

I forgot to mention that I extracted 5 characters or more and nothing else. I'll re-do and take everything just it in case the first extraction is misleading in some regard.

Bye the way, I also put it into a language converter to see if some of the text was in Swedish but it' look the same (at a quick glance) http://forums.parallax.com/images/smilies/lol.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

Toby Seckshund
04-17-2009, 02:39 PM
Both of my prop arrangements have 64K eeroms, only because of Ybox2 experiments. On my boards the Tubulence logo glitches very slightly but the demo video doesn't.

Chris Micro
04-17-2009, 03:03 PM
A very good way to unterstand the compression tecnics and other things used is to take a look on the source code of Craft Project from Linus:

http://www.linusakesson.net/scene/craft/index.php

Shazz
04-17-2009, 03:27 PM
@KPR : I guess yes it should work easily with any EEPROM size as it is used as a mass storage and no direct relation to the RAM size... But if we don't mind of the compatibility (I mean most of prop owners seem to have 32 Kb EEPROM), better to use the SD adapter no ? (I don't know how much different it can be in terms of speed, I mean reading from the EEPROM vs. the SD Card, both use the prop I/Os so it should be inherent to the EEPROM and the SD speed ?)


Chris Micro said...
A very good way to understand the compression tecnics and other things used is to take a look on the source code of Craft Project from Linus:

http://www.linusakesson.net/scene/craft/index.php


Eh eh yep I did that too and look at the readchunck(ee) label in music.S... I did not yet really understand how this depacker works ["the unpacker represented by an eeprom pointer in Z "] but I did not find the real depacker code yet... Did you understand more than I how it works ?

mktitle.c is the packer, right ?

Post Edited (Shazz) : 4/17/2009 7:40:06 AM GMT

BEEP
04-17-2009, 07:23 PM
I think there are 3 video layers/3 cogs sending on PIN 0..2 to a cog which sends out the VGA signal.

Post Edited (BEEP) : 4/17/2009 11:34:01 AM GMT

KPR
04-17-2009, 10:35 PM
Shazz said...
@KPR : I guess yes it should work easily with any EEPROM size as it is used as a mass storage and no direct relation to the RAM size... But if we don't mind of the compatibility (I mean most of prop owners seem to have 32 Kb EEPROM), better to use the SD adapter no ? (I don't know how much different it can be in terms of speed, I mean reading from the EEPROM vs. the SD Card, both use the prop I/Os so it should be inherent to the EEPROM and the SD speed ?)


I was just figuring that a larger eeprom would be a logical choice since the code is already there and being used, as well as the 2 pins to reference it.. an sd reader would take up cogs / ram / pins.. So you don't get as much space, but resource wise it seems to be a better choice.. What do you think..

k.

Man now I'm really excited in seeing the code from this demo, It reminds me of when I spent weeks on dissembling the Crackto on the Apple ][ release of Ultima 3 by Crustaceo Mutoid..
http://forums.parallax.com/images/smilies/jumpin.gif

Shazz
04-17-2009, 11:21 PM
@KPR : yep right... in terms of resources that's a really logical choice after all.. But the way I just ordered the SD adapter from Brian, I need to check how much resource it needs.

And yes.... I felt the same while depacking then disassembling Atari ST cracktros... :) But for the moment, in terms of tools (debugger, disassembler,...) it looks more difficult on the Propeller... I'd like to find a way to dump the cogs RAM on demand and stuff like that...

But I'm sure we'll have to prove we deserve the sourcecode ! And a fist step is to understand clearly the depacker to be able to depack the whole demo first (would be sooo easier to dump the RAMs while executing but I don't know how to do that !).

KPR
04-18-2009, 12:49 AM
Shazz said...
@KPR : yep right... in terms of resources that's a really logical choice after all.. But the way I just ordered the SD adapter from Brian, I need to check how much resource it needs.

And yes.... I felt the same while depacking then disassembling Atari ST cracktros... :) But for the moment, in terms of tools (debugger, disassembler,...) it looks more difficult on the Propeller... I'd like to find a way to dump the cogs RAM on demand and stuff like that...

But I'm sure we'll have to prove we deserve the sourcecode ! And a fist step is to understand clearly the depacker to be able to depack the whole demo first (would be sooo easier to dump the RAMs while executing but I don't know how to do that !).


Well looks like I have some reading to do.. man its been 20 plus years since I played with assembly, god I feel old all of a sudden, 6502 assembly anyone..

There has to be a way to dump cog ram, you should post on its own and see what that brings up.. I have been watching this thread like a hawk since I seen the demo, off hand where you part of TSi?

k.

potatohead
04-18-2009, 01:21 AM
The COGs work completely independent of one another. There is no dumping of COG ram on demand, unless a bit of wedge code is inserted into the targeted program.

Once launched, their program area is filled from the designated HUB ram, and they start running. There is then no association between HUB ram, and any other COG ram.

This code is going to have to be parsed, starting with the EEPROM image load. We know what the propeller does on boot, and we have the image. That's it.

I think this is interesting, given all the threads we've had on protected code!! The result of those was making it difficult for others to see the code and that there is no perfect security. It appears that a very difficult puzzle can be made of the EEPROM image! Doing something like this and perhaps potting the chip is going to be decent protection.

LOL!!! Wonder if Linus read those threads too?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

KPR
04-18-2009, 01:34 AM
@potatohead - looks like I have to go back to the forums for some more reading now.. It would be nice if Linus were to give some hints.. you know dangle the carrot in front of the donkey so to speak..

k.

Shazz
04-18-2009, 01:53 AM
potatohead said...
The COGs work completely independent of one another. There is no dumping of COG ram on demand, unless a bit of wedge code is inserted into the targeted program.

Once launched, their program area is filled from the designated HUB ram, and they start running. There is then no association between HUB ram, and any other COG ram.

This code is going to have to be parsed, starting with the EEPROM image load. We know what the propeller does on boot, and we have the image. That's it.

I think this is interesting, given all the threads we've had on protected code!! The result of those was making it difficult for others to see the code and that there is no perfect security. It appears that a very difficult puzzle can be made of the EEPROM image! Doing something like this and perhaps potting the chip is going to be decent protection.

LOL!!! Wonder if Linus read those threads too?


Thanks for all those informations Mr Patate :) I try to read as many threads as possible from this forum but ouch, that's a lot ! So ok.... I thought it could be a good idea to start writing a kind of loader (quite similar to Chip's booter) to be set in RAM then in a Cog that can really does like the booter (Load EEPROM,...) but stay in a cog and watch, dump what's happening.
So I understand that's not so easy and I'll stick on disassembling the EEPROM and I hope to find+understand the depacker. For the moment I never thought that Linus tried to protect his code, only a packer in my point of view... Bah true or not, the challenge is still fun !

Dunno if Linus read that but as he started the challenge.... I guess yes.. a little... to have fun :)

ericball
04-18-2009, 04:35 AM
I haven't done any disassembly, but this is how I would do it:
The initial SPIN code just does a COGINIT( COG, @bootloader, @PARin) which puts the Prop in all-PASM mode. Linus can now use all 32K of HUB RAM. The bootloader is a decompressor, and it decompresses a chunk of HUB RAM, overwritting a "sacrificial" part of the initial 32K load. The bootloader then COGINIT's the other 7 COGs (and maybe itself) from the decompressed data. The HUB RAM is then reloaded from the EEPROM, and the second chunk is decompressed. Then everything kicks off.

Like potatohead said, in order to understand it you're going to have to walk the boot process just like crackers did in the Apple][ & C64 days.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Composite NTSC sprite driver: http://forums.parallax.com/showthread.php?p=800114

Shazz
04-18-2009, 05:16 AM
Eric.... you're more experienced than I am (so please tell me why I'm wrong, I need it !) but I would rather have imagined a flow which bypasses as much as possible the Hub RAM (and keep it for the VGA buffers and bitmaps and ok a little temporary (2K) buffer to unpack code to be transfer to a cog).
I mean, as you said the bootloader is a depacker, so a Cog is reserved to depack on demand.

But then, in my mind the depacker will first read some bytes from the EEPROM (and not from RAM which was cleared by the loader), depack them (one effect for example) in the hub RAM buffer, loop until the end of the block (code+data for the given effect), then coginit it to an available COG. And continue for the next effect and so on.

So in my case the data are really coming from the EEPROM and the Hub will only acts as a temporary buffer.

I thought it could be done like that as the demo doesn't work if the EEPROM is not containing the demo.

makes senses ???

Oh, about disassembly, I'm about to write my own disassembler as I cannot find one which works.... Did I miss something ? (before wasting some time)

potatohead
04-18-2009, 06:38 AM
It all gets loaded on first boot.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Shazz
04-18-2009, 04:14 PM
potatohead said...
It all gets loaded on first boot.

you mean ? no EEPROM further reads after the initial loading ???? (if yes, why is it mandatory to have the demo in EEPROM ?)

Sapieha
04-18-2009, 04:19 PM
Hi Shazz.

In my opinion COGs loads with first LOAD.
Then RUN decoding from EEProm and display Display it from HUB

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

Coley
04-18-2009, 05:24 PM
Working with the fact that the whole of the 32KB EEProm gets copied to Hub Ram.
What I think is that different parts of the demo which are 'packed' are overwritten in the Hub Ram when they are 'unpacked' therefore a copy of them needs to be retained in theEEProm for later use.
When they are needed they are loaded into Hub Ram from the EEProm and 'unpacked' again overwriting the Hub Ram.
A similar technique we use with PropGFX http://forums.parallax.com/images/smilies/wink.gif

Regards,

Coley

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

KPR
04-18-2009, 11:42 PM
Coley said...
Working with the fact that the whole of the 32KB EEProm gets copied to Hub Ram.


Isn't hub ram used for the VGA buffers as well?

k.

BEEP
04-19-2009, 03:08 AM
At last I (accidentally) found the hidden part http://forums.parallax.com/images/smilies/smile.gif

Coley
04-19-2009, 03:09 AM
From the Propeller datasheet..


If no host communication was detected, the Boot
Loader looks for an external 32 KB EEPROM on
pins P28 and P29. If an EEPROM is detected,
the entire 32 KB data image is loaded into the
Propeller chip’s global RAM.



So the EEProm image may also contain stack space for the VGA framebuffer that makes it up to 32K.
I doubt that Linus would be that wasteful, instead I think different parts of the demo are unpacked from the EEProm and they are loaded into cogs and run from there leaving as much possible free ram for the display.
Remember Linus clearly states at the beginning of the demo that the Propeller has 48K Ram, this implies (to me) he is using the COG Ram to full effect.


BEEP said...
I think there are 3 video layers/3 cogs sending on PIN 0..2 to a cog which sends out the VGA signal.

On my demoboard P0 and P1 are toast, so I only get one of the video layers displayed.

Do an experiment pull some of your pins P0-P7 down to ground and see what effect it has, you will be enlightened.

Regards,

Coley

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
PropGFX (http://www.propgfx.co.uk) - The home of the Hybrid Development System and PropGFX Lite

Bob Lawrence (VE1RLL)
04-19-2009, 03:41 AM
Watching the Oscilloscope patterns on pins 1 to 3 while running the program is interesting as well.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

BEEP
04-19-2009, 04:36 AM
@Coley
Yes I have discovered that all of the PIN 0..7 is active and in which part of the demo.

@Bob Lawrence
and watching pin 4 to 7 on my 1 channel oscilloscope was a bit boring and time-consuming (20 minutes).

Post Edited (BEEP) : 4/18/2009 8:41:43 PM GMT

Toby Seckshund
04-19-2009, 04:55 AM
When Linus stated that the prop had 48KB, I just assumed that he was counting all the cog rams together with the Hub ram.

jazzed
04-19-2009, 05:14 AM
If you have the hardware, my Propalyzer application lets you see all the activity except pins 30&31. You'll have to set triggers for state changes though. Looks like Linus is constantly reading EEPROM ... of course you can see that with a scope.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

Shazz
04-19-2009, 05:32 AM
BEEP said...

and watching pin 4 to 7 on my 1 channel oscilloscope was a bit boring and time-consuming (20 minutes).


LOL ! http://forums.parallax.com/images/smilies/lol.gif I just watched an episode of Big Bang Theory and I could have heard that ! :D


Jazzed said...

If you have the hardware, my Propalyzer application lets you see all the activity except pins 30&31. You'll have to set triggers for state changes though. Looks like Linus is constantly reading EEPROM ... of course you can see that with a scope.


ah !!! So my idea was the good one ! And so it explains/confirms the need of the demo in EEPROM (during all the time of the demo) to run. Thanks Jazzed, I feel better :)

btw, I nearly finished to code my PASM disassembler. I hope to post it there tomorrow. Maybe it would help.

ericball
04-19-2009, 10:25 AM
Shazz said...
Eric.... you're more experienced than I am (so please tell me why I'm wrong, I need it !) but I would rather have imagined a flow which bypasses as much as possible the Hub RAM (and keep it for the VGA buffers and bitmaps and ok a little temporary (2K) buffer to unpack code to be transfer to a cog).
I mean, as you said the bootloader is a depacker, so a Cog is reserved to depack on demand. But then, in my mind the depacker will first read some bytes from the EEPROM (and not from RAM which was cleared by the loader), depack them (one effect for example) in the hub RAM buffer, loop until the end of the block (code+data for the given effect), then coginit it to an available COG. And continue for the next effect and so on.· So in my case the data are really coming from the EEPROM and the Hub will only acts as a temporary buffer. I thought it could be done like that as the demo doesn't work if the EEPROM is not containing the demo. makes senses ???
Heh, you're right.· There's no reason to load the EEPROM to HUB RAM before decompressing it since the data from the EEPROM has to flow through a COG to get to HUB RAM in the first place.· Unless the EEPROM timing/space requirements means on the fly decompression isn't feasible.· Also, byte access is easier from HUB RAM, which may be valuable depending on the decompression algorithm.


▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Composite NTSC sprite driver: http://forums.parallax.com/showthread.php?p=800114

tonyp12
04-19-2009, 11:59 AM
Fact: All of his code is compressed except the first (guestimated) 80bytes

All of the 32kb eeprom gets read in to Hub Ram at boot
though reading the first 80 bytes would be enough, you can not stop the ROMs boot loader.

Only the first 80bytes in RAM is useful, the rest is useless.

The 80 bytes is a decompression routine,
that can read the eeprom from any mem location and any byte lengths.

A demo is a bunch of small programs run in sequence, so you never need all of the code in Hub RAM at one time.

Does he use IBM Code Pack with it's 60% ratio ??
http://www.eecs.umich.edu/~tnm/compress/publications/micro32-slides.pdf

KPR
04-19-2009, 12:02 PM
How does one display the hidden part?

k.

Shazz
04-19-2009, 04:54 PM
KPR said...
How does one display the hidden part?


1. Using the IDE, save the EEPROM as .binary
2. run the demo in EEPROM (power one so)
3. while the demo is running, using ViewPort, run the binary (so in RAM)
4. the hidden screen appear.

Don't ask me why, I found it by mistake :) I don't know why ViewPort loads the stuff differently than the Prop IDE...

Shazz
04-19-2009, 04:59 PM
tonyp12 said...
Fact: All of his code is compressed except the first (guestimated) 80bytes
All of the 32kb eeprom gets read in to Hub Ram at boot
though reading the first 80 bytes would be enough, you can not stop the ROMs boot loader.
Only the first 80bytes in RAM is useful, the rest is useless.
The 80 bytes is a decompression routine,
that can read the eeprom from any mem location and any byte lengths.
A demo is a bunch of small programs run in sequence, so you never need all of the code in Hub RAM at one time.
Does he use IBM Code Pack with it's 60% ratio ??
http://www.eecs.umich.edu/~tnm/compress/publications/micro32-slides.pdf


Excellent excellent, we slowly come all together to the same conclusions :)
And yep as you said the full EEPROM is loaded by Chip's loader in RAM but I'm quite sure Linus at the beginning coded a clean loop to set the VGA buffers, scratchpad and so on.
And yes, I agree totally the demo is probably a bunch of small COGs programs packed and depacked on demand.

But, why did you say 80 bytes ? did you extract the depacker code ?

I'll take a look at the IBM stuff... but I would bet that linus has written his own packer as he did for Craft.

Shazz
04-20-2009, 02:22 AM
As advertised, here is my weekend-coded PASM disassembler. Java 6 JRE required.
tmpstore.free.fr/propeller/PASMDisassembler_v0.1.zip (http://tmpstore.free.fr/propeller/PASMDisassembler_v0.1.zip)

Example of usage :
java -jar "PASMDisassembler.jar" turbulence.eeprom > turbulence.asm

If you find some issues, please tell me, I did not have time to write all JUnits to test all opcodes & conditions.
I'll publish the sources for the curious when the last bugs will be fixed.

As advertised, my PASM disassembler. Not fully finished (some command line options don't work as expected) but usable.

Java Runtime 6 required. Usage example :
Exemple of output for Linus's demo :



Disassembling from 0x0
Address Cell Data Conditions Opcode Destination Source
--------------------------------------------------------------------------------------
$00000000 $00000000 $5c7c0007 JMP #$00000007
$00000004 $00000001 $0010a66f IF_C_AND_NZ WRBYTE $053 $06f
$00000008 $00000002 $7fcc7fc4 LONG $7fcc7fc4
$0000000c $00000003 $7fd00018 LONG $7fd00018
$00000010 $00000004 $00027fb4 WRBYTE $13f $1b4
$00000014 $00000005 $00000008 WRBYTE $000 $008
$00000018 $00000006 $2c353535 LONG $2c353535
$0000001c $00000007 $a0fc060b MOV $003 #$0000000b
$00000020 $00000008 $5cfc6830 CALL #$00000030
$00000024 $00000009 $a0bc0a04 MOV $005 $004
$00000028 $0000000a $5cfc5a2b CALL #$0000002b
$0000002c $0000000b $5c4c0019 IF_NC JMP #$00000019
$00000030 $0000000c $a0fc0608 MOV $003 #$00000008
$00000034 $0000000d $5cfc6830 CALL #$00000030
$00000038 $0000000e $a0bc0c25 MOV $006 $025
$0000003c $0000000f $84bc0c04 SUB $006 $004
$00000040 $00000010 $a0fc0606 MOV $003 #$00000006
$00000044 $00000011 $5cfc6830 CALL #$00000030
$00000048 $00000012 $80fc0802 ADD $004 #$00000002
$0000004c $00000013 $00bfe006 RDBYTE $1f0 $006
$00000050 $00000014 $80fc0c01 ADD $006 #$00000001
$00000054 $00000015 $80fc4a01 ADD $025 #$00000001
$00000058 $00000016 $003fe025 WRBYTE $1f0 $025
$0000005c $00000017 $e4fc0813 DJNZ $004 #$00000013
$00000060 $00000018 $5c7c0022 JMP #$00000022
$00000064 $00000019 $a0fc0604 MOV $003 #$00000004
$00000068 $0000001a $5cfc6830 CALL #$00000030
$0000006c $0000001b $a0bc0c04 MOV $006 $004
$00000070 $0000001c $80fc0c01 ADD $006 #$00000001
$00000074 $0000001d $a0fc0608 MOV $003 #$00000008
$00000078 $0000001e $5cfc6830 CALL #$00000030
$0000007c $0000001f $80fc4a01 ADD $025 #$00000001
$00000080 $00000020 $003c0825 WRBYTE $004 $025
$00000084 $00000021 $e4fc0c1d DJNZ $006 #$0000001d
$00000088 $00000022 $e4fc0a0a DJNZ $005 #$0000000a
$0000008c $00000023 $5c7c0035 JMP #$00000035
$00000090 $00000024 $00000c24 WRBYTE $006 $024
$00000094 $00000025 $7d2800d3 LONG $7d2800d3
$00000098 $00000026 $00bc0424 RDBYTE $002 $024
$0000009c $00000027 $58fc0500 MOVI $002 #$00000100
$000000a0 $00000028 $80fc4801 ADD $024 #$00000001
$000000a4 $00000029 $2cfc4808 SHL $024 #$00000008
$000000a8 $0000002a $68bc4802 OR $024 $002
$000000ac $0000002b $623c482f LONG $623c482f
$000000b0 $0000002c $29d44801 LONG $29d44801
$000000b4 $0000002d $5c540000 IF_NZ JMP #$00000000
$000000b8 $0000002e $5c7c0026 JMP #$00000026
$000000bc $0000002f $ff000000 NOP
$000000c0 $00000030 $a0fc0800 MOV $004 #$00000000
$000000c4 $00000031 $5cfc5a2b CALL #$0000002b
$000000c8 $00000032 $34fc0801 RCL $004 #$00000001
$000000cc $00000033 $e4fc0631 DJNZ $003 #$00000031
$000000d0 $00000034 $5c7c0000 JMP #$00000000
$000000d4 $00000035 $0c7fea02 COGINIT $1f5


Post Edited (Shazz) : 4/19/2009 6:28:02 PM GMT

Sapieha
04-20-2009, 02:33 AM
Hi Shazz

First Bytes in BIN file is HEADER.

Adjust Disasembling to that.

My proposo to You is to have OPTION to Disassemble ...... FROM xxxx ..... TO xxxx

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

Shazz
04-20-2009, 02:38 AM
Sapieha said...
Hi Shazz

First Bytes in BIN file is HEADER.
Adjust Disasembling to that.
My proposo to You is to have OPTION to Disassemble ...... FROM xxxx ..... TO xxxx


About the header... I know.... but not sure I want handle it as Linus did not follow the header specs entirely :) Simply follow the first instruction and forget those useless stuff... Bah I'll add it one day.
The from/to is already there but not well implemented, use -s 0x01C -e 0x0FF for example (but doesn't stop at the good address :) )

jazzed
04-20-2009, 03:18 AM
Nice effort so far. Some problems .... $2b long is the TEST instruction with the WZ flag set ... $2c is a SHR instruction.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

Shazz
04-20-2009, 04:46 AM
jazzed said...
Nice effort so far. Some problems .... $2b long is the TEST instruction with the WZ flag set ... $2c is a SHR instruction.


Thanks Jazzed, there was a bug with the effects. fixed.
But better to create a new thread to avoid pollute the linus demo hacking challenge ! I'll do that with the next version.

Ale
04-20-2009, 04:53 AM
Shazz:

You can implement Hippy'S disassembler in java (it is written in some sor of BASIC) so I can use it in my pPropellerSim http://forums.parallax.com/images/smilies/lol.gif or you can get some ideas from it. sourceforge.projects=ppropellersim. That one is a little dated till I upgrade it with my current dev tree (I can send it to you if you are interested).
I posted the disassembly of one the COG'S program memory in page 4 or 5 of this thread http://forums.parallax.com/images/smilies/smile.gif

Shazz
04-20-2009, 03:16 PM
Ale, I have tested Hippy's proplist but I had some issues, the turbulence EEPROM was strangely disassembled (or I think so). Then I tried your pPropellerSim and I was not able to disassemble the eeprom too (only three strange instructions at the beginning then nothing), I did not have the disassembly you have posted. So.....
But yes if you have a version which works, please send it :)

BEEP
04-20-2009, 05:42 PM
I have made a small program to display the hidden part.

Edit:
A new version (test.zip) for Sapieha.

Post Edited (BEEP) : 4/20/2009 12:56:58 PM GMT

Sapieha
04-20-2009, 05:54 PM
Hi BEEP

What port it use.
Can You post litle help to this program

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

BEEP
04-20-2009, 06:51 PM
Run turbulence demo on the Propeller, click one of the buttons and the program scans port from 0 to 9.
If the Propeller is found it will reset to run the demo or download to ram to show the
hidden part.

If you got an error msg you probably have a bluetooth device or something else connected
to the USB ports. If you want I can set the port to a fixed number (send me a PM).

Post Edited (BEEP) : 4/20/2009 11:19:10 AM GMT

Sapieha
04-20-2009, 06:59 PM
Hi BEEP.

None of my Propelers Run on Ports 1-9.
It is my other Com systems that have them

My Prop Ports start at 15 - > Totaly 6

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

BEEP
04-20-2009, 07:44 PM
I will make a version for you with more ports and you can download it later from my old post above.
To display the hidden part you can use ViewPort (see earlier post from Shazz).

Shazz
04-20-2009, 07:56 PM
Beep, can you explain us what triggers the hidden part ? As I found it by mistake it is still a mystery for me...

BEEP
04-20-2009, 09:16 PM
I was trying to use Parallax source code to download to the Propeller and in the first test my program trigged the hidden part so I don't have a clue what is going on under the hood.

Shazz
04-20-2009, 09:24 PM
BEEP said...
I was trying to use Parallax source code to download to the Propeller and in the first test my program trigged the hidden part so I don't have a clue what is going on under the hood.


http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/hop.gif LOL :)
And basically from what you know, what does your exe do ?

KPR
04-21-2009, 12:05 AM
Yeah.. I just got my new test unit.. a few more days and I can play too..

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New ICON coming, gotta wait for the INK to heal, now we have colour!

kuroneko
04-21-2009, 03:23 PM
Shazz said...
Then I tried ... pPropellerSim and I was not able to disassemble the eeprom too (only three strange instructions at the beginning then nothing), I did not have the disassembly ...

Just load the *.eeprom file as *.bin (File -> Open binary ...), in this mode it's treated as headerless PASM. But don't believe everything you see (e.g. all special registers are cleared after coginit/cognew).

KPR
04-29-2009, 04:24 AM
Any further developments here?

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New ICON coming, gotta wait for the INK to heal, now we have colour!

Shazz
04-29-2009, 04:40 AM
yes http://forums.parallax.com/images/smilies/wink.gif

KPR
04-29-2009, 04:47 AM
Shazz said...
yes http://forums.parallax.com/images/smilies/wink.gif


Hahaha.. talk about dangling a carrot in front of a donkey.. eeee--awww!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New ICON coming, gotta wait for the INK to heal, now we have colour!

Shazz
04-30-2009, 03:28 AM
Kuroneko is Neo, he reads in the matrix :) And I do my best to follow him ! (Yeah, I took the red pill)

I'll try to post something this weekend http://forums.parallax.com/images/smilies/wink.gif

Follow us...
http://tinyurl.com/68k2z

kuroneko
05-02-2009, 08:01 PM
KPR said...
How does one display the hidden part?

For the terminally curious ...

Linus Akesson
05-04-2009, 11:49 PM
Hello again!

It's nice to see all the progress you're making! You can be sure I'm watching this thread. =)

Since some of you have cracked the unpacker now, I would suggest that your next step is to write a tool for unpacking data from a given offset in the eeprom file, into a new file. Do this for various offsets, then study the resulting files using hex editors, disassemblers and whatnot. Of course, it may not be entirely obvious which offsets to start unpacking from...

By the way, a better video rip is available on the project page now (www.linusakesson.net/scene/turbulence/ (http://www.linusakesson.net/scene/turbulence/)).

Shazz
05-05-2009, 02:47 PM
eh eh Linus so we're near of that.... currently I've got a command line depacker which as you mention take various offsets which are not obvious at all (that's my issue now, as your depacker maintains a buffer and a bit position from the previous depack, at least for the first 4 packed blocks)... So Kuroneko tries to help me to manage that :)

So I'm sure he's a little ahead of that.... and I'm sure his depacker is fully functional :)

Linus, the reversed bitstream, that was to nag us, no ? =D

Linus Akesson
05-05-2009, 09:32 PM
Shazz said...
Linus, the reversed bitstream, that was to nag us, no ? =D


When you think about it, data comes in through rdbyte, so it ends up in the low bits of a register. It's natural to shift them to the right, one at a time, into the carry flag. But you also want to concatenate a sequence of bits together into the low bits of another register. It's natural to shift them to the left, one at a time, from the carry flag. The bit order will be reversed, which seems counter-intuitive, but otherwise (e.g. shifting to the left both when reading and concatenating) you'd have to add at least one more instruction somewhere, in order to shift the destination register 32 - n bits. This would slow things down.

The fact that it would nag you was a bonus. =)

bmb!
05-05-2009, 11:52 PM
Linus, amazing demo. Had a chance to see it on real hardware last night instead of video. Very impressive! (watching a youtube video is not the same) I thought about writing a "old-school" type demo for the Prop myself but thought it might be too weak on the memory. You sir have proved me wrong! Would be interesting if a demo scene formed around the Prop... Working on firing up your demo last night brought back old "demo scene" memories. Days of watching a computer (now, just a little chip) do something you didn't even think was possible... Awesome!

Bamse
05-06-2009, 01:28 AM
I'm sure we are going to see a few more demos after someone manage to reverse engineer Linus Demo... http://forums.parallax.com/images/smilies/wink.gif

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Living on the planet Earth might be expensive but it includes a free trip around the sun every year...

Experience level:
[ ] Let's connect the motor to pin 1, it's a 6V motor so it should be fine.
[ ] OK, I got my resistors hooked up with the LEDs.
[X] I got the Motor hooked up with the H-bridge and the 555 is supplying the PWM.
[ ] Now, if I can only program the BOE-BOT to interface with he Flux Capacitor.
[ ] I dream in SX28 assembler...

/Bamse

Shazz
05-06-2009, 04:10 AM
So here is one result of our depacker...




java -jar ../dist/LoaderDecrypter.jar -o hidden.eeprom -r 0x07504 -w 0x00 turbulence.eeprom
Loading the file turbulence.eeprom
Saving the file hidden.eeprom
--- Depack report ---
Read data size : 1681
Written data size : 2048
Compression ratio : 18.0 %
Dictionary encoded bytes : 935
Reversed bitstream encoded bytes : 1113
Last Hub Src address : 0x07b95
Last Hub Dst address : 0x0800





Turbulence hidden screen said...

Welcome to the hidden part! You know what? It's really difficult to fill up 32 kilobytes. When you've got a really tight limit, like 4 kB, you almost immediately hit the roof, and spend most of the time trying to optimize a few bytes here and there. With a larger limit, say 64 kB, you've got plenty of room for animations, sound samples etc., so you tend to fill it up in that way. But with 32 kB, it's a real challenge. The way I work, I usually start out experimenting with a bunch of effects. Then, when inspiration strikes, I compose a piece of music, in the right mood. Once the music is finished, the duration of the demo (and, to some extent, the number of cuts) is fixed. Then I try to map the effects to the music, and hopefully the big picture emerges somehow. At that point I'll know exactly how large the demo will be. In the case of Turbulence, I think I had used about 24 kB then. By adding a few details here and there, I managed to increase the size with a few more kilobytes. Then I added the hidden part as a last measure. But I've still got plenty of space left. Oh well, I guess I'll have to give up and pad the file now. By the way, spring has just arrived in Lund, and I really shouldn't be sitting indoors typing scrolltext. Oh well, vita brevis, ars longa. It's a dirty job, but someone's gotta do it. Hmm, what else can I write about? The propeller chip is really cool! It's the renaissance of the home computer! Its architecture is very peculiar, in both good and bad ways. The limitations are just right. Indeed, the promised Propeller II seems to be a bit too high-end for my taste. High performance may be convenient, and even useful, but there's nothing like a bunch of complex limitations to get your creativity flowing. Anyway, if you're still reading this, you're obviously skilled in the art of concentration and patience. Nurture those abilities, and the world will be yours. That is all. Take care everyone, and keep on creating, inspiring and amazing each other!

Baggers
05-06-2009, 06:34 AM
excellent work Shazz :)

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
http://www.propgfx.co.uk/forum/·home of the PropGFX Lite

·

mpark
05-06-2009, 07:23 AM
Turbulence hidden screen said...

The propeller chip is really cool! It's the renaissance of the home computer! Its architecture is very peculiar, in both good and bad ways. The limitations are just right. Indeed, the promised Propeller II seems to be a bit too high-end for my taste. High performance may be convenient, and even useful, but there's nothing like a bunch of complex limitations to get your creativity flowing. Anyway, if you're still reading this, you're obviously skilled in the art of concentration and patience. Nurture those abilities, and the world will be yours. That is all. Take care everyone, and keep on creating, inspiring and amazing each other!



Well said, Linus!

kuroneko
05-07-2009, 09:50 AM
It is said...
The complete source code for Turbulence will be released when somebody has reverse engineered the binary enough to provide a detailed description of the techniques used in the greetings part (rotating face with text overlays).

That's where we want to end up. Let's get there step by step. It was suggested to brush the following topics:
bootstrap/unpacker
demo sequence (who does what)
workings of the rotozoomer
workings of the overlay/transparency
Well, starting with the infamous JMP #7 from an unusual location we end up straight in the decoder (I prefer that word, call it what you want) which picks up data from 0x0C24 and writes its first payload to 0x00D4. Note that all addresses are hub addresses (unless stated otherwise). Once finished, the cog will restart with coginit outb. How does the decoder work? The payload is stored reversed in a bit stream which interleaves data and control information.



units = read(11);
while (units--) {
if (read(1)) {
tmp = dst - read(8);
len = read(6) + 2;
for (i = 0; i < len; i++)
hub[++dst] = hub[tmp++];

continue;
}
len = read(4) + 1;
for (i = 0; i < len; i++)
hub[++dst] = read(8);
}


The read() function returns the requested number of bits in the correct order. Note that the destination address is specified one below the actual location (0x00D3 for the first block). The single bit consumed at the beginning of the loop decides whether we do a plain copy from the stream (0) or refer to data we already unpacked (1).

Let's have a look at the first 4 units:



c 00D4: 6E EC BF 68 38 5C FC 50 70 00 7C 5C F1 6F BC A0
c 00E4: 28 6E FC 80 36 48 3C 86 59 00 68 5C 5E DA FC 5C
c 00F4: 50 6E FC F8 6E E8 BF 68 18
r 00FD: 6E FC F8


The first three simply copy bytes from the stream to the destination. Unit 4 refers back to location 0x00F5 from where it copies 3 bytes.

Once decoding of the first block is complete the hub memory looks like this turbulence.pass_1.eeprom (http://forums.parallax.com/attachment.php?attachmentid=60329). Disassembling this file with your favourite tool will show that the coginit outb disappeared (only to come back later :) We now have access code for the EEPROM, some initial setup (video: cog 6/7, audio: cog 5), the hidden part check is done (IIRC 40+ negative edges on P31) as well as whether the demo is resident in EEPROM. After that, we get a final code update for cog 0 (written to 0x01C0) and one more coginit outb which drops us - eventually - into the demo sequence loop.

Which I will explain tomorrow as I have some real work to do as well :) For those who can't wait, here are some entry points which can be fed into the decoder.



hidden sequence
3485, 4940, 1fef, 16e0, 7504

normal sequence
16e0, 1fef, 6f43, 1d5d, 2699, 23b9, 312e, 2af7, 2f6f, 2c1c, 1991, 61cd, 3485, 509c
3b66, 37f3, 3c57, 6fbb, 3e8c, 7443, 4319, 408b, 4a8c, 3b3f, 4616, 39f0, 5343, 47d2

Post Edited (kuroneko) : 5/8/2009 12:14:01 AM GMT

jazzed
05-07-2009, 10:32 AM
Kudos so far kuroneko !

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve


Propalyzer: Propeller PC Logic Analyzer (http://www.brouhaha.com/~sdenson/Propalyzer)
http://forums.parallax.com/showthread.php?p=788230 (http://forums.parallax.com/showthread.php?p=788230)

kuroneko
05-08-2009, 09:47 AM
Disclaimer: Descriptions (especially for commands) may not exactly match their intended purpose. However, it tells me what I need to know :)
bootstrap/unpacker
demo sequence (who does what)
workings of the rotozoomer
workings of the overlay/transparency
Depending on whether you found the hidden part or not (the hidden part enabled by default was posted in this thread) you end up with two sequence descriptors located at 0x7D28 and 0x7D68. These are WORD tables with a header and bit stream locations (fit for the decoder). The fourth entry in the header describes the location of the command bit stream (0x7B96 and 0x7D11). Let's have a look at the hidden part as it's the shorter one.



7: init: primary/secondary

3: set palette
c 7C00: 00 04 0C 0C 3F
r 7C05: 3F 3F 3F

1: src: 7 (1FEF)
2: dst: 1 (7400)
4: cog: 2 (0) init

1: src: 6 (16E0)
2: dst: 1 (7400)
4: cog: 4 (0) init

1: src: 5 (3485)
2: dst: 1 (7400)
4: cog: 1 (1) init

1: src: 4 (4940)
2: dst: 1 (7400)
4: cog: 3 (0) init

1: src: 8 (7504)
2: dst: 1 (7400)

0: wait: 0 ==== (0 - infinite ) ============= 00:00.00 (0000)


This should be rather easy to follow. A bit stream is selected, then decoded to a given address and one out of 4 cogs (1-4) has to do the work. The last stream doesn't represent code but the scroller message (posted in this thread) which is picked up by cog 3 (started last). I could go into more detail as to what is done in the other 3 cogs but our main focus should stay on the greeting part. Besides, at this point it should be a piece of cake to figure out what's going on.

The normal part is rather long (5min, I'll attach the whole sequence as a file) so I show only the required fragment.



...
0: wait: 64 ==== (0 - infinite ) ============= 02:50.10 (0A00)
5: cog: 1 stop
5: cog: 2 stop
7: init: primary/secondary
3: set palette
c 7C00: 00
r 7C01: 00 00 00
1: src: 14 (61CD)
2: dst: 0 (0000)
3: set palette
c 7C00: 00 10 34 3D
1: src: 13 (2F6F)
2: dst: 1 (7400)
4: cog: 4 (0) init
0: wait: 63 ==== (0 - infinite ) ============= 02:54.13 (0A3F)
5: cog: 3 stop
0: wait: 129 ==== (0 - infinite ) ============= 03:03.07 (0AC0)
3: set palette
c 7C00: 00 10 34 3D 00
r 7C05: 00 10 34
c 7C08: 3F
r 7C09: 3F 3F 3F 3F 3F 3F 3F
1: src: 25 (4319)
2: dst: 1 (7400)
4: cog: 1 (0) init
4: cog: 2 (0) init
4: cog: 3 (0) init
0: wait: 314 ==== (0 - infinite ) ============= 03:24.06 (0BFA)
...


A blob of data is decoded from 0x61CD to 0x0000. This contains the face image (16K, 128x128) and the greeting messages. Then cog 4 is started (payload at 0x2F6F) which does the whole rotozoomer business. The latter is running on its own for about 10s, after that a new palette is loaded and the text overlay code (payload at 0x4319) extracted and distributed among cogs 1-3. The code splits up internally based on cogid which results in:
cog 3 driving colour index bit 3 for all 6 text rows
cog 1 driving colour index bit 2 for rows 1, 3 and 5
cog 2 driving colour index bit 2 for rows 2, 4 and 6
FYI, cog 4 drives colour index bits 1 and 0 giving a total of 16 colours for this part.

More details to follow. If anyone has a particular question, maybe I know the answer. Don't hesitate to ask.

Post Edited (kuroneko) : 5/8/2009 2:00:14 AM GMT

Shazz
05-08-2009, 03:53 PM
For the lazy guys, here is an implementation of the decoder/depacker as you wish.

tmpstore.free.fr/propeller/LoaderDecrypter_v0.2.zip (http://tmpstore.free.fr/propeller/LoaderDecrypter_v0.2.zip)

usage:



-r : source offset
-w : write offset
-o : outputfile
-e : output only decoded data

java -jar ../dist/LoaderDecrypter.jar -o newpass.eeprom -r 0x07504 -w 0x00 turbulence.eeprom

BEEP
05-09-2009, 12:03 AM
Shazz said...
Beep, can you explain us what triggers the hidden part ? As I found it by mistake it is still a mystery for me...

No longer, I hope http://forums.parallax.com/images/smilies/smile.gif

For us dummies. If you do a serial communication to the Propeller in the beginning of the Demo, it will trigger the hidden part.

I have disassembly a little bit of the eeprom file http://forums.parallax.com/images/smilies/smilewinkgrin.gif
CON
_clkmode = xtal1 + pll16x
_clkfreq = $5C7C0007

BEEP
05-09-2009, 12:30 AM
kuroneko said...

It is said...
the hidden part check is done (IIRC 40+ negative edges on P31) as well as whether the demo is resident in EEPROM.


Okay!, set pin 31 low, start the Demo and the Hidden part shows up http://forums.parallax.com/images/smilies/smile.gif

Edit:
I turned the connector wrong (pin 31 was floating) so with right connections it didn't work so I have to set the pin high/low(?) a moment after start up of the Propeller.

Post Edited (BEEP) : 5/8/2009 5:33:48 PM GMT

Sapieha
05-09-2009, 03:59 AM
Hi Linus
Watch my movie and see if you find what differentiates it from your
And why?

Ps. can't atach my video Sorry It is to big (279 MB)

If You have one e-mail address I can send it to You



▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

Post Edited (Sapieha) : 5/8/2009 8:17:37 PM GMT

kuroneko
05-09-2009, 10:02 AM
Sapieha said...
Watch my movie and see if you find what differentiates it from your
And why?

Can't you post screen shots? Or would that give away too much ;)

Sapieha
05-09-2009, 01:51 PM
Hi kuroneko.

Screen shoits give no clues.
Only if You watch entire video You can see al problems

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

kuroneko
05-09-2009, 03:56 PM
bootstrap/unpacker
demo sequence (who does what)
workings of the overlay/transparency
workings of the rotozoomer
VGA driver
Having mentioned colour bit indexes and palettes in the last part, I'll explain quickly how the (transparent) text overlay is done. Having dropped so many clues already it borders on stating the obvious but anyway ...

Effectively we are dealing with 3 sources (rotozoomer, primary (top) and secondary (middle) text layer). The palette is arranged like this:



%00--: 00 10 34 3D
%01--: 00 00 10 34
%1---: 3F 3F 3F 3F 3F 3F 3F 3F


The primary text layer controls bit 3, meaning any colour looking like %1--- resolves to white. The secondary (bit 2) comes into effect for %01-- which gives us a slightly darker appearance of %00-- which is covered by the rotozoomer. That's about it really. If the text bits are not driven high then you get the background image, otherwise either transparent (shadow) or opaque (main) text. I'll attach the background image (http://forums.parallax.com/attachment.php?attachmentid=60770) with two rectangles applied on top (instead of text) to demonstrate the effect.

Let's have a quick look at the rotozoomer next. While it might look complicated it isn't really that difficult. It obviously helps if your picture is using a power of two for width and height to deal with wraps (c mod 2^n is equivalent to c & (2^n - 1)). What happens?
start with the top left corner (x, y)
calculate the address inside your image data (e.g. y mul width + x)
plot this pixel
find the next location, x = (x + dx) mod width, y = (y + dy) mod height
repeat for each column (and subsequently row)
Now try that in PASM, in say 7 instructions! Here is what the inner loop looks like:




loop MOV $096, $098 ' (x, y): VUTS.RQPO.NMLK.JIHG.FEDC.BA98.7654.3210
MOVI $096, $096 ' 8765.4321.0MLK.JIHG.FEDC.BA98.7654.3210
SHL $096, #2 ' 6543.210M.LKJI.HGFE.DCBA.9876.5432.10--
SHR $096, #18 ' ----.----.----.----.--65.4321.0MLK.JIHG 16K address
RDBYTE OUTA, $096 ' feed pixel value to the video driver
ADDX $098, $09a wc ' apply dx and dy
DJNZ $094, #loop ' repeat for all columns


Which is quite impressive. If you follow the bit pattern on the right you'll see that the start coordinates come along as x << 16 + y. The increments are arranged in a slightly different way as they are applied in what I believe is 3.8 fixed point format (but IIRC only 2.8 is effectively used). Note also how an overflow from the dy fraction is applied (one sample late though) to the integer part (ADDX).



dx/dy: yyyy.yyyy.----.-XXX.xxxx.xxxx.----.-YYY


Incidentally, Linus, what is the lonely TEST linecount, #3 wz doing just after the loop?

Post Edited (kuroneko) : 5/9/2009 8:06:35 AM GMT

kuroneko
05-09-2009, 04:46 PM
BEEP said...
Okay!, set pin 31 low, start the Demo and the Hidden part shows up http://forums.parallax.com/images/smilies/smile.gif




MOV CTRA, :ctra
MOV FRQA, #1
ADD CNT, :delay
WAITCNT CNT, #0
CMP :target, PHSA WZ,WC
IF_C RDWORD $006, #$096 ' sequence table
IF_C ADD $006, #$040 ' switch to hidden sequence
IF_C WRWORD $006, #$096 ' update

:ctra long $3800001f
:delay long $10000000
:target long $00000028

Linus Akesson
05-10-2009, 01:08 PM
Excellent work! Not much left now before I'll publish the source code.


kuroneko said...
Incidentally, Linus, what is the lonely TEST linecount, #3 wz doing just after the loop?


That's a good question. I've traced this instruction back through the version control system, but it doesn't make sense back when it was written either. Except that it was checked in late at night. My best guess is that it was used for 4:3 aspect ratio correction, but that I later figured out that I'd perform the correction via dy instead.

kuroneko
05-11-2009, 08:11 PM
bootstrap/unpacker
demo sequence (who does what)
workings of the overlay/transparency
workings of the rotozoomer
VGA driver
We are nearly done. To be honest, it's slightly worse than taking the rotozoomer apart ;) Not so much about its general structure - which is obvious enough - but getting every detail right. What does each cog do:
generate a vsync pulse
generate the back porch, while doing so read in the palette from 0x7C00 and store it in the first 256 longs
spend 2 horizontal lines to sample video data from INA (240 pixels) into a line buffer
output the line buffer twice
repeat last two steps 120 times (2 lines collect, 2 lines emit)
front porch
The difference between cog 6 and 7 being that the latter outputs 2 back porch lines less (and 2 front porch lines more) which nicely interleaves both video signals. Let's have a look at how the data is collected and assembled:




MOV VSCL, $16d
WAITVID $172, #%1010 ' HSYNC pulse
WAITVID $172, $174 ' $00010203:$FFFFFFFF -> HSYNC = VSYNC = 0
MOV VSCL, $171
WAITVID $172, $174

MOVD :line, #$183 ' line buffer - 1
MOV $17e, #60 ' 60 * 4 bytes -> 240 pixels

:loop MOVS :b0, INA ' read colour index from INA and use this as palette source register
:line MOV $0-0, colour
:b0 MOV colour, $0-0
ADD :line, $175 ' $200, next long in line buffer

MOVS :b1, INA
SHL colour, #8
:b1 OR colour, $0-0
NOP

MOVS :b2, INA
SHL colour, #8
:b2 OR colour, $0-0
NOP

MOVS :b3, INA
SHL colour, #8
:b3 OR colour, $0-0
DJNZ $17e, #:loop

MOV $1bf, colour ' store last 4 pixels

... emit line buffer 2x


I mentioned before that fetching 240 pixels takes the time of two scan lines. So why do we only have a single HSYNC pulse and why is HSYNC/VSYNC = 0 for the entire time? It's not as bad as it looks but it had me puzzled for a while until I realised that the other cog emits two normal scan lines during that time. As the I/O pins are ORed together we get our second HSYNC pulse and don't have to worry about VSYNC being low. Colour byte assembly is fairly normal stuff here. Nothing much to see really. I think it's quite a nice design, especially the per frame palette update :)

That's it from my side. If anything needs more detail, let me know.

Thanks for providing that challenge, Linus!

Post Edited (kuroneko) : 5/11/2009 12:19:32 PM GMT

Linus Akesson
05-11-2009, 10:49 PM
kuroneko said...
That's it from my side. If anything needs more detail, let me know.

Thanks for providing that challenge, Linus!


Great work, kuroneko! Thanks for putting up with my little game. =) And thanks to Shazz and everyone else who worked on it as well!

Here is the source code as promised: www.linusakesson.net/scene/turbulence/source.php (http://www.linusakesson.net/scene/turbulence/source.php). You will find some documentation there as well.

KPR
05-12-2009, 05:31 AM
http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/hop.gif http://forums.parallax.com/images/smilies/hop.gif

Wow.. I know what I'll be doing for the next few days...

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New ICON coming, gotta wait for the INK to heal, now we have colour!

Shazz
05-12-2009, 03:15 PM
Linus Akesson said...
Great work, kuroneko! Thanks for putting up with my little game. =) And thanks to Shazz and everyone else who worked on it as well!

Here is the source code as promised: www.linusakesson.net/scene/turbulence/source.php (http://www.linusakesson.net/scene/turbulence/source.php). You will find some documentation there as well.


Thanks YOU Linus ! I had some great fun too, I tried to help Kuroneko as much as I can but basically he did most of the job and wasted his time to explain me a lot of stuff :)
At least it gave me the motivation to write some tools and yep I really discovered interesting things.... And thanks to Jazzed, MagIO2, Ale, Potatohead and friends who really helped at the beginning !

Now time to make good use of this wonderful demo sourcecode and why not coding a new demo http://forums.parallax.com/images/smilies/wink.gif A Forum Community demo for next BP would be great http://forums.parallax.com/images/smilies/wink.gif And I'm curious to see what Kuroneko would be able to achieve.... a good challenger for Linus ! :D

Linus, 2 questions :
- what is the format of your raw images ? (yes raw.. but... :))
- did you write a PC based tracker as you did for Craft ? Would be nice to have one plus a song player for the propeller, no ? :)

And if I forgot to say it, congrats again... amazing work in less than one year.... plasma looks very cool :) Especially the automated constant pool management !

Post Edited (Shazz) : 5/12/2009 7:20:16 AM GMT

Ahle2
05-14-2009, 04:51 AM
Sorry Linus, i couldn't find the time to join these guys in their reverse engineering quest :(
But Interestingly enough, almost all my assumption were right... as you might have seen in some early posts.

Are you going to make another demo using the propeller or are you going to use yet another micro controller for your next release ?

Anyway, it's nice to have another guy from Sweden at the same age as me here in the forum ;)

Linus Akesson
05-15-2009, 02:59 AM
Ahle2 said...
But Interestingly enough, almost all my assumption were right... as you might have seen in some early posts.


Yeah, I remember. =) But I didn't want to confirm anything at the time, since that was more of an educated guess than reverse engineering.


Ahle2 said...
Are you going to make another demo using the propeller or are you going to use yet another micro controller for your next release ?


I'm not planning another propeller demo for the time being. I've got some ideas for other propeller projects, though.

hinv
05-31-2009, 07:02 PM
Hi Linus,

I just tried it out on my demo board, and I was quite impressed!

I had a problem though. I have a microSD interface on pins 1through 4. If I left the card in it didn't look right. Are you passing data through those pins from cog to cog?

Thanks,
Doug

Toby Seckshund
05-31-2009, 07:30 PM
Doug

It was noticed within minutes of its release that the i/o pins were being used. One person noted that it wouldnt run at all on his bd that had broken ports. On my early bd, which has the poor Prop that I reverse voltsed, the "Turbulance" banner glitches but the demo runs on ok. Something had to happen to the poor little beasy, I suppose http://forums.parallax.com/images/smilies/blush.gif

Sapieha
05-31-2009, 07:47 PM
Hi Linus Akesson.

I run Yours Demo with 15MHz PLLx8 and it run fine on most parts but not on TUNNEL.
In this part it is glitches in motion.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

hinv
05-31-2009, 11:50 PM
..............oops, I should have read earlier that you posted the source. It seems you do use pin 0 through 7 as a databuss between the cogs.

Toby Seckshund
06-01-2009, 12:03 AM
Doug

I have just re read my post about the I/O pins, I am sorry if it sounded a bit sharp. I only noticed so quickly because one of my backburnner projects is a Z80 nailed to a prop. I had built that board with lots of jumpers and status LEDs. I was using turbulance to test the Arduino type piggy back board out and noticed the light show. It is at about that level my understanding ends. http://forums.parallax.com/images/smilies/smile.gif

potatohead
06-01-2009, 12:04 AM
120Mhz exceeds the known safe clock speed. Proper function of all elements is guaranteed @ 80Mhz, and is commonly accepted to be reliable at 96Mhz, but with no guarantee.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness! (http://propeller.wikispaces.com/)
Chat in real time with other Propellerheads on IRC #propeller @ freenode.net (http://propeller.wikispaces.com/Join+us+on+IRC%21/)
Safety Tip: Life is as good as YOU think it is!

Toby Seckshund
06-01-2009, 12:36 AM
Intel would tend to overproduce "good" chips but the market would only support those cutting edge seakers so a lot of full wack chips got underatted to fill the bulkof sales. This helped Intel to not have too many proc lying around and yet keep that top price for those that demanded it. Great for reliability, or overclockers. Amd tested and sold much nearer to the very best, that individual chip could handle.

Pros may well be sold under their true limit in the interests of guarenteed results or it may be that now the fabrication is matured the good yield is better than original spec. Plenty of people have tested them since. 80MHz to 96MHz is a respectable hype at 20% with nobody reporting problems. To take the internal to 15MHz with pll8 shows that there is a vast margin available to those wishing to try, within much tighter enviromentals than spec of course.

I once had an AVR chucking out 4 small pictures on a TV, then I realized that at 32MHz it was taking a 100% overclock

ProcessingData...
06-03-2009, 05:28 AM
Why is the sorce in .GZ format? With what program do you open it? I am itching to look at the code!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Basic Stamp,···· Propeller,·· · SX,·· FUN!


START:·
>Proccessing Data. . . .··
>Task Complete. . .·.
>Saving Data. . . .
>Entering SLEEP Mode. . . .
>Signing OFF


·

cgracey
06-03-2009, 06:42 AM
Linus,

I just downloaded the .eeprom file and ran it for the first time on a Propeller Demo Board.

Pretty amazing.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔


Chip Gracey
Parallax, Inc.

hover1
06-03-2009, 06:57 AM
Hey! Chip came up for some air! Must be working on a pretty important project. Maybe Prop 2 :)

Didn't you help Linus on that demo? Your name was in the credits. I thought you saw the demo before we did.

Jim

Sapieha
06-03-2009, 07:16 AM
Hi Linus Akesson.

Sorry if I have misused Yours code.

Hi All

For them that will test Linus Akesson's code with frequensies with PLLx8 that is 10-15MHz crystal.
I post my reedited code to support that. It is same code but only edit in it is position that give Propeller PLLx and recalculated checksum.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Nothing is impossible, there are only different degrees of difficulty.
For every stupid question there is at least one intelligent answer.
Don't guess - ask instead.
If you don't ask you won't know.
If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


Sapieha

kuroneko
06-03-2009, 08:11 AM
ProcessingData... said...
Why is the sorce in .GZ format? With what program do you open it? I am itching to look at the code!

Are you familiar with the gzip and tar command line tools? If not, IIRC the 7z frontend under win32 can deal with this kind of archive.

BradC
06-03-2009, 08:15 AM
kuroneko said...

ProcessingData... said...
Why is the sorce in .GZ format? With what program do you open it? I am itching to look at the code!

Are you familiar with the gzip and tar command line tools? If not, IIRC the 7z frontend under win32 can deal with this kind of archive.

So can winzip.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
"VOOM"?!? Mate, this bird wouldn't "voom" if you put four million volts through it! 'E's bleedin' demised!

cgracey
06-03-2009, 12:13 PM
hover1 said...
Hey! Chip came up for some air! Must be working on a pretty important project. Maybe Prop 2 :)

Didn't you help Linus on that demo? Your name was in the credits. I thought you saw the demo before we did.

Jim
No, Linus didn't need any of my help. He just popped up with that·thing. I think he was just being gracious to put my name in the credits. (Thanks, Linus!)


▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔


Chip Gracey
Parallax, Inc.

Cluso99
06-03-2009, 03:21 PM
Hey Chip - Now you have taken a breath, get back to work on Prop II.

Only joking, nice to see you around again http://forums.parallax.com/images/smilies/tongue.gif

We are really putting your prop through it's paces now http://forums.parallax.com/images/smilies/jumpin.gif what with external ram and overclocking !!

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:

· Home of the MultiBladeProps: TriBladeProp (http://forums.parallax.com/showthread.php?p=786418), SixBladeProp (http://forums.parallax.com/showthread.php?p=780033), website (Multiple propeller pcbs) (http://bluemagic.biz/cluso.htm)
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator) (http://forums.parallax.com/showthread.php?p=790917)
· Prop Tools under Development or Completed (Index) (http://forums.parallax.com/showthread.php?p=753439)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index (http://forums.parallax.com/showthread.php?p=778427))
· Search the Propeller forums (via Google) (http://search.parallax.com/search?site=parallax&client=parallax&output=xml_no_dtd&proxystylesheet=parallax&proxycustom=<HOME/>&ie=&oe=&lr=)
My cruising website is: ·www.bluemagic.biz (http://www.bluemagic.biz)·· MultiBladeProp is: www.bluemagic.biz/cluso.htm (http://www.bluemagic.biz/cluso.htm)

JLS
04-03-2014, 09:09 AM
Hi Linus

Many many thanks this great demo !

FM synth sound is very nice.

One question - is possible make obex from your FM synth ? (for use like SIDCog ... etc.)

This is very interesting - many thanks info

Kamil