~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to mess/src/mame/drivers/aristmk5.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Jordi Mallach, Emmanuel Kasper
  • Date: 2011-12-19 22:56:27 UTC
  • mfrom: (0.1.2)
  • Revision ID: package-import@ubuntu.com-20111219225627-ub5oga1oys4ogqzm
Tags: 0.144-1
[ Jordi Mallach ]
* Fix syntax errors in DEP5 copyright file (lintian).
* Use a versioned copyright Format specification field.
* Update Vcs-* URLs.
* Move transitional packages to the new metapackages section, and make
  them priority extra.
* Remove references to GNU/Linux and MESS sources from copyright.
* Add build variables for s390x.
* Use .xz tarballs as it cuts 4MB for the upstream sources.
* Add nplayers.ini as a patch. Update copyright file to add CC-BY-SA-3.0.

[ Emmanuel Kasper ]
* New upstream release. Closes: #651538.
* Add Free Desktop compliant png icons of various sizes taken from
  the hydroxygen iconset
* Mess is now built from a new source package, to avoid possible source
  incompatibilities between mame and the mess overlay.
* Mame-tools are not built from the mame source package anymore, but
  from the mess source package

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 
3
 
    Aristocrat MK5 / MKV hardware
4
 
    possibly 'Acorn Archimedes on a chip' hardware
5
 
 
6
 
    Note: ARM250 mapping is not identical to plain AA
7
 
 
8
 
    BIOS ROMs are actually nowhere to be found on a regular MK5 system. They can be used to change the system configurations on a PCB board
9
 
    by swapping them with the game ROMs u7/u11 locations.
10
 
 
11
 
    TODO (MK-5 specific):
12
 
    - Fix remaining errors
13
 
    - If all tests passes, this msg is printed on the keyboard serial port:
14
 
    "System Startup Code Entered \n Gos_create could not allocate stack for the new process \n Unrecoverable error occured. System will now restart"
15
 
    Apparently it looks like some sort of protection device ...
16
 
 
17
 
    code DASMing of POST (adonis):
18
 
    - bp 0x3400224:
19
 
      checks work RAM [0x87000], if bit 0 active high then all tests are skipped (presumably for debugging), otherwise check stuff;
20
 
        - bp 0x3400230: EPROM checksum branch test
21
 
        - bp 0x3400258: DRAM Check branch test
22
 
        - bp 0x3400280: CPU Check branch test
23
 
            bp 0x340027c: checks IRQ status A and FIQ status bit 7 (force IRQ flag)
24
 
            - R0 == 0: CPU Check OK
25
 
            - R0 == 1: IRQ status A force IRQ flag check failed
26
 
            - R0 == 2: FIQ status force IRQ flag check failed
27
 
            - R0 == 3: Internal Latch check 0x3250050 == 0xf5
28
 
        - bp 0x34002a8: SRAM Check branch test (I2C)
29
 
            - basically writes to the I2C clock/data then read-backs it
30
 
        - bp 0x34002d0: 2KHz Timer branch test
31
 
            bp 0x34002cc: it does various test with GO command reads (that are undefined on plain AA) and
32
 
                          IRQA status bit 0, that's "printer busy" on original AA but here it have a completely
33
 
                          different meaning.
34
 
        - bp 0x34002f8: DRAM emulator branch tests
35
 
            bp 0x34002f4:
36
 
            - R0 == 0 "DRAM emulator found"
37
 
            - R0 == 1 "DRAM emulator found"
38
 
            - R0 == 3 "DRAM emulator not found - Error"
39
 
            - R0 == 4 "DRAM emulator found instead of DRAM - Error"
40
 
            - R0 == x "Undefined error in DRAM emulator area"
41
 
            It r/w RAM location 0 and it expects to NOT read-back value written.
42
 
 
43
 
    goldprmd: checks if a "keyboard IRQ" fires (IRQ status B bit 6), it seems a serial port with data on it,
44
 
              returns an External Video Crystal Error (bp 3400278)
45
 
 
46
 
    dmdtouch:
47
 
        bp 3400640: checks 2MByte DRAM
48
 
            - writes from 0x1000 to 0x100000, with 0x400 bytes index increment and 0xfb data increment
49
 
            - writes from 0x100000 to 0x200000, with 0x400 bytes index increment and 0xfb data increment
50
 
            - bp 3400720 checks if the aforementioned checks are ok (currently fails at the very first work RAM check at 0x1000, it returns the
51
 
              value that actually should be at 0x141000)
52
 
        bp 340064c: if R0 == 0 2MB DRAM is ok, otherwise there's an error
53
 
 
54
 
    set chip (BIOS):
55
 
        same as goldprmd (serial + ext video crystal check)
56
 
        bp 3400110: External Video Crystal test
57
 
 
58
 
*/
59
 
 
60
 
#include "emu.h"
61
 
#include "cpu/arm/arm.h"
62
 
#include "sound/dac.h"
63
 
#include "includes/archimds.h"
64
 
//#include "machine/i2cmem.h"
65
 
 
66
 
 
67
 
class aristmk5_state : public driver_device
68
 
{
69
 
public:
70
 
        aristmk5_state(const machine_config &mconfig, device_type type, const char *tag)
71
 
                : driver_device(mconfig, type, tag) { }
72
 
 
73
 
        emu_timer *m_mk5_2KHz_timer;
74
 
        UINT8 m_ext_latch;
75
 
        UINT8 m_flyback;
76
 
};
77
 
 
78
 
 
79
 
 
80
 
static WRITE32_HANDLER( mk5_ext_latch_w )
81
 
{
82
 
        aristmk5_state *state = space->machine().driver_data<aristmk5_state>();
83
 
        /* this banks "something" */
84
 
        state->m_ext_latch = data & 1;
85
 
}
86
 
 
87
 
static READ32_HANDLER( ext_timer_latch_r )
88
 
{
89
 
        aristmk5_state *state = space->machine().driver_data<aristmk5_state>();
90
 
        /* reset 2KHz timer */
91
 
        ioc_regs[IRQ_STATUS_A] &= 0xfe;
92
 
        state->m_mk5_2KHz_timer->adjust(attotime::from_hz(1953.125)); // 8MHz / 4096
93
 
 
94
 
        return 0xffffffff; //value doesn't matter apparently
95
 
}
96
 
 
97
 
/* same as plain AA but with the I2C unconnected */
98
 
static READ32_HANDLER( mk5_ioc_r )
99
 
{
100
 
        aristmk5_state *state = space->machine().driver_data<aristmk5_state>();
101
 
        UINT32 ioc_addr;
102
 
 
103
 
        ioc_addr = offset*4;
104
 
        ioc_addr >>= 16;
105
 
        ioc_addr &= 0x37;
106
 
 
107
 
        if(((ioc_addr == 0x20) || (ioc_addr == 0x30)) && (offset & 0x1f) == 0)
108
 
        {
109
 
                int vert_pos;
110
 
 
111
 
                vert_pos = space->machine().primary_screen->vpos();
112
 
                state->m_flyback = (vert_pos <= vidc_regs[VIDC_VDSR] || vert_pos >= vidc_regs[VIDC_VDER]) ? 0x80 : 0x00;
113
 
 
114
 
                //i2c_data = (i2cmem_sda_read(space->machine().device("i2cmem")) & 1);
115
 
 
116
 
                return (state->m_flyback) | (ioc_regs[CONTROL] & 0x7c) | (1<<1) | 1;
117
 
        }
118
 
 
119
 
        return archimedes_ioc_r(space,offset,mem_mask);
120
 
}
121
 
 
122
 
static WRITE32_HANDLER( mk5_ioc_w )
123
 
{
124
 
        aristmk5_state *state = space->machine().driver_data<aristmk5_state>();
125
 
        UINT32 ioc_addr;
126
 
 
127
 
        ioc_addr = offset*4;
128
 
        ioc_addr >>= 16;
129
 
        ioc_addr &= 0x37;
130
 
 
131
 
        if(!state->m_ext_latch)
132
 
        {
133
 
                if(((ioc_addr == 0x20) || (ioc_addr == 0x30)) && (offset & 0x1f) == 0)
134
 
                {
135
 
                        ioc_regs[CONTROL] = data & 0x7c;
136
 
                        return;
137
 
                }
138
 
                else
139
 
                        archimedes_ioc_w(space,offset,data,mem_mask);
140
 
        }
141
 
}
142
 
 
143
 
static READ32_HANDLER( mk5_unk_r )
144
 
{
145
 
        return 0xf5; // checked inside the CPU check, unknown meaning
146
 
}
147
 
 
148
 
static WRITE32_HANDLER( sram_banksel_w )
149
 
{
150
 
    /*
151
 
 
152
 
    The Main Board provides 32 kbytes of Static Random Access Memory (SRAM) with
153
 
    battery back-up for the electronic meters.
154
 
    The SRAM contains machine metering information, recording money in/out and
155
 
    game history etc. It is critical that this data is preserved reliably, and various
156
 
    jurisdictions require multiple backups of the data.
157
 
    Three standard low power SRAMs are fitted to the board. The data is usually
158
 
    replicated three times, so that each chip contains identical data. Each memory is
159
 
    checked against the other to verify that the stored data is correct.
160
 
    Each chip is mapped to the same address, and the chip selected depends on the bank
161
 
    select register. Access is mutually exclusive, increasing security with only one chip
162
 
    visible in the CPU address space at a time. If the CPU crashes and overwrites
163
 
    memory only one of the three devices can be corrupted. On reset the bank select
164
 
    register selects bank 0, which does not exist. The SRAMs are at banks 1,2,3.
165
 
    Each of the SRAM chips may be powered from a separate battery, further reducing
166
 
    the possibility of losing data. For the US Gaming Machine, a single battery provides
167
 
    power for all three SRAMs. This battery also powers the Real Time Clock
168
 
 
169
 
 
170
 
    CHIP SELECT & SRAM BANKING
171
 
 
172
 
    write: 03010420 40  select bank 1
173
 
    write: 3220000 01   store 0x01 @ 3220000
174
 
    write: 03010420 80  select bank 2
175
 
    write: 3220000 02   store 0x02 @ 3220000
176
 
    write: 03010420 C0  ...
177
 
    write: 3220000 03   ...
178
 
    write: 03010420 00  ...
179
 
    write: 3220000 00   ...
180
 
    write: 03010420 40  select the first SRAM chip
181
 
    read:  3220000 01   read the value 0x1 back hopefully
182
 
    write: 03010420 80  ...
183
 
    read:  3220000 02   ...
184
 
    write: 03010420 C0  ...
185
 
    read:  3220000 03   ...
186
 
    write: 03010420 00  select bank 0
187
 
    */
188
 
 
189
 
    memory_set_bank(space->machine(),"sram_bank", (data & 0xc0) >> 6);
190
 
}
191
 
 
192
 
static ADDRESS_MAP_START( aristmk5_map, AS_PROGRAM, 32 )
193
 
        AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w)
194
 
        AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_BASE(&archimedes_memc_physmem) /* physical RAM - 16 MB for now, should be 512k for the A310 */
195
 
 
196
 
        /* MK-5 overrides */
197
 
        AM_RANGE(0x03010420, 0x03010423) AM_WRITE(sram_banksel_w) // SRAM bank select write
198
 
 
199
 
//  AM_RANGE(0x0301049c, 0x0301051f) AM_DEVREADWRITE("eeprom", eeprom_r, eeprom_w) // eeprom ???
200
 
 
201
 
        AM_RANGE(0x03010810, 0x03010813) AM_READNOP //MK-5 specific, watchdog
202
 
//  System Startup Code Enabled protection appears to be located at 0x3010400 - 0x30104ff
203
 
        AM_RANGE(0x03220000, 0x03227fff) AM_RAMBANK("sram_bank") //AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3
204
 
 
205
 
        AM_RANGE(0x03250048, 0x0325004b) AM_WRITE(mk5_ext_latch_w)
206
 
        AM_RANGE(0x03250050, 0x03250053) AM_READ(mk5_unk_r)
207
 
        AM_RANGE(0x03250058, 0x0325005b) AM_READ(ext_timer_latch_r)
208
 
 
209
 
        AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE(mk5_ioc_r, mk5_ioc_w)
210
 
        AM_RANGE(0x03320000, 0x03327fff) AM_RAMBANK("sram_bank") // AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3 NZ
211
 
        AM_RANGE(0x03400000, 0x035fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE(archimedes_vidc_w)
212
 
        AM_RANGE(0x03600000, 0x037fffff) AM_READWRITE(archimedes_memc_r, archimedes_memc_w)
213
 
        AM_RANGE(0x03800000, 0x039fffff) AM_WRITE(archimedes_memc_page_w)
214
 
ADDRESS_MAP_END
215
 
 
216
 
 
217
 
static INPUT_PORTS_START( aristmk5 )
218
 
        /* This simulates the ROM swap */
219
 
        PORT_START("ROM_LOAD")
220
 
        PORT_CONFNAME( 0x03, 0x00, "System Mode" )
221
 
        PORT_CONFSETTING(    0x00, "Set Chip v4.04 Mode" )
222
 
        PORT_CONFSETTING(    0x01, "Set Chip v4.4 Mode" )
223
 
        PORT_CONFSETTING(    0x02, "Clear Chip Mode" )
224
 
        PORT_CONFSETTING(    0x03, "Game Mode" )
225
 
INPUT_PORTS_END
226
 
 
227
 
static DRIVER_INIT( aristmk5 )
228
 
{
229
 
        UINT8 *SRAM = machine.region("sram")->base();
230
 
        archimedes_driver_init(machine);
231
 
 
232
 
        memory_configure_bank(machine, "sram_bank", 0, 4, &SRAM[0], 0x8000);
233
 
}
234
 
 
235
 
static TIMER_CALLBACK( mk5_2KHz_callback )
236
 
{
237
 
        aristmk5_state *state = machine.driver_data<aristmk5_state>();
238
 
        ioc_regs[IRQ_STATUS_A] |= 1;
239
 
 
240
 
        state->m_mk5_2KHz_timer->adjust(attotime::never);
241
 
}
242
 
 
243
 
static MACHINE_START( aristmk5 )
244
 
{
245
 
        aristmk5_state *state = machine.driver_data<aristmk5_state>();
246
 
        archimedes_init(machine);
247
 
 
248
 
        // reset the DAC to centerline
249
 
        //dac_signed_data_w(machine.device("dac"), 0x80);
250
 
 
251
 
        state->m_mk5_2KHz_timer = machine.scheduler().timer_alloc(FUNC(mk5_2KHz_callback));
252
 
}
253
 
 
254
 
static MACHINE_RESET( aristmk5 )
255
 
{
256
 
        aristmk5_state *state = machine.driver_data<aristmk5_state>();
257
 
        archimedes_reset(machine);
258
 
        state->m_mk5_2KHz_timer->adjust(attotime::from_hz(1953.125)); // 8MHz / 4096
259
 
 
260
 
        ioc_regs[IRQ_STATUS_B] |= 0x40; //hack, set keyboard irq empty to be ON
261
 
 
262
 
        /* load the roms according to what the operator wants */
263
 
        {
264
 
                UINT8 *ROM = machine.region("maincpu")->base();
265
 
                UINT8 *PRG;// = machine.region("prg_code")->base();
266
 
                int i;
267
 
                UINT8 op_mode;
268
 
                static const char *const rom_region[] = { "set_chip_4.04", "set_chip_4.4", "clear_chip", "game_prg" };
269
 
 
270
 
                op_mode = input_port_read(machine, "ROM_LOAD");
271
 
 
272
 
                PRG = machine.region(rom_region[op_mode & 3])->base();
273
 
 
274
 
                if(PRG!=NULL)
275
 
 
276
 
                for(i=0;i<0x400000;i++)
277
 
                        ROM[i] = PRG[i];
278
 
        }
279
 
}
280
 
 
281
 
#if 0
282
 
#define NVRAM_SIZE 256
283
 
#define NVRAM_PAGE_SIZE 0       /* max size of one write request */
284
 
 
285
 
static const i2cmem_interface i2cmem_interface =
286
 
{
287
 
        I2CMEM_SLAVE_ADDRESS, NVRAM_PAGE_SIZE, NVRAM_SIZE
288
 
};
289
 
#endif
290
 
 
291
 
static MACHINE_CONFIG_START( aristmk5, aristmk5_state )
292
 
        MCFG_CPU_ADD("maincpu", ARM, 12000000)
293
 
        MCFG_CPU_PROGRAM_MAP(aristmk5_map)
294
 
 
295
 
        MCFG_MACHINE_START( aristmk5 )
296
 
        MCFG_MACHINE_RESET( aristmk5 )
297
 
 
298
 
//  MCFG_I2CMEM_ADD("i2cmem",i2cmem_interface)
299
 
 
300
 
        MCFG_SCREEN_ADD("screen", RASTER)
301
 
        MCFG_SCREEN_REFRESH_RATE(60)
302
 
        MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
303
 
        MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
304
 
        MCFG_SCREEN_SIZE(640, 400)
305
 
        MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1)
306
 
 
307
 
        MCFG_PALETTE_LENGTH(0x200)
308
 
 
309
 
        MCFG_VIDEO_START(archimds_vidc)
310
 
        MCFG_SCREEN_UPDATE(archimds_vidc)
311
 
 
312
 
        MCFG_SPEAKER_STANDARD_MONO("mono")
313
 
        MCFG_SOUND_ADD("dac0", DAC, 0)
314
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
315
 
 
316
 
        MCFG_SOUND_ADD("dac1", DAC, 0)
317
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
318
 
 
319
 
        MCFG_SOUND_ADD("dac2", DAC, 0)
320
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
321
 
 
322
 
        MCFG_SOUND_ADD("dac3", DAC, 0)
323
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
324
 
 
325
 
        MCFG_SOUND_ADD("dac4", DAC, 0)
326
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
327
 
 
328
 
        MCFG_SOUND_ADD("dac5", DAC, 0)
329
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
330
 
 
331
 
        MCFG_SOUND_ADD("dac6", DAC, 0)
332
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
333
 
 
334
 
        MCFG_SOUND_ADD("dac7", DAC, 0)
335
 
        MCFG_SOUND_ROUTE(0, "mono", 0.10)
336
 
MACHINE_CONFIG_END
337
 
 
338
 
#define ARISTOCRAT_MK5_BIOS \
339
 
        ROM_REGION( 0x400000, "set_chip_4.04", ROMREGION_ERASEFF ) \
340
 
        /* setchip v4.04.08 4meg */ \
341
 
        ROM_LOAD32_WORD( "setchip v4.04.08.u7",  0x000000, 0x80000, CRC(e8e8dc75) SHA1(201fe95256459ce34fdb6f7498135ab5016d07f3) ) \
342
 
        ROM_LOAD32_WORD( "setchip v4.04.08.u11", 0x000002, 0x80000, CRC(ff7a9035) SHA1(4352c4336e61947c555fdc80c61f944076f64b64) ) \
343
 
        ROM_REGION( 0x400000, "set_chip_4.4", ROMREGION_ERASEFF ) \
344
 
        /* setchip v4.4 4meg 42pin */ \
345
 
        ROM_LOAD32_WORD( "setchip v4.4.u7",  0x000000, 0x80000, CRC(2453137e) SHA1(b59998e75ae3924da16faf47b9cfe9afd60d810c) ) \
346
 
        ROM_LOAD32_WORD( "setchip v4.4.u11", 0x000002, 0x80000, CRC(82dfa12a) SHA1(86fd0f0ad8d5d1bc503392a40bbcdadb055b2765) ) \
347
 
        ROM_REGION( 0x400000, "clear_chip", ROMREGION_ERASEFF ) \
348
 
        /* clear chip */ \
349
 
        ROM_LOAD32_WORD( "clear.u7",  0x000000, 0x80000, CRC(5a254b22) SHA1(8444f237b392df2a3cb42ea349e7af32f47dd544) ) \
350
 
        ROM_LOAD32_WORD( "clear.u11", 0x000002, 0x80000, CRC(def36617) SHA1(c7ba5b08e884a8fb36c9fb51c08e243e32c81f89) ) \
351
 
 
352
 
ROM_START( aristmk5 )
353
 
        ARISTOCRAT_MK5_BIOS
354
 
 
355
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
356
 
 
357
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
358
 
 
359
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
360
 
 
361
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
362
 
ROM_END
363
 
 
364
 
ROM_START( reelrock )
365
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
366
 
        ROM_LOAD32_WORD( "0100779v.u7",  0x000000, 0x80000, CRC(b60af34f) SHA1(1143380b765db234b3871c0fe04736472fde7de4) )
367
 
        ROM_LOAD32_WORD( "0100779v.u11", 0x000002, 0x80000, CRC(57e341d0) SHA1(9b0d50763bb74ca5fe404c9cd526633721cf6677) )
368
 
        ROM_LOAD32_WORD( "0100779v.u8",  0x100000, 0x80000, CRC(57eec667) SHA1(5f3888d75f48b6148f451d7ebb7f99e1a0939f3c) )
369
 
        ROM_LOAD32_WORD( "0100779v.u12", 0x100002, 0x80000, CRC(4ac20679) SHA1(0ac732ffe6a33806e4a06e87ec875a3e1314e06b) )
370
 
 
371
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
372
 
 
373
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
374
 
 
375
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
376
 
ROM_END
377
 
 
378
 
ROM_START( indiandr )
379
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
380
 
        ROM_LOAD32_WORD( "0100845v.u7",  0x000000, 0x80000, CRC(0c924a3e) SHA1(499b4ae601e53173e3ba5f400a40e5ae7bbaa043) )
381
 
        ROM_LOAD32_WORD( "0100845v.u11", 0x000002, 0x80000, CRC(e371dc0f) SHA1(a01ab7fb63a19c144f2c465ecdfc042695124bdf) )
382
 
        ROM_LOAD32_WORD( "0100845v.u8",  0x100000, 0x80000, CRC(1c6bfb47) SHA1(7f751cb499a6185a0ab64eeec511583ceeee6ee8) )
383
 
        ROM_LOAD32_WORD( "0100845v.u12", 0x100002, 0x80000, CRC(4bbe67f6) SHA1(928f88387da66697f1de54f086531f600f80a15e) )
384
 
 
385
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
386
 
 
387
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
388
 
 
389
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
390
 
ROM_END
391
 
 
392
 
ROM_START( dolphntr )
393
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
394
 
        ROM_LOAD32_WORD( "0200424v.u7",  0x000000, 0x80000, CRC(5dd88306) SHA1(ee8ec7d123d057e8df9be0e8dadecea7dab7aafd) )
395
 
        ROM_LOAD32_WORD( "0200424v.u11", 0x000002, 0x80000, CRC(bcb732ea) SHA1(838300914846c6e740780e5a24b9db7304a8a88d) )
396
 
 
397
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
398
 
 
399
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
400
 
 
401
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
402
 
ROM_END
403
 
 
404
 
ROM_START( dolphtra )
405
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
406
 
        ROM_LOAD32_WORD( "0100424v.u7",  0x000000, 0x80000, CRC(657faef7) SHA1(09e1f9d461e855c10cf8b825ef83dd3e7db65b43) )
407
 
        ROM_LOAD32_WORD( "0100424v.u11", 0x000002, 0x80000, CRC(65aa46ec) SHA1(3ad4270efbc2e947097d94a3258a544d79a1d599) )
408
 
        ROM_LOAD32_WORD( "0100424v.u8",  0x100000, 0x80000, CRC(e77868ad) SHA1(3345da120075bc0da47bac0a4840790693382620) )
409
 
        ROM_LOAD32_WORD( "0100424v.u12", 0x100002, 0x80000, CRC(6abd9309) SHA1(c405a13f5bfe447c1ab20d92e140e4fb145920d4) )
410
 
 
411
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
412
 
 
413
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
414
 
 
415
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
416
 
ROM_END
417
 
 
418
 
ROM_START( qotn )
419
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
420
 
        ROM_LOAD32_WORD( "0200439v.u7",  0x000000, 0x80000, CRC(d476a893) SHA1(186d6fb1830c33976f2d3c96e4f045ece885dc63) )
421
 
        ROM_LOAD32_WORD( "0200439v.u11", 0x000002, 0x80000, CRC(8b0d7205) SHA1(ffa03f1c9332a1a7443eb91b0ded56e7cd9e3cee) )
422
 
        ROM_LOAD32_WORD( "0200439v.u8",  0x100000, 0x80000, CRC(9b996ef1) SHA1(72489e9a0ee5c34f7cad3d121bcd08e09ef72360) )
423
 
        ROM_LOAD32_WORD( "0200439v.u12", 0x100002, 0x80000, CRC(2a0f7feb) SHA1(27c89dadf759e6c892121650758c44ec50990cb6) )
424
 
 
425
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
426
 
 
427
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
428
 
 
429
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
430
 
ROM_END
431
 
 
432
 
ROM_START( swthrt2v )
433
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
434
 
        ROM_LOAD32_WORD( "01j01986.u7",  0x000000, 0x80000, CRC(f51b2faa) SHA1(dbcfdbee92af5f89a8a2611bbc687ee0cc907642) )
435
 
        ROM_LOAD32_WORD( "01j01986.u11", 0x000002, 0x80000, CRC(bd7ead91) SHA1(9f775428a4aa0b0a8ee17aed9be620edc2020c5e) )
436
 
 
437
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
438
 
 
439
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
440
 
 
441
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
442
 
ROM_END
443
 
 
444
 
ROM_START( enchfrst )
445
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
446
 
        ROM_LOAD32_WORD( "0400122v.u7",  0x000000, 0x80000, CRC(b5829b27) SHA1(f6f84c8dc524dcee95e37b93ead9090903bdca4f) )
447
 
        ROM_LOAD32_WORD( "0400122v.u11", 0x000002, 0x80000, CRC(7a97adc8) SHA1(b52f7fdc7edf9ad92351154c01b8003c0576ed94) )
448
 
 
449
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
450
 
 
451
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
452
 
 
453
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
454
 
ROM_END
455
 
 
456
 
ROM_START( margmgc )
457
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
458
 
        ROM_LOAD32_WORD( "01j00101.u7",  0x000000, 0x80000, CRC(eee7ebaf) SHA1(bad0c08578877f84325c07d51c6ed76c40b70720) )
459
 
        ROM_LOAD32_WORD( "01j00101.u11", 0x000002, 0x80000, CRC(4901a166) SHA1(8afe6f08b4ac5c17744dff73939c4bc93124fdf1) )
460
 
        ROM_LOAD32_WORD( "01j00101.u8",  0x100000, 0x80000, CRC(b0d78efe) SHA1(bc8b345290f4d31c6553f1e2700bc8324b4eeeac) )
461
 
        ROM_LOAD32_WORD( "01j00101.u12", 0x100002, 0x80000, CRC(90ff59a8) SHA1(c9e342db2b5e8c3f45efa8496bc369385046e920) )
462
 
        ROM_LOAD32_WORD( "01j00101.u9",  0x200000, 0x80000, CRC(1f0ca910) SHA1(be7a2f395eae09a29faf99ba34551fbc38f20fdb) )
463
 
        ROM_LOAD32_WORD( "01j00101.u13", 0x200002, 0x80000, CRC(3f702945) SHA1(a6c9a848d059c1e564fdc5a65bf8c9600853edfa) )
464
 
 
465
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
466
 
 
467
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
468
 
 
469
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
470
 
ROM_END
471
 
 
472
 
ROM_START( adonis )
473
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
474
 
        ROM_LOAD32_WORD( "0200751v.u7",  0x000000, 0x80000, CRC(ab386ab0) SHA1(56c5baea4272866a9fe18bdc371a49f155251f86) )
475
 
        ROM_LOAD32_WORD( "0200751v.u11", 0x000002, 0x80000, CRC(ce8c8449) SHA1(9894f0286f27147dcc437e4406870fe695a6f61a) )
476
 
        ROM_LOAD32_WORD( "0200751v.u8",  0x100000, 0x80000, CRC(99097a82) SHA1(a08214ab4781b06b46fc3be5c48288e373230ef4) )
477
 
        ROM_LOAD32_WORD( "0200751v.u12", 0x100002, 0x80000, CRC(443a7b6d) SHA1(c19a1c50fb8774826a1e12adacba8bbfce320891) )
478
 
 
479
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
480
 
 
481
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
482
 
 
483
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
484
 
ROM_END
485
 
 
486
 
ROM_START( wtiger )
487
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
488
 
        ROM_LOAD32_WORD( "0200954v.u7",  0x000000, 0x80000, CRC(752e54c5) SHA1(9317544a7cf2d9bf29347d31fe72331fc3d018ef) )
489
 
        ROM_LOAD32_WORD( "0200954v.u11", 0x000002, 0x80000, CRC(38e888b1) SHA1(acc857eb2be19140bbb58d70583e08f24807b9f2) )
490
 
 
491
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
492
 
 
493
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
494
 
 
495
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
496
 
ROM_END
497
 
 
498
 
/****************** Touchscreen games and New Zealand games ******************/
499
 
 
500
 
ROM_START( dmdtouch )
501
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
502
 
        ROM_LOAD32_WORD( "0400433v.u7",  0x000000, 0x80000, CRC(71b19365) SHA1(5a8ba1806af544d33e9acbcbbc0555805b4074e6) )
503
 
        ROM_LOAD32_WORD( "0400433v.u11", 0x000002, 0x80000, CRC(3d836342) SHA1(b015a4ba998b39ed86cdb6247c9c7f1365641b59) )
504
 
        ROM_LOAD32_WORD( "0400433v.u8",  0x100000, 0x80000, CRC(971bbf63) SHA1(082f81115209c7089c76fb207248da3c347a080b) )
505
 
        ROM_LOAD32_WORD( "0400433v.u12", 0x100002, 0x80000, CRC(9e0d08e2) SHA1(38b10f7c37f1cefe9271549073dc0a4fed409aec) )
506
 
 
507
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
508
 
 
509
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
510
 
 
511
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASEFF )
512
 
ROM_END
513
 
 
514
 
ROM_START( geishanz )
515
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
516
 
        ROM_LOAD32_WORD( "0101408v.u7",  0x000000, 0x80000, CRC(ebdde248) SHA1(83f4f4deb5c6f5b33ae066d50e043a24cb0cbfe0) )
517
 
        ROM_LOAD32_WORD( "0101408v.u11", 0x000002, 0x80000, CRC(2f9e7cd4) SHA1(e9498879c9ca66740856c00fda0416f5d9f7c823) )
518
 
        ROM_LOAD32_WORD( "0101408v.u8",  0x100000, 0x80000, CRC(87e41b1b) SHA1(029687aeaed701e0f4b8da9d1d60a5a0a9445518) )
519
 
        ROM_LOAD32_WORD( "0101408v.u12", 0x100002, 0x80000, CRC(255f2368) SHA1(eb955452e1ed8d9d4f30f3372d7321f01d3654d3) )
520
 
        ROM_LOAD32_WORD( "0101408v.u9",  0x200000, 0x80000, CRC(5f161953) SHA1(d07353d006811813b94cb022857f49c4906fd87b) )
521
 
        ROM_LOAD32_WORD( "0101408v.u13", 0x200002, 0x80000, CRC(5ef6323e) SHA1(82a720d814ca06c6d286c59bbf325d9a1034375a) )
522
 
 
523
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
524
 
 
525
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
526
 
 
527
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
528
 
ROM_END
529
 
 
530
 
/*********************** US games (requires set chips) ***********************/
531
 
 
532
 
ROM_START( goldprmd )
533
 
        ARISTOCRAT_MK5_BIOS
534
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
535
 
        ROM_LOAD32_WORD( "goldprmd.u7",  0x000000, 0x80000, CRC(2fbed80c) SHA1(fb0d97cb2be96da37c487fc3aef06c6120efdb46) )
536
 
        ROM_LOAD32_WORD( "goldprmd.u11", 0x000002, 0x80000, CRC(ec9c183c) SHA1(e405082ee779c4fee103fb7384469c9d6afbc95b) )
537
 
        ROM_LOAD32_WORD( "goldprmd.u8",  0x100000, 0x80000, CRC(3cd7d8e5) SHA1(ae83a7c335564c398330d43295997b8ca547c92d) )
538
 
        ROM_LOAD32_WORD( "goldprmd.u12", 0x100002, 0x80000, CRC(8bbf45d0) SHA1(f58f28e7cc4ac225197959566d81973b5aa0e836) )
539
 
 
540
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
541
 
 
542
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
543
 
 
544
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
545
 
ROM_END
546
 
 
547
 
ROM_START( magicmsk )
548
 
        ARISTOCRAT_MK5_BIOS
549
 
        ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
550
 
        ROM_LOAD32_WORD( "magicmsk.u7",  0x000000, 0x80000, CRC(17317eb9) SHA1(3ddb8d61f23461c3194af534928164550208bbee) )
551
 
        ROM_LOAD32_WORD( "magicmsk.u11", 0x000002, 0x80000, CRC(42af4b3f) SHA1(5d88951f77782ff3861b6550ace076662a0b45aa) )
552
 
        ROM_LOAD32_WORD( "magicmsk.u8",  0x100000, 0x80000, CRC(23aefb5a) SHA1(ba4488754794f75f53b9c81b74b6ccd992c64acc) )
553
 
        ROM_LOAD32_WORD( "magicmsk.u12", 0x100002, 0x80000, CRC(6829a7bf) SHA1(97eed83763d0ec5e753d6ad194e906b1307c4940) )
554
 
 
555
 
        ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
556
 
 
557
 
        ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
558
 
 
559
 
        ROM_REGION( 0x8000*4, "sram", ROMREGION_ERASE00 )
560
 
ROM_END
561
 
 
562
 
GAME( 1995, aristmk5, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "MKV Set/Clear Chips (USA)", GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
563
 
 
564
 
// Dates listed below are for the combination (reel layout), not release dates
565
 
GAME( 1995, enchfrst, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Enchanted Forest (0400122V, Local)",                   GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 570/3,  E - 23/06/95
566
 
GAME( 1995, swthrt2v, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)",                GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 577/1,  C - 07/09/95
567
 
GAME( 1996, dolphntr, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)",                 GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 602/1,  B - 06/12/96
568
 
GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)",                 GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 602/1,  B - 06/12/96
569
 
GAME( 1997, goldprmd, aristmk5, aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Golden Pyramids (MV4091, USA)",                        GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // MV4091, B - 13/05/97
570
 
GAME( 1997, qotn,     0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)",                GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 602/4,  B - 13/05/97
571
 
GAME( 1997, dmdtouch, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Diamond Touch (0400433V, Local)",                      GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 604,    E - 30/06/97
572
 
GAME( 1998, adonis,   0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Adonis (0200751V, NSW/ACT)",                           GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 602/9,  A - 25/05/98
573
 
GAME( 1998, reelrock, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Reelin-n-Rockin (0100779V, Local)",                    GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 628,    A - 13/07/98
574
 
GAME( 1998, indiandr, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Indian Dreaming (0100845V, Local)",                    GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 628/1,  B - 15/12/98
575
 
GAME( 1999, wtiger,   0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)",              GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // 638/1,  B - 08/07/99
576
 
GAME( 2000, magicmsk, aristmk5, aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Magic Mask (MV4115, Export)",                          GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // MV4115, A - 09/05/2000
577
 
GAME( 2000, margmgc,  0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)",                  GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // JB005,  A - 07/07/2000
578
 
GAME( 2001, geishanz, 0,        aristmk5, aristmk5, aristmk5, ROT0,  "Aristocrat", "Geisha (0101408V, New Zealand)",                       GAME_NOT_WORKING|GAME_IMPERFECT_SOUND )      // MV4127, A - 05/03/01