// license:BSD-3-Clause // copyright-holders:Ariane Fugmann /* N-Sub Daughterboard 97269-P-B ----------------------------- Reference Image: http://images.arianchen.de/2017-01/030320171775.jpg Wiring Notes: http://files.arianchen.de/nsub/97269-P-B.txt |---------------------------------------------------| | PR-02 74393 PR-57 74175 74367 7417 (A) | | | | PR-56 7410 74393 7400 74367 (B) | | | | 74161 74161 74157 74175 74365 (C) | | | | (1) (2) (3) (4) (5) (6) | | SEGA 97269-P-B | | [---CON-F---] [-----------CON-X-----------] | |---------------------------------------------------| Notes: PR-02.A1 - MMI 6336-1J 256*8 PROM (DIP24, labelled 'PR-02') PR-56.B2 - Fujitsu MB7054 1024*4 (DIP18, labelled 'PR-56') PR-57.A3 - Fujitsu MB7054 1024*4 (DIP18, labelled 'PR-57') CON-F - A 3.6 Pin Connector for monitor (different pinout!) 01 - NC 02 - NC 03 - GND 04 - KEY 05 - NC 06 - NC 07 - CSYNC 08 - GREEN 09 - BLUE 10 - RED CON-X - A 15 Pin Connector which is wired to various places on the mainboard 01 - VCC 02 - GND 03 - CSYNC (U53.1) 04 - PALBANK-B2 (U18.7) 05 - EXTBLANK (U84.8) 06 - VIDEO (U54.13) 07 - PALBANK-B3 (U18.2) 08 - VSYNC (U53.12) 09 - VBLANK (U17.5) 10 - BLUE (U8.7) 11 - GREEN (U8.9) 12 - RED (U8.4) 13 - HSYNC- (U13.9) 14 - HRESET (U13.6) 15 - SRCK (U54.7) */ #include "emu.h" #include "video/vicdual-97269pb.h" #define S97269PB_TAG "s97269pb" /************************************* * 97269PB PROMS *************************************/ ROM_START( s97269pb ) ROM_REGION( 0x1000, S97269PB_TAG, ROMREGION_ERASEFF ) ROM_LOAD( "pr-02.a1", 0x0000, 0x0100, CRC(8e633b5c) SHA1(7ee40abe0e8a56aae2cc5f1102fa8c334a19e075) ) ROM_LOAD( "pr-56.b2", 0x0800, 0x0400, CRC(f79c8e91) SHA1(eafff661e2aa1a6ef64f51faa9b1dac7af843557) ) ROM_LOAD( "pr-57.a3", 0x0c00, 0x0400, CRC(00d52430) SHA1(5f4de97cfe6fe39da75761e0f434de28d30f3e3b) ) ROM_END //************************************************************************** // GLOBAL VARIABLES //************************************************************************** DEFINE_DEVICE_TYPE(S97269PB, s97269pb_device, "s97269pb", "N-Sub Daughterboard 97269-P-B") //------------------------------------------------- // rom_region - device-specific ROM region //------------------------------------------------- const tiny_rom_entry *s97269pb_device::device_rom_region() const { return ROM_NAME( s97269pb ); } //************************************************************************** // LIVE DEVICE //************************************************************************** //------------------------------------------------- // s97269pb_device - constructor //------------------------------------------------- s97269pb_device::s97269pb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, S97269PB, tag, owner, clock), m_prom_ptr(*this, "s97269pb") { } //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void s97269pb_device::device_start() { save_item(NAME(m_palette_bank)); } //------------------------------------------------- // device_reset - device-specific reset //------------------------------------------------- void s97269pb_device::device_reset() { m_palette_bank = 0; } void s97269pb_device::palette_bank_w(uint8_t data) { m_palette_bank = data & 0x0c; } pen_t s97269pb_device::choose_pen(uint8_t x, uint8_t y, pen_t back_pen) { if (m_palette_bank & 0x04) { // TODO - starfield // gradient is offset by about 10 pixels // bit 2 enables the gradient and starfield/gradient // bit 3 seems to be used for cocktail mode uint8_t offset = ((x + 5) & 0xff) / 2; if (m_palette_bank & 0x08) offset |= 0x80; uint8_t gradient_flags = m_prom_ptr[offset]; switch (gradient_flags >> 4) { case 0x1: // blue-to-cyan return rgb_t(0, 0x80 + (gradient_flags & 0x0f) * 0x08, 0xff); break; case 0x4: // black-to-blue return rgb_t(0, 0, (gradient_flags & 0x0f) * 0x11);; break; case 0xf: default: return back_pen; break; } } return back_pen; }