diff options
author | arbee <rb6502@users.noreply.github.com> | 2017-04-16 22:58:55 -0400 |
---|---|---|
committer | arbee <rb6502@users.noreply.github.com> | 2017-04-16 22:58:55 -0400 |
commit | 17d6ef6f5c6299f6fc389262591bdb0575458cde (patch) | |
tree | 2ef720c1d1fb1e950d3ed09822f667f19a8938fc /src/mame/drivers/giclassic.cpp | |
parent | b2e89fd2e1fd4c1f5d487ffc9c79f9ef5b4cc78d (diff) |
New games added as GAME_NOT_WORKING:
GI-Classic EX (Server) [R. Belmont, Phil Bennett, The Dumping Union]
Diffstat (limited to 'src/mame/drivers/giclassic.cpp')
-rw-r--r-- | src/mame/drivers/giclassic.cpp | 188 |
1 files changed, 186 insertions, 2 deletions
diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp index 94af182bb88..a7b20a47fa2 100644 --- a/src/mame/drivers/giclassic.cpp +++ b/src/mame/drivers/giclassic.cpp @@ -7,8 +7,11 @@ Preliminary driver by R. Belmont GI Classic EX Main PCB: - Main CPU: 68020 - Photo too unclear to identify Konami customs. + Main CPU: 68000 + Video: 056832 + 058143 (GX tilemaps) + Video: 055673(x2) + 053246 (GX sprites) + Video: 055555 (Mixer) + 053252 (x2) (CRTC?) GI Classic EX Satellite PCB: Main CPU: 68000-12 @@ -42,7 +45,10 @@ #include "emu.h" #include "cpu/m68000/m68000.h" +#include "machine/k053252.h" +#include "video/k055555.h" #include "video/k054156_k054157_k056832.h" +#include "video/k053246_k053247_k055673.h" #include "video/konami_helper.h" #include "screen.h" #include "speaker.h" @@ -78,6 +84,10 @@ private: uint8_t m_control; }; +// -------------------------------------------------------------------------------------------------------------- +// Client portion +// -------------------------------------------------------------------------------------------------------------- + K056832_CB_MEMBER(giclassic_state::tile_callback) { *color = (*color & 0xf); @@ -155,6 +165,129 @@ void giclassic_state::machine_reset() { } +// -------------------------------------------------------------------------------------------------------------- +// Server portion +// -------------------------------------------------------------------------------------------------------------- + +class giclassicsvr_state : public driver_device +{ +public: + giclassicsvr_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_k056832(*this, "k056832"), + m_k055673(*this, "k055673"), + m_palette(*this, "palette") + { } + + required_device<cpu_device> m_maincpu; + required_device<k056832_device> m_k056832; + required_device<k055673_device> m_k055673; + required_device<palette_device> m_palette; + + INTERRUPT_GEN_MEMBER(giclassicsvr_interrupt); + + virtual void machine_start() override; + virtual void machine_reset() override; + uint32_t screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + K056832_CB_MEMBER(tile_callback); + K055673_CB_MEMBER(sprite_callback); + + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(control_r); + +private: + uint16 m_control; +}; + +WRITE16_MEMBER(giclassicsvr_state::control_w) +{ + m_control = data; +} + +READ16_MEMBER(giclassicsvr_state::control_r) +{ + return m_control; +} + +INTERRUPT_GEN_MEMBER(giclassicsvr_state::giclassicsvr_interrupt) +{ + //if (m_control & 2) + { + m_maincpu->set_input_line(M68K_IRQ_4, HOLD_LINE); + m_maincpu->set_input_line(M68K_IRQ_5, HOLD_LINE); + } +} + +K056832_CB_MEMBER(giclassicsvr_state::tile_callback) +{ +} + +K055673_CB_MEMBER(giclassicsvr_state::sprite_callback) +{ + int c = *color; + + *color = (c & 0x001f); + //int pri = (c >> 5) & 7; + // .... .... ...x xxxx - Color + // .... .... xxx. .... - Priority? + // .... ..x. .... .... - ? + // ..x. .... .... .... - ? + + *priority_mask = 0; + + // 0 - Sprites over everything + // f0 - + // f0 cc - + // f0 cc aa - + + // 1111 0000 + // 1100 1100 + // 1010 1010 +} + + +uint32_t giclassicsvr_state::screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + screen.priority().fill(0, cliprect); + + m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4); + m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8); + + return 0; +} + +static ADDRESS_MAP_START( server_main, AS_PROGRAM, 16, giclassicsvr_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) + AM_RANGE(0x080000, 0x08ffff) AM_RAM + AM_RANGE(0x090000, 0x093fff) AM_RAM + AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0x180000, 0x183fff) AM_RAM + AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) + AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES + AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES + AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) + AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1 + AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2 + AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset + AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w) + AM_RANGE(0x400000, 0x41ffff) AM_RAM +ADDRESS_MAP_END + +static INPUT_PORTS_START( giclassvr ) +INPUT_PORTS_END + +void giclassicsvr_state::machine_start() +{ +} + +void giclassicsvr_state::machine_reset() +{ +} + static MACHINE_CONFIG_START( giclassic, giclassic_state ) /* basic machine hardware */ @@ -181,6 +314,43 @@ static MACHINE_CONFIG_START( giclassic, giclassic_state ) MCFG_K056832_PALETTE("palette") MACHINE_CONFIG_END +static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed + MCFG_CPU_PROGRAM_MAP(server_main) + MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(59.62) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(600, 384) + MCFG_SCREEN_VISIBLE_AREA(0, 599, 0, 383) + MCFG_SCREEN_UPDATE_DRIVER(giclassicsvr_state, screen_update_giclassicsvr) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 16384) + MCFG_PALETTE_ENABLE_SHADOWS() + MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + + MCFG_DEVICE_ADD("k056832", K056832, 0) + MCFG_K056832_CB(giclassicsvr_state, tile_callback) + MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 0, 0, "none") + MCFG_K056832_PALETTE("palette") + + MCFG_DEVICE_ADD("k055673", K055673, 0) + MCFG_K055673_CB(giclassicsvr_state, sprite_callback) + MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24) + MCFG_K055673_PALETTE("palette") + + MCFG_DEVICE_ADD("k053252a", K053252, XTAL_32MHz/4) + MCFG_K053252_OFFSETS(40, 16) // TODO + + MCFG_DEVICE_ADD("k053252b", K053252, XTAL_32MHz/4) + MCFG_K053252_OFFSETS(40, 16) // TODO +MACHINE_CONFIG_END + ROM_START( giclasex ) ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ ROM_LOAD16_WORD_SWAP( "gsgu760ae01.12t", 0x000000, 0x080000, CRC(f0f9c118) SHA1(1753d53946bc0703d329e4a09c452713b260da75) ) @@ -190,4 +360,18 @@ ROM_START( giclasex ) ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) ) ROM_END +ROM_START( giclassvr ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ + ROM_LOAD16_WORD_SWAP( "gsgu_760_fd01.34e.bin", 0x000000, 0x080000, CRC(da89c1d7) SHA1(551d050a9b6e54fbf98e966eb37924b644037893) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */ + ROM_LOAD( "gsgu_760_ad04.25q", 0x080000, 0x080000, CRC(71a45742) SHA1(fbddd54f5fb236662f7cc7e9b350723bc5404f72) ) + ROM_LOAD( "gsgu_760_ad05.25r", 0x000000, 0x080000, CRC(44221eec) SHA1(966452e606e828b536ed11cbdd626a2fe3165199) ) + + ROM_REGION( 0x100000, "gfx2", 0 ) /* tilemaps */ + ROM_LOAD32_WORD( "gsgu_760_ad02.34j", 0x000000, 0x080000, CRC(6d33c720) SHA1(35da3e1f0133a76480d2078fae89ea87b841ffc7) ) + ROM_LOAD32_WORD( "gsgu_760_ad02.34k", 0x000002, 0x080000, CRC(8057a417) SHA1(82d4a1d84729e9f0a8aff4c219a19601b89caf15) ) +ROM_END + GAME( 1998, giclasex, 0, giclassic, giclassic, driver_device, 0, 0, "Konami", "GI-Classic EX (satellite terminal)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW) +GAME( 1998, giclassvr, 0, giclassvr, giclassvr, driver_device, 0, 0, "Konami", "GI-Classic EX (server)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW) |