diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index 9a8dd759a5d..140239167d3 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -67,6 +67,7 @@ public: void ddboy(machine_config &config); void tsukande(machine_config &config); void fuusenpn(machine_config &config); + void mariorou(machine_config &config); private: void konmedal_palette(palette_device &palette) const; @@ -85,12 +86,12 @@ private: uint32_t screen_update_konmedal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_shuriboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_fuusenpn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_mariorou(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(konmedal_interrupt); K056832_CB_MEMBER(tile_callback); K052109_CB_MEMBER(shuriboy_tile_callback); - K052109_CB_MEMBER(fuusenpn_tile_callback); TIMER_DEVICE_CALLBACK_MEMBER(scanline); DECLARE_WRITE8_MEMBER(shuri_bank_w); DECLARE_READ8_MEMBER(shuri_irq_r); @@ -217,6 +218,20 @@ uint32_t konmedal_state::screen_update_fuusenpn(screen_device &screen, bitmap_in return 0; } + +uint32_t konmedal_state::screen_update_mariorou(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + screen.priority().fill(0, cliprect); + + m_k052109->tilemap_update(); + m_k052109->tilemap_draw(screen, bitmap, cliprect, 1, 0, 1); + m_k052109->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); + m_k052109->tilemap_draw(screen, bitmap, cliprect, 0, 0, 4); + + return 0; +} + void konmedal_state::konmedal_palette(palette_device &palette) const { uint8_t const *const PROM = memregion("proms")->base(); @@ -482,17 +497,32 @@ K052109_CB_MEMBER(konmedal_state::shuriboy_tile_callback) *flags = (*color & 0x1) ? TILE_FLIPX : 0; u8 col = *color; *color = (col >> 4); - if (layer > 0) *color |= 8; -} - -K052109_CB_MEMBER(konmedal_state::fuusenpn_tile_callback) -{ - *code |= ((*color & 0xc) << 6) | (bank << 10); - if (*color & 0x2) *code |= 0x1000; - *flags = (*color & 0x1) ? TILE_FLIPX : 0; - u8 col = *color; - *color = (col >> 4); - *color |= 8; + if (layer == 0) + { + if (*color == 1) *color = 0; + if (*color == 2) *color = 1; + if (*color == 6) *color = 5; + if (*color == 8) *color = 4; + if (*color == 9) *color = 4; + if (*color == 0xa) *color = 5; + if (*color == 0xd) *color = 6; + if (*color == 0xe) *color = 3; + } + if (layer == 1) + { + if (*color == 0) *color = 8; + if (*color == 0xa) *color = 0xe; + if (*color == 4) *color = 0xa; + } + if (layer == 2) + { + if (*color == 6) *color = 3; + if (*color == 8) *color = 0xc; + if (*color == 0) *color = 8; + if (*color == 0xa) *color = 0xd; + if (*color == 4) *color = 0xa; + if (*color == 5) *color = 0xa; + } } WRITE8_MEMBER(konmedal_state::shuri_bank_w) @@ -583,7 +613,22 @@ void konmedal_state::fuusenpn(machine_config &config) screen.set_screen_update(FUNC(konmedal_state::screen_update_fuusenpn)); screen.set_palette(m_palette); - m_k052109->set_tile_callback(FUNC(konmedal_state::fuusenpn_tile_callback)); + m_k052109->set_tile_callback(FUNC(konmedal_state::shuriboy_tile_callback)); +} + +void konmedal_state::mariorou(machine_config &config) +{ + shuriboy(config); + + screen_device &screen(SCREEN(config.replace(), "screen", SCREEN_TYPE_RASTER)); // everything not verified, just a placeholder + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(30)); + screen.set_size(64*8, 32*8); + screen.set_visarea(96, 416-1, 16, 240-1); + screen.set_screen_update(FUNC(konmedal_state::screen_update_mariorou)); + screen.set_palette(m_palette); + + m_k052109->set_tile_callback(FUNC(konmedal_state::shuriboy_tile_callback)); } ROM_START( tsukande ) @@ -746,11 +791,13 @@ ROM_START( mariorou ) ROM_LOAD( "111_a10.3e.82s129", 0x000300, 0x000100, CRC(07ffc2ed) SHA1(37955d1788a86b90439233bb098c59b191056f68) ) ROM_END +// K052109 (TMNT tilemaps) board +GAME( 1991, mariorou, 0, mariorou, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Mario Roulette", MACHINE_NOT_WORKING) +GAME( 1993, shuriboy, 0, shuriboy, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Shuriken Boy", MACHINE_NOT_WORKING) +GAME( 1993, fuusenpn, 0, fuusenpn, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Fuusen Pentai", MACHINE_NOT_WORKING) + +// K054156/K054157 (GX tilemaps) board GAME( 1994, buttobi, 0, ddboy, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Buttobi Striker", MACHINE_NOT_WORKING) GAME( 1995, tsukande, 0, tsukande, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Tsukande Toru Chicchi", MACHINE_NOT_WORKING) GAME( 1995, ddboy, 0, ddboy, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Dam Dam Boy (on dedicated PCB)", MACHINE_NOT_WORKING) GAME( 1995, ddboya, ddboy, ddboy, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Dam Dam Boy (on Tsukande Toru Chicchi PCB)", MACHINE_NOT_WORKING) -GAME( 1993, shuriboy, 0, shuriboy, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Shuriken Boy", MACHINE_NOT_WORKING) -GAME( 1993, fuusenpn, 0, fuusenpn, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Fuusen Pentai", MACHINE_NOT_WORKING) -GAME( 1993, mariorou, 0, fuusenpn, konmedal, konmedal_state, empty_init, ROT0, "Konami", "Mario Roulette", MACHINE_NOT_WORKING) -