mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
Bumped version to 0.122u2. Spacing cleanups.
This commit is contained in:
parent
460437f8d1
commit
0e20c80517
@ -48,9 +48,9 @@
|
|||||||
#define FP_XFD(r) *( (double *)(sh4.xf+(r)) ) // double precision extended floating point register r
|
#define FP_XFD(r) *( (double *)(sh4.xf+(r)) ) // double precision extended floating point register r
|
||||||
#ifdef LSB_FIRST
|
#ifdef LSB_FIRST
|
||||||
#define FP_RS2(r) sh4.fr[(r) ^ sh4.fpu_pr]
|
#define FP_RS2(r) sh4.fr[(r) ^ sh4.fpu_pr]
|
||||||
#define FP_RFS2(r) *( (float *)(sh4.fr+((r) ^ sh4.fpu_pr)) )
|
#define FP_RFS2(r) *( (float *)(sh4.fr+((r) ^ sh4.fpu_pr)) )
|
||||||
#define FP_XS2(r) sh4.xf[(r) ^ sh4.fpu_pr]
|
#define FP_XS2(r) sh4.xf[(r) ^ sh4.fpu_pr]
|
||||||
#define FP_XFS2(r) *( (float *)(sh4.xf+((r) ^ sh4.fpu_pr)) )
|
#define FP_XFS2(r) *( (float *)(sh4.xf+((r) ^ sh4.fpu_pr)) )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -3094,13 +3094,13 @@ INLINE void FMOVFR(UINT32 m,UINT32 n)
|
|||||||
/* FLDI1 FRn 1111nnnn10011101 */
|
/* FLDI1 FRn 1111nnnn10011101 */
|
||||||
INLINE void FLDI1(UINT32 n)
|
INLINE void FLDI1(UINT32 n)
|
||||||
{
|
{
|
||||||
sh4.fr[n] = 0x3F800000;
|
sh4.fr[n] = 0x3F800000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FLDI0 FRn 1111nnnn10001101 */
|
/* FLDI0 FRn 1111nnnn10001101 */
|
||||||
INLINE void FLDI0(UINT32 n)
|
INLINE void FLDI0(UINT32 n)
|
||||||
{
|
{
|
||||||
sh4.fr[n] = 0;
|
sh4.fr[n] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FLDS FRm,FPUL 1111mmmm00011101 */
|
/* FLDS FRm,FPUL 1111mmmm00011101 */
|
||||||
@ -3233,10 +3233,10 @@ INLINE void FCNVDS(UINT32 n)
|
|||||||
if (sh4.fpu_pr) { /* PR = 1 */
|
if (sh4.fpu_pr) { /* PR = 1 */
|
||||||
n = n & 14;
|
n = n & 14;
|
||||||
#ifdef LSB_FIRST
|
#ifdef LSB_FIRST
|
||||||
if (sh4.fpscr & RM)
|
if (sh4.fpscr & RM)
|
||||||
sh4.fr[n] &= 0xe0000000; /* round toward zero*/
|
sh4.fr[n] &= 0xe0000000; /* round toward zero*/
|
||||||
#else
|
#else
|
||||||
if (sh4.fpscr & RM)
|
if (sh4.fpscr & RM)
|
||||||
sh4.fr[n | 1] &= 0xe0000000; /* round toward zero*/
|
sh4.fr[n | 1] &= 0xe0000000; /* round toward zero*/
|
||||||
#endif
|
#endif
|
||||||
*((float *)&sh4.fpul) = (float)FP_RFD(n);
|
*((float *)&sh4.fpul) = (float)FP_RFD(n);
|
||||||
|
@ -318,8 +318,8 @@ static void check_irqs(void)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* external interrupts are level-sensitive on the '31 and can be
|
/* external interrupts are level-sensitive on the '31 and can be
|
||||||
configured as such on the '32; in that case, if the external
|
configured as such on the '32; in that case, if the external
|
||||||
signal is high, we need to update the value in IF accordingly */
|
signal is high, we need to update the value in IF accordingly */
|
||||||
if (!tms32031.is_32032 || (IREG(TMR_ST) & 0x4000) == 0)
|
if (!tms32031.is_32032 || (IREG(TMR_ST) & 0x4000) == 0)
|
||||||
IREG(TMR_IF) |= tms32031.irq_state & 0x0f;
|
IREG(TMR_IF) |= tms32031.irq_state & 0x0f;
|
||||||
|
|
||||||
@ -341,13 +341,13 @@ static void check_irqs(void)
|
|||||||
if (!tms32031.delayed)
|
if (!tms32031.delayed)
|
||||||
{
|
{
|
||||||
UINT16 intmask = 1 << (whichtrap - 1);
|
UINT16 intmask = 1 << (whichtrap - 1);
|
||||||
|
|
||||||
/* bit in IF is cleared when interrupt is taken */
|
/* bit in IF is cleared when interrupt is taken */
|
||||||
IREG(TMR_IF) &= ~intmask;
|
IREG(TMR_IF) &= ~intmask;
|
||||||
trap(whichtrap);
|
trap(whichtrap);
|
||||||
|
|
||||||
/* after auto-clearing the interrupt bit, we need to re-trigger
|
/* after auto-clearing the interrupt bit, we need to re-trigger
|
||||||
level-sensitive interrupts */
|
level-sensitive interrupts */
|
||||||
if (!tms32031.is_32032 || (IREG(TMR_ST) & 0x4000) == 0)
|
if (!tms32031.is_32032 || (IREG(TMR_ST) & 0x4000) == 0)
|
||||||
IREG(TMR_IF) |= tms32031.irq_state & 0x0f;
|
IREG(TMR_IF) |= tms32031.irq_state & 0x0f;
|
||||||
}
|
}
|
||||||
@ -359,7 +359,7 @@ static void check_irqs(void)
|
|||||||
static void set_irq_line(int irqline, int state)
|
static void set_irq_line(int irqline, int state)
|
||||||
{
|
{
|
||||||
UINT16 intmask = 1 << irqline;
|
UINT16 intmask = 1 << irqline;
|
||||||
|
|
||||||
/* ignore anything out of range */
|
/* ignore anything out of range */
|
||||||
if (irqline >= 12)
|
if (irqline >= 12)
|
||||||
return;
|
return;
|
||||||
|
@ -40,7 +40,7 @@ static int speech_rom_read_bit(void)
|
|||||||
const UINT8 *table = memory_region(info->intf->rom_region);
|
const UINT8 *table = memory_region(info->intf->rom_region);
|
||||||
|
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (info->speech_rom_bitnum<0)
|
if (info->speech_rom_bitnum<0)
|
||||||
r = 0;
|
r = 0;
|
||||||
else
|
else
|
||||||
@ -55,7 +55,7 @@ static void speech_rom_set_addr(int addr)
|
|||||||
{
|
{
|
||||||
struct tms5110_info *info = sndti_token(SOUND_TMS5110, 0);
|
struct tms5110_info *info = sndti_token(SOUND_TMS5110, 0);
|
||||||
|
|
||||||
info->speech_rom_bitnum = addr * 8 - 1;
|
info->speech_rom_bitnum = addr * 8 - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -1395,7 +1395,7 @@ void dsd_566_reset(node_description *node)
|
|||||||
#define DSD_LS624__C (*(node->input[3]))
|
#define DSD_LS624__C (*(node->input[3]))
|
||||||
#define DSD_LS624__OUTTYPE (*(node->input[4]))
|
#define DSD_LS624__OUTTYPE (*(node->input[4]))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These formulas are derived from diagrams in the datasheet!
|
* These formulas are derived from diagrams in the datasheet!
|
||||||
* They are not based on any law. The function is not
|
* They are not based on any law. The function is not
|
||||||
* described anywhere.
|
* described anywhere.
|
||||||
@ -1459,7 +1459,7 @@ void dsd_ls624_reset(node_description *node)
|
|||||||
context->remain = 0;
|
context->remain = 0;
|
||||||
context->state = 0;
|
context->state = 0;
|
||||||
context->outtype = DSD_LS624__OUTTYPE;
|
context->outtype = DSD_LS624__OUTTYPE;
|
||||||
|
|
||||||
/* Step the output */
|
/* Step the output */
|
||||||
dsd_ls624_step(node);
|
dsd_ls624_step(node);
|
||||||
}
|
}
|
||||||
|
@ -2932,13 +2932,13 @@
|
|||||||
* DISCRETE_74LS624 - VCO.
|
* DISCRETE_74LS624 - VCO.
|
||||||
*
|
*
|
||||||
* Simplified 74LS624 - calculated frequencies should match datasheet
|
* Simplified 74LS624 - calculated frequencies should match datasheet
|
||||||
* for C > 1nF. Output is Logic (1/0)
|
* for C > 1nF. Output is Logic (1/0)
|
||||||
*
|
*
|
||||||
* The datasheet gives no formulae. The implementation therefore is
|
* The datasheet gives no formulae. The implementation therefore is
|
||||||
* a rough model of the diagrams given.
|
* a rough model of the diagrams given.
|
||||||
*
|
*
|
||||||
* For a LS628, use VRng = 3.2
|
* For a LS628, use VRng = 3.2
|
||||||
*
|
*
|
||||||
* V+
|
* V+
|
||||||
* |
|
* |
|
||||||
* .---------.
|
* .---------.
|
||||||
@ -2953,7 +2953,7 @@
|
|||||||
* | | |
|
* | | |
|
||||||
* '---|CX2 |
|
* '---|CX2 |
|
||||||
* '---------'
|
* '---------'
|
||||||
* |
|
* |
|
||||||
* GND
|
* GND
|
||||||
*
|
*
|
||||||
* Declaration syntax
|
* Declaration syntax
|
||||||
@ -2963,14 +2963,14 @@
|
|||||||
* vMod node or static value,
|
* vMod node or static value,
|
||||||
* vRng node or static value,
|
* vRng node or static value,
|
||||||
* C node or static value in Farads,
|
* C node or static value in Farads,
|
||||||
* Type of output static value)
|
* Type of output static value)
|
||||||
*
|
*
|
||||||
* Type of Output
|
* Type of Output
|
||||||
* DISC_LS624_OUT_ENERGY Energy - use for audio output
|
* DISC_LS624_OUT_ENERGY Energy - use for audio output
|
||||||
* DISC_LS624_OUT_LOGIC Logic ( 0 or 1)
|
* DISC_LS624_OUT_LOGIC Logic ( 0 or 1)
|
||||||
* DISC_LS624_OUT_COUNT_F Number of Falling edges
|
* DISC_LS624_OUT_COUNT_F Number of Falling edges
|
||||||
* DISC_LS624_OUT_COUNT_R Number of Rising edges
|
* DISC_LS624_OUT_COUNT_R Number of Rising edges
|
||||||
*
|
*
|
||||||
***********************************************************************
|
***********************************************************************
|
||||||
*
|
*
|
||||||
* DISCRETE_CUSTOMx - Link to custom code
|
* DISCRETE_CUSTOMx - Link to custom code
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
|
|
||||||
TMS5110 simulator (modified from TMS5220 by Jarek Burczynski)
|
TMS5110 simulator (modified from TMS5220 by Jarek Burczynski)
|
||||||
|
|
||||||
Written for MAME by Frank Palazzolo
|
Written for MAME by Frank Palazzolo
|
||||||
With help from Neill Corlett
|
With help from Neill Corlett
|
||||||
Additional tweaking by Aaron Giles
|
Additional tweaking by Aaron Giles
|
||||||
Various fixes by Lord Nightmare
|
Various fixes by Lord Nightmare
|
||||||
Additional enhancements by Couriersud
|
Additional enhancements by Couriersud
|
||||||
|
|
||||||
Todo:
|
|
||||||
- implement CS
|
|
||||||
- implement missing commands
|
|
||||||
|
|
||||||
TMS5100:
|
|
||||||
|
|
||||||
+-----------------+
|
|
||||||
TST | 1 28 | CS
|
|
||||||
PDC | 2 27 | CTL8
|
|
||||||
ROM CK | 3 26 | ADD8
|
|
||||||
CPU CK | 4 25 | CTL1
|
|
||||||
VDD | 5 24 | ADD1
|
|
||||||
CR OSC | 6 23 | CTL2
|
|
||||||
RC OSC | 7 22 | ADD2
|
|
||||||
T11 | 8 21 | ADD4
|
|
||||||
NC | 9 20 | CTL4
|
|
||||||
I/O | 10 19 | M1
|
|
||||||
SPK1 | 11 18 | NC
|
|
||||||
SPK2 | 12 17 | NC
|
|
||||||
PROM OUT | 13 16 | NC
|
|
||||||
VSS | 14 15 | M0
|
|
||||||
+-----------------+
|
|
||||||
|
|
||||||
M58817
|
Todo:
|
||||||
|
- implement CS
|
||||||
|
- implement missing commands
|
||||||
|
|
||||||
The following connections could be derived from radar scope schematics.
|
TMS5100:
|
||||||
The M58817 is not 100% pin compatible to the 5100, but really close.
|
|
||||||
|
|
||||||
+-----------------+
|
+-----------------+
|
||||||
(NC) | 1 28 | CS
|
TST | 1 28 | CS
|
||||||
PDC | 2 27 | CTL8
|
PDC | 2 27 | CTL8
|
||||||
ROM CK | 3 26 | ADD8 (to 58819)
|
ROM CK | 3 26 | ADD8
|
||||||
(NC) | 4 25 | CTL1
|
CPU CK | 4 25 | CTL1
|
||||||
(VDD,-5) | 5 24 | ADD1 (to 58819)
|
VDD | 5 24 | ADD1
|
||||||
(GND) | 6 23 | CTL2
|
CR OSC | 6 23 | CTL2
|
||||||
Xin | 7 22 | ADD2 (to 58819)
|
RC OSC | 7 22 | ADD2
|
||||||
Xout | 8 21 | ADD4 (to 58819)
|
T11 | 8 21 | ADD4
|
||||||
(NC) | 9 20 | CTL4
|
NC | 9 20 | CTL4
|
||||||
(VDD,-5) | 10 19 | Status back to CPU
|
I/O | 10 19 | M1
|
||||||
(NC) | 11 18 | C1 (to 58819)
|
SPK1 | 11 18 | NC
|
||||||
SPKR | 12 17 | (NC)
|
SPK2 | 12 17 | NC
|
||||||
SPKR | 13 16 | C0 (to 58819)
|
PROM OUT | 13 16 | NC
|
||||||
(NC) | 14 15 | (5V)
|
VSS | 14 15 | M0
|
||||||
+-----------------+
|
+-----------------+
|
||||||
|
|
||||||
|
M58817
|
||||||
|
|
||||||
|
The following connections could be derived from radar scope schematics.
|
||||||
|
The M58817 is not 100% pin compatible to the 5100, but really close.
|
||||||
|
|
||||||
|
+-----------------+
|
||||||
|
(NC) | 1 28 | CS
|
||||||
|
PDC | 2 27 | CTL8
|
||||||
|
ROM CK | 3 26 | ADD8 (to 58819)
|
||||||
|
(NC) | 4 25 | CTL1
|
||||||
|
(VDD,-5) | 5 24 | ADD1 (to 58819)
|
||||||
|
(GND) | 6 23 | CTL2
|
||||||
|
Xin | 7 22 | ADD2 (to 58819)
|
||||||
|
Xout | 8 21 | ADD4 (to 58819)
|
||||||
|
(NC) | 9 20 | CTL4
|
||||||
|
(VDD,-5) | 10 19 | Status back to CPU
|
||||||
|
(NC) | 11 18 | C1 (to 58819)
|
||||||
|
SPKR | 12 17 | (NC)
|
||||||
|
SPKR | 13 16 | C0 (to 58819)
|
||||||
|
(NC) | 14 15 | (5V)
|
||||||
|
+-----------------+
|
||||||
|
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
||||||
@ -263,7 +263,7 @@ void tms5110_reset_chip(void *chip)
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
tms5110_set_M0_callback -- set M0 callback for the TMS5110
|
tms5110_set_M0_callback -- set M0 callback for the TMS5110
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ void tms5110_set_M0_callback(void *chip, int (*func)(void))
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
tms5110_set_load_address -- set M0 callback for the TMS5110
|
tms5110_set_load_address -- set M0 callback for the TMS5110
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ void tms5110_set_load_address(void *chip, void (*func)(int))
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
FIFO_data_write -- handle bit data write to the TMS5110 (as a result of toggling M0 pin)
|
FIFO_data_write -- handle bit data write to the TMS5110 (as a result of toggling M0 pin)
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
static void FIFO_data_write(struct tms5110 *tms, int data)
|
static void FIFO_data_write(struct tms5110 *tms, int data)
|
||||||
@ -310,7 +310,7 @@ static void FIFO_data_write(struct tms5110 *tms, int data)
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
extract_bits -- extract a specific number of bits from the FIFO
|
extract_bits -- extract a specific number of bits from the FIFO
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
@ -359,14 +359,14 @@ static void perform_dummy_read(struct tms5110 *tms)
|
|||||||
|
|
||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
|
|
||||||
tms5110_status_read -- read status from the TMS5110
|
tms5110_status_read -- read status from the TMS5110
|
||||||
|
|
||||||
bit 0 = TS - Talk Status is active (high) when the VSP is processing speech data.
|
bit 0 = TS - Talk Status is active (high) when the VSP is processing speech data.
|
||||||
Talk Status goes active at the initiation of a SPEAK command.
|
Talk Status goes active at the initiation of a SPEAK command.
|
||||||
It goes inactive (low) when the stop code (Energy=1111) is processed, or
|
It goes inactive (low) when the stop code (Energy=1111) is processed, or
|
||||||
immediately(?????? not TMS5110) by a RESET command.
|
immediately(?????? not TMS5110) by a RESET command.
|
||||||
TMS5110 datasheets mention this is only available as a result of executing
|
TMS5110 datasheets mention this is only available as a result of executing
|
||||||
TEST TALK command.
|
TEST TALK command.
|
||||||
|
|
||||||
|
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
@ -383,7 +383,7 @@ int tms5110_status_read(void *chip)
|
|||||||
|
|
||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
|
|
||||||
tms5110_ready_read -- returns the ready state of the TMS5110
|
tms5110_ready_read -- returns the ready state of the TMS5110
|
||||||
|
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ int tms5110_ready_read(void *chip)
|
|||||||
|
|
||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
|
|
||||||
tms5110_process -- fill the buffer with a specific number of samples
|
tms5110_process -- fill the buffer with a specific number of samples
|
||||||
|
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
||||||
@ -418,12 +418,12 @@ void tms5110_process(void *chip, INT16 *buffer, unsigned int size)
|
|||||||
|
|
||||||
/* a "dummy read" is mentioned in the tms5200 datasheet */
|
/* a "dummy read" is mentioned in the tms5200 datasheet */
|
||||||
/* The Bagman speech roms data are organized in such a way that
|
/* The Bagman speech roms data are organized in such a way that
|
||||||
** the bit at address 0 is NOT a speech data. The bit at address 1
|
** the bit at address 0 is NOT a speech data. The bit at address 1
|
||||||
** is the speech data. It seems that the tms5110 performs a dummy read
|
** is the speech data. It seems that the tms5110 performs a dummy read
|
||||||
** just before it executes a SPEAK command.
|
** just before it executes a SPEAK command.
|
||||||
** This has been moved to command logic ...
|
** This has been moved to command logic ...
|
||||||
** perform_dummy_read(tms);
|
** perform_dummy_read(tms);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* clear out the new frame parameters (it will become old frame just before the first call to parse_frame() ) */
|
/* clear out the new frame parameters (it will become old frame just before the first call to parse_frame() ) */
|
||||||
tms->new_energy = 0;
|
tms->new_energy = 0;
|
||||||
@ -486,9 +486,9 @@ void tms5110_process(void *chip, INT16 *buffer, unsigned int size)
|
|||||||
else if ((tms->old_energy == 0) && (tms->new_energy != 0)) /* was the old frame a zero-energy frame? */
|
else if ((tms->old_energy == 0) && (tms->new_energy != 0)) /* was the old frame a zero-energy frame? */
|
||||||
{
|
{
|
||||||
/* if so, and if the new frame is non-zero energy frame then the new parameters
|
/* if so, and if the new frame is non-zero energy frame then the new parameters
|
||||||
should become our current and target parameters immediately,
|
should become our current and target parameters immediately,
|
||||||
i.e. we should NOT interpolate them slowly in.
|
i.e. we should NOT interpolate them slowly in.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*logerror("processing non-zero energy frame after zero-energy frame\n");*/
|
/*logerror("processing non-zero energy frame after zero-energy frame\n");*/
|
||||||
tms->target_energy = tms->new_energy;
|
tms->target_energy = tms->new_energy;
|
||||||
@ -499,8 +499,8 @@ void tms5110_process(void *chip, INT16 *buffer, unsigned int size)
|
|||||||
else if ((tms->old_pitch == 0) && (tms->new_pitch != 0)) /* is this a change from unvoiced to voiced frame ? */
|
else if ((tms->old_pitch == 0) && (tms->new_pitch != 0)) /* is this a change from unvoiced to voiced frame ? */
|
||||||
{
|
{
|
||||||
/* if so, then the new parameters should become our current and target parameters immediately,
|
/* if so, then the new parameters should become our current and target parameters immediately,
|
||||||
i.e. we should NOT interpolate them slowly in.
|
i.e. we should NOT interpolate them slowly in.
|
||||||
*/
|
*/
|
||||||
/*if (DEBUG_5110) logerror("processing frame: UNVOICED->VOICED frame change\n");*/
|
/*if (DEBUG_5110) logerror("processing frame: UNVOICED->VOICED frame change\n");*/
|
||||||
tms->target_energy = tms->new_energy;
|
tms->target_energy = tms->new_energy;
|
||||||
tms->target_pitch = tms->current_pitch = tms->new_pitch;
|
tms->target_pitch = tms->current_pitch = tms->new_pitch;
|
||||||
@ -510,8 +510,8 @@ void tms5110_process(void *chip, INT16 *buffer, unsigned int size)
|
|||||||
else if ((tms->old_pitch != 0) && (tms->new_pitch == 0)) /* is this a change from voiced to unvoiced frame ? */
|
else if ((tms->old_pitch != 0) && (tms->new_pitch == 0)) /* is this a change from voiced to unvoiced frame ? */
|
||||||
{
|
{
|
||||||
/* if so, then the new parameters should become our current and target parameters immediately,
|
/* if so, then the new parameters should become our current and target parameters immediately,
|
||||||
i.e. we should NOT interpolate them slowly in.
|
i.e. we should NOT interpolate them slowly in.
|
||||||
*/
|
*/
|
||||||
/*if (DEBUG_5110) logerror("processing frame: VOICED->UNVOICED frame change\n");*/
|
/*if (DEBUG_5110) logerror("processing frame: VOICED->UNVOICED frame change\n");*/
|
||||||
tms->target_energy = tms->new_energy;
|
tms->target_energy = tms->new_energy;
|
||||||
tms->target_pitch = tms->current_pitch = tms->new_pitch;
|
tms->target_pitch = tms->current_pitch = tms->new_pitch;
|
||||||
@ -662,7 +662,7 @@ empty:
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
CTL_set -- set CTL pins named CTL1, CTL2, CTL4 and CTL8
|
CTL_set -- set CTL pins named CTL1, CTL2, CTL4 and CTL8
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
@ -674,7 +674,7 @@ void tms5110_CTL_set(void *chip, int data)
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
PDC_set -- set Processor Data Clock. Execute CTL_pins command on hi-lo transition.
|
PDC_set -- set Processor Data Clock. Execute CTL_pins command on hi-lo transition.
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
@ -740,7 +740,7 @@ void tms5110_PDC_set(void *chip, int data)
|
|||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
|
||||||
parse_frame -- parse a new frame's worth of data; returns 0 if not enough bits in buffer
|
parse_frame -- parse a new frame's worth of data; returns 0 if not enough bits in buffer
|
||||||
|
|
||||||
******************************************************************************************/
|
******************************************************************************************/
|
||||||
|
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
* 4234761
|
* 4234761
|
||||||
* 4189779
|
* 4189779
|
||||||
* 4449233
|
* 4449233
|
||||||
*
|
*
|
||||||
* All patents give interpolation coefficients
|
* All patents give interpolation coefficients
|
||||||
* { 8, 8, 8, 4, 4, 2, 2, 1 }
|
* { 8, 8, 8, 4, 4, 2, 2, 1 }
|
||||||
* This sequence will not calculate the published
|
* This sequence will not calculate the published
|
||||||
* fractions:
|
* fractions:
|
||||||
* 1 8 0.125
|
* 1 8 0.125
|
||||||
* 2 8 0.234
|
* 2 8 0.234
|
||||||
@ -23,7 +23,7 @@
|
|||||||
* 6 2 0.717
|
* 6 2 0.717
|
||||||
* 7 2 0.859
|
* 7 2 0.859
|
||||||
* 0 1 1.000
|
* 0 1 1.000
|
||||||
*
|
*
|
||||||
* Instead, { 8, 8, 8, 4, 4, 4, 2, 1 }
|
* Instead, { 8, 8, 8, 4, 4, 4, 2, 1 }
|
||||||
* will calculate those coefficients and this has been used below.
|
* will calculate those coefficients and this has been used below.
|
||||||
*/
|
*/
|
||||||
|
@ -650,7 +650,7 @@ DISCRETE_SOUND_END
|
|||||||
#define JR_C15 CAP_U(22)
|
#define JR_C15 CAP_U(22)
|
||||||
#define JR_C16 CAP_U(3.3)
|
#define JR_C16 CAP_U(3.3)
|
||||||
#define JR_C17 CAP_U(3.3) // ??? illegible
|
#define JR_C17 CAP_U(3.3) // ??? illegible
|
||||||
#define JR_C18 CAP_N(22)
|
#define JR_C18 CAP_N(22)
|
||||||
#define JR_C19 CAP_N(4.7)
|
#define JR_C19 CAP_N(4.7)
|
||||||
#define JR_C20 CAP_U(0.12)
|
#define JR_C20 CAP_U(0.12)
|
||||||
#define JR_C21 CAP_N(56)
|
#define JR_C21 CAP_N(56)
|
||||||
@ -680,7 +680,7 @@ DISCRETE_SOUND_END
|
|||||||
DISCRETE_ONESHOTR(_N, 0, _T, TTL_HIGH, (0.33 * (_R) * (_C) * (1.0+700./(_R))), DISC_ONESHOT_RETRIG | DISC_ONESHOT_REDGE | DISC_OUT_ACTIVE_LOW)
|
DISCRETE_ONESHOTR(_N, 0, _T, TTL_HIGH, (0.33 * (_R) * (_C) * (1.0+700./(_R))), DISC_ONESHOT_RETRIG | DISC_ONESHOT_REDGE | DISC_OUT_ACTIVE_LOW)
|
||||||
|
|
||||||
#define DISCRETE_BITSET(_N, _N1, _B) DISCRETE_TRANSFORM3(_N, 1, _N1, 1 << ((_B)-1), 0, "01&2>")
|
#define DISCRETE_BITSET(_N, _N1, _B) DISCRETE_TRANSFORM3(_N, 1, _N1, 1 << ((_B)-1), 0, "01&2>")
|
||||||
#define DISCRETE_ENERGY_NAND(_N, _E, _N1, _N2) DISCRETE_TRANSFORM3(_N, _E, _N1, _N2, 1, "201*-")
|
#define DISCRETE_ENERGY_NAND(_N, _E, _N1, _N2) DISCRETE_TRANSFORM3(_N, _E, _N1, _N2, 1, "201*-")
|
||||||
|
|
||||||
static const discrete_mixer_desc dkongjr_mixer_desc =
|
static const discrete_mixer_desc dkongjr_mixer_desc =
|
||||||
{DISC_MIXER_IS_RESISTOR,
|
{DISC_MIXER_IS_RESISTOR,
|
||||||
@ -743,34 +743,34 @@ static DISCRETE_SOUND_START(dkongjr)
|
|||||||
|
|
||||||
DISCRETE_LOGIC_INVERT(DS_SOUND7,1,DS_SOUND7_INV)
|
DISCRETE_LOGIC_INVERT(DS_SOUND7,1,DS_SOUND7_INV)
|
||||||
DISCRETE_LOGIC_INVERT(DS_SOUND9,1,DS_SOUND9_INV)
|
DISCRETE_LOGIC_INVERT(DS_SOUND9,1,DS_SOUND9_INV)
|
||||||
|
|
||||||
/************************************************/
|
/************************************************/
|
||||||
/* SOUND1 */
|
/* SOUND1 */
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
DISCRETE_LS123(NODE_10, DS_SOUND1_INV, JR_R9, JR_C15)
|
DISCRETE_LS123(NODE_10, DS_SOUND1_INV, JR_R9, JR_C15)
|
||||||
DISCRETE_TRANSFORM2(NODE_11,1,NODE_104,TTL_HIGH,"0!1*")
|
DISCRETE_TRANSFORM2(NODE_11,1,NODE_104,TTL_HIGH,"0!1*")
|
||||||
DISCRETE_LOGIC_INVERT(NODE_12,1,NODE_10)
|
DISCRETE_LOGIC_INVERT(NODE_12,1,NODE_10)
|
||||||
DISCRETE_MIXER2(NODE_13, 1, NODE_10, NODE_11, &dkongjr_s1_mixer_desc)
|
DISCRETE_MIXER2(NODE_13, 1, NODE_10, NODE_11, &dkongjr_s1_mixer_desc)
|
||||||
DISCRETE_74LS624( NODE_14, 1, NODE_13, 0.98*DK_SUP_V, JR_C22, DISC_LS624_OUT_ENERGY)
|
DISCRETE_74LS624( NODE_14, 1, NODE_13, 0.98*DK_SUP_V, JR_C22, DISC_LS624_OUT_ENERGY)
|
||||||
DISCRETE_RCDISC_MODULATED(NODE_15, 1, NODE_12, NODE_14, 120, JR_R27, RES_K(0.001), JR_R28, JR_C28, DK_SUP_V)
|
DISCRETE_RCDISC_MODULATED(NODE_15, 1, NODE_12, NODE_14, 120, JR_R27, RES_K(0.001), JR_R28, JR_C28, DK_SUP_V)
|
||||||
/* The following circuit does not match 100%, however works.
|
/* The following circuit does not match 100%, however works.
|
||||||
* To be exact, we need a C-R-C-R circuit, we actually do not have.
|
* To be exact, we need a C-R-C-R circuit, we actually do not have.
|
||||||
*/
|
*/
|
||||||
DISCRETE_CRFILTER_VREF(NODE_16, 1, NODE_15, JR_R4, JR_C23, 2.5)
|
DISCRETE_CRFILTER_VREF(NODE_16, 1, NODE_15, JR_R4, JR_C23, 2.5)
|
||||||
DISCRETE_RCFILTER(DS_OUT_SOUND1, 1, NODE_16, JR_R19, JR_C21)
|
DISCRETE_RCFILTER(DS_OUT_SOUND1, 1, NODE_16, JR_R19, JR_C21)
|
||||||
|
|
||||||
/************************************************/
|
/************************************************/
|
||||||
/* SOUND2 */
|
/* SOUND2 */
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
DISCRETE_74LS624( NODE_20, 1, 0, 0.98*DK_SUP_V, JR_C20, DISC_LS624_OUT_COUNT_F)
|
DISCRETE_74LS624( NODE_20, 1, 0, 0.98*DK_SUP_V, JR_C20, DISC_LS624_OUT_COUNT_F)
|
||||||
DISCRETE_LFSR_NOISE(NODE_21, 1, 1, NODE_20, 1.0, 0, 0.5, &dkongjr_lfsr)
|
DISCRETE_LFSR_NOISE(NODE_21, 1, 1, NODE_20, 1.0, 0, 0.5, &dkongjr_lfsr)
|
||||||
DISCRETE_LS123_INV(NODE_25, DS_SOUND2_INV, JR_R17, JR_C27)
|
DISCRETE_LS123_INV(NODE_25, DS_SOUND2_INV, JR_R17, JR_C27)
|
||||||
DISCRETE_RCDISC_MODULATED(NODE_26, 1, NODE_25, NODE_21, 120, JR_R24, RES_K(0.001), JR_R18, JR_C29, DK_SUP_V)
|
DISCRETE_RCDISC_MODULATED(NODE_26, 1, NODE_25, NODE_21, 120, JR_R24, RES_K(0.001), JR_R18, JR_C29, DK_SUP_V)
|
||||||
/* The following circuit does not match 100%, however works.
|
/* The following circuit does not match 100%, however works.
|
||||||
* To be exact, we need a C-R-C-R circuit, we actually do not have.
|
* To be exact, we need a C-R-C-R circuit, we actually do not have.
|
||||||
*/
|
*/
|
||||||
DISCRETE_CRFILTER_VREF(NODE_27, 1, NODE_26, JR_R6, JR_C30, 2.5)
|
DISCRETE_CRFILTER_VREF(NODE_27, 1, NODE_26, JR_R6, JR_C30, 2.5)
|
||||||
DISCRETE_RCFILTER(DS_OUT_SOUND2, 1, NODE_27, JR_R2, JR_C25)
|
DISCRETE_RCFILTER(DS_OUT_SOUND2, 1, NODE_27, JR_R2, JR_C25)
|
||||||
|
|
||||||
@ -783,37 +783,37 @@ static DISCRETE_SOUND_START(dkongjr)
|
|||||||
DISCRETE_74LS624( NODE_92, 1, NODE_91, DK_SUP_V, JR_C37, DISC_LS624_OUT_ENERGY)
|
DISCRETE_74LS624( NODE_92, 1, NODE_91, DK_SUP_V, JR_C37, DISC_LS624_OUT_ENERGY)
|
||||||
DISCRETE_ENERGY_NAND(NODE_93, 1, NODE_92, DS_SOUND9)
|
DISCRETE_ENERGY_NAND(NODE_93, 1, NODE_92, DS_SOUND9)
|
||||||
DISCRETE_MULTIPLY(DS_OUT_SOUND9, 1, NODE_93, TTL_HIGH)
|
DISCRETE_MULTIPLY(DS_OUT_SOUND9, 1, NODE_93, TTL_HIGH)
|
||||||
|
|
||||||
/************************************************/
|
/************************************************/
|
||||||
/* SOUND0 / SOUND7 */
|
/* SOUND0 / SOUND7 */
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
DISCRETE_COUNTER(NODE_100,1,0,NODE_118,0xFFFF,DISC_COUNT_UP,0,DISC_CLK_BY_COUNT)
|
DISCRETE_COUNTER(NODE_100,1,0,NODE_118,0xFFFF,DISC_COUNT_UP,0,DISC_CLK_BY_COUNT)
|
||||||
|
|
||||||
DISCRETE_BITSET(NODE_101, NODE_100, 7) //LS157 2A
|
DISCRETE_BITSET(NODE_101, NODE_100, 7) //LS157 2A
|
||||||
DISCRETE_BITSET(NODE_102, NODE_100, 4) //LS157 2B
|
DISCRETE_BITSET(NODE_102, NODE_100, 4) //LS157 2B
|
||||||
DISCRETE_BITSET(NODE_103, NODE_100, 13) //LS157 3A
|
DISCRETE_BITSET(NODE_103, NODE_100, 13) //LS157 3A
|
||||||
DISCRETE_BITSET(NODE_104, NODE_100, 12) //LS157 3B
|
DISCRETE_BITSET(NODE_104, NODE_100, 12) //LS157 3B
|
||||||
|
|
||||||
/* LS157 Switches */
|
/* LS157 Switches */
|
||||||
DISCRETE_SWITCH(NODE_105, 1, DS_SOUND7_INV, GND, NODE_113) // Switch 1 from LS624
|
DISCRETE_SWITCH(NODE_105, 1, DS_SOUND7_INV, GND, NODE_113) // Switch 1 from LS624
|
||||||
DISCRETE_SWITCH(NODE_106, 1, DS_SOUND7_INV, NODE_101, NODE_102) // Switch 2
|
DISCRETE_SWITCH(NODE_106, 1, DS_SOUND7_INV, NODE_101, NODE_102) // Switch 2
|
||||||
DISCRETE_SWITCH(NODE_107, 1, DS_SOUND7_INV, NODE_103, NODE_104) // Switch 3
|
DISCRETE_SWITCH(NODE_107, 1, DS_SOUND7_INV, NODE_103, NODE_104) // Switch 3
|
||||||
|
|
||||||
DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14)
|
DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14)
|
||||||
DISCRETE_TRANSFORM2(NODE_111, 1, TTL_HIGH, NODE_110, "01-")
|
DISCRETE_TRANSFORM2(NODE_111, 1, TTL_HIGH, NODE_110, "01-")
|
||||||
DISCRETE_RCFILTER(NODE_112, 1, NODE_111, JR_R10, JR_C17)
|
DISCRETE_RCFILTER(NODE_112, 1, NODE_111, JR_R10, JR_C17)
|
||||||
DISCRETE_74LS624(NODE_113, 1, NODE_112, DK_SUP_V, JR_C18, DISC_LS624_OUT_ENERGY)
|
DISCRETE_74LS624(NODE_113, 1, NODE_112, DK_SUP_V, JR_C18, DISC_LS624_OUT_ENERGY)
|
||||||
|
|
||||||
DISCRETE_LOGIC_XOR(NODE_115, 1, NODE_105, NODE_106)
|
DISCRETE_LOGIC_XOR(NODE_115, 1, NODE_105, NODE_106)
|
||||||
|
|
||||||
DISCRETE_TRANSFORM2(NODE_116,1, NODE_107, TTL_HIGH, "0!1*")
|
DISCRETE_TRANSFORM2(NODE_116,1, NODE_107, TTL_HIGH, "0!1*")
|
||||||
DISCRETE_RCFILTER(NODE_117, 1, NODE_116, JR_R11, JR_C16)
|
DISCRETE_RCFILTER(NODE_117, 1, NODE_116, JR_R11, JR_C16)
|
||||||
DISCRETE_74LS624(NODE_118, 1, NODE_117, DK_SUP_V, JR_C19, DISC_LS624_OUT_COUNT_F)
|
DISCRETE_74LS624(NODE_118, 1, NODE_117, DK_SUP_V, JR_C19, DISC_LS624_OUT_COUNT_F)
|
||||||
|
|
||||||
DISCRETE_LOGIC_NAND(NODE_120, 1, NODE_115, NODE_110)
|
DISCRETE_LOGIC_NAND(NODE_120, 1, NODE_115, NODE_110)
|
||||||
DISCRETE_MULTIPLY(DS_OUT_SOUND0, 1, NODE_120, TTL_HIGH)
|
DISCRETE_MULTIPLY(DS_OUT_SOUND0, 1, NODE_120, TTL_HIGH)
|
||||||
|
|
||||||
/************************************************/
|
/************************************************/
|
||||||
/* DAC */
|
/* DAC */
|
||||||
/************************************************/
|
/************************************************/
|
||||||
@ -838,12 +838,12 @@ static DISCRETE_SOUND_START(dkongjr)
|
|||||||
|
|
||||||
DISCRETE_MIXER5(NODE_288, 1, DS_OUT_SOUND9, DS_OUT_SOUND0, DS_OUT_SOUND2, DS_OUT_SOUND1, DS_OUT_DAC, &dkongjr_mixer_desc)
|
DISCRETE_MIXER5(NODE_288, 1, DS_OUT_SOUND9, DS_OUT_SOUND0, DS_OUT_SOUND2, DS_OUT_SOUND1, DS_OUT_DAC, &dkongjr_mixer_desc)
|
||||||
|
|
||||||
/* Amplifier: internal amplifier
|
/* Amplifier: internal amplifier
|
||||||
* Just a 1:n amplifier without filters - just the output filter
|
* Just a 1:n amplifier without filters - just the output filter
|
||||||
*/
|
*/
|
||||||
DISCRETE_CRFILTER(NODE_295,1,NODE_288, 1000, JR_C13)
|
DISCRETE_CRFILTER(NODE_295,1,NODE_288, 1000, JR_C13)
|
||||||
DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 10)
|
DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 10)
|
||||||
|
|
||||||
DISCRETE_SOUND_END
|
DISCRETE_SOUND_END
|
||||||
|
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
@ -918,15 +918,15 @@ Addresses found at @0x510, cpu2
|
|||||||
5: 10 10 10 trouble, trouble, trouble
|
5: 10 10 10 trouble, trouble, trouble
|
||||||
6: 12 12 all pilots climb up
|
6: 12 12 all pilots climb up
|
||||||
7: 20 engine trouble
|
7: 20 engine trouble
|
||||||
|
|
||||||
PA5 ==> CS 28
|
PA5 ==> CS 28
|
||||||
PA4 ==> PDC 2
|
PA4 ==> PDC 2
|
||||||
PA0 ==> CTL1 25
|
PA0 ==> CTL1 25
|
||||||
PA1 ==> CTL2 23
|
PA1 ==> CTL2 23
|
||||||
PA2 ==> CTL4 20
|
PA2 ==> CTL4 20
|
||||||
PA3 ==> CTL8 27
|
PA3 ==> CTL8 27
|
||||||
M1 19 ==> PA6 M1 on TMS5100
|
M1 19 ==> PA6 M1 on TMS5100
|
||||||
|
|
||||||
12,13 Speaker
|
12,13 Speaker
|
||||||
7,8 Xin, Xout (5100: RC-OSC, T11)
|
7,8 Xin, Xout (5100: RC-OSC, T11)
|
||||||
24 A0 (5100: ADD1)
|
24 A0 (5100: ADD1)
|
||||||
@ -936,33 +936,33 @@ Addresses found at @0x510, cpu2
|
|||||||
16 C0 (5100: NC)
|
16 C0 (5100: NC)
|
||||||
18 C1 (5100: NC)
|
18 C1 (5100: NC)
|
||||||
3 CLK (5100: ROM-CK)
|
3 CLK (5100: ROM-CK)
|
||||||
|
|
||||||
For documentation purposes:
|
For documentation purposes:
|
||||||
|
|
||||||
Addresses
|
Addresses
|
||||||
{ 0x0000, 0x007a, 0x018b, 0x0320, 0x036c, 0x03c4, 0x041c, 0x0520, 0x063e }
|
{ 0x0000, 0x007a, 0x018b, 0x0320, 0x036c, 0x03c4, 0x041c, 0x0520, 0x063e }
|
||||||
and related samples interface
|
and related samples interface
|
||||||
|
|
||||||
static const char *const radarsc1_sample_names[] =
|
static const char *const radarsc1_sample_names[] =
|
||||||
{
|
{
|
||||||
"*radarsc1",
|
"*radarsc1",
|
||||||
"10.wav",
|
"10.wav",
|
||||||
"12.wav",
|
"12.wav",
|
||||||
"14.wav",
|
"14.wav",
|
||||||
"16.wav",
|
"16.wav",
|
||||||
"18.wav",
|
"18.wav",
|
||||||
"1A.wav",
|
"1A.wav",
|
||||||
"1C.wav",
|
"1C.wav",
|
||||||
"1E.wav",
|
"1E.wav",
|
||||||
"20.wav",
|
"20.wav",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct Samplesinterface radarsc1_samples_interface =
|
static const struct Samplesinterface radarsc1_samples_interface =
|
||||||
{
|
{
|
||||||
8,
|
8,
|
||||||
radarsc1_sample_names
|
radarsc1_sample_names
|
||||||
};
|
};
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -971,7 +971,7 @@ static WRITE8_HANDLER( M58817_command_w )
|
|||||||
logerror("PA Write %x\n", data);
|
logerror("PA Write %x\n", data);
|
||||||
|
|
||||||
tms5110_CTL_w(0, data & 0x0f);
|
tms5110_CTL_w(0, data & 0x0f);
|
||||||
tms5110_PDC_w(0, (data>>4) & 0x01);
|
tms5110_PDC_w(0, (data>>4) & 0x01);
|
||||||
// FIXME 0x20 is CS
|
// FIXME 0x20 is CS
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1004,16 +1004,16 @@ static READ8_HANDLER( dkong_sh_t1_r )
|
|||||||
static WRITE8_HANDLER( dkong_voice_w )
|
static WRITE8_HANDLER( dkong_voice_w )
|
||||||
{
|
{
|
||||||
/* only provided for documentation purposes
|
/* only provided for documentation purposes
|
||||||
* not actually used
|
* not actually used
|
||||||
*/
|
*/
|
||||||
logerror("dkong_speech_w: 0x%02x\n", data);
|
logerror("dkong_speech_w: 0x%02x\n", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER( dkong_voice_status_r )
|
static READ8_HANDLER( dkong_voice_status_r )
|
||||||
{
|
{
|
||||||
/* only provided for documentation purposes
|
/* only provided for documentation purposes
|
||||||
* not actually used
|
* not actually used
|
||||||
*/
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1022,7 +1022,7 @@ static READ8_HANDLER( dkong_sh_tune_r )
|
|||||||
dkong_state *state = Machine->driver_data;
|
dkong_state *state = Machine->driver_data;
|
||||||
UINT8 *SND = memory_region(REGION_CPU2);
|
UINT8 *SND = memory_region(REGION_CPU2);
|
||||||
|
|
||||||
if ( state->page & 0x40 )
|
if ( state->page & 0x40 )
|
||||||
{
|
{
|
||||||
return (soundlatch_r(0) & 0x0F) | (dkong_voice_status_r(0)<<4);
|
return (soundlatch_r(0) & 0x0F) | (dkong_voice_status_r(0)<<4);
|
||||||
}
|
}
|
||||||
@ -1166,10 +1166,10 @@ WRITE8_HANDLER( dkongjr_snd_w1 )
|
|||||||
I8035_P2_W_AL(5,data & 1);
|
I8035_P2_W_AL(5,data & 1);
|
||||||
break;
|
break;
|
||||||
case 4: /* Port 4 write */
|
case 4: /* Port 4 write */
|
||||||
I8035_T_W_AL(1, data & 1);
|
I8035_T_W_AL(1, data & 1);
|
||||||
break;
|
break;
|
||||||
case 5: /* Port 5 write */
|
case 5: /* Port 5 write */
|
||||||
I8035_T_W_AL(0, data & 1);
|
I8035_T_W_AL(0, data & 1);
|
||||||
break;
|
break;
|
||||||
case 6: /* Port 6 write ==> PB 4 */
|
case 6: /* Port 6 write ==> PB 4 */
|
||||||
I8035_P2_W_AL(4,data & 1);
|
I8035_P2_W_AL(4,data & 1);
|
||||||
@ -1201,7 +1201,7 @@ static ADDRESS_MAP_START( dkong_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( dkong_sound_io_map, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( dkong_sound_io_map, ADDRESS_SPACE_IO, 8 )
|
||||||
AM_RANGE(0x00, 0xff) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
|
AM_RANGE(0x00, 0xff) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
|
||||||
AM_RANGE(I8039_bus, I8039_bus) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
|
AM_RANGE(I8039_bus, I8039_bus) AM_READWRITE(dkong_sh_tune_r, dkong_voice_w)
|
||||||
AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(dkong_sh_p1_r, dkong_sh_p1_w)
|
AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(dkong_sh_p1_r, dkong_sh_p1_w)
|
||||||
AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
|
AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
|
||||||
@ -1314,7 +1314,7 @@ MACHINE_DRIVER_START( dkongjr_audio )
|
|||||||
MDRV_SOUND_RESET(dkong)
|
MDRV_SOUND_RESET(dkong)
|
||||||
|
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
MDRV_SOUND_ADD_TAG("discrete", DISCRETE, 0)
|
MDRV_SOUND_ADD_TAG("discrete", DISCRETE, 0)
|
||||||
MDRV_SOUND_CONFIG_DISCRETE(dkongjr)
|
MDRV_SOUND_CONFIG_DISCRETE(dkongjr)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||||
|
@ -550,7 +550,7 @@ static MACHINE_DRIVER_START( cabal )
|
|||||||
MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
|
MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
|
||||||
|
|
||||||
MDRV_CPU_ADD(Z80, 3579580) /* verified on pcb */
|
MDRV_CPU_ADD(Z80, 3579580) /* verified on pcb */
|
||||||
/* audio CPU */
|
/* audio CPU */
|
||||||
MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
|
MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
|
||||||
|
|
||||||
MDRV_SCREEN_REFRESH_RATE(60)
|
MDRV_SCREEN_REFRESH_RATE(60)
|
||||||
|
@ -1240,7 +1240,7 @@ static MACHINE_DRIVER_START( midres )
|
|||||||
MDRV_CPU_PROGRAM_MAP(midres_readmem,midres_writemem)
|
MDRV_CPU_PROGRAM_MAP(midres_readmem,midres_writemem)
|
||||||
MDRV_CPU_VBLANK_INT(irq6_line_hold,1)/* VBL */
|
MDRV_CPU_VBLANK_INT(irq6_line_hold,1)/* VBL */
|
||||||
|
|
||||||
MDRV_CPU_ADD(H6280, 24000000/4/3)
|
MDRV_CPU_ADD(H6280, 24000000/4/3)
|
||||||
/* audio CPU */ /* verified on pcb (6Mhz is XIN on pin 10 of H6280, pin 14 (HSM) is high so XIN/3 */
|
/* audio CPU */ /* verified on pcb (6Mhz is XIN on pin 10 of H6280, pin 14 (HSM) is high so XIN/3 */
|
||||||
MDRV_CPU_PROGRAM_MAP(midres_s_readmem,midres_s_writemem)
|
MDRV_CPU_PROGRAM_MAP(midres_s_readmem,midres_s_writemem)
|
||||||
|
|
||||||
|
@ -4,18 +4,18 @@ TODO:
|
|||||||
|
|
||||||
- write a shootgal palette_init
|
- write a shootgal palette_init
|
||||||
- Pestplce colors and origin
|
- Pestplce colors and origin
|
||||||
- Shooting Gallery: Shootgal.txt mentions speech pcb,
|
- Shooting Gallery: Shootgal.txt mentions speech pcb,
|
||||||
mikesarcade.com dk conversion - Clarify
|
mikesarcade.com dk conversion - Clarify
|
||||||
- 8ballact: read 1507 no mapped
|
- 8ballact: read 1507 no mapped
|
||||||
- dkong3 dma (Z80 dma)
|
- dkong3 dma (Z80 dma)
|
||||||
- implement 74LS259 (8bit addressable latches),
|
- implement 74LS259 (8bit addressable latches),
|
||||||
74LS175 (QUAD D FlipFlop), 74LS373 (Octal transparent latch)
|
74LS175 (QUAD D FlipFlop), 74LS373 (Octal transparent latch)
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
- dkongjr discrete interface
|
- dkongjr discrete interface
|
||||||
- when i am retired: implement 8257 DMA controller
|
- when i am retired: implement 8257 DMA controller
|
||||||
- drakton - add dkongjr conversion
|
- drakton - add dkongjr conversion
|
||||||
- for documentation: hook up speech interface still present on radarscp (TRS02)
|
- for documentation: hook up speech interface still present on radarscp (TRS02)
|
||||||
and early dkong (TKG02/TKG03) pcbs.
|
and early dkong (TKG02/TKG03) pcbs.
|
||||||
- radarscp_grid_color_w() is wrong, it probably isn't supposed to change
|
- radarscp_grid_color_w() is wrong, it probably isn't supposed to change
|
||||||
the grid color. There are reports of the grid being constantly blue in
|
the grid color. There are reports of the grid being constantly blue in
|
||||||
@ -59,12 +59,12 @@ Done:
|
|||||||
|
|
||||||
Couriersud: 12/2007
|
Couriersud: 12/2007
|
||||||
|
|
||||||
- Cosmetic changes
|
- Cosmetic changes
|
||||||
- Fixed regression in radarscp sound
|
- Fixed regression in radarscp sound
|
||||||
- Added dipswitch locations to dkong3b
|
- Added dipswitch locations to dkong3b
|
||||||
- Added dkongjr discrete sound
|
- Added dkongjr discrete sound
|
||||||
- Proper interface Z80 - I8035 for dkongjr
|
- Proper interface Z80 - I8035 for dkongjr
|
||||||
- Changed discrete sound output factors
|
- Changed discrete sound output factors
|
||||||
- changed dkong/radarscp based games to use hardware-conformant I8035 memory maps
|
- changed dkong/radarscp based games to use hardware-conformant I8035 memory maps
|
||||||
- Added drakton clone drktnjr on dkongjr hardware
|
- Added drakton clone drktnjr on dkongjr hardware
|
||||||
- wrote M58817 sound driver and hooked it up
|
- wrote M58817 sound driver and hooked it up
|
||||||
@ -505,7 +505,7 @@ static READ8_HANDLER( dkong_in2_r )
|
|||||||
{
|
{
|
||||||
UINT8 r;
|
UINT8 r;
|
||||||
|
|
||||||
#if DEBUG_DISC_SOUND
|
#if DEBUG_DISC_SOUND
|
||||||
static UINT8 ui_snd = 0;
|
static UINT8 ui_snd = 0;
|
||||||
static UINT8 lst = 0;
|
static UINT8 lst = 0;
|
||||||
if (!lst && (readinputportbytag("TST") & 0x01))
|
if (!lst && (readinputportbytag("TST") & 0x01))
|
||||||
@ -519,7 +519,7 @@ static READ8_HANDLER( dkong_in2_r )
|
|||||||
else
|
else
|
||||||
dkongjr_snd_w2(ui_snd-8, (readinputportbytag("TST") & 0x02)>>1);
|
dkongjr_snd_w2(ui_snd-8, (readinputportbytag("TST") & 0x02)>>1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
r = (readinputportbytag("IN2") & 0xBF) | (dkong_audio_status_r(0) << 6);
|
r = (readinputportbytag("IN2") & 0xBF) | (dkong_audio_status_r(0) << 6);
|
||||||
coin_counter_w(offset, r >> 7);
|
coin_counter_w(offset, r >> 7);
|
||||||
if (r & 0x10)
|
if (r & 0x10)
|
||||||
@ -1054,11 +1054,11 @@ static INPUT_PORTS_START( dkongjr )
|
|||||||
PORT_INCLUDE( dkong_in1_4 )
|
PORT_INCLUDE( dkong_in1_4 )
|
||||||
PORT_INCLUDE( dkong_in2 )
|
PORT_INCLUDE( dkong_in2 )
|
||||||
PORT_INCLUDE( dkong_dsw0 )
|
PORT_INCLUDE( dkong_dsw0 )
|
||||||
|
|
||||||
#if DEBUG_DISC_SOUND
|
#if DEBUG_DISC_SOUND
|
||||||
PORT_START_TAG("TST") /* TST */
|
PORT_START_TAG("TST") /* TST */
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CODE(KEYCODE_A)
|
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CODE(KEYCODE_A)
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CODE(KEYCODE_B)
|
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CODE(KEYCODE_B)
|
||||||
#endif
|
#endif
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ static MACHINE_START( midzeus )
|
|||||||
|
|
||||||
gun_timer[0] = timer_alloc(invasn_gun_callback, NULL);
|
gun_timer[0] = timer_alloc(invasn_gun_callback, NULL);
|
||||||
gun_timer[1] = timer_alloc(invasn_gun_callback, NULL);
|
gun_timer[1] = timer_alloc(invasn_gun_callback, NULL);
|
||||||
|
|
||||||
state_save_register_global(gun_control);
|
state_save_register_global(gun_control);
|
||||||
state_save_register_global(gun_irq_state);
|
state_save_register_global(gun_irq_state);
|
||||||
state_save_register_global_array(gun_x);
|
state_save_register_global_array(gun_x);
|
||||||
@ -142,7 +142,7 @@ static WRITE32_HANDLER( cmos_protect_w )
|
|||||||
static READ32_HANDLER( timekeeper_r )
|
static READ32_HANDLER( timekeeper_r )
|
||||||
{
|
{
|
||||||
UINT8 result = timekeeper_0_r(offset);
|
UINT8 result = timekeeper_0_r(offset);
|
||||||
// logerror("%06X:cmos_time_r(%X) = %02X\n", activecpu_get_pc(), offset, result);
|
// logerror("%06X:cmos_time_r(%X) = %02X\n", activecpu_get_pc(), offset, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ static WRITE32_HANDLER( timekeeper_w )
|
|||||||
{
|
{
|
||||||
if (!cmos_protected)
|
if (!cmos_protected)
|
||||||
{
|
{
|
||||||
// logerror("%06X:cmos_time_w(%X) = %02X\n", activecpu_get_pc(), offset, data);
|
// logerror("%06X:cmos_time_w(%X) = %02X\n", activecpu_get_pc(), offset, data);
|
||||||
timekeeper_0_w(offset, data);
|
timekeeper_0_w(offset, data);
|
||||||
}
|
}
|
||||||
cmos_protected = TRUE;
|
cmos_protected = TRUE;
|
||||||
@ -190,7 +190,7 @@ static READ32_HANDLER( zpram_r )
|
|||||||
static NVRAM_HANDLER( midzeus2 )
|
static NVRAM_HANDLER( midzeus2 )
|
||||||
{
|
{
|
||||||
nvram_handler_timekeeper_0(machine, file, read_or_write);
|
nvram_handler_timekeeper_0(machine, file, read_or_write);
|
||||||
|
|
||||||
if (read_or_write)
|
if (read_or_write)
|
||||||
mame_fwrite(file, zpram, zpram_size);
|
mame_fwrite(file, zpram, zpram_size);
|
||||||
else if (file)
|
else if (file)
|
||||||
@ -882,7 +882,7 @@ static INPUT_PORTS_START( thegrid )
|
|||||||
PORT_START
|
PORT_START
|
||||||
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(custom_49way_r, "49WAYX\0" "49WAYY")
|
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(custom_49way_r, "49WAYX\0" "49WAYY")
|
||||||
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
PORT_START_TAG("49WAYX")
|
PORT_START_TAG("49WAYX")
|
||||||
PORT_BIT( 0xff, 0x38, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10)
|
PORT_BIT( 0xff, 0x38, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10)
|
||||||
|
|
||||||
|
@ -861,7 +861,7 @@ static MACHINE_DRIVER_START( wizdfire )
|
|||||||
MDRV_CPU_PROGRAM_MAP(wizdfire_readmem,wizdfire_writemem)
|
MDRV_CPU_PROGRAM_MAP(wizdfire_readmem,wizdfire_writemem)
|
||||||
MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
|
MDRV_CPU_VBLANK_INT(irq6_line_hold,1)
|
||||||
|
|
||||||
MDRV_CPU_ADD(H6280,32220000/4/3)
|
MDRV_CPU_ADD(H6280,32220000/4/3)
|
||||||
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
|
MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
|
||||||
|
|
||||||
MDRV_SCREEN_REFRESH_RATE(58)
|
MDRV_SCREEN_REFRESH_RATE(58)
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
|
|
||||||
NOTES:
|
NOTES:
|
||||||
|
|
||||||
rjetus:
|
rjetus:
|
||||||
- If you get a blank screen on startup you need to press F2 and choose "Reset settings",
|
- If you get a blank screen on startup you need to press F2 and choose "Reset settings",
|
||||||
followed by "Exit". This will create a proper NVRAM
|
followed by "Exit". This will create a proper NVRAM
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- Alpha blending. Screen shot on www.system16.com show that during attract mode
|
- Alpha blending. Screen shot on www.system16.com show that during attract mode
|
||||||
|
@ -175,7 +175,7 @@ Notes:
|
|||||||
|
|
||||||
ROMs -
|
ROMs -
|
||||||
UA0-6 to AU0-13 DIP42 maskROM, read as MX27C2100 (2 Meg)
|
UA0-6 to AU0-13 DIP42 maskROM, read as MX27C2100 (2 Meg)
|
||||||
UA0-2 DIP32 27C1000 EPROM
|
UA0-2 DIP32 27C1000 EPROM
|
||||||
All other ROMs DIP32 read as 27C1000
|
All other ROMs DIP32 read as 27C1000
|
||||||
All ROMs have IC locations, but the PCB also has IC locations so components
|
All ROMs have IC locations, but the PCB also has IC locations so components
|
||||||
can be referenced with IC# or location. See above diagram for info.
|
can be referenced with IC# or location. See above diagram for info.
|
||||||
|
@ -110,7 +110,7 @@ static WRITE16_HANDLER( z80_shared_w )
|
|||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static INPUT_PORTS_START( tx1 )
|
static INPUT_PORTS_START( tx1 )
|
||||||
PORT_START_TAG("DSW")
|
PORT_START_TAG("DSW")
|
||||||
PORT_DIPNAME( 0x001c, 0x0000, DEF_STR( Coin_A ) )
|
PORT_DIPNAME( 0x001c, 0x0000, DEF_STR( Coin_A ) )
|
||||||
PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) )
|
PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) )
|
||||||
PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) )
|
PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) )
|
||||||
|
@ -56,7 +56,7 @@ struct _poly_extra_data
|
|||||||
static TIMER_CALLBACK( scanline_timer_cb )
|
static TIMER_CALLBACK( scanline_timer_cb )
|
||||||
{
|
{
|
||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
if (scanline != -1)
|
if (scanline != -1)
|
||||||
{
|
{
|
||||||
cpunum_set_input_line(0, 0, ASSERT_LINE);
|
cpunum_set_input_line(0, 0, ASSERT_LINE);
|
||||||
|
@ -288,8 +288,8 @@ static void exit_handler(running_machine *machine)
|
|||||||
{
|
{
|
||||||
if (i % 4 == 0) fprintf(f, "%03X%03X: ", i / WAVERAM0_WIDTH, i % WAVERAM0_WIDTH);
|
if (i % 4 == 0) fprintf(f, "%03X%03X: ", i / WAVERAM0_WIDTH, i % WAVERAM0_WIDTH);
|
||||||
fprintf(f, " %08X %08X ",
|
fprintf(f, " %08X %08X ",
|
||||||
WAVERAM_READ32(waveram[0], i*2+0),
|
WAVERAM_READ32(waveram[0], i*2+0),
|
||||||
WAVERAM_READ32(waveram[0], i*2+1));
|
WAVERAM_READ32(waveram[0], i*2+1));
|
||||||
if (i % 4 == 3) fprintf(f, "\n");
|
if (i % 4 == 3) fprintf(f, "\n");
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -673,7 +673,7 @@ static void zeus_register_update(offs_t offset)
|
|||||||
(offset == 0xb2 && (zeusbase[0xb6] & 0x02000000) != 0))
|
(offset == 0xb2 && (zeusbase[0xb6] & 0x02000000) != 0))
|
||||||
{
|
{
|
||||||
void *dest;
|
void *dest;
|
||||||
|
|
||||||
if (zeusbase[0xb6] & 0x80000000)
|
if (zeusbase[0xb6] & 0x80000000)
|
||||||
dest = waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
|
dest = waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
|
||||||
else
|
else
|
||||||
@ -697,7 +697,7 @@ static void zeus_register_update(offs_t offset)
|
|||||||
if (zeusbase[0xb6] & 0x00010000)
|
if (zeusbase[0xb6] & 0x00010000)
|
||||||
{
|
{
|
||||||
const UINT32 *src;
|
const UINT32 *src;
|
||||||
|
|
||||||
if (zeusbase[0xb6] & 0x80000000)
|
if (zeusbase[0xb6] & 0x80000000)
|
||||||
src = waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
|
src = waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
|
||||||
else
|
else
|
||||||
|
@ -249,7 +249,7 @@ INLINE UINT8 get_texel_4bit(const void *base, int y, int x, int width)
|
|||||||
* Video startup
|
* Video startup
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
static TIMER_CALLBACK( int_timer_callback )
|
static TIMER_CALLBACK( int_timer_callback )
|
||||||
{
|
{
|
||||||
cpunum_set_input_line(0, 2, ASSERT_LINE);
|
cpunum_set_input_line(0, 2, ASSERT_LINE);
|
||||||
@ -269,9 +269,9 @@ VIDEO_START( midzeus2 )
|
|||||||
add_exit_callback(machine, exit_handler);
|
add_exit_callback(machine, exit_handler);
|
||||||
|
|
||||||
zeus_renderbase = waveram[1];
|
zeus_renderbase = waveram[1];
|
||||||
|
|
||||||
int_timer = timer_alloc(int_timer_callback, NULL);
|
int_timer = timer_alloc(int_timer_callback, NULL);
|
||||||
|
|
||||||
/* save states */
|
/* save states */
|
||||||
state_save_register_global_pointer(waveram[0], WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8 / sizeof(waveram[0][0]));
|
state_save_register_global_pointer(waveram[0], WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8 / sizeof(waveram[0][0]));
|
||||||
state_save_register_global_pointer(waveram[1], WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12 / sizeof(waveram[1][0]));
|
state_save_register_global_pointer(waveram[1], WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12 / sizeof(waveram[1][0]));
|
||||||
@ -296,9 +296,9 @@ static void exit_handler(running_machine *machine)
|
|||||||
for (i = 0; i < WAVERAM0_WIDTH * WAVERAM0_HEIGHT; i++)
|
for (i = 0; i < WAVERAM0_WIDTH * WAVERAM0_HEIGHT; i++)
|
||||||
{
|
{
|
||||||
if (i % 4 == 0) fprintf(f, "%03X%03X: ", i / WAVERAM0_WIDTH, i % WAVERAM0_WIDTH);
|
if (i % 4 == 0) fprintf(f, "%03X%03X: ", i / WAVERAM0_WIDTH, i % WAVERAM0_WIDTH);
|
||||||
fprintf(f, " %08X %08X ",
|
fprintf(f, " %08X %08X ",
|
||||||
WAVERAM_READ32(waveram[0], i*2+0),
|
WAVERAM_READ32(waveram[0], i*2+0),
|
||||||
WAVERAM_READ32(waveram[0], i*2+1));
|
WAVERAM_READ32(waveram[0], i*2+1));
|
||||||
if (i % 4 == 3) fprintf(f, "\n");
|
if (i % 4 == 3) fprintf(f, "\n");
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -308,7 +308,7 @@ static void exit_handler(running_machine *machine)
|
|||||||
{
|
{
|
||||||
reg_info *info;
|
reg_info *info;
|
||||||
int regnum;
|
int regnum;
|
||||||
|
|
||||||
for (regnum = 0; regnum < 0x80; regnum++)
|
for (regnum = 0; regnum < 0x80; regnum++)
|
||||||
{
|
{
|
||||||
printf("Register %02X\n", regnum);
|
printf("Register %02X\n", regnum);
|
||||||
@ -326,7 +326,7 @@ static void exit_handler(running_machine *machine)
|
|||||||
printf("\t%08X\n", info->value);
|
printf("\t%08X\n", info->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (regnum = 0; regnum < 0x100; regnum++)
|
for (regnum = 0; regnum < 0x100; regnum++)
|
||||||
if (subregwrite_count[regnum] != 0)
|
if (subregwrite_count[regnum] != 0)
|
||||||
{
|
{
|
||||||
@ -487,7 +487,7 @@ regwrite_count[offset]++;
|
|||||||
if (regdata_count[offset] < 256)
|
if (regdata_count[offset] < 256)
|
||||||
{
|
{
|
||||||
reg_info **tailptr;
|
reg_info **tailptr;
|
||||||
|
|
||||||
for (tailptr = ®data[offset]; *tailptr != NULL; tailptr = &(*tailptr)->next)
|
for (tailptr = ®data[offset]; *tailptr != NULL; tailptr = &(*tailptr)->next)
|
||||||
if ((*tailptr)->value == data)
|
if ((*tailptr)->value == data)
|
||||||
break;
|
break;
|
||||||
@ -633,7 +633,7 @@ static void zeus_register_update(offs_t offset, UINT32 oldval, int logit)
|
|||||||
else if (logit)
|
else if (logit)
|
||||||
logerror("\t[40]=%08X [4E]=%08X\n", zeusbase[0x40], zeusbase[0x4e]);
|
logerror("\t[40]=%08X [4E]=%08X\n", zeusbase[0x40], zeusbase[0x4e]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x51:
|
case 0x51:
|
||||||
|
|
||||||
/* in this mode, crusnexo expects the reads to immediately latch */
|
/* in this mode, crusnexo expects the reads to immediately latch */
|
||||||
@ -731,7 +731,7 @@ subregwrite_count[which]++;
|
|||||||
if (subregdata_count[which] < 256)
|
if (subregdata_count[which] < 256)
|
||||||
{
|
{
|
||||||
reg_info **tailptr;
|
reg_info **tailptr;
|
||||||
|
|
||||||
for (tailptr = &subregdata[which]; *tailptr != NULL; tailptr = &(*tailptr)->next)
|
for (tailptr = &subregdata[which]; *tailptr != NULL; tailptr = &(*tailptr)->next)
|
||||||
if ((*tailptr)->value == value)
|
if ((*tailptr)->value == value)
|
||||||
break;
|
break;
|
||||||
@ -750,11 +750,11 @@ if (subregdata_count[which] < 256)
|
|||||||
case 0x04:
|
case 0x04:
|
||||||
zeus_renderbase = waveram1_ptr_from_expanded_addr(value << 16);
|
zeus_renderbase = waveram1_ptr_from_expanded_addr(value << 16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x05:
|
case 0x05:
|
||||||
zeus_texbase = value % (WAVERAM0_HEIGHT * WAVERAM0_WIDTH);
|
zeus_texbase = value % (WAVERAM0_HEIGHT * WAVERAM0_WIDTH);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x40:
|
case 0x40:
|
||||||
zeus_unknown_40 = value & 0xffffff;
|
zeus_unknown_40 = value & 0xffffff;
|
||||||
zeus_quad_size = (zeus_unknown_40 == 0) ? 10 : 14;
|
zeus_quad_size = (zeus_unknown_40 == 0) ? 10 : 14;
|
||||||
@ -773,7 +773,7 @@ if (subregdata_count[which] < 256)
|
|||||||
static int zeus_fifo_process(const UINT32 *data, int numwords)
|
static int zeus_fifo_process(const UINT32 *data, int numwords)
|
||||||
{
|
{
|
||||||
int dataoffs = 0;
|
int dataoffs = 0;
|
||||||
|
|
||||||
/* handle logging */
|
/* handle logging */
|
||||||
switch (data[0] >> 24)
|
switch (data[0] >> 24)
|
||||||
{
|
{
|
||||||
@ -786,28 +786,28 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
if (((data[0] >> 16) & 0x7f) != 0x08)
|
if (((data[0] >> 16) & 0x7f) != 0x08)
|
||||||
zeus_register32_w((data[0] >> 16) & 0x7f, data[1], log_fifo);
|
zeus_register32_w((data[0] >> 16) & 0x7f, data[1], log_fifo);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x08: set matrix and point (thegrid) */
|
/* 0x08: set matrix and point (thegrid) */
|
||||||
case 0x08:
|
case 0x08:
|
||||||
if (numwords < 14)
|
if (numwords < 14)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
dataoffs = 1;
|
dataoffs = 1;
|
||||||
|
|
||||||
/* 0x07: set matrix and point (crusnexo) */
|
/* 0x07: set matrix and point (crusnexo) */
|
||||||
case 0x07:
|
case 0x07:
|
||||||
if (numwords < 13)
|
if (numwords < 13)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* extract the matrix from the raw data */
|
/* extract the matrix from the raw data */
|
||||||
zeus_matrix[0][0] = convert_tms3203x_fp_to_float(data[dataoffs + 1]);
|
zeus_matrix[0][0] = convert_tms3203x_fp_to_float(data[dataoffs + 1]);
|
||||||
zeus_matrix[0][1] = convert_tms3203x_fp_to_float(data[dataoffs + 2]);
|
zeus_matrix[0][1] = convert_tms3203x_fp_to_float(data[dataoffs + 2]);
|
||||||
zeus_matrix[0][2] = convert_tms3203x_fp_to_float(data[dataoffs + 3]);
|
zeus_matrix[0][2] = convert_tms3203x_fp_to_float(data[dataoffs + 3]);
|
||||||
zeus_matrix[1][0] = convert_tms3203x_fp_to_float(data[dataoffs + 4]);
|
zeus_matrix[1][0] = convert_tms3203x_fp_to_float(data[dataoffs + 4]);
|
||||||
zeus_matrix[1][1] = convert_tms3203x_fp_to_float(data[dataoffs + 5]);
|
zeus_matrix[1][1] = convert_tms3203x_fp_to_float(data[dataoffs + 5]);
|
||||||
zeus_matrix[1][2] = convert_tms3203x_fp_to_float(data[dataoffs + 6]);
|
zeus_matrix[1][2] = convert_tms3203x_fp_to_float(data[dataoffs + 6]);
|
||||||
zeus_matrix[2][0] = convert_tms3203x_fp_to_float(data[dataoffs + 7]);
|
zeus_matrix[2][0] = convert_tms3203x_fp_to_float(data[dataoffs + 7]);
|
||||||
zeus_matrix[2][1] = convert_tms3203x_fp_to_float(data[dataoffs + 8]);
|
zeus_matrix[2][1] = convert_tms3203x_fp_to_float(data[dataoffs + 8]);
|
||||||
zeus_matrix[2][2] = convert_tms3203x_fp_to_float(data[dataoffs + 9]);
|
zeus_matrix[2][2] = convert_tms3203x_fp_to_float(data[dataoffs + 9]);
|
||||||
|
|
||||||
/* extract the translation point from the raw data */
|
/* extract the translation point from the raw data */
|
||||||
zeus_point[0] = convert_tms3203x_fp_to_float(data[dataoffs + 10]);
|
zeus_point[0] = convert_tms3203x_fp_to_float(data[dataoffs + 10]);
|
||||||
@ -826,7 +826,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
zeus_point[2]);
|
zeus_point[2]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x15: set point only (thegrid) */
|
/* 0x15: set point only (thegrid) */
|
||||||
/* 0x16: set point only (crusnexo) */
|
/* 0x16: set point only (crusnexo) */
|
||||||
case 0x15:
|
case 0x15:
|
||||||
@ -838,7 +838,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
zeus_point[0] = convert_tms3203x_fp_to_float(data[1]);
|
zeus_point[0] = convert_tms3203x_fp_to_float(data[1]);
|
||||||
zeus_point[1] = convert_tms3203x_fp_to_float(data[2]);
|
zeus_point[1] = convert_tms3203x_fp_to_float(data[2]);
|
||||||
zeus_point[2] = convert_tms3203x_fp_to_float(data[3]);
|
zeus_point[2] = convert_tms3203x_fp_to_float(data[3]);
|
||||||
|
|
||||||
if (log_fifo)
|
if (log_fifo)
|
||||||
{
|
{
|
||||||
log_fifo_command(data, numwords, "");
|
log_fifo_command(data, numwords, "");
|
||||||
@ -848,7 +848,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
zeus_point[2]);
|
zeus_point[2]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x1c: */
|
/* 0x1c: */
|
||||||
case 0x1c:
|
case 0x1c:
|
||||||
if (numwords < 4)
|
if (numwords < 4)
|
||||||
@ -874,7 +874,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
waveram_plot_depth(y, x, 0, 0x7fff);
|
waveram_plot_depth(y, x, 0, 0x7fff);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x23: render model in waveram (thegrid) */
|
/* 0x23: render model in waveram (thegrid) */
|
||||||
/* 0x24: render model in waveram (crusnexo) */
|
/* 0x24: render model in waveram (crusnexo) */
|
||||||
case 0x23:
|
case 0x23:
|
||||||
@ -885,7 +885,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
log_fifo_command(data, numwords, "");
|
log_fifo_command(data, numwords, "");
|
||||||
zeus_draw_model(data[1], data[0] & 0xffff, log_fifo);
|
zeus_draw_model(data[1], data[0] & 0xffff, log_fifo);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x31: sync pipeline? (thegrid) */
|
/* 0x31: sync pipeline? (thegrid) */
|
||||||
/* 0x32: sync pipeline? (crusnexo) */
|
/* 0x32: sync pipeline? (crusnexo) */
|
||||||
case 0x31:
|
case 0x31:
|
||||||
@ -894,7 +894,7 @@ static int zeus_fifo_process(const UINT32 *data, int numwords)
|
|||||||
log_fifo_command(data, numwords, "\n");
|
log_fifo_command(data, numwords, "\n");
|
||||||
zeus_quad_size = 10;
|
zeus_quad_size = 10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* 0x38: direct render quad (crusnexo) */
|
/* 0x38: direct render quad (crusnexo) */
|
||||||
case 0x38:
|
case 0x38:
|
||||||
if (numwords < 12)
|
if (numwords < 12)
|
||||||
@ -991,7 +991,7 @@ static void zeus_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
|||||||
else if (logit)
|
else if (logit)
|
||||||
logerror("unknown offset\n");
|
logerror("unknown offset\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x31: /* thegrid */
|
case 0x31: /* thegrid */
|
||||||
if (logit)
|
if (logit)
|
||||||
logerror("sync?\n");
|
logerror("sync?\n");
|
||||||
@ -1003,7 +1003,7 @@ static void zeus_draw_model(UINT32 baseaddr, UINT16 count, int logit)
|
|||||||
logerror("reg32");
|
logerror("reg32");
|
||||||
zeus_register32_w((databuffer[0] >> 16) & 0x7f, databuffer[1], logit);
|
zeus_register32_w((databuffer[0] >> 16) & 0x7f, databuffer[1], logit);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x38: /* crusnexo/thegrid */
|
case 0x38: /* crusnexo/thegrid */
|
||||||
zeus_draw_quad(databuffer, texoffs, logit);
|
zeus_draw_quad(databuffer, texoffs, logit);
|
||||||
break;
|
break;
|
||||||
@ -1040,13 +1040,13 @@ static void zeus_draw_quad(const UINT32 *databuffer, UINT32 texoffs, int logit)
|
|||||||
poly_extra_data *extra;
|
poly_extra_data *extra;
|
||||||
poly_vertex clipvert[8];
|
poly_vertex clipvert[8];
|
||||||
poly_vertex vert[4];
|
poly_vertex vert[4];
|
||||||
// float uscale, vscale;
|
// float uscale, vscale;
|
||||||
float maxy, maxx;
|
float maxy, maxx;
|
||||||
// int val1, val2, texwshift;
|
// int val1, val2, texwshift;
|
||||||
int numverts;
|
int numverts;
|
||||||
int i;
|
int i;
|
||||||
// INT16 normal[3];
|
// INT16 normal[3];
|
||||||
// INT32 rotnormal[3];
|
// INT32 rotnormal[3];
|
||||||
int texmode = texoffs & 0xffff;
|
int texmode = texoffs & 0xffff;
|
||||||
|
|
||||||
if (logit)
|
if (logit)
|
||||||
@ -1065,43 +1065,43 @@ if (input_code_pressed(KEYCODE_Y) && (texoffs & 0xffff) == 0x0dd) return;
|
|||||||
callback = render_poly_8bit;
|
callback = render_poly_8bit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
0 38800000
|
0 38800000
|
||||||
1 x2 | x1
|
1 x2 | x1
|
||||||
2 v1 | u1
|
2 v1 | u1
|
||||||
3 y2 | y1
|
3 y2 | y1
|
||||||
4 v2 | u2
|
4 v2 | u2
|
||||||
5 z2 | z1
|
5 z2 | z1
|
||||||
6 v3 | u3
|
6 v3 | u3
|
||||||
7 v4 | u4
|
7 v4 | u4
|
||||||
8 ???
|
8 ???
|
||||||
9 x4 | x3
|
9 x4 | x3
|
||||||
10 y4 | y3
|
10 y4 | y3
|
||||||
11 z4 | z3
|
11 z4 | z3
|
||||||
|
|
||||||
In memory:
|
In memory:
|
||||||
+0 = ???
|
+0 = ???
|
||||||
+1 = set via $05410000/value
|
+1 = set via $05410000/value
|
||||||
+2 = x1
|
+2 = x1
|
||||||
+3 = y1
|
+3 = y1
|
||||||
+4 = z1
|
+4 = z1
|
||||||
+5 = x2
|
+5 = x2
|
||||||
+6 = y2
|
+6 = y2
|
||||||
+7 = z2
|
+7 = z2
|
||||||
+8 = x3
|
+8 = x3
|
||||||
+9 = y3
|
+9 = y3
|
||||||
+10= z3
|
+10= z3
|
||||||
+11= x4
|
+11= x4
|
||||||
+12= y4
|
+12= y4
|
||||||
+13= z4
|
+13= z4
|
||||||
+14= uv1
|
+14= uv1
|
||||||
+15= uv2
|
+15= uv2
|
||||||
+16= uv3
|
+16= uv3
|
||||||
+17= uv4
|
+17= uv4
|
||||||
+18= set via $05200000/$05000000 | (value << 10) (uvoffset?)
|
+18= set via $05200000/$05000000 | (value << 10) (uvoffset?)
|
||||||
+19= ???
|
+19= ???
|
||||||
|
|
||||||
|
|
||||||
38810000 00000000 00C7|FF38 FF5E|FF5E 15400154 11400114 00000000 00000000 FF38|00C7 00A3|00A3 -- quad
|
|
||||||
|
38810000 00000000 00C7|FF38 FF5E|FF5E 15400154 11400114 00000000 00000000 FF38|00C7 00A3|00A3 -- quad
|
||||||
xxxx|xxxx yyyy|yyyy xxxx|xxxx yyyy|yyyy
|
xxxx|xxxx yyyy|yyyy xxxx|xxxx yyyy|yyyy
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1111,7 +1111,7 @@ In memory:
|
|||||||
vert[0].p[0] = (INT16)databuffer[6];
|
vert[0].p[0] = (INT16)databuffer[6];
|
||||||
vert[0].p[1] = (databuffer[1] >> 2) & 0xff;
|
vert[0].p[1] = (databuffer[1] >> 2) & 0xff;
|
||||||
vert[0].p[2] = (databuffer[1] >> 18) & 0xff;
|
vert[0].p[2] = (databuffer[1] >> 18) & 0xff;
|
||||||
|
|
||||||
vert[1].x = (INT16)(databuffer[2] >> 16);
|
vert[1].x = (INT16)(databuffer[2] >> 16);
|
||||||
vert[1].y = (INT16)(databuffer[3] >> 16);
|
vert[1].y = (INT16)(databuffer[3] >> 16);
|
||||||
vert[1].p[0] = (INT16)(databuffer[6] >> 16);
|
vert[1].p[0] = (INT16)(databuffer[6] >> 16);
|
||||||
@ -1123,7 +1123,7 @@ In memory:
|
|||||||
vert[2].p[0] = (INT16)databuffer[7];
|
vert[2].p[0] = (INT16)databuffer[7];
|
||||||
vert[2].p[1] = (databuffer[4] >> 22) & 0xff;
|
vert[2].p[1] = (databuffer[4] >> 22) & 0xff;
|
||||||
vert[2].p[2] = (databuffer[5] >> 2) & 0xff;
|
vert[2].p[2] = (databuffer[5] >> 2) & 0xff;
|
||||||
|
|
||||||
vert[3].x = (INT16)(databuffer[8] >> 16);
|
vert[3].x = (INT16)(databuffer[8] >> 16);
|
||||||
vert[3].y = (INT16)(databuffer[9] >> 16);
|
vert[3].y = (INT16)(databuffer[9] >> 16);
|
||||||
vert[3].p[0] = (INT16)(databuffer[7] >> 16);
|
vert[3].p[0] = (INT16)(databuffer[7] >> 16);
|
||||||
@ -1131,36 +1131,36 @@ In memory:
|
|||||||
vert[3].p[2] = (databuffer[5] >> 22) & 0xff;
|
vert[3].p[2] = (databuffer[5] >> 22) & 0xff;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
vert[0].x = (INT16)databuffer[1];
|
vert[0].x = (INT16)databuffer[1];
|
||||||
vert[0].y = (INT16)databuffer[3];
|
vert[0].y = (INT16)databuffer[3];
|
||||||
vert[0].p[0] = (INT16)databuffer[5];
|
vert[0].p[0] = (INT16)databuffer[5];
|
||||||
vert[0].p[1] = (UINT16)databuffer[2];
|
vert[0].p[1] = (UINT16)databuffer[2];
|
||||||
vert[0].p[2] = (UINT16)(databuffer[2] >> 16);
|
vert[0].p[2] = (UINT16)(databuffer[2] >> 16);
|
||||||
|
|
||||||
vert[1].x = (INT16)(databuffer[1] >> 16);
|
|
||||||
vert[1].y = (INT16)(databuffer[3] >> 16);
|
|
||||||
vert[1].p[0] = (INT16)(databuffer[5] >> 16);
|
|
||||||
vert[1].p[1] = (UINT16)databuffer[4];
|
|
||||||
vert[1].p[2] = (UINT16)(databuffer[4] >> 16);
|
|
||||||
|
|
||||||
vert[2].x = (INT16)databuffer[9];
|
vert[1].x = (INT16)(databuffer[1] >> 16);
|
||||||
vert[2].y = (INT16)databuffer[10];
|
vert[1].y = (INT16)(databuffer[3] >> 16);
|
||||||
vert[2].p[0] = (INT16)databuffer[11];
|
vert[1].p[0] = (INT16)(databuffer[5] >> 16);
|
||||||
vert[2].p[1] = (UINT16)databuffer[6];
|
vert[1].p[1] = (UINT16)databuffer[4];
|
||||||
vert[2].p[2] = (UINT16)(databuffer[6] >> 16);
|
vert[1].p[2] = (UINT16)(databuffer[4] >> 16);
|
||||||
|
|
||||||
vert[3].x = (INT16)(databuffer[9] >> 16);
|
vert[2].x = (INT16)databuffer[9];
|
||||||
vert[3].y = (INT16)(databuffer[10] >> 16);
|
vert[2].y = (INT16)databuffer[10];
|
||||||
vert[3].p[0] = (INT16)(databuffer[11] >> 16);
|
vert[2].p[0] = (INT16)databuffer[11];
|
||||||
vert[3].p[1] = (UINT16)databuffer[7];
|
vert[2].p[1] = (UINT16)databuffer[6];
|
||||||
vert[3].p[2] = (UINT16)(databuffer[7] >> 16);
|
vert[2].p[2] = (UINT16)(databuffer[6] >> 16);
|
||||||
|
|
||||||
|
vert[3].x = (INT16)(databuffer[9] >> 16);
|
||||||
|
vert[3].y = (INT16)(databuffer[10] >> 16);
|
||||||
|
vert[3].p[0] = (INT16)(databuffer[11] >> 16);
|
||||||
|
vert[3].p[1] = (UINT16)databuffer[7];
|
||||||
|
vert[3].p[2] = (UINT16)(databuffer[7] >> 16);
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
float x = vert[i].x;
|
float x = vert[i].x;
|
||||||
float y = vert[i].y;
|
float y = vert[i].y;
|
||||||
float z = vert[i].p[0];
|
float z = vert[i].p[0];
|
||||||
|
|
||||||
vert[i].x = x * zeus_matrix[0][0] + y * zeus_matrix[0][1] + z * zeus_matrix[0][2] + zeus_point[0];
|
vert[i].x = x * zeus_matrix[0][0] + y * zeus_matrix[0][1] + z * zeus_matrix[0][2] + zeus_point[0];
|
||||||
vert[i].y = x * zeus_matrix[1][0] + y * zeus_matrix[1][1] + z * zeus_matrix[1][2] + zeus_point[1];
|
vert[i].y = x * zeus_matrix[1][0] + y * zeus_matrix[1][1] + z * zeus_matrix[1][2] + zeus_point[1];
|
||||||
vert[i].p[0] = x * zeus_matrix[2][0] + y * zeus_matrix[2][1] + z * zeus_matrix[2][2] + zeus_point[2];
|
vert[i].p[0] = x * zeus_matrix[2][0] + y * zeus_matrix[2][1] + z * zeus_matrix[2][2] + zeus_point[2];
|
||||||
@ -1168,7 +1168,7 @@ vert[i].p[0] += zbase;
|
|||||||
vert[i].p[2] += texoffs >> 16;
|
vert[i].p[2] += texoffs >> 16;
|
||||||
vert[i].p[1] *= 256.0f;
|
vert[i].p[1] *= 256.0f;
|
||||||
vert[i].p[2] *= 256.0f;
|
vert[i].p[2] *= 256.0f;
|
||||||
|
|
||||||
if (logit)
|
if (logit)
|
||||||
{
|
{
|
||||||
logerror("\t\t(%f,%f,%f) (%02X,%02X)\n",
|
logerror("\t\t(%f,%f,%f) (%02X,%02X)\n",
|
||||||
@ -1186,8 +1186,8 @@ vert[i].p[0] += zbase;
|
|||||||
{
|
{
|
||||||
// 412.0f here works for crusnexo
|
// 412.0f here works for crusnexo
|
||||||
float ooz = 512.0f / clipvert[i].p[0];
|
float ooz = 512.0f / clipvert[i].p[0];
|
||||||
|
|
||||||
// ooz *= 1.0f / (512.0f * 512.0f);
|
// ooz *= 1.0f / (512.0f * 512.0f);
|
||||||
|
|
||||||
clipvert[i].x *= ooz;
|
clipvert[i].x *= ooz;
|
||||||
clipvert[i].y *= ooz;
|
clipvert[i].y *= ooz;
|
||||||
@ -1207,7 +1207,7 @@ vert[i].p[0] += zbase;
|
|||||||
if (clipvert[i].y == maxy)
|
if (clipvert[i].y == maxy)
|
||||||
clipvert[i].y += 0.0005f;
|
clipvert[i].y += 0.0005f;
|
||||||
}
|
}
|
||||||
|
|
||||||
extra = poly_get_extra_data(poly);
|
extra = poly_get_extra_data(poly);
|
||||||
switch (texmode)
|
switch (texmode)
|
||||||
{
|
{
|
||||||
@ -1222,7 +1222,7 @@ vert[i].p[0] += zbase;
|
|||||||
case 0xc5d: /* crusnexo */
|
case 0xc5d: /* crusnexo */
|
||||||
extra->texwidth = 256;
|
extra->texwidth = 256;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x059: /* crusnexo */
|
case 0x059: /* crusnexo */
|
||||||
case 0x0d9: /* crusnexo */
|
case 0x0d9: /* crusnexo */
|
||||||
case 0x119: /* crusnexo: license plates */
|
case 0x119: /* crusnexo: license plates */
|
||||||
@ -1234,7 +1234,7 @@ vert[i].p[0] += zbase;
|
|||||||
case 0x155: /* crusnexo */
|
case 0x155: /* crusnexo */
|
||||||
extra->texwidth = 64;
|
extra->texwidth = 64;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
static UINT8 hits[0x10000];
|
static UINT8 hits[0x10000];
|
||||||
@ -1271,11 +1271,11 @@ static void render_poly_8bit(void *dest, INT32 scanline, const poly_extent *exte
|
|||||||
INT32 curz = extent->param[0].start;
|
INT32 curz = extent->param[0].start;
|
||||||
INT32 curu = extent->param[1].start;
|
INT32 curu = extent->param[1].start;
|
||||||
INT32 curv = extent->param[2].start;
|
INT32 curv = extent->param[2].start;
|
||||||
// INT32 curi = extent->param[3].start;
|
// INT32 curi = extent->param[3].start;
|
||||||
INT32 dzdx = extent->param[0].dpdx;
|
INT32 dzdx = extent->param[0].dpdx;
|
||||||
INT32 dudx = extent->param[1].dpdx;
|
INT32 dudx = extent->param[1].dpdx;
|
||||||
INT32 dvdx = extent->param[2].dpdx;
|
INT32 dvdx = extent->param[2].dpdx;
|
||||||
// INT32 didx = extent->param[3].dpdx;
|
// INT32 didx = extent->param[3].dpdx;
|
||||||
const void *texbase = extra->texbase;
|
const void *texbase = extra->texbase;
|
||||||
const void *palbase = extra->palbase;
|
const void *palbase = extra->palbase;
|
||||||
UINT16 transcolor = extra->transcolor;
|
UINT16 transcolor = extra->transcolor;
|
||||||
@ -1317,7 +1317,7 @@ static void render_poly_8bit(void *dest, INT32 scanline, const poly_extent *exte
|
|||||||
curz += dzdx;
|
curz += dzdx;
|
||||||
curu += dudx;
|
curu += dudx;
|
||||||
curv += dvdx;
|
curv += dvdx;
|
||||||
// curi += didx;
|
// curi += didx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
const char build_version[] = "0.122u1 ("__DATE__")";
|
const char build_version[] = "0.122u2 ("__DATE__")";
|
||||||
|
Loading…
Reference in New Issue
Block a user