Previous 199869 Revisions Next

r21471 Wednesday 27th February, 2013 at 20:22:58 UTC by Wilbert Pol
(MESS) Added pal/ntsc switch to ef934x; prevents garbage at the bottom of the screen for odyssey3. (nw)
[src/emu/video]ef9340_1.c ef9340_1.h

trunk/src/emu/video/ef9340_1.c
r21470r21471
6666   m_ef9340.Y0 = 0;
6767   m_ef9340.R = 0;
6868   m_ef9340.M = 0;
69   m_ef9340.max_vpos = 210;
6970   m_ef9341.TA = 0;
7071   m_ef9341.TB = 0;
7172   m_ef9341.busy = 0;
r21470r21471
139140         switch( m_ef9341.TB & 0xE0 )
140141         {
141142         case 0x00:  /* Begin row */
142logerror("begin row\n");
143143            m_ef9340.X = 0;
144144            m_ef9340.Y = m_ef9341.TA & 0x1F;
145145            break;
146146         case 0x20:  /* Load Y */
147logerror("load y\n");
148147            m_ef9340.Y = m_ef9341.TA & 0x1F;
149148            break;
150149         case 0x40:  /* Load X */
151logerror("load x\n");
152150            m_ef9340.X = m_ef9341.TA & 0x3F;
153151            break;
154152         case 0x60:  /* INC C */
155logerror("inc c\n");
156153            ef9340_inc_c();
157154            break;
158155         case 0x80:  /* Load M */
159logerror("load m\n");
160156            m_ef9340.M = m_ef9341.TA;
161157            break;
162158         case 0xA0:  /* Load R */
163logerror("load r\n");
164159            m_ef9340.R = m_ef9341.TA;
160            m_ef9340.max_vpos = ( m_ef9340.R & 0x40 ) ? 250 : 210;
165161            break;
166162         case 0xC0:  /* Load Y0 */
167logerror("load y0\n");
168163            m_ef9340.Y0 = m_ef9341.TA & 0x3F;
169164            break;
170165         }
r21470r21471
186181         switch ( m_ef9340.M & 0xE0 )
187182         {
188183            case 0x00:  /* Write */
189logerror("%d,%d = %02x, %02x\n", m_ef9340.X, m_ef9340.Y, m_ef9341.TB, m_ef9341.TA);
190184               m_ef934x_ram_a[addr] = m_ef9341.TA;
191185               m_ef934x_ram_b[addr] = m_ef9341.TB;
192186               ef9340_inc_c();
r21470r21471
214208                  UINT8 b = m_ef934x_ram_b[addr];
215209                  UINT8 slice = ( m_ef9340.M & 0x0f ) % 10;
216210
217logerror("write slice addr=%04x, b=%02x\n", addr, b);
218211                  if ( b >= 0xa0 )
219212                  {
220logerror("write slice external ram %04x\n", external_chargen_address(b,slice));
221213                     m_ef934x_ext_char_ram[ ( ( a & 0x80 ) << 3 ) | external_chargen_address( b, slice ) ] = BITSWAP8(m_ef9341.TA,0,1,2,3,4,5,6,7);
222214                  }
223215
r21470r21471
274266
275267void ef9340_1_device::ef9340_scanline(int vpos)
276268{
277   if ( vpos < 250 )
269   if ( vpos < m_ef9340.max_vpos )
278270   {
279271      int y = vpos - 0;
280272      int y_row, slice;
trunk/src/emu/video/ef9340_1.h
r21470r21471
7070      UINT8   Y0;
7171      UINT8   R;
7272      UINT8   M;
73      int      max_vpos;
7374   } m_ef9340;
7475   UINT8   m_ef934x_ram_a[1024];
7576   UINT8   m_ef934x_ram_b[1024];

Previous 199869 Revisions Next


© 1997-2024 The MAME Team