summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/glass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/glass.cpp')
-rw-r--r--src/mame/drivers/glass.cpp118
1 files changed, 24 insertions, 94 deletions
diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp
index a0d2865508f..e6b01d1b103 100644
--- a/src/mame/drivers/glass.cpp
+++ b/src/mame/drivers/glass.cpp
@@ -53,29 +53,22 @@ INTERRUPT_GEN_MEMBER(glass_state::interrupt)
static const gfx_layout glass_tilelayout16 =
{
16,16, /* 16x16 tiles */
- 0x100000/32, /* number of tiles */
+ RGN_FRAC(1,2), /* number of tiles */
4, /* 4 bpp */
- { 3*0x100000*8, 2*0x100000*8, 1*0x100000*8, 0*0x100000*8 },
- {
- 0, 1, 2, 3, 4, 5, 6, 7,
- 16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7
- },
- {
- 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
- 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8
- },
- 32*8
+ { RGN_FRAC(1,2)+8, RGN_FRAC(1,2), 8, 0 },
+ { STEP8(0,1), STEP8(8*2*16,1), },
+ { STEP16(0,8*2) },
+ 8*2*16*2
};
static GFXDECODE_START( gfx_glass )
- GFXDECODE_ENTRY( "gfx1", 0x000000, glass_tilelayout16, 0, 64 )
+ GFXDECODE_ENTRY( "gfx", 0x000000, glass_tilelayout16, 0, 64 )
GFXDECODE_END
-WRITE16_MEMBER(glass_state::OKIM6295_bankswitch_w)
+WRITE8_MEMBER(glass_state::oki_bankswitch_w)
{
- if (ACCESSING_BITS_0_7)
- membank("okibank")->set_entry(data & 0x0f);
+ m_okibank->set_entry(data & 0x0f);
}
WRITE16_MEMBER(glass_state::coin_w)
@@ -125,7 +118,7 @@ void glass_state::glass_map(address_map &map)
map(0x700006, 0x700007).portr("P2");
map(0x700008, 0x700009).w(FUNC(glass_state::blitter_w)); // serial blitter
map(0x70000a, 0x70000b).select(0x000070).w(FUNC(glass_state::coin_w)); // Coin Counters/Lockout
- map(0x70000c, 0x70000d).w(FUNC(glass_state::OKIM6295_bankswitch_w)); // OKI6295 bankswitch
+ map(0x70000d, 0x70000d).w(FUNC(glass_state::oki_bankswitch_w)); // OKI6295 bankswitch
map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI6295 status register
map(0xfec000, 0xfeffff).ram().share("shareram"); // Work RAM (partially shared with DS5002FP)
}
@@ -213,22 +206,18 @@ INPUT_PORTS_END
void glass_state::machine_start()
{
- membank("okibank")->configure_entries(0, 16, memregion("oki")->base(), 0x10000);
+ m_okibank->configure_entries(0, 16, memregion("oki")->base(), 0x10000);
save_item(NAME(m_cause_interrupt));
save_item(NAME(m_current_bit));
- save_item(NAME(m_current_command));
- save_item(NAME(m_blitter_serial_buffer));
+ save_item(NAME(m_blitter_command));
}
void glass_state::machine_reset()
{
m_cause_interrupt = 1;
m_current_bit = 0;
- m_current_command = 0;
-
- for (int i = 0; i < 5; i++)
- m_blitter_serial_buffer[i] = 0;
+ m_blitter_command = 0;
}
MACHINE_CONFIG_START(glass_state::glass)
@@ -286,14 +275,11 @@ ROM_START( glass ) /* Version 1.1 */
DS5002FP_SET_RPCTL( 0x00 )
DS5002FP_SET_CRCR( 0x80 )
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
- /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
-
- ROM_REGION( 0x400000, "gfx2", 0 ) /* Graphics */
+ ROM_REGION( 0x400000, "gfx", 0 ) /* Graphics */
ROM_LOAD( "h13.bin", 0x000000, 0x200000, CRC(13ab7f31) SHA1(468424f74d6cccd1b445a9f20e2d24bc46d61ed6) )
ROM_LOAD( "h11.bin", 0x200000, 0x200000, CRC(c6ac41c8) SHA1(22408ef1e35c66d0fba0c72972c46fad891d1193) )
- ROM_REGION( 0x100000, "gfx3", 0 ) /* 16 bitmaps (320x200, indexed colors) */
+ ROM_REGION( 0x100000, "bmap", 0 ) /* 16 bitmaps (320x200, indexed colors) */
ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples - sound chip is OKIM6295 */
@@ -315,14 +301,11 @@ ROM_START( glass10 ) /* Version 1.0 */
DS5002FP_SET_RPCTL( 0x00 )
DS5002FP_SET_CRCR( 0x80 )
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
- /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
-
- ROM_REGION( 0x400000, "gfx2", 0 ) /* Graphics */
+ ROM_REGION( 0x400000, "gfx", 0 ) /* Graphics */
ROM_LOAD( "h13.bin", 0x000000, 0x200000, CRC(13ab7f31) SHA1(468424f74d6cccd1b445a9f20e2d24bc46d61ed6) )
ROM_LOAD( "h11.bin", 0x200000, 0x200000, CRC(c6ac41c8) SHA1(22408ef1e35c66d0fba0c72972c46fad891d1193) )
- ROM_REGION( 0x100000, "gfx3", 0 ) /* 16 bitmaps (320x200, indexed colors) */
+ ROM_REGION( 0x100000, "bmap", 0 ) /* 16 bitmaps (320x200, indexed colors) */
ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples - sound chip is OKIM6295 */
@@ -344,14 +327,11 @@ ROM_START( glass10a ) /* Title screen shows "GLASS" and under that "Break Editio
DS5002FP_SET_RPCTL( 0x00 )
DS5002FP_SET_CRCR( 0x80 )
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
- /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
-
- ROM_REGION( 0x400000, "gfx2", 0 ) /* Graphics */
+ ROM_REGION( 0x400000, "gfx", 0 ) /* Graphics */
ROM_LOAD( "h13.bin", 0x000000, 0x200000, CRC(13ab7f31) SHA1(468424f74d6cccd1b445a9f20e2d24bc46d61ed6) )
ROM_LOAD( "h11.bin", 0x200000, 0x200000, CRC(c6ac41c8) SHA1(22408ef1e35c66d0fba0c72972c46fad891d1193) )
- ROM_REGION( 0x100000, "gfx3", 0 ) /* 16 bitmaps (320x200, indexed colors) */
+ ROM_REGION( 0x100000, "bmap", 0 ) /* 16 bitmaps (320x200, indexed colors) */
ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples - sound chip is OKIM6295 */
@@ -364,14 +344,11 @@ ROM_START( glasskr )
ROM_LOAD16_BYTE( "glassk.c23", 0x000000, 0x080000, CRC(6ee19376) SHA1(8a8fdeebe094bd3e29c35cf59584e3cab708732d) )
ROM_LOAD16_BYTE( "glassk.c22", 0x000001, 0x080000, CRC(bd546568) SHA1(bcd5e7591f4e68c9470999b8a0ef1ee4392c907c) )
- ROM_REGION( 0x400000, "gfx1", ROMREGION_ERASE00 ) /* Graphics */
- /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
-
- ROM_REGION( 0x400000, "gfx2", 0 ) /* Graphics */
+ ROM_REGION( 0x400000, "gfx", 0 ) /* Graphics */
ROM_LOAD( "h13.bin", 0x000000, 0x200000, CRC(13ab7f31) SHA1(468424f74d6cccd1b445a9f20e2d24bc46d61ed6) )
ROM_LOAD( "h11.bin", 0x200000, 0x200000, CRC(c6ac41c8) SHA1(22408ef1e35c66d0fba0c72972c46fad891d1193) )
- ROM_REGION( 0x100000, "gfx3", 0 ) /* 16 bitmaps (320x200, indexed colors) */
+ ROM_REGION( 0x100000, "bmap", 0 ) /* 16 bitmaps (320x200, indexed colors) */
ROM_LOAD( "glassk.h9", 0x000000, 0x100000, CRC(d499be4c) SHA1(204f754813be687e8dc00bfe7b5dbc4857ac8738) )
ROM_REGION( 0x100000, "oki", 0 ) /* ADPCM samples - sound chip is OKIM6295 */
@@ -379,53 +356,6 @@ ROM_START( glasskr )
/* 0x00000-0x2ffff is fixed, 0x30000-0x3ffff is bank switched from all the ROMs */
ROM_END
-/***************************************************************************
-
- Split even/odd bytes from ROMs in 16 bit mode to different memory areas
-
-***************************************************************************/
-
-void glass_state::ROM16_split_gfx( const char *src_reg, const char *dst_reg, int start, int length, int dest1, int dest2 )
-{
- int i;
-
- /* get a pointer to the source data */
- uint8_t *src = (uint8_t *)memregion(src_reg)->base();
-
- /* get a pointer to the destination data */
- uint8_t *dst = (uint8_t *)memregion(dst_reg)->base();
-
- /* fill destination areas with the proper data */
- for (i = 0; i < length / 2; i++)
- {
- dst[dest1 + i] = src[start + i * 2 + 0];
- dst[dest2 + i] = src[start + i * 2 + 1];
- }
-}
-
-
-void glass_state::init_glass()
-{
- /*
- For "gfx2" we have this memory map:
- 0x000000-0x1fffff ROM H13
- 0x200000-0x3fffff ROM H11
-
- and we are going to construct this one for "gfx1":
- 0x000000-0x0fffff ROM H13 even bytes
- 0x100000-0x1fffff ROM H13 odd bytes
- 0x200000-0x2fffff ROM H11 even bytes
- 0x300000-0x3fffff ROM H11 odd bytes
- */
-
- /* split ROM H13 */
- ROM16_split_gfx("gfx2", "gfx1", 0x0000000, 0x0200000, 0x0000000, 0x0100000);
-
- /* split ROM H11 */
- ROM16_split_gfx("gfx2", "gfx1", 0x0200000, 0x0200000, 0x0200000, 0x0300000);
-
-}
-
/*
ALL versions of Glass contain the 'Break Edition' string (it just seems to be part of the title?)
@@ -436,7 +366,7 @@ void glass_state::init_glass()
The unprotected version appears to be a Korean set, is censored, and has different girl pictures.
*/
-GAME( 1994, glass, 0, glass_ds5002fp, glass, glass_state, init_glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1994, glasskr, glass, glass, glass, glass_state, init_glass, ROT0, "OMK / Gaelco (Promat license)", "Glass (Ver 1.1, Break Edition, Checksum D419AB69, Version 1994) (censored, unprotected)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // promat stickers on program roms
-GAME( 1993, glass10, glass, glass_ds5002fp, glass, glass_state, init_glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition, Checksum C5513F3C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1993, glass10a, glass, glass_ds5002fp, glass, glass_state, init_glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition, Checksum D3864FDB)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, glass, 0, glass_ds5002fp, glass, glass_state, empty_init, ROT0, "OMK / Gaelco", "Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, glasskr, glass, glass, glass, glass_state, empty_init, ROT0, "OMK / Gaelco (Promat license)", "Glass (Ver 1.1, Break Edition, Checksum D419AB69, Version 1994) (censored, unprotected)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // promat stickers on program roms
+GAME( 1993, glass10, glass, glass_ds5002fp, glass, glass_state, empty_init, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition, Checksum C5513F3C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, glass10a, glass, glass_ds5002fp, glass, glass_state, empty_init, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition, Checksum D3864FDB)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )