Zikzak - crummiest 8bit console/computer ever .. but I'm making it!


I made a spreadsheet early on so every time I acquire an IC at least its catalogued...


But the counts are not accurate but I have a vague idea :0


Lately I'm melting heatsinks off everything I can find :)
 
Ahright then .. How does this MD switch work?


Banking ram is easily done but switching pal/ntsc?
Well, the MegaDrive 2 has an ASIC containing the CPU and audio chip. One of the pins define the video signal is at 60 or 50Hz the other is for the language, Japanese or "International".

So, you cut the tracks going to those two pins, get the +5V and GND signals elsewhere. Depending on the combination you want, you connect the pins to either 5V or GND.

Look at the mmmonkey website for more informations ^^

The problem is when you switch to 60Hz on a PAL console, the composite signal is messed up, you have a blurry black and white image. I've found a mod from damomonster to get a clean NTSC signal on composite output.

I could have used real switches, but I wanted to make something fancier :p

As you can see, it's really simple and fast to do.

About keeping inventory: There's also this: http://ecdb.net
My main problem isn't the database, it's the space to store and organize my parts :D
 
Last edited by a moderator:
Ahright then .. How does this MD switch work?


Banking ram is easily done but switching pal/ntsc?
Well, the MegaDrive 2 has an ASIC containing the CPU and audio chip. One of the pins define the video signal is at 60 or 50Hz the other is for the language, Japanese or "International".

So, you cut the tracks going to those two pins, get the +5V and GND signals elsewhere. Depending on the combination you want, you connect the pins to either 5V or GND.

Look at the mmmonkey website for more informations ^^

The problem is when you switch to 60Hz on a PAL console, the composite signal is messed up, you have a blurry black and white image. I've found a mod from damomonster to get a clean NTSC signal on composite output.

I could have used real switches, but I wanted to make something fancier :p

As you can see, it's really simple and fast to do.


About keeping inventory: There's also this: http://ecdb.net
My main problem isn't the database, it's the space to store and organize my parts :D
Amen :)

Couple years back, I'd picked up a little cupboard-thing in sale .. like $60 for a flatpack assemble-yourself mini-armoir; relocated my 'office' into the basement so I could get messy, and then bought a bunch of those stackable parts-bins, the bigger ones, like little shoeboxes with angled mouths you can reach into; filled up the mini-armoir with those.

Also one of those hang-on-wall mini-parts-bins thingies, that has a grid of 5x10 little drawers, for resistors, caps, bits.

Still, not enough!

So built the bench to hold all the gear (o-scope etc), and some big metal bins underneath to hold big stuff.

Finally, enough space.. for now.

Run out of space quick, when using a heat gun to melt everythign off everything you can find :eek:

jeff
 
Mad busy lately, but a little progress.

Because right above, I said 'okay, so going to work on a two board bridged approach' or something, I've gone and worked on a SBC (single board computer) version instead :eek:

I like the idea of a stackable board system, since it keeps the gpu separate for other projects, and keeps both with all the possiblw breakout pins etc; great for hacking sake. But it also makes it a bit more fragile (not good when cartridges are involved), and maybe harder to understand for noobies.

So currently, just copy-pasta'd the GPU into the cpu schem, and saved to a new sbc schematic; dropped a lot of the breakout headers (especially on gpu side..) - the gpu should really just be a gpu, and not be leveraged for its own i2c, spi, etc etc peripherals. That would cause the gpu to then read its many GPIOs and start storing event logs into RAM for the cpu to use; thats all fine, but not the design I want to have, which is 'dumb gpu', and all the real work going on in the cpu side, traditional style. Besides, the eZ80 is fairly fully features, with i2c, spi, serial, gpio, etc, available and already broken out on headers.

So, sbc means no need for all the power in and power out and piles of duplicate power headers, since its all in one (though I still keep some on there for pull up/downs and handyness); all the address/data/ctrl bus headers and ribbon cables go away, saving a lot of space; well, I may keep some smaller ("low 8 bit' address breakouts, just in case peopel want to use them on the scope, or for adding in some /ioreq IO space chip selects, etc..); anyway, fiddling with the design now.

Goal is for whole thing to fit on a 4"x6" pcb; ideally 4"x4", but that'd mean dropping all the breakjout headers, just no space for it all; if I can fit it all in the 4x6, that'd be sweet :)

Still all header pins, and not actual connector jacks; they eat up a lot of space, and are a PITA (lock into specific parts.)

Oh, I did correct a couple minor design bugs (adding optional pull-ups to ps/2 keyboard fwiw, though it seems to work anyway.)

Anyway, more later.. time is tight; I trhink schem is done for sbc, just need to verify some things, and check and re-check and re-re-check all the connections are solid, and then do the pcb layout; I'm sure that will be dreadful again, but who knows; if I can get the pcb layout done over the next week, be slick. At 4x6 inch pcb, its 5 copies of the pcb only, and like $30 instead of $12.. but okay, just this once, we'll see. IF people want some, and if it all still works after conversion to sbc form, then I can knock out another 10 or whatever as needed.

jeff
 
Back from "vacation" (working way too hard on house projects .. when did vacation turn into 'big multi week chores'? :) .. hope to get some more progress very soon!

jeff
 
You know, heres a funny idea.

I did a bunch of schematic and basic pcb layout work weeks ago, in a 'sbc' (single board computer) style; pcb would be a bit bigger due to mashing it all together, and still just header pins (not actual connector solder points, since that commits you to part selection and all that.) The actual pcb will be much pricier (like $40 or $50 for 5 or 10, something like that, instead of like $12 for 10), and looks like it'll be pretty rough to do routing for.  Even if I go no further with the hardware (ie: kits etc), I'd still like at least one 'complete' unit in a case, so I can leave it on my shelf and plug it into a monitor/tv once in awhile (and work on cartridge code!) .. so a single board or otherwisde more complete unit is desirable.

I'm just fealing the pinch of time (as always, but especially lately _feeling_ it ;) , so worried about the 2-3 weeks or more of routing time needed.

Options that come to mind are..

- sbc - the single board version noted above, which is schematiced and found a few minor issues to fix, and is a hell of a routing job

- 'bridge' - make a tiny little pcb, L shaped or a straight bar if I tweak GPU pcb designs a bit, that replaces the ribbon cables; essentially a little pcb with header pins out the bottom that you plug in, instead of rediculous ribbons

- ribbons - try to redo the existing cpu/base + gpu pcbs so the ribbon connectors are on closes edges to each other, so can make little 2" ribbons straight over, no twisting or bending needed.

- stacking - try to redo the existing pcbs so the pcbs can stack

Now, since obviously I'm trying to be lazy and dodge all the routing issues, then stacking and ribbons are sort of out; the sbc is the way to go, if going to commit to a lot of routing (though stacking is just cool ;)

Now, I can do code and such on it _right now_ as is, but the spaghetti mess of ribbons is offputting and annoys me. It is afterall an excuswe to learn the electrical design and not the coding per se, so I'd like the design (within the domin of restrictions I put on the project) to be clean.

(and hell, one day I should design an actual more modern and useful design; its nice to know I could design something like the caanoo or GCWZero theoretically)

So it is tempting to just knock out a little pcb, that replaces the ribbons and works with the pcbs more or less as is. Be like a $5 or $10 pcb to get a stack of them, and give a little bit of rigidity to it (not a lot ;) , but at least get rid of the nasty looking ribbons and replace them with nasty little hack pcb :)

Sort of a fun idea, as a stopgap; put that together in a single night, send the order out, and then can worry about the SBC version 'later' as time dribbles in.,

Or maybe I should just get my game on, buckle down, and get the sbc together, since thats where I've been going since oh, day zero :)

jeff

edit :Gets back to work on the SBC pcb..
 
Last edited by a moderator:
... and the Zikzak SBC (single board) board has been submitted to boardhouse :) 15x10cm (6"x4").

I rushed the heck out of it.. really nasty layout, but it really is a fairly dense board so not much you can do anyway. Just wanted to get it out so I could get back and relax a bit ;)

Hopefully we find out whats-what in a week or two; it'll be very exciting.. populate the eZ80 and STM on there, caps and some headers, and see if she still works in this form factor; given all the boards have worked well so far, I have high hopes for this.. shoudl be sweet. Fixed up the drill hole sizes on the cart slot edge connector of course, so shoudl be able to have the carts standing upright.

If this guy works well, the question then will be.. go for another rev that just adds the actual ports onto the pcb (ugh, lock in etc), or just make a little pack of header-female->connector guys, to jack on; then design a case around that, 3d print it, and call it a day for myself.. and see if anyone else wants in.

So, nearly there; who knows, maybe a rev2 will be needed if some trace thicknesses are too thin, or any such minutia, but.. will be very exciting in a week or two!

jeff
 
Zik80 single board pcb has arrived .. Looks pretty sweet! I'll start populating soon as I can.. Should have some basic audio and such working soon.


Very exciting to see if it works piece by piece.. Hoping for full success!
 
Working well so far, though a little dumb bad luck at the wrong moment ..

First, check out these sexy pictures; I think this is a hot looking board. Good size too .. little longer than a pop can is tall. (6"x4") .. expensive little bastard though! (4"-square is about $12 for 10; this guy was what, $38 for 5; factor in another $20-ish for shipping, and we're talking roughly $60/5 or $13ea, compared to about $3ea including shipping for the little guys.)

Mostly populated, from an angle top down view:

zik80-sbc-pcb-populated-45.jpg

And a shot of the top and bottom unpopulated pcb:

zik80-sbc-pcb-topbottom.jpg

What works so far?

- the GPU (stm32) rendering to VGA works a treat! did two revs of the dedicated gpu board, so I should hope so!) (so flashing it, running, clocking it, etc)

- the CPU (eZ80) running .. perfect (again, programming it, clock, etc, all good.)

- GPU -> serial -> USB -> console, to send commands to the GPU works fine

- Audio (driven by CPU) works great; means the OR and AND gates and oscilator all good (think about it.. got a 20MHz clock for eZ80, a 16MHz oe 8MHz clock for STM32, and a  giant case oscilator for the Pokey AY-3-89xx)

- reset switches, etc, all that stuff okay

This suggests almost certainly that joysticks, keyboard, are okay.

Pretty certain cartridge is okay, but will test that later.

What I screwed up:

- so far, nothing wrong in the design!

But when soldering it all together (which takes quite awhile actually, since I'm pretty careful or slow) .. a couple pads on the STM32 side lifted off the pcb, and the pins got bent a bit while I tried to address that; sadly, on pins I need. (the stm32 pins are only half used, since I'm keeping it more or less a dedicated GPU, and not relying on it for fancy stuff. Now, you can surely use the STM32 as the cpu and have it control the bus, driving games entirely from the high speed ARM chip :) .. but I've not really wired up a lot of the extra pins.. a spare GPIO for sensors/etc, and all the bus stuff, and the VGA stuff, and thats about it. The GPIO includes the serial parts of course, so thats still available.)

The pads that got funky look like the A14 and A15 sort of area; I'm fairly sure they're not shorted together or into something, as a continuity check is not turning up anything obvious. I think they're just left floating right now.

The result (of something, hoping its 'just' that loose pads) is that when the GPU hits the bus to read from the CPU, its getting garbled image back; its definately grabbing the bus BUSREQ and getting the BUSACK response, and its definately eeing the RAM more or less okay (can see whats going on), but its getting 4 copies of the image tiled.. like, a 2x2 grid of the image, and all garbly. You can see the image the Z80 is presenting, but its mlutipled and garbled.

It could be something else though.. and debugging this will suck. Going through all those solder joints, and checking the hardware design, and all that, will be a lot of guesswork and probing. But hey..

.. nearly there :)

Its mostly working, and the design still looks solid and awesome; audio is playing! I need to write up the keyboard driver for the z80 (currently avr8 based) and get that tested, and test some gpios and joysticks and the ROM cartridge slot .. but really expecting fully working there.

So, once I debug the likely bad solder between these two guys, it'll be time to write some basic demos and games to show off :)

jeff
 
...

So, once I debug the likely bad solder between these two guys, it'll be time to write some basic demos and games to show off :)
Congrats on making it this far! I've enjoyed reading the whole saga, although much of it went over my head. You sir, are truly a mad scientist.
 
Well, if nothing else, I can say that I 'stick to it'; wasn't really sure I'd ever get this far, and yet.. woowoo :)

Nooow, we'll see if I can debug this glitchiness thats shown up in the SBC but not in the separate pcb version .. if I can, that.. we're 'done' the first phase, and then to see if anyone wants one :eek:

jeff
 
The GPU rendering to VGA is fine; but the bad soldering, lifted pad, or whatever is causing a glitch, is showing up with the following image. (I could assemble another pcb, but prefer not to spend that 4 or 6 hours soldering, not to mention the fairly expensive pcb and parts .. but thats a possibility; its entirely likely a bad solder joint or whatever, and that a second board would work just fine. Still, desoldering the eZ80 and stm32f429 for later use is a bit of a drag.)

the eZ80 side is doing a line demo; it wipes RAM to '1', and then does a random line draw. The GPU in turn shows it, when told to; you can see that the GPU is showing mirror images of the image .. a 2x2 grid of them, more or less. There are alternating vertical lines.

So, on the eZ80 side, if you do a ram fill of '1', and then read it back, I'm seeing 1 0 1 0 1 0 .. etc. (This is why the vertical lines on the GPU.. he's reading back, and seeing only every other value.) (The GPU only renders non-zero, as a sort of transparency effect, right now, so the lines are drawn over the colour grid .. a bit hard to see, but it heklps me debug :)

So at irst blush .. if A0 (address 0) is being held low/high, or shorted with something, that could do it .. but this occurs to me .. if A0 is always 1 or 0, then you could think that a write of 1 1 1 1 would turn out to RAM as 1 0 1 0 (true!), but reading it back on same chip would result in 1 1 1 1 then .. ie: the A0 would force it to write to every other column, but also read evbery other column; so it would write badly, but come back 'okay', in the all-values-are-one scenario. If you wrote out 2 1 2 1, then RAM would get 2 0 2 0, and you'd read back 2 2 2 2, say.) So I can do some tests and find out, that.

But the mirroring of the image, into the 2x2 image grid, is interesting, no? a higher memory address is shorting to A0, maybe, or something funny?

I'm sick right now, fever, chills, etc.. maybe not the best mental state for debugging this :)

jeff
 
Really need to go back and debug the soldering on that first board; some expensive parts on there! But a couple pads came loose, and..

.. I spent 2 hours soldering up board #2 of the single board revision, thought what the hell.. the design is solid imho, so probabyl just those bad pads; might as well make another, and compare the two.

WORKS PERFECTLY.

So, yeah..

HAPPY DANCE!

No time now.. more testing later, get a lame pic of uber hotness :)

jeff
 
okay, the lame linedemo running again.. but with added fonty bullshit :)

Now, this is driven by the z80, with the stm32 acting purely as gpu; right now its not optomised (the code, or the electrical protocol) so the gpu is hammering the z80 to bits; once I get around to actually writing some useful code instead of little hacky bits to test things, I can clean things up, speed up the ram access etc; likewise, dont' need to grab the whole ram buffer probably .. maybe grab changed bits, etc, etc. But for now, hey, the damned thing works pretty well :)

https://www.youtube.com/embed/videoseries?list=UUGQF542dq8RhizMRFbBnBaA

uh, er, so now what? write that shitty little space invader-like game? work on SkeeBASIC? a lame text adventure? (heck, port ScottFree and run Scott Adams original text adventures on there!) .... work on formalizing the basic BIOS a little so the firmware has some actual routines the carts can leverage (like the font rendering business)? really, likely no one will ever see any of it :eek:

.. or get back to work on C4A like I've long promised.. decisions decisions!

Well, I do need to get the case designed and 3d printed, and .. can't stop now!

edit: I do want to add a little 'monitor' tool to both sides .. an always on serial console, that can do memory dumps, flashing of the chip itself or the cartridge rom, mess with RAM and program state, etc; so connect serial to one or both of cpu and gpu, and can update things or mess around; should configure SkeeBASIC so it can accdpt input from either serial or the ps/2 keyboard, etc...

jeff
 
Last edited by a moderator:
Well Done Skeezix! I wish I had the tenacity of finishing a project like that.. I tend to start a million things and finish none of them.
 
okay, the lame linedemo running again.. but with added fonty bullshit :)
slower than previous demo, but hey that's ok :p

uh, er, so now what? write that shitty little space invader-like game? work on SkeeBASIC? a lame text adventure? (heck, port ScottFree and run Scott Adams original text adventures on there!) .... work on formalizing the basic BIOS a little so the firmware has some actual routines the carts can leverage (like the font rendering business)? really, likely no one will ever see any of it :eek:

.. or get back to work on C4A like I've long promised.. decisions decisions!

Well, I do need to get the case designed and 3d printed, and .. can't stop now!
Focus on FUN, FUN and FUN :)
 
Back
Top