diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/bus/snes/snes_slot.cpp | 3 | ||||
-rw-r--r-- | src/mame/drivers/hh_sm510.cpp | 82 | ||||
-rw-r--r-- | src/mame/drivers/nforcepc.cpp | 8 | ||||
-rw-r--r-- | src/mame/includes/thomson.h | 5 | ||||
-rw-r--r-- | src/mame/machine/thomson.cpp | 5 | ||||
-rw-r--r-- | src/mame/video/thomson.cpp | 39 |
6 files changed, 93 insertions, 49 deletions
diff --git a/src/devices/bus/snes/snes_slot.cpp b/src/devices/bus/snes/snes_slot.cpp index f85f198f257..4276378bf00 100644 --- a/src/devices/bus/snes/snes_slot.cpp +++ b/src/devices/bus/snes/snes_slot.cpp @@ -225,7 +225,8 @@ base_sns_cart_slot_device::~base_sns_cart_slot_device() void base_sns_cart_slot_device::device_start() { m_cart = dynamic_cast<device_sns_cart_interface *>(get_card_device()); - m_cart->m_slot = this; + if (m_cart != nullptr) + m_cart->m_slot = this; m_irq_callback.resolve_safe(); } diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index 8610c36b809..5f222203968 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -6746,32 +6746,31 @@ void tgoldeye_state::tgoldeye(machine_config &config) /*************************************************************************** - Tiger Independence Day (model 78-???) - * Sharp SM510 under epoxy (die label 10 16) + Tiger Space Jam (model 78-621) + * Sharp SM510 under epoxy (die label KMS10, 23) * lcd screen with custom segments, 1-bit sound ***************************************************************************/ -class tinday_state : public hh_sm510_state +class tsjam_state : public hh_sm510_state { public: - tinday_state(const machine_config &mconfig, device_type type, const char *tag) + tsjam_state(const machine_config &mconfig, device_type type, const char *tag) : hh_sm510_state(mconfig, type, tag) { m_inp_lines = 5; m_inp_fixed = 5; } - void tinday(machine_config &config); + void tsjam(machine_config &config); }; // config -static INPUT_PORTS_START( tinday ) +static INPUT_PORTS_START( tsjam ) PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shield") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire") - PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // S2 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) @@ -6779,12 +6778,13 @@ static INPUT_PORTS_START( tinday ) PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.2") // S3 - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alert") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.3") // S4 - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Velocity") - PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal") + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.4") // S5 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause") @@ -6804,10 +6804,10 @@ static INPUT_PORTS_START( tinday ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") INPUT_PORTS_END -void tinday_state::tinday(machine_config &config) +void tsjam_state::tsjam(machine_config &config) { /* basic machine hardware */ - SM510(config, m_maincpu); + SM510(config, m_maincpu); // no external XTAL m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); @@ -6820,8 +6820,8 @@ void tinday_state::tinday(machine_config &config) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_svg_region("svg"); screen.set_refresh_hz(50); - screen.set_size(1463, 1080); - screen.set_visarea(0, 1463-1, 0, 1080-1); + screen.set_size(1421, 1080); + screen.set_visarea(0, 1421-1, 0, 1080-1); TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1)); @@ -6837,31 +6837,32 @@ void tinday_state::tinday(machine_config &config) /*************************************************************************** - Tiger Space Jam (model 78-621) - * Sharp SM510 under epoxy (die label KMS10, 23) + Tiger Independence Day (model 78-624) + * Sharp SM510 under epoxy (die label 10 16) * lcd screen with custom segments, 1-bit sound ***************************************************************************/ -class tsjam_state : public hh_sm510_state +class tinday_state : public hh_sm510_state { public: - tsjam_state(const machine_config &mconfig, device_type type, const char *tag) + tinday_state(const machine_config &mconfig, device_type type, const char *tag) : hh_sm510_state(mconfig, type, tag) { m_inp_lines = 5; m_inp_fixed = 5; } - void tsjam(machine_config &config); + void tinday(machine_config &config); }; // config -static INPUT_PORTS_START( tsjam ) +static INPUT_PORTS_START( tinday ) PORT_START("IN.0") // S1 - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) - PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shield") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire") + PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // S2 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) @@ -6869,13 +6870,12 @@ static INPUT_PORTS_START( tsjam ) PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.2") // S3 - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alert") PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.3") // S4 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Block") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Tune/Steal") - PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Velocity") + PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.4") // S5 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause") @@ -6895,10 +6895,10 @@ static INPUT_PORTS_START( tsjam ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL") INPUT_PORTS_END -void tsjam_state::tsjam(machine_config &config) +void tinday_state::tinday(machine_config &config) { /* basic machine hardware */ - SM510(config, m_maincpu); // no external XTAL + SM510(config, m_maincpu); m_maincpu->set_r_mask_option(sm510_base_device::RMASK_DIRECT); m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); @@ -6911,8 +6911,8 @@ void tsjam_state::tsjam(machine_config &config) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); screen.set_svg_region("svg"); screen.set_refresh_hz(50); - screen.set_size(1421, 1080); - screen.set_visarea(0, 1421-1, 0, 1080-1); + screen.set_size(1463, 1080); + screen.set_visarea(0, 1463-1, 0, 1080-1); TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1)); @@ -7983,21 +7983,21 @@ ROM_START( tgoldeye ) ROM_END -ROM_START( tinday ) +ROM_START( tsjam ) ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "10_16", 0x0000, 0x1000, CRC(77c2c2f7) SHA1(06326b26d0f6757180724ba0bdeb4110cc7e29d6) ) + ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) ) - ROM_REGION( 1162672, "svg", 0) - ROM_LOAD( "tinday.svg", 0, 1162672, CRC(9b9a8047) SHA1(2aeaa71a54cf897d2a5d91133c733613ca229aae) ) + ROM_REGION( 1046147, "svg", 0) + ROM_LOAD( "tsjam.svg", 0, 1046147, CRC(6d24e1c9) SHA1(ddbfbd85f70ec964c68f982a8ee8070e3786a85e) ) ROM_END -ROM_START( tsjam ) +ROM_START( tinday ) ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "10_23", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) ) + ROM_LOAD( "10_16", 0x0000, 0x1000, CRC(77c2c2f7) SHA1(06326b26d0f6757180724ba0bdeb4110cc7e29d6) ) - ROM_REGION( 1046147, "svg", 0) - ROM_LOAD( "tsjam.svg", 0, 1046147, CRC(6d24e1c9) SHA1(ddbfbd85f70ec964c68f982a8ee8070e3786a85e) ) + ROM_REGION( 1162672, "svg", 0) + ROM_LOAD( "tinday.svg", 0, 1162672, CRC(9b9a8047) SHA1(2aeaa71a54cf897d2a5d91133c733613ca229aae) ) ROM_END @@ -8124,8 +8124,8 @@ CONS( 1995, tbatfor, 0, 0, tbatfor, tbatfor, tbatfor_state, CONS( 1995, tjdredd, 0, 0, tjdredd, tjdredd, tjdredd_state, empty_init, "Tiger Electronics", "Judge Dredd (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1995, tapollo13, 0, 0, tapollo13, tapollo13, tapollo13_state, empty_init, "Tiger Electronics", "Apollo 13 (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1995, tgoldeye, 0, 0, tgoldeye, tgoldeye, tgoldeye_state, empty_init, "Tiger Electronics", "007: GoldenEye (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1996, tinday, 0, 0, tinday, tinday, tinday_state, empty_init, "Tiger Electronics", "Independence Day (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1996, tsjam, 0, 0, tsjam, tsjam, tsjam_state, empty_init, "Tiger Electronics", "Space Jam (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1996, tinday, 0, 0, tinday, tinday, tinday_state, empty_init, "Tiger Electronics", "Independence Day (handheld)", MACHINE_SUPPORTS_SAVE ) // Tiger 72-xxx models CONS( 1992, tbatmana, 0, 0, tbatmana, tbatmana, tbatmana_state, empty_init, "Tiger Electronics", "Batman: The Animated Series (handheld)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nforcepc.cpp b/src/mame/drivers/nforcepc.cpp index 319740f4b94..68045925368 100644 --- a/src/mame/drivers/nforcepc.cpp +++ b/src/mame/drivers/nforcepc.cpp @@ -4,7 +4,7 @@ /* Computer based on a motherboard utilizing the nForce chipset (also known as CRUSH11 or CRUSH12) - Start with the following compoents: + Start with the following components: - An Asus A7N266-C motherboard using: - nForce 415-D northbridge - nForce MCP-D southbridge (with integrated APU) @@ -259,9 +259,9 @@ void nforcepc_state::nforcepc(machine_config &config) ROM_START(nforcepc) ROM_REGION32_LE(0x40000, ":pci:00.0", 0) /* PC bios */ ROM_SYSTEM_BIOS(0, "a7n266c", "a7n266c") // Motherboard dump. Chip: SST49LF020 Package: PLCC32 Label had 3 lines of text: "A7NC3" "1001.D" "GSQ98" - ROMX_LOAD("a7n266c.bin", 0, 0x40000, CRC(F4F0E4FC) SHA1(87f11545db178914623e41fb51e328da479a2efc), ROM_BIOS(0)) - ROM_SYSTEM_BIOS(1, "a7n266c1001d", "a7n266c1001d") // bios version 1001.D dwonloaded from Asus website - ROMX_LOAD("a7nc101d.awd", 0, 0x40000, CRC(EAD1147C) SHA1(27227df98e0c5fb9fecdb4bb6ef72df19766c330), ROM_BIOS(1)) + ROMX_LOAD("a7n266c.bin", 0, 0x40000, CRC(f4f0e4fc) SHA1(87f11545db178914623e41fb51e328da479a2efc), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "a7n266c1001d", "a7n266c1001d") // bios version 1001.D downloaded from Asus website + ROMX_LOAD("a7nc101d.awd", 0, 0x40000, CRC(ead1147c) SHA1(27227df98e0c5fb9fecdb4bb6ef72df19766c330), ROM_BIOS(1)) ROM_END static INPUT_PORTS_START(nforcepc) diff --git a/src/mame/includes/thomson.h b/src/mame/includes/thomson.h index 5a7ec3760d9..79de6f56b43 100644 --- a/src/mame/includes/thomson.h +++ b/src/mame/includes/thomson.h @@ -181,6 +181,7 @@ public: void overlay_scandraw_16( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlayhalf_scandraw_16( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlay3_scandraw_16( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); + void bitmap16alt_scandraw_16( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void to770_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void mo5_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void mo5alt_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); @@ -196,6 +197,7 @@ public: void overlay_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlayhalf_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); void overlay3_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); + void bitmap16alt_scandraw_8( uint8_t* vram, uint16_t* dst, uint16_t* pal, int org, int len ); private: DECLARE_FLOPPY_FORMATS(cd90_640_formats); @@ -690,7 +692,8 @@ private: #define THOM_VMODE_BITMAP4_ALT_HALF 12 #define THOM_VMODE_MO5_ALT 13 #define THOM_VMODE_OVERLAY_HALF 14 -#define THOM_VMODE_NB 15 +#define THOM_VMODE_BITMAP16_ALT 15 +#define THOM_VMODE_NB 16 class to7_io_line_device : public device_t diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp index 873b15765fd..a64fe99c480 100644 --- a/src/mame/machine/thomson.cpp +++ b/src/mame/machine/thomson.cpp @@ -1714,7 +1714,7 @@ void thomson_state::to9_set_video_mode( uint8_t data, int style ) break; // undocumented, but tested on a real TO8D - case 0x20: thom_set_video_mode( THOM_VMODE_MO5_ALT ); break; + case 0x20: thom_set_video_mode( THOM_VMODE_MO5_ALT ); break; case 0x21: thom_set_video_mode( THOM_VMODE_BITMAP4 ); break; @@ -1743,6 +1743,9 @@ void thomson_state::to9_set_video_mode( uint8_t data, int style ) case 0x3f: thom_set_video_mode( THOM_VMODE_OVERLAY3 ); break; + // undocumented variant enconding for bitmap16 + case 0x5b: thom_set_video_mode( THOM_VMODE_BITMAP16_ALT ); break; + default: logerror( "to9_set_video_mode: unknown mode $%02X tr=%i phi=%i mod=%i\n", data, (data >> 5) & 3, (data >> 3) & 2, data & 7 ); } diff --git a/src/mame/video/thomson.cpp b/src/mame/video/thomson.cpp index ff72cbfe2d6..377b5a48c4e 100644 --- a/src/mame/video/thomson.cpp +++ b/src/mame/video/thomson.cpp @@ -568,6 +568,42 @@ UPDATE_LOW( bitmap16 ) END_UPDATE +/* 160x200, 16-colors, no constraint, alternate encoding, undocumented, tested */ + +static const unsigned tbl_bit16[4][4] = { + { 0, 2, 8, 10 }, + { 1, 3, 9, 11 }, + { 4, 6, 12, 14 }, + { 5, 7, 13, 15 } +}; + +UPDATE_HI( bitmap16alt ) +{ + unsigned p0 = tbl_bit16[ramb >> 6][rama >> 6]; + unsigned p1 = tbl_bit16[(ramb >> 4) & 3][(rama >> 4) & 3]; + unsigned p2 = tbl_bit16[(ramb >> 2) & 3][(rama >> 2) & 3]; + unsigned p3 = tbl_bit16[ramb & 3][rama & 3]; + dst[ 0] = dst[ 1] = dst[ 2] = dst[ 3] = pal[ p0 ]; + dst[ 4] = dst[ 5] = dst[ 6] = dst[ 7] = pal[ p1 ]; + dst[ 8] = dst[ 9] = dst[10] = dst[11] = pal[ p2 ]; + dst[12] = dst[13] = dst[14] = dst[15] = pal[ p3 ]; +} +END_UPDATE + +UPDATE_LOW( bitmap16alt ) +{ + unsigned p0 = tbl_bit16[ramb >> 6][rama >> 6]; + unsigned p1 = tbl_bit16[(ramb >> 4) & 3][(rama >> 4) & 3]; + unsigned p2 = tbl_bit16[(ramb >> 2) & 3][(rama >> 2) & 3]; + unsigned p3 = tbl_bit16[ramb & 3][rama & 3]; + dst[0] = dst[1] = pal[ p0 ]; + dst[2] = dst[3] = pal[ p1 ]; + dst[4] = dst[5] = pal[ p2 ]; + dst[6] = dst[7] = pal[ p3 ]; +} +END_UPDATE + + /* 640x200 (80 text column), 2-colors, no constraint */ @@ -785,7 +821,8 @@ static const thom_scandraw thom_scandraw_funcs[THOM_VMODE_NB][2] = FUN(to770), FUN(mo5), FUN(bitmap4), FUN(bitmap4alt), FUN(mode80), FUN(bitmap16), FUN(page1), FUN(page2), FUN(overlay), FUN(overlay3), FUN(to9), FUN(mode80_to9), - FUN(bitmap4althalf), FUN(mo5alt), FUN(overlayhalf), + FUN(bitmap4althalf), FUN(mo5alt), FUN(overlayhalf), + FUN(bitmap16alt) }; |