From f0df186869fbeb2585106cae222c502bc6e225b3 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 21:36:38 +0100 Subject: New systems marked not working ------------------------------ Chibi Pachi Alien Fever [hap, azya] Beans Collection: Venus Diet Monogatari [hap, azya] --- src/devices/cpu/e0c6200/e0c6s46.cpp | 22 ++++++++++ src/devices/cpu/e0c6200/e0c6s46.h | 2 +- src/mame/bandai/tamag1.cpp | 81 ++++++++++++++++++++++++++++++++++++- src/mame/mame.lst | 2 + 4 files changed, 104 insertions(+), 3 deletions(-) diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index f2dc35103dd..0ef710efe8e 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -588,6 +588,28 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::lcd_driver_cb) m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); } +u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + const u8 *src = lcd_buffer(); + const u8 width = m_vram[0].bytes() * 4 / 8; + + for (int x = 0; x < width; x++) + { + for (int y = 0; y < 16; y++) + { + int sx = x; + int sy = y; + //int sx = y | (x / 20) << 4; + //int sy = x % 20; + + if (cliprect.contains(sx, sy)) + bitmap.pix(sy, sx) = src[y * width + x]; + } + } + + return 0; +} + //------------------------------------------------- diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index ad96db9e6ca..9f1b14dc0cd 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -63,7 +63,7 @@ public: auto write_contrast() { return m_write_contrast.bind(); } const u8 *lcd_buffer() { return &m_render_buf[0]; } // get intermediate LCD pixel buffer - //u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); // optional + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); // optional protected: // device-level overrides diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index 9dc17e52831..5cf6e0c35f8 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -21,6 +21,7 @@ TODO: #include "cpu/e0c6200/e0c6s46.h" #include "sound/spkrdev.h" +#include "emupal.h" #include "screen.h" #include "speaker.h" @@ -37,6 +38,8 @@ public: { } void tama(machine_config &config); + void alienfev(machine_config &config); + void venusdm(machine_config &config); DECLARE_INPUT_CHANGED_MEMBER(input_changed); @@ -75,6 +78,22 @@ static INPUT_PORTS_START( tama ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( alienfev ) + PORT_START("K0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K00) // mode + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K01) // select + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K02) // sound + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K03) // handle +INPUT_PORTS_END + +static INPUT_PORTS_START( venusdm ) + PORT_START("K1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K10) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K11) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K12) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + /******************************************************************************* @@ -99,6 +118,52 @@ void tamag1_state::tama(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); } +void tamag1_state::alienfev(machine_config &config) +{ + // basic machine hardware + E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(32); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(39, 16); + screen.set_visarea_full(); + screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update)); + screen.set_palette("palette"); + + PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + +void tamag1_state::venusdm(machine_config &config) +{ + // basic machine hardware + E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(32); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32, 20); + screen.set_visarea_full(); + screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update)); + screen.set_palette("palette"); + + PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + /******************************************************************************* @@ -116,6 +181,16 @@ ROM_START( tama ) ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) ROM_END +ROM_START( alienfev ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) ) +ROM_END + +ROM_START( venusdm ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "venusdm.bin", 0x0000, 0x3000, CRC(2228b081) SHA1(22f6a2ede6259e76f1c8b9b50171c54d8a7de502) ) +ROM_END + } // anonymous namespace @@ -124,5 +199,7 @@ ROM_END Drivers *******************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi Alien Fever", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index bb96ea68c65..946a010b5a2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2499,7 +2499,9 @@ rx78 // sv8000 // Super Vision 8000 @source:bandai/tamag1.cpp +alienfev // Epoch tama // Bandai +venusdm // Nikko @source:bandai/wswan.cpp pockchv2 // Benesse Pocket Challenge V2 -- cgit v1.2.3