Previous 15994 Revisions Next

r6299 Wednesday 4th November, 2009 at 22:13:51 UTC by Angelo Salese
[X1]: Heavily improved the kanji reading, this fixes most games that uses that feature
[src/mess/drivers]x1.c

src/mess/drivers/x1.c
r6298r6299
990990   return 0x3ff;
991991}
992992
993static UINT16 check_chr_addr(running_machine *machine)
994{
995   if(!(colorram[0x7ff] & 0x20)) return 0x7ff;
996   if(!(colorram[0x3ff] & 0x20)) return 0x3ff;
997   if(!(colorram[0x5ff] & 0x20)) return 0x5ff;
998   if(!(colorram[0x1ff] & 0x20)) return 0x1ff;
999
1000   return 0x3ff;
1001}
1002
9931003static READ8_HANDLER( x1_pcg_r )
9941004{
9951005   int addr;
r6298r6299
10021012
10031013   if(addr == 0)
10041014   {
1005//      printf("%04x %04x %02x\n",pcg_write_addr*4*8,pcg_write_addr,bios_offset);
1006      gfx_data = memory_region(space->machine, "kanji");
1007      if(bios_offset == 0)
1008         kanji_offset = pcg_write_addr*4*8;
1015      if(scrn_reg.pcg_mode)
1016      {
1017         gfx_data = memory_region(space->machine, "kanji");
1018         calc_pcg_offset = (videoram[check_chr_addr(space->machine)]+(videoram[check_chr_addr(space->machine)+0x800]<<8)) & 0xfff;
10091019
1010      res = gfx_data[0x0000+bios_offset+kanji_offset];
1020         kanji_offset = calc_pcg_offset*0x20;
10111021
1012      bios_offset++;
1013      bios_offset&=0x1f;
1022         res = gfx_data[0x0000+bios_offset+kanji_offset];
1023
1024         bios_offset++;
1025         bios_offset&=0x1f;
1026      }
1027      else
1028      {
1029//         printf("%04x %04x %02x\n",pcg_write_addr*4*8,pcg_write_addr,bios_offset);
1030         gfx_data = memory_region(space->machine, "kanji");
1031         if(bios_offset == 0)
1032            kanji_offset = pcg_write_addr*4*8;//TODO: check me
1033
1034         res = gfx_data[0x0000+bios_offset+kanji_offset];
1035
1036         bios_offset++;
1037         bios_offset&=0x1f;
1038      }
10141039      return res;
10151040   }
10161041   else
r6298r6299
18851910
18861911static const gfx_layout x1_chars_16x16 =
18871912{
1888   8,8,
1913   8,16,
18891914   RGN_FRAC(1,1),
18901915   1,
18911916   { 0 },
18921917   { 0, 1, 2, 3, 4, 5, 6, 7 },
1893   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1894   8*8
1918   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
1919   8*16
18951920};
18961921
18971922/* decoded for debugging purpose, this will be nuked in the end... */
r6298r6299
18991924   GFXDECODE_ENTRY( "cgrom",   0x00000, x1_chars_8x8,    0x200, 0x20 )
19001925   GFXDECODE_ENTRY( "pcg",     0x00000, x1_pcg_8x8,      0x000, 1 )
19011926   GFXDECODE_ENTRY( "font",    0x00000, x1_chars_8x16,   0x200, 0x20 )
1902   GFXDECODE_ENTRY( "kanji",   0x00000, x1_chars_16x16,  0, 0x20 )
1927   GFXDECODE_ENTRY( "kanji",   0x00000, x1_chars_16x16,  0x200, 0x20 )
19031928GFXDECODE_END
19041929
19051930/*************************************

Previous 15994 Revisions Next


© 1998-2018 The MESS Team