Do you like my hacking? If so, please consider leaving something in the
Fediverse (Mastodon etc): @Sprite_tm@social. spritesmods.com
It looks like the way I used an AVR to take over the Z80s bus is fairly succesful, and could be used to Internet-enable more old-school devices. For this machine, the persistent highscores are also a nice improvement.
If I were to do this again, I'd probably redesign the circuit a bit: the latches meant to give the Z80 access to the address bus are connected to the data bus too. That adds a bit of load; every device controlling the bus needs to output a bit more current because of it. They can be replaced with shift registers, which have the extra advantage that they wouldn't need as much wiring to control them.
As usual: the sources for the firmware is downloadable and licensed under the GPLv3, the same license the Ethersex framework uses. I've included the git metadata so you should be able to pull in upstream changes to the Ethersex framework with a simple 'git pull'.
14 commentsThis is really cool. It's not the approach I'd have taken but it's a really elegant hack, able to poke memory and display messages on-screen all without touching the game code at all and with only having to replace one component on the PCB. I'm really curious, though, how you're able to take over the bus without throwing off the game's timing. Does the Z80 completely stop when you're using the bus, or is it running a wait loop? 8-bit games tended to rely on precise timing for video effects and it surprises me that you can just go in and interrupt things without causing problems.
As an old school gamer, collector, and repairer of old arcade game hardware, I can honestly say, that is very cool! Lots of potential to make this work for other hardware. Well done!
You have no idea how many people would pay for solid version of this for their old arcade games. Going rate on some already being made is $50 and only works on specific games. If you can make one that can go into several games you rule... I for one want this for my Z80 based Sega/Gremlin Carnival. :0)
As a hacker of old hardware, I find this all very interesting. Did you know of the Wiznet W5100 IC? It\'s a chip with the ethernet MAC/PHY plus an embedded TCP/IP stack. I\'ve used this with Z80 based hardware to make ethernet interfaces since it relieves me of the task of having to find and/or implement a TCP/IP stack in software (plus the CPU time it would take up on an 8 bit system). The other nice thing about the W5100 is you can make it memory mapped, and it\'s got pretty decent throughput. Wiznet also do a W5300 which has a 16 bit bus.
what you did was awesome, thank you for doing it and posting it! Just curious why you wouldn\'t use additional pins on the AVR instead of latches? Is it to use the extended memory addressing in The AVR? Otherwise it seems you could greatly simplify the circuit by using two additional ports on the micro, and a few more lines of code. I\'ll admit I didn\'t look to see if a higher pin count device would be required, or if extended memory interface (think the datasheet connects it this way) was being used in code (startphone browsing). Many thanks!
never mind, i got off my arse and took a look at io.c/h. its clear you unscrambled the databus in software for wiring convenience. i would have gladly spent 30 minutes soldering versus the 1 hour it would have taken me to come up with those shifting / OR\'ing if statements, LOL. i guess some people are just software minded...
great work, very interesting. i just have 1 question, why is the databus mapping between the AVR and Z80 so bizarre? D0 to D5 ... D7 to D4, etc... was it just easier to solder pin to pin, then just unjumble them in software, or was there some bigger reason?
@Johannes: that\'s easy, you scan memory for your highscore number or for changed values...never hacked in ZSNES? :)
I find it interesting that we independently came up with almost the same design for connecting a microcontroller to an old 8-bit bus. I used two octal latches and all driven off the data bus in the same way for my Prop6502 laptop: http://www.parallax.com/tabid/708/Default.aspx
Mame has also hiscore.dat project which probably makes finding hiscores a bit easier... http://highscore.mameworld.info/
Before i even read the article i noticed the board and thought \'that\'s familiar, it looks just like my 1943 board!\' (i really love that game). Great build!
Johannes: Basically toying around with the game in the Mame debugger until I manage to finld the addresses, nothing too difficult
Wow brilliant hack as usual! :) Im just wondering how you know the correct memory locations for - say the high score?
Awesome mod! Way beyond the typical high score saving kit... Is/was the twitter feed visible somewhere?