Previous 199869 Revisions Next

r32004 Monday 8th September, 2014 at 19:54:21 UTC by Wilbert Pol
(MESS) sms.c: Prevent vdp register 6 contents from being overwritten while a line is being drawn. Fixes title screen in backtof3.  [Enik Land, Wilbert Pol]
[src/emu/video]315_5124.c 315_5124.h

trunk/src/emu/video/315_5124.c
r32003r32004
156156   , m_cram_size( SEGA315_5124_CRAM_SIZE )
157157   , m_palette_offset( 0 )
158158   , m_supports_224_240( false )
159   , m_latched_reg6(0)
159160   , m_is_pal(false)
160161   , m_int_cb(*this)
161162   , m_pause_cb(*this)
r32003r32004
172173   , m_cram_size( cram_size )
173174   , m_palette_offset( palette_offset )
174175   , m_supports_224_240( supports_224_240 )
176   , m_latched_reg6(0)
175177   , m_is_pal(false)
176178   , m_int_cb(*this)
177179   , m_pause_cb(*this)
r32003r32004
367369               m_int_cb(ASSERT_LINE);
368370         }
369371      }
372      m_latched_reg6 = m_reg[0x06];
370373      break;
371374
372375   case TIMER_VINT:
r32003r32004
465468      if (m_line_counter == 0x00)
466469      {
467470         m_line_counter = m_reg[0x0a];
468         m_hint_timer->adjust( m_screen->time_until_pos( vpos, HINT_HPOS ) );
469471         m_pending_status |= STATUS_HINT;
470472      }
471473      else
472474      {
473475         m_line_counter--;
474476      }
477      m_hint_timer->adjust( m_screen->time_until_pos( vpos, HINT_HPOS ) );
475478
476479      /* Draw borders */
477480      m_lborder_timer->adjust( m_screen->time_until_pos( vpos, SEGA315_5124_LBORDER_START ), vpos );
r32003r32004
977980         sprite_x -= 0x08;    /* sprite shift */
978981      }
979982
980      if (m_reg[0x06] & 0x04)
983      if (m_latched_reg6 & 0x04)
981984      {
982985         sprite_tile_selected += 256; /* pattern table select */
983986      }
r32003r32004
11091112{
11101113   bool sprite_col_occurred = false;
11111114   int sprite_col_x = m_screen->width();
1112   UINT16 sprite_pattern_base = ((m_reg[0x06] & 0x07) << 11);
1115   UINT16 sprite_pattern_base = ((m_latched_reg6 & 0x07) << 11);
11131116
11141117   if (m_display_disabled)
11151118      return;
trunk/src/emu/video/315_5124.h
r32003r32004
144144   int              m_sprite_count;
145145   int              m_sprite_height;
146146   int              m_sprite_zoom;
147   UINT8            m_latched_reg6;
147148
148149   /* line_buffer will be used to hold 5 lines of line data. Line #0 is the regular blitting area.
149150      Lines #1-#4 will be used as a kind of cache to be used for vertical scaling in the gamegear

Previous 199869 Revisions Next


© 1997-2024 The MAME Team