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: https://www.twingalaxies.com/scores.php?scores=9867
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.
----