freekick: MAME ROM Information. History:
Free Kick (c) 1987 Nihon System.
A ball and paddle game with a soccer theme.
- TECHNICAL -
Main CPU : Z80 (@ 3.072 Mhz)
Sound Chips : (4x) SN76496 (@ 3 Mhz)
Players : 2
Control : dial
Buttons : 2
- TRIVIA -
Released in May 1987.
Licensed to Sega.
Licensed to Merit Industries for distribution.
- SOURCES -
Game's rom.
MAME Info:
0.63 [Tomasz Slanina]
WIP:
- 0.143u5: Charles MacDonald and The Dumping Union fixed Free Kick - Game now playable. Added maincpu rom (ns6201-a_1987.10_free_kick.cpu - 52k).
- 8th October 2011: Charles MacDonald - I've been running a lot of tests on Free Kick to understand how various functions of the NS6201 security module work. Here's a complete description of it: http://cgfm2.emuviews.com/txt/freekick.txt
- 5th September 2011: Charles MacDonald - Free Kick dumped: I ran Free Kick in single-step mode up until a point where the stack pointer was initialized to a known value, than triggered repeated NMIs to push the stack pointer down past zero, wrapping around the address space into the external memory area. This is the only place where activity on the Z80 bus can be monitored. The NMI routine was allowed to finish instead of being interrupted again. At a point where it calls a leaf function, the return address was modified to point to a fragment of the IRQ handler which pops several registers off the stack before returning. This let BC, DE, and HL to be set to user-specified values, followed by another modified return address that pointed to a single LDIR instruction. A block transfer was performed that copied the internal RAM data to the external memory area in 4K chunks, and the process was automated to dump the entire content of security module correctly. It's satisfying to have this game dumped after working on it for quite some time, and this outcome certainly justified the time spent developing the Z80 analysis board. Here's hoping Counter Run can be dumped in a similar way. Does anyone have an original (non-bootleg) version of Counter Run they could lend for attempted dumping?
- 20th June 2010: Charles MacDonald - I've been investigating Free Kick, an arcade game that uses a security module in place of the CPU. Currently the bootleg version is emulated in MAME. Photos of a disassembled module show four, possibly five chip dies on one side and what is likely a Fujitsu MB3771 on the other side. One of the dies has an exceptionally high pin count and connects directly to the Z80 related pins, so it may be a Z180 (HD647180). Because of these direct connections there are probably no buffers in place to isolate internal bus activity from the outside world. However monitoring the data and control bus has not yielded any clear results. The module has an internal CR2032 battery that powers some SRAM which contains the game's program code. If the battery dies the module still functions and will print a "PROGRAM ERROR" message, so there must be internal ROM (the HD647180 has 16K of built-in ROM) that contains a start-up program which validates the SRAM before passing control to it. Typically for high score retention, the work RAM of a game is powered by a battery. Free Kick has such a battery, but it only connects to the module and not to any of the RAMs. If you consider that the bootleg games replace the security module with a daughterboard that has an EPROM for the program code and a 8Kx8 RAM, it seems likely that the work RAM is inside the module and is powered by the external battery. Since the power supplies are split across two batteries, I don't think the work RAM and program code RAM are the same chip but are two separate ones. When the module is removed from the board a number of pins have measureable voltages on them. These pins may have pull-up resistors to the internal battery. RSTOUT# is the output of the MB3771 which resets the 82C255 and a '259 latch on the PCB. The PCB has a RC reset circuit which connects to the reset input of the module. The MB3771 is probably used to disable the write inputs of the work RAM (and program RAM) when no +5V source is supplied. All Z80 address and data pins as well as RD#, WR#, MREQ#, and what I believe is IORQ# measure 0.009V which could be due to some kind of leakage, say from the program code RAM through the ESD protection diodes of the Z180 data and address bus. The pin that should be M1# is used to directly set a flip-flop which triggers the 120 Hz video interrupt. If this signal was a combination of IORQ# and M1# then that would indicate an interrupt acknowledge cycle and this connection would make sense. If it is just M1# directly then the interrupt acknowledge won't work as intended, instead any opcode fetch after the interrupt flip-flop has been set will clear it. It's hard to tell if that is intentional or not. For some reason one bootleg drives this same signal when a specific memory range is read or written which does not seem like compatible behavior. I made a circuit that requested the bus using the BUSREQ# and BUSACK# pins, and was able to halt the CPU while it ran the internal ROM program. In addition the WAIT# input is usable as it connects to the four SN76489s on the main board to cause wait states to lengthen PSG writes. I think these can be used to probe the internal memory space of the module, or if that failed, log internal bus activity. I'm developing some hardare to assist with that but it is still at an early phase. Assistance needed: If anybody has a bootleg of Free Kick or Counter Run with a daughterboard, I need to get some connections verified by using the continuity test function of a multimeter. It doesn't matter if the game works or not, and you don't have to power it up. Any bootleg will work, there are several different types. Please contact me if you can help.
- 0.136u3: Renamed (freekcb2) to (freekickb2) and (freekckb) to (freekickb).
- 0.126u5: David Haywood added clone Free Kick (bootleg set 2). Changed 'Free Kick (bootleg)' to clone 'Free Kick (bootleg set 1)'.
- 0.126u3: Brian Troha verified Free Kick PROMs and improved documentation. Fixed proms names.
- 0.105u5: Sonikos cleaned up the Free Kick driver, added 2nd button to Free Kick and matched the Z80 chip MHz to the "confirmed" MHz of Gigas (3072000 Hz).
- 8th February 2005: f205v dumped Free Kick (bootleg set 2).
- 0.63: Tomasz Slanina added Free Kick (Nihon System 1987 (Sega license)) and clone (bootleg). NOTES: Currently only the freekick bootleg roms are included the Free Kick bootleg roms are the same as one of the other sets + an extra 64k ram dump from protection device. The main program rom is unused, is it a dummy or just something to active the protection device? The sound ROM contains a Z80 program, but there isn't a sound CPU and that program isn't executed. Instead, the main CPU reads the sound program through an 8255 PPI and plays sounds directly.
- 28th December 2002: Nicola Salmoria added sound and fixed inputs and flip screen in Free Kick.
- 23rd December 2002: Tomasz Slanina added a bootleg of Free Kick that works unlike the original which is missing some program code.
- 21st February 1999: Malcor dumped Free Kick.
Recommended Games (Breakout):
Gee Bee
Super Breakout
Tournament Table
Bomb Bee
Cutie Q
Field Goal
Straight Flush
Wall Crash
Cannon Ball (Pacman Hardware)
Flying Ball (DECO Cassette)
Wink
Arkanoid
Tournament Arkanoid
Arkanoid - Revenge of DOH
Arkanoid Returns
Gigas
Gigas Mark II
Riddle of Pythagoras
Block Gal
Free Kick
Super Free Kick
Goindol
Mahjong Block Jongbou
Quester
Reaktor
Thunder & Lightning
Block Block
Ghox
Off the Wall
Twin Squash
Block Carnival / Thunder & Lightning 2
Play Girls
Peek-a-Boo!
Blocken
Wiggie Waggie
Cuby Bop
Zip & Zap
Bal Cube
Domino Block
Pop 'n Bounce
Puchi Carat
Puzzle Break
VS Block Breaker
Bestri
Mad Ball
Jumping Break
The Block Kuzushi
Gunbarich
Recommended Games (Soccer):
Tournament Table
Atari Soccer
Dribbling
Exciting Soccer
Exciting Soccer II
Pro Soccer
Pro Soccer (DECO Cassette)
Indoor Soccer
Power Play
Tehkan World Cup
Vs. Soccer
Kick and Run
Dynamic Shooting
Fighting Soccer
Kick Off
Last Striker / Kyuukyoku no Striker
Great Soccer (Mega-Tech)
Tecmo World Cup (Mega Play)
Tecmo World Cup '90
Tecmo World Cup '94
Tecmo World Soccer '96
Tecmo World Cup '98
Tecmo World Cup Millennium
World Championship Soccer (Mega-Tech)
World Trophy Soccer (Arcadia)
Football Champ
Super Football Champ
Nintendo World Cup (PlayChoice-10)
World Soccer Finals
Soccer Brawl
Big Striker
Seibu Cup Soccer
Super Sidekicks
Super Sidekicks 2 - The World Championship
Super Sidekicks 3 - The Next Glory
Super Soccer (Nintendo Super System)
Grand Striker
Grand Striker 2
Premier Soccer
Super Cup Finals
Taito Cup Finals
Dream Soccer '94
International Cup '94
J-League Soccer V-Shoot
Soccer Superstars
Super Visual Football
Taito Power Goal
V Goal Soccer
Virtua Striker
Virtua Striker 2
Virtua Striker 2 '98
Virtua Striker 2 '99
Virtua Striker 2 Ver. 2000
Virtua Striker 3
Five a Side Soccer
Goal! Goal! Goal!
Kick Goal
World PK Soccer
World PK Soccer V2
Back Street Soccer
Pleasure Goal
Prime Goal EX
The Ultimate 11
Versus Net Soccer
Capcom Sports Club (Soccer)
Libero Grande
Neo-Geo Cup '98 - The Road to the Victory
World Kicks
Evolution Soccer
-
Stone Ball
Free Kick
Super Free Kick
PK Scramble
X the Ball
Kick '4' Cash
Romset: 182 kb / 14 files / 62.8 zip
MAME XML Output:
   | <game name="freekick" sourcefile="freekick.c"> |
   |    | <description>Free Kick</description> |
   |    | <year>1987</year> |
   |    | <manufacturer>Nihon System (Merit license)</manufacturer> |
   |    | <rom name="ns6201-a_1987.10_free_kick.cpu" size="53248" crc="6d172850" sha1="ac461bff9da263681085920ad6acd778241dedd3" region="maincpu" offset="0"/> |
   |    | <rom name="11.1e" size="32768" crc="a6030ba9" sha1="f363100f54a7a80701a6395c7539b8daa60db054" region="user1" offset="0"/> |
   |    | <rom name="12.1h" size="16384" crc="fb82e486" sha1="bc672272dc32b2aa64e991992172c44bea1ca65c" region="gfx1" offset="0"/> |
   |    | <rom name="13.1j" size="16384" crc="3ad78ee2" sha1="033285d4ab7d6f46abf4c1bd4671c874738f0ac1" region="gfx1" offset="4000"/> |
   |    | <rom name="14.1l" size="16384" crc="0185695f" sha1="126994c69de157fc7c452ccc7f1a767f5085da27" region="gfx1" offset="8000"/> |
   |    | <rom name="15.1m" size="16384" crc="0fa7c13c" sha1="24b0ca73b0e35474e2392d8e729bcd44b80f9135" region="gfx2" offset="0"/> |
   |    | <rom name="16.1p" size="16384" crc="2b996e89" sha1="c6900449d27e89c3b444fb028694fdcda8e79322" region="gfx2" offset="4000"/> |
   |    | <rom name="17.1r" size="16384" crc="e7894def" sha1="5c97b7cce43d1e51c709603a0d2394b8119764bd" region="gfx2" offset="8000"/> |
   |    | <rom name="24s10n.8j" size="256" crc="53a6bc21" sha1="d4beedc226004c1aa9b6aae29bee9c8a9b0fff7c" region="proms" offset="0"/> |
   |    | <rom name="24s10n.7j" size="256" crc="38dd97d8" sha1="468a0f87a704982dc1bce1ca21f9bb252ac241a0" region="proms" offset="100"/> |
   |    | <rom name="24s10n.8k" size="256" crc="18e66087" sha1="54857526179b738862d11ce87e9d0edcb7878488" region="proms" offset="200"/> |
   |    | <rom name="24s10n.7k" size="256" crc="bc21797a" sha1="4d6cf05e51b7ef9147eeff051c3728764021cfdb" region="proms" offset="300"/> |
   |    | <rom name="24s10n.8h" size="256" crc="8aac5fd0" sha1="07a179603c0167c1f998b2337d66be95db9911cc" region="proms" offset="400"/> |
   |    | <rom name="24s10n.7h" size="256" crc="a507f941" sha1="97619959ee4c366cb010525636ab5eefe5a3127a" region="proms" offset="500"/> |
   |    | <chip type="cpu" tag="maincpu" name="Z80" clock="3072000"/> |
   |    | <chip type="audio" tag="mono" name="Speaker"/> |
   |    | <chip type="audio" tag="sn1" name="SN76496" clock="3000000"/> |
   |    | <chip type="audio" tag="sn2" name="SN76496" clock="3000000"/> |
   |    | <chip type="audio" tag="sn3" name="SN76496" clock="3000000"/> |
   |    | <chip type="audio" tag="sn4" name="SN76496" clock="3000000"/> |
   |    | <display tag="screen" type="raster" rotate="270" width="256" height="224" refresh="60.000000" /> |
   |    | <sound channels="1"/> |
   |    | <input players="2" buttons="2" coins="2"> |
   |    |    | <control type="joy" ways="8"/> |
   |    |    | <control type="dial" minimum="0" maximum="255" sensitivity="30" keydelta="15" reverse="yes"/> |
   |    | </input> |
   |    | <dipswitch name="Lives" tag="DSW1" mask="1"> |
   |    |    | <dipvalue name="3" value="1" default="yes"/> |
   |    |    | <dipvalue name="5" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Bonus Life" tag="DSW1" mask="6"> |
   |    |    | <dipvalue name="2-3-4-5-60000 Points" value="6" default="yes"/> |
   |    |    | <dipvalue name="3-4-5-6-7-80000 Points" value="2"/> |
   |    |    | <dipvalue name="20000 & 60000 Points" value="4"/> |
   |    |    | <dipvalue name="ONLY 20000 Points" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Difficulty" tag="DSW1" mask="24"> |
   |    |    | <dipvalue name="Easy" value="24" default="yes"/> |
   |    |    | <dipvalue name="Normal" value="16"/> |
   |    |    | <dipvalue name="Hard" value="8"/> |
   |    |    | <dipvalue name="Hardest" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Allow Continue" tag="DSW1" mask="32"> |
   |    |    | <dipvalue name="No" value="0"/> |
   |    |    | <dipvalue name="Yes" value="32" default="yes"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Cabinet" tag="DSW1" mask="64"> |
   |    |    | <dipvalue name="Upright" value="0" default="yes"/> |
   |    |    | <dipvalue name="Cocktail" value="64"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Flip Screen" tag="DSW1" mask="128"> |
   |    |    | <dipvalue name="Off" value="128" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Coin A" tag="DSW2" mask="15"> |
   |    |    | <dipvalue name="5 Coins/1 Credit" value="0"/> |
   |    |    | <dipvalue name="4 Coins/1 Credit" value="12"/> |
   |    |    | <dipvalue name="3 Coins/1 Credit" value="14"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit" value="5"/> |
   |    |    | <dipvalue name="3 Coins/2 Credits" value="6"/> |
   |    |    | <dipvalue name="4 Coins/3 Credits" value="4"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit" value="15" default="yes"/> |
   |    |    | <dipvalue name="4 Coins/5 Credits" value="8"/> |
   |    |    | <dipvalue name="3 Coins/4 Credits" value="10"/> |
   |    |    | <dipvalue name="2 Coins/3 Credits" value="9"/> |
   |    |    | <dipvalue name="3 Coins/5 Credits" value="2"/> |
   |    |    | <dipvalue name="1 Coin/2 Credits" value="7"/> |
   |    |    | <dipvalue name="2 Coins/5 Credits" value="1"/> |
   |    |    | <dipvalue name="1 Coin/3 Credits" value="11"/> |
   |    |    | <dipvalue name="1 Coin/4 Credits" value="3"/> |
   |    |    | <dipvalue name="1 Coin/5 Credits" value="13"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Coin B" tag="DSW2" mask="240"> |
   |    |    | <dipvalue name="5 Coins/1 Credit" value="0"/> |
   |    |    | <dipvalue name="3 Coins/1 Credit" value="224"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit" value="80"/> |
   |    |    | <dipvalue name="3 Coins/2 Credits" value="96"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit" value="240" default="yes"/> |
   |    |    | <dipvalue name="3 Coins/4 Credits" value="160"/> |
   |    |    | <dipvalue name="2 Coins/3 Credits" value="144"/> |
   |    |    | <dipvalue name="3 Coins/5 Credits" value="32"/> |
   |    |    | <dipvalue name="1 Coin/2 Credits" value="112"/> |
   |    |    | <dipvalue name="2 Coins/5 Credits" value="16"/> |
   |    |    | <dipvalue name="1 Coin/3 Credits" value="176"/> |
   |    |    | <dipvalue name="1 Coin/4 Credits" value="48"/> |
   |    |    | <dipvalue name="1 Coin/5 Credits" value="208"/> |
   |    |    | <dipvalue name="1 Coin/10 Credits" value="192"/> |
   |    |    | <dipvalue name="1 Coin/25 Credits" value="64"/> |
   |    |    | <dipvalue name="1 Coin/50 Credits" value="128"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Manufacturer" tag="DSW3" mask="1"> |
   |    |    | <dipvalue name="Nihon System" value="0" default="yes"/> |
   |    |    | <dipvalue name="Sega/Nihon System" value="1"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="2"> |
   |    |    | <dipvalue name="Off" value="2" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="4"> |
   |    |    | <dipvalue name="Off" value="4" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="8"> |
   |    |    | <dipvalue name="Off" value="8" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="16"> |
   |    |    | <dipvalue name="Off" value="16" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="32"> |
   |    |    | <dipvalue name="Off" value="32" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Unused" tag="DSW3" mask="64"> |
   |    |    | <dipvalue name="Off" value="64" default="yes"/> |
   |    |    | <dipvalue name="On" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Coin Slots" tag="DSW3" mask="128"> |
   |    |    | <dipvalue name="1" value="0"/> |
   |    |    | <dipvalue name="2" value="128" default="yes"/> |
   |    | </dipswitch> |
   |    | <driver status="good" emulation="good" color="good" sound="good" graphic="good" savestate="supported" palettesize="512"/> |
|
|