Previous 15994 Revisions Next

r6296 Wednesday 4th November, 2009 at 19:22:03 UTC by Angelo Salese
[X1]: Improved kanji hook-up, Gyahiko starts to show some correct strings
[src/mess/drivers]x1.c

src/mess/drivers/x1.c
r6295r6296
994994{
995995   int addr;
996996   int calc_pcg_offset;
997   static UINT32 kanji_offset;
997998   static UINT8 bios_offset,pcg_index_r[3],res;
998999   UINT8 *gfx_data;
9991000
r6295r6296
10011002
10021003   if(addr == 0)
10031004   {
1004      printf("%04x %02x\n",pcg_write_addr,bios_offset);
1005      gfx_data = memory_region(space->machine, "font");
1006      res = gfx_data[0x0800+bios_offset+(pcg_write_addr*0x20)];
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;
10071009
1010      res = gfx_data[0x0000+bios_offset+kanji_offset];
1011
10081012      bios_offset++;
10091013      bios_offset&=0x1f;
10101014      return res;
r6295r6296
12231227static UINT32 kanji_addr;
12241228
12251229/*
1226 *  FIXME: recheck this once that the kanji rom is redumped, it's confirmed bad for the following reasons:
1227 *  - A game lets you type stuff that's typed with this function, the index doesn't match with the typed char;
1228 *  - It search for chars that are out of the rom range;
1230 *  FIXME: this makes no sense atm, the only game that uses this function so far is Hyper Olympics '84 disk version
12291231 */
12301232static READ8_HANDLER( x1_kanji_r )
12311233{
r6295r6296
12341236
12351237   //res = 0;
12361238
1237   //printf("%08x\n",kanji_addr*0x20);
1239   printf("%08x\n",kanji_addr*0x20+kanji_count);
12381240
12391241   res = kanji_rom[(kanji_addr*0x20)+(kanji_count)];
12401242   kanji_count++;
r6295r6296
12481250static WRITE8_HANDLER( x1_kanji_w )
12491251{
12501252//   if(offset < 2)
1251//   printf("%04x %02x W\n",offset,data);
1253      printf("%04x %02x W\n",offset,data);
1254
12521255   switch(offset)
12531256   {
12541257      case 0: kanji_addr_l = (data & 0xff); break;
r6295r6296
12571260         if(data)
12581261         {
12591262            kanji_addr = (kanji_addr_h<<8) | (kanji_addr_l);
1260            kanji_addr &= 0x3fff; //<- temp kludge until the rom is redumped.
1263            //kanji_addr &= 0x3fff; //<- temp kludge until the rom is redumped.
12611264            //printf("%08x\n",kanji_addr);
12621265            //kanji_addr+= kanji_count;
12631266         }
r6295r6296
22902293ROM_END
22912294
22922295
2293/* Convert the 8-bytes interleaving into something usable by the write handler */
2296/* Convert the ROM interleaving into something usable by the write handlers */
22942297static DRIVER_INIT( kanji )
22952298{
22962299   UINT32 i,j,k,l;
r6295r6296
23002303   k = 0;
23012304   for(l=0;l<2;l++)
23022305   {
2303      for(j=l*8;j<(l*8)+0x10000;j+=16)
2306      for(j=l*16;j<(l*16)+0x10000;j+=32)
23042307      {
2305         for(i=0;i<8;i++)
2308         for(i=0;i<16;i++)
23062309         {
23072310            kanji[j+i] = raw_kanji[k];
23082311            kanji[j+i+0x10000] = raw_kanji[0x10000+k];

Previous 15994 Revisions Next


© 1998-2018 The MESS Team