18.01.2015 Views

Commodore Free issue 31.pdf - 3002 KB

Commodore Free issue 31.pdf - 3002 KB

Commodore Free issue 31.pdf - 3002 KB

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

BERZERK REDUX<br />

INTERVIEW WITH MARTIN PIPER<br />

By Andrew Fisher<br />

http://noname.c64.org/csdb/release/id=80567<br />

www.commodorefree.com<br />

99% of the work used VICE because it has a couple of my hacks<br />

(submitted to the main tree now) to allow it to load labels from<br />

ACME (also with some of my hacks) and show extended register<br />

information in the CPU execution history. This aids development<br />

because it lets me debug easier than a normal C64. The Alt+W warp<br />

speed feature in VICE also helps improve development time because<br />

I no longer had to wait for decompression or loading when testing<br />

each new code iteration. The downside of such development is that<br />

now sometimes I find myself pressing Alt+W when I am web<br />

browsing or waiting for a large C++ project compilation to finish...<br />

Only when I wanted to check everything really works, like the<br />

updated VIC collision register code, did I test on a real machine. I<br />

also tested on Hoxs64 and CCS64 just to be sure.<br />

Q. What other utilities did you use to create the game<br />

2009 has seen two fantastic game releases based on early 1980s<br />

games – Fortress of Narzod was converted from the Vectrex, and<br />

now the arcade classic Berzerk has made the jump to the C64.<br />

<strong>Commodore</strong> <strong>Free</strong> talks to programmer Martin Piper.<br />

Q. How did you become interested in converting Berzerk to the<br />

C64<br />

I'm relatively old, so I can remember the arcade machines. So when<br />

Trip6 started this thread<br />

http://noname.c64.org/csdb/forums/roomid=11&topicid=58028&sh<br />

owallposts=1 I was interested to see what he had actually got. When<br />

it turned out to be C sources it became obvious it wasn't really the<br />

arcade version of Berzerk which uses Z80(ish). So I looked for the<br />

6502 Atari version instead and did a really quick hack to get it to<br />

partially run on the C64. But the Atari code spent most of its time in<br />

a video update loop so it was too slow on the C64. Also the Atari<br />

version lacked speech and game play aspects from the arcade<br />

version so I shelved it.<br />

Then when nobody else came up with a version I thought to myself<br />

that I would quickly test out the basic technical requirements to get a<br />

feel for how long it would take to do a new version. Chiefly these<br />

were:<br />

1) Getting NMI samples working with the multiplexor.<br />

2) Then seeing how many segments of speech could be squeezed<br />

into realistic memory conditions.<br />

3) Maze generation that did not produce a blocked route for the<br />

player.<br />

4) Pixel accurate collision detection or background and sprites (just<br />

like the arcade) using the VIC registers.<br />

That went surprisingly quickly and the game play then naturally<br />

came along.<br />

The polish of the game, adding Zeldin's excellent artwork with<br />

sound effects music and hi-score saving, actually took longer to code<br />

than the main game. :)<br />

Q. Did you make use of the source code from other machines<br />

In this version no, it's all coded from scratch or using existing<br />

libraries such as the multiplexor, sound etc.<br />

Q. Did you program it on a real machine or emulator<br />

ACME (with some label producing hacks), my compression utility<br />

(on codebase64), CharPad and SpritePad. I gather Zeldin used Koala<br />

Paint.<br />

Q. How did you transfer the speech samples and play them in the<br />

game<br />

I found the samples from the old MAME version at 22kHz 8 bit<br />

mono, down converted them to 6kHz and then converted them to 4<br />

bit samples using a quick hack custom tool.<br />

Q. Have you played a real Berzerk arcade machine in the past<br />

Yes, once or twice in the dim past. Mostly I used MAME to check<br />

the game play with this conversion.<br />

Q. Will you be trying to create an "enhanced" version as some<br />

people have suggested<br />

Yes. Much better graphics are planned. I also want to try to improve<br />

the speech a bit more by getting closer to the raw data using the LPC<br />

decompression that MAME now uses. Game play will be changed a<br />

bit as well. With better graphics the "bullet proof bow tie" might<br />

have to go as there won't be a gap between the head and shoulders<br />

for the bullet to pass through. :( I'm half thinking of having some<br />

boss robots every few rooms as well, maybe locked doors that only<br />

open after several waves of robots are cleared, two player, etc. We<br />

will see. :)<br />

Q. Why did you decide to give the bounty to pay for CSDb's hosting<br />

costs<br />

I like to be able to help the community when I can and this version<br />

was only really a few days hacking around on something I found<br />

interesting. It is a welcome rest from my normal heavy duty C++<br />

programming. :)<br />

Q. Are you working on any other C64 projects at the moment<br />

Mainly tweaking common libraries here and there which are all<br />

available for anyone to use<br />

http://codebase64.org/doku.phpid=projects:resurrection<br />

I'm trying to find sources to resurrect a couple of old projects I was<br />

working on many years ago. But my work disks from back then are<br />

sadly not well documented.<br />

Thanks to Martin for answering my questions, and for all his coding<br />

efforts on Berzerk.<br />

Issue 31 June 2009 Page 8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!