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

« back to all changes in this revision

Viewing changes to src/mame/drivers/seta2.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
118
118
 
119
119
***************************************************************************/
120
120
 
121
 
static WRITE16_HANDLER( seta2_sound_bank_w )
 
121
WRITE16_MEMBER(seta2_state::seta2_sound_bank_w)
122
122
{
123
123
        if (ACCESSING_BITS_0_7)
124
124
        {
125
 
                UINT8 *ROM = space->machine().region( "x1snd" )->base();
126
 
                int banks = (space->machine().region( "x1snd" )->bytes() - 0x100000) / 0x20000;
 
125
                UINT8 *ROM = memregion( "x1snd" )->base();
 
126
                int banks = (machine().root_device().memregion( "x1snd" )->bytes() - 0x100000) / 0x20000;
127
127
                if (data >= banks)
128
128
                {
129
 
                        logerror("CPU #0 PC %06X: invalid sound bank %04X\n",cpu_get_pc(&space->device()),data);
 
129
                        logerror("CPU #0 PC %06X: invalid sound bank %04X\n",cpu_get_pc(&space.device()),data);
130
130
                        data %= banks;
131
131
                }
132
132
                memcpy(ROM + offset * 0x20000, ROM + 0x100000 + data * 0x20000, 0x20000);
138
138
                                Guardians
139
139
***************************************************************************/
140
140
 
141
 
static WRITE16_HANDLER( grdians_lockout_w )
 
141
WRITE16_MEMBER(seta2_state::grdians_lockout_w)
142
142
{
143
143
        if (ACCESSING_BITS_0_7)
144
144
        {
145
145
                // initially 0, then either $25 (coin 1) or $2a (coin 2)
146
 
                coin_counter_w(space->machine(), 0,data & 0x01);        // or 0x04
147
 
                coin_counter_w(space->machine(), 1,data & 0x02);        // or 0x08
 
146
                coin_counter_w(machine(), 0,data & 0x01);       // or 0x04
 
147
                coin_counter_w(machine(), 1,data & 0x02);       // or 0x08
148
148
        }
149
149
//  popmessage("%04X", data & 0xffff);
150
150
}
151
151
 
152
 
static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16 )
 
152
static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16, seta2_state )
153
153
        AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                             // ROM
154
154
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
155
155
        AM_RANGE(0x304000, 0x30ffff) AM_RAM                                                             // ? seems tile data
160
160
        AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")                             // Coins
161
161
        AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r)                // Watchdog
162
162
        AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
163
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
164
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
165
 
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
 
163
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
164
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
165
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
166
166
        AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                                                             // cleared
167
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)       // Video Registers
 
167
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")  // Video Registers
168
168
        AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
169
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)     // TMP68301 Registers
 
169
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)      // TMP68301 Registers
170
170
ADDRESS_MAP_END
171
171
 
172
172
/***************************************************************************
187
187
        eeprom->set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE);
188
188
}
189
189
 
190
 
static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16 )
 
190
static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state )
191
191
        AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                             // ROM
192
192
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
193
193
        AM_RANGE(0x500000, 0x57ffff) AM_ROM                                                             // ROM
200
200
        AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1")                                // P2
201
201
        AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w)
202
202
        AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
203
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
204
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)     // Sprites
205
 
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
 
203
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
204
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")       // Sprites
 
205
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
206
206
        AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                                                             // cleared
207
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)       // Video Registers
 
207
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")  // Video Registers
208
208
        AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
209
 
        AM_RANGE(0xfffd0a, 0xfffd0b) AM_DEVREADWRITE("eeprom", gundamex_eeprom_r,gundamex_eeprom_w)     // parallel data register
210
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)     // TMP68301 Registers
 
209
        AM_RANGE(0xfffd0a, 0xfffd0b) AM_DEVREADWRITE_LEGACY("eeprom", gundamex_eeprom_r,gundamex_eeprom_w)      // parallel data register
 
210
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)      // TMP68301 Registers
211
211
ADDRESS_MAP_END
212
212
 
213
213
 
215
215
                      Wakakusamonogatari Mahjong Yonshimai
216
216
***************************************************************************/
217
217
 
218
 
static READ16_HANDLER( mj4simai_p1_r )
219
 
{
220
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
221
 
 
222
 
        switch (state->m_keyboard_row)
223
 
        {
224
 
                case 0x01: return input_port_read(space->machine(), "P1_KEY0");
225
 
                case 0x02: return input_port_read(space->machine(), "P1_KEY1");
226
 
                case 0x04: return input_port_read(space->machine(), "P1_KEY2");
227
 
                case 0x08: return input_port_read(space->machine(), "P1_KEY3");
228
 
                case 0x10: return input_port_read(space->machine(), "P1_KEY4");
229
 
                default:   logerror("p1_r with keyboard_row = %02x\n", state->m_keyboard_row); return 0xffff;
230
 
        }
231
 
}
232
 
 
233
 
static READ16_HANDLER( mj4simai_p2_r )
234
 
{
235
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
236
 
 
237
 
        switch (state->m_keyboard_row)
238
 
        {
239
 
                case 0x01: return input_port_read(space->machine(), "P2_KEY0");
240
 
                case 0x02: return input_port_read(space->machine(), "P2_KEY1");
241
 
                case 0x04: return input_port_read(space->machine(), "P2_KEY2");
242
 
                case 0x08: return input_port_read(space->machine(), "P2_KEY3");
243
 
                case 0x10: return input_port_read(space->machine(), "P2_KEY4");
244
 
                default:   logerror("p2_r with keyboard_row = %02x\n", state->m_keyboard_row); return 0xffff;
245
 
        }
246
 
}
247
 
 
248
 
static WRITE16_HANDLER( mj4simai_keyboard_w )
249
 
{
250
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
 
218
READ16_MEMBER(seta2_state::mj4simai_p1_r)
 
219
{
 
220
 
 
221
        switch (m_keyboard_row)
 
222
        {
 
223
                case 0x01: return ioport("P1_KEY0")->read();
 
224
                case 0x02: return ioport("P1_KEY1")->read();
 
225
                case 0x04: return ioport("P1_KEY2")->read();
 
226
                case 0x08: return ioport("P1_KEY3")->read();
 
227
                case 0x10: return ioport("P1_KEY4")->read();
 
228
                default:   logerror("p1_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
 
229
        }
 
230
}
 
231
 
 
232
READ16_MEMBER(seta2_state::mj4simai_p2_r)
 
233
{
 
234
 
 
235
        switch (m_keyboard_row)
 
236
        {
 
237
                case 0x01: return ioport("P2_KEY0")->read();
 
238
                case 0x02: return ioport("P2_KEY1")->read();
 
239
                case 0x04: return ioport("P2_KEY2")->read();
 
240
                case 0x08: return ioport("P2_KEY3")->read();
 
241
                case 0x10: return ioport("P2_KEY4")->read();
 
242
                default:   logerror("p2_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
 
243
        }
 
244
}
 
245
 
 
246
WRITE16_MEMBER(seta2_state::mj4simai_keyboard_w)
 
247
{
251
248
 
252
249
        if (ACCESSING_BITS_0_7)
253
 
                state->m_keyboard_row = data & 0xff;
 
250
                m_keyboard_row = data & 0xff;
254
251
}
255
252
 
256
 
static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16 )
 
253
static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16, seta2_state )
257
254
        AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                             // ROM
258
255
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
259
256
        AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r)                             // P1
265
262
        AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")                               // DSW 1
266
263
        AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")                               // DSW 2
267
264
        AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
268
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
269
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)     // Sprites
270
 
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
271
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)       // Video Registers
272
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)     // TMP68301 Registers
 
265
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
266
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")       // Sprites
 
267
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
268
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")  // Video Registers
 
269
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)      // TMP68301 Registers
273
270
ADDRESS_MAP_END
274
271
 
275
272
 
277
274
                            Kosodate Quiz My Angel
278
275
***************************************************************************/
279
276
 
280
 
static ADDRESS_MAP_START( myangel_map, AS_PROGRAM, 16 )
 
277
static ADDRESS_MAP_START( myangel_map, AS_PROGRAM, 16, seta2_state )
281
278
        AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                             // ROM
282
279
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
283
280
        AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")                                 // P1
288
285
        AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1")                               // DSW 1
289
286
        AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2")                               // DSW 2
290
287
        AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
291
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
292
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
293
 
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
294
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)                               // Video Registers
295
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)             // TMP68301 Registers
 
288
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
289
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
290
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
291
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")                          // Video Registers
 
292
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)              // TMP68301 Registers
296
293
ADDRESS_MAP_END
297
294
 
298
295
 
300
297
                            Kosodate Quiz My Angel 2
301
298
***************************************************************************/
302
299
 
303
 
static ADDRESS_MAP_START( myangel2_map, AS_PROGRAM, 16 )
 
300
static ADDRESS_MAP_START( myangel2_map, AS_PROGRAM, 16, seta2_state )
304
301
        AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                             // ROM
305
302
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
306
303
        AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1")                                 // P1
311
308
        AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")                               // DSW 1
312
309
        AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")                               // DSW 2
313
310
        AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
314
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
315
 
        AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
316
 
        AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
317
 
        AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)                       // Video Registers
318
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)             // TMP68301 Registers
 
311
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
312
        AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
313
        AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
314
        AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")                  // Video Registers
 
315
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)              // TMP68301 Registers
319
316
ADDRESS_MAP_END
320
317
 
321
318
 
325
322
 
326
323
/*  The game checks for a specific value read from the ROM region.
327
324
    The offset to use is stored in RAM at address 0x20BA16 */
328
 
static READ16_HANDLER( pzlbowl_protection_r )
329
 
{
330
 
        UINT32 address = (space->read_word(0x20ba16) << 16) | space->read_word(0x20ba18);
331
 
        return space->machine().region("maincpu")->base()[address - 2];
332
 
}
333
 
 
334
 
static READ16_HANDLER( pzlbowl_coins_r )
335
 
{
336
 
        return input_port_read(space->machine(), "SYSTEM") | (space->machine().rand() & 0x80 );
337
 
}
338
 
 
339
 
static WRITE16_HANDLER( pzlbowl_coin_counter_w )
 
325
READ16_MEMBER(seta2_state::pzlbowl_protection_r)
 
326
{
 
327
        UINT32 address = (space.read_word(0x20ba16) << 16) | space.read_word(0x20ba18);
 
328
        return memregion("maincpu")->base()[address - 2];
 
329
}
 
330
 
 
331
READ16_MEMBER(seta2_state::pzlbowl_coins_r)
 
332
{
 
333
        return ioport("SYSTEM")->read() | (machine().rand() & 0x80 );
 
334
}
 
335
 
 
336
WRITE16_MEMBER(seta2_state::pzlbowl_coin_counter_w)
340
337
{
341
338
        if (ACCESSING_BITS_0_7)
342
339
        {
343
 
                coin_counter_w(space->machine(), 0,data & 0x10);
344
 
                coin_counter_w(space->machine(), 1,data & 0x20);
 
340
                coin_counter_w(machine(), 0,data & 0x10);
 
341
                coin_counter_w(machine(), 1,data & 0x20);
345
342
        }
346
343
}
347
344
 
348
 
static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16 )
 
345
static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16, seta2_state )
349
346
        AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                                     // ROM
350
347
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                                     // RAM
351
348
        AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1")                                       // DSW 1
356
353
        AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w)       // Coins + Protection?
357
354
        AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r)                        // Watchdog
358
355
        AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r)                      // Protection
359
 
        AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
360
 
        AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
361
 
        AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)                               // Video Registers
362
 
        AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
363
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)             // TMP68301 Registers
 
356
        AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
357
        AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
358
        AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")                          // Video Registers
 
359
        AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
360
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)              // TMP68301 Registers
364
361
ADDRESS_MAP_END
365
362
 
366
363
 
368
365
                            Penguin Bros
369
366
***************************************************************************/
370
367
 
371
 
static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16 )
 
368
static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16, seta2_state )
372
369
        AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                             // ROM
373
370
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
374
371
        AM_RANGE(0x210000, 0x23ffff) AM_RAM                                                             // RAM
382
379
        AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w)   // Coins Counter
383
380
        AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r)                // Watchdog
384
381
        //AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r)      // Protection
385
 
        AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
386
 
        AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
387
 
        AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)
388
 
        AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
389
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)             // TMP68301 Registers
 
382
        AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
383
        AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
384
        AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")
 
385
        AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
386
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)              // TMP68301 Registers
390
387
ADDRESS_MAP_END
391
388
 
392
389
 
394
391
                              Reel'N Quake
395
392
***************************************************************************/
396
393
 
397
 
static WRITE16_HANDLER( reelquak_leds_w )
 
394
WRITE16_MEMBER(seta2_state::reelquak_leds_w)
398
395
{
399
396
        if (ACCESSING_BITS_0_7)
400
397
        {
401
 
                set_led_status( space->machine(), 0, data & 0x0001 );   // start
402
 
                set_led_status( space->machine(), 1, data & 0x0002 );   // small
403
 
                set_led_status( space->machine(), 2, data & 0x0004 );   // bet
404
 
                set_led_status( space->machine(), 3, data & 0x0008 );   // big
405
 
                set_led_status( space->machine(), 4, data & 0x0010 );   // double up
406
 
                set_led_status( space->machine(), 5, data & 0x0020 );   // collect
407
 
                set_led_status( space->machine(), 6, data & 0x0040 );   // bet cancel
 
398
                set_led_status( machine(), 0, data & 0x0001 );  // start
 
399
                set_led_status( machine(), 1, data & 0x0002 );  // small
 
400
                set_led_status( machine(), 2, data & 0x0004 );  // bet
 
401
                set_led_status( machine(), 3, data & 0x0008 );  // big
 
402
                set_led_status( machine(), 4, data & 0x0010 );  // double up
 
403
                set_led_status( machine(), 5, data & 0x0020 );  // collect
 
404
                set_led_status( machine(), 6, data & 0x0040 );  // bet cancel
408
405
        }
409
406
        if (ACCESSING_BITS_8_15)
410
407
        {
411
 
                ticket_dispenser_w(space->machine().device("ticket"), 0, (data & 0x0100) >> 1); // ticket dispenser
 
408
                machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x0100) >> 1);     // ticket dispenser
412
409
        }
413
410
 
414
411
//  popmessage("LED %04X", data);
415
412
}
416
413
 
417
 
static WRITE16_HANDLER( reelquak_coin_w )
 
414
WRITE16_MEMBER(seta2_state::reelquak_coin_w)
418
415
{
419
416
        if (ACCESSING_BITS_0_7)
420
417
        {
421
 
                coin_counter_w(space->machine(), 0, data & 0x01);       // coin in
422
 
                coin_counter_w(space->machine(), 1, data & 0x02);       // coin in
423
 
                coin_counter_w(space->machine(), 2, data & 0x04);       // pay out
424
 
                coin_counter_w(space->machine(), 3, data & 0x08);       // key in
 
418
                coin_counter_w(machine(), 0, data & 0x01);      // coin in
 
419
                coin_counter_w(machine(), 1, data & 0x02);      // coin in
 
420
                coin_counter_w(machine(), 2, data & 0x04);      // pay out
 
421
                coin_counter_w(machine(), 3, data & 0x08);      // key in
425
422
                //                                data & 0x10); // Sound IRQ Ack.? 1->0
426
423
                //                                data & 0x20); // Vblank IRQ.? 1
427
424
        }
428
425
//  popmessage("COIN %04X", data & 0xffff);
429
426
}
430
427
 
431
 
static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16 )
 
428
static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16, seta2_state )
432
429
        AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                             // ROM
433
430
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
434
431
        AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram")                   // NVRAM (Battery Backed)
440
437
        AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1")                               // DSW 1
441
438
        AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2")                               // DSW 2
442
439
        AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w)               // Samples Banks
443
 
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w)      // Sound
444
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
445
 
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)     // Palette
446
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)                               // Video Registers
447
 
        AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE( reelquak_leds_w )                // parallel data register (leds)
448
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)             // TMP68301 Registers
 
440
        AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w)       // Sound
 
441
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
442
        AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")    // Palette
 
443
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")                          // Video Registers
 
444
        AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(reelquak_leds_w )         // parallel data register (leds)
 
445
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)              // TMP68301 Registers
449
446
ADDRESS_MAP_END
450
447
 
451
448
 
454
451
***************************************************************************/
455
452
 
456
453
// To be done:
457
 
static ADDRESS_MAP_START( namcostr_map, AS_PROGRAM, 16 )
 
454
static ADDRESS_MAP_START( namcostr_map, AS_PROGRAM, 16, seta2_state )
458
455
        AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                             // ROM
459
456
        AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                             // RAM
460
 
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)             // Sprites
461
 
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)       // Video Registers
462
 
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)     // TMP68301 Registers
 
457
        AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram")               // Sprites
 
458
        AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")  // Video Registers
 
459
        AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)      // TMP68301 Registers
463
460
ADDRESS_MAP_END
464
461
 
465
462
 
467
464
                            Sammy Outdoor Shooting
468
465
***************************************************************************/
469
466
 
470
 
static WRITE16_HANDLER( samshoot_coin_w )
 
467
WRITE16_MEMBER(seta2_state::samshoot_coin_w)
471
468
{
472
469
        if (ACCESSING_BITS_0_7)
473
470
        {
474
 
                coin_counter_w(space->machine(), 0, data & 0x10);
475
 
                coin_counter_w(space->machine(), 1, data & 0x20);
 
471
                coin_counter_w(machine(), 0, data & 0x10);
 
472
                coin_counter_w(machine(), 1, data & 0x20);
476
473
                // Are these connected? They are set in I/O test
477
 
                coin_lockout_w(space->machine(), 0,~data & 0x40);
478
 
                coin_lockout_w(space->machine(), 1,~data & 0x80);
 
474
                coin_lockout_w(machine(), 0,~data & 0x40);
 
475
                coin_lockout_w(machine(), 1,~data & 0x80);
479
476
        }
480
477
//  popmessage("%04x",data);
481
478
}
482
479
 
483
 
static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16 )
 
480
static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16, seta2_state )
484
481
        AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
485
482
        AM_RANGE( 0x200000, 0x20ffff ) AM_RAM
486
483
        AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_SHARE("nvram")
488
485
        AM_RANGE( 0x400000, 0x400001 ) AM_READ_PORT("DSW1")                             // DSW 1
489
486
        AM_RANGE( 0x400002, 0x400003 ) AM_READ_PORT("BUTTONS")                  // Buttons
490
487
 
491
 
        AM_RANGE( 0x400300, 0x40030f ) AM_WRITE( seta2_sound_bank_w )   // Samples Banks
 
488
        AM_RANGE( 0x400300, 0x40030f ) AM_WRITE(seta2_sound_bank_w )    // Samples Banks
492
489
 
493
490
        AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("GUN1")                             // P1
494
491
        AM_RANGE( 0x580000, 0x580001 ) AM_READ_PORT("GUN2")                             // P2
495
492
 
496
493
        AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT("TRIGGER")                  // Trigger
497
494
        AM_RANGE( 0x700002, 0x700003 ) AM_READ_PORT("PUMP")                             // Pump
498
 
        AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN")     AM_WRITE( samshoot_coin_w )     // Coins
499
 
        AM_RANGE( 0x700006, 0x700007 ) AM_READ( watchdog_reset16_r )    // Watchdog?
500
 
 
501
 
        AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)   // Sprites
502
 
        AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)   // Palette
503
 
        AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)     // Video Registers
504
 
 
505
 
        AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1snd", seta_sound_word_r, seta_sound_word_w   )       // Sound
 
495
        AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN")     AM_WRITE(samshoot_coin_w )      // Coins
 
496
        AM_RANGE( 0x700006, 0x700007 ) AM_READ(watchdog_reset16_r )     // Watchdog?
 
497
 
 
498
        AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_SHARE("spriteram")     // Sprites
 
499
        AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")  // Palette
 
500
        AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")        // Video Registers
 
501
 
 
502
        AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r, seta_sound_word_w     )       // Sound
506
503
 
507
504
        AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2")                             // parallel data register (DSW 2)
508
 
        AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w)   // TMP68301 Registers
 
505
        AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w)    // TMP68301 Registers
509
506
ADDRESS_MAP_END
510
507
 
511
508
 
516
513
// Bus conversion functions:
517
514
 
518
515
// RAM shared with the sub CPU
519
 
static READ32_HANDLER( funcube_nvram_dword_r )
 
516
READ32_MEMBER(seta2_state::funcube_nvram_dword_r)
520
517
{
521
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
522
 
        UINT16 val = state->m_nvram[offset];
 
518
        UINT16 val = m_nvram[offset];
523
519
        return ((val & 0xff00) << 8) | (val & 0x00ff);
524
520
}
525
521
 
526
 
static WRITE32_HANDLER( funcube_nvram_dword_w )
 
522
WRITE32_MEMBER(seta2_state::funcube_nvram_dword_w)
527
523
{
528
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
529
524
        if (ACCESSING_BITS_0_7)
530
525
        {
531
 
                state->m_nvram[offset] = (state->m_nvram[offset] & 0xff00) | (data & 0x000000ff);
 
526
                m_nvram[offset] = (m_nvram[offset] & 0xff00) | (data & 0x000000ff);
532
527
        }
533
528
        if (ACCESSING_BITS_16_23)
534
529
        {
535
 
                state->m_nvram[offset] = (state->m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
 
530
                m_nvram[offset] = (m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
536
531
        }
537
532
}
538
533
 
539
 
static WRITE16_HANDLER( spriteram16_word_w )
540
 
{
541
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
542
 
 
543
 
        COMBINE_DATA( &state->m_spriteram[offset] );
544
 
}
545
 
 
546
 
static READ16_HANDLER( spriteram16_word_r )
547
 
{
548
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
549
 
 
550
 
        return state->m_spriteram[offset];
551
 
}
552
 
 
553
 
static READ16_HANDLER( paletteram16_word_r )
554
 
{
555
 
        return space->machine().generic.paletteram.u16[offset];
556
 
}
557
 
 
558
 
static READ16BETO32BE( spriteram32_dword, spriteram16_word_r );
559
 
static WRITE16BETO32BE( spriteram32_dword, spriteram16_word_w );
560
 
 
561
 
static READ16BETO32BE( paletteram32_dword, paletteram16_word_r );
562
 
static WRITE16BETO32BE( paletteram32_dword, paletteram16_xRRRRRGGGGGBBBBB_word_w );
563
 
 
564
 
static WRITE16BETO32BE( seta2_vregs_dword, seta2_vregs_w );
 
534
WRITE16_MEMBER(seta2_state::spriteram16_word_w)
 
535
{
 
536
 
 
537
        COMBINE_DATA( &m_spriteram[offset] );
 
538
}
 
539
 
 
540
READ16_MEMBER(seta2_state::spriteram16_word_r)
 
541
{
 
542
 
 
543
        return m_spriteram[offset];
 
544
}
565
545
 
566
546
// Main CPU
567
547
 
572
552
        CF_MBSR         =       0x1ec/4
573
553
};
574
554
 
575
 
static WRITE32_HANDLER( coldfire_regs_w )
 
555
WRITE32_MEMBER(seta2_state::coldfire_regs_w)
576
556
{
577
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
578
557
 
579
 
        COMBINE_DATA( &state->m_coldfire_regs[offset] );
 
558
        COMBINE_DATA( &m_coldfire_regs[offset] );
580
559
}
581
560
 
582
 
static READ32_HANDLER( coldfire_regs_r )
 
561
READ32_MEMBER(seta2_state::coldfire_regs_r)
583
562
{
584
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
585
563
 
586
564
        switch( offset )
587
565
        {
588
566
                case CF_MBSR:
589
 
                        return space->machine().rand();
 
567
                        return machine().rand();
590
568
 
591
569
                case CF_PPDAT:
592
 
                        return input_port_read(space->machine(), "BATTERY") << 16;
 
570
                        return ioport("BATTERY")->read() << 16;
593
571
        }
594
572
 
595
 
        return state->m_coldfire_regs[offset];
 
573
        return m_coldfire_regs[offset];
596
574
}
597
575
 
598
 
static READ32_HANDLER( funcube_debug_r )
 
576
READ32_MEMBER(seta2_state::funcube_debug_r)
599
577
{
600
 
        UINT32 ret = input_port_read(space->machine(),"DEBUG");
 
578
        UINT32 ret = ioport("DEBUG")->read();
601
579
 
602
580
        // This bits let you move the crosshair in the inputs / touch panel test with a joystick
603
 
        if (!(space->machine().primary_screen->frame_number() % 3))
 
581
        if (!(machine().primary_screen->frame_number() % 3))
604
582
                ret |= 0x3f;
605
583
 
606
584
        return ret;
625
603
}
626
604
 
627
605
 
628
 
static ADDRESS_MAP_START( funcube_map, AS_PROGRAM, 32 )
 
606
static ADDRESS_MAP_START( funcube_map, AS_PROGRAM, 32, seta2_state )
629
607
        AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM
630
608
        AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM
631
609
 
632
 
        AM_RANGE( 0x00500000, 0x00500003 ) AM_READ( funcube_debug_r )
633
 
        AM_RANGE( 0x00500004, 0x00500007 ) AM_READ( watchdog_reset32_r ) AM_WRITENOP
634
 
 
635
 
        AM_RANGE( 0x00600000, 0x00600003 ) AM_DEVREADWRITE("oki", oki_read, oki_write)
636
 
 
637
 
        AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE( spriteram32_dword_r,  spriteram32_dword_w  ) AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)
638
 
        AM_RANGE( 0x00840000, 0x0084ffff ) AM_READWRITE( paletteram32_dword_r, paletteram32_dword_w ) AM_BASE_GENERIC(paletteram)
639
 
        AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE( seta2_vregs_dword_w )                            AM_BASE_MEMBER(seta2_state, m_vregs)
640
 
 
641
 
        AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE( funcube_nvram_dword_r, funcube_nvram_dword_w )
642
 
 
643
 
        AM_RANGE(0xf0000000, 0xf00001ff ) AM_READWRITE( coldfire_regs_r, coldfire_regs_w ) AM_BASE_MEMBER(seta2_state, m_coldfire_regs) // Module
 
610
        AM_RANGE( 0x00500000, 0x00500003 ) AM_READ(funcube_debug_r )
 
611
        AM_RANGE( 0x00500004, 0x00500007 ) AM_READ(watchdog_reset32_r ) AM_WRITENOP
 
612
 
 
613
        AM_RANGE( 0x00600000, 0x00600003 ) AM_DEVREADWRITE_LEGACY("oki", oki_read, oki_write)
 
614
 
 
615
        AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r,  spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
 
616
        AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram")
 
617
        AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(seta2_vregs_w, 0xffffffff ) AM_SHARE("vregs")
 
618
 
 
619
        AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
 
620
 
 
621
        AM_RANGE(0xf0000000, 0xf00001ff ) AM_READWRITE(coldfire_regs_r, coldfire_regs_w ) AM_SHARE("coldfire_regs")     // Module
644
622
        AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM        // SRAM
645
623
ADDRESS_MAP_END
646
624
 
647
625
// Sub CPU
648
626
 
649
 
static ADDRESS_MAP_START( funcube_sub_map, AS_PROGRAM, 16 )
 
627
static ADDRESS_MAP_START( funcube_sub_map, AS_PROGRAM, 16, seta2_state )
650
628
        AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
651
629
        AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_SHARE("nvram")
652
630
ADDRESS_MAP_END
658
636
 
659
637
#define FUNCUBE_SUB_CPU_CLOCK (XTAL_14_7456MHz)
660
638
 
661
 
static READ8_HANDLER( funcube_coins_r )
 
639
READ8_MEMBER(seta2_state::funcube_coins_r)
662
640
{
663
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
664
 
        UINT8 ret = input_port_read(space->machine(),"SWITCH");
 
641
        UINT8 ret = ioport("SWITCH")->read();
665
642
        UINT8 coin_bit0 = 1;    // active low
666
643
        UINT8 coin_bit1 = 1;
667
644
 
668
 
        UINT8 hopper_bit = (state->m_funcube_hopper_motor && !(space->machine().primary_screen->frame_number()%20)) ? 1 : 0;
 
645
        UINT8 hopper_bit = (m_funcube_hopper_motor && !(machine().primary_screen->frame_number()%20)) ? 1 : 0;
669
646
 
670
647
        const UINT64 coin_total_cycles = FUNCUBE_SUB_CPU_CLOCK / (1000/20);
671
648
 
672
 
        if ( state->m_funcube_coin_start_cycles )
 
649
        if ( m_funcube_coin_start_cycles )
673
650
        {
674
 
                UINT64 elapsed = downcast<cpu_device *>(&space->device())->total_cycles() - state->m_funcube_coin_start_cycles;
 
651
                UINT64 elapsed = downcast<cpu_device *>(&space.device())->total_cycles() - m_funcube_coin_start_cycles;
675
652
 
676
653
                if ( elapsed < coin_total_cycles/2 )
677
654
                        coin_bit0 = 0;
678
655
                else if ( elapsed < coin_total_cycles )
679
656
                        coin_bit1 = 0;
680
657
                else
681
 
                        state->m_funcube_coin_start_cycles = 0;
 
658
                        m_funcube_coin_start_cycles = 0;
682
659
        }
683
660
        else
684
661
        {
685
662
                if (!(ret & 1))
686
 
                        state->m_funcube_coin_start_cycles = downcast<cpu_device *>(&space->device())->total_cycles();
 
663
                        m_funcube_coin_start_cycles = downcast<cpu_device *>(&space.device())->total_cycles();
687
664
        }
688
665
 
689
666
        return (ret & ~7) | (hopper_bit << 2) | (coin_bit1 << 1) | coin_bit0;
690
667
}
691
668
 
692
 
static READ8_HANDLER( funcube_serial_r )
 
669
READ8_MEMBER(seta2_state::funcube_serial_r)
693
670
{
694
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
695
671
        UINT8 ret = 0xff;
696
672
 
697
 
        switch( state->m_funcube_serial_count )
 
673
        switch( m_funcube_serial_count )
698
674
        {
699
 
                case 4: ret = state->m_funcube_serial_fifo[0];  break;
700
 
                case 3: ret = state->m_funcube_serial_fifo[1];  break;
701
 
                case 2: ret = state->m_funcube_serial_fifo[2];  break;
702
 
                case 1: ret = state->m_funcube_serial_fifo[3];  break;
 
675
                case 4: ret = m_funcube_serial_fifo[0]; break;
 
676
                case 3: ret = m_funcube_serial_fifo[1]; break;
 
677
                case 2: ret = m_funcube_serial_fifo[2]; break;
 
678
                case 1: ret = m_funcube_serial_fifo[3]; break;
703
679
        }
704
680
 
705
 
        if (state->m_funcube_serial_count)
706
 
                state->m_funcube_serial_count--;
 
681
        if (m_funcube_serial_count)
 
682
                m_funcube_serial_count--;
707
683
 
708
684
        return ret;
709
685
}
710
686
 
711
 
static void funcube_debug_outputs(void)
 
687
static void funcube_debug_outputs(running_machine &machine)
712
688
{
713
689
#ifdef MAME_DEBUG
714
 
//  popmessage("LED: %02x OUT: %02x", (int)*funcube_leds, (int)*funcube_outputs);
 
690
//  seta2_state *state = machine.driver_data<seta2_state>();
 
691
//  popmessage("LED: %02x OUT: %02x", (int)*state->m_funcube_leds, (int)*state->m_funcube_outputs);
715
692
#endif
716
693
}
717
694
 
718
 
static WRITE8_HANDLER( funcube_leds_w )
 
695
WRITE8_MEMBER(seta2_state::funcube_leds_w)
719
696
{
720
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
721
 
 
722
 
        *state->m_funcube_leds = data;
723
 
 
724
 
        set_led_status( space->machine(), 0, (~data) & 0x01 );  // win lamp (red)
725
 
        set_led_status( space->machine(), 1, (~data) & 0x02 );  // win lamp (green)
 
697
 
 
698
        *m_funcube_leds = data;
 
699
 
 
700
        set_led_status( machine(), 0, (~data) & 0x01 ); // win lamp (red)
 
701
        set_led_status( machine(), 1, (~data) & 0x02 ); // win lamp (green)
726
702
 
727
703
        // Set in a moving pattern: 0111 -> 1011 -> 1101 -> 1110
728
 
        set_led_status( space->machine(), 2, (~data) & 0x10 );
729
 
        set_led_status( space->machine(), 3, (~data) & 0x20 );
730
 
        set_led_status( space->machine(), 4, (~data) & 0x40 );
731
 
        set_led_status( space->machine(), 5, (~data) & 0x80 );
 
704
        set_led_status( machine(), 2, (~data) & 0x10 );
 
705
        set_led_status( machine(), 3, (~data) & 0x20 );
 
706
        set_led_status( machine(), 4, (~data) & 0x40 );
 
707
        set_led_status( machine(), 5, (~data) & 0x80 );
732
708
 
733
 
        funcube_debug_outputs();
 
709
        funcube_debug_outputs(space.machine());
734
710
}
735
711
 
736
 
static READ8_HANDLER( funcube_outputs_r )
 
712
READ8_MEMBER(seta2_state::funcube_outputs_r)
737
713
{
738
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
739
714
 
740
715
        // Bits 1,2,3 read
741
 
        return *state->m_funcube_outputs;
 
716
        return *m_funcube_outputs;
742
717
}
743
718
 
744
 
static WRITE8_HANDLER( funcube_outputs_w )
 
719
WRITE8_MEMBER(seta2_state::funcube_outputs_w)
745
720
{
746
 
        seta2_state *state = space->machine().driver_data<seta2_state>();
747
721
 
748
 
        *state->m_funcube_outputs = data;
 
722
        *m_funcube_outputs = data;
749
723
 
750
724
        // Bits 0,1,3 written
751
725
 
752
726
        // Bit 0: hopper motor
753
 
        state->m_funcube_hopper_motor = (~data) & 0x01;
 
727
        m_funcube_hopper_motor = (~data) & 0x01;
754
728
 
755
729
        // Bit 1: high on pay out
756
730
 
757
731
        // Bit 3: low after coining up, blinks on pay out
758
 
        set_led_status( space->machine(), 6, (~data) & 0x08 );
 
732
        set_led_status( machine(), 6, (~data) & 0x08 );
759
733
 
760
 
        funcube_debug_outputs();
 
734
        funcube_debug_outputs(space.machine());
761
735
}
762
736
 
763
737
 
764
 
static ADDRESS_MAP_START( funcube_sub_io, AS_IO, 8 )
765
 
        AM_RANGE( H8_PORT_7,   H8_PORT_7   )    AM_READ( funcube_coins_r )
 
738
static ADDRESS_MAP_START( funcube_sub_io, AS_IO, 8, seta2_state )
 
739
        AM_RANGE( H8_PORT_7,   H8_PORT_7   )    AM_READ(funcube_coins_r )
766
740
        AM_RANGE( H8_PORT_4,   H8_PORT_4   )    AM_NOP  // unused
767
 
        AM_RANGE( H8_PORT_A,   H8_PORT_A   )    AM_READWRITE( funcube_outputs_r, funcube_outputs_w ) AM_BASE_MEMBER( seta2_state, m_funcube_outputs )
768
 
        AM_RANGE( H8_PORT_B,   H8_PORT_B   )    AM_WRITE( funcube_leds_w )                           AM_BASE_MEMBER( seta2_state, m_funcube_leds )
 
741
        AM_RANGE( H8_PORT_A,   H8_PORT_A   )    AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs")
 
742
        AM_RANGE( H8_PORT_B,   H8_PORT_B   )    AM_WRITE(funcube_leds_w )                           AM_SHARE("funcube_leds")
769
743
//  AM_RANGE( H8_SERIAL_0, H8_SERIAL_0 )    // cabinets linking (jpunit)
770
 
        AM_RANGE( H8_SERIAL_1, H8_SERIAL_1 )    AM_READ( funcube_serial_r )
 
744
        AM_RANGE( H8_SERIAL_1, H8_SERIAL_1 )    AM_READ(funcube_serial_r )
771
745
ADDRESS_MAP_END
772
746
 
773
747
 
1561
1535
        PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1562
1536
 
1563
1537
        PORT_START("TICKET")    // $400003.b
1564
 
        PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL       ) PORT_READ_LINE_DEVICE("ticket", ticket_dispenser_line_r)   // ticket sensor
 
1538
        PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL       ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r)    // ticket sensor
1565
1539
        PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1566
1540
        PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1567
1541
        PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )                                                    // knock down
2018
1992
};
2019
1993
 
2020
1994
static MACHINE_CONFIG_START( seta2, seta2_state )
2021
 
        MCFG_CPU_ADD("maincpu", M68000, XTAL_50MHz/3)   // !! TMP68301 !!
 
1995
        MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3)   // !! TMP68301 !!
2022
1996
        MCFG_CPU_PROGRAM_MAP(mj4simai_map)
2023
1997
        MCFG_CPU_VBLANK_INT("screen", seta2_interrupt)
2024
1998
 
2130
2104
        MCFG_CPU_PROGRAM_MAP(reelquak_map)
2131
2105
 
2132
2106
        MCFG_NVRAM_ADD_0FILL("nvram")
2133
 
        MCFG_TICKET_DISPENSER_ADD("ticket", 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
 
2107
        MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
2134
2108
 
2135
2109
        // video hardware
2136
2110
        MCFG_SCREEN_MODIFY("screen")
2179
2153
        }
2180
2154
        else
2181
2155
        {
2182
 
                UINT8 press   = input_port_read(device->machine(),"TOUCH_PRESS");
 
2156
                UINT8 press   = device->machine().root_device().ioport("TOUCH_PRESS")->read();
2183
2157
                UINT8 release = state->m_funcube_press && !press;
2184
2158
 
2185
2159
                if ( press || release )
2186
2160
                {
2187
2161
                        state->m_funcube_serial_fifo[0] = press ? 0xfe : 0xfd;
2188
 
                        state->m_funcube_serial_fifo[1] = input_port_read(device->machine(),"TOUCH_X");
2189
 
                        state->m_funcube_serial_fifo[2] = input_port_read(device->machine(),"TOUCH_Y");
 
2162
                        state->m_funcube_serial_fifo[1] = device->machine().root_device().ioport("TOUCH_X")->read();
 
2163
                        state->m_funcube_serial_fifo[2] = device->machine().root_device().ioport("TOUCH_Y")->read();
2190
2164
                        state->m_funcube_serial_fifo[3] = 0xff;
2191
2165
                        state->m_funcube_serial_count = 4;
2192
2166
                }
2250
2224
MACHINE_CONFIG_END
2251
2225
 
2252
2226
static MACHINE_CONFIG_START( namcostr, seta2_state )
2253
 
        MCFG_CPU_ADD("maincpu", M68000, XTAL_50MHz/3)   // !! TMP68301 !!
 
2227
        MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3)   // !! TMP68301 !!
2254
2228
        MCFG_CPU_PROGRAM_MAP(namcostr_map)
2255
2229
        MCFG_CPU_VBLANK_INT("screen", seta2_interrupt)
2256
2230
 
2387
2361
        ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2388
2362
 
2389
2363
        ROM_REGION( 0x300, "pic", 0 )           // PIC12C508? Code
2390
 
        ROM_LOAD( "fc21a", 0x000, 0x300, NO_DUMP )
 
2364
        ROM_LOAD( "fc21a.u57", 0x000, 0x300, NO_DUMP )
2391
2365
 
2392
2366
        ROM_REGION( 0x800000, "sprites", 0 )
2393
2367
        ROM_LOAD32_WORD( "fc21_obj-0.u43", 0x000000, 0x400000, CRC(08cfe6d9) SHA1(d10f362dcde01f7a9855d8f76af3084b5dd1573a) )
2394
2368
        ROM_LOAD32_WORD( "fc21_obj-1.u42", 0x000002, 0x400000, CRC(4c1fbc20) SHA1(ff83691c19ce3600b31c494eaec26d2ac79e0028) )
2395
2369
 
2396
 
        ROM_REGION( 0x1000000, "oki", 0 )
2397
 
        ROM_LOAD( "fc21_voi0.u47", 0x000000, 0x400000, CRC(25b5fc3f) SHA1(18b16a14e9ee62f3fea382e9d3fdcd43bdb165f5) )
 
2370
        ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
 
2371
        ROM_LOAD( "fc21_voi0.u47", 0x000000, 0x200000, CRC(4a49370a) SHA1(ac10e2c25626965b49475767ef5a0ec3ba9a2d01) )
2398
2372
ROM_END
2399
2373
 
2400
2374
ROM_START( funcube3 )
2401
2375
        ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2402
 
        ROM_LOAD( "fc31prg-0a.u4", 0x00000, 0x80000, CRC(ed7d70dd) SHA1(4ebfca9e60ab5e8de22821f0475abf515c83ce53) )
 
2376
        ROM_LOAD( "fc31_prg-0a.u4", 0x00000, 0x80000, CRC(ed7d70dd) SHA1(4ebfca9e60ab5e8de22821f0475abf515c83ce53) )
2403
2377
 
2404
2378
        ROM_REGION( 0x20000, "sub", 0 )         // H8/3007 Code
2405
 
        ROM_LOAD( "fc21iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
 
2379
        ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2406
2380
 
2407
2381
        ROM_REGION( 0x400, "pic", 0 )           // PIC12C508? Code
2408
2382
        ROM_LOAD( "fc31a.u57", 0x000, 0x400, NO_DUMP )
2409
2383
 
2410
2384
        ROM_REGION( 0x800000, "sprites", 0 )
2411
 
        ROM_LOAD32_WORD( "fc31obj-0.u43", 0x000000, 0x400000, CRC(08c5eb6f) SHA1(016d8f3067db487ccd47188142743897c9722b1f) )
2412
 
        ROM_LOAD32_WORD( "fc31obj-1.u42", 0x000002, 0x400000, CRC(4dadc76e) SHA1(cf82296b38dc22a618fd178816316af05f2459b3) )
 
2385
        ROM_LOAD32_WORD( "fc31_obj-0.u43", 0x000000, 0x400000, CRC(08c5eb6f) SHA1(016d8f3067db487ccd47188142743897c9722b1f) )
 
2386
        ROM_LOAD32_WORD( "fc31_obj-1.u42", 0x000002, 0x400000, CRC(4dadc76e) SHA1(cf82296b38dc22a618fd178816316af05f2459b3) )
2413
2387
 
2414
 
        ROM_REGION( 0x1000000, "oki", 0 )
2415
 
        ROM_LOAD( "fc31snd-0.u47", 0x000000, 0x400000, CRC(319e8c32) SHA1(65fe58d762efb7c092a226ecbfed04c174af35a5) )
 
2388
        ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
 
2389
        ROM_LOAD( "fc31_snd-0.u47", 0x000000, 0x200000, CRC(36b03769) SHA1(20e583359421e0933c781a487fe5f7220052a6d4) )
2416
2390
ROM_END
2417
2391
 
2418
2392
ROM_START( funcube4 )
2429
2403
        ROM_LOAD32_WORD( "fc41_obj-0.u43", 0x000000, 0x400000, CRC(9ff029d5) SHA1(e057f4929aa745ecaf9d4ff7e39974c82e440146) )
2430
2404
        ROM_LOAD32_WORD( "fc41_obj-1.u42", 0x000002, 0x400000, CRC(5ab7b087) SHA1(c600158b2358cdf947357170044dda2deacd4f37) )
2431
2405
 
2432
 
        ROM_REGION( 0x1000000, "oki", 0 )
2433
 
        ROM_LOAD( "fc41_snd0.u47", 0x000000, 0x400000, CRC(48337257) SHA1(d1755024b824100070b489f48f6ae921765329e8) )
 
2406
        ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
 
2407
        ROM_LOAD( "fc41_snd0.u47", 0x000000, 0x200000, CRC(e6f7d2bc) SHA1(638c73d439eaaff8097cb0aa2684f9f7111bcade) )
 
2408
ROM_END
 
2409
 
 
2410
ROM_START( funcube5 )
 
2411
        ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
 
2412
        ROM_LOAD( "fc51_prg-0.u4", 0x00000, 0x80000, CRC(4e34c2d8) SHA1(1ace4f6edab291e69e5c36b15193fba62f4a6773) )
 
2413
 
 
2414
        ROM_REGION( 0x20000, "sub", 0 )         // H8/3007 Code
 
2415
        ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
 
2416
 
 
2417
        ROM_REGION( 0x300, "pic", 0 )           // PIC12C508? Code
 
2418
        ROM_LOAD( "fc51a.u57", 0x000, 0x300, NO_DUMP )
 
2419
 
 
2420
        ROM_REGION( 0x800000, "sprites", 0 )
 
2421
        ROM_LOAD32_WORD( "fc51_obj-0.u43", 0x000000, 0x400000, CRC(116624b3) SHA1(c0b3dbe0ea4a0808222616c3ef77b2d1194a970a) )
 
2422
        ROM_LOAD32_WORD( "fc51_obj-1.u42", 0x000002, 0x400000, CRC(35c6ec61) SHA1(424c9b66a2cdd5217d8a577d0179d1228112ee5b) )
 
2423
 
 
2424
        ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
 
2425
        ROM_LOAD( "fc51_snd-0.u47", 0x000000, 0x200000, CRC(2a504fe1) SHA1(911ad650bf48aa78d9cb3c64284aa526ceb519ba) )
2434
2426
ROM_END
2435
2427
 
2436
2428
static DRIVER_INIT( funcube2 )
2437
2429
{
2438
 
        UINT32 *main_cpu = (UINT32 *) machine.region("maincpu")->base();
2439
 
        UINT16 *sub_cpu  = (UINT16 *) machine.region("sub")->base();
 
2430
        UINT32 *main_cpu = (UINT32 *) machine.root_device().memregion("maincpu")->base();
 
2431
        UINT16 *sub_cpu  = (UINT16 *) machine.root_device().memregion("sub")->base();
2440
2432
 
2441
2433
        main_cpu[0xa5c/4] = 0x4e713e3c;       // PIC protection?
2442
2434
        main_cpu[0xa74/4] = 0x4e713e3c;
2444
2436
 
2445
2437
        // Sub CPU
2446
2438
        sub_cpu[0x4d4/2] = 0x5470;      // rte -> rts
2447
 
 
2448
 
    // Audio
2449
 
    // The first half of the rom appears to be a dupe of the second half with 0xffs destructively interleaved
2450
 
        UINT8* oki = (UINT8*) machine.region("oki")->base();
2451
 
    for (int i = 0; i < 0x200000; i++)
2452
 
    {
2453
 
        oki[i] = oki[i+0x200000];
2454
 
    }
2455
2439
}
2456
2440
 
2457
2441
static DRIVER_INIT( funcube3 )
2458
2442
{
2459
 
        UINT32 *main_cpu = (UINT32 *) machine.region("maincpu")->base();
2460
 
        UINT16 *sub_cpu  = (UINT16 *) machine.region("sub")->base();
 
2443
        UINT32 *main_cpu = (UINT32 *) machine.root_device().memregion("maincpu")->base();
 
2444
        UINT16 *sub_cpu  = (UINT16 *) machine.root_device().memregion("sub")->base();
2461
2445
 
2462
2446
        main_cpu[0x008bc/4] = 0x4a804e71;
2463
2447
        main_cpu[0x19f0c/4] = 0x4e714e71;
2465
2449
 
2466
2450
        // Sub CPU
2467
2451
        sub_cpu[0x4d4/2] = 0x5470;      // rte -> rts
2468
 
 
2469
 
    // Audio
2470
 
    // The first half of the rom appears to be a dupe of the second half with 0xffs destructively interleaved
2471
 
        UINT8* oki = (UINT8*) machine.region("oki")->base();
2472
 
    for (int i = 0; i < 0x200000; i++)
2473
 
    {
2474
 
        oki[i] = oki[i+0x200000];
2475
 
    }
2476
2452
}
2477
2453
 
2478
2454
/***************************************************************************
3195
3171
        ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
3196
3172
ROM_END
3197
3173
 
3198
 
        /* There are known versions 3.x of Deer Hunting USA.... just none are currently dumped.  roms should be "AS0906 E03 U06" & "AS0907 E03 U07" */
3199
 
 
3200
 
ROM_START( deerhuntc ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
 
3174
        /* Are there versions 3.x of Deer Hunting USA with labels "AS0906 E03 U06" & "AS0907 E03 U07" ?? */
 
3175
 
 
3176
ROM_START( deerhuntc ) /* These rom labels break label conventions but is correct & verified. Version in program code is listed as 0.00 */
 
3177
        ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
 
3178
        ROM_LOAD16_BYTE( "as0937e01.u06", 0x000000, 0x100000, CRC(8d74088e) SHA1(cb11ffaf4c0267cc8cbe01accc3daeed910a3af3) ) /* SUM16 = C2CD */
 
3179
        ROM_LOAD16_BYTE( "as0938e01.u07", 0x000001, 0x100000, CRC(c7657889) SHA1(4cc707c8abbc0862457375a9a910d3c338859193) ) /* SUM16 = 27D7 */
 
3180
 
 
3181
        ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
 
3182
        ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
 
3183
        ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
 
3184
        ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
 
3185
        ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
 
3186
 
 
3187
        ROM_REGION( 0x500000, "x1snd", 0 )      // Samples
 
3188
        // Leave 1MB empty (addressable by the chip)
 
3189
        ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
 
3190
ROM_END
 
3191
 
 
3192
ROM_START( deerhuntd ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
3201
3193
        ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
3202
3194
        ROM_LOAD16_BYTE( "as0906e02.u06", 0x000000, 0x100000, CRC(190cca42) SHA1(aef63f5e8c71ed0156b8b0104c5d23872c119167) ) /* Version in program code is listed as 0.00 */
3203
3195
        ROM_LOAD16_BYTE( "as0907e02.u07", 0x000001, 0x100000, CRC(9de2b901) SHA1(d271bc54c41e30c0d9962eedd22f3ef2b7b8c9e5) ) /* Verified with two different sets of chips */
3289
3281
GAME( 2000, deerhunt, 0,        samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3290
3282
GAME( 2000, deerhunta,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3291
3283
GAME( 2000, deerhuntb,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3292
 
GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V2",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
 
3284
GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V3",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
 
3285
GAME( 2000, deerhuntd,deerhunt, samshoot, deerhunt, 0,        ROT0, "Sammy USA Corporation", "Deer Hunting USA V2",                          GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3293
3286
GAME( 2001, turkhunt, 0,        samshoot, turkhunt, 0,        ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0",                      GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3294
3287
GAME( 2001, wschamp,  0,        samshoot, wschamp,  0,        ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00",             GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3295
3288
GAME( 2001, wschampa, wschamp,  samshoot, wschamp,  0,        ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01",             GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3297
3290
GAME( 2001, funcube2, 0,        funcube,  funcube,  funcube2, ROT0, "Namco",                 "Funcube 2 (v1.1)",                             GAME_NO_COCKTAIL )
3298
3291
GAME( 2001, funcube3, 0,        funcube3, funcube,  funcube3, ROT0, "Namco",                 "Funcube 3 (v1.1)",                             GAME_NO_COCKTAIL )
3299
3292
GAME( 2001, funcube4, 0,        funcube,  funcube,  funcube2, ROT0, "Namco",                 "Funcube 4 (v1.0)",                             GAME_NO_COCKTAIL )
 
3293
GAME( 2002, funcube5, 0,        funcube,  funcube,  funcube2, ROT0, "Namco",                 "Funcube 5 (v1.0)",                             GAME_NO_COCKTAIL )
3300
3294
GAME( ????, reelquak, 0,        reelquak, reelquak, 0,        ROT0, "<unknown>",             "Reel'N Quake! (Ver. 1.05)",                    GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )