Code:
INPUT_PORTS_START( berzerk )
PORT_START /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x1c, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START /* IN2 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x60, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_START /* IN3 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_VBLANK )
PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* Collision */
PORT_START /* IN4 */
PORT_BIT( 0x01, 0x00, IPT_DIPSWITCH_NAME ) PORT_NAME("Input Test Mode") PORT_CODE(KEYCODE_F2)
PORT_TOGGLE
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_BIT( 0x02, 0x00, IPT_DIPSWITCH_NAME ) PORT_NAME("Crosshair Pattern") PORT_CODE(KEYCODE_F4)
PORT_TOGGLE
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Language ) )
PORT_DIPSETTING( 0x00, DEF_STR( English ) )
PORT_DIPSETTING( 0x40, DEF_STR( German ) )
PORT_DIPSETTING( 0x80, DEF_STR( French ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Spanish ) )
PORT_START /* IN5 */
PORT_BIT( 0x03, 0x00, IPT_DIPSWITCH_NAME ) PORT_NAME("Color Test") PORT_CODE(KEYCODE_F5)
PORT_TOGGLE
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x03, DEF_STR( On ) )
PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) )
PORT_DIPSETTING( 0xc0, "5000 and 10000" )
PORT_DIPSETTING( 0x40, "5000" )
PORT_DIPSETTING( 0x80, "10000" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_START /* IN6 */
COINAGE(3)
PORT_START /* IN7 */
COINAGE(2)
PORT_START /* IN8 */
COINAGE(1)
PORT_START /* IN9 */
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Stats") PORT_CODE(KEYCODE_F1)
INPUT_PORTS_END
#define COINAGE(CHUTE) \
PORT_DIPNAME( 0x0f, 0x00, "Coin "#CHUTE ) \
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) \
PORT_DIPSETTING( 0x0d, DEF_STR( 4C_3C ) ) \
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) \
PORT_DIPSETTING( 0x0e, DEF_STR( 4C_5C ) ) \
PORT_DIPSETTING( 0x0a, DEF_STR( 2C_3C ) ) \
PORT_DIPSETTING( 0x0f, DEF_STR( 4C_7C ) ) \
PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) \
PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C ) ) \
PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) \
PORT_DIPSETTING( 0x0c, DEF_STR( 2C_7C ) ) \
PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) ) \
PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) ) \
PORT_DIPSETTING( 0x05, DEF_STR( 1C_6C ) ) \
PORT_DIPSETTING( 0x06, DEF_STR( 1C_7C ) ) \
PORT_DIPSETTING( 0x07, "1 Coin/10 Credits" ) \
PORT_DIPSETTING( 0x08, "1 Coin/14 Credits" ) \
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
Rules, 1-life:
ROM Set = "BERZERK"
Starting lives = 3
1st extra at 5K, 2nd at 10K
FAST bullets
One (1) life ONLY
Sample correct TG:
Doesn't matter: there are no relevant DIP switches to a one-life game.
Code:
MAMEInfo.dat entries for:
berzerk
berzerk.c
----
0.29 [Zsolt Vasvari, Christopher Kirmse]
Artwork available
NOTE:
- The game was named after the Sci-Fi novel 'Berzerkers', a novel about robots which go Berzerk and kill
everybody.
WIP:
- 0.144: Fixed rom names.
- 0.137u1: Team Europe, Volker Hann and David Haywood added clone Berzerk (German Speech).
- 13th March 2010: Smitdogg - Team Europe dumped the German version of Berzerk.
- 23rd April 2009: 3D ARCADE - New 3D cocktail model for Berzerk from btribble.
- 25th March 2009: 3D ARCADE - New rare Australian 3D cabinet model for Berzer from btribble.
- 13th March 2009: 3D ARCADE - New 3D cabinet model for Berzerk from btribble with the aftermarket Willis
CPO.
- 9th March 2009: 3D ARCADE - btribble updated Berzerk 3D cabinet model.
- 0.129u4: Changed 'Custom' sound to 'Exidy SFX'.
- 13th October 2008: Mr. Do - Ad_Enuff's back?!? After a long hiatus, it looks like Addy's computer is all
fixed and ready to get back to work now. First up on the list is the loooooong awaited bezel for Berzerk.
Pictures speak better than words, so just download it. Right up there with Addy's previous quality work.
- 0.125u9: Update S14001A core [Lord Nightmare]: Improved filtering to be more accurate to the chip,
changed internal audio renderer to produce 4 bit sound as the real chip does. Moved filter outside of the
main rendering loop into the glue code. Note: With this update, you may hear a whining noise that was not
previously present. This is accurate to the chip! The real chip would almost always have an analog filter
placed on its output to suppress this whine.
- 0.122u7: Zsolt Vasvari changed S14001A emulator to allow setting the clock frequency instead of the clock
multiplier. This is how the real chip works. Changed the Berzerk driver to set the S14001A clock as per the
schematics.
- 0.115u3: Significant changes to the Berzerk driver [Zsolt Vasvari]: Video timings, memory map and
interrupt system implemented from schematics. Hooked up colors according to the schematics as well. The
colors changed significantly. For example the yellow robots are now more like a mustard color. Changed
VSync to 59.637405 Hz.
- 0.113: Minor cleanup of Berzerk driver [Lord Nightmare].
- 0.112: Proper implementation of noise generator in the Exidy/Berzerk sound circuit and fixed popping in
Berzerk speech [Lord Nightmare].
- 0.111u6: Lord Nightmare added the missing volume and frequency controls to the Berzerk driver and s14001a
core. Fixed the issue with random words being spoken instead of the proper ones. Word is now latched at the
proper time. Changed S14001A clock speed to 5MHz.
- 0.111u5: Lord Nightmare fixed a minor problem with sound clipping in the s14001a. Aaron Giles added sound
effects emulation to the Berzerk driver. Added Custom sound. Removed samples (01-23.wav).
- 0.111u4: Lord Nightmare, Kevtris and R. Belmont added preliminary emulation of the TSI S14001A speech
synthesizer as found in Berzerk/Frenzy (and also Stern pinballs). Added S14001A sound.
- 14th January 2007: R. Belmont - The Stern speech synthesis is working (at least preliminarily) and has
been submitted. Who says we never improve old games?
- 10th January 2007: R. Belmont - The voice synthesis for Berzerk has been converted to MAME-like standards
but it's not working properly. Some commands cause it to spew a string of words, while many others are
silent.
- 5th January 2007: R. Belmont - It was pointed out to me that Lord Nightmare (with help from the awesome
Kevtris) has the speech hardware for Berzerk and Frenzy emulated but his code needs to be assimilated into
MAME. Sounds like fun...
- 10th January 2006: Frank Palazzolo - For those who haven't heard, the speech chip used in Berzerk has
been reverse-engineered by "Lord Nightmare"! This is something I've been waiting for for about 7-8 years!
I'm sure that the emulation will end up in MAME and PinMAME sooner or later. Because of this, I spent some
time over Christmas looking at the analog filters on the Berzerk speech board (these are applied to the
sound after it comes out of the chip). I finished the analysis, and it should be pretty straightforward to
add them into MAME after the chip emulation is done. For what it's worth, I've been trying out Maxima with
wxMaxima to do the symbolic math for circuit analysis. I know, I could have used SPICE or something - but
doing the math from scratch makes it easier to understand what is going on. After I worked out about half
of the math for these filters by hand, I ended up with about 6 pages of algebra. At this point, I figured I
should use this as an excuse for learning Maxima. Sure enough, I found an error on page 5. Darned minus
signs! The second half of the analysis took about 5 minutes, since the code from the first half was already
done, and I could re-use it! For those who care - the filter is a third-order lowpass - a first order
lowpass, followed by a second order with a resonant peak around 2400 Hz.
- 0.103u1: Major cleanup/rewrite of the Berzerk driver [smf]: Merged memory & IO read/write maps. Video ram
& magic ram share the same memory. Hooked up NVRAM in frenzy memory map. Emulates magic ram shifter/flopper
with 9 74LS153's as per the schematics. Emulates magic ram ALU with 2 74LS181's hardwired to logic mode as
per the schematics. 74LS181 emulation based on the logic diagram from the datasheet, supporting logic mode
& arithmetic mode.
- 0.101u1: MASH added missing voice roms to Berzerk and Frenzy.
- 0.93: Removed Custom sound.
- 15th May 2002: Zsolt Vasvari cleaned up the Berzerk driver.
- 0.36b7: Added Custom sound.
- 0.35b5: Changed description to 'Berzerk (set 1)' and clone (set 2). Changed visible area to 256x224.
- 21st February 1999: Zsolt Vasvari has worked on Berzerk, cleaning up and making it a bit faster.
- 0.33b2: Zsolt Vasvari fixed speed in Berzerk and Frenzy.
- 0.31: Alex Judd added sound in Zaxxon and Berzerk, through samples.
- 0.30: Aaron Giles support dirty rectangles in Berzerk.
- 0.29: Zsolt Vasvari and Christopher Kirmse added Berzerk (Stern 1980) and the earlier, very rare Berzerk
(version 1).
- 2nd June 1995: Dumped Berzerk (set 1).
LEVELS: 64000 (!!)
Other Emulators:
* JAE
* Retrocade
* Sparcade
Recommended Games (Maze 2):
Berzerk
Frenzy
Wizard of Wor
Draco
Venture
Warp & Warp
Black Widow
Kram
Naughty Boy
QB-3
Robotron: 2084
Tazz-Mania
Wacko
Gridlee
Mazer Blazer
***** Loose
Inferno (Williams)
Wiz Warz
Alien Arena
Butasan - Pig's & Bomber's
Smash T.V.
Dynablaster / Bomber Man
Bomber Man World
Super Bomberman 2 (Super Famicom Box)
Neo Bomberman
Exvania
Nitro Ball
Ultraman Club
Last Fighting
BnB Arcade
Recommended Games (Robots):
Robot Bowl
Berzerk
Frenzy
Robotron: 2084
Hopper Robo
I, Robot
Marvin's Maze
***** Loose
Hole Land
Bygone
Galactic Warriors
Metal Clash
Metal Soldier Isaac II
Robo Wres 2001
Mutant Night
Star Guards
Xybots
Atomic Robo-kid
Bakutotsu Kijuutei
Enforce
Povar / Sobrat' Buran / Agroprom (Pssst)
Robocop
Robocop 2
Robocop 3 (Nintendo Super System)
Act-Fancer Cybernetick Hyper Weapon
Escape from the Planet of the Robot Monsters
Robo Army
Terminator 2 - Judgment Day
Turbo Force
Battle of the Solar System
X-Men
Schmeiser Robo
Rise of the Robots
Cyberbots: Fullmetal Madness
Romset: 16 kb / 8 files / 12.6 zip
----
0.29 [Zsolt Vasvari, Christopher Kirmse]
NOTES:
- Original sound driver by Alex Judd. New driver by Aaron Giles, R. Belmont and Lord Nightmare.
WIP:
- 0.151: Removed legacy macro from Berzerk [Osso]. Fixed copypaste error in 74181, causing bug(s) in
Berzerk driver [hap].
- 0.150: Modernized the S14001A and Exidy sound devices [Osso]. Converted 74181 to a device [Dirk Best].
- 0.141u3: Split part of the driver include into a separate multi-driver include file (audio\exidy.h)
[Atari Ace].
- 0.122u7: Removed includes\berzerk.h.
- 0.122u6: Removed audio\berzerk.c.
- 0.115u4: Removed machine\berzerk.c and video\berzerk.c.
- 0.61: Added includes\berzerk.h.
- 0.31: Added sndhrdw\berzerk.c.
- 0.29: Added berzerk.c driver, machine\berzerk.c and vidhrdw\berzerk.c.
----
Human interpretation: