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


Now, we'll have different modes, but maybe should default to a 256x240 or 256x200 mode. 256x240 shaves off a little bit of memory, and the main part would be that 'X' is now one byte instead of two.

I'm leaning towards now, hooking up both serial and i2c from intermediary chip to GPU chip, so we can use either .. whatever someone gets fasted or prefers, or whatever. But theres a limit to how much you can shove through there, so it may be beneficial to keep bandwidth down; if you're moving 100 sprites every frame say (which would be a lot), and you have to send a sprite move command (1 byte), and then sprite # (1 byte), and then X and Y .. be nice if they also were 1byte each:

Packet:

1 Sprite Move

1 Sprite ID

1 Sprite X (instead of 2byte)

1 Sprite Y

That becomes 20% less.

100 * 4 * 60fps = 24KB per second.

I'm sort of assuming that theres a text mode, and graphics modes; graphics modes for action games would be say pacman, or space invaders; pacman doesn't have much change per frame.. 4 ghosts and pac, and 4 blinking dots, and any score change; not much to send over. Space Inmvaders is what, 4 rows of 15 guys, so adding up to a few sprites. zikzak sprites aren't limited to mono or anything, could be 64x64 full colour sprites say, possibly with an alpha channel who knows.

The 'hard' one is (and always was) scrolling backgrounds; scrolling vertically is not too hard and should be doable okay, but horizontal scrolling is always trickier.

I may update to the LQFP100 chip, the F429, which gets a bit more RAM, a bit faster (180MHz instead of 168), and includes DMA2D (2d blitter) and such, which people may find useful who knows. But soldering QFP100 is a bit of a pita if you've got just an iron and no practice with SMD, so may be too much for kit-folks.

...

For intermediary, an STM8 or AVR8 would be slick; STM8 to avoid multiple programmers, and AVR8 since I really like working with them; both 8bit guys have very low RAM though, and limited speed (so trouble with higher serial rates; I think I maxed out at 38400bps on avr8 20MHz on zikburner (or maybe 16MHz?) .. either way, it seems a reasonable max. The STM32 can do 512kbps, but unless we're using another stm32 we're not getting that. 38400bps is about 3KB/second, which is a pretty harsh limit.

Given I'd like to also support single programmer for other-than-z80 components, it is tempting to use an stm32 as intermediary; an avr8 or stm8, the 'higher end' ones with faster speeds and some RAM (like, 6K, that sort), are about $6ea say. An STM32 low end model would be like $8 or something, and the high end liek the GPU uses is about $13-$16ea roughly. On the one hand, adding another $5 to the cost of a kit few people will likely see isn't too bad, but on the other.. its dangerous to idly toss in upgrades all over. Software side of me says 'more more! fun!', but hardware is better to be conservative :)

Z80 -> STM32 IO -> STM32 GPU .. crazy :)

fun fun..

jeff
 
I'm gonna put this link here. At the beginning it talks about why old games look better on the TV and a filter he made. And a bit more to the end of the page he talks about the retrobox cpu (a weird concoction, I must say).

 http://mattiasgustavsson.com/Blog/page/5/

Back on topic: Are you sure about the one byte to represent x and y? The thing is, if you want to hide the sprite, like making it come from the left from beyond the screen, you need a value of -16 for x (assuming 16x16 sprites)... and to hide it to the left, a value of 256. . Strictly speaking, you would need 2 extra bits to represent the sign of the x and y bits. You can steal them from spritemove.

so spritemove is:

1 show or hide bit

2 flipx bit

3 flipy bit

4 double size x

5 double size y (or use a full byte (two nibbles) to represent how large they are, so you can flatten/elongate/skew them)

6 solid/collission (can other sprites walk through it without getting a 'collission', in other words, does this sprite participate in sprite-to-sprite collission (and/or sprite-to-background collision) )

7 sign of the position byte x

8 sign of the position byte y

I assume the data in the sprites already knows about alpha channels, colors, etc. And that the z-order is determined by the order of the sprite ID.

And so, if you then use 100 * 4 * 60fps = 24KB per second.

Not sure about less is more in this case. Do you target a market of beginners, where the hardware must be simple to understand.

But even the ZX Spectrum had the ULA, ROM, RAM etc as a separate chip from the Z80... ah... remember when coprocessors were a separate chip?

yr03_38c.jpg


source:http://opencores.org/project,zx_ula
 
Last edited by a moderator:
I just had a thought: if you're using an STM32F4 for your GPU, how does that coincide with your trying to keep it under $20 or so? :p
 
Who said it was going to be under $20? :)


(If you go thread diving I will best you)


I'm working on the wiki (should be live soon, waiting for some apache conf changes since its not on my box), but the goal is simple, not best, retro styled. For learning and hacking, othrrwise its much easier to do a single chip machine. Putting modern gpio chips on a z80 bus is a pita


Cheap is desirable but cost eill come st the end; can revise price and make down over time .. Its not like there will be only one rev. Its certainly a suboptimal design in a lot of ways, in the name of simple and hackable and easy for idiots like me


.. Screaming kids can't write well
 
The zikburner itself is probably $20 or more :0


..


When discussing gpu bits, I'm not mentioning the other bits. There is still a rom (carts) and ram (1MB likely), audio (ay-3-8912 say), and some discrete logic (buffers, line drivers) and passive (leds resistors caps connectors etc) .. But they aren't part of a given proto test
 
Certainly nothing is in stone (ever, but especially now); I'm in the proving and proto stage so just faking it enough tontest a bit.


Rendering half offscreen sprites, flip, etc .. Yeah you take me back ;) so awesome the old tricks.. Making screen buffer larger than needed so you can render half offscreen without needing clipping etc .. Ah the days.


Not going to worry about variable stretch or the like up front but stuff like invert and flip are fun; given memory can pre-prepare sprites (flip and store as new spriteid or something); clipping is a good point .. Given a max 64K framebuffer it'd be nice to leave a decent pad around left and right side for clip sake. If we did 256x240 then clip could still be achieved with screen starting at 10 or something, but getting too small then.


Nothing says there can't be multiple variant commands .. Sprite mive short and sprite move with features; I'm thinking a lot of commands .. Send data buffer for bitwise update, send code to chip so you can update without reflash, lots of stuff ..


Definately dream up what sort of options you think we coukd use in the protocol.. I'm worrying about it a but but not a lot :) i leave it as .. Prove it works well enough and leave anything more for later


I keep thinking I'd like gpu to be abke to read z80 ram so z80 can compose image and ship to gpu .. But really, if gpu protocol is complete enough than a serial and i2c protocol should be enough
 
Cool Sinclair stuff :)


I was going to do a Spartan fpga video card (its really the way to go) but shelving it cor now - its much pricier and a much higher complexity so few would hack on it. The gameduino is really the cheapest way to get a spartan dev unit - thats why I got one ;)


Doing the whole machine in fpga is also fun (I've got an Atari ST fpga board!), but not the goal here. I want retro styled design in a way and using old chios .. Actual z80s from 1980 will work :)


Jeff
 
(My design restrictions are purposefully goofy, to keep it simple and retro fun. It was started for myself and making kits is just a fun aside .. I'm trying to keep peoples ideas in of course and widen audience, but ultimately still going with 'amuses jeff'.)


Certainly there are more boards in the future with different chips .. I'm thinking a single chip one, and fpga one, and discrete video card from basic logic.. Hell, a modular one where cables link each piece is something I schematiced up months ago. Some sickos make cpu from transistors!


So the first board will have mistakes and dumb ideas but I hope it is fun to hack on.


But if I'm wrong and stupid, surely tell me. I'm new at this too and blunder a lot :)
 
OKay folks, I've got a website up; not a lot in it yet; looks okay (went for 90s-web look :) , self indulgent sdleep deprived meandering writing. But its a start.

I'll same old ramble here in this thread, and will post the stuff to the "developer blog" part of the zikzak site too.

I'll move over some of the schematics images, photos and screenshots, and junk, soon.

Will add to first entry in this thread, for sake keeping.

Please give it a hit, let me know what you think :)

http://www.zikzak.ca

jeff
 
Should it default to the About page, or the Developer page?

I assumed 'About' since how many people would know what it is at all?

On the other hand, the only visitors I'd expect are people directed from this thread.. so already know what its about, and therefore more convenient to go to the Dev page/blog?

(Aside, I rather like the combination of a wiki and a blog; that seems a groovy thing.)

jeff

edit: I suppose people here likely won't go there too much, instead following this thread; just that site for pics and links, so maybe leaving at About is the way to go
 
Last edited by a moderator:
Some sickos make cpu from transistors!
ROFL! ... then again.. it IS like getting those 1000 pieces puzzles you spend months putting together...

(assuming, that we are not referring to the transistors inside a chip, of course, those are transistors too, but to our three legged friends.)

I looked it up, but could not find more than this fella: http://6502.org/users/dieter/decl/decl1.htm 

Website is a little hard to know where you are, if it werent for the breadcrumbs (I think thats how it is called, the "directory structure" in a line, as it were) I would be lost, even with little content.

The "go to this webpage", kind of 'break out from this frame/div' is handy, but I get the same content (obviously), so why click it? (glad I dont lose my breadcrumb)

As for content, do like ekianjo, just summarize on this board and publish the link to yours.

It is more fun to get feedback, right?

https://www.youtube.com/embed/XdAkzeG3LSE?feature=oembed
 
This guy made a computer out of purely TTL logic:

http://www.homebrewcpu.com/

This guy made one from transistors:

http://www.waitingforfriday.com/index.php/4-Bit_Computer

Theres a webring or something of a few dozen people who've done it. Nasty :) I draw the line there .. I'm not building my own house today, either (though, someday..)

The dokuwiki breadcrumb thing _is_ a little weird, but its a wiki-thing; some pages you can Back to, but sometimes things get jumbly. Theres a second breadcrumb style, which is a hierarchical one, which basicly just does a directory parentage chain; that works once your content goes deep enough .. but so far I've just got basic directory ('namespace'), and one level down. If I get a few more directories in there, a few more levels down, that'll be the thing to switch to.

Theres probably a plugin or something, to automatically generate a 'go up a level' or 'mini table of contents'; for that matter, in the top right there shoudl be a TOC I think.. my other dokuwiki sites usually have that. Must be a plugin or setting somewhere...... I'll see if I can find it; its quite possible its not showing up until theres a certain depot.. I think I recall seeing that setting; I'll see if I can drop it, or add more content. Had a hellish week, no time :/

I think you're right, about summarizing; put a whole post here if short, or if too long or full of multimedia, just a summary and reference to the site-page, sounds best.

jeff
 
Added some old photos and youtube videos to the site; added a kickoff to the zikburner page, and some more notes in the tools section.. which is still a rushed mess. Still, adding some bits and bobs here or there; lots more photosd and schematics to dig out, before new content starts going in there.

http://www.zikzak.ca/dokuwiki/doku.php?id=blog:some_old_media_coming_back

edit: This post had no valour, so I'm cutting most of it out ;) was 1:20am or so, baby crying, I did a copy/pasta, and you guys are undeserving of such tripe!

I'll fiddle with the site a bit more over the next day or two, get some old content in there (though not organized well, need to organize by zikzak revision to keep old stuff out of the new stuff), and then staert working on more new stuff as RL settles down.

My next goal (maybe tonight/tomorrow/sat) is to get the cartridge design down, and the pcb laid out, and send off to seeed to print some pcbs for me; I need to check for which edge connectors I can get and order a few samples (want to make sure theres some screw holes on the ends, so its solid, and I need precise pin width and spacing measurements so I can lay down the traces..); but pcb design for the carts should be easy, but I want to get the process down and figure out seed's limits (do they have certain drill sizes, or can do any? silkscreen both sides? which colour pcbs? cost sweet spot .. self-tile the cart, or let them tile it? etc.. theres usualyl a few optimal sweet spots in the cost model depending how you size things, and if you need via's and all that.)

I've never actually ordered a pcb from a boardhosue yet, so looking forward to doing it.. first with the simple cart, then the zikburner, and then the zikzak rev6 itself ..  hell, I wonder if anyone would want a eeprom burner by itself? I should look into putting the name out, see if people want some.. maybe I'd need to order a few boards and parts..

jeff
 
Last edited by a moderator:
Edge connectors have always been pricey, but they're also getting harder to find. Digikey usually has tens of thousands of each utem but edge cards.. they tend to have 0 of them, or maybe a few, like this guy:

http://www.digikey.ca/product-detail/en/EBM18DSEH/S3348-ND/927300

$7 a pop still, though .. ouch!

JAMMABoards has some cheaper models but still satisfy the requirements .. screw to pcb for extra mechanical strength, and arcade easy to work with spacing. (I'd like to do smaller spacing, but then I'd have to order some before I can do any work; I've already got a small variety of arcade parts around, making my life easier/cheaper.)

http://www.jammaboards.com/store/36-pin-card-edge-connector-396mm-156-pitch-ec-36.html

$2 a pop, though, is not so bad; they're out of stock for standard pin mounts, but have them with the big solder-wire-into kind, which is sort of a drag; maybe have to drill holes through pcb to mount these suckers.. bleh. Good thing my dad gave me a little baby drillpress lately :eek:

.. at least I can work with parts I have though.

36pin seems more available than 32pin, so I just need to verify the size fits into the cart dimensions again, and good to go. (Should fit, though I'd been planning for 32pin.) Extra pins is okay, allow for more memory later.

jeff

A note on edge connectors: http://www.zikzak.ca/dokuwiki/doku.php?id=blog:edge_connectors_and_old_technology

Similar content as to here.

--> do I need to add a comment field to the blog posts?
 
Last edited by a moderator:
Got a bunch of STM arm MCU and the five AY-3 audio chips two days ago.

Girlfriend : "What? Even more parcels for you?" :D

So I'm gonna play a bit with the AY-3 chips to see if I can get some noise out of it (should be easy, as you said) :)

The STM8 and 32 I got will have to wait until I get a programmer and some adapters. (I got some 176 pin LQFP STM32 that probably won't get soldered until I hack a reflow oven or get hot air station…)

In the meanwhile I'm trying to make a Tool Assisted Superplay of Pop'n Twinbee Rainbow Bell Adventure (it takes ages to make…). Then I'll try to play the run on an actual Super Famicom & cart using a MCU. Just for fun :p

EDIT : oh, I should receive shortly ZIF DIP sockets able to accommodate chips up to 40 pins. They have a narrow central part, so that I can use those for wide (like AY-3) and classic chips.

I should make that LED matrix to play with the AS1130 that I just soldered with much difficulty. I need to get larger solder wick braid, I had some trouble to remove the solder surplus.

I also soldered one of the AY-3 directly on a perfboard because one of its pin was broken, I added pin headers to easily connect it to arduino. It'll be my sacrificial chip (if I didn't burn it while soldering -_- )
 
Last edited by a moderator:
Awesome toys :) will reply more when not on my phone .. I hate long types on the virtual keyboard..


Where'd you get the AYs?
 
Back
Top