Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
16 contributors

Users who have contributed to this file

@cuavas @Osso13 @MooglyGuy @mmicko @sronco @ajrhacker @rb6502 @galibert @DavidHaywood @etabeta78 @Tafoid @Firehawke @smf- @MASHinfo @happppp @andreasnaive
8650 lines (7449 sloc) 489 KB
// license:BSD-3-Clause
// copyright-holders:David Haywood, Palindrome, Roberto Fresca
/****************************************************************************************************************
Aristocrat MK5 / MKV hardware
possibly 'Acorn Archimedes on a chip' hardware
Note: ARM250 mapping is not identical to plain AA
Current significant issues:
- Games run twice as fast as they should, sound effects are double speed etc.
There are threads that say when running in VGA mode an original AA
will play music etc. at half the expected speed, so it is likely
that the way the timers work differs in this mode (25Hz instead of 50?)
- Sounds are being output as bleeps and bloops in the older games and New Zealand/touchscreen games.
- Games occasionally give a coin diverter fault when inserting coins, mainly with US region games.
- Early US games will lock up completely if a hand pay is performed, requiring a complete memory reset.
To avoid this until the issue has been fixed, change the hopper and jackpot limits to a very large number
such as 999999 so large wins will be paid via the hopper.
US games where the music/sound works do not have this problem.
- Venezuelan games give a note acceptor error on boot even if the note acceptor is disabled in the options
- qnilebr (actually the 0301718V BIOS itself) won't accept coins on boot until the jackpot reset key is toggled (bug or not?)
- Later games from NSW/ACT and Venezuela lock up (hang) after a while after a certain amount of spins (usually 50 spins)
US games which can completely freeze after exceeding $1199.99 and forcing a hand pay, requiring the SRAM to be wiped:
- bumblbugu, bumblbugua, chickna5u, chickna5ua, eforsta5u, eforsta5ua, mgarden, minemineu, minemineua, pengpayu,
pengpayua, pengpayub, swhr2u, trpdlghtu, wcougaru, wcougarua, wcougarub, wnpost
Games which do *not* lock up after a certain amount of spins:
- All games from Holland, New Zealand, USA, and Casino versions.
- baddog, buttdeli, cashcham, chickna5, dmdfever, dolphntra, dolphntrb, drgneye, dstbloom, dstblooma,
eforsta5, jumpjoey, kgalaha, kgbirda5, locoloot, locoloota, lonewolf, luckyclo, mammothm, minemine,
mountmon, mountmona, mystgard, oscara5a, pengpaya, pengpayc, phantpay, przfight, qnileb, qtbird,
reelpwr, retrsama, retrsamb, rushrst, snowcat, swhr2a, thndh, thndha, thor, topbana,
trpdlght, wamazona, wcougar, wildbill, wldangel
BIOS ROMs are actually nowhere to be found on a regular MK5 system, as the BIOS code is at the start of game ROMs in U7 and U11.
Therefore, no BIOS system is required as it is built into each game, with the exception of casino software (see below).
On most US machines, set chips are required to change the system configurations on a game by swapping them with the game ROMs in U7/U11.
Casino versions actually do have a BIOS, otherwise known as a Base System, which is installed at U7/U11 at all times.
Casino game EPROMs are loaded in U8/U12 and beyond.
Casino games (except qnilebr), as well as games from Queensland and Victoria, require a comms protocol to be emulated,
otherwise they will remain in a disabled state and cannot be played.
Only New Zealand (0700474V) and Brazilian (0301718V) casino BIOSes have been dumped so far.
The Brazilian casino BIOS does not use comms, therefore qnilebr is playable. By swapping u7/u11 with the other
casino games (goldpyrb/jungjuic/penpir2), these games also become playable.
Queensland games and the 0700474V casino BIOS all use QCOM, blackpnt uses VLC (Video Lottery Consultants) comms instead.
Diamond Touch, Dream Weaver, Magic Touch and the New Zealand games have an autoplay option.
The New Zealand games have this enabled by default in the options, whereas on the NSW games it is disabled by default.
The Autoplay button replaces the fourth play line button normally used for 7 or 15 lines (orchidmsnz has 8 lines/Autoplay due to its unique reel layout).
Some Venezuelan games have a 'Play maximum lines' option, this will turn every play line button into maximum lines.
For example, the default setup may have 1, 5, 10, 15 and 20 line buttons; this option will turn every play button into 20 lines.
The gamble (double up) feature can be enabled in the options on non-US machines. It is disabled by default.
On US machines which don't use set chips, the gamble feature is enabled with dip switch 2-1.
On US machines which use set chips, the gamble feature can be enabled in the set chip options, but only if the game's region allows it.
The gamble option can not be enabled at all in the Brazilian casino BIOS, although the code is still in place.
The standard double up mode on Aristocrat games is the red/black card game, which is in fact the only option on US games.
Some machines have different gamble features, such as being able to bet on the four card suits for 4:1 odds,
or to spin a single slot reel which has 2:1, 3:1, 5:1, 10:1 or 100:1 odds of landing on the middle line.
Other games replace the cards with animations, for example the double up game in Prize Fight bets on which
boxer will knock out the other, likewise in Sumo Spins one sumo wrestler will ring-out the other.
In both Prize Fight and Sumo Spins the two opponents are wearing either red or black just like the cards they replaced.
The gamble feature is not available if a win coincides with a jackpot pay such as a Hyperlink feature.
Regional button layout differences:
US games have the payline buttons on the top row, the player selects the number of lines to be played first before choosing the bet multiplier to spin.
Some US games can have the bet and play line buttons reversed in the set chip options, which creates the same type of button layout as non-US games.
Non-US games have the bet buttons on the top row, the player selects the bet multiplier first before selecting the amount of lines to play.
An exception to the non-US layout applies if the game only has one payline, for example wamazona. In this case, the bottom row is used for the bet multipliers.
Some non-US games default to 1 credit per line when there are zero credits in the machine so that a player does not accidentally bet higher than intended.
The Chariot Challenge (both sets) also reverts to 1 credit per line after rebooting, regardless of the previous bet.
Some games can be set up to multiple bet and line configurations. Usually this applies to the US set chip games,
however some non-US games also have this option, such as baddog, marmagic, trojhors and tritreat.
Multiple button panels are supported as artwork files and can be toggled in MAME's Video Options menu.
Some early games such as swhr2a have an option to have either music or coin sounds to be played during a win.
This option is in the Sound System setup rather than in Machine Options.
Selecting "Base" plays coin jingles while selecting "MK2.5" plays a small selection of prerecorded music taken from MK2.5 games.
Later non-US games moved the collect limit from the Machine Options menu into its own menu.
US Hyperlink (e.g. Cash Express) games will not trigger the jackpot feature if variation 5 is not selected in the set chip options.
This is not a bug, these games can either be set to normal standalone games or Hyperlink jackpot games.
This affects dolphntrce, dolphntrcea, dolphntrceb, eforsta5ce, glizrdce, kgalahce, pengpuck, qnilece, qnilecea and qnileceb.
Non-US Hyperlink games will still trigger the jackpot feature as intended, however the link system is not emulated
therefore no jackpot credits are paid if the Hyperlink feature is triggered, and the games will need the jackpot key to be toggled to continue play.
If the link system is offline on a real machine, the game will disable itself after the Hyperlink feature and a hand pay of the applicable jackpot amount
would be required. Normally if this occurs in the wild the machine is immediately taken out of service until the link system is working again.
List of Hyperlink systems/themes on MK5 hardware:
Cash Express - Train theme.
Penguin Pucks - Arctic/Antarctic theme, based on Cash Express.
Maximillions - Game show style theme, stylized as Maximillion$. A similar game for the US market is Millioniser, stylized as Millioni$er, however this may only be on later hardware.
Scorchin' Fortune - Sports car/racing theme, based on Cash Express.
Fast Lane - Same theme as Scorchin' Fortune but the jackpot feature is slightly different.
Born To Be Wild - Motorcycle theme, based on Cash Express, later recycled on MK6 hardware as Thunderheart (not to be confused with the game Thunder Heart).
Note: The Hyperlink jackpot feature trigger is won at random and is predetermined the instant the player has started a game.
Pressing the buttons to stop the Hyperlink reels is only a visual effect with no skill involved, likewise touching the icons to reveal the characters in Maximillions.
The jackpot level won (e.g. Grand, Major, Minor or Mini) is also predetermined at the start of the game.
Most Hyperlink games have a set of four eight-digit, seven-segment LEDs installed in the topbox for displaying the progressive jackpots.
The Grand and Major jackpot displays are larger than the Minor and Mini jackpot displays.
There is a discrepancy with some game names between the ROMs and the artwork or even official documents:
For example, swhr2 is called Sweethearts II inside the ROM, however on the artwork it is called Sweet Hearts II.
Mountain Money displays "MOONSHINE MONEY" when a win with the wild Moonshine occurs. The game itself is not called Moonshine Money.
Chicken displays "Chicken Run Feature Completed" at the end of the feature. The game itself is not called Chicken Run.
Thunder Heart is named Thunderheart on the artwork, as well as on the later Hyperlink jackpot games.
Golden Pyramids is sometimes called Golden Pyramid (without the trailing 's') in the ROM.
Some games also have completely different artwork (using the same theme and paytable) but use the ROMs from another game. Examples are:
Heart Throb = Sweethearts II (Heart Throb confirmed using 0200004V EPROMs)
Moon Fire = Indian Dreaming (Moon Fire confirmed using 0100845V EPROMs)
Golden Pyramids = Queen of the Nile (Golden Pyramids confirmed using 0300439V EPROMs; note that some ROMs actually do contain the Golden Pyramids string)
Note that the artwork for Golden Pyramids (NSW/ACT) has a 1996 copyright, whereas Queen of the Nile has a 1997 copyright.
Earlier versions of Golden Pyramids (undumped) have prerecorded win music from MK2.5/MK4 games similar to dolphntra, as with other early MK5 games.
Queen of the Nile does not use this early prerecorded music in any of its variants.
List of clones (identical games with different names and/or graphics):
Queen of the Nile = Golden Pyramids = Dolphin Treasure = Beyond the Reef (undumped) = Adonis = Geisha (note that Adonis has a slightly different symbol layout for reel 1, but the symbol frequency is still identical)
Sweethearts II = Heart Throb = Desert Bloom = Tropical Delight = Coral Riches II
Phantom Pays = Enchanted Forest = Magic Garden = Lucky Clover = The Gambler = Thunder Heart (9 line) = Mountain Money (9 line)
Diamond Touch = Magic Mask = Party Gras = Diamond Destiny
Bumble Bugs = Oscar
Butterfly Delight = Golden Canaries (undumped)
Cash Cat = Kooka Bucks
Cash Crop = Money Mouse
Unicorn Dreaming = Inca Sun
Reelin-n-Rockin = Indian Dreaming = Moon Fire
Reel Power = Wizard Ways
Wicked Winnings = Way To Go (undumped)
Snow Cat = Loco Loot = Wild Coyote
Sweet Liberty Deluxe = Koala Mint
Cash Chameleon = Canyon Rose = Queens of Cash
Green Lizard = King Galah
Penguin Pays = Jumping Beans = Jumpin' Joey = Fortune Fever = Honky Tonk
Top Banana = Black Panther
Panther Magic = Black Rhino (undumped) = Wild Africa = K.G. Bird = Wild Cougar = Thor = Fantasy Fortune (undumped)
Wild Thing = Return of the Samurai
Toucan Tango = Boot Scootin'
Gnome Around the World = Penguin Pirate = Penguin Pirate II
Prize Fight = Super Bucks II
Silver Wolf = Lone Wolf
Mystic Garden = Mountain Money (20 line) = Mammoth Money
Winning Post = The Chariot Challenge
Rushin' Rooster = Chicken
Yukon Gold = Margarita Magic
Peacock Flutter = Treasure Trove = Trojan Horse
Mine Mine Mine = 3 Bags Full (undumped) = Fortune Hunter (only released on MK4)
Magic Touch = Dream Weaver
Keep Your Hat On = Bachelorette Party
*****************************************************************************************************************
How to set up the games from scratch:
Standard NSW/ACT games and similar non-US games, including Holland and Venezuela:
Step 1: Audit key in (F2), press Reserve (A) and the fourth line button (G) together to clear the memory. Some games may require the main door to be open (press M) prior to clearing.
Note: On 3-payline games, press Reserve (A) and Bet 1 Credit (E) to clear the memory.
If open, the main door can be closed from this point on (press M again).
Step 2: Enter Operator Setup -> Machine Options
Usually, the Machine ID can be set to anything, however some games complain if it set to zero.
Base Credit Value is the denomination e.g. $0.01 is a one cent machine; $1.00 is a one dollar machine. Some machines may not allow certain values, others may only have one setting.
Token Value is the coin used. The default coin in Australian machines is $1.00 ($2.00 for New Zealand) but there are a number of options from 1 cent all the way to 100 dollars.
Percentage Variation is how loose or tight you want the machine to be, the higher the percentage, the better the game is to the players at the cost of the house edge. Usually the default is "Variation 99" or around 87%. Again, some machines may only have the one option.
CCCE is for communications in a gaming venue, and is not required for emulation.
Collect limit is the highest amount of credits allowed to be cashed out before a hand pay is required.
Hopper refill is the amount of coins the machine should receive every time when the hopper is empty (not required for emulation as the hopper has infinite coins!)
Gamble is the double up feature, and it is disabled by default as seen in the diagram. Change the setting to YES for the ability to bet against your wins; if disabled, the wins are automatically added to the credit meter.
Step 3: Once everything has been set up, open the Security Cage/Logic Door (L) and press (W) to save (or (R) on 3-payline games; (H) on single-line games), and close the logic door (L again).
By now it should be safe to key out (F2) and the game should be ready to accept credits, if not, check whether the main door (M) is still open or if it needs another memory reset (if pressing F2 went to the main menu instead of going back to the game).
All items with ?? must be changed or the game will not allow you to save any settings.
Later games may have more options, such as the ability to toggle between a printer and/or hopper. Disabling the printer will enable the hopper refill option.
Some games may enter a graphical menu for the bet/line/denomination setup, usually if they support multiple betting options.
Note: To disable both the hopper and forced hand pay on cashout, change both the Collect Limit and Hopper Refill to $0.00.
Disabling this setting will allow hand pays but still allow the player to continue if they inadvertently hit Collect.
To perform a hand pay or jackpot reset (e.g. after a Hyperlink feature), press (V) to allow the game to enter play mode.
Note that in some games such as Treasure Trove (trstrove), the collect options are moved to Operator Setup -> Set Collect Limit rather than in Machine Options.
New Zealand non-casino games, and most NSW/ACT touchscreen games:
These games have a slightly updated menu system reminiscent of MK6 games, complete with a black background instead of blue.
Step 1: Audit key in (F2), press Reserve (A) and the first line button (S) together to clear the memory. The main door does not need to be open.
Step 2: Enter Operator Setup -> Machine Options
Step 3: Set everything up as above, open the Security Cage/Logic Door (L), and save the machine options (which now has its own spot on the menu instead of a dedicated button).
Close the Security Cage (L) and turn off the Audit key (F2) and the game should be ready to accept credits.
New Zealand machines are usually identical to Australian games except that they normally use NZ $2.00 coins in place of AU $1.00 coins,
and have smaller but more frequent payouts due to gambling laws which limit the maximum possible win per bought game to $500.00. CCCE comms is not used on New Zealand machines.
Queensland games, older types:
bumblbugql, chickna5ql
Audit key in, press Reserve (A) and the fourth line button (G) together to clear the memory.
The game will automatically enter the Machine Options menu where you can change the QCOM poll address, serial number, denomination and bill acceptor settings.
The poll address must be a number from 1 to 255. The serial number cannot be zero.
Bill acceptor options should remain disabled until implemented in MAME, otherwise the machine will give a bill acceptor stacker error.
Press Reserve (A) to save changes, and key out (F2) to exit the menu.
Note 1: Once these settings have been saved, they cannot be changed unlike games from other regions as the Machine Options menu is hidden.
Note 2: As the QCOM protocol is not yet emulated, the games are not playable since they automatically disable themselves after timing out.
Queensland games, newer types:
dolphntrql, indrema5ql, qnilefl, qnileql, reelrockql
Audit key in, press Collect (Q) and the fourth line button (G) together to clear the memory.
The game will automatically enter the Machine Options menu where you can change the serial number (it cannot be zero) and enable/disable the bill acceptor.
Bill acceptor options should remain disabled until implemented in MAME, otherwise the machine will give a bill acceptor stacker error.
Press Collect (Q) to save changes, and key out (F2) to exit the menu.
Note 1: Once these settings have been saved, they cannot be changed unlike games from other regions as the Machine Options menu is hidden.
Note 2: As the QCOM protocol is not yet emulated, the games are not playable since they automatically disable themselves after timing out.
Casino games using the New Zealand 0700474V base EPROMs:
Currently, this is limited to goldpyrb, jungjuic and penpir2 (and also qnilebr if you swap the base EPROMs). The games are universal (all regions), however the base is region coded.
Step 1: Audit key in, press Service (A) and the fourth line button (G) together to clear the memory.
Step 2: Enter Options Setup -> Machine Options and follow the same instructions as per the NSW/ACT games. The game should already have some default settings, but they can still be changed.
Note that like Queensland games, this casino base requires QCOM thus the games are not yet playable with these base EPROMs.
Casino games using the Brazilian 0301718V base EPROMs:
Currently this is limited to qnilebr (and the above three casino games if you swap the base EPROMs).
This is similar to the NSW/ACT games, however upon keying in (F2), it requires a four-digit setup code before it can be initialized.
By default, this number is 4856. After the game has accepted this code, press Service (A) and Play 7 Lines (G) at the same time to clear the memory.
The game will then tell you to press Bet 1 (W) to continue.
You will now be asked to change the four digit code for the Audit menu. Do not forget this number otherwise you will not be able to enter the menu.
When the code has been inputted, you will have to repeat the code and then confirm with the Bet 1 button (W).
Two other similar menus will appear, requiring similar new codes, which are to be inputted and confirmed in the same way.
After confirming the third code, the machine will tell you to key out (F2). The game should now be ready to accept credits.
Note: To change settings, key in (F2) and enter the Operator Setup (Opcoes de Configuracao) -> Machine Options (Itens Gerais) as per the NSW/ACT games.
Once the required settings have been changed, open the logic door (L), press Bet 1 (W) to save the settings, close the logic door and key out.
Running non-Brazilian casino games with the Brazil base may cause minor text errors due to the games not having accented characters in the fonts,
however they are still fully playable.
*************************************************************************************************************
USA platform, games without set chips:
Step 1: Set up the DIP switches to the desired values.
DIP Switch Bank 1 (DSW1) is comprised of coin/credit values.
The first four switches control the coin (token) type:
0000 = $0.05 (5 cents/nickels)
1000 = $0.10 (10 cents/dimes)
0100 = $0.25 (25 cents/quarters)
1100 = $0.50 (50 cents/half dollars)
0010 = $1.00 (dollar coins)
1010 = $5.00
0110 = $10.00
1110 = $50.00
xxx1 = $100.00 (any value with the fourth switch set is $100.00)
The fifth through eighth switches control the machine's denomination:
0000 = $0.01 (e.g. a 1 cent machine)
1000 = $0.02
0100 = $0.05
1100 = $0.10
0010 = $0.25
1010 = $0.50
0110 = $1.00
1110 = $5.00
0001 = $10.00
1001 = $50.00
x101 = $100.00
xx11 = $100.00
Note that not all combinations are valid e.g. they must be evenly divisible and a token cannot be less than the machine's denomination.
DIP switch settings are normally only read once by the machine on start-up. To visibly change DIP settings you need to reset the machine (F3) or perform a memory clear from the main menu (see Step 2 below).
Each machine has its own DIP switch options concerning DIP Switch Bank 2 (DSW2), however the gamble feature is universally the first switch.
Per-game DIP switch information is available in the Operator Setup -> Dip Switch Settings menu.
Once a machine has been set up, the DIP switches are ignored from then on, even if they have been changed.
Step 2: Audit key in, enter Operator Setup -> Machine Options and set up the machine to the applicable standards.
To save the settings, open the Logic Door (L), press the Bet 1 Credit button (S), close the Logic Door and exit the menu (or press F2 for a shortcut to the main menu).
Step 3: The machine will now need a memory reset. From the main menu, open the Main Door (M) and press Cashout (A) and the fourth line button (T) together to clear the memory.
After closing the Main Door (M) and keying out (F2), the menu should close and the game should be ready to coin up.
Hint: If you need to change the DIP switches after a game has been set up, use a set chip to clear the memory (press Cashout+Service (A+S) once the set chip has loaded, and then go back to game mode).
To switch between game mode and set chips, you need to reset the machine (F3) as it is technically swapping the ROMs on the board.
Performing a memory reset will not erase the machine options, but it will cause a memory error which will allow you to set up anything else.
Using the Clear All Memory option from the set chip menu (assuming 4.04.xx) will erase everything however.
*************************************************************************************************************
USA platform, games requiring set chips:
Step 1: Take note of Bet/Line setup. If an invalid bet/line combination is used, the machine cannot perform a memory clear or be set up so it is important to check.
Key in (F2), Enter Operator Setup (T), Bet/Line Denom Settings to view allowable bet/line options
For example, qnilece only allows 20 lines with 5, 10, 25 or 50 credit multipliers, all other options are invalid.
The default (and usually invalid) setting is 1 line with a 3 credit multiplier, so it has to be changed in the set chip.
Step 2: Take note if the set chip version. As with having a wrong bet/line setting, the machine cannot be set up if the wrong set chip version is used.
Assuming you are still in the audit menu (press F2 anyway, it will be a shortcut to the main menu if a game hasn't been set up yet), enter Machine Identification
Note: This may cause the game to reboot so pause the emulation as soon as you enter the menu if you need more time to read the set chip version number. Remember to un-pause emulation afterward!
Using qnilece as an example, this particular game requires set chip version is 4.04.xx. This means that any set chip which is compatible with 4.04.xx can be used with this game (the "xx" digits don't matter).
Step 3: Now that we know the correct bet/line values and the set chip version it is time to swap the U7 and U11 game chips for the set chips.
To do this in MAME, press Tab to open the menu and enter Machine Configuration and select an appropriate set chip with the left/right keys.
It is best to use 4.04.09 for all games as it is the latest version supported in MAME; set chips are backward compatible with previous versions so they can also be used to set up older games (for example, cashchamu requires 4.00.xx).
You should now be in the set chip menu (if not, hit F3).
Press Service and Cashout together (Q+A) to reset the SRAM and enter the Version Menu.
Service and Cashout are your up/down cursor keys in the set chip menu, for qnilece we need to set the machine to 4.04.xx so press Q or A until a suitable version appears and press F to confirm selection.
Press F again in the Game Type Setup Menu as this game is a video slot (as opposed to video poker).
You will now be in the main menu. Press G to enter a sub-menu and F to exit a sub-menu.
To change the options, press E or R to move the selection back or forward respectively.
Step 3a: Jurisdictional Options
Enter the Jurisdictional Options Menu to set up the region and various options.
Usually, only the jurisdiction and/or gamble feature need to be toggled (the latter is required in order to enable the double up option). Bill acceptors are not emulated as of 0.198.
Jurisdiction: This option sets the various US regions or Bolivia, Peru/Sask, Puerto Rico or Uruguay.
Each region has its own gambling laws and restrictions which is why there are so many options.
The set chip region with the least restrictions is actually Uruguay rather than a US state, as US slot machines are not allowed to store more than $1200.00 worth of credits and/or wins, and wins in excess of the limit must be hand paid.
Cancel Residual Credit: Soft Lockup or Hard Lockup. Residual credits are credits below the minimum value which cannot be cashed out as coins or otherwise.
A soft lockup allows the player to either call an attendant for a hand pay or continue playing, while a hard lockup requires a hand pay of the remaining credits.
Gamble Feature: Toggle between Disabled or Enabled.
The gamble feature is not available in the following regions: Arizona, California, Colorado, North Dakota, South Dakota, Wisconsin and Puerto Rico.
Bill Acceptor Protocol: (To be written once emulated)
EFT/Bonus Transfer: Cashless/ticket acceptance options, not required in MAME.
The following items are hard coded and cannot be changed:
Maximum Bet Limit, Max Bet Coin Reject, Tokenization, Cashout Device, Maximum Percentage.
The only setting of note is Tokenization. If this is enabled, one coin (token) can represent multiple credits, otherwise if disabled, one coin (token) is one credit.
Step 3b: Money Setup and Payout Setup
This is where the coin/credit (denomination) values can be changed. Note that some settings cannot be used with some games, or if the coin cannot be evenly divided into credits or is worth less than one credit.
By default, the machine is set to 5 cents buys 1 credit, which basically means a 1 cent (penny) slot which accepts nickels.
The higher the value of one coin, the more credits can be inserted at a time (unless one coin is equal to one credit).
The higher the value of one credit, the more money a win is worth e.g. 1000 credits on a penny slot is ten dollars whereas 1000 credits on a nickel slot is fifty dollars.
If tokenization is disabled, the coin and credit values must be identical.
Max Credit Limit is the maximum amount of credits allowed in the machine. While the menu allows you to select up to $999999.99 as an option, the maximum possible value is $99999.99
Tax Limit cannot be changed, it is hard coded to the region ($1200.00 for US setups, $999999.99 for non-US setups).
Payout Setup Menu: This menu is not required in MAME.
Step 3c: Playline Setup Menu
Remember how qnilece only allowed 20 lines, with bets of 5, 10, 25 and 50 credits? It's time to tell the set chip that this game is not a three credit single line game.
Of course, the higher the maximum bet, the larger the wins are at the cost of how much money you put through the machine.
Most games also allow the button panel to be reversed, with the bet buttons on the top row and the playline buttons on the bottom, similar to non-US machines. This is toggled with G.
Note that the intermediate bet values shown on the button display may not correspond perfectly with the actual bet values in the game itself; this information is not actually stored in the set chip and is up to the game's programming.
Step 3d: Miscellaneous Options Menu
Variation Number is how loose or tight you want the machine to be. By default, it is variation 99, which is usually around 87%, give or take 1% depending on the machine.
Variation 99: 87%
Variation 1: 90%
Variation 2: 92%
Variation 3: 94%
Variation 4: 97%
Variation 5: 82%
Usually, variation numbers beyond 4 are not supported, aside from variation 5 for Hyperlink games. Variation 6 identifies as a Hyperlink setting but no games support this value.
To enable the Hyperlink feature, variation 5 must be selected. This variation usually has a significantly lower payout percentage than the standard settings, with the progressive jackpots making up the remaining payouts.
Note: Not all percentage variations can be selected, and Hyperlink features (e.g. Cash Express) cannot be enabled on games which do not have them.
Also note: As the external link system is not emulated in MAME, it is recommended to only use variations 99 and/or 1-4 (if applicable) as you cannot win any Hyperlink jackpot credits without the link.
Hyperlink Turnover is the value to set when enabling the jackpot bonus. The higher the value, the harder the jackpot feature is to trigger, although the progressive jackpot will grow larger in the process.
Note that this setting is dependent on the machine's credit value (denomination) and bet settings, and usually only one or two settings will be valid.
Play Bet Button Functionality: Continuous allows the play/bet button to be held down to continue playing automatically, while Toggle forces the button to be pressed for every paid game and will not automatically spin if held.
Step 3e: If all of the above have been done, open the Logic Door (L) and press press G to save the changes. Optionally, you can close the Logic Door at this point.
It is time to save everything and swap the set chips back to the game EPROMs.
If all is OK, you should now see the line markers on the game screen and the coin/credit value in the top right corner.
If anything has gone wrong after going back to the game EPROMs and you have a jurisdictional error, the setup error(s) should be visible in the game's audit menu under Machine Lockups.
Step 4: Setting up the machine.
If there are no jurisdictional errors after going back to the game EPROMs, it is now time to set up the machine itself.
To reset the memory (EEPROM/static RAM), key in (F2), open the main door (M) and press Cashout and Service together (Q+A). This will reset the EEPROM so you can set up the machine for good.
Enter the Operator Setup / Game Machine Options menu.
Usually, most the default settings are fine, but the machine won't let you save until at least one item has been changed, even if it is reverted.
You might want to change the jackpot settings, as by default it is only 200 credits and will force a hand pay for wins over that amount. The higher the better of course, if you do not want constant hand pays.
To save settings, open the Logic Door (L) and go to Save Machine Options and hit (T) and close the Logic Door. The Logic Door must be open otherwise all changes will be lost if you exit the menu.
Once saved, go back to the main menu (or hit F2 for a shortcut) and reset the static RAM again and close any open doors such as the Main Door (M).
If all has gone well, there should be no more errors and you should be able to exit the audit menu (F2) and coin up!
If not, check the Current Lockup menu and it should show you any remaining errors or any doors that may still be open.
*****************************************************************************************************************
TODO (MK5 specific):
- Fix remaining errors
- Layouts for various configurations
- Bill acceptor
- Serial printer
- Default NVRAM
code DASMing of POST (adonis):
- bp 0x3400224:
checks work RAM [0x87000], if bit 0 active high then all tests are skipped (presumably for debugging), otherwise check stuff;
- bp 0x3400230: EPROM checksum branch test
- bp 0x3400258: DRAM Check branch test
- bp 0x3400280: CPU Check branch test
bp 0x340027c: checks IRQ status A and FIQ status bit 7 (force IRQ flag)
- R0 == 0: CPU Check OK
- R0 == 1: IRQ status A force IRQ flag check failed
- R0 == 2: FIQ status force IRQ flag check failed
- R0 == 3: Internal Latch check 0x3250050 == 0xf5
- bp 0x34002a8: SRAM Check branch test (I2C)
- basically writes to the I2C clock/data then read-backs it
- bp 0x34002d0: 2KHz Timer branch test
bp 0x34002cc: it does various test with GO command reads (that are undefined on plain AA) and
IRQA status bit 0, that's "printer busy" on original AA but here it have a completely
different meaning.
- bp 0x34002f8: DRAM emulator branch tests
bp 0x34002f4:
- R0 == 0 "DRAM emulator found"
- R0 == 1 "DRAM emulator found"
- R0 == 3 "DRAM emulator not found - Error"
- R0 == 4 "DRAM emulator found instead of DRAM - Error"
- R0 == x "Undefined error in DRAM emulator area"
It r/w RAM location 0 and it expects to NOT read-back value written.
goldpyr: checks if a "keyboard IRQ" fires (IRQ status B bit 6), it seems a serial port with data on it,
returns an External Video Crystal Error (bp 3400278)
dimtouch:
bp 3400640: checks 2MByte DRAM
- writes from 0x1000 to 0x100000, with 0x400 bytes index increment and 0xfb data increment
- writes from 0x100000 to 0x200000, with 0x400 bytes index increment and 0xfb data increment
- bp 3400720 checks if the aforementioned checks are ok (currently fails at the very first work RAM check
at 0x1000, it returns the value that actually should be at 0x141000)
bp 340064c: if R0 == 0 2MB DRAM is ok, otherwise there's an error
set chip (BIOS):
same as goldpyr (serial + ext video crystal check)
bp 3400110: External Video Crystal test
*****************************************************************************************************************
MKV S2 Mainboard, PCB Layout:
+--------------------------------------------------------------------------------------------------------+
| | 96-pin male connector | | 96-pin male connector | | 96-pin male connector | |
| +------------------------------+ +------------------------------+ +------------------------------+ |
| +---+ +--+ +---+ +---+ +---+ |
+-+ |VR1| | |U89 +------+ +------+ |AA | |AB | |AC | |
| | | | | | |AMP | |U35 | +---+ +---+ +---+ |
|S| | | | | +------+ +------+ +---+ +---+ +---+ |
|I| +---+ +--+ +--+ |U46| |U21| |U66| |
|M| | |U52 ARISTOCRAT +---+ +---+ +---+ |
|M| +----+ | | MKV S2 MAINBOARD +------------+ |
| | +---------+ |U47 | | | PCB 0801-410091 | 3V BATTERY | |
|S| |U72 | +----+ +--+ ASSY 2501-410389 | | |
|O| | | +-----+ ISSUE A01 +------------+ |
|C| | | |U23 | +----+ |
|K| | | | | |U53 | |
|E| +---------+ +-----+ +------------+ +----+ |
|T| |U85 | +----+ +----+ +--+ +--+ +----+ +----+ +--+ +--+ |
| | +---------+ | | |U58 | |U54 | |U | |U | |U59 | |U61 | |U | |U | |
| | |U71 | | CPU | +----+ +----+ |1 | |4 | +----+ +----+ |1 | |4 | |
| | | | | | +----+ |4 | |8 | +------+ |5 | |9 | |
| | | | +-----+ | | |U56 | |9 | | | |U36 | |2 | | | |
| | | | |U65 | | | +----+ +--+ +--+ | | +--+ +--+ |
| | +---------+ | | +------------+ +------+ |
| | +-----+ +-----+ +---+ |
+-+ +---+ |U73 | |X2 | +----------------+ +----------------+ |
| |U26| | | +---+ +---+ |U14 | |U10 | |
| +---+ +-----+ |U50| | | | | |
| |U27| +-----+ +---+ +----------------+ +----------------+ |
| +---+ |U5 | |U40| |U13 | |U9 | |
| | | +---+ | | | | |
| +-----+ |U41| +----------------+ +----------------+ |
| +---+ |U12 | |U8 | |
| +---+ | | | | |
| |VR2| +-----+ +-----+ +----------------+ +----------------+ |
| | | |U24 | |U22 | |U11 | |U7 | |
| | | | | | | | | | | |
| | | +-----+ +-----+ +----------------+ +----------------+ |
| +---+ +----------------------------------+ |
| | 96-pin female connector | |
+--------------------------------------------------------------------------------------------------------+
U5: 48 MHz crystal (unpopulated from factory).
U7: 27C4096 ROM socket (bank 0).
U8: 27C4096 ROM socket (bank 1).
U9: 27C4096 ROM socket (bank 2).
U10: 27C4096 ROM socket (bank 3).
U11: 27C4096 ROM socket (bank 0).
U12: 27C4096 ROM socket (bank 1).
U13: 27C4096 ROM socket (bank 2).
U14: 27C4096 ROM socket (bank 3).
U21: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
U22: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
U23: LATTICE GAL16V8D-25LJ (High Performance E2CMOS PLD Generic Array Logic, 20-Lead PLCC).
U24: LATTICE GAL16V8D-25LJ (High Performance E2CMOS PLD Generic Array Logic, 20-Lead PLCC).
U26: SGS THOMSON ST93C46 (1K (64 x 16 or 128 x 8) Serial EEPROM).
U27: SGS THOMSON ST93C46 (1K (64 x 16 or 128 x 8) Serial EEPROM).
U35: PHILIPS 74HC273.
U36: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
U40: Dallas Semiconductor DS1202S (Serial Timekeeping Chip).
U41: Maxim Integrated MAX705CSA (MPU Supervisory Circuits).
U46: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
U47: Maxim Integrated MAX202CWE (RS-232 Interface IC).
U48: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
U49: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
U50: Dallas Semiconductor DS1620 (Digital Thermometer and Thermostat).
U52: Allegro MicroSystems UDN2543B (Protected quad power driver).
U53: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
U54: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
U56: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
U58: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
U59: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
U61: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
U65: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
U66: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
U71: Texas Instruments TL16C452FN (UART Interface IC Dual UART w/Prl Port & w/o FIFO).
U72: Texas Instruments TL16C452FN (UART Interface IC Dual UART w/Prl Port & w/o FIFO).
U73: CX0826 72 MHz crystal.
U85: ARM250: Computer system on a chip. ARM 32bit RISC processor with memory, video, and I/O controllers.
U89: Allegro MicroSystems UDN2543B (Protected quad power driver).
U149: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
U152: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
AA: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
AB: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
AC: PHILIPS 74HC245D (Octal bus transceiver, 3-state).
AMP: TDA 2006 (12W Audio Amplifier).
VR1: Motorola 7805 (3-Terminal 1A Positive Voltage Regulator).
VR2: SGS THOMSON L4975A (5A stepdown monolithic power switching regulator at 5.1V-40V).
X2: Unpopulated crystal (from factory).
The 96-pin female connector at the bottom of the ROM banks is intended for a sub board
with two ROM sockets, that once plugged switch the ROM bank 0 with the sub board bank.
Just to place the clear chips without removing the U7 & U11 EPROMS.
*****************************************************************************************************************/
#include "emu.h"
#include "includes/archimds.h"
#include "cpu/arm/arm.h"
#include "machine/ds1302.h"
#include "machine/watchdog.h"
#include "machine/eepromser.h"
#include "machine/microtch.h"
#include "machine/input_merger.h"
#include "machine/nvram.h"
#include "machine/ins8250.h"
#include "machine/ticket.h"
#include "sound/volt_reg.h"
#include "speaker.h"
// Non-US button layouts Bet buttons Lines Gamble Other
#include "aristmk5.lh" // 1, 2, 3, 5, 10 20 suits Take Win/Start Feature
#include "adonisce.lh" // 1, 2, 3, 5, 10 20 suits TW/SF, Cash Express buttons
#include "baddog.lh" // Video Poker
#include "cashcatnz.lh" // 1, 2, 3, 4, 5 9 suits TW/SF, 7L or Autoplay
#include "cashcham.lh" // 1, 5, 10, 20, 25 20 suits
#include "cashchama.lh" // 1, 2, 3, 4, 5 20 suits
#include "cashchamnz.lh" // 1, 2, 3, 4, 5 20 suits 15L or Autoplay
#include "checkma5.lh" // multiple configs 1/3 suits TW/SF
#include "chickna5v.lh" // 1, 5, 10, 25, 50 9 suits
#include "coralrc2.lh" // 1, 2, 3, 5, 25 20 suits
#include "dimtouch.lh" // 1, 2, 3, 5, 10 9 suits TW/SF (touch-based gamble feature)
#include "dolphntrb.lh" // 1, 2, 3, 5, 10 9 suits TW/SF
#include "dreamwv.lh" // 1, 2, 5, 10, 20 9 suits TW/SF (touch-based gamble feature)
#include "dynajack.lh" // multiple configs 9/20 suits TW/SF
#include "fortellr.lh" // multiple configs 9/20 suits TW/SF (different bets to dynajack)
#include "geisha.lh" // 1, 2, 3, 5, 12 20 suits TW/SF, 15L or Autoplay
#include "genmagi.lh" // 1, 2, 3, 5, 25 20 suits TW/SF (touch-based gamble feature)
#include "goldenra.lh" // 1, 2, 5, 25, 50 20 suits TW/SF
#include "goldpyrb.lh" // 1, 2, 3, 5, 10 9 suits TW/SF, Service
#include "incasun.lh" // 1, 2, 3, 5, 25 20 suits TW/SF
#include "incasunnz.lh" // 1, 2, 3, 4, 5 20 suits TW/SF, 15L or Autoplay
#include "indrema5.lh" // 1, 2, 5, 10, 20 243 suits TW/SF
#include "jungjuic.lh" // 1, 2, 3, 4, 5 9 red/black Service
#include "kgalah.lh" // 1, 2, 3, 5, 10 20 suits
#include "kgbirda5.lh" // 1, 2, 3, 5, 10 5 red/black
#include "locoloota.lh" // 1, 2, 5, 10, 20 9 suits
#include "marmagic.lh" // multiple configs 9/20 suits TW/SF (different bets to dynajack/fortellr)
#include "montree.lh" // 1, 2, 3, 5, 12 20 suits 15L or Autoplay
#include "mountmon.lh" // 1, 5, 10, 25, 50 20 red/black
#include "multidrw.lh" // Video Poker (different to baddog)
#include "mystgard.lh" // 1, 2, 3, 4, 5 20 red/black
#include "one4all.lh" // 1, 2, 3, 5, 6 20 suits TW/SF, 15L or Autoplay
#include "orchidms.lh" // 1, 5, 10, 25, 50 10 suits
#include "orchidmsnz.lh" // 1, 2, 5, 15, 25 10 suits TW/SF, 8L or Autoplay
#include "pantmag.lh" // 1, 2, 3, 5, 10 9/20 suits
#include "pantmaga.lh" // 1, 2 5 suits
#include "penpir2.lh" // 1, 2, 3, 5, 10 20 suits Service
#include "petshop.lh" // 1, 2, 3, 5, 10 20 suits Different layout to other games
#include "przfight.lh" // 1, 2, 3 3 red/black
#include "qnile.lh" // 1, 5, 10, 20, 25 20 suits TW/SF
#include "qnilec.lh" // 1, 2, 5, 10, 20 9 suits TW/SF
#include "qniled.lh" // 1, 2, 3 3 suits TW/SF
#include "qnilenl.lh" // 1, 2, 3, 5, 10 9 red/black TW/SF, Service
#include "qtbird.lh" // 1, 2, 3, 4, 5 9 red/black
#include "reelrock.lh" // 1, 2, 3, 5, 8 243 suits
#include "retrsam.lh" // 1, 2, 3 3 odds
#include "retrsamb.lh" // 1, 2, 3, 5, 10 9 odds
#include "sbuk2.lh" // 1, 2, 3, 4, 5 1 red/black Single line game
#include "sbuk3.lh" // 1, 2, 3 3 odds TW/SF
#include "snowcat.lh" // 1, 2, 3, 5, 10 9 suits
#include "swhr2.lh" // 1, 2, 3, 5, 10 9 red/black
#include "toutangonl.lh" // 1, 2, 3, 5, 10 9 red/black Service
#include "tritreat.lh" // multiple configs 9/20 suits TW/SF (90 and 500 credit play)
#include "trstrove.lh" // 1, 2, 5, 10, 25 20 suits TW/SF
#include "venicea5.lh" // multiple configs 9/20 suits TW/SF (different bets to dynajack/fortellr/marmagic)
#include "wamazon.lh" // 1, 2, 3 3 suits Play Feature Game
#include "wamazona.lh" // 1, 2, 3, 5, 10 1 suits Single line game
#include "wcougar.lh" // 1, 2, 5, 10, 20 9 red/black
#include "wikwin.lh" // 1, 2, 3, 4 243 suits Max Bet button
#include "wildbill.lh" // 1, 2, 3 3 suits
#include "wizways.lh" // 1, 2, 5, 10, 20 243 suits
#include "wtiger.lh" // 1, 2, 3, 5, 10 20 suits Classic Buy Feature
#include "yukongl5.lh" // multiple configs 20 suits TW/SF
// US button layouts Lines Bet buttons Max bet(s) Other
#include "adonisu.lh" // 20 multiple 100, 200, 500, 1000
#include "aristmk5_us.lh" // 9 1, 2, 3, 5, 10 90
#include "aristmk5_us_200.lh" // 20 1, 2, 3, 5, 10 200
#include "bparty.lh" // 20 multiple 60, 100, 200, 400, 500, 1000
#include "cuckoou.lh" // 9 multiple 27, 45, 90, 180, 225, 450
#include "cashchamu.lh" // 20 multiple 60, 100, 200, 400, 500, 1000 Different layout on 3 credit setup
#include "dolphntrceb.lh" // 20 multiple 60, 100, 200, 400, 500, 1000 Different bets to bparty, cashchamu and pengpuck
#include "magimaska.lh" // 9 multiple 45, 90, 180
#include "marmagicu.lh" // 9 multiple 45, 90, 180 Same bet buttons as magimaska but with Start Feature button
#include "pengpayce.lh" // 9 multiple 27, 45, 90, 180, 225, 450 Different layout to cuckoou
#include "pengpuck.lh" // 20 multiple 60, 100, 200, 400, 500, 1000 Slightly different layout to dolphntrceb
#include "qnilecea.lh" // 9 multiple 27, 45, 90, 180, 225, 450 Same bet buttons as pengpayce but with Start Feature button
#include "swhr2u.lh" // 5 1, 2, 3, 4, 5 25
#include "wnpost.lh" // 5 1, 2, 3, 5, 10 50
#define MASTER_CLOCK 72_MHz_XTAL /* confirmed */
class aristmk5_state : public archimedes_state
{
public:
aristmk5_state(const machine_config &mconfig, device_type type, const char *tag)
: archimedes_state(mconfig, type, tag)
, m_hopper(*this, "hopper")
, m_eeprom(*this, "eeprom%d", 0)
, m_rtc(*this, "rtc")
, m_nvram(*this, "nvram")
, m_sram(*this, "sram")
, m_p1(*this, "P1")
, m_p2(*this, "P2")
, m_extra_ports(*this, "EXTRA")
, m_lamps(*this, "lamp%u", 0U)
{ }
static constexpr feature_type imperfect_features() { return feature::GRAPHICS | feature::SOUND | feature::TIMING; }
void aristmk5(machine_config &config);
void aristmk5_touch(machine_config &config);
void aristmk5_usa(machine_config &config);
void aristmk5_usa_touch(machine_config &config);
void init_aristmk5();
INPUT_CHANGED_MEMBER(coin_start);
CUSTOM_INPUT_MEMBER(coin_r);
CUSTOM_INPUT_MEMBER(coin_usa_r);
CUSTOM_INPUT_MEMBER(hopper_r);
private:
DECLARE_WRITE32_MEMBER(Ns5w48);
DECLARE_READ32_MEMBER(Ns5x58);
DECLARE_READ32_MEMBER(Ns5r50);
DECLARE_WRITE8_MEMBER(sram_banksel_w);
DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_WRITE8_MEMBER(eeprom_usa_w);
DECLARE_WRITE8_MEMBER(rtc_w);
DECLARE_WRITE8_MEMBER(rtc_usa_w);
DECLARE_WRITE8_MEMBER(hopper_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_READ8_MEMBER(ldor_r);
DECLARE_WRITE8_MEMBER(ldor_clk_w);
DECLARE_WRITE8_MEMBER(buttons_lamps_w);
DECLARE_WRITE8_MEMBER(other_lamps_w);
DECLARE_WRITE8_MEMBER(bill_acceptor_lamps_w);
DECLARE_READ8_MEMBER(sram_r);
DECLARE_WRITE8_MEMBER(sram_w);
DECLARE_WRITE8_MEMBER(spi_mux_w);
DECLARE_WRITE8_MEMBER(spi_data_w);
DECLARE_READ8_MEMBER(spi_int_ack_r);
DECLARE_WRITE8_MEMBER(spi_int_ack_w);
DECLARE_READ8_MEMBER(spi_data_r);
DECLARE_WRITE_LINE_MEMBER(uart_irq_callback);
virtual void machine_start() override;
virtual void machine_reset() override;
TIMER_CALLBACK_MEMBER(mk5_VSYNC_callback);
TIMER_CALLBACK_MEMBER(mk5_2KHz_callback);
TIMER_CALLBACK_MEMBER(spi_timer);
void aristmk5_drame_map(address_map &map);
void aristmk5_map(address_map &map);
void aristmk5_usa_map(address_map &map);
required_device<ticket_dispenser_device> m_hopper;
uint8_t m_hopper_test;
uint64_t m_coin_start_cycles;
uint8_t m_coin_div;
required_device_array<eeprom_serial_93cxx_device, 2> m_eeprom;
required_device<ds1302_device> m_rtc;
required_device<nvram_device> m_nvram;
required_memory_region m_sram;
required_ioport m_p1;
required_ioport m_p2;
required_ioport m_extra_ports;
output_finder<64> m_lamps;
emu_timer * m_mk5_2KHz_timer;
emu_timer * m_mk5_VSYNC_timer;
emu_timer * m_spi_timer;
uint8_t m_sram_bank;
uint8_t m_ldor_shift_reg;
uint8_t m_spi_mux;
uint8_t m_spi_latch;
uint8_t m_spi_bits;
uint32_t m_spi_data[8];
};
WRITE8_MEMBER(aristmk5_state::spi_mux_w)
{
uint8_t spi_mux = (data >> 4) & 7;
if (spi_mux == m_spi_mux)
return;
m_spi_mux = spi_mux;
switch (m_spi_mux)
{
case 0: // Test
case 3: // not used
break;
case 1: // Top box lamps
break;
case 2: // Mechanical meters
for(int i = 0; i < 4; i++)
{
m_lamps[32+i] = BIT(m_spi_data[m_spi_mux], 1 + i); // Tower Lamps
}
break;
case 4: // Door inputs
m_spi_data[m_spi_mux] = m_p1->read();
break;
case 5: // Door outputs
for(int i = 0; i < 32; i++)
{
m_lamps[i] = BIT(m_spi_data[m_spi_mux], i);
}
break;
case 6: // Main board slow I/O
m_spi_data[m_spi_mux] = m_p2->read() & ~((data & 0x80) ? 0 : 0x100);
break;
case 7: // Main board security registers
break;
}
}
WRITE8_MEMBER(aristmk5_state::spi_data_w)
{
m_spi_latch = data;
m_spi_bits = 0;
// start the SPI clock
m_spi_timer->adjust(attotime::from_hz(MASTER_CLOCK / 9 / 512 / 2), 0, attotime::from_hz(MASTER_CLOCK / 9 / 512 / 2));
}
READ8_MEMBER(aristmk5_state::spi_data_r)
{
return m_spi_latch;
}
READ8_MEMBER(aristmk5_state::spi_int_ack_r)
{
archimedes_clear_irq_b(0x08);
return 0;
}
WRITE8_MEMBER(aristmk5_state::spi_int_ack_w)
{
archimedes_clear_irq_b(0x08);
}
TIMER_CALLBACK_MEMBER(aristmk5_state::spi_timer)
{
if (m_spi_mux == 0 || m_spi_mux == 3)
{
m_spi_latch = (((m_spi_latch & 1) << 7) ^ 0x80) | ((m_spi_latch >> 1) & 0x7f);
}
else
{
static int mux_bits[8] = { 0, 16, 16, 0, 24, 32, 24, 8 };
uint32_t mux_mask = ((uint32_t)1 << (mux_bits[m_spi_mux] - 1)) - 1;
uint32_t spi_in_bit = m_spi_data[m_spi_mux] & 1;
uint32_t spi_out_bit = m_spi_latch & 1;
m_spi_data[m_spi_mux] = (spi_out_bit << (mux_bits[m_spi_mux] - 1)) | ((m_spi_data[m_spi_mux] >> 1) & mux_mask);
m_spi_latch = (spi_in_bit << 7) | ((m_spi_latch >> 1) & 0x7f);
}
// SPI interrupt
if (++m_spi_bits == 8)
{
m_spi_timer->adjust(attotime::never);
archimedes_request_irq_b(0x08);
}
}
WRITE_LINE_MEMBER(aristmk5_state::uart_irq_callback)
{
if (state)
archimedes_request_irq_b(0x20);
else
archimedes_clear_irq_b(0x20);
}
TIMER_CALLBACK_MEMBER(aristmk5_state::mk5_VSYNC_callback)
{
archimedes_request_irq_a(0x08); //turn vsync bit on
m_mk5_VSYNC_timer->adjust(attotime::never);
}
READ8_MEMBER(aristmk5_state::sram_r)
{
return m_sram->base()[(m_sram_bank << 14) | (offset & 0x3fff)];
}
WRITE8_MEMBER(aristmk5_state::sram_w)
{
m_sram->base()[(m_sram_bank << 14) | (offset & 0x3fff)] = data;
}
WRITE32_MEMBER(aristmk5_state::Ns5w48)
{
/*
There is one writeable register which is written with the Ns5w48 strobe. It contains four bits which are
taken from bits 16 to 19 of the word being written. The register is cleared whenever the chip is reset. The
register controls part of the video system. Bit 3 (from data bus bit 19) controls the eorv output. If the bit is
one, eorv outputs the NV/CSYNC signal from VIDC. If the bit is zero, eorv outputs inverted NV/CSYNC. Bit 2 of
the register controls the eorh output. If the bit is zero, eorh is the NHSYNC output of VIDC. If the bit is one,
eorh is inverted NHSYNC. Bits 1 and 0 control what is fed to the vidclk output as follows:
Bit1 Bit0 vidclk
0 0 24 Mhz clock
0 1 25 Mhz clock ;// external video crystal
1 0 36 Mhz clock
1 1 24 Mhz clock
*/
/*
Golden Pyramids disassembly
MOV R0, #0x3200000
ROM:03400948 MOV R1, #8
ROM:0340094C STRB R1, [R0,#0x14] ; clear vsync
ROM:03400950 LDR R2, =0xC350 ; 50000
ROM:03400954
ROM:03400954 loc_3400954 ; CODE XREF: sub_3400944+18?j
ROM:03400954 NOP
ROM:03400958 SUBS R2, R2, #1
ROM:0340095C BNE loc_3400954 ; does this 50000 times, presumably to wait for vsync
ROM:03400960 MOV R0, #0x3200000
ROM:03400964 LDRB R1, [R0,#0x10] ; reads the irq status a
ROM:03400968 TST R1, #8 ; test vsync
*/
archimedes_clear_irq_a(0x08);
/* bit 1 bit 0 */
if((data &~(0x02)) && (data & (0x01))) // external video crystal is enabled. 25 mhz
{
m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure but see above
}
if((data &~(0x02)) && (data &~(0x01))) // video clock is enabled. 24 mhz
{
m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure
}
if((data & (0x02)) && (data &~(0x01))) // video clock is enabled. 36 mhz
{
m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure
}
if((data &(0x02)) && (data &(0x01))) // video clock is enabled. 24 mhz
{
m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure
}
}
TIMER_CALLBACK_MEMBER(aristmk5_state::mk5_2KHz_callback)
{
archimedes_request_irq_a(0x01);
m_mk5_2KHz_timer->adjust(attotime::never);
}
READ32_MEMBER(aristmk5_state::Ns5x58)
{
/*
1953.125 Hz for the operating system timer interrupt
The pintr pin ( printer interrupt ) is connected to an interrupt latch in IOEB.
A rising edge on pintr causes an interrupt to be latched in IOEB. The latch output
is connected to the NIL[6] interrupt input on IOC and goes low when the rising edge is detected.
The interrupt is cleared (NIL[6] is set high) by resetting the chip or by the NS5x58
strobe.
NIL[6] IOEB/1pintr - Interrupt Input ( OS Tick Interrput )
Rising edge signal
010101010101 .-------. logic 0 .-------------.
------------->|pint |---1pintr------>|NIL[6] |
| IOEB | | IOC |
`-------' `-------------'
*/
// reset 2KHz timer
m_mk5_2KHz_timer->adjust(attotime::from_hz(MASTER_CLOCK / 9 / 4096));
archimedes_clear_irq_a(0x01);
return 0xffffffff;
}
READ32_MEMBER(aristmk5_state::Ns5r50)
{
return 0xf5; // checked inside the CPU check, unknown meaning
}
READ8_MEMBER(aristmk5_state::eeprom_r)
{
uint8_t data = 0x00;
if (m_eeprom[0]->do_read() && m_eeprom[1]->do_read())
data |= 0x04;
if (m_rtc->io_r())
data |= 0x02;
return data;
}
WRITE8_MEMBER(aristmk5_state::hopper_w)
{
m_hopper->motor_w(BIT(data, 1));
m_hopper_test = BIT(data, 2);
}
WRITE8_MEMBER(aristmk5_state::rtc_w)
{
m_rtc->ce_w(BIT(data, 5));
if (BIT(data, 6))
m_rtc->io_w(BIT(data, 3));
m_rtc->sclk_w(BIT(data, 4));
}
WRITE8_MEMBER(aristmk5_state::rtc_usa_w)
{
rtc_w(space, offset, data, mem_mask);
m_hopper_test = BIT(data, 2);
}
WRITE8_MEMBER(aristmk5_state::eeprom_w)
{
m_coin_div = data & 1;
m_eeprom[0]->cs_write(BIT(data, 5));
m_eeprom[1]->cs_write(BIT(data, 6));
m_eeprom[0]->di_write(BIT(data, 3));
m_eeprom[1]->di_write(BIT(data, 3));
m_eeprom[0]->clk_write(BIT(data, 4));
m_eeprom[1]->clk_write(BIT(data, 4));
}
WRITE8_MEMBER(aristmk5_state::eeprom_usa_w)
{
eeprom_w(space, offset, data, mem_mask);
m_hopper->motor_w(BIT(data, 2));
}
READ8_MEMBER(aristmk5_state::ldor_r)
{
if (m_extra_ports->read() & 0x01)
m_ldor_shift_reg = 0; // open the Logic door clears the shift register
return (m_ldor_shift_reg & 0x80) | 0x60 | ((m_hopper_test && m_hopper->line_r()) ? 0x10 : 0x00);
}
WRITE8_MEMBER(aristmk5_state::ldor_clk_w)
{
m_ldor_shift_reg = (m_ldor_shift_reg << 1) | BIT(data, 0);
}
WRITE8_MEMBER(aristmk5_state::sram_banksel_w)
{
/*
The Main Board provides 32 kbytes of Static Random Access Memory (SRAM) with
battery back-up for the electronic meters.
The SRAM contains machine metering information, recording money in/out and
game history etc. It is critical that this data is preserved reliably, and various
jurisdictions require multiple backups of the data.
Three standard low power SRAMs are fitted to the board. The data is usually
replicated three times, so that each chip contains identical data. Each memory is
checked against the other to verify that the stored data is correct.
Each chip is mapped to the same address, and the chip selected depends on the bank
select register. Access is mutually exclusive, increasing security with only one chip
visible in the CPU address space at a time. If the CPU crashes and overwrites
memory only one of the three devices can be corrupted. On reset the bank select
register selects bank 0, which does not exist. The SRAMs are at banks 1,2,3.
Each of the SRAM chips may be powered from a separate battery, further reducing
the possibility of losing data. For the US Gaming Machine, a single battery provides
power for all three SRAMs. This battery also powers the Real Time Clock
CHIP SELECT & SRAM BANKING
write: 03010420 40 select bank 1
write: 3220000 01 store 0x01 @ 3220000
write: 03010420 80 select bank 2
write: 3220000 02 store 0x02 @ 3220000
write: 03010420 C0 ...
write: 3220000 03 ...
write: 03010420 00 ...
write: 3220000 00 ...
write: 03010420 40 select the first SRAM chip
read: 3220000 01 read the value 0x1 back hopefully
write: 03010420 80 ...
read: 3220000 02 ...
write: 03010420 C0 ...
read: 3220000 03 ...
write: 03010420 00 select bank 0
Bit 0 - Page 1
Bit 1 - Page 2
Bit 2 - Page 3
NC
NC
NC
Bit 6 - SRAM 1
Bit 7 - SRAM 2
Bit 1 and 2 on select Page 4.
Bit 6 and 7 on select SRAM 3.
4 pages of 32k for each sram chip.
*/
m_sram_bank = ((data & 0xc0) >> 3) | (data & 0x07);
}
WRITE8_MEMBER(aristmk5_state::buttons_lamps_w)
{
for(int i = 0; i < 8; i++)
m_lamps[(offset >> 2) * 8 + i] = BIT(data, i);
}
WRITE8_MEMBER(aristmk5_state::other_lamps_w)
{
for(int i = 0; i < 8; i++)
m_lamps[16 + i] = BIT(data, i);
}
WRITE8_MEMBER(aristmk5_state::bill_acceptor_lamps_w)
{
for(int i = 0; i < 8; i++)
m_lamps[24 + i] = BIT(data, i);
}
void aristmk5_state::aristmk5_map(address_map &map)
{
map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */
map(0x03000000, 0x0331ffff).rw(FUNC(aristmk5_state::archimedes_ioc_r), FUNC(aristmk5_state::archimedes_ioc_w));
/* MK-5 overrides */
map(0x03010420, 0x03010420).w(FUNC(aristmk5_state::sram_banksel_w)); // SRAM bank select write
map(0x03010480, 0x0301049f).rw("uart_0a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03010500, 0x0301051f).rw("uart_0b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03010580, 0x03010583).portr("P3");
map(0x03010600, 0x0301061f).rw("uart_1a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03010680, 0x0301069f).rw("uart_1b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03010700, 0x03010703).portr("P6");
map(0x03010800, 0x03010800).r(FUNC(aristmk5_state::eeprom_r));
map(0x03010810, 0x03010813).rw("watchdog", FUNC(watchdog_timer_device::reset32_r), FUNC(watchdog_timer_device::reset32_w)); //MK-5 specific, watchdog
map(0x03220000, 0x0323ffff).rw(FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff);
// bank5 slow
map(0x03250048, 0x0325004b).w(FUNC(aristmk5_state::Ns5w48)); //IOEB control register
map(0x03250050, 0x03250053).r(FUNC(aristmk5_state::Ns5r50)); //IOEB ID register
map(0x03250058, 0x0325005b).r(FUNC(aristmk5_state::Ns5x58)); //IOEB interrupt Latch
map(0x03320000, 0x0333ffff).rw(FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff);
map(0x03400000, 0x035fffff).w(FUNC(aristmk5_state::archimedes_vidc_w));
map(0x03600000, 0x037fffff).w(FUNC(aristmk5_state::archimedes_memc_w));
map(0x03800000, 0x039fffff).w(FUNC(aristmk5_state::archimedes_memc_page_w));
map(0x03400000, 0x03bfffff).rom().region("maincpu", 0);
}
/* U.S games have no dram emulator enabled */
void aristmk5_state::aristmk5_usa_map(address_map &map)
{
aristmk5_map(map);
map(0x00000000, 0x01ffffff).rw(FUNC(aristmk5_state::archimedes_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w));
map(0x03010440, 0x03010440).w(FUNC(aristmk5_state::rtc_usa_w));
map(0x03010450, 0x03010450).w(FUNC(aristmk5_state::eeprom_usa_w));
map(0x03012000, 0x03012003).portr("P1");
map(0x03012010, 0x03012013).portr("P2");
map(0x03012200, 0x03012203).portr("DSW1");
map(0x03012210, 0x03012213).portr("DSW2");
map(0x03010584, 0x03010587).portr("P4");
map(0x03012020, 0x03012020).r(FUNC(aristmk5_state::ldor_r));
map(0x03012070, 0x03012070).w(FUNC(aristmk5_state::ldor_clk_w));
map(0x03012184, 0x03012187).portr("P5");
map(0x03012000, 0x0301201f).w(FUNC(aristmk5_state::buttons_lamps_w)).umask32(0x000000ff);
map(0x03012030, 0x0301203f).w(FUNC(aristmk5_state::other_lamps_w)).umask32(0x000000ff);
map(0x03012380, 0x0301238f).w(FUNC(aristmk5_state::bill_acceptor_lamps_w)).umask32(0x000000ff);
map(0x03012100, 0x0301211f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03012140, 0x0301215f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03012300, 0x0301231f).rw("uart_3a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03012340, 0x0301235f).rw("uart_3b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
}
/* with dram emulator enabled */
void aristmk5_state::aristmk5_drame_map(address_map &map)
{
aristmk5_map(map);
map(0x00000000, 0x01ffffff).rw(FUNC(aristmk5_state::aristmk5_drame_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w));
map(0x03010430, 0x03010430).w(FUNC(aristmk5_state::hopper_w));
map(0x03010440, 0x03010440).w(FUNC(aristmk5_state::rtc_w));
map(0x03010450, 0x03010450).w(FUNC(aristmk5_state::eeprom_w));
map(0x03010400, 0x03010400).w(FUNC(aristmk5_state::spi_mux_w));
map(0x03010470, 0x03010470).w(FUNC(aristmk5_state::spi_data_w));
map(0x03010850, 0x03010850).rw(FUNC(aristmk5_state::spi_int_ack_r), FUNC(aristmk5_state::spi_int_ack_w));
map(0x03010870, 0x03010870).r(FUNC(aristmk5_state::spi_data_r));
map(0x03014000, 0x0301401f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
map(0x03014020, 0x0301403f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff);
}
CUSTOM_INPUT_MEMBER(aristmk5_state::hopper_r)
{
return (m_hopper_test && m_hopper->line_r()) ? 0 : 1;
}
CUSTOM_INPUT_MEMBER(aristmk5_state::coin_usa_r)
{
// ---x Coin Acceptor
// --x- Credit Sense
// -x-- Error Signal
// x--- Diverter Optic
uint8_t data = 0x07;
if (!m_coin_div)
data |= 0x08;
if (m_coin_start_cycles)
{
attotime diff = m_maincpu->cycles_to_attotime(m_maincpu->total_cycles() - m_coin_start_cycles);
if (diff > attotime::from_msec(5) && diff < attotime::from_msec(10))
data &= ~0x01;
if (diff > attotime::from_msec(15) && diff < attotime::from_msec(20))
data &= ~0x02;
if (diff <= attotime::from_msec(3))
data |= 0x08;
if (diff > attotime::from_msec(30))
m_coin_start_cycles = 0;
}
return data;
}
CUSTOM_INPUT_MEMBER(aristmk5_state::coin_r)
{
uint8_t data = 0x01;
if (m_coin_start_cycles)
{
attotime diff = m_maincpu->cycles_to_attotime(m_maincpu->total_cycles() - m_coin_start_cycles);
if (diff > attotime::from_msec(10) && diff < attotime::from_msec(15))
data &= ~0x01;
if (diff > attotime::from_msec(0) && diff < attotime::from_msec(20))
data |= 0x10;
if (diff > attotime::from_msec(15) && diff < attotime::from_msec(30))
data |= 0x08;
if (diff > attotime::from_msec(25) && !m_coin_div)
data |= 0x02;
if (diff > attotime::from_msec(30))
m_coin_start_cycles = 0;
}
return data;
}
INPUT_CHANGED_MEMBER(aristmk5_state::coin_start)
{
if (newval && !m_coin_start_cycles)
m_coin_start_cycles = m_maincpu->total_cycles();
}
static INPUT_PORTS_START( aristmk5_usa )
/* This simulates the ROM swap */
PORT_START("ROM_LOAD")
PORT_CONFNAME( 0x07, 0x04, "System Mode" )
PORT_CONFSETTING( 0x00, "USA Set Chip v4.04.09 Mode" )
PORT_CONFSETTING( 0x01, "USA Set Chip v4.04.08 Mode" )
PORT_CONFSETTING( 0x02, "USA Set Chip v4.04.00 Mode" )
PORT_CONFSETTING( 0x03, "USA Set Chip v4.02.04 Mode" )
PORT_CONFSETTING( 0x04, "Game Mode" )
PORT_START("DSW1")
PORT_DIPNAME(0x0f, 0x0f, "Bank 1 - Denomination Values: Coin Value")
PORT_DIPSETTING(0x0f, "$0.05") PORT_DIPLOCATION("DSW1:1,2,3,4")
PORT_DIPSETTING(0x0e, "$0.10")
PORT_DIPSETTING(0x0d, "$0.25")
PORT_DIPSETTING(0x0c, "$0.50")
PORT_DIPSETTING(0x0b, "$1.00")
PORT_DIPSETTING(0x0a, "$5.00")
PORT_DIPSETTING(0x09, "$10.00")
PORT_DIPSETTING(0x08, "$50.00")
PORT_DIPSETTING(0x07, "$100.00") // 0x00 through 0x07 are all $100.00
PORT_DIPSETTING(0x06, "$100.00") // 0x00 through 0x06 retained for dip switch test
PORT_DIPSETTING(0x05, "$100.00")
PORT_DIPSETTING(0x04, "$100.00")
PORT_DIPSETTING(0x03, "$100.00")
PORT_DIPSETTING(0x02, "$100.00")
PORT_DIPSETTING(0x01, "$100.00")
PORT_DIPSETTING(0x00, "$100.00")
PORT_DIPNAME(0xf0, 0xf0, "Bank 1 - Denomination Values: Credit Value")
PORT_DIPSETTING(0xf0, "$0.01") PORT_DIPLOCATION("DSW1:5,6,7,8")
PORT_DIPSETTING(0xe0, "$0.02")
PORT_DIPSETTING(0xd0, "$0.05")
PORT_DIPSETTING(0xc0, "$0.10")
PORT_DIPSETTING(0xb0, "$0.25")
PORT_DIPSETTING(0xa0, "$0.50")
PORT_DIPSETTING(0x90, "$1.00")
PORT_DIPSETTING(0x80, "$5.00")
PORT_DIPSETTING(0x70, "$10.00")
PORT_DIPSETTING(0x60, "$50.00")
PORT_DIPSETTING(0x50, "$100.00") // 0x00 through 0x50 are all $100.00
PORT_DIPSETTING(0x40, "$100.00") // All dip switches retained for dip switch test
PORT_DIPSETTING(0x30, "$100.00")
PORT_DIPSETTING(0x20, "$100.00")
PORT_DIPSETTING(0x10, "$100.00")
PORT_DIPSETTING(0x00, "$100.00")
PORT_START("DSW2")
PORT_DIPNAME(0x01, 0x00, "Bank 2: Gamble")
PORT_DIPSETTING(0x01, "Gamble Not Allowed") PORT_DIPLOCATION("DSW2:1")
PORT_DIPSETTING(0x00, "Gamble Allowed")
PORT_DIPNAME(0x02, 0x02, "Bank 2: Max Bet Coin Reject")
PORT_DIPSETTING(0x02, "Max Bet Coin Reject Not Enabled") PORT_DIPLOCATION("DSW2:2")
PORT_DIPSETTING(0x00, "Max Bet Coin Reject Enabled")
PORT_DIPNAME(0x04, 0x00, "Bank 2: Cancel Credit Type")
PORT_DIPSETTING(0x04, "Residual Credit Backout Not Allowed") PORT_DIPLOCATION("DSW2:3")
PORT_DIPSETTING(0x00, "Residual Credit Backout Allowed")
PORT_DIPNAME(0x08, 0x00, "Bank 2: Bill Acceptor")
PORT_DIPSETTING(0x08, "V2.2 - CRC Check") PORT_DIPLOCATION("DSW2:4")
PORT_DIPSETTING(0x00, "VFM4 - No CRC Check")
PORT_DIPNAME(0x30, 0x30, "Bank 2: BACC Denomination")
PORT_DIPSETTING(0x30, "Dollar ($)") PORT_DIPLOCATION("DSW2:5,6")
PORT_DIPSETTING(0x20, "Soles (S/.)")
PORT_DIPSETTING(0x10, "UrPeso ($)")
PORT_DIPSETTING(0x00, "Real (R/.)")
PORT_DIPNAME(0x40, 0x40, "Bank 2: NOT USED")
PORT_DIPSETTING(0x40, DEF_STR( Off )) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING(0x00, DEF_STR( On ))
PORT_DIPNAME(0x80, 0x80, "Bank 2: NOT USED")
PORT_DIPSETTING(0x80, DEF_STR( Off )) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING(0x00, DEF_STR( On ))
/*
Button order in the Key Test menu is right to left; Gamble and Take Win are also reversed.
On a typical 90 credit machine such as goldpyr, the button order is Service, Bet 1, Bet 2, Bet 3, Bet 5, Bet 10, Gamble, Take Win
The button order has been designed to match the button panel rather than the test menu.
*/
PORT_START("P1") // Bottom row
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Service") // PLAYER KEY 8
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Bet 1 Credit / Red") // PLAYER KEY 7
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Bet 2 Credits") // PLAYER KEY 6
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Bet 3 Credits") // PLAYER KEY 5
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Bet 5 Credits") // PLAYER KEY 4
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet 10 Credits / Black") // PLAYER KEY 3
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_J) PORT_NAME("Gamble") // PLAYER KEY 1
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win") // PLAYER KEY 2
PORT_START("P2") // Top row
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_Q) PORT_NAME("Cashout") // PLAYER KEY 9
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Play 1 Line") // PLAYER KEY 10
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Play 3 Lines") // PLAYER KEY 11
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Play 5 Lines") // PLAYER KEY 12
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 7 Lines") // PLAYER KEY 13
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 9 Lines") // PLAYER KEY 14
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("P3")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Audit Key")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYIN) PORT_CODE(KEYCODE_V) PORT_NAME("Jackpot/Reset Key")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_B) PORT_TOGGLE PORT_NAME("Bill acceptor door")
PORT_BIT(0x00000040, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_M) PORT_TOGGLE PORT_NAME("Main door")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_C) PORT_TOGGLE PORT_NAME("Cashbox door")
PORT_START("P4")
PORT_BIT(0x00000078, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(DEVICE_SELF, aristmk5_state, coin_usa_r, nullptr)
PORT_START("P5")
PORT_BIT(0x00000008, IP_ACTIVE_LOW, IPT_OTHER) // Meters
PORT_START("P6")
PORT_BIT(0x00000002, IP_ACTIVE_LOW, IPT_OTHER) // Battery
PORT_START("EXTRA")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_TOGGLE PORT_CODE(KEYCODE_L) PORT_NAME("Logic door")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_COIN1) PORT_CHANGED_MEMBER(DEVICE_SELF, aristmk5_state, coin_start, nullptr)
INPUT_PORTS_END
static INPUT_PORTS_START( aristmk5 )
PORT_START("P1")
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_Q) PORT_NAME("Collect")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 Credit / Heart")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 5 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 10 Credits / Spade")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Reserve")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line / Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 5 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 10 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 20 Lines / Black")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_J) PORT_NAME("Gamble")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature")
PORT_BIT(0x00004000, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00008000, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00ff0000, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("P2")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYIN) PORT_CODE(KEYCODE_V) PORT_NAME("Jackpot/Reset Key")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Audit Key")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_OTHER) // Hopper full
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_OTHER) // Hopper empty
PORT_BIT(0x00000100, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_M) PORT_TOGGLE PORT_NAME("Main door optical sensor")
PORT_BIT(0x0000fe00, IP_ACTIVE_HIGH, IPT_UNUSED) // Unused optical security sensors
PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_L) PORT_TOGGLE PORT_NAME("Logic door")
PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_Z) PORT_TOGGLE PORT_NAME("Topbox door")
PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_X) PORT_TOGGLE PORT_NAME("Meter cage")
PORT_BIT(0x00080000, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_C) PORT_TOGGLE PORT_NAME("Cashbox door")
PORT_BIT(0x00100000, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_M) PORT_TOGGLE PORT_NAME("Main door")
PORT_BIT(0x00200000, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR) PORT_CODE(KEYCODE_B) PORT_TOGGLE PORT_NAME("Bill acceptor door")
PORT_BIT(0x00c00000, IP_ACTIVE_HIGH, IPT_UNUSED) // Unused mechanical security switch
PORT_START("P3")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CUSTOM_MEMBER(DEVICE_SELF, aristmk5_state, hopper_r, nullptr)
PORT_BIT(0x000000f8, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(DEVICE_SELF, aristmk5_state, coin_r, nullptr)
PORT_START("P6")
PORT_BIT(0x00000002, IP_ACTIVE_LOW, IPT_OTHER) // Battery
PORT_START("EXTRA")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_COIN1) PORT_CHANGED_MEMBER(DEVICE_SELF, aristmk5_state, coin_start, nullptr)
INPUT_PORTS_END
/********** Game-specific button labels **********/
static INPUT_PORTS_START(aristmk5_9)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 3 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 5 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 9 Lines / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(trstrove)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 25 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(qnile)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 5 Credits / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 10 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 20 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 25 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(cashcham)
PORT_INCLUDE(qnile)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(cashchama)
PORT_INCLUDE(cashcham)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 5 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(cashchamnz)
PORT_INCLUDE(cashchama)
PORT_MODIFY("P1")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Autoplay")
INPUT_PORTS_END
static INPUT_PORTS_START(cashcatnz)
PORT_INCLUDE(aristmk5_9)
PORT_MODIFY("P1")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 5 Credits / Spade")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Autoplay")
INPUT_PORTS_END
static INPUT_PORTS_START(incasunnz)
PORT_INCLUDE(cashchamnz)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(chariotc)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line / Chariot 1 / Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 5 Lines / Chariot 2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 10 Lines / Chariot 3")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Chariot 4")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 20 Lines / Chariot 5 / Black")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(chariotcv)
PORT_INCLUDE(chariotc)
PORT_MODIFY("P1")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 3 Lines / Chariot 2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 5 Lines / Chariot 3")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Chariot 4")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 9 Lines / Chariot 5 / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(geisha)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 12 Credits / Spade")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Autoplay")
INPUT_PORTS_END
static INPUT_PORTS_START(one4all)
PORT_INCLUDE(geisha)
PORT_MODIFY("P1")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 6 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(montree)
PORT_INCLUDE(geisha)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(goldenra) // marmagic uses the same button panel as goldenra for 1000 credit play, however it has a number of other bet and line options
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 25 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 50 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(dynajack) // button panel reflects 1000 credit option only
PORT_INCLUDE(goldenra)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Free Spin")
INPUT_PORTS_END
static INPUT_PORTS_START(goldpyrb)
PORT_INCLUDE(aristmk5_9)
PORT_MODIFY("P1")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Service")
INPUT_PORTS_END
static INPUT_PORTS_START(penpir2)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Service")
INPUT_PORTS_END
static INPUT_PORTS_START(incasun)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 25 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(coralrc2)
PORT_INCLUDE(incasun)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(genmagi)
PORT_INCLUDE(incasun)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 Credit") // No red/black/suits on the buttons
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits") // Gamble feature is touchscreen-based
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 25 Credits")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 20 Lines")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Free Games")
INPUT_PORTS_END
static INPUT_PORTS_START(adonisce)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line / Red / Train 1")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 5 Lines / Train 2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 10 Lines / Train 3")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Train 4")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 20 Lines / Black / Train 5")
INPUT_PORTS_END
static INPUT_PORTS_START(kgalah)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(petshop) // different input order, weird
PORT_INCLUDE(kgalah)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 Credit / Heart")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits / Diamond")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 3 Credits / Club")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line / Red")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 5 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 10 Lines")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines")
INPUT_PORTS_END
static INPUT_PORTS_START(rushrst)
PORT_INCLUDE(cashchama)
PORT_MODIFY("P1")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Run")
INPUT_PORTS_END
static INPUT_PORTS_START(mystgard)
PORT_INCLUDE(kgalah)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 Credit")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 5 Credits")
INPUT_PORTS_END
static INPUT_PORTS_START(mountmon)
PORT_INCLUDE(mystgard)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 10 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 25 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 50 Credits")
INPUT_PORTS_END
static INPUT_PORTS_START(qnilec)
PORT_INCLUDE(aristmk5_9)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 20 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(locoloota)
PORT_INCLUDE(qnilec)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(snowcat)
PORT_INCLUDE(aristmk5_9)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(chickna5)
PORT_INCLUDE(snowcat)
PORT_MODIFY("P1")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Run")
INPUT_PORTS_END
static INPUT_PORTS_START(chickna5v)
PORT_INCLUDE(chickna5)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 5 Credits / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 10 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 25 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 50 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(orchidms)
PORT_INCLUDE(chickna5v)
PORT_MODIFY("P1")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 2 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 4 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 8 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 10 Lines / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(orchidmsnz)
PORT_INCLUDE(orchidms)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 15 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 25 Credits / Spade")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 8 Lines / Autoplay")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(pantmaga)
PORT_INCLUDE(snowcat)
PORT_MODIFY("P1")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Spade")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 2 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 3 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 4 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 5 Lines / Black")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(sbuk3)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 1 Credit")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("x2")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 1 Line / x3")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 2 Lines / x5")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 3 Lines / x10")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("x100")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(retrsam)
PORT_INCLUDE(sbuk3)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(swhr2)
PORT_INCLUDE(aristmk5_9)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 Credit")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 10 Credits")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(retrsamb)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line / x2")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 3 Lines / x3")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 5 Lines / x5")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / x10")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 9 Lines / x100")
INPUT_PORTS_END
static INPUT_PORTS_START(toutangonl)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Service")
INPUT_PORTS_END
static INPUT_PORTS_START(qnilenl)
PORT_INCLUDE(toutangonl)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(dimtouch)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line") // Gamble feature is touchscreen-based
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Autoplay")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 9 Lines") // No red/black/suits on the buttons
INPUT_PORTS_END
static INPUT_PORTS_START(qtbird)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 5 Credits")
INPUT_PORTS_END
static INPUT_PORTS_START(jungjuic)
PORT_INCLUDE(qtbird)
PORT_MODIFY("P1")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Service")
INPUT_PORTS_END
static INPUT_PORTS_START(wcougar)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10 Credits")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 20 Credits")
INPUT_PORTS_END
static INPUT_PORTS_START(dreamwv)
PORT_INCLUDE(wcougar)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 1 Line") // Gamble feature is touchscreen-based
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 7 Lines / Autoplay")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 9 Lines") // No red/black/suits on the buttons
INPUT_PORTS_END
static INPUT_PORTS_START(kgbirda5)
PORT_INCLUDE(swhr2)
PORT_MODIFY("P1")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 2 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 3 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 4 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 5 Lines / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(checkma5) // 3 line button panel only
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Heart")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 1 Credit / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 3 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Spade")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 1 Line")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 2 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 3 Lines")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Black")
INPUT_PORTS_END
static INPUT_PORTS_START(wildbill)
PORT_INCLUDE(checkma5)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(przfight)
PORT_INCLUDE(wildbill)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 1 Credit")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(wamazon)
PORT_INCLUDE(wildbill)
PORT_MODIFY("P1")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play Feature Game / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(wamazona)
PORT_INCLUDE(wildbill)
PORT_MODIFY("P1")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Diamond")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Club")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Bet 1 Credit / Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet 10 Credits / Black")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(sbuk2)
PORT_INCLUDE(kgalah)
PORT_MODIFY("P1")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Bet 1 Credit / Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Bet 2 Credits")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Bet 4 Credits")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet 5 Credits / Black")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(unicorndnz)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 15 Lines / Autoplay")
INPUT_PORTS_END
static INPUT_PORTS_START(wtiger)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_Q) PORT_NAME("Take Win / Collect")
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_A) PORT_NAME("Gamble / Reserve")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_J) PORT_NAME("No Classic Buy Feature")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Classic Buy Feature / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(indrema5)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 20 Credits / Spade")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Play 3 Ways / Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Play 9 Ways")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Play 27 Ways")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Play 81 Ways")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Play 243 Ways / Black")
INPUT_PORTS_END
static INPUT_PORTS_START(wizways)
PORT_INCLUDE(indrema5)
PORT_MODIFY("P1")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_K) PORT_NAME("Take Win")
INPUT_PORTS_END
static INPUT_PORTS_START(reelrock)
PORT_INCLUDE(wizways)
PORT_MODIFY("P1")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 3 Credits")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 5 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 8 Credits / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(wikwin)
PORT_INCLUDE(reelrock)
PORT_MODIFY("P1")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4 Credits / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Max Bet / Spade")
INPUT_PORTS_END
static INPUT_PORTS_START(baddog)
PORT_INCLUDE(aristmk5)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 1 / Hold 1 / Heart")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 2/5/50 / Hold 2 / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5/25/100 / Hold 3")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 10/50/200 / Hold 4 / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("High 10/50/200 / Hold 5 / Spade")
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_S) PORT_NAME("Red")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_D) PORT_NAME("Gamble / Half Gamble")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_F) PORT_NAME("Take Win")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Black")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Draw")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START(multidrw)
PORT_INCLUDE(baddog)
PORT_MODIFY("P1")
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Hold 1 / Heart")
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Hold 2 / Diamond")
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("1 Draw / Hold 3")
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("2 Draws / Hold 4 / Club")
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("3 Draws / Hold 5 / Spade")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet / Next Card")
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_J) PORT_NAME("Draw")
INPUT_PORTS_END
static INPUT_PORTS_START(chickna5u)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 7 Lines / Run")
INPUT_PORTS_END
static INPUT_PORTS_START(dolphntru)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 7 Lines / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(bootsctnua)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P2")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Play 5 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Play 10 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 15 Lines")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 20 Lines")
INPUT_PORTS_END
static INPUT_PORTS_START(pengpuck)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P2") // experimental use of PORT_CONDITION to select control panels
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Play 5 Lines") PORT_CONDITION("CPANEL",0x01,NOTEQUALS,0x01)
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Play 10 Lines") PORT_CONDITION("CPANEL",0x01,NOTEQUALS,0x01)
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 15 Lines") PORT_CONDITION("CPANEL",0x01,NOTEQUALS,0x01)
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 20 Lines") PORT_CONDITION("CPANEL",0x01,NOTEQUALS,0x01)
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Alt Button 1") PORT_CONDITION("CPANEL",0x01,EQUALS,0x01)
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Alt Button 2") PORT_CONDITION("CPANEL",0x01,EQUALS,0x01)
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Alt Button 3") PORT_CONDITION("CPANEL",0x01,EQUALS,0x01)
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Alt Button 4") PORT_CONDITION("CPANEL",0x01,EQUALS,0x01)
PORT_START("CPANEL") // set this to match the game mode selected in Sevice Mode in addition to the layout
PORT_CONFNAME( 0x00000001, 0x00000000, "Control Panel Type" )
PORT_CONFSETTING( 0x00000000, "Normal" )
PORT_CONFSETTING( 0x00000001, "Alt" )
INPUT_PORTS_END
static INPUT_PORTS_START(dolphntrce)
PORT_INCLUDE(bootsctnua)
PORT_MODIFY("P2")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 15 Lines / Start Feature")
INPUT_PORTS_END
static INPUT_PORTS_START(swhr2u)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P1")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_G) PORT_NAME("Bet 4 Credits")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_H) PORT_NAME("Bet 5 Credits / Black")
PORT_MODIFY("P2")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Play 2 Lines")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Play 3 Lines")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 4 Lines")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 5 Lines")
INPUT_PORTS_END
static INPUT_PORTS_START(wnpost)
PORT_INCLUDE(aristmk5_usa)
PORT_MODIFY("P2")
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_W) PORT_NAME("Play 1 Line / Horse 1")
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_E) PORT_NAME("Play 2 Lines / Horse 2")
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_R) PORT_NAME("Play 3 Lines / Horse 3")
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_T) PORT_NAME("Play 4 Lines / Horse 4")
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_Y) PORT_NAME("Play 5 Lines / Horse 5")
INPUT_PORTS_END
void aristmk5_state::init_aristmk5()
{
archimedes_driver_init();
int do_debug = 0;
if (do_debug)
{
// DEBUG code for showing the range of the ROMs that get checksummed (for adding to rom loading comments)
// unfortunately the checksum only covers the code part of the ROM, leaving the data without any kind of
// verification. Given that the existing bad-dumps would be non-obvious if it the checksums weren't incorrect
// this is potentially worrying. The actual checksum scheme is weak too, a simple 32-bit add.
uint32_t *ROM = (uint32_t*)memregion("game_prg")->base();
int size = memregion("game_prg")->bytes();
int found = 0;
for (int i = 0; i < (size / 4) - 4; i++)
{
if (((ROM[i + 0] & 0xfffff000) == 0xe59f1000) &&
(ROM[i + 1] == 0xe3a03000) &&
((ROM[i + 2] & 0xfffff000) == 0xe59f4000) &&
(ROM[i + 3] == 0xe0444001))
{
printf("Checksum code found at 0x%06x\n", i * 4);
found = 1;
int baseoff = ROM[i + 0] & 0x00000fff;
int baseoff2 = ROM[i + 2] & 0x00000fff;
int baseoff3 = ROM[i + 5] & 0x00000fff;
int baseoff4 = ROM[i + 8] & 0x00000fff;
//printf("values offset %08x %08x %08x %08x\n", baseoff, baseoff2, baseoff3, baseoff4);
int actual = ROM[i + (baseoff / 4) + 2]; // base
int actual2 = ROM[i + 2 + (baseoff2 / 4) + 2]; // end
int actual3 = ROM[i + 5 + (baseoff3 / 4) + 2]; // skip end (where checksum is)
int actual4 = ROM[i + 8 + (baseoff4 / 4) + 2]; // skip start (^)
//printf("values %08x %08x %08x %08x\n", actual, actual2, actual3, actual4);
actual2 = actual2 - actual;
actual3 = actual3 - actual;
actual4 = actual4 - actual;
actual = 0;
if ((actual4 - actual3) != 4)
{
printf("UNUSUAL SKIP RANGE %06x - %06x\n", actual3, actual4 + 3);
}
else
{
int expectedchecksum = ROM[actual3 / 4];
printf("0x%06x-0x%06x is the Checksummed Range (excluding 0x%06x-0x%06x where Checksum is stored)\n Expected Checksum 0x%08x\n", actual, actual2 - 1, actual3, actual4 + 3, expectedchecksum);
// the checksum is a simple 32-bit sum with the dword containing the checksum skipped (and the dword after it for no obvious reason!)
uint32_t calculatedchecksum = 0;
for (int i = actual / 4; i < actual2 / 4; i++)
{
if ((i < (actual3 / 4)) ||
(i > (actual4 / 4)))
{
calculatedchecksum += ROM[i];
// printf("Using address %08x, value %08x, Calculated Checksum %08x\n", i*4, ROM[i], calculatedchecksum);
}
else
{
// printf("SKIPPING address %08x, value %08x, Calculated Checksum %08x\n", i*4, ROM[i], calculatedchecksum);
}
}
printf(" Calculated Checksum 0x%08x ", calculatedchecksum);
if (calculatedchecksum == expectedchecksum)
{
printf(" (OK)\n");
}
else
{
printf(" (BAD)\n");
}
size = size / 4;
// almost always just the end of the roms
int realend = 0;
for (int i = size - 1; i >= actual2 / 4; i--)
{
if ((ROM[i] != 0xffffffff) && (ROM[i] != 0x00000000))
{
//printf("real data end at %08x\n", i * 4);
realend = i;
i = actual2 / 4 - 1;
}
}
int realend2 = 0;
for (int i = realend - 4; i >= actual2 / 4; i--)
{
if ((ROM[i] != 0xffffffff) && (ROM[i] != 0x00000000))
{
//printf("real data end at %08x (value is %08x)\n", i * 4, ROM[i]);
realend2 = (i * 4) + 3;
i = actual2 / 4 - 1;
}
}
realend = (realend * 4) + 3;
if ((realend & 0xffff) == 0xffff)
{
printf("0x%06x-0x%06x is the non-Checksummed range still containing data but NOT covered by Checksum\n", actual2, realend2);
printf("0x%06x-0x%06x is the non-Checksummed range if the additional vectors? at the end are included\n", actual2, realend);
}
else
{
printf("0x%06x-0x%06x is the non-Checksummed range (unusual endpoint)\n", actual2, realend);
}
}
}
}
if (found == 0)
{
printf("checksum code not found\n");
}
}
}
void aristmk5_state::machine_start()
{
m_nvram->set_base(m_sram->base(), m_sram->bytes());
archimedes_init();
m_mk5_2KHz_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aristmk5_state::mk5_2KHz_callback),this));
m_mk5_VSYNC_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aristmk5_state::mk5_VSYNC_callback),this));
m_spi_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aristmk5_state::spi_timer), this));
m_lamps.resolve();
}
void aristmk5_state::machine_reset()
{
archimedes_reset();
m_mk5_2KHz_timer->adjust(attotime::from_hz(MASTER_CLOCK / 9 / 4096)); // 8MHz / 4096
m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // default bit 1 & bit 2 == 0
m_ioc_regs[IRQ_STATUS_B] |= 0x40; //hack, set keyboard irq empty to be ON
{
/* for US sets, load the roms according to what the operator wants */
uint8_t *ROM = memregion("maincpu")->base();
uint8_t *PRG;
if (ioport("ROM_LOAD") != nullptr)
{
static const char *const rom_region[] = { "set_4.04.09", "set_4.04.08", "set_4.04.00", "set_4.02.04", "game_prg" };
uint8_t op_mode = ioport("ROM_LOAD")->read();
PRG = memregion(rom_region[op_mode & 7])->base();
}
else // non-US sets don't have set chips
PRG = memregion("game_prg")->base();
for(int i = 0; i < 0x400000; i++)
ROM[i] = PRG[i];
}
m_ldor_shift_reg = 0x55;
m_coin_start_cycles = 0;
m_sram_bank = 0;
m_hopper_test = 1;
m_coin_div = 0;
m_spi_mux = 0;
m_spi_latch = 0;
m_spi_bits = 0;
memset(m_spi_data, 0, sizeof(m_spi_data));
}
void aristmk5_state::aristmk5(machine_config &config)
{
ARM(config, m_maincpu, MASTER_CLOCK/6); // 12000000
m_maincpu->set_addrmap(AS_PROGRAM, &aristmk5_state::aristmk5_drame_map);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(2)); /* 1.6 - 2 seconds */
/* TODO: this isn't supposed to access a keyboard ... */
AAKART(config, m_kart, 12000000/128); // TODO: frequency
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(640, 400);
m_screen->set_visarea(0, 640-1, 0, 400-1);
m_screen->set_screen_update(FUNC(archimedes_state::screen_update));
PALETTE(config, m_palette).set_entries(0x200);
EEPROM_93C56_16BIT(config, m_eeprom[0]);
EEPROM_93C56_16BIT(config, m_eeprom[1]);
NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
// TL16C452FN U71
ns16450_device &uart0a(NS16450(config, "uart_0a", MASTER_CLOCK / 9));
uart0a.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<0>));
ns16450_device &uart0b(NS16450(config, "uart_0b", MASTER_CLOCK / 9));
uart0b.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<1>));
// TL16C452FN U72
ns16450_device &uart1a(NS16450(config, "uart_1a", MASTER_CLOCK / 9));
uart1a.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<2>));
ns16450_device &uart1b(NS16450(config, "uart_1b", MASTER_CLOCK / 9));
uart1b.out_int_callback().set("uart_irq", FUNC(input_merger_device::in_w<3>));
// COMM port 4 - 5
NS16450(config, "uart_2a", MASTER_CLOCK / 9);
// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<4>));
NS16450(config, "uart_2b", MASTER_CLOCK / 9);
// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<5>));
// COMM port 6 - 7
NS16450(config, "uart_3a", MASTER_CLOCK / 9);
// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<6>));
NS16450(config, "uart_3b", MASTER_CLOCK / 9);
// MCFG_INS8250_OUT_INT_CB(WRITELINE(*this, FUNC(input_merger_device::in_w<7>));
INPUT_MERGER_ANY_HIGH(config, "uart_irq").output_handler().set(FUNC(aristmk5_state::uart_irq_callback));
DS1302(config, m_rtc, 32.768_kHz_XTAL);
HOPPER(config, m_hopper, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
SPEAKER(config, "speaker").front_center();
for (int i = 0; i < 8; i++)
{
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.1); // unknown DAC
}
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);
vref.add_route(0, "dac7", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac7", -1.0, DAC_VREF_NEG_INPUT);
}
void aristmk5_state::aristmk5_touch(machine_config &config)
{
aristmk5(config);
subdevice<ns16450_device>("uart_0a")->out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
microtouch_device &microtouch(MICROTOUCH(config, "microtouch", 2400));
microtouch.stx().set("uart_0a", FUNC(ins8250_uart_device::rx_w));
}
void aristmk5_state::aristmk5_usa(machine_config &config)
{
aristmk5(config);
m_maincpu->set_addrmap(AS_PROGRAM, &aristmk5_state::aristmk5_usa_map);
}
void aristmk5_state::aristmk5_usa_touch(machine_config &config)
{
aristmk5_usa(config);
subdevice<ns16450_device>("uart_0a")->out_tx_callback().set("microtouch", FUNC(microtouch_device::rx));
microtouch_device &microtouch(MICROTOUCH(config, "microtouch", 2400));
microtouch.stx().set("uart_0a", FUNC(ins8250_uart_device::rx_w));
}
#define ARISTOCRAT_MK5_USA_SETCHIPS \
ROM_REGION( 0x400000, "set_4.04.09", ROMREGION_ERASEFF ) /* setchip v4.04.09 4meg */ \
ROM_LOAD32_WORD( "setchip v4.04.09.u7", 0x000000, 0x80000, CRC(e8e8dc75) SHA1(201fe95256459ce34fdb6f7498135ab5016d07f3) ) \
ROM_LOAD32_WORD( "setchip v4.04.09.u11", 0x000002, 0x80000, CRC(ff7a9035) SHA1(4352c4336e61947c555fdc80c61f944076f64b64) ) \
ROM_REGION( 0x400000, "set_4.04.08", ROMREGION_ERASEFF ) /* setchip v4.04.08 4meg */ \
ROM_LOAD32_WORD( "setchip v4.04.08.u7", 0x000000, 0x80000, CRC(7c4b7fe4) SHA1(39dd39c794c0cb6abc1b7503650643a8131468d1) ) \
ROM_LOAD32_WORD( "setchip v4.04.08.u11", 0x000002, 0x80000, CRC(d3234a28) SHA1(8ff112ee4aadf1d359ca8ffe0cfa9c7400aa0595) ) \
ROM_REGION( 0x400000, "set_4.04.00", ROMREGION_ERASEFF ) /* setchip v4.04.00 4meg 42pin */ \
ROM_LOAD32_WORD( "setchip v4.04.00.u7", 0x000000, 0x80000, CRC(2453137e) SHA1(b59998e75ae3924da16faf47b9cfe9afd60d810c) ) \
ROM_LOAD32_WORD( "setchip v4.04.00.u11", 0x000002, 0x80000, CRC(82dfa12a) SHA1(86fd0f0ad8d5d1bc503392a40bbcdadb055b2765) ) \
ROM_REGION( 0x400000, "set_4.02.04", ROMREGION_ERASEFF ) /* setchip v4.02.04 */ \
ROM_LOAD32_WORD( "setchip v4.02.04.u7", 0x000000, 0x80000, CRC(5a254b22) SHA1(8444f237b392df2a3cb42ea349e7af32f47dd544) ) \
ROM_LOAD32_WORD( "setchip v4.02.04.u11", 0x000002, 0x80000, CRC(def36617) SHA1(c7ba5b08e884a8fb36c9fb51c08e243e32c81f89) )
#define ARISTOCRAT_MK5_GALS \
ROM_REGION( 0x600, "gals", 0 ) \
ROM_LOAD( "a562837.u36", 0x000000, 0x000157, CRC(1f269234) SHA1(29940dd50fb55c632935f62ff44ca724379c7a43) ) \
ROM_LOAD( "a562838.u65", 0x000200, 0x000157, CRC(f2f3c40a) SHA1(b795dfa5cc4e8127c3f3a0906664910d1325ec92) ) \
ROM_LOAD( "a562840.u22", 0x000400, 0x000157, CRC(941d4cdb) SHA1(1ca091fba69e92f262dbb3d40f515703c8981793) )
#define ARISTOCRAT_MK5_EEPROM \
ROM_REGION16_BE( 0x100, "eeprom0", ROMREGION_ERASEFF ) \
ROM_REGION16_BE( 0x100, "eeprom1", ROMREGION_ERASEFF )
ROM_START( aristmk5 )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200751V / 602/9 / 10 Credit Multiplier / 20 Line Multiline
// ADONIS / NSW/ACT / A - 25/05/98
ROM_START( adonis )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000bf8
0x000000-0x05eb1b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xfc98a056
Calculated Checksum 0xfc98a056 (OK)
0x05eb1c-0x10fa8b is the non-Checksummed range still containing data but NOT covered by Checksum
0x05eb1c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200751v.u7", 0x000000, 0x80000, CRC(ab386ab0) SHA1(56c5baea4272866a9fe18bdc371a49f155251f86) )
ROM_LOAD32_WORD( "0200751v.u11", 0x000002, 0x80000, CRC(ce8c8449) SHA1(9894f0286f27147dcc437e4406870fe695a6f61a) )
ROM_LOAD32_WORD( "0200751v.u8", 0x100000, 0x80000, CRC(99097a82) SHA1(a08214ab4781b06b46fc3be5c48288e373230ef4) )
ROM_LOAD32_WORD( "0200751v.u12", 0x100002, 0x80000, CRC(443a7b6d) SHA1(c19a1c50fb8774826a1e12adacba8bbfce320891) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100751V / 602/9 / 10 Credit Multiplier / 20 Line Multiline
// ADONIS / NSW/ACT / A - 25/05/98
ROM_START( adonisa )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000bf8
0x000000-0x05cdc3 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x91f374c7
Calculated Checksum 0x91f374c7 (OK)
0x05cdc4-0x11000b is the non-Checksummed range still containing data but NOT covered by Checksum
0x05cdc4-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100751v.u7", 0x000000, 0x80000, CRC(ca3e97db) SHA1(bd0a4402e57891899d92ea85a87fb8925a44f706) )
ROM_LOAD32_WORD( "0100751v.u11", 0x000002, 0x80000, CRC(cfe3f792) SHA1(aa1bf77101404c2018a5e5b808f1d683e29ae942) )
ROM_LOAD32_WORD( "0100751v.u8", 0x100000, 0x80000, CRC(d55204bd) SHA1(208c089d435ea4af25d0b9b3d5e79fea397bc885) )
ROM_LOAD32_WORD( "0100751v.u12", 0x100002, 0x80000, CRC(77090858) SHA1(76ebc15b26f378ac95276f0aa26d077e3646a6f1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// BHG1508 / MV4124/1 / 5,10,25,50 Credit Multiplier / 20 Line Multiline
// ADONIS / Export / B - 31/07/01
// Requires set chips 4.04.xx
ROM_START( adonisu )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d18
0x000000-0x0e8a7b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xe6715f98
Calculated Checksum 0xe6715f98 (OK)
0x0e8a7c-0x1c5f47 is the non-Checksummed range still containing data but NOT covered by Checksum
0x0e8a7c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1508.u7", 0x000000, 0x80000, CRC(09107577) SHA1(6cb525a96cdcb414ae7a45b5a5853d94059bc333) )
ROM_LOAD32_WORD( "bhg1508.u11", 0x000002, 0x80000, CRC(45630329) SHA1(a2c8e3ae786948135797a80ae12bf3ba2e6192a8) )
ROM_LOAD32_WORD( "bhg1508.u8", 0x100000, 0x80000, CRC(c572e39b) SHA1(e6ca864b620a17f8b963d4917cbdc894b9b275dc) )
ROM_LOAD32_WORD( "bhg1508.u12", 0x100002, 0x80000, CRC(b8995b25) SHA1(ad39ad11dc02dbbe8be99d81c96e9fc3191726ad) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0201005V / 602/9 / 10 Credit Multiplier/20 Line Multiline
// ADONIS / NSW/ACT / C - 06/07/99
// Cash Express Hyperlink game
ROM_START( adonisce )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000c44
0x000000-0x06ddab is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x07c97aad
Calculated Checksum 0x07c97aad (OK)
0x06ddac-0x2a41cb is the non-Checksummed range
*/
ROM_LOAD32_WORD( "0201005v.u7", 0x000000, 0x80000, CRC(32149323) SHA1(abfc6a8518a39528db3700c2cb558e925ceeda6d) )
ROM_LOAD32_WORD( "0201005v.u11", 0x000002, 0x80000, CRC(309b0b55) SHA1(669568031d305b29395345a26a5d004d83881433) )
ROM_LOAD32_WORD( "0201005v.u8", 0x100000, 0x80000, CRC(e9185e3c) SHA1(99609a152a55246d0f5377f943deec47e68fb9fc) )
ROM_LOAD32_WORD( "0201005v.u12", 0x100002, 0x80000, CRC(8b675dff) SHA1(275579d21be51e6ca01be7c57018e142d1d40875) )
ROM_LOAD32_WORD( "0201005v.u9", 0x200000, 0x80000, CRC(c2e973e7) SHA1(e89bdaa56b0c3c7bd77c8141421f76be9ff2e71b) )
ROM_LOAD32_WORD( "0201005v.u13", 0x200002, 0x80000, CRC(e005a7e8) SHA1(cbb313f5d1d04c5a441b3f92b7a90a281ddb4885) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 01J02046 / JB013/1 / Multi credit / 20 line
// ALCHEMIST / VENEZUILA / A - 22/01/02
// This game is downported from the MK6 version (Alchemy) and has MK6 style graphics
// Venezuela is spelled as 'Venezuila' in the ROM
// Game is in Spanish, however audit mode is in English
ROM_START( alchemst )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000bb8
0x000000-0x08e937 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x04472e3b
Calculated Checksum 0x04472e3b (OK)
0x08e938-0x2c839f is the non-Checksummed range still containing data but NOT covered by Checksum
0x08e938-0x2fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "01j02046.u7", 0x000000, 0x80000, CRC(1a315825) SHA1(d5390c13a6182fca6ca5eec7968a8be0af548468) )
ROM_LOAD32_WORD( "01j02046.u11", 0x000002, 0x80000, CRC(1f21adea) SHA1(88a24ea08c476b880c3c8a0547442f065703c6c8) )
ROM_LOAD32_WORD( "01j02046.u8", 0x100000, 0x80000, CRC(9fd79dc5) SHA1(510a45004cf760488977b7ac0ef79a04c3ec035f) )
ROM_LOAD32_WORD( "01j02046.u12", 0x100002, 0x80000, CRC(fcd695fb) SHA1(28a6891f1dbaf919e8454f412090660bb604938e) )
ROM_LOAD32_WORD( "01j02046.u9", 0x200000, 0x80000, CRC(3591eaf1) SHA1(e11c7ec630df69f7b7d507f3d28fc3530716f133) )
ROM_LOAD32_WORD( "01j02046.u13", 0x200002, 0x80000, CRC(6b791adf) SHA1(f00923101f926034603243a3c63e1010b044829e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200428V / 386/56 / CARD POKER
// BAD DOG POKER / NSW HOTEL / A 17/12/96
ROM_START( baddog )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ae4
0x000000-0x056f3f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x15ac4012
Calculated Checksum 0x15ac4012 (OK)
0x056f40-0x2fb607 is the non-Checksummed range still containing data but NOT covered by Checksum
0x056f40-0x2fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200428v.u7", 0x000000, 0x80000, CRC(25aa8109) SHA1(cf4521b3d447812d2d9dbfdab9fe0cec71cdeb2e) )
ROM_LOAD32_WORD( "0200428v.u11", 0x000002, 0x80000, CRC(774ff977) SHA1(5ce1aa8b7598b4bc8e5fa44de1c03b5f2851f5de) )
ROM_LOAD32_WORD( "0200428v.u8", 0x100000, 0x80000, CRC(e52a279a) SHA1(4a3a080d840d8a894ec0ba0250a566831377f0f8) )
ROM_LOAD32_WORD( "0200428v.u12", 0x100002, 0x80000, CRC(562aa123) SHA1(825a2d23321b636a3ff2565b2b72df3b97bd0ec8) )
ROM_LOAD32_WORD( "0200428v.u9", 0x200000, 0x80000, CRC(66d5a7f7) SHA1(1a1f845a97677c43ff1090231434ae9d3d36ab4c) )
ROM_LOAD32_WORD( "0200428v.u13", 0x200002, 0x80000, CRC(883b2ec3) SHA1(5b431d8c9c8eabca65ab22dcf2bdb22d49445bb1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200818V / 594/1 / 3 Credit Multiplier/3 Line Multiline
// Black Panther / Victoria / A - 30/07/96
ROM_START( blackpnt )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000bb0
0x000000-0x056d8b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xeebac434
Calculated Checksum 0xeebac434 (OK)
0x056d8c-0x138557 is the non-Checksummed range still containing data but NOT covered by Checksum
0x056d8c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
// the checksum only covers part of the first 2 roms, marked all as BAD_DUMP because it can't be trusted without a full redump.
ROM_LOAD32_WORD( "0200818v.u7", 0x000000, 0x80000, BAD_DUMP CRC(eed76145) SHA1(6a40a6ba2ce320a37b086dc4916c92c8e38c065e) )
ROM_LOAD32_WORD( "0200818v.u11", 0x000002, 0x80000, BAD_DUMP CRC(de3358d3) SHA1(4f290940d8af9fe8d404802d5cecfd2d098eff12) )
ROM_LOAD32_WORD( "0200818v.u8", 0x100000, 0x80000, BAD_DUMP CRC(58ddfb50) SHA1(c2152e65fa119136b7944b69e650310db78e62a8) )
ROM_LOAD32_WORD( "0200818v.u12", 0x100002, 0x80000, BAD_DUMP CRC(bb2bf7bb) SHA1(f88208238a69fc79e33af17f39e25cd2857d7172) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100812V / 616/1 / 25 Credit Multiplier/20 Line Multiline
// Boot Scootin' 500cm / NSW/ACT / B - 11/12/98
ROM_START( bootsctn )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
0x000000-0x06c177 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xb0980753
Calculated Checksum 0xb0980753 (OK)
0x06c178-0x384a9b is the non-Checksummed range still containing data but NOT covered by Checksum
0x06c178-0x3fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100812v.u7", 0x000000, 0x80000, CRC(f8e12462) SHA1(82a25757b2146204b86e557b8f1c45280e0668a8) )
ROM_LOAD32_WORD( "0100812v.u11", 0x000002, 0x80000, CRC(df066d27) SHA1(310422c78e93ce9f1f58b4a58a59bc2eba5c502a) )
ROM_LOAD32_WORD( "0100812v.u8", 0x100000, 0x80000, CRC(08e8de8d) SHA1(913d3e51821d8885affd2750c18d1000629b79d9) )
ROM_LOAD32_WORD( "0100812v.u12", 0x100002, 0x80000, CRC(87ddc7ef) SHA1(91473d8fd266a909fa8d4ec3df3a61861c6e9f4c) )
ROM_LOAD32_WORD( "0100812v.u9", 0x200000, 0x80000, CRC(a1ca5f2b) SHA1(c8fc6aff0c3819370339143966ec76910e40c671) )
ROM_LOAD32_WORD( "0100812v.u13", 0x200002, 0x80000, CRC(fca82ee7) SHA1(bb70f2e04047a58b697dca536b95f9bbcc295a8a) )
ROM_LOAD32_WORD( "0100812v.u10", 0x300000, 0x80000, CRC(b574c12d) SHA1(3b1d1d00ef3eae23493e2b0381ab80490af510d4) )
ROM_LOAD32_WORD( "0100812v.u14", 0x300002, 0x80000, CRC(75b9b89e) SHA1(08d487b3722f2ea5d2d18c78f571a44c78616dbe) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// MV4098 / 10 Credit Multiplier / 9 Line Multiline
// BOOT SCOOTIN' / Export / A - 25/08/99
// All devices are 27c4002 instead of 27c4096
// Marked as GHG101202 and 92.767%
// No set chips required
ROM_START( bootsctnu )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0941ab is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xdf68cecf
Calculated Checksum 0xdf68cecf (OK)
0x0941ac-0x328187 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ghg101202.u7", 0x000000, 0x80000, CRC(ea389201) SHA1(a838a9115ca3101cb06ec86e955294d51f8d65e4) ) // 92.767%
ROM_LOAD32_WORD( "ghg101202.u11", 0x000002, 0x80000, CRC(af6f2142) SHA1(200be993ad21643c46995d68a119fd8c1d2fedbe) ) // 92.767%
ROM_LOAD32_WORD( "ghg101202.u8", 0x100000, 0x80000, CRC(7b9c153e) SHA1(2144a208d2fd2f993e113d809045e864d89df7ec) ) // base
ROM_LOAD32_WORD( "ghg101202.u12", 0x100002, 0x80000, CRC(565ce1ca) SHA1(a9a64027d78f9ca7036b5b299040e1a7c776b617) ) // base
ROM_LOAD32_WORD( "ghg101202.u9", 0x200000, 0x80000, CRC(b60ea737) SHA1(847cdb4a6bf887a08dd525320aeffc74fcc10643) ) // base
ROM_LOAD32_WORD( "ghg101202.u13", 0x200002, 0x80000, CRC(55ddba7b) SHA1(3a43e577e8bc72aa1c09b131ec8b2a87eaeccf9f) ) // base
ROM_LOAD32_WORD( "ghg101202.u10", 0x300000, 0x80000, CRC(230725bc) SHA1(85320b1b72c7f83f57bc8cc861e5a6323750ff4f) ) // base
ROM_LOAD32_WORD( "ghg101202.u14", 0x300002, 0x80000, CRC(18934c51) SHA1(f7c9c95c687dbfe89747e7877157fde37bc1119e) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// GHG1008-03 / MV4098/1 / 10 Credit Multiplier/20 Line Multiline
// BOOT SCOOTIN' / Export / A - 27/07/99
ROM_START( bootsctnua )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0944bf is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xb79e9367
Calculated Checksum 0xb79e9367 (OK)
0x0944c0-0x32849b is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ghg100803.u7", 0x000000, 0x80000, CRC(56749bb5) SHA1(391e2cc4e17c56c9c3a40dba34970b606cf7e452) ) // 94.858%
ROM_LOAD32_WORD( "ghg100803.u11", 0x000002, 0x80000, CRC(3a38fec2) SHA1(1a4171bf40368f38bf93323daa640da9220f23a4) ) // 94.858%
ROM_LOAD32_WORD( "ghg100803.u8", 0x100000, 0x80000, CRC(85cf7289) SHA1(500d236bdf82a2ef37919c2756ec4695729e9d15) )
ROM_LOAD32_WORD( "ghg100803.u12", 0x100002, 0x80000, CRC(c44e560c) SHA1(c638850afddbfc6e8d89e077ed54624543a10e33) )
ROM_LOAD32_WORD( "ghg100803.u9", 0x200000, 0x80000, CRC(ac3d6eeb) SHA1(0a5ded18b8b5ed2d8bfc98ab5efe2564a0e5a0d0) )
ROM_LOAD32_WORD( "ghg100803.u13", 0x200002, 0x80000, CRC(5ef50865) SHA1(07bd31fab356142e548f6aa27d15ed5646064f15) )
ROM_LOAD32_WORD( "ghg100803.u10", 0x300000, 0x80000, CRC(bebc7aaa) SHA1(3b63ba76a96677032776e17761ed281541f94513) )
ROM_LOAD32_WORD( "ghg100803.u14", 0x300002, 0x80000, CRC(9759692e) SHA1(7666027e21af27329720127367a780776973c515) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// AHG1547 / MV4098/1 / 10 Credit Multiplier / 20 Line Multiline
// BOOT SCOOTIN' / Export / B - 22/03/01
// Requires set chip version: 4.04.xx
ROM_START( bootsctnub )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d18
0x000000-0x0f47a7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xae44f291
Calculated Checksum 0xae44f291 (OK)
0x0f47a8-0x3a0b5b is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1547.u7", 0x000000, 0x80000, CRC(5ded48cb) SHA1(3335a9dc6758dd8b225258ab2cb01cf4e9c02dd2) )
ROM_LOAD32_WORD( "ahg1547.u11", 0x000002, 0x80000, CRC(764dfdb8) SHA1(e68493dfac2d64c59d7576d4b124210089edda62) )
ROM_LOAD32_WORD( "ahg1547.u8", 0x100000, 0x80000, CRC(7e26e7a9) SHA1(88dc5dbf6ada1b6f2218ef3b013bc91047401d21) )
ROM_LOAD32_WORD( "ahg1547.u12", 0x100002, 0x80000, CRC(f2dfc38c) SHA1(7fd6c8e11feef375b0f1fac0cfebca74f5da2ed6) )
ROM_LOAD32_WORD( "ahg1547.u9", 0x200000, 0x80000, CRC(13f410e4) SHA1(e5022dbb42d174b2e3eda8f1564c97ca8fa39deb) )
ROM_LOAD32_WORD( "ahg1547.u13", 0x200002, 0x80000, CRC(a5382c96) SHA1(570479383d69dfc9e52ebd55b51989ca284d31e7) )
ROM_LOAD32_WORD( "ahg1547.u10", 0x300000, 0x80000, CRC(a31d8a45) SHA1(5e62d0d3523fd381e940b4dbc6f84d83434bf83a) )
ROM_LOAD32_WORD( "ahg1547.u14", 0x300002, 0x80000, CRC(de2888e2) SHA1(f614d68c0e09912e9126cb024f54ed32ee50b57e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// BHG1248 / MV4119/1 / 3,5,10,20,25,50 Credit Multiplier / 9 Line Multiline
// Bachelorette Party / Export / B - 25/08/2000
// ROM says '9 Line Multiline' but this is a 20 line game, it cannot be set to 9 lines at all
// Touchscreen game
// Game requires set chip version: 4.01.xx
ROM_START( bparty )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d18
0x000000-0x0a693f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x8eb73e23
Calculated Checksum 0x8eb73e23 (OK)
0x0a6940-0x39cda7 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1248.u7", 0x000000, 0x80000, CRC(6e432a78) SHA1(3505cf255f63365e5cc7c1e8338509a2889b99be) )
ROM_LOAD32_WORD( "bhg1248.u11", 0x000002, 0x80000, CRC(c9244e66) SHA1(5ea15951c4e003378549c2a581c32564327bd3bf) )
ROM_LOAD32_WORD( "bhg1248.u8", 0x100000, 0x80000, CRC(344c4061) SHA1(6041a8198e82416af48131f2e1bb59341e99e365) )
ROM_LOAD32_WORD( "bhg1248.u12", 0x100002, 0x80000, CRC(79034324) SHA1(be833ea47a8f9abc1415d14c1d499572a64b2374) )
ROM_LOAD32_WORD( "bhg1248.u9", 0x200000, 0x80000, CRC(ecc5b6a2) SHA1(2d8d0b000600f0ae965fe0ff53a7f7e5c169a0a7) )
ROM_LOAD32_WORD( "bhg1248.u13", 0x200002, 0x80000, CRC(dade5590) SHA1(e604a87aeb5284daec2a35c395ef52213b16da7d) )
ROM_LOAD32_WORD( "bhg1248.u10", 0x300000, 0x80000, CRC(fc6310db) SHA1(1a7f31f884c4b2838edaffd13c212b887d218592) )
ROM_LOAD32_WORD( "bhg1248.u14", 0x300002, 0x80000, CRC(b276d61a) SHA1(8bee7fa551caec3da03afa061612c153f7b48cdb) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// BHG1579 / MV4119/1 / 5, 10, 25, 50 Credit Multiplier / 20 Line Multiline
// Bachelorette Party / Export / B - 25/08/2000
// Touchscreen game
ROM_START( bpartya )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "bhg1579.u7", 0x000000, 0x7f01b, BAD_DUMP CRC(da30ade2) SHA1(0a19181ae3968134a5731aa9eadde8c7a12798c1) )
ROM_LOAD32_WORD( "bhg1579.u11", 0x000002, 0x7ff5b, BAD_DUMP CRC(f94c777f) SHA1(f3e516b9d8b0270f7935bf80f7fabfef055171f3) )
ROM_LOAD32_WORD( "bhg1579.u8", 0x100000, 0x7fe04, BAD_DUMP CRC(9f457ac5) SHA1(913b48a5d49c555dfa758aee619d32bf32daf761) )
ROM_LOAD32_WORD( "bhg1579.u12", 0x100002, 0x7fdfe, BAD_DUMP CRC(d18929d8) SHA1(0f1d9c8b48a2f157ec8447bff08815e2ad15782c) )
ROM_LOAD32_WORD( "bhg1579.u9", 0x200000, 0x7fd8e, BAD_DUMP CRC(08c95d7f) SHA1(ad37b96e3474bac7e06156c19b08a0ae313d7e42) )
ROM_LOAD32_WORD( "bhg1579.u13", 0x200002, 0x7fd9c, BAD_DUMP CRC(9f0f893d) SHA1(027048eef5f791a4e051692108288ee4b12152e6) )
ROM_LOAD32_WORD( "bhg1579.u10", 0x300000, 0x7ff63, BAD_DUMP CRC(b2682002) SHA1(378acb39ae504423506b3a01b1ba91d1e8ae0be0) )
ROM_LOAD32_WORD( "bhg1579.u14", 0x300002, 0x7ff94, BAD_DUMP CRC(34ffe312) SHA1(34432e57e2e3dd90c15dd3ff7cb16d8381343be8) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200510V / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / Local / D - 5/07/96
ROM_START( bumblbug )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000b68
0x000000-0x05b94b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xf5d418fe
Calculated Checksum 0xf5d418fe (OK)
0x05b94c-0x0fc69f is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200510v.u7", 0x000000, 0x80000, CRC(d4cfce73) SHA1(735c385779afe55e521dbfe9ebfdc55fe3346349) )
ROM_LOAD32_WORD( "0200510v.u11", 0x000002, 0x80000, CRC(5d888245) SHA1(bbbe61e09bebd5fcb79f060d5caee15100c9a685) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200546V / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / QLD CLUB & HOTEL / D - 05/07/96
ROM_START( bumblbugql )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ac8
0x000000-0x05554b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x66b20ae6
Calculated Checksum 0x66b20ae6 (OK)
0x05554c-0x1c4e2b is the non-Checksummed range still containing data but NOT covered by Checksum
0x05554c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200456v.u7", 0x000000, 0x80000, CRC(f04dd78b) SHA1(443057fc3e02406d46cf68f95e85e5a0fd8e7b1e) )
ROM_LOAD32_WORD( "0200456v.u11", 0x000002, 0x80000, CRC(3b50b21b) SHA1(7c20d1bfb82cdd19c046a545ae251e3560b8f00d) )
ROM_LOAD32_WORD( "0200456v.u8", 0x100000, 0x80000, CRC(da86d682) SHA1(b1aa739215f1f0967d6a03060d9a2f10115c0b03) )
ROM_LOAD32_WORD( "0200456v.u12", 0x100002, 0x80000, CRC(9f0d7615) SHA1(1453b1476510e1dd68bc14feba72dc59b9dfe676) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// CHG0479-03 / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / Export / D - 05/07/97
// All devices are 27c4002 instead of 27c4096
// Marked as CHG047903 and 92.691%
// No set chips required
ROM_START( bumblbugu )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0b1f47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x9f3936f9
Calculated Checksum 0x9f3936f9 (OK)
0x0b1f48-0x183c1f is the non-Checksummed range still containing data but NOT covered by Checksum
0x0b1f48-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "chg047903.u7", 0x000000, 0x80000, CRC(ae49d394) SHA1(fae7db8193915a3307e89a4623289fcbf9486283) ) // 92.691%
ROM_LOAD32_WORD( "chg047903.u11", 0x000002, 0x80000, CRC(6da81e81) SHA1(a9e7aff23b24213ce2c68f672a9e22088cf53f3f) ) // 92.691%
ROM_LOAD32_WORD( "chg047903.u8", 0x100000, 0x80000, CRC(e0c01d01) SHA1(9153129fd348a97da7cccf002e5d03e4b4db9264) ) // base
ROM_LOAD32_WORD( "chg047903.u12", 0x100002, 0x80000, CRC(7dbb634b) SHA1(f7a752240989032af142f4cd6e4260a12a5b4c0a) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// CHG0479-99 / 593 / 10 Credit Multiplier / 9 Line Multiline
// Bumble Bugs / Export / D - 05/07/97
// All devices are 27c4002 instead of 27c4096
// Marked as CHG047999 and 87.006%
// Variation (% and NO): 87.006% 99
// No set chips required
ROM_START( bumblbugua )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0b1f47 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xa23f49f6
Calculated Checksum 0xa23f49f6 (OK)
0x0b1f48-0x183c1f is the non-Checksummed range still containing data but NOT covered by Checksum
0x0b1f48-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "chg047999.u7", 0x000000, 0x80000, CRC(7e9be2d0) SHA1(84293a391e9797afc904bb3be05367361ae8d4c7) ) // 87.006%
ROM_LOAD32_WORD( "chg047999.u11", 0x000002, 0x80000, CRC(efd350ac) SHA1(19975b4d2b55b65542a7ff38fa035fd516bd6e2e) ) // 87.006%
ROM_LOAD32_WORD( "chg047999.u8", 0x100000, 0x80000, CRC(e0c01d01) SHA1(9153129fd348a97da7cccf002e5d03e4b4db9264) ) // base
ROM_LOAD32_WORD( "chg047999.u12", 0x100002, 0x80000, CRC(7dbb634b) SHA1(f7a752240989032af142f4cd6e4260a12a5b4c0a) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200143V / 571/4 / 10 Credit Multiplier/9 Line Multiline
// Butterfly Delight / Local / A - 19/12/95
ROM_START( buttdeli )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000adc
0x000000-0x04477f is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x19143954
Calculated Checksum 0x19143954 (OK)
0x044780-0x1c713b is the non-Checksummed range still containing data but NOT covered by Checksum
0x044780-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200143v.u7", 0x000000, 0x80000, CRC(7f69cdfc) SHA1(1241741d21334df10d60080555824a87eae93db3) )
ROM_LOAD32_WORD( "0200143v.u11", 0x000002, 0x80000, CRC(1ddf8732) SHA1(dc09db14c251699fdd46068f18ad6214e8752939) )
ROM_LOAD32_WORD( "0200143v.u8", 0x100000, 0x80000, CRC(24d8135e) SHA1(1bc69e9927afe0300d15a49ca06ae527774b295a) )
ROM_LOAD32_WORD( "0200143v.u12", 0x100002, 0x80000, CRC(0d58cf28) SHA1(aa65b7ee88b5bc872008a46e60bd49d9e5eda153) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// AHG1463 / 603(a) / 3,5,10,25,50 Credit Multiplier / 20 Line Multiline
// Canyon Rose 100cm / Export / B - 06/12/96
ROM_START( canrose )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "ahg1463.u7", 0x000000, 0x7f06d, CRC(d866097c) SHA1(2bd2c6200986b27a35329aa0c43e5afd22becbfc) )
ROM_LOAD32_WORD( "ahg1463.u11", 0x000002, 0x7ff68, CRC(710827f7) SHA1(26b9ab7f49dc94467a98635480cac0605c1de399) )
ROM_LOAD32_WORD( "ahg1463.u8", 0x100000, 0x7f499, CRC(17e4ff76) SHA1(e582c92478f139e55922ccf851e4922078498462) )
ROM_LOAD32_WORD( "ahg1463.u12", 0x100002, 0x7f4fc, CRC(5fe736c2) SHA1(d7c1a3f003085848e413aa499d9eaecca74773da) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100676V / 614/3 / 10 Credit Multiplier/20 Line Multiline
// Cash Cat 200cm / NSW/ACT / A - 3/04/98
ROM_START( cashcat )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000b68
0x000000-0x0615f7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x7b4c06fa
Calculated Checksum 0x7b4c06fa (OK)
0x0615f8-0x1fffef is the non-Checksummed range still containing data but NOT covered by Checksum
0x0615f8-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_LOAD32_WORD( "0100676v.u7", 0x000000, 0x80000, CRC(5c3a3805) SHA1(b94a400d1da316cb25adc8e2691f9d4d577f7104) )
ROM_LOAD32_WORD( "0100676v.u11", 0x000002, 0x80000, CRC(7cdd3933) SHA1(db191eabde61345ecd9528790bb78484b243c5f3) )
ROM_LOAD32_WORD( "0100676v.u8", 0x100000, 0x80000, CRC(87a8d9a9) SHA1(93ad5a0f3579845e187c5a5a45e6bdc476cd4d89) )
ROM_LOAD32_WORD( "0100676v.u12", 0x100002, 0x80000, CRC(a7199f5f) SHA1(6a46935c095b1d89307921e3a53b48032e6f45fa) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100557V / 614/1 / 10 Credit Multiplier/9 Line Multiline
// Cash Cat 90cm / NSW/ACT / B - 1/12/97
ROM_START( cashcata )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
/*
Checksum code found at 0x000b68
0x000000-0x0612df is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xdd9daebd
Calculated Checksum 0xdd9daebd (OK)
0x0612e0-0x18796b is the non-Checksummed range still containing data but NOT covered by Checksum
0x0612e0-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_LOAD32_WORD( "0100557v.u7", 0x000000, 0x80000, CRC(441baf3a) SHA1(0770b2b9119cc528806a910c25090649f9f0f9a5) )
ROM_LOAD32_WORD( "0100557v.u11", 0x000002, 0x80000, CRC(a67962e4) SHA1(2436d8028b739bbccf757344ef67a60dca79e81b) )
ROM_LOAD32_WORD( "0100557v.u8", 0x100000, 0x80000, CRC(9e07de68) SHA1(455f912e10517867e938f0b3ce63ff1e3a14ca1d) )
ROM_LOAD32_WORD( "0100557v.u12", 0x100002, 0x80000, CRC(bdeeafd3) SHA1(a95a44ff8534bb030d696a37821f3e53072f2947) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0300863V / MV4089 / 5 Credit Multiplier/9 Line Multiline
// Cash Cat / New Zealand / A- 4/1/99
ROM_START( cashcatnz )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
// checksum code not found (uses different startup sequence)
ROM_LOAD32_WORD( "0300863v.u7", 0x000000, 0x80000, CRC(de0f0202) SHA1(994f6c47b1e2e0e133853dc69b189752104486e4) )
ROM_LOAD32_WORD( "0300863v.u11", 0x000002, 0x80000, CRC(e60e8bd1) SHA1(ffaa7be8968047b9ee54a117d273a14cbca41028) )
ROM_LOAD32_WORD( "0300863v.u8", 0x100000, 0x80000, CRC(37d41d35) SHA1(c959b787383d6f91d20e18f37a38a965407a9ff0) )
ROM_LOAD32_WORD( "0300863v.u12", 0x100002, 0x80000, CRC(f930fc07) SHA1(cb3fdbd5b87af7b14067f7999740470d3cf434df) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100438V / 603/1 / 25 Credit Multiplier / 20 Line Multiline
// Cash Chameleon / NSW/ACT / C - 15/4/97
ROM_START( cashcham )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ae0
0x000000-0x055f83 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x159a2aa3
Calculated Checksum 0x159a2aa3 (OK)
0x055f84-0x1dbdd7 is the non-Checksummed range still containing data but NOT covered by Checksum
0x055f84-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100438v.u7", 0x000000, 0x80000, CRC(c942ef22) SHA1(4f56674f749602ae928832f98a641e680af8989b) )
ROM_LOAD32_WORD( "0100438v.u11", 0x000002, 0x80000, CRC(64921874) SHA1(5aa6a0d6e29f5e400e275f27b6adfbef595fe83a) )
ROM_LOAD32_WORD( "0100438v.u8", 0x100000, 0x80000, CRC(a8868277) SHA1(e199448a0a920219dc15443813061653b94d6d3a) )
ROM_LOAD32_WORD( "0100438v.u12", 0x100002, 0x80000, CRC(7ae3b5db) SHA1(238698b72f529ac4fb292d08267069d1da01b43b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200437V / 603(a) / 5 Credit Multiplier / 20 Line Multiline
// Cash Chameleon 100cm / NSW/ACT / D - 18/02/98
ROM_START( cashchama )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000b00
0x000000-0x05ca1b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xa32ccd1b
Calculated Checksum 0xa32ccd1b (OK)
0x05ca1c-0x1dbdd7 is the non-Checksummed range still containing data but NOT covered by Checksum
0x05ca1c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200437v.u7", 0x000000, 0x80000, CRC(a287fd5a) SHA1(7d06f679e5ff38e0989819410856361962c93e42) )
ROM_LOAD32_WORD( "0200437v.u11", 0x000002, 0x80000, CRC(1875532b) SHA1(e410524b94b1c7860c1ef81ce5e0b4bf992f12ad) )
ROM_LOAD32_WORD( "0200437v.u8", 0x100000, 0x80000, CRC(edbfc684) SHA1(8849374e5df34359d228a4b447c409b76fe36b35) )
ROM_LOAD32_WORD( "0200437v.u12", 0x100002, 0x80000, CRC(571aab82) SHA1(03895d1a08d2dd868fd594db1aaeb29b295f0d98) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0300781V / MV4067 / 5 Credit Multiplier/20 Line Multiline
// Cash Chameleon / New Zealand / A - 31/08/98
ROM_START( cashchamnz )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
// checksum code not found (uses different startup sequence)
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300781v.u7", 0x000000, 0x80000, CRC(009e109e) SHA1(b912b474a226af17bef554f4db6fade7cd2e558f) )
ROM_LOAD32_WORD( "0300781v.u11", 0x000002, 0x80000, CRC(826da4ac) SHA1(6bf852b438f5257474c265ace2826b7bd0d9b087) )
ROM_LOAD32_WORD( "0300781v.u8", 0x100000, 0x80000, CRC(f798ab06) SHA1(0f51ffd0e7abee6af0c5a29ab9ad1c8bfcd567a0) )
ROM_LOAD32_WORD( "0300781v.u12", 0x100002, 0x80000, CRC(2aeb0265) SHA1(50e526ecccfdd35f7e156e1873cf4c81fb117069) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// DHG4078 / 603(a) / 3,5,10,25,50 Credit Multiplier / 20 Line Multiline
// Cash Chameleon 100cm / Export / B - 06/12/96
// Marked as DHG4078.
// Game requires set chip version: 4.00.xx
ROM_START( cashchamu )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x09b413 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x741cd9a0
Calculated Checksum 0x741cd9a0 (OK)
0x09b414-0x1b550b is the non-Checksummed range still containing data but NOT covered by Checksum
0x09b414-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "dhg407899.u7", 0x000000, 0x80000, CRC(9944fe04) SHA1(5f68b08e3480c0c8c1a29fe40e0221e9aeb969b7) )
ROM_LOAD32_WORD( "dhg407899.u11", 0x000002, 0x80000, CRC(1f7fa88a) SHA1(6ca40c5edba758084fd4d4cc0899584fd2d72ad3) )
ROM_LOAD32_WORD( "dhg407899.u8", 0x100000, 0x80000, CRC(6630b35b) SHA1(0126be7a73460fc70c7f1527a3eb0c9a0c58618e) )
ROM_LOAD32_WORD( "dhg407899.u12", 0x100002, 0x80000, CRC(2fd087f8) SHA1(f16414abf58e1a7a8ca08380993bdeca6f9c7317) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0300467V / 607 / 10 Credit Multiplier/20 Line Multiline
// Cash Crop / Local / C - 14/07/97
ROM_START( cashcra5 )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000b80
0x000000-0x06076b is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x2c872d3e
Calculated Checksum 0x2c872d3e (OK)
0x06076c-0x1a2ecf is the non-Checksummed range still containing data but NOT covered by Checksum
0x06076c-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300467v.u7", 0x000000, 0x80000, CRC(b0ff2aae) SHA1(b05667ffe952cae7a6581398552db6e47921090e) )
ROM_LOAD32_WORD( "0300467v.u11", 0x000002, 0x80000, CRC(25a18efa) SHA1(0ee4f6cc66322397dbde53af2149f5fb35d788df) )
ROM_LOAD32_WORD( "0300467v.u8", 0x100000, 0x80000, CRC(d4e7b4ba) SHA1(147a1ed5cdcbb84466a8024ad7e0778f85374489) )
ROM_LOAD32_WORD( "0300467v.u12", 0x100002, 0x80000, CRC(570c7f8a) SHA1(7c9527e0b37970b7960c723727c3c650a48e8125) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0300447V / 607/2 / 10 Credit Multiplier/9 Line Multiline
// Cash Crop / Local / C - 29/08/97
ROM_START( cashcra5a )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
// checksum code not found due to ROMs being corrupted, all files are missing bytes consisting of 0x0D
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0300447v.u7", 0x000000, 0x7f992, BAD_DUMP CRC(421ac2af) SHA1(552e98a0d3f969d702dd0aafcb4cb8f697a56b47) )
ROM_LOAD32_WORD( "0300447v.u11", 0x000002, 0x7ffd3, BAD_DUMP CRC(36b57080) SHA1(6719df7cb0ae2535e125c965a2426efc00da29df) )
ROM_LOAD32_WORD( "0300447v.u8", 0x100000, 0x7fe3d, BAD_DUMP CRC(9cc0ea01) SHA1(92f89d3adf257eee9ffaa88c1119f0456cafba1d) )
ROM_LOAD32_WORD( "0300447v.u12", 0x100002, 0x7fe36, BAD_DUMP CRC(ef641efa) SHA1(52e54ed933352cde0f280ba2b3e9bae01c4aae7e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100787V / 630/1 / 10 Credit Multiplier / 20 Line Multiline
// The Chariot Challenge / NSW/ACT / A - 10/08/98
ROM_START( chariotc )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ba8
0x000000-0x0603fb is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xbe63efe6
Calculated Checksum 0xbe63efe6 (OK)
0x0603fc-0x17a75b is the non-Checksummed range still containing data but NOT covered by Checksum
0x0603fc-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100787v.u7", 0x000000, 0x80000, CRC(845f9913) SHA1(df6121290b30ff4a9c2d0e690cf8e7797e9a8612) )
ROM_LOAD32_WORD( "0100787v.u11", 0x000002, 0x80000, CRC(bcbf9de9) SHA1(191ce749fe0d29b2783fb78d9338a00d65104daa) )
ROM_LOAD32_WORD( "0100787v.u8", 0x100000, 0x80000, CRC(a3a74ecb) SHA1(52b3a41573a9fa1de05ce01a858e400f80e595b8) )
ROM_LOAD32_WORD( "0100787v.u12", 0x100002, 0x80000, CRC(b44cf571) SHA1(04447820e015425493cade5611b3eb2f21e48c2e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 04J00714 / 630 / 10 Credit Multiplier / 9 Line Multiline
// The Chariot Challenge / NSW/ACT / A - 10/08/98
// ROM contains unaltered NSW/ACT region string and date, but game is for the Venezuelan market
// Game is in Spanish, however audit mode is in English
ROM_START( chariotcv )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ba8
0x000000-0x07dbb7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x203ac6e8
Calculated Checksum 0x203ac6e8 (OK)
0x07dbb8-0x1b3787 is the non-Checksummed range still containing data but NOT covered by Checksum
0x07dbb8-0x1fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "04j00714.u7", 0x000000, 0x80000, CRC(2f3a1af7) SHA1(e1448116a81687cb79dd380dfbc8decf1f83e649) )
ROM_LOAD32_WORD( "04j00714.u11", 0x000002, 0x80000, CRC(ef4f49e8) SHA1(8ff21f679a55cdfebcf22c109dfd3b41773293bd) )
ROM_LOAD32_WORD( "04j00714.u8", 0x100000, 0x80000, CRC(fa24cfde) SHA1(1725c38a8a15915d8aa8e59afef9ce1d6e8d01c5) )
ROM_LOAD32_WORD( "04j00714.u12", 0x100002, 0x80000, CRC(b8d4a5ec) SHA1(097e44cdb30b9aafd7f5358c8f0cdd130ec0615e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 01J00681 / JB011 / Multi credit / Multi line
// Ckeckmate / NSW/ACT / B - 06/07/01
// Checkmate is misspelled as 'Ckeckmate' in the ROM
ROM_START( checkma5 )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000c38
0x000000-0x071847 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x0de9b6ca
Calculated Checksum 0x0de9b6ca (OK)
0x071848-0x25ff4b is the non-Checksummed range still containing data but NOT covered by Checksum
0x071848-0x2fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "01j00681.u7", 0x000000, 0x80000, CRC(059b940e) SHA1(f637508dafbd37169429c495a893addbc6d28834) )
ROM_LOAD32_WORD( "01j00681.u11", 0x000002, 0x80000, CRC(5fb7bfb3) SHA1(2ad8b3c4753d19f9e3254ef3f4059951d7a111b4) )
ROM_LOAD32_WORD( "01j00681.u8", 0x100000, 0x80000, CRC(6912cc4a) SHA1(9469a6a0d2fd39d85655a8c7bc0668752f5f11fa) )
ROM_LOAD32_WORD( "01j00681.u12", 0x100002, 0x80000, CRC(b538bcbc) SHA1(cda404f9b16e7e76a33c208f62a5ac9c5e02aac4) )
ROM_LOAD32_WORD( "01j00681.u9", 0x200000, 0x80000, CRC(53a573f0) SHA1(d51d698dcec273d157319200ad1c215e930b96ce) )
ROM_LOAD32_WORD( "01j00681.u13", 0x200002, 0x80000, CRC(ad12a718) SHA1(0c36729cb8da800668f533f65fcc870f5dfc0f6a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0100351V / 596 / 10 Credit Multiplier/9 Line Multiline
// Chicken / Local / A - 27/08/96
ROM_START( chickna5 )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000b80
0x000000-0x053fb7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x8afbaabc
Calculated Checksum 0x8afbaabc (OK)
0x053fb8-0x2fda37 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0100351v.u7", 0x000000, 0x80000, CRC(be69c21c) SHA1(8b546727b5972f33d077db0a64aa41a7fde6d417) )
ROM_LOAD32_WORD( "0100351v.u11", 0x000002, 0x80000, CRC(65423867) SHA1(992bb4f717f79233d1300d248b145f95a627cff2) )
ROM_LOAD32_WORD( "0100351v.u8", 0x100000, 0x80000, CRC(3161c16f) SHA1(8f2b14ec8ba5c9da80a226d2ce5a7e5256c8cbb4) )
ROM_LOAD32_WORD( "0100351v.u12", 0x100002, 0x80000, CRC(77b5d777) SHA1(f03afeaff08c9216e714f1e4bcc50292ba87ace4) )
ROM_LOAD32_WORD( "0100351v.u9", 0x200000, 0x80000, CRC(5506777b) SHA1(42512577056e1caefbea0e74879780c56787af13) )
ROM_LOAD32_WORD( "0100351v.u13", 0x200002, 0x80000, CRC(88a1ccae) SHA1(e242f48f99044b4fdf1bf36d8e105df09f94aa50) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 0200530V / 596 / 10 Credit Multiplier/9 Line Multiline
// Chicken / QLD Club & Hotels / C - 23/02/98
ROM_START( chickna5ql )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000ac8
0x000000-0x05f193 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0xeff4424a
Calculated Checksum 0xeff4424a (OK)
0x05f194-0x3a9a7f is the non-Checksummed range still containing data but NOT covered by Checksum
0x05f194-0x3fffff is the non-Checksummed range if the additional vectors? at the end are included
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "0200530v.u7", 0x000000, 0x80000, CRC(2d53de96) SHA1(6f2ed8f68d0474021a302d7e06ba869c0f1f7262) )
ROM_LOAD32_WORD( "0200530v.u11", 0x000002, 0x80000, CRC(ed80acab) SHA1(d7ec3a063c45180e0b32935db9b8a01bcdaaa9a7) )
ROM_LOAD32_WORD( "0200530v.u8", 0x100000, 0x80000, CRC(fbe704d3) SHA1(fe06489ba9628307f54ab60ab6909b45491116ae) )
ROM_LOAD32_WORD( "0200530v.u12", 0x100002, 0x80000, CRC(c78215c0) SHA1(52b372df4a0f78cc557a874d8d40819aed191cdd) )
ROM_LOAD32_WORD( "0200530v.u9", 0x200000, 0x80000, CRC(835903f5) SHA1(0a3bbc4e81629265d873716e9120eb95ea28b42c) )
ROM_LOAD32_WORD( "0200530v.u13", 0x200002, 0x80000, CRC(7a5c1ca3) SHA1(d56103142392234298117d6b0d9163e0d3e52a7e) )
ROM_LOAD32_WORD( "0200530v.u10", 0x300000, 0x80000, CRC(6c9399c1) SHA1(066afebc8ffcdf9e6a176e18997db242aa84269b) )
ROM_LOAD32_WORD( "0200530v.u14", 0x300002, 0x80000, CRC(e87cf6c9) SHA1(a330644658da6100d7231b1c47260dc7f2e88448) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// RHG0730-03 / 596 / 10 Credit Multiplier / 9 Line Multiline
// Chicken / Export / C - 23/02/98
// Marked as RHG0730, 92.588%
// All devices are 27c4002 instead of 27c4096.
// (the following notes are from another identical set)
// Game Eprom: RHG073003
// No set chips required
// Variation (% and NO): 92.588% 03
ROM_START( chickna5u )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0a6917 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x0d44c6b0
Calculated Checksum 0x0d44c6b0 (OK)
0x0a6918-0x35040b is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "rhg073003.u7", 0x000000, 0x80000, CRC(06558129) SHA1(be726c0d35776faf1ecd20eb0a193e68a1fb1a84) )
ROM_LOAD32_WORD( "rhg073003.u11", 0x000002, 0x80000, CRC(0eadf5d4) SHA1(b783f6e1911fc098d1b4d1d8c75862e031078e5b) )
ROM_LOAD32_WORD( "rhg073003.u8", 0x100000, 0x80000, CRC(683e96bc) SHA1(bca8e87bea9f7044fa29dc4518e2ac5b429e3313) )
ROM_LOAD32_WORD( "rhg073003.u12", 0x100002, 0x80000, CRC(8313b03b) SHA1(d2a91bae8063d89ec9a1edab6df3e6711719d2c2) )
ROM_LOAD32_WORD( "rhg073003.u9", 0x200000, 0x80000, CRC(9c08aefa) SHA1(fe3ffa8eb308ab216cc08dd2ce51113b4ef74c4a) )
ROM_LOAD32_WORD( "rhg073003.u13", 0x200002, 0x80000, CRC(69fd4f89) SHA1(4e0469caecf9293197a4a5de960eb9dcfee39ca3) )
ROM_LOAD32_WORD( "rhg073003.u10", 0x300000, 0x80000, CRC(9aae49d7) SHA1(5cf87b747ea7561766fe0ffc15967fea657b252b) )
ROM_LOAD32_WORD( "rhg073003.u14", 0x300002, 0x80000, CRC(240f7759) SHA1(1fa5ba0185b027101dae207ec5d28b07d3d73fc2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// RHG0730-99 / 596 / 10 Credit Multiplier / 9 Line Multiline
// Chicken / Export / C - 23/02/98
// Marked as RHG0730 99.
// Variation (% and NO): 87.938% 99
// No set chips required
// All devices are 27c4002 instead of 27c4096.
ROM_START( chickna5ua )
ARISTOCRAT_MK5_USA_SETCHIPS
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000d08
0x000000-0x0a6917 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x1a4ad4b2
Calculated Checksum 0x1a4ad4b2 (OK)
0x0a6918-0x35040b is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
ROM_LOAD32_WORD( "rhg073099.u7", 0x000000, 0x80000, CRC(0a006791) SHA1(b1df734e316222590d11c33c220c2f980103b327) )
ROM_LOAD32_WORD( "rhg073099.u11", 0x000002, 0x80000, CRC(5b338809) SHA1(82e485504a6d5c3ad1840d4c22ddedbeb948f8f9) )
ROM_LOAD32_WORD( "rhg073099.u8", 0x100000, 0x80000, CRC(683e96bc) SHA1(bca8e87bea9f7044fa29dc4518e2ac5b429e3313) )
ROM_LOAD32_WORD( "rhg073099.u12", 0x100002, 0x80000, CRC(8313b03b) SHA1(d2a91bae8063d89ec9a1edab6df3e6711719d2c2) )
ROM_LOAD32_WORD( "rhg073099.u9", 0x200000, 0x80000, CRC(9c08aefa) SHA1(fe3ffa8eb308ab216cc08dd2ce51113b4ef74c4a) )
ROM_LOAD32_WORD( "rhg073099.u13", 0x200002, 0x80000, CRC(69fd4f89) SHA1(4e0469caecf9293197a4a5de960eb9dcfee39ca3) )
ROM_LOAD32_WORD( "rhg073099.u10", 0x300000, 0x80000, CRC(9aae49d7) SHA1(5cf87b747ea7561766fe0ffc15967fea657b252b) )
ROM_LOAD32_WORD( "rhg073099.u14", 0x300002, 0x80000, CRC(240f7759) SHA1(1fa5ba0185b027101dae207ec5d28b07d3d73fc2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
// 01J01886 / 596/1 / 50 Credit Multiplier/9 Line Multiline
// Chicken / Local / B - 23/12/96
// ROM contains unaltered NSW/ACT "Local" region string, but game is for the Venezuelan market
// Game is in Spanish, however audit mode is in English
ROM_START( chickna5v )
ARISTOCRAT_MK5_GALS
ARISTOCRAT_MK5_EEPROM
/*
Checksum code found at 0x000b80
0x000000-0x07c3e7 is the Checksummed Range (excluding 0x000020-0x000027 where Checksum is stored)
Expected Checksum 0x9e99a201
Calculated Checksum 0x9e99a201 (OK)
0x07c3e8-0x2f5d37 is the non-Checksummed range (unusual endpoint)
*/
ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )