Phoenix High Score Save

philmurr

Active member
vacBacker
Feedback
46 (100%)
Credits
2,344CR
Following on from my post about the Phoenix freeplay mod http://www.ukvac.com/forum/phoenix-enhanced-freeplay_topic352965.html, I've now managed to get the high score hardware working.

I designed a plug-in replacement circuit board for Phoenix boards, replacing the existing RAM #4000-#43FF with non-volatile RAM. 2 options were designed into the same board, either to use 6116 RAM with battery backup, or use a Dallas NVRAM module (although these modules are getting old now and more difficult to find which is why I also designed in the 6116 option).

There was a problem, though, and it appeared to be speed-related. The old RAM that I needed to replace is made up of a couple of 2114's
rated at 450nS access time. The replacement memory is much quicker than the old (100-200nS), and when I installed it, I got
the occasional corruption to the screen and other memory, eventually
causing the game to crash.

So studying the schematics, it appears the original designers were aware of the potential problem, but the old RAM was just so slow it didn't care. Having a look at the schematics shows the odd capacitor here and there on inputs to gates, especially around the memory addressing area. There was one capacitor shown that wasn't present on my board, so I installed one, and used the slowest RAM I could find in the module. I've now had the game tested for a couple of days and it's performed flawlessly.

It uses the same code I released last week for the free play mod, so there's nothing really different to see in the game although it still supports all the features of the freeplay mod. There isn't a high score table [no ROM space to make one], so all that happens is when you turn the game off, when you turn it back on the high score is still there!

I've a number of spare PCB's that will shortly be for sale in the relevant section on here. You'll need to desolder the existing 2x2114's as they tend not to be socketed, but the Phoenix PCB seems to be quite good quality so I've not had any problems with lifted tracks. You'll also need to install the relevant capacitor if it's not already present, and use as slow a RAM chip as you can find. It seems to work fine with Dallas 200nS modules, and 6116-3 (150nS) but I'd suggest using 6116-4 (200nS) chips if you build that version.

So some photos:-

Phoenix_splash_freeplay.JPG


Phoenix_HS_Save_pop_NVRAM.JPG


Phoenix_HS_Save_pop_RAM.JPG


Phoenix_HS_Save_installed_1.JPG


Phoenix_HS_Save_installed_2.JPG
 

Mitchell Gant

Active member
vacBacker
Feedback
2 (100%)
Credits
884CR
Great effort Phil. That RAM being too fast would have baffled me!

So the memory logic was designed with capacitors to slow the signals down? Because it's cheaper or easier that way perhaps?
 

philmurr

Active member
vacBacker
Feedback
46 (100%)
Credits
2,344CR
Mitchell Gant said:
So the memory logic was designed with capacitors to slow the signals down? Because it's cheaper or easier that way perhaps?

The addressing in Phoenix is unconventional to say the least, with the RAM permanently enabled then through a buffer to choose screen access or CPU access, so whereas most games use /CE and /WR without too much trouble, Phoenix makes hard work of it! So it looks like they were getting glitches because of gate delays which is why there are a number of capacitors at various places in the circuit (some soldered directly to IC's)

Mark Spaeth does an excellent write-up of a similar issue he had with Pacman, and this is what steered me in the direction of RAM speed http://cambridgearcade.dyndns.org/?q=node/75
 

philmurr

Active member
vacBacker
Feedback
46 (100%)
Credits
2,344CR
Well I think I've pushed the Phoenix hardware and software as far as I can be bothered to without resorting to additional ROM and RAM, so this will be the final code update. It now has a high score table!

It stores the top 5 scores, (but unfortunately no initials, there really isn't any space left for this), but at least it's more interesting than just a single high score. Full attract mode is maintained, just shifted down the big "Phoenix" writing and the emerging and disappearing bird (the bird is still animated, just the 2 screenshots below show it in exactly the same position by chance).

It works fine in Mame, but I want to test it properly on real hardware before releasing the code (unless someone wants to try to break it for me)

Code will be freely released in the next couple of weeks once it has been tested.

The only additional screenshots differing from previous are of the high score table itself, one showing the default after reset, and the other after a couple of games.

High_score_table_3.JPG


High_score_table_4.JPG
 
Top