mirror of
https://github.com/holub/mame
synced 2025-07-03 00:56:03 +03:00
route16: don't do the color OR trick for route16 (see titlescreen reveal)
This commit is contained in:
parent
5fd7703c9f
commit
a80767f5c1
@ -923,7 +923,7 @@ void speakres_state::stratvox(machine_config &config)
|
||||
m_cpu2->set_addrmap(AS_PROGRAM, &speakres_state::stratvox_cpu2_map);
|
||||
|
||||
/* video hardware */
|
||||
m_screen->set_screen_update(FUNC(speakres_state::screen_update_jongpute));
|
||||
m_screen->set_screen_update(FUNC(speakres_state::screen_update_stratvox));
|
||||
|
||||
/* sound hardware */
|
||||
subdevice<ay8910_device>("ay8910")->port_a_write_callback().set(FUNC(speakres_state::stratvox_sn76477_w)); // SN76477 commands (SN76477 not populated on Route 16 PCB)
|
||||
@ -974,7 +974,7 @@ void route16_state::jongpute(machine_config &config)
|
||||
MCFG_MACHINE_START_OVERRIDE(route16_state, jongpute)
|
||||
|
||||
/* video hardware */
|
||||
m_screen->set_screen_update(FUNC(route16_state::screen_update_jongpute));
|
||||
m_screen->set_screen_update(FUNC(route16_state::screen_update_stratvox));
|
||||
|
||||
PALETTE(config.replace(), m_palette, palette_device::BGR_3BIT);
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ private:
|
||||
uint32_t screen_update_route16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
uint32_t screen_update_jongpute(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_stratvox(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
private:
|
||||
void cpu1_io_map(address_map &map) ATTR_COLD;
|
||||
|
@ -47,16 +47,6 @@ void route16_state::out1_w(uint8_t data)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
/*
|
||||
* Game observation shows that Route 16 can blank each
|
||||
* bitmap by setting bit 1 of the palette register.
|
||||
* Since the schematics are missing the relevant pages, I
|
||||
* cannot confirm how this works, but I am 99% sure the bit 1
|
||||
* would be connected to A7 of the color PROM. Since the
|
||||
* color PROMs contain 0 in the upper half, this would produce
|
||||
* a black output.
|
||||
*/
|
||||
|
||||
uint32_t route16_state::screen_update_route16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t *color_prom1 = &memregion("proms")->base()[0x000];
|
||||
@ -72,23 +62,31 @@ uint32_t route16_state::screen_update_route16(screen_device &screen, bitmap_rgb3
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
// Game observation shows that Route 16 can blank each bitmap by setting bit 1 of the
|
||||
// palette register. Since the schematics are missing the relevant pages, I cannot confirm
|
||||
// how this works, but I am 99% sure the bit 1 would be connected to A7 of the color PROM.
|
||||
// Since the color PROMs contain 0 in the upper half, this would produce a black output.
|
||||
|
||||
uint8_t color1 = color_prom1[((m_palette_1 << 6) & 0x80) |
|
||||
(m_palette_1 << 2) |
|
||||
((data1 >> 3) & 0x02) |
|
||||
((data1 >> 0) & 0x01)];
|
||||
|
||||
/* bit 7 of the 2nd color is the OR of the 1st color bits 0 and 1 - this is a guess */
|
||||
uint8_t color2 = color_prom2[((m_palette_2 << 6) & 0x80) | (((color1 << 6) & 0x80) | ((color1 << 7) & 0x80)) |
|
||||
uint8_t color2 = color_prom2[((m_palette_2 << 6) & 0x80) |
|
||||
(m_palette_2 << 2) |
|
||||
((data2 >> 3) & 0x02) |
|
||||
((data2 >> 0) & 0x01)];
|
||||
|
||||
/* the final color is the OR of the two colors (verified) */
|
||||
// the final color is the OR of the two colors (verified)
|
||||
uint8_t final_color = (color1 | color2) & 0x07;
|
||||
|
||||
if (m_flipscreen)
|
||||
bitmap.pix(255 - y, 255 - x) = m_palette->pen_color(final_color);
|
||||
else
|
||||
{
|
||||
y = 255 - y;
|
||||
x = 255 - x;
|
||||
}
|
||||
|
||||
if (cliprect.contains(x, y))
|
||||
bitmap.pix(y, x) = m_palette->pen_color(final_color);
|
||||
|
||||
x++;
|
||||
@ -101,11 +99,9 @@ uint32_t route16_state::screen_update_route16(screen_device &screen, bitmap_rgb3
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The Stratovox video connections have been verified from the schematics
|
||||
*/
|
||||
// The Stratovox video connections have been verified from the schematics
|
||||
|
||||
uint32_t route16_state::screen_update_jongpute(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
uint32_t route16_state::screen_update_stratvox(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint8_t *color_prom1 = &memregion("proms")->base()[0x000];
|
||||
uint8_t *color_prom2 = &memregion("proms")->base()[0x100];
|
||||
@ -124,18 +120,22 @@ uint32_t route16_state::screen_update_jongpute(screen_device &screen, bitmap_rgb
|
||||
((data1 >> 3) & 0x02) |
|
||||
((data1 >> 0) & 0x01)];
|
||||
|
||||
/* bit 7 of the 2nd color is the OR of the 1st color bits 0 and 1 (verified) */
|
||||
// bit 7 of the 2nd color is the OR of the 1st color bits 0 and 1 (verified)
|
||||
uint8_t color2 = color_prom2[(((data1 << 3) & 0x80) | ((data1 << 7) & 0x80)) |
|
||||
(m_palette_2 << 2) |
|
||||
((data2 >> 3) & 0x02) |
|
||||
((data2 >> 0) & 0x01)];
|
||||
|
||||
/* the final color is the OR of the two colors */
|
||||
// the final color is the OR of the two colors
|
||||
uint8_t final_color = (color1 | color2) & 0x07;
|
||||
|
||||
if (m_flipscreen)
|
||||
bitmap.pix(255 - y, 255 - x) = m_palette->pen_color(final_color);
|
||||
else
|
||||
{
|
||||
y = 255 - y;
|
||||
x = 255 - x;
|
||||
}
|
||||
|
||||
if (cliprect.contains(x, y))
|
||||
bitmap.pix(y, x) = m_palette->pen_color(final_color);
|
||||
|
||||
x++;
|
||||
|
Loading…
Reference in New Issue
Block a user