XaiJu
Coin-Op Collection
Coin-Op Collection

patreon


Coin-Op Collection Presents: Z-Unit (RC1)

Well folks, I never even thought this would see the light of day on ANY current platform, but here we are. It is my dream come true!

For the first time the Williams Z Unit comes to an FPGA Platform: The Analogue Pocket. It took almost 2 years to get to this point, 6 of those months actually being spent on trying to make this core work on the MiSTer unsuccessfully. I failed over 500 times, I redid the CPU and the core at least 10 times experimenting with new and different ways to optimize things.

Despite all my failures with this core, and a lot of the MiSTer community bringing me down, I still never gave up, and well, here I am today. And I have the Y Unit working too. I hope you enjoy this long lost classic as much as I did when I was young.

Now some notes about the game:

NARC was actually the first ever "ultra-violent" video game by standards. It was revolutionary in not only its content, but also its technical demands from a board perspective.

Specs:

The core runs at 128mhz, and the SDRAM has a 128MHz pll that's phase shifted to accommodate. It was challenging timing the core in general, because the higher you go, the more essential timing problems become. So, I spent a lot of time tuning different areas of the design and going through static timing analysis, and so on.

From a memory perspective, I created a hybrid memory system for the game. The game uses the entirety of the Pocket's external memory resources and FPGA memory resources. All BRAM M10k blocks are used.

The BRAM is used for bitmap ram, as well as for the line buffers. It also holds the memory for the 2 6809s and other temporary memories needed, the part of the CMOS RAM that is backed up as NVRAM, as well as color RAM.

The SRAM is used for the scratch (main) RAM and some part of the CMOS RAM that is essential for operation, but not backed up as NVRAM.

The PSRAM is loaded to at startup, and is used for the program rom.

The SDRAM is loaded to at the startup, and is used for the sound samples, program ROMs and graphics ROMs. It is also used as storage for palette RAM. Speaking on this, the SDRAM controller I use, which comes from JTFrame, only supports non-burst writes which are 16 bits. However, most of the time I am writing 32 or 64 bits, so this is the primary cause of some of the flickering that appears in the current release. I have talked with Jose, and he has committed to implementing burst writes in the next week. So, hopefully when I get that, I can resolve the flickering issues.

The core takes up around 87% of the logic. In order to make the game fit on the pocket, I cut the TMS34010's GPU from the core. The GPU is not essential, as it is only used to draw the POST screens and test menu. I have implemented some of the test menu options in the Analogue Pocket options for you, which is more complicated than it seems... I had to basically reverse engineer the CMOS memory and checksum system and put that in the core. Furthermore, I patch the ROM of the game to skip over the POST checks, but still do the VRAM test. So, after the VRAM test, it will go to the game.

Procedure for using / playing the core:

Credits:

Thanks, and hope you enjoy the game.

pram0d

Coin-Op Collection Presents: Z-Unit (RC1)

Comments

Paisley-mother-loving-boxers here. This is FINE work. I am glad to be in support of it.

Mike Holzinger

Thank you so much!

Brian Dubin

Yeah, it's not Mac friendly. I'll message you in the morning.

atrac17

I tried to do this but it won't work on my mac. Oh well.

Brian Dubin

Everything going forward will be the same except Technos ROM conversions. This is due to RLE compression that would be painful and time consuming to implement. For those games, you decompress the GFX data like the custom would do with the python script.

atrac17

The process of converting the ROM has improved a lot. This time was much more easier. And, of course, thank you Pramod, Atrac17, Darren and the rest of the team for your great work.

Dr. Manga

Mortal Kombat releases on Oct. 8th

atrac17

that worked! Thank you :) What about Mortal Kombat?

El Nagual

There's a tools directory that includes the .mra and mra.exe files. Locate a mame-merged or FBNEO NARC arcade ROM and place it in the tools directory. Select the .mra file and .zip file and drag them onto the mra.exe and it will generate a ROM.

atrac17

It's a little too complicated to convert the ROM file for the first time :( I'll wait for October, I guess.

El Nagual

Thank you! Fun to play these old ones. Adding in case it helps someone else, it said something about crc mismatch using mra.exe but worked anyway with the .rom file it created. I thought it had failed. Cheers Edit: It says md5 not crc sorry

Tetra

Works great, looking forward to the next releases!

worstJago

another MiSTer user :) thank you!!

Drew Alden

Thank you from a MiSTer user.

John Fletcher

thanks you got my favorite retro game on analogue pocket!!!

michael kilpert

Thanks guys, works great 👍🏻

Geckofingers

Incredible work, congrats!

Espiox

Amazing work!

Frank McDonald

Many thanks for your contributions, team!

Trifle

Thanks for the hard-work from you all! Look forward to playing it!

Shannon Thomasson


More Creators