From 64d977ed464670c26998a8516488402c6da4f8c0 Mon Sep 17 00:00:00 2001 From: davidhay Date: Wed, 25 Mar 2009 21:28:39 +0000 Subject: [PATCH] crude 'good enough for naomi gd-rom' MMU implementation save JVS eeprom settings. --- src/emu/cpu/sh4/sh4.c | 90 ++++++++++++++++++-- src/emu/cpu/sh4/sh4comn.c | 22 ++++- src/emu/cpu/sh4/sh4comn.h | 8 ++ src/mame/drivers/naomi.c | 168 +++++++++++++++++++++++++------------- src/mame/machine/dc.c | 12 +-- 5 files changed, 220 insertions(+), 80 deletions(-) diff --git a/src/emu/cpu/sh4/sh4.c b/src/emu/cpu/sh4/sh4.c index 9194a76d94a..3830b5a8b52 100644 --- a/src/emu/cpu/sh4/sh4.c +++ b/src/emu/cpu/sh4/sh4.c @@ -2078,24 +2078,56 @@ INLINE void LDCSPC(SH4 *sh4, UINT32 m) sh4->spc = sh4->r[m]; } +UINT32 sh4_getsqremap(SH4 *sh4, UINT32 address) +{ + if (!sh4->sh4_mmu_enabled) + return address; + else + { + int i; + UINT32 topaddr = address&0xfff00000; + + for (i=0;i<64;i++) + { + UINT32 topcmp = sh4->sh4_tlb_address[i]&0xfff00000; + if (topcmp==topaddr) + return (address&0x000fffff) | ((sh4->sh4_tlb_data[i])&0xfff00000); + } + + } + + return address; +} + /* PREF @Rn */ INLINE void PREFM(SH4 *sh4, UINT32 n) { -int a; -UINT32 addr,dest,sq; + int a; + UINT32 addr,dest,sq; addr = sh4->r[n]; // address if ((addr >= 0xE0000000) && (addr <= 0xE3FFFFFF)) { - sq = (addr & 0x20) >> 5; - dest = addr & 0x03FFFFE0; - if (sq == 0) - dest |= (sh4->m[QACR0] & 0x1C) << 24; + if (sh4->sh4_mmu_enabled) + { + addr = addr & 0xFFFFFFE0; + dest = sh4_getsqremap(sh4, addr); // good enough for naomi-gd rom, probably not much else + + } else - dest |= (sh4->m[QACR1] & 0x1C) << 24; - addr = addr & 0xFFFFFFE0; + { + sq = (addr & 0x20) >> 5; + dest = addr & 0x03FFFFE0; + if (sq == 0) + dest |= (sh4->m[QACR0] & 0x1C) << 24; + else + dest |= (sh4->m[QACR1] & 0x1C) << 24; + addr = addr & 0xFFFFFFE0; + } + for (a = 0;a < 4;a++) { + // shouldn't be causing a memory read, should store sq writes in registers. memory_write_qword_64le(sh4->program, dest, memory_read_qword_64le(sh4->program, addr)); addr += 8; dest += 8; @@ -3326,6 +3358,8 @@ static CPU_RESET( sh4 ) sh4->internal_irq_level = -1; sh4->irln = 15; sh4->sleep_mode = 0; + + sh4->sh4_mmu_enabled = 0; } /* Execute cycles - returns number of cycles actually run */ @@ -3631,11 +3665,49 @@ static ADDRESS_MAP_START( sh4_internal_map, ADDRESS_SPACE_PROGRAM, 64 ) ADDRESS_MAP_END #endif + +READ64_HANDLER( sh4_tlb_r ) +{ + SH4 *sh4 = get_safe_token(space->cpu); + + int offs = offset*8; + + if (offs >= 0x01000000) + { + UINT8 i = (offs>>8)&63; + return sh4->sh4_tlb_data[i]; + } + else + { + UINT8 i = (offs>>8)&63; + return sh4->sh4_tlb_address[i]; + } +} + +WRITE64_HANDLER( sh4_tlb_w ) +{ + SH4 *sh4 = get_safe_token(space->cpu); + + int offs = offset*8; + + if (offs >= 0x01000000) + { + UINT8 i = (offs>>8)&63; + sh4->sh4_tlb_data[i] = data&0xffffffff; + } + else + { + UINT8 i = (offs>>8)&63; + sh4->sh4_tlb_address[i] = data&0xffffffff; + } +} + /*When OC index mode is on (CCR.OIX = 1)*/ static ADDRESS_MAP_START( sh4_internal_map, ADDRESS_SPACE_PROGRAM, 64 ) AM_RANGE(0x1C000000, 0x1C000FFF) AM_RAM AM_MIRROR(0x01FFF000) AM_RANGE(0x1E000000, 0x1E000FFF) AM_RAM AM_MIRROR(0x01FFF000) - AM_RANGE(0xE0000000, 0xE000003F) AM_RAM AM_MIRROR(0x03FFFFC0) + AM_RANGE(0xE0000000, 0xE000003F) AM_RAM AM_MIRROR(0x03FFFFC0) // todo: store queues should be write only on DC's SH4, executing PREFM shouldn't cause an actual memory read access! + AM_RANGE(0xF6000000, 0xF7FFFFFF) AM_READWRITE(sh4_tlb_r,sh4_tlb_w) ADDRESS_MAP_END diff --git a/src/emu/cpu/sh4/sh4comn.c b/src/emu/cpu/sh4/sh4comn.c index bd888fcd1e8..c6509271c33 100644 --- a/src/emu/cpu/sh4/sh4comn.c +++ b/src/emu/cpu/sh4/sh4comn.c @@ -645,7 +645,27 @@ WRITE32_HANDLER( sh4_internal_w ) { case MMUCR: // MMU Control if (data & 1) - fatalerror("SH4: MMUCR write enables MMU\n"); + { + printf("SH4 MMU Enabled\n"); + printf("If you're seeing this, but running something other than a Naomi GD-ROM game then chances are it won't work\n"); + printf("The MMU emulation is a hack specific to that system\n"); + sh4->sh4_mmu_enabled = 1; + + // should be a different bit! + { + int i; + for (i=0;i<64;i++) + { + sh4->sh4_tlb_address[i] = 0; + sh4->sh4_tlb_data[i] = 0; + } + + } + } + else + { + sh4->sh4_mmu_enabled = 0; + } break; diff --git a/src/emu/cpu/sh4/sh4comn.h b/src/emu/cpu/sh4/sh4comn.h index 87df6d90d9f..1463c78ee84 100644 --- a/src/emu/cpu/sh4/sh4comn.h +++ b/src/emu/cpu/sh4/sh4comn.h @@ -37,6 +37,7 @@ #define FP_XFS2(r) *( (float *)(sh4->xf+((r) ^ sh4->fpu_pr)) ) #endif + typedef struct { UINT32 ppc; @@ -90,6 +91,13 @@ typedef struct int ioport4_pullup, ioport4_direction; void (*ftcsr_read_callback)(UINT32 data); + + + /* This MMU simulation is good for the simple remap used on Naomi GD-ROM SQ access *ONLY* */ + UINT32 sh4_tlb_address[64]; + UINT32 sh4_tlb_data[64]; + UINT8 sh4_mmu_enabled; + } SH4; enum diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c index 097a1652318..cf84abcdbc7 100644 --- a/src/mame/drivers/naomi.c +++ b/src/mame/drivers/naomi.c @@ -698,17 +698,65 @@ static WRITE64_HANDLER( naomi_unknown1_w ) * Non-volatile memories */ +extern UINT8 maple0x86data1[0x80]; + static NVRAM_HANDLER( naomi_eeproms ) { if (read_or_write) - /*eeprom_save(file)*/; + { + /* JVS 'eeprom' */ + mame_fwrite(file,maple0x86data1,0x80); + + + // mainboard eeprom? + eeprom_save(file); + + } else { eeprom_init(machine, &eeprom_interface_93C46); - /*if (file) + if (file) + { + UINT8 tmp[0x80]; + + /* JVS 'eeprom' */ + mame_fread(file,maple0x86data1,0x80); + + + + + mame_fread(file,&tmp,0x80); + eeprom_set_data((UINT8 *)tmp, 0x80); + + // mainboard eeprom? eeprom_load(file); - else*/ - eeprom_set_data((UINT8 *)"\011\241 0000000000000000", 48); // 2*checksum 30*unknown 16*serial + + } + else + { + // int a; + + UINT32 length, size; + UINT8 *dat; + + dat = eeprom_get_data_pointer(&length, &size); + memset(dat, 0, length * size); + + // mainboard eeprom? + eeprom_set_data((UINT8 *)"\011\241 0000000000000000", 48); // 2*checksum 30*unknown 16*serial + + #if 0 + /* JVS 'eeprom' */ + for (a=0;a < 0x80;a++) + maple0x86data1[a]=0x11+a; + + // checksums + maple0x86data1[0]=0xb9; + maple0x86data1[1]=0xb1; + maple0x86data1[18]=0xb8; + maple0x86data1[19]=0x8a; + #endif + } } } @@ -1062,30 +1110,31 @@ Scan ROM for the text string "LOADING TEST MODE NOW" back up four (4) bytes for */ // game specific bios roms quite clearly don't belong in here. - +// Japan bios is default, because most games require it. +/* bios e works, the newer japan one gives 'board malfunction' with some games?' */ #define NAOMI_BIOS \ - ROM_SYSTEM_BIOS( 0, "bios0", "epr-21578e (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21578e.bin", 0x000000, 0x200000, CRC(087f09a3) SHA1(0418eb2cf9766f0b1b874a4e92528779e22c0a4a) ) \ - ROM_SYSTEM_BIOS( 1, "bios1", "epr-21578d (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-21578d.bin", 0x000000, 0x200000, CRC(dfd5f42a) SHA1(614a0db4743a5e5a206190d6786ade24325afbfd) ) \ - ROM_SYSTEM_BIOS( 2, "bios2", "epr-21578b (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-21578b.bin", 0x000000, 0x200000, CRC(6c9aad83) SHA1(555918de76d8dbee2a97d8a95297ef694b3e803f) ) \ - ROM_SYSTEM_BIOS( 3, "bios3", "epr-21577e (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-21577e.bin", 0x000000, 0x200000, CRC(cf36e97b) SHA1(b085305982e7572e58b03a9d35f17ae319c3bbc6) ) \ - ROM_SYSTEM_BIOS( 4, "bios4", "epr-21577d (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-21577d.bin", 0x000000, 0x200000, CRC(60ddcbbe) SHA1(58b15096d269d6df617ca1810b66b47deb184958) ) \ - ROM_SYSTEM_BIOS( 5, "bios5", "epr-21576h (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-21576h.bin", 0x000000, 0x200000, CRC(d4895685) SHA1(91424d481ff99a8d3f4c45cea6d3f0eada049a6d) ) \ - ROM_SYSTEM_BIOS( 6, "bios6", "epr-21576g (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-21576g.bin", 0x000000, 0x200000, CRC(d2a1c6bf) SHA1(6d27d71aec4dfba98f66316ae74a1426d567698a) ) \ - ROM_SYSTEM_BIOS( 7, "bios7", "epr-21576e (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-21576e.bin", 0x000000, 0x200000, CRC(08c0add7) SHA1(e7c1a7673cb2ccb21748ef44105e46d1bad7266d) ) \ - ROM_SYSTEM_BIOS( 8, "bios8", "epr-21576d (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 8, "epr-21576d.bin", 0x000000, 0x200000, CRC(3b2afa7b) SHA1(d007e1d321c198a38c5baff86eb2ab84385d150a) ) \ - ROM_SYSTEM_BIOS( 9, "bios9", "epr-21576b (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 9, "epr-21576b.bin", 0x000000, 0x200000, CRC(755a6e07) SHA1(7e8b8ccfc063144d89668e7224dcd8a36c54f3b3) ) \ - ROM_SYSTEM_BIOS( 10, "bios10", "epr-21576 (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 10, "epr-21576.bin", 0x000000, 0x200000, CRC(9dad3495) SHA1(5fb66f9a2b68d120f059c72758e65d34f461044a) ) \ + ROM_SYSTEM_BIOS( 0, "bios0", "epr-21576e (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21576e.bin", 0x000000, 0x200000, CRC(08c0add7) SHA1(e7c1a7673cb2ccb21748ef44105e46d1bad7266d) ) \ + ROM_SYSTEM_BIOS( 1, "bios1", "epr-21576g (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-21576g.bin", 0x000000, 0x200000, CRC(d2a1c6bf) SHA1(6d27d71aec4dfba98f66316ae74a1426d567698a) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "epr-21576h (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-21576h.bin", 0x000000, 0x200000, CRC(d4895685) SHA1(91424d481ff99a8d3f4c45cea6d3f0eada049a6d) ) \ + ROM_SYSTEM_BIOS( 3, "bios3", "epr-21576d (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-21576d.bin", 0x000000, 0x200000, CRC(3b2afa7b) SHA1(d007e1d321c198a38c5baff86eb2ab84385d150a) ) \ + ROM_SYSTEM_BIOS( 4, "bios4", "epr-21576b (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-21576b.bin", 0x000000, 0x200000, CRC(755a6e07) SHA1(7e8b8ccfc063144d89668e7224dcd8a36c54f3b3) ) \ + ROM_SYSTEM_BIOS( 5, "bios5", "epr-21576 (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-21576.bin", 0x000000, 0x200000, CRC(9dad3495) SHA1(5fb66f9a2b68d120f059c72758e65d34f461044a) ) \ + ROM_SYSTEM_BIOS( 6, "bios6", "epr-21578e (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-21578e.bin", 0x000000, 0x200000, CRC(087f09a3) SHA1(0418eb2cf9766f0b1b874a4e92528779e22c0a4a) ) \ + ROM_SYSTEM_BIOS( 7, "bios7", "epr-21578d (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-21578d.bin", 0x000000, 0x200000, CRC(dfd5f42a) SHA1(614a0db4743a5e5a206190d6786ade24325afbfd) ) \ + ROM_SYSTEM_BIOS( 8, "bios8", "epr-21578b (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 8, "epr-21578b.bin", 0x000000, 0x200000, CRC(6c9aad83) SHA1(555918de76d8dbee2a97d8a95297ef694b3e803f) ) \ + ROM_SYSTEM_BIOS( 9, "bios9", "epr-21577e (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 9, "epr-21577e.bin", 0x000000, 0x200000, CRC(cf36e97b) SHA1(b085305982e7572e58b03a9d35f17ae319c3bbc6) ) \ + ROM_SYSTEM_BIOS( 10, "bios10", "epr-21577d (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 10, "epr-21577d.bin", 0x000000, 0x200000, CRC(60ddcbbe) SHA1(58b15096d269d6df617ca1810b66b47deb184958) ) \ ROM_SYSTEM_BIOS( 11, "bios11", "Ferrari F355 (Export)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 11, "epr-22851.bin", 0x000000, 0x200000, CRC(62483677) SHA1(3e3bcacf5f972c376b569f45307ee7fd0b5031b7) ) \ ROM_SYSTEM_BIOS( 12, "bios12", "Ferrari F355 (USA)" ) \ @@ -1102,24 +1151,25 @@ Scan ROM for the text string "LOADING TEST MODE NOW" back up four (4) bytes for /* only revisions d and higher support the GDROM, and there is an additional bios (and SH4!) on the DIMM board for the CD Controller */ +/* bios e works, the newer japan one gives 'board malfunction' with some games?' */ #define NAOMIGD_BIOS \ ROM_REGION( 0x200000, "maincpu", 0) \ - ROM_SYSTEM_BIOS( 0, "bios0", "epr-21578e (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21578e.bin", 0x000000, 0x200000, CRC(087f09a3) SHA1(0418eb2cf9766f0b1b874a4e92528779e22c0a4a) ) \ - ROM_SYSTEM_BIOS( 1, "bios1", "epr-21578d (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-21578d.bin", 0x000000, 0x200000, CRC(dfd5f42a) SHA1(614a0db4743a5e5a206190d6786ade24325afbfd) ) \ - ROM_SYSTEM_BIOS( 2, "bios2", "epr-21577e (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-21577e.bin", 0x000000, 0x200000, CRC(cf36e97b) SHA1(b085305982e7572e58b03a9d35f17ae319c3bbc6) ) \ - ROM_SYSTEM_BIOS( 3, "bios3", "epr-21577d (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-21577d.bin", 0x000000, 0x200000, CRC(60ddcbbe) SHA1(58b15096d269d6df617ca1810b66b47deb184958) ) \ - ROM_SYSTEM_BIOS( 4, "bios4", "epr-21576h (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-21576h.bin", 0x000000, 0x200000, CRC(d4895685) SHA1(91424d481ff99a8d3f4c45cea6d3f0eada049a6d) ) \ - ROM_SYSTEM_BIOS( 5, "bios5", "epr-21576g (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-21576g.bin", 0x000000, 0x200000, CRC(d2a1c6bf) SHA1(6d27d71aec4dfba98f66316ae74a1426d567698a) ) \ - ROM_SYSTEM_BIOS( 6, "bios6", "epr-21576e (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-21576e.bin", 0x000000, 0x200000, CRC(08c0add7) SHA1(e7c1a7673cb2ccb21748ef44105e46d1bad7266d) ) \ - ROM_SYSTEM_BIOS( 7, "bios7", "epr-21576d (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-21576d.bin", 0x000000, 0x200000, CRC(3b2afa7b) SHA1(d007e1d321c198a38c5baff86eb2ab84385d150a) ) \ + ROM_SYSTEM_BIOS( 0, "bios0", "epr-21576e (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21576e.bin", 0x000000, 0x200000, CRC(08c0add7) SHA1(e7c1a7673cb2ccb21748ef44105e46d1bad7266d) ) \ + ROM_SYSTEM_BIOS( 1, "bios1", "epr-21576g (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-21576g.bin", 0x000000, 0x200000, CRC(d2a1c6bf) SHA1(6d27d71aec4dfba98f66316ae74a1426d567698a) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "epr-21576h (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-21576h.bin", 0x000000, 0x200000, CRC(d4895685) SHA1(91424d481ff99a8d3f4c45cea6d3f0eada049a6d) ) \ + ROM_SYSTEM_BIOS( 3, "bios3", "epr-21576d (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-21576d.bin", 0x000000, 0x200000, CRC(3b2afa7b) SHA1(d007e1d321c198a38c5baff86eb2ab84385d150a) ) \ + ROM_SYSTEM_BIOS( 4, "bios4", "epr-21578e (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-21578e.bin", 0x000000, 0x200000, CRC(087f09a3) SHA1(0418eb2cf9766f0b1b874a4e92528779e22c0a4a) ) \ + ROM_SYSTEM_BIOS( 5, "bios5", "epr-21578d (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-21578d.bin", 0x000000, 0x200000, CRC(dfd5f42a) SHA1(614a0db4743a5e5a206190d6786ade24325afbfd) ) \ + ROM_SYSTEM_BIOS( 6, "bios6", "epr-21577e (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-21577e.bin", 0x000000, 0x200000, CRC(cf36e97b) SHA1(b085305982e7572e58b03a9d35f17ae319c3bbc6) ) \ + ROM_SYSTEM_BIOS( 7, "bios7", "epr-21577d (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-21577d.bin", 0x000000, 0x200000, CRC(60ddcbbe) SHA1(58b15096d269d6df617ca1810b66b47deb184958) ) \ ROM_REGION( 0x200000, "user2", 0) \ ROM_LOAD16_WORD_SWAP( "fpr-23489c.ic14", 0x000000, 0x200000, CRC(bc38bea1) SHA1(b36fcc6902f397d9749e9d02de1bbb7a5e29d468) ) \ @@ -1152,22 +1202,22 @@ Region byte encoding is as follows: #define NAOMI2_BIOS \ ROM_REGION( 0x200000, "maincpu", 0) \ - ROM_SYSTEM_BIOS( 0, "bios0", "epr-23608b (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-23608b.bin", 0x000000, 0x200000, CRC(a554b1e3) SHA1(343b727a3619d1c75a9b6d4cc156a9050447f155) ) \ - ROM_SYSTEM_BIOS( 1, "bios1", "epr-23608 (Export)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-23608.bin", 0x000000, 0x200000, CRC(929cc3a6) SHA1(47d00c818de23f733a4a33b1bbc72eb8aa729246) ) \ - ROM_SYSTEM_BIOS( 2, "bios2", "epr-23607b (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-23607b.bin", 0x000000, 0x200000, CRC(f308c5e9) SHA1(5470ab1cee6afecbd8ca8cf40f8fbe4ec2cb1471) ) \ - ROM_SYSTEM_BIOS( 3, "bios3", "epr-23607 (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-23607.bin", 0x000000, 0x200000, CRC(2b55add2) SHA1(547de5f97d3183c8cd069c4fa3c09f13d8b637d9) ) \ - ROM_SYSTEM_BIOS( 4, "bios4", "epr-23605c (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-23605c.bin", 0x000000, 0x200000, CRC(297ea6ed) SHA1(cfbfe57c80e6ee86a101fa83aec0a01e00c0f42a) ) \ - ROM_SYSTEM_BIOS( 5, "bios5", "epr-23605b (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-23605b.bin", 0x000000, 0x200000, CRC(3a3242d4) SHA1(aaca4df51ef91d926f8191d372f3dfe1d20d9484) ) \ - ROM_SYSTEM_BIOS( 6, "bios6", "epr-23605a (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-23605a.bin", 0x000000, 0x200000, CRC(7bc3fc2d) SHA1(a4a9531a7c66ff30046908cf71f6c7b6fb59c392) ) \ - ROM_SYSTEM_BIOS( 7, "bios7", "epr-23605 (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-23605.bin", 0x000000, 0x200000, CRC(5731e446) SHA1(787b0844fc408cf124c12405c095c59948709ea6) ) + ROM_SYSTEM_BIOS( 0, "bios0", "epr-23605c (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-23605c.bin", 0x000000, 0x200000, CRC(297ea6ed) SHA1(cfbfe57c80e6ee86a101fa83aec0a01e00c0f42a) ) \ + ROM_SYSTEM_BIOS( 1, "bios1", "epr-23605b (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-23605b.bin", 0x000000, 0x200000, CRC(3a3242d4) SHA1(aaca4df51ef91d926f8191d372f3dfe1d20d9484) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "epr-23605a (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-23605a.bin", 0x000000, 0x200000, CRC(7bc3fc2d) SHA1(a4a9531a7c66ff30046908cf71f6c7b6fb59c392) ) \ + ROM_SYSTEM_BIOS( 3, "bios3", "epr-23605 (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 3, "epr-23605.bin", 0x000000, 0x200000, CRC(5731e446) SHA1(787b0844fc408cf124c12405c095c59948709ea6) ) \ + ROM_SYSTEM_BIOS( 4, "bios4", "epr-23608b (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 4, "epr-23608b.bin", 0x000000, 0x200000, CRC(a554b1e3) SHA1(343b727a3619d1c75a9b6d4cc156a9050447f155) ) \ + ROM_SYSTEM_BIOS( 5, "bios5", "epr-23608 (Export)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 5, "epr-23608.bin", 0x000000, 0x200000, CRC(929cc3a6) SHA1(47d00c818de23f733a4a33b1bbc72eb8aa729246) ) \ + ROM_SYSTEM_BIOS( 6, "bios6", "epr-23607b (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 6, "epr-23607b.bin", 0x000000, 0x200000, CRC(f308c5e9) SHA1(5470ab1cee6afecbd8ca8cf40f8fbe4ec2cb1471) ) \ + ROM_SYSTEM_BIOS( 7, "bios7", "epr-23607 (USA)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 7, "epr-23607.bin", 0x000000, 0x200000, CRC(2b55add2) SHA1(547de5f97d3183c8cd069c4fa3c09f13d8b637d9) ) \ /* this is one flashrom, however the second half looks like it's used for game settings, may differ between dumps, and may not be needed / could be blanked */ #define AW_BIOS \ diff --git a/src/mame/machine/dc.c b/src/mame/machine/dc.c index c53cab1b417..04ea875822f 100644 --- a/src/mame/machine/dc.c +++ b/src/mame/machine/dc.c @@ -124,7 +124,7 @@ UINT32 dc_coin_counts[2]; static UINT32 maple_regs[0x100/4]; static UINT32 dc_rtcregister[4]; static UINT32 g1bus_regs[0x100/4]; -static UINT8 maple0x86data1[0x80]; +UINT8 maple0x86data1[0x80]; static UINT8 maple0x86data2[0x400]; static emu_timer *dc_rtc_timer; @@ -934,8 +934,6 @@ MACHINE_START( dc ) MACHINE_RESET( dc ) { - int a; - /* halt the ARM7 */ cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE); @@ -948,14 +946,6 @@ MACHINE_RESET( dc ) timer_adjust_periodic(dc_rtc_timer, attotime_zero, 0, ATTOTIME_IN_SEC(1)); dc_sysctrl_regs[SB_SBREV] = 0x0b; - for (a=0;a < 0x80;a++) - maple0x86data1[a]=0x11+a; - - // checksums - maple0x86data1[0]=0xb9; - maple0x86data1[1]=0xb1; - maple0x86data1[18]=0xb8; - maple0x86data1[19]=0x8a; } READ64_DEVICE_HANDLER( dc_aica_reg_r )