Previous 199869 Revisions Next

r33933 Wednesday 17th December, 2014 at 14:20:51 UTC by Robbbert
(MESS) excalibur : another attempt at hires graphics. (nw)
- SET works
- PCGEN ON works
[src/mess/drivers]excali64.c

trunk/src/mess/drivers/excali64.c
r242444r242445
1919- Disk controller
2020- Graphics commands such as LINE and CIRCLE produce a syntax error.
2121- Some commands such as HGRCLS are missing from the rom. Perhaps we need a later version?
22- SET command produces random graphics instead of the expected lo-res dot.
2322- The schematic shows the audio counter connected to 2MHz, but this produces
2423  sounds that are too high. Connected to 1MHz for now.
2524- Serial
r242444r242445
8685   AM_RANGE(0x0000, 0x1FFF) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
8786   AM_RANGE(0x2000, 0x2FFF) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2")
8887   AM_RANGE(0x3000, 0x3FFF) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3")
89   AM_RANGE(0x4000, 0x4FFF) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4")
90   AM_RANGE(0x5000, 0xFFFF) AM_RAM AM_REGION("rambank", 0x5000)
88   AM_RANGE(0x4000, 0xBFFF) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4")
89   AM_RANGE(0xC000, 0xFFFF) AM_RAM AM_REGION("rambank", 0xC000)
9190ADDRESS_MAP_END
9291
9392static ADDRESS_MAP_START(excali64_io, AS_IO, 8, excali64_state)
r242444r242445
245244      membank("bankr1")->set_entry(0);
246245      membank("bankr2")->set_entry(0);
247246      membank("bankr3")->set_entry(0);
247      membank("bankr4")->set_entry(0);
248248      membank("bankw2")->set_entry(0);
249249      membank("bankw3")->set_entry(0);
250250      membank("bankw4")->set_entry(0);
r242444r242445
252252   else
253253   if BIT(data, 0)
254254   {
255   // select videoram and hiresram for writing, and ROM for reading
255   // select videoram and hiresram
256256      membank("bankr1")->set_entry(1);
257      membank("bankr2")->set_entry(1);
258      membank("bankr3")->set_entry(1);
257      membank("bankr2")->set_entry(2);
258      membank("bankr3")->set_entry(2);
259259      membank("bankw2")->set_entry(2);
260260      membank("bankw3")->set_entry(2);
261      membank("bankr4")->set_entry(2);
261262      membank("bankw4")->set_entry(2);
262263   }
263264   else
264265   {
265   // as above, except 4000-4FFF is main ram
266   // select rom, videoram, and main ram
266267      membank("bankr1")->set_entry(1);
267268      membank("bankr2")->set_entry(1);
268269      membank("bankr3")->set_entry(1);
269270      membank("bankw2")->set_entry(2);
270271      membank("bankw3")->set_entry(2);
272      membank("bankr4")->set_entry(0);
271273      membank("bankw4")->set_entry(0);
272274   }
273275
r242444r242445
284286   membank("bankr4")->set_entry(0); // read from RAM
285287   membank("bankw1")->set_entry(0); // write to RAM
286288   membank("bankw2")->set_entry(2); // write to videoram
287   membank("bankw3")->set_entry(2); // write to hiresram
289   membank("bankw3")->set_entry(2); // write to videoram hires pointers
288290   membank("bankw4")->set_entry(0); // write to RAM
289291   m_maincpu->reset();
290292}
r242444r242445
325327   // do this here because driver_init hasn't run yet
326328   m_p_videoram = memregion("videoram")->base();
327329   m_p_chargen = memregion("chargen")->base();
328   m_p_hiresram = memregion("hiresram")->base();
330   m_p_hiresram = m_p_videoram + 0x2000;
329331   UINT8 *main = memregion("roms")->base();
330332   UINT8 *ram = memregion("rambank")->base();
331333
r242444r242445
345347   membank("bankr2")->configure_entry(1, &main[0x4000]);//boot
346348   membank("bankr3")->configure_entry(1, &main[0x5000]);//boot
347349   // videoram
350   membank("bankr2")->configure_entry(2, &m_p_videoram[0x0000]);
348351   membank("bankw2")->configure_entry(2, &m_p_videoram[0x0000]);//boot
349352   // hiresram
350   membank("bankw3")->configure_entry(2, &m_p_hiresram[0x0000]);//boot
353   membank("bankr3")->configure_entry(2, &m_p_videoram[0x1000]);
354   membank("bankw3")->configure_entry(2, &m_p_videoram[0x1000]);//boot
355   membank("bankr4")->configure_entry(2, &m_p_hiresram[0x0000]);
351356   membank("bankw4")->configure_entry(2, &m_p_hiresram[0x0000]);
352357
353358   // Set up foreground palettes
r242444r242445
388393      fg = col_base + (col >> 4);
389394      bg = 32 + ((col >> 1) & 7);
390395
391      if (BIT(col, 0) & BIT(chr, 7))
392         gfx = m_p_hiresram[(chr<<4) | ra]; // hires definition
396      if BIT(col, 0)
397      {
398         UINT16 hires_bank = (m_p_videoram[mem+0x1000] ^ 4) << 24;
399         gfx = m_p_hiresram[hires_bank | (chr<<4) | ra]; // hires definition
400      }
393401      else
394402         gfx = m_p_chargen[(chr<<4) | ra]; // normal character
395403     
r242444r242445
478486   ROM_FILL(0x4f7, 1, 8)
479487
480488   ROM_REGION(0x10000, "rambank", ROMREGION_ERASE00)
481   ROM_REGION(0x1000, "videoram", ROMREGION_ERASE00)
482   ROM_REGION(0x1000, "hiresram", ROMREGION_ERASE00)
489   ROM_REGION(0xA000, "videoram", ROMREGION_ERASE00)
483490
484491   ROM_REGION(0x1020, "chargen", 0)
485492   ROM_LOAD( "genex_3.ic43", 0x0000, 0x1000, CRC(b91619a9) SHA1(2ced636cb7b94ba9d329868d7ecf79963cefe9d9) )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team