mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
i8244: fix register mirroring
This commit is contained in:
parent
163d26b939
commit
0a657cb32f
@ -1356,7 +1356,7 @@ The C7010 Chess Module had a NSC800 CMOS microprocessor, with 2K RAM and 8K ROM.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="qbert" supported="partial">
|
||||
<software name="qbert">
|
||||
<description>Q*bert (Euro)</description>
|
||||
<year>1983</year>
|
||||
<publisher>Parker Brothers</publisher>
|
||||
@ -1707,7 +1707,7 @@ The C7010 Chess Module had a NSC800 CMOS microprocessor, with 2K RAM and 8K ROM.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="turtles">
|
||||
<software name="turtles" supported="partial">
|
||||
<description>Turtles (Euro)</description>
|
||||
<year>1982</year>
|
||||
<publisher>Philips</publisher>
|
||||
@ -1721,7 +1721,7 @@ The C7010 Chess Module had a NSC800 CMOS microprocessor, with 2K RAM and 8K ROM.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="turtlesu" cloneof="turtles">
|
||||
<software name="turtlesu" cloneof="turtles" supported="partial">
|
||||
<description>Turtles (USA)</description>
|
||||
<year>1983</year>
|
||||
<publisher>Philips</publisher>
|
||||
|
@ -280,14 +280,14 @@ int i8244_device::get_x_beam()
|
||||
|
||||
offs_t i8244_device::fix_register_mirrors( offs_t offset )
|
||||
{
|
||||
// registers $40,$41 are mirrored at $44,$45, $48,$49, and $4C,$4D
|
||||
if ( ( offset & 0xF2 ) == 0x40 )
|
||||
// quad x/y registers are mirrored for each quad
|
||||
if ( ( offset & 0xC2 ) == 0x40 )
|
||||
{
|
||||
offset &= ~0x0C;
|
||||
}
|
||||
|
||||
// registers $A0-$AF are mirrored at $B0-$BF
|
||||
if ( ( offset & 0xF0 ) == 0xB0 )
|
||||
if ( ( offset & 0xE0 ) == 0xA0 )
|
||||
{
|
||||
offset &= ~0x10;
|
||||
}
|
||||
@ -556,14 +556,14 @@ void i8244_device::render_scanline(int vpos)
|
||||
/* Quad objects */
|
||||
for ( int i = 0; i < ARRAY_LENGTH( m_vdc.s.quad ); i++ )
|
||||
{
|
||||
int y = m_vdc.s.quad[i].single[0].y;
|
||||
int y = m_vdc.s.quad[i].single[0].y & 0xFE;
|
||||
int height = 8;
|
||||
|
||||
if ( y <= scanline && scanline < y + height * 2 )
|
||||
{
|
||||
int x = m_vdc.s.quad[i].single[0].x;
|
||||
|
||||
// Charaecter height is always determined by the height of the 4th character
|
||||
// Character height is always determined by the height of the 4th character
|
||||
int char_height = 8 - ( ( ( y >> 1 ) + m_vdc.s.quad[i].single[3].ptr ) & 7 );
|
||||
|
||||
for ( int j = 0; j < ARRAY_LENGTH( m_vdc.s.quad[0].single ); j++, x += 8 )
|
||||
|
@ -7,9 +7,8 @@ Driver file to handle emulation of the Odyssey2.
|
||||
TODO:
|
||||
- odyssey3 cpu/video should have different clocks
|
||||
- backgamm does not work, it only shows the background graphics
|
||||
- chess has graphics issues near the screen borders: missing A-H at bottom,
|
||||
rightmost column is not erased properly, wrongly places chars at top
|
||||
- qbert has major graphics problems, similar to chess?
|
||||
- chess is missing some graphics: half of the statusbar chars at the top,
|
||||
and the A-H row at the bottom
|
||||
- missing questionmark graphics in turtles
|
||||
- homecomp does not work, needs new slot device
|
||||
- g7400 EF9341 R/W is connected to CPU A2, what happens if it is disobeyed?
|
||||
|
Loading…
Reference in New Issue
Block a user