Adds 7MHz XTAL to xtal.h

Corrects clock speeds for the megasys1.c boards.

Yes... the games actually are _THAT_ slow!
This commit is contained in:
Brian Troha 2008-02-21 23:29:51 +00:00
parent 2e217896e8
commit a9d8713a91
2 changed files with 30 additions and 47 deletions

View File

@ -57,6 +57,7 @@ enum
XTAL_5MHz = 5000000, /* Mutant Night */ XTAL_5MHz = 5000000, /* Mutant Night */
XTAL_6MHz = 6000000, XTAL_6MHz = 6000000,
XTAL_6_144MHz = 6144000, /* Used on Alpha Denshi early 80's games sound board */ XTAL_6_144MHz = 6144000, /* Used on Alpha Denshi early 80's games sound board */
XTAL_7MHz = 7000000, /* Jaleco Mega System PCBs */
XTAL_7_15909MHz = 7159090, /* Blood Bros */ XTAL_7_15909MHz = 7159090, /* Blood Bros */
XTAL_7_3728MHz = 7372800, XTAL_7_3728MHz = 7372800,
XTAL_8MHz = 8000000, /* Extremely common, used on 100's of PCBs */ XTAL_8MHz = 8000000, /* Extremely common, used on 100's of PCBs */
@ -64,7 +65,7 @@ enum
XTAL_10MHz = 10000000, XTAL_10MHz = 10000000,
XTAL_10_595MHz = 10595000, /* Mad Alien */ XTAL_10_595MHz = 10595000, /* Mad Alien */
XTAL_10_738635MHz = 10738635, /* TMS9918 family */ XTAL_10_738635MHz = 10738635, /* TMS9918 family */
XTAL_11MHz = 11000000, /* Mario I8039 sound */ XTAL_11MHz = 11000000, /* Mario I8039 sound */
XTAL_11_0592MHz = 11059200, /* Lethal Justice */ XTAL_11_0592MHz = 11059200, /* Lethal Justice */
XTAL_11_2MHz = 11200000, /* New York, New York */ XTAL_11_2MHz = 11200000, /* New York, New York */
XTAL_11_289MHz = 11289000, /* Vanguard */ XTAL_11_289MHz = 11289000, /* Vanguard */
@ -81,7 +82,7 @@ enum
XTAL_14_31818MHz = 14318180, /* Extremely common, used on 100's of PCBs */ XTAL_14_31818MHz = 14318180, /* Extremely common, used on 100's of PCBs */
XTAL_14_705882MHz = 14705882, /* Aleck64 */ XTAL_14_705882MHz = 14705882, /* Aleck64 */
XTAL_14_7456MHz = 14745600, /* Namco System 12 & System Super 22/23 for H8/3002 CPU */ XTAL_14_7456MHz = 14745600, /* Namco System 12 & System Super 22/23 for H8/3002 CPU */
XTAL_15MHz = 15000000, /* Sinclair QL */ XTAL_15MHz = 15000000, /* Sinclair QL */
XTAL_15_468MHz = 15468000, /* Bank Panic h/w, Sega G80 */ XTAL_15_468MHz = 15468000, /* Bank Panic h/w, Sega G80 */
XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */ XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */
XTAL_16_9344MHz = 16934400, /* Usually used to drive 90's Yamaha OPL/FM chips */ XTAL_16_9344MHz = 16934400, /* Usually used to drive 90's Yamaha OPL/FM chips */
@ -132,8 +133,8 @@ enum
XTAL_66_6667MHz = 66666700, /* later Midway games */ XTAL_66_6667MHz = 66666700, /* later Midway games */
XTAL_67_7376MHz = 67737600, /* PSX-based h/w, Sony ZN1-2-based */ XTAL_67_7376MHz = 67737600, /* PSX-based h/w, Sony ZN1-2-based */
XTAL_73_728MHz = 73728000, /* Ms. Pac-Man/Galaga 20th Anniversary */ XTAL_73_728MHz = 73728000, /* Ms. Pac-Man/Galaga 20th Anniversary */
XTAL_100MHz = 100000000, /* PSX-based Namco System 12, Vegas, Sony ZN1-2-based */ XTAL_100MHz = 100000000, /* PSX-based Namco System 12, Vegas, Sony ZN1-2-based */
XTAL_101_4912MHz = 101491200, /* PSX-based Namco System 10 */ XTAL_101_4912MHz = 101491200, /* PSX-based Namco System 10 */
/* Resonators (There are probably more. Almost always used for driving OKI sound chips) */ /* Resonators (There are probably more. Almost always used for driving OKI sound chips) */
@ -141,7 +142,7 @@ enum
XTAL_400kHz = 400000, /* Used on Great Swordman h/w */ XTAL_400kHz = 400000, /* Used on Great Swordman h/w */
XTAL_455kHz = 455000, /* Used on Gladiator h/w */ XTAL_455kHz = 455000, /* Used on Gladiator h/w */
XTAL_640kHz = 640000, XTAL_640kHz = 640000,
XTAL_1_056MHz = 1056000 /* used on Trio The Punch */ XTAL_1_056MHz = 1056000 /* used on Trio The Punch */
}; };

View File

@ -102,14 +102,6 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
bootleg version of rodlandj has one instruction patched out to do exactly bootleg version of rodlandj has one instruction patched out to do exactly
the same thing that we are doing (ignoring the 6295 status). the same thing that we are doing (ignoring the 6295 status).
- Iganinju doesn't work properly: I have to patch lev3 irq and it severely
slows down at times. Strangely, it gets *better* by lowering the main CPU
clock from 12 to 7 MHz.
This is likely an interrupt timing issue: changing the order in
interrupt_A() from 3 2 1 to 1 2 3 makes it work reasonably well for a very
short while.
( Fixed by Kale 21 May 2002 )
- VERY bad sprite lag in iganinju and plusalph and generally others. - VERY bad sprite lag in iganinju and plusalph and generally others.
Is this a sprites buffer issue ? Is this a sprites buffer issue ?
@ -118,6 +110,12 @@ RAM RW 0f0000-0f3fff 0e0000-0effff? <
***************************************************************************/ ***************************************************************************/
#define SYS_A_CPU_CLOCK (XTAL_12MHz / 2) /* clock for main 68000 */
#define SYS_B_CPU_CLOCK XTAL_8MHz /* clock for main 68000 */
#define SYS_C_CPU_CLOCK (XTAL_24MHz / 2) /* clock for main 68000 */
#define SOUND_CPU_CLOCK XTAL_7MHz /* clock for sound 68000 */
#define OKI4_SOUND_CLOCK XTAL_4MHz
#include "driver.h" #include "driver.h"
#include "deprecat.h" #include "deprecat.h"
#include "megasys1.h" #include "megasys1.h"
@ -197,18 +195,6 @@ static INTERRUPT_GEN( interrupt_A )
} }
} }
static INTERRUPT_GEN( interrupt_A_iganinju )
{
switch ( cpu_getiloops() )
{
case 0: cpunum_set_input_line(machine, 0, 2, HOLD_LINE); break;
case 1: cpunum_set_input_line(machine, 0, 1, HOLD_LINE); break;
// case 2: cpunum_set_input_line(machine, 0, 1, HOLD_LINE); break;
}
}
static ADDRESS_MAP_START( readmem_A, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( readmem_A, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(20) ) ADDRESS_MAP_FLAGS( AMEF_ABITS(20) )
@ -648,11 +634,11 @@ static const struct YM2151interface ym2151_interface =
static MACHINE_DRIVER_START( system_A ) static MACHINE_DRIVER_START( system_A )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD_TAG("main", M68000, 12000000) MDRV_CPU_ADD_TAG("main", M68000, SYS_A_CPU_CLOCK) /* 6MHz verified */
MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A) MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A)
MDRV_CPU_VBLANK_INT(interrupt_A,INTERRUPT_NUM_A) MDRV_CPU_VBLANK_INT(interrupt_A,INTERRUPT_NUM_A)
MDRV_CPU_ADD_TAG("sound", M68000, 7000000) MDRV_CPU_ADD_TAG("sound", M68000, SOUND_CPU_CLOCK) /* 7MHz verified */
/* audio CPU */ /* audio CPU */
MDRV_CPU_PROGRAM_MAP(sound_readmem_A,sound_writemem_A) MDRV_CPU_PROGRAM_MAP(sound_readmem_A,sound_writemem_A)
@ -678,30 +664,22 @@ static MACHINE_DRIVER_START( system_A )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right") MDRV_SPEAKER_STANDARD_STEREO("left", "right")
MDRV_SOUND_ADD(YM2151, 7000000/2) MDRV_SOUND_ADD(YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz verified */
MDRV_SOUND_CONFIG(ym2151_interface) MDRV_SOUND_CONFIG(ym2151_interface)
MDRV_SOUND_ROUTE(0, "left", 0.80) MDRV_SOUND_ROUTE(0, "left", 0.80)
MDRV_SOUND_ROUTE(1, "right", 0.80) MDRV_SOUND_ROUTE(1, "right", 0.80)
MDRV_SOUND_ADD_TAG("OKI1",OKIM6295, 4000000) MDRV_SOUND_ADD_TAG("OKI1",OKIM6295, OKI4_SOUND_CLOCK) /* 4MHz verified */
MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30)
MDRV_SOUND_ADD_TAG("OKI2",OKIM6295, 4000000) MDRV_SOUND_ADD_TAG("OKI2",OKIM6295, OKI4_SOUND_CLOCK) /* 4MHz verified */
MDRV_SOUND_CONFIG(okim6295_interface_region_2_pin7high) MDRV_SOUND_CONFIG(okim6295_interface_region_2_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30)
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( system_A_iganinju )
/* basic machine hardware */
MDRV_IMPORT_FROM(system_A)
MDRV_CPU_MODIFY("main")
MDRV_CPU_VBLANK_INT(interrupt_A_iganinju,INTERRUPT_NUM_A)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( system_A_hachoo ) static MACHINE_DRIVER_START( system_A_hachoo )
MDRV_IMPORT_FROM(system_A) MDRV_IMPORT_FROM(system_A)
MDRV_MACHINE_RESET(megasys1_hachoo) MDRV_MACHINE_RESET(megasys1_hachoo)
@ -711,6 +689,8 @@ static MACHINE_DRIVER_START( system_B )
/* basic machine hardware */ /* basic machine hardware */
MDRV_IMPORT_FROM(system_A) MDRV_IMPORT_FROM(system_A)
MDRV_CPU_REPLACE("main", M68000, SYS_B_CPU_CLOCK) /* 8MHz */
MDRV_CPU_MODIFY("main") MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(readmem_B,writemem_B) MDRV_CPU_PROGRAM_MAP(readmem_B,writemem_B)
MDRV_CPU_VBLANK_INT(interrupt_B,INTERRUPT_NUM_B) MDRV_CPU_VBLANK_INT(interrupt_B,INTERRUPT_NUM_B)
@ -723,14 +703,13 @@ static MACHINE_DRIVER_START( system_B_hayaosi1 )
/* basic machine hardware */ /* basic machine hardware */
MDRV_IMPORT_FROM(system_B) MDRV_IMPORT_FROM(system_B)
MDRV_CPU_REPLACE("main", M68000, 8000000)
MDRV_SOUND_REPLACE("OKI1",OKIM6295, 2000000) MDRV_SOUND_REPLACE("OKI1",OKIM6295, 2000000) /* correct speed, but unknown OSC + divider combo */
MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30)
MDRV_SOUND_REPLACE("OKI2",OKIM6295, 2000000) MDRV_SOUND_REPLACE("OKI2",OKIM6295, 2000000) /* correct speed, but unknown OSC + divider combo */
MDRV_SOUND_CONFIG(okim6295_interface_region_2_pin7high) MDRV_SOUND_CONFIG(okim6295_interface_region_2_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.30)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.30)
@ -741,6 +720,7 @@ static MACHINE_DRIVER_START( system_C )
/* basic machine hardware */ /* basic machine hardware */
MDRV_IMPORT_FROM(system_A) MDRV_IMPORT_FROM(system_A)
MDRV_CPU_REPLACE("main", M68000, SYS_C_CPU_CLOCK) /* 12MHz */
MDRV_CPU_MODIFY("main") MDRV_CPU_MODIFY("main")
MDRV_CPU_PROGRAM_MAP(readmem_C,writemem_C) MDRV_CPU_PROGRAM_MAP(readmem_C,writemem_C)
MDRV_CPU_VBLANK_INT(interrupt_C,INTERRUPT_NUM_C) MDRV_CPU_VBLANK_INT(interrupt_C,INTERRUPT_NUM_C)
@ -764,7 +744,7 @@ KLOV entry for peekaboo: Jaleco board no. PB-92127A. Main CPU: Motorola 68000P10
static MACHINE_DRIVER_START( system_D ) static MACHINE_DRIVER_START( system_D )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD(M68000, 10000000) /* ? */ MDRV_CPU_ADD(M68000, 8000000) /* 8MHz?? */
MDRV_CPU_PROGRAM_MAP(readmem_D,writemem_D) MDRV_CPU_PROGRAM_MAP(readmem_D,writemem_D)
MDRV_CPU_VBLANK_INT(interrupt_D,INTERRUPT_NUM_D) MDRV_CPU_VBLANK_INT(interrupt_D,INTERRUPT_NUM_D)
@ -825,12 +805,12 @@ static const struct YM2203interface ym2203_interface =
static MACHINE_DRIVER_START( system_Z ) static MACHINE_DRIVER_START( system_Z )
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD(M68000, 6000000) /* ??? */ MDRV_CPU_ADD(M68000, SYS_A_CPU_CLOCK) /* 6MHz (12MHz / 2) */
MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A) MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A)
MDRV_CPU_VBLANK_INT(interrupt_A,INTERRUPT_NUM_A) MDRV_CPU_VBLANK_INT(interrupt_A,INTERRUPT_NUM_A)
MDRV_CPU_ADD(Z80, 3000000) MDRV_CPU_ADD(Z80, 3000000) /* OSC 12MHz divided by 4 ??? */
/* audio CPU */ /* ??? */ /* audio CPU */
MDRV_CPU_PROGRAM_MAP(sound_readmem_z80,sound_writemem_z80) MDRV_CPU_PROGRAM_MAP(sound_readmem_z80,sound_writemem_z80)
MDRV_CPU_IO_MAP(sound_readport,sound_writeport) MDRV_CPU_IO_MAP(sound_readport,sound_writeport)
@ -3960,8 +3940,10 @@ GAME( 1988, p47j, p47, system_A, p47, 0, ROT0, "
GAME( 1988, kickoff, 0, system_A, kickoff, 0, ROT0, "Jaleco", "Kick Off (Japan)", 0 ) GAME( 1988, kickoff, 0, system_A, kickoff, 0, ROT0, "Jaleco", "Kick Off (Japan)", 0 )
GAME( 1988, tshingen, 0, system_A, tshingen, phantasm, ROT0, "Jaleco", "Takeda Shingen (Japan, Japanese)", 0 ) GAME( 1988, tshingen, 0, system_A, tshingen, phantasm, ROT0, "Jaleco", "Takeda Shingen (Japan, Japanese)", 0 )
GAME( 1988, tshingna, tshingen, system_A, tshingen, phantasm, ROT0, "Jaleco", "Shingen Samurai-Fighter (Japan, English)", 0 ) GAME( 1988, tshingna, tshingen, system_A, tshingen, phantasm, ROT0, "Jaleco", "Shingen Samurai-Fighter (Japan, English)", 0 )
GAME( 1988, kazan, 0, system_A_iganinju, kazan, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", 0 ) GAME( 1988, kazan, 0, system_A, kazan, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", 0 )
GAME( 1988, iganinju, kazan, system_A_iganinju, kazan, iganinju, ROT0, "Jaleco", "Iga Ninjyutsuden (Japan)", 0 ) GAME( 1988, iganinju, kazan, system_A, kazan, iganinju, ROT0, "Jaleco", "Iga Ninjyutsuden (Japan)", 0 )
//GAME( 1988, kazan, 0, system_A_iganinju, kazan, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", 0 )
//GAME( 1988, iganinju, kazan, system_A_iganinju, kazan, iganinju, ROT0, "Jaleco", "Iga Ninjyutsuden (Japan)", 0 )
GAME( 1989, astyanax, 0, system_A, astyanax, astyanax, ROT0, "Jaleco", "The Astyanax", 0 ) GAME( 1989, astyanax, 0, system_A, astyanax, astyanax, ROT0, "Jaleco", "The Astyanax", 0 )
GAME( 1989, lordofk, astyanax, system_A, astyanax, astyanax, ROT0, "Jaleco", "The Lord of King (Japan)", 0 ) GAME( 1989, lordofk, astyanax, system_A, astyanax, astyanax, ROT0, "Jaleco", "The Lord of King (Japan)", 0 )
GAME( 1989, hachoo, 0, system_A_hachoo, hachoo, hachoo, ROT0, "Jaleco", "Hachoo!", 0 ) GAME( 1989, hachoo, 0, system_A_hachoo, hachoo, hachoo, ROT0, "Jaleco", "Hachoo!", 0 )