Previous 199869 Revisions Next

r19412 Saturday 8th December, 2012 at 18:11:58 UTC by Angelo Salese
Made kanji ROMs to bitswap at driver_init time
[src/mess/drivers]pc9801.c

trunk/src/mess/drivers/pc9801.c
r19411r19412
552552
553553   void pc9801_fdc_2hd_update_ready(floppy_image_device *, int);
554554   inline UINT32 m_calc_grcg_addr(int i,UINT32 offset);
555
556   DECLARE_DRIVER_INIT(pc9801_kanji);
555557};
556558
557559
r19411r19412
698700         tile <<= 8;
699701         tile |= (knj_tile & 0x7f);
700702         /* annoying kanji bit-swap applied on the address bus ... */
701         tile = BITSWAP16(tile,15,7,14,13,12,11,6,5,10,9,8,4,3,2,1,0);
703//         tile = BITSWAP16(tile,15,7,14,13,12,11,6,5,10,9,8,4,3,2,1,0);
702704//         tile&=0x7fff;
703705         kanji_sel = 1;
704706      }
r19411r19412
11841186
11851187            //printf("%08x = %04x %04x %04x\n",pcg_offset,m_font_addr,m_font_line,m_font_lr);
11861188
1187            pcg_offset = BITSWAP16(m_font_addr,15,7,14,13,12,11,6,5,10,9,8,4,3,2,1,0) << 5; // TODO
1189//            pcg_offset = BITSWAP16(m_font_addr,15,7,14,13,12,11,6,5,10,9,8,4,3,2,1,0) << 5; // TODO
1190            pcg_offset = m_font_addr << 5;
11881191            pcg_offset|= m_font_line;
11891192            pcg_offset|= m_font_lr;
11901193
r19411r19412
13031306   bool ready = m_fdc_2hd_ctrl & 0x40;
13041307   floppy_image_device *floppy;
13051308   floppy = machine().device<floppy_connector>("upd765_2hd:0")->get_device();
1306   /* TODO: hack, needs to be removed */
1307   if(floppy || ready)
1309   if(floppy && ready)
13081310      ready = floppy->ready_r();
13091311   floppy = machine().device<floppy_connector>("upd765_2hd:1")->get_device();
1310   if(floppy || ready)
1312   if(floppy && ready)
13111313      ready = floppy->ready_r();
13121314
13131315   m_fdc_2hd->ready_w(ready);
r19411r19412
27732775   16*16
27742776};
27752777
2778#if 0
2779static const gfx_layout charset_8x8alt =
2780{
2781   16,16,
2782   RGN_FRAC(1,1),
2783   1,
2784   { 0 },
2785   { 0, 1, 2, 3, 4, 5, 6, 7, STEP8(16*8,1) },
2786   { 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 },
2787   16*16
2788};
2789#endif
2790
27762791static GFXDECODE_START( pc9801 )
27772792   GFXDECODE_ENTRY( "chargen", 0x00000, charset_8x8,     0x000, 0x01 )
27782793   GFXDECODE_ENTRY( "chargen", 0x00800, charset_8x16,    0x000, 0x01 )
27792794   GFXDECODE_ENTRY( "kanji",   0x00000, charset_16x16,   0x000, 0x01 )
2795   GFXDECODE_ENTRY( "raw_kanji",   0x00000, charset_16x16,   0x000, 0x01 )
2796//   GFXDECODE_ENTRY( "chargen",   0x01800, charset_8x8alt,   0x000, 0x01 )
27802797GFXDECODE_END
27812798
27822799/****************************************
r19411r19412
36253642   ROM_LOAD( "ide.rom",  0x00000, 0x02000, NO_DUMP ) \
36263643   ROM_FILL( 0x0000, 0x2000, 0xcb ) \
36273644
3628// pnp?
3645// pnp, soundrom actually?
36293646#define LOAD_UNK_ROM \
36303647   ROM_REGION( 0x4000, "unkrom", ROMREGION_ERASEFF ) \
36313648   ROM_LOAD( "unk.rom",  0x00000, 0x04000, NO_DUMP ) \
36323649   ROM_FILL( 0x0000, 0x4000, 0xcb ) \
36333650
3651// all of these are half size :/
3652#define KANJI_ROMS \
3653   ROM_REGION( 0x80000, "raw_kanji", ROMREGION_ERASEFF ) \
3654   ROM_LOAD16_BYTE( "24256c-x01.bin", 0x00000, 0x4000, BAD_DUMP CRC(28ec1375) SHA1(9d8e98e703ce0f483df17c79f7e841c5c5cd1692) ) \
3655   ROM_CONTINUE(                      0x20000, 0x4000  ) \
3656   ROM_LOAD16_BYTE( "24256c-x02.bin", 0x00001, 0x4000, BAD_DUMP CRC(90985158) SHA1(78fb106131a3f4eb054e87e00fe4f41193416d65) ) \
3657   ROM_CONTINUE(                      0x20001, 0x4000  ) \
3658   ROM_LOAD16_BYTE( "24256c-x03.bin", 0x40000, 0x4000, BAD_DUMP CRC(d4893543) SHA1(eb8c1bee0f694e1e0c145a24152222d4e444e86f) ) \
3659   ROM_CONTINUE(                      0x60000, 0x4000  ) \
3660   ROM_LOAD16_BYTE( "24256c-x04.bin", 0x40001, 0x4000, BAD_DUMP CRC(5dec0fc2) SHA1(41000da14d0805ed0801b31eb60623552e50e41c) ) \
3661   ROM_CONTINUE(                      0x60001, 0x4000  ) \
3662   ROM_REGION( 0x80000, "kanji", ROMREGION_ERASEFF ) \
3663
3664
36343665/*
36353666F - 8086 5
36363667*/
r19411r19412
36643695   ROM_LOAD( "d23128c-17.bin", 0x00000, 0x00800, BAD_DUMP CRC(eea57180) SHA1(4aa037c684b72ad4521212928137d3369174eb1e) ) //original is a bad dump, this is taken from i386 model
36653696   ROM_LOAD("hn613128pac8.bin",0x00800, 0x01000, BAD_DUMP CRC(b5a15b5c) SHA1(e5f071edb72a5e9a8b8b1c23cf94a74d24cb648e) ) //bad dump, 8x16 charset? (it's on the kanji board)
36663697
3667   ROM_REGION( 0x20000, "kanji", ROMREGION_ERASEFF )
3668   ROM_LOAD16_BYTE( "24256c-x01.bin", 0x00000, 0x8000, BAD_DUMP CRC(28ec1375) SHA1(9d8e98e703ce0f483df17c79f7e841c5c5cd1692) )
3669   ROM_LOAD16_BYTE( "24256c-x02.bin", 0x00001, 0x8000, BAD_DUMP CRC(90985158) SHA1(78fb106131a3f4eb054e87e00fe4f41193416d65) )
3670   ROM_LOAD16_BYTE( "24256c-x03.bin", 0x10000, 0x8000, BAD_DUMP CRC(d4893543) SHA1(eb8c1bee0f694e1e0c145a24152222d4e444e86f) )
3671   ROM_LOAD16_BYTE( "24256c-x04.bin", 0x10001, 0x8000, BAD_DUMP CRC(5dec0fc2) SHA1(41000da14d0805ed0801b31eb60623552e50e41c) )
3698   KANJI_ROMS
36723699ROM_END
36733700
36743701/*
r19411r19412
36863713   ROM_REGION( 0x50000, "chargen", 0 )
36873714    ROM_LOAD( "font_ux.rom",     0x000000, 0x046800, BAD_DUMP CRC(19a76eeb) SHA1(96a006e8515157a624599c2b53a581ae0dd560fd) )
36883715
3689   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3690   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3716   KANJI_ROMS
36913717ROM_END
36923718
36933719/*
r19411r19412
37053731   ROM_REGION( 0x50000, "chargen", 0 )
37063732    ROM_LOAD( "font_rx.rom",     0x000000, 0x046800, CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) )
37073733
3708   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3709   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3734   KANJI_ROMS
37103735ROM_END
37113736
37123737/*
r19411r19412
37373762   ROM_REGION( 0x50000, "chargen", 0 )
37383763   ROM_LOAD( "font_rs.rom", 0x00000, 0x46800, BAD_DUMP CRC(da370e7a) SHA1(584d0c7fde8c7eac1f76dc5e242102261a878c5e) )
37393764
3740   ROM_REGION( 0x40000, "kanji", ROMREGION_ERASEFF )
3741   ROM_LOAD16_BYTE( "24256c-x01.bin", 0x00000, 0x8000, BAD_DUMP CRC(28ec1375) SHA1(9d8e98e703ce0f483df17c79f7e841c5c5cd1692) )
3742   ROM_LOAD16_BYTE( "24256c-x02.bin", 0x00001, 0x8000, BAD_DUMP CRC(90985158) SHA1(78fb106131a3f4eb054e87e00fe4f41193416d65) )
3743   ROM_LOAD16_BYTE( "24256c-x03.bin", 0x10000, 0x8000, BAD_DUMP CRC(d4893543) SHA1(eb8c1bee0f694e1e0c145a24152222d4e444e86f) )
3744   ROM_LOAD16_BYTE( "24256c-x04.bin", 0x10001, 0x8000, BAD_DUMP CRC(5dec0fc2) SHA1(41000da14d0805ed0801b31eb60623552e50e41c) )
3765   KANJI_ROMS
37453766ROM_END
37463767
37473768/*
r19411r19412
37613782   ROM_REGION( 0x50000, "chargen", 0 )
37623783    ROM_LOAD( "font_vm.rom",     0x000000, 0x046800, BAD_DUMP CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) )
37633784
3764   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3765   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3785   KANJI_ROMS
37663786ROM_END
37673787
37683788/*
r19411r19412
37853805   ROM_REGION( 0x50000, "chargen", 0 )
37863806   ROM_LOAD( "font.rom", 0x00000, 0x46800, BAD_DUMP CRC(a61c0649) SHA1(554b87377d176830d21bd03964dc71f8e98676b1) )
37873807
3788   ROM_REGION( 0x20000, "kanji", ROMREGION_ERASEFF )// taken from pc9801f
3789   ROM_LOAD16_BYTE( "24256c-x01.bin", 0x00000, 0x8000, BAD_DUMP CRC(28ec1375) SHA1(9d8e98e703ce0f483df17c79f7e841c5c5cd1692) )
3790   ROM_LOAD16_BYTE( "24256c-x02.bin", 0x00001, 0x8000, BAD_DUMP CRC(90985158) SHA1(78fb106131a3f4eb054e87e00fe4f41193416d65) )
3791   ROM_LOAD16_BYTE( "24256c-x03.bin", 0x10000, 0x8000, BAD_DUMP CRC(d4893543) SHA1(eb8c1bee0f694e1e0c145a24152222d4e444e86f) )
3792   ROM_LOAD16_BYTE( "24256c-x04.bin", 0x10001, 0x8000, BAD_DUMP CRC(5dec0fc2) SHA1(41000da14d0805ed0801b31eb60623552e50e41c) )
3808   KANJI_ROMS
37933809ROM_END
37943810
37953811/*
r19411r19412
38103826   ROM_REGION( 0x50000, "chargen", 0 )
38113827    ROM_LOAD( "font_as.rom",     0x000000, 0x046800, BAD_DUMP CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) )
38123828
3813   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3814   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3829   KANJI_ROMS
38153830ROM_END
38163831
38173832
r19411r19412
38333848   ROM_REGION( 0x50000, "chargen", 0 )
38343849   ROM_LOAD( "font_ne.rom", 0x00000, 0x46800, BAD_DUMP CRC(fb213757) SHA1(61525826d62fb6e99377b23812faefa291d78c2e) )
38353850
3836   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3837   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3851   KANJI_ROMS
38383852ROM_END
38393853
38403854/*
r19411r19412
38553869   ROM_REGION( 0x50000, "chargen", 0 )
38563870   ROM_LOAD( "font_486mu.rom", 0x0000, 0x46800, CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff))
38573871
3858   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3859   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3872   KANJI_ROMS
38603873ROM_END
38613874
38623875/*
r19411r19412
38773890   ROM_REGION( 0x50000, "chargen", 0 )
38783891    ROM_LOAD( "font_ce2.rom",     0x000000, 0x046800, CRC(d1c2702a) SHA1(e7781e9d35b6511d12631641d029ad2ba3f7daef) )
38793892
3880   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3881   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3893   KANJI_ROMS
38823894ROM_END
38833895
38843896/*
r19411r19412
38993911   ROM_REGION( 0x50000, "chargen", 0 )
39003912    ROM_LOAD( "font_xs.rom",     0x000000, 0x046800, BAD_DUMP CRC(c9a77d8f) SHA1(deb8563712eb2a634a157289838b95098ba0c7f2) )
39013913
3902   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3903   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3914   KANJI_ROMS
39043915ROM_END
39053916
39063917
r19411r19412
39223933   ROM_REGION( 0x50000, "chargen", 0 )
39233934   ROM_LOAD( "font_a.rom", 0x00000, 0x46800, BAD_DUMP CRC(c9a77d8f) SHA1(deb8563712eb2a634a157289838b95098ba0c7f2) )
39243935
3925   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3926   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3936   KANJI_ROMS
39273937ROM_END
39283938
39293939/*
r19411r19412
39443954   ROM_REGION( 0x50000, "chargen", 0 )
39453955    ROM_LOAD( "font_v20.rom",     0x000000, 0x046800, BAD_DUMP CRC(6244c4c0) SHA1(9513cac321e89b4edb067b30e9ecb1adae7e7be7) )
39463956
3947   ROM_REGION( 0x45000, "kanji", ROMREGION_ERASEFF )
3948   //ROM_COPY("chargen", 0x1800, 0x0000, 0x45000 )
3957   KANJI_ROMS
39493958ROM_END
39503959
3960/* Convert the ROM bitswap here */
3961DRIVER_INIT_MEMBER(pc9801_state,pc9801_kanji)
3962{
3963   UINT32 i,j;
3964   UINT32 pcg_tile;
3965   UINT8 *kanji = machine().root_device().memregion("kanji")->base();
3966   UINT8 *raw_kanji = machine().root_device().memregion("raw_kanji")->base();
3967
3968   for(i=0;i<0x40000/0x20;i++)
3969   {
3970      for(j=0;j<0x20;j++)
3971      {
3972         pcg_tile = BITSWAP16(i,15,14,13,12,11,7,6,5,10,9,8,4,3,2,1,0) << 5;
3973         kanji[j+(i << 5)] = raw_kanji[j+pcg_tile];
3974      }
3975   }
3976}
3977
39513978/* Genuine dumps */
3952COMP( 1983, pc9801f,   0,       0,     pc9801,   pc9801, driver_device,   0, "Nippon Electronic Company",   "PC-9801F",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3979COMP( 1983, pc9801f,   0,       0,     pc9801,   pc9801,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9801F",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
39533980
39543981/* TODO: ANYTHING below there needs REDUMPING! */
3955COMP( 1989, pc9801rs,  0,       0,     pc9801rs, pc9801rs, driver_device, 0, "Nippon Electronic Company",   "PC-9801RS", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model
3956COMP( 1985, pc9801vm,  pc9801rs,0,     pc9801rs, pc9801rs, driver_device, 0, "Nippon Electronic Company",   "PC-9801VM", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3957COMP( 1987, pc9801ux,  pc9801rs,0,     pc9801ux, pc9801rs, driver_device, 0, "Nippon Electronic Company",   "PC-9801UX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3958COMP( 1988, pc9801rx,  pc9801rs,0,     pc9801ux, pc9801rs, driver_device, 0, "Nippon Electronic Company",   "PC-9801RX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3959COMP( 1994, pc9821,    0,       0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MATE)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model
3960COMP( 1993, pc9821as,  pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MATE A)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3961COMP( 1994, pc9821xs,  pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MATE Xs)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3962COMP( 1994, pc9821ce2, pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MULTi Ce2)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3963COMP( 1994, pc9821ne,  pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98NOTE)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3964COMP( 1994, pc486mu,   pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Epson",                       "PC-486MU",  GAME_NOT_WORKING | GAME_NO_SOUND)
3965COMP( 1998, pc9821v13, pc9821,  0,     pc9821,   pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MATE VALUESTAR 13)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3966COMP( 1998, pc9821v20, pc9821,  0,     pc9821v20,pc9821, driver_device, 0, "Nippon Electronic Company",   "PC-9821 (98MATE VALUESTAR 20)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3982COMP( 1989, pc9801rs,  0,       0,     pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9801RS", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model
3983COMP( 1985, pc9801vm,  pc9801rs,0,     pc9801rs, pc9801rs, pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9801VM", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3984COMP( 1987, pc9801ux,  pc9801rs,0,     pc9801ux, pc9801rs, pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9801UX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3985COMP( 1988, pc9801rx,  pc9801rs,0,     pc9801ux, pc9801rs, pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9801RX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3986COMP( 1994, pc9821,    0,       0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MATE)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model
3987COMP( 1993, pc9821as,  pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MATE A)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3988COMP( 1994, pc9821xs,  pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MATE Xs)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3989COMP( 1994, pc9821ce2, pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MULTi Ce2)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3990COMP( 1994, pc9821ne,  pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98NOTE)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3991COMP( 1994, pc486mu,   pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Epson",                       "PC-486MU",  GAME_NOT_WORKING | GAME_NO_SOUND)
3992COMP( 1998, pc9821v13, pc9821,  0,     pc9821,   pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MATE VALUESTAR 13)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
3993COMP( 1998, pc9821v20, pc9821,  0,     pc9821v20,pc9821,   pc9801_state, pc9801_kanji, "Nippon Electronic Company",   "PC-9821 (98MATE VALUESTAR 20)",  GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team