Topic: Williams (Defender, Stargate, Joust, ...)

Hi!

Anyone there who could sell me a Williams Board Set ( Defender, Joust, ...) or give me  a hint where to get one (and please from the bay, especially this "untested" offers which just means "I checked it and it didn't work, so I flog it as untested..."). I need it for (yet another) reverse engineering approach for Replay - and his time as open source wink

Thanks in advance!

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

I only have a sound board for Stargate, but I will look into a couple of places that refurb arcade machines.

Re: Williams (Defender, Stargate, Joust, ...)

Thats great! Thanks a lot, Jim!

/WoS

4 (edited by WoS 2013-12-27 11:48:19)

Re: Williams (Defender, Stargate, Joust, ...)

I've collected several defect Williams boards and was able to get a complete Defender board set working, including a proper wire harness/conversion to JAMMA.

This game does not use the custom blitters, but it is a starting point. I have got further CPU, I/O and ROM boards for other games as well (e.g. Joust), with this base I can fix some of them and I have enough spare parts available (and by that I legally own the ROMs, which is also important for me). Now I'd say I have even too much - so if someome is looking for a specific part it might be that I have some left wink

So all there to start the project, including a fresh reverse engineering of the blitter ICs to keep the sources open this time.   big_smile



By the way: if someone has a hint for a good DRAM and/or logic tester supporting these 4116 memories on the Williams board would be really great. For now I use directly the Defender board to test them - this is not really the most effective approach...

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

That's good news indeed.

If you're testing the 4116's to find faulty ones it might be easier (in the long run) to convert the board for 4164's
...not too hard to do and you will have more free time since you won't need to find the failed 4116 every few weeks.

A more modern approach used in the Spectrums was to use a single SRAM chip to replace all the single-bit chips.
( http://bitcycle.org/retro/spectrum/SRAM_replacement/ )
Have to admit I did not take a look at the schematics to see if there are any gotchas.

br,
-V

6 (edited by WoS 2013-12-27 23:46:17)

Re: Williams (Defender, Stargate, Joust, ...)

Just had another 1xx at power-on..  mad

You are absolutely right - especially as I already use a JAMMA adapter this 4164 setup is really easy to do. Thanks for the hint, just ordered some pieces wink

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

Cool! smile

Re: Williams (Defender, Stargate, Joust, ...)

Have the generic sound board running - piece of cake. ;-)

Now the "but":
I figured out that the 6802/08 (and the 6809) core from open cores is off any cycle accuracy. A lot of instructions are running too fast, so sound cannot be 100% correct.  sad

I do not want an emulated system running stuff as fast as possible as several of these system projects on opencores aim and "mend" the timing on higher level again (which may make sense for computing systems which usually do not care about the last clock cycle), I want the real thing with all flaws included and perfect timing from the ground up. wink

The cpu68 core I am using is not really set up that way (I tried already to fix some instructions), so it would be an endless story trying to get the missing bits and pieces in this existing code. Some things I would really need to set back even to an older state of the core when checking out the history (changes to make it even faster). And I don't want to go the way using an external processor, when there are plenty of ressources on the board to run the real thing there...

I could not find any 68xx micro-core which is "closer" to an real implementation, so next step is (unfortunately) to implement the 6802/8 again for the replay lib, this time by looking at (and honoring) the datasheet in every aspect and debug it also in the real system using our FDIL board. In a second step, I'll extend it for the 6809 used on the CPU board. I am sure this will come in handy for other games as well... smile

So enough to do here...

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

wolfgang wrote:

I could not find any 68xx micro-core which is "closer" to an real implementation, so next step is (unfortunately) to implement the 6802/8 again for the replay lib, this time by looking at (and honoring) the datasheet in every aspect and debug it also in the real system using our FDIL board. In a second step, I'll extend it for the 6809 used on the CPU board. I am sure this will come in handy for other games as well... smile

I was fighting these issues with the 6809 CPU for Konami-1 replacement on your FDIL42 board. Took the cpu09 code from OpenCores / Mike and reviewed it over and over again. Few bugs found and tweaked the execution cycles. But in the end, you'd need to set that up from scratch following the datasheets to have a true accurate solution. The docs contain every detail you'd need to know of - it's feasible, just work.
BTW you'll find the code in the custom library in SVN.

Cheers,
Arnim

10

Re: Williams (Defender, Stargate, Joust, ...)

Yes, currently I am in the middle of setting the core up from scratch. This allows me also to use the structure I think fits best for  this processor. After some calculations of my progress, the source code will be finally even 1/3 smaller than the implementation of the 6800 on opencores and I expect the gatecount will be smaller as well, as the real implementation also should allow better reuse of some ressources (like it was done in the past). Some other topics came in I promised Mike to look at. I spend up to now only half my time for the core, so I think it is still not much more work than understanding and fixing code of others (at least for this kind of stuff).  smile

I use the F-DIL as test rig and connected a real Motorola 6808 to it. Then I am using CS to see the reaction of the device (and use software interrupt to trace the stack to see the internal registers). Given my tracking, I have now 42% of the opcode set implemented, behaving 100% the same as the original device (ah, maybe plus some new bugs I introduced now). 

Finally I'll test it using again the F-DIL on the real boards. I also have an 6802, 6809 and so on to test also this variants and add proper configuration setups to the code. I even figured out bugs in the datasheet...

My motivation is not only the Williams stuff, I am also on Bubble Bobble. The custom chip they use is a 68xx variant, with embedded memory. So replacing this real custom chip by an F-DIL setup is another nice task, I own an original board so I can test it there as well.   wink

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

Forget Bubble-Bobble!  I need Stargate!  smile

12

Re: Williams (Defender, Stargate, Joust, ...)

Yes, will finish this first before starting with BB, promise wink

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

oooh... Bubble Bobble <3

Re: Williams (Defender, Stargate, Joust, ...)

Bubble Bobble... wow!! big_smile

Re: Williams (Defender, Stargate, Joust, ...)

Who needs Halo when you can have Bubble Bobble :-D

My software: [url]https://github.com/m6502[/url]
My music: [url]https://soundcloud.com/m6502[/url]
My work: [url]http://www.linkedin.com/in/manuelmontoto[/url]

Re: Williams (Defender, Stargate, Joust, ...)

Debvgger wrote:

Who needs Halo when you can have Bubble Bobble :-D

No, seriously! Bubble Bobble is a hundred times better as a videogame than any Halo scumm from M$ on some crappy, failure-prone hardware.

17

Re: Williams (Defender, Stargate, Joust, ...)

I fully agree. I did like it when it was new on the very first Box, but since them it got really boring. But Bubble Bobble is probably one of the best games I know. I have it in a upright case and at every party people are keen to play just this one.

It was not cheap to get an original board, but it was worth every cent. I am really keen to get it on replay to have a proper (100% correct) fallback once it does not work anymore - unfortunately this will be the case sooner or later, very likely it will happen even before I don't work anymore smile

But back to the Williams, I am coming along well with the 6808.

In parallel i've restored a Joust, Stargate, Robotron and Defender ROM board and also proper CPU, I/O and sound boards out of a big bunch of boards in a very bad condition - with missing parts but a lot of dirt instead. But no regrets, the hint from vlait with the RAMs (and further PM he sent me) made my day and all this repairs were really helpful to get a good understanding what this boards do (and again on which end the soldering iron gets hot...).

This setups should be (hopefully) the most important ones to build on for a multigame setup, I use them as reference now. wink

/WoS

18 (edited by WoS 2014-01-11 22:56:51)

Re: Williams (Defender, Stargate, Joust, ...)

Proceeding with the Williams setup. I got the first sound out of the FPGA setup! About 75% of the CPU completed, about 50% well tested, the rest I will add as my game implementation continues.


Here some impressions how I take care to get a 100% correct FPGA implementation.

1) First of all, some "highlevel" measurements, here on the Williams sound board, using DLA and DSO for data acquisition.
Goals:
- Evaluate e.g.: how many clock cycles does it take from requesting a sound to the first DAC value change?
- For certain sounds how does the sequence of DAC values (and clock cycle distances) look like?
- Get detailed bus activities and timings.
--> All this allows to define some basic checks e.g. to be used by plain simulation of the FPGA implementation later on.

SoundRevEng

By the way: DLA means "digital logic analyser", allows acquiring complex digital patterns; DSO means "digital storage oscilloscope", allows aquiring detailed analog wavewforms or measuring single digital signals with even higher accuracy


2) After I got out that there was no proper 6808 implementation, I started my own one.
As the datasheets are not 100% complete, I did a setup with the Williams sound board in a FPGA (plus a embedded DLA) and a real 6808 connected aside. This allowed me also to modify the ROM to experiment with some "special" setups.
Goals:
- Get cycle-accurate details of the startup/bus/...etc. behaviour of the CPU (release of bus for DMA or so) 
- Evaluate undocumented opcodes (although I have not detected any yet in the Williams ROMs, will do this just for completeness later on)

SoundRevEng


3) Finally the other way around. The FPGA contains my own 6808 CPU implementation with a DLA included for debugging, running on a real board. The ultimate timing test...
Goals:
- Fine-tune the implementation, verify the "high-level" measurements initially made and check if they are still kept with the new CPU.
- Does the CPU behave on the bus 100% correct within the "real" setup?

SoundRevEng


4) What I can not show is the plain simulation of the FPGA design on the PC. This task takes probably most of the time (set up test conditions and check if they are performed accordingly). Most of the initial debugging is done here.

The reason is simple: it is the only approach to get all insights of the design fast. Running on FPGA and re-connect a logic analyser to look on specific signals when investigating a problem requires re-synthesis and upload to the FPGA every single time. This is not useful as long as focussing getting the whole design together in the first place...

At least I can show typical waveforms of the differerent devices (FPGA DLA on the top-right, external DLA on the bottom-left and simulation waveform in the background).

SoundRevEng


One important enabler is the special FPGA-DIL device designed by Mike and me (you find in the replacement module section of this forum), which massively simplifies the job, especially to work out the final details of the own setup. Without this device, one is basically limited to the "1)" and "4)" step only.  wink

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

Ok, I'm sold. Am I the only one here who thinks this last post has been SEXY?

I'll read it again just for the pleasure of it.

Thanks for sharing your stuff Wolfgang :-) I appreciate your work and being able to learn from your posts.

My software: [url]https://github.com/m6502[/url]
My music: [url]https://soundcloud.com/m6502[/url]
My work: [url]http://www.linkedin.com/in/manuelmontoto[/url]

20

Re: Williams (Defender, Stargate, Joust, ...)

Thanks wink   I hope I can inspire more people to work on such projects.

I also have some news:

Finished the first shot of the sound board in VHDL. Also checked successfully the FPGA-CPU on the board as well. Have done sound (and technical) checks using a Stargate and a Joust sound rom, couldn't differentiate running the FPGA-CPU and a real CPU, so I hit the timing quite well. The PIA is simple, so no issue with timing assumed there for now. Yet the analogue path needs to be optimised as DSP path on the Replay. But this are details I can do later to improve the sound quality.

Now starting with the CPU board to bring some light on the screen big_smile

/WoS

21

Re: Williams (Defender, Stargate, Joust, ...)

arnim wrote:

BTW you'll find the code in the custom library in SVN.

Got it, thanks! Will try this one for the CPU board, let's see how it handles the Williams code.

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

That is very cool, Wolfgang!  Where did you get that little FPGA board?  That seems like a neat setup for emulating CPUs, and possibly accelerating some existing systems!

23

Re: Williams (Defender, Stargate, Joust, ...)

Yes, the idea is exactly that. And don't forget with it you have a powerful in-circuit debugger for CPUs which do not have this feature - that time debugging was still done with big break-out boxes and many wires to it - which now fit all on this FPGA and requires just a jTag cable (of course, if someone puts it together like I did for the 6808 here)...

And I will use it to test the reverse-engineered custom chips on the Williams ROM boards as well.

The board is a co-production of Mike and me, inspired by his CPLD boards. See also here: http://www.fpgaarcade.com/punbb/viewtopic.php?id=215 with links to even more information.

/WoS

Re: Williams (Defender, Stargate, Joust, ...)

Wolfgang, do I understand correctly that you will be working on a cycle-accurate 6809? That would be a great boon to Coco enthusiasts using Gary Becker's Coco3FPGA, and also my own Vectrex port, which won't work without a cycle-accurate core.

25

Re: Williams (Defender, Stargate, Joust, ...)

For now I worked on the 6802+6808 I did before I switched to the VIC-20 again.

I did start from scratch - up to now I did implement about 77% of the opcodes (basically functions are all there, just some addressing modes not fully covered). It already runs on the Williams board (shown above) exactly the same way as the original (compared and counted cycles with a LA over some seconds).

I am also using a LED on the board which will show me if it hits a opcode I have not yet implemented, so far it stays dark.

But I have to confess after this first round - now knowing the CPU behaviour much better with all the experiments - I should throw it away and do it again a second time.  smile


I see similarities like building a house. We say here if you want to build a house, you should first help your friend building one, then you should help your enemy building one and the last one you can build yourself...

/WoS