VIC-20 JetPack [split from: VICE Build and Mods]

Modding and Technical Issues

Moderator: Moderators

User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Having looked at the source a bit, I agree... no point trying.
I will continue to use my AVR based VIC Bus Emulator for the "smoke testing".

My final project is a culmination of all other projects I have posted here.
Realizing that I spend more of my free time posting photos than actually coding, I have decided to just get this one done, and then show it off later!

This has worked quite well, as I am more than half complete now, and have the core features working.
I am going back into hiding to complete my work, but here is the quick overview.

Project Name : VIC-20 JetPack
Platform : 100% Stock VIC-20
Hardware Type : Single Plug-in Cartridge
Output : Standard Composite Monitor


Features Snapshot...

- 360 x 240 Video with 256 Colors (done)
- Fully overscanned (border free) to monitor (done)
- 32K Expansion with auto page swapping of 4MB (done)
- Built in OS that includes feature aware 6502 assembler (partial)
- IO mapped Blitter / Sprite System (partial)
- Feature rich Graphical Drawing System (todo)
- 4 Channel Sample Sound System (todo)
- Fast Loading over 2Mbs Serial (partial)


That is the small features list.

JetPack is my take on the amazing Super Expander that made my VIC so much fun back in the day.
The VIC-20 requires no modifications, and all original software will run without having to unplug the JetPack Cartridge.

Using the Fast Loader, you can bring up ROM game images instantly, so no more abuse on the expansion port.

Although this unit gives VIC more juice than an Amiga, it keeps to the original VIC-20 personality, using all original features, video, sound, and character sets. The VIC still does most of the work, like generating required video timing, compiling and running code on the 6502, file IO, and commanding the new GPU features.

The JetPack system is so compatible with the original hardware that all peripherals can be used. For instance, you can load a game from the 1541 that was even coded in basic and still use the JetPack functions. I have patched basic to understand JetPack Commands.

Hey, I am here again talking when I should be coding! My bad.

I will punch out of here answering one obvious question...

How does a stock, unmodified VIC-20 manage to output 360 x 240 Video and sampled sound to a 1702 monitor using only hardware plugged into the cartridge port???

The magic is in the FPGA, which captures the 6560 signal, rips it down into sync, luma, chroma, and then rebuilds it!
I had to hook into every IO line on the cartridge port, and really listen to what the VIC was saying.
The FPGA GPU runs at 16 times the color burst frequency, giving the VIC a 57.272MHz Graphics Engine.

I also decided that overscan would make great games and demos, JetPack puts out a 360 x 240 image, which the active viewable area ends up to be about 320 x 200. Yeah, just like the C64, but with no borders!

Anyhow... I must continue my work. A few hours each weekend until I am ready to post the completed project.

VIC-20 JetPack - Blast Your Games and Demos into Orbit!

later.
Brad
User avatar
orion70
VICtalian
Posts: 4341
Joined: Thu Feb 02, 2006 4:45 am
Location: Piacenza, Italy
Occupation: Biologist

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by orion70 »

Brad, this is just GREAT! Congrats on this new project. Are you planning to make it a commercial product?
Also, wouldn't this deserve its own thread in the H&T section?

EDIT: forgot I am a mod :). Split done.
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Thanks!
Looks like I am roped into posting regular updates now!

I never considered making it into a commercial product, but would certainly look to make a few more if there was interest.
Soon I will post some trial videos of the hardware working, so I will gauge the interest.

It's gardening season for me now, so progress will most likely crawl again until fall time.

Brad
a4000bear
Vic 20 Amateur
Posts: 57
Joined: Sun Jan 27, 2008 10:01 pm
Location: Australia

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by a4000bear »

Looks like a great project.

Just a few quick questions. Is it PAL or NTSC or switchable?
Does it support S-video output?

I'd love to get one, assuming it will work with PAL.
User avatar
mingle
Vic 20 Dabbler
Posts: 91
Joined: Sun Sep 25, 2016 2:38 am
Location: Melbourne, Australia

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by mingle »

Fantastic project, but I baulked a bit at the name - since "Jetpack" is a pretty well-known 8-bit game, although I don't think it was every officially released for the Vic.

How about something that better reflects its purpose (you mentioned the SuperExpander) like... "MegaExpander"

Mike.
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Thanks for the comments.

The name is not set in stone, and a better name may come along as the project comes together.

Since I started this as a "one-off" project, I did not plan to include PAL, but it could be done with some code modification. Of course, the real issue would be not having a PAL system to test on!

I also decided to keep as close to the original VIC format as possible, so I mixed Luma and Chroma for total compatibility with all of my composite monitors. My other recent projects used everything from VGA to HDMI, and to be honest, it took too much "feel" away from the VIC. For that reason, I have decided that this project shall only augment the VIC, and celebrate all of its features.Thus, my output is the standard two plug Audio and Video only.

I am not even going to consider a reproduction until everything is working perfectly. At that point, I would like to get down to one of the Canadian Commodore group meetings and let other VIC enthusiasts test and critique the unit. If there is interest, I will post all build data and try to arrange a cost effective small run.

For now, it's just a Sunday afternoon, rainy day project.
I will start posting my build log here though.

First demo will be VIC-20 Basic doing 100% smooth 60FPS over-scanned scrolling of a massive (4096 x 4096 bitmap) 256 color game screen in all directions, with single pixel resolution... something that Amiga can only dream of doing!

Cheers,
Brad
User avatar
cbmeeks
Vic 20 Enthusiast
Posts: 190
Joined: Tue May 18, 2004 12:36 pm
Website: http://meeks.co
Location: 8-bit Land
Occupation: Code Monkey

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by cbmeeks »

Radical Brad wrote:First demo will be VIC-20 Basic doing 100% smooth 60FPS over-scanned scrolling of a massive (4096 x 4096 bitmap) 256 color game screen in all directions, with single pixel resolution...
Would that not be 16 MB of RAM? Assuming one byte per pixel. If so, I would think you would need a lot of fast SRAM chips. I believe 4 MB SRAM chips are a bit pricey...IIRC. What are you going to use for that?
Radical Brad wrote: something that Amiga can only dream of doing!
I know you're joking but not a fair comparison. Weren't there pretty high-end video cards for the Amiga?

Also, my Amiga's don't dream of those kind of specs...they dream of 320x200 NTSC games with 4 pages in memory like God intended. :-D
Cat; the other white meat.
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Correct on all points!
My A500 was the last computer I actually enjoyed. After that, it became an arms-race of upgrades and bug swatting.
Enjoyable computing died when L.B.M. tanked Commodore, man!

My VIC will be able to do a lot of things the Amiga could not though, but that is more a testament to the FPGA I am using and takes nothing away from what the Hi-Torro team managed to make happen! I even considered a HAM mode for this project, but decided that breaking 8 bits into 4 bits for Luma and 4 bits for Chroma would be best. My pallete of 256 colors is broken into 16 colors, each with 16 levels of brightness. A built in "Color Shift" function in the Sprite Generator makes it easy to recolor any Sprite that is saved with 16 shades. I will be showing this as well in my first demo.

Yes, a full bitmap of that size would require 16MB, and since I am using 512K SRAMs, that would be 32 of them!
I do have addressing and IO pins set aside for that much, but only populated 2 MB (4 SRAMs) so far.
For my GFX test demo, I will create a Bitmap that is 64 times the size of the displayable PlayfFeld, and just make it a seamless tile.
Since my PlayField is 360x240, I will just use a 2880 x 1920 Bitmap, and repeat it to the full 4096 x 4096 available virtual screen.

Out of that 360x240 displayed PlayField, a standard TV or Monitor displays about 320 x 200 before seeping into the overscan area.

Another thing I forgot to mention is that the 6560 inside the VIC is still producing an image. The original image is multiplexed, and switchable with the image reconstructed by the FPGA, so all original VIC-20 software looks exactly the way it was intended. In "JetPack" mode, it is possible to put 360x240 graphics over the original VIC screen, which is why I claimed that this hardware is augmenting the VIC-20 rather than replacing it's character.

Sound will do the same, passing all original 6560 voices to the audio cable with the option to overlay the augmented Amiga-like 4 channel sampled sound.

Brad



cbmeeks wrote:
Would that not be 16 MB of RAM? Assuming one byte per pixel. If so, I would think you would need a lot of fast SRAM chips. I believe 4 MB SRAM chips are a bit pricey...IIRC. What are you going to use for that?

I know you're joking but not a fair comparison. Weren't there pretty high-end video cards for the Amiga?

Also, my Amiga's don't dream of those kind of specs...they dream of 320x200 NTSC games with 4 pages in memory like God intended. :-D
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Not much basement time lately. It's harvest season, so I use a pitchfork a lot more than a soldering iron these months!

I did manage to prototype the logic for my theoretical "Amiga Killer" color generator, and wadda ya know... it worked!
4096 colors?... yeah, that used to be a lot, but my VIC-20 can do 8192!
8KColors.jpg
What is shown above is a standard TV displaying 32 rows of different colors (CHROMA) , each with 256 brightness levels (LUMA).
The image on the TV is only 256 x 200, but that is because I decided to use only 8 bit counters to draw the frame (for now).
The top band is black and white, created by sending no chroma data for color number 0 of 31.

The entire circuit is running from the breadboard, and is using only 1980's style logic gates to generate the complete NTSC signal.
Timing is generated from the VIC generated video, with my new master Pixel Clock at 7.159MHz (14,318 MHz /2).
When complete, the new Video Enhancer will draw a 360 x 240 fully over-scanned image with simultaneous 8192 colors.

Since 256x32=8192, that means that the VIC can display twice as many colors as the Amiga HAM mode!

If y'all are wondering where the FPGA shown in the earlier photos went, well... I only use those to test basic theory.
The real project will be hand wired from ONLY 1980's style 74 logic gates. Modern tech. is highly over rated!

I probably won't get another hackin' day until winter, so here are the details on how logic gates make this magic real...

The master 14.318MHz clock is divided by 2 and by 4 to get the following...
- 7.159 MHz pixel clock that runs the counters that serve up the 360 x 240 live video frame from dual buffered SRAM.
- 3.579 MHz color clock that generates the color burst as well as the phase shifted color signal overlay.

Video data is stored in paired 8 bit SRAMs, giving 16 bits of pixel data, shich is split like so...
- BITS 00-07 : Luma Data, which is fed directly to an 8 bit R2R resistor DAC to create 256 brightness levels.
- BITS 08-12 : Chroma Data, which is fed to a series of propagation delay taps creating 32 different colors of NTSC.

The Chroma phase delay circuit is the real magic. I use six 74HC245 gates, each one chained to create 8 delays of the 3.579 color burst signal. All six gates are also chained, creating 32 distinct phase shifts of the color burst reference. Taps are mostly 1 or 2 gates apart, creating a nice even spread across the entire NTSC spectrum, which spans about 280 nanoseconds in total. Since each gate offers about 8ns of propagation delay, this works out perfectly.

The 32 phase shifted color streams are then multiplexed into four 74HC4051 multiplexers, selected as an address of 5 bits.
I chose only 5 bits for color, as 8ns is about the shortest controllable propagation I can create using 74 logic.

The other 3 bits of the 16 bit pixel data will be used like so...

BIT 13 : Alpha color (transparent pixel) to be not drawn when sending sprite or image data.
BIT 14 : Wrap-X for faster X/Y Sprite Generator math. Removes delays from needing a 74HC688 comparator.
BIT 15 : End of file marker for sprite and image data. Also saves time, removing the need for any comparators.

From this point on, I am feeling confident enough to put the FPGA away for good and continue on the final breadboard design, which will use ONLY 1980's style 74 logic chips and basic SRAM. I expect to require 300+ individual ICs in this design.

Keeping to the original design goals, an unmodified stock VIC-20 will simply plug in through the cartridge port.
The end result should be the most powerful 8 bit computer ever conceived, and all made with 80's logic.
... better 37 years late than never!

Later,
Radical Brad
User avatar
Kweepa
Vic 20 Scientist
Posts: 1315
Joined: Fri Jan 04, 2008 5:11 pm
Location: Austin, Texas
Occupation: Game maker

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Kweepa »

300 ICs!?
Image
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

At least 300, perhaps 500!

Here is just the Video Generator part of the unit I prototyped a few years ago.
I ended up filling both boards, and that alone was 200+ ICs.
That unit was VGA, which is WAY easier to do than NTSC, which I am doing now.
That unit only did 256 colors, and now I am also doing 8912 colors.
My new system will have 16MB of SRAM, that one had only 4MB.

The new design is going to be MUCH more powerful.

My goal is to make the most powerful 8 bit computer ever designed (using of the era components).
Of course, the VIC-20 will be the host of this power, as it should be!
V74.jpg
Now, what is that beast in the photo your posted?
Looks like some type of magnetic memory core.

I actually envision my final design looking along these lines, hand wired to copper bus bars, arranged in a circular patter as to show off the insanity.

Brad
Kweepa wrote:300 ICs!?
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Mike »

Radical Brad wrote:Now, what is that beast in the photo your posted?
It's a Cray-1 or Cray X-MP.

Edit: right click and save reveal the image's name to be "cray-1.jpg". ;)
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

The Cray-1, with 160 MFLOPS in 1975 was a real screamer!
The higher end 32 bit PIC micros I use can only crank out 15 MFLOPS, running at 200 MHz.
I tried to find an MFLOPS rating for a 6502 at 1MHz, but nothing came up.

Brad

Mike wrote:
Radical Brad wrote:Now, what is that beast in the photo your posted?
It's a Cray-1 or Cray X-MP.

Edit: right click and save reveal the image's name to be "cray-1.jpg". ;)
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Mike »

Radical Brad wrote:I tried to find an MFLOPS rating for a 6502 at 1MHz, but nothing came up.
I'd estimate something just a tad bit short of 0.001 MFLOPS.

The main loop of my Mandelbrot zoomer calculates ~120 iterations/second when it drives the arithmetic routines of CBM BASIC directly (i.e. without any conceivable overhead of variable lookup and expression parsing). That main loop comprises 3 multiplications and 4 additions/subtractions (plus one multiply-times-2 and one comparison, but both are optimized and don't count), so those are 7 multiply/add operations per loop => 840 operations per second.
User avatar
Radical Brad
Vic 20 Devotee
Posts: 256
Joined: Sat Jun 24, 2017 8:18 pm
Website: http://www.AtomicZombie.com
Location: Kakabeka Falls, ONT
Occupation: hACKER

Re: VIC-20 JetPack [split from: VICE Build and Mods]

Post by Radical Brad »

Huge difference indeed.

I wonder what performance the VIC will end up with when my giant breadboard is up and running?
MFLOPS is all about computation, so the 6502 crawls with no multiply and divide.
My system will have 16 bit math (Add, Sub, Mul, Div, Sin), all working as single cycle lookup tables.
So the VIC will be able to do things like 234/23 or SIN(143) in one machine cycle.

If I feel like torturing myself even more, I will solder up even more SRAM to make 16x16 math tables.
I have already soldered 32 (512K SOJ) SRAMs to DIP sockets, so I am taking a break from it to work on the design now.
sram1.jpg
sram2.jpg
That Cray was simply amazing for the time.
ECL logic for everything, 80MHz master clock, 6ns SRAM!

http://www.computerhistory.org/revoluti ... uters/10/7

Brad

Mike wrote:
Radical Brad wrote:I tried to find an MFLOPS rating for a 6502 at 1MHz, but nothing came up.
I'd estimate something just a tad bit short of 0.001 MFLOPS.

The main loop of my Mandelbrot zoomer calculates ~120 iterations/second when it drives the arithmetic routines of CBM BASIC directly (i.e. without any conceivable overhead of variable lookup and expression parsing). That main loop comprises 3 multiplications and 4 additions/subtractions (plus one multiply-times-2 and one comparison, but both are optimized and don't count), so those are 7 multiply/add operations per loop => 840 operations per second.
Post Reply