mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
srcclean, fix up apple2_flop_clcracked.xml (nw)
This commit is contained in:
parent
ec1a4cf4a0
commit
27216fc1d1
File diff suppressed because it is too large
Load Diff
@ -164,9 +164,9 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<!-- the Spanish carts do not have a part number on the cartridge, PCB or box -->
|
||||
|
||||
|
||||
<!--
|
||||
1. "Cuéntame Al Oído" La Oreja De Van Gogh
|
||||
2. "La Última Noche" Luis Miguel
|
||||
@ -188,7 +188,7 @@
|
||||
<rom name="spainvol1.bin" size="0x100000" crc="b90366cc" sha1="f6bab71fc8cb420728ffa721d7c12767719099e5" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
<!--
|
||||
1. "Héroe" Enrique Iglesias
|
||||
@ -211,6 +211,6 @@
|
||||
<rom name="spainvol2.bin" size="0x100000" crc="a60f7b30" sha1="7c7736e692b9f4ce838dc064e214322aa3ae0e6a" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -8766,7 +8766,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="corncob">
|
||||
<description>Corncob Deluxe</description>
|
||||
<year>1992</year>
|
||||
@ -9571,7 +9571,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="kyrandia">
|
||||
<description>Fables & Fiends - The Legend of Kyrandia Book One</description>
|
||||
<year>1992</year>
|
||||
@ -10900,7 +10900,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="msroa">
|
||||
<description>Microsoft Return of Arcade</description>
|
||||
<year>1996</year>
|
||||
|
@ -5,32 +5,32 @@
|
||||
Cartridges supported
|
||||
|
||||
Piano Favourites (J7522)
|
||||
Dora the Explorer Musical Adventure (J7523)
|
||||
Jungle Boogie (J7524)
|
||||
Scooby-Doo! Monster Mayhem (J7525)
|
||||
Barbie Princess Enchanted Sounds (J7526)
|
||||
Nicktoons Show Tunes (J7527)
|
||||
Holiday Wonderland (J7528)
|
||||
|
||||
Rockin' Dance Party (J8715)
|
||||
|
||||
Pop Hits (K0653)
|
||||
|
||||
Jammin Jungle Safari (Disney The Lion King, Disney The Jungle Book, Disney Tarzan) (K4653)
|
||||
Dora the Explorer Musical Adventure (J7523)
|
||||
Jungle Boogie (J7524)
|
||||
Scooby-Doo! Monster Mayhem (J7525)
|
||||
Barbie Princess Enchanted Sounds (J7526)
|
||||
Nicktoons Show Tunes (J7527)
|
||||
Holiday Wonderland (J7528)
|
||||
|
||||
Rockin' Dance Party (J8715)
|
||||
|
||||
Pop Hits (K0653)
|
||||
|
||||
Jammin Jungle Safari (Disney The Lion King, Disney The Jungle Book, Disney Tarzan) (K4653)
|
||||
The Wizard of Oz - We're Off to Play the Piano (K4654)
|
||||
American Idol - Take The Stage (K4655)
|
||||
Disney Princess Magical Melodies (K4656)
|
||||
Disney Princess Magical Melodies (K4656)
|
||||
|
||||
|
||||
*NOT DUMPED*
|
||||
|
||||
The system was also released as "Aprende A Tocar Piano" for Spanish (South American?) markets
|
||||
with at least 3 carts having full Spanish labels and ingame presentation
|
||||
|
||||
Piezas De Piano Populares (J9939) - Piano Favourites
|
||||
|
||||
Dora Aventura Musical (J9947) - Dora the Explorer Musical Adventure
|
||||
Ritmos de la Selva (J9948) - Jungle Boogie
|
||||
*NOT DUMPED*
|
||||
|
||||
The system was also released as "Aprende A Tocar Piano" for Spanish (South American?) markets
|
||||
with at least 3 carts having full Spanish labels and ingame presentation
|
||||
|
||||
Piezas De Piano Populares (J9939) - Piano Favourites
|
||||
|
||||
Dora Aventura Musical (J9947) - Dora the Explorer Musical Adventure
|
||||
Ritmos de la Selva (J9948) - Jungle Boogie
|
||||
|
||||
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="barbie">
|
||||
<description>Barbie Princess Enchanted Sounds (J7526)</description>
|
||||
<year>2005</year>
|
||||
@ -117,7 +117,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="showtune">
|
||||
<description>Nicktoons Show Tunes (J7527)</description>
|
||||
<year>2005</year>
|
||||
@ -127,8 +127,8 @@
|
||||
<rom name="icppshowtunes.bin" size="0x800000" crc="c95836fd" sha1="c07b500f241fc6b3a3302b580794bb2eb86977c7" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="holidaywl">
|
||||
<description>Holiday Wonderland (J7528)</description>
|
||||
<year>2005</year>
|
||||
@ -139,7 +139,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="rdp">
|
||||
<description>Rockin' Dance Party (J8715)</description>
|
||||
<year>2005</year>
|
||||
@ -149,8 +149,8 @@
|
||||
<rom name="icpprockindanceparty.bin" size="0x800000" crc="00d597d3" sha1="603c8d9d11f5e1d075a1b524e99b581d859b43ba" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="pophits">
|
||||
<description>Pop Hits (K0653)</description>
|
||||
<year>2005</year>
|
||||
@ -160,8 +160,8 @@
|
||||
<rom name="icpppophits.bin" size="0x800000" crc="c15ccdad" sha1="f4a058c83b1a90a1c8c5cfa766429330ce34409d" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="jjs">
|
||||
<description>Jammin' Jungle Safari (Disney's The Lion King, Jungle Book, Tarzan) (K4653)</description> <!-- Tarzan is shown on the cart, but none of the songs are from it? -->
|
||||
<year>2005</year>
|
||||
@ -171,8 +171,8 @@
|
||||
<rom name="icppjamminjunglesafari.bin" size="0x800000" crc="6408abb6" sha1="9c9c050e919222a80369d2a116a85db6cc4d7acb" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="wizardoz">
|
||||
<description>The Wizard of Oz - We're Off to Play the Piano (K4654)</description>
|
||||
<year>2005</year>
|
||||
@ -182,8 +182,8 @@
|
||||
<rom name="icppwizardofoz.bin" size="0x800000" crc="4c004177" sha1="415463532e760542cacdc833ed1d201df70e18d3" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<software name="aitts">
|
||||
<description>American Idol Take the Stage (K4655)</description>
|
||||
<year>2005</year>
|
||||
@ -193,7 +193,7 @@
|
||||
<rom name="icppamericanidoltakethestage.bin" size="0x800000" crc="908a965d" sha1="9faca7bb85ca395e2f8cd444884f0a74ce22d151" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</software>
|
||||
|
||||
<software name="dpmagic">
|
||||
<description>Disney Princess Magical Melodies (K4656)</description>
|
||||
|
@ -341,7 +341,7 @@
|
||||
</dataarea>
|
||||
</part>
|
||||
|
||||
<part name="flop3" interface="floppy_3"><!-- 2 Locoscript files only: read.me and contents.doc -->
|
||||
<part name="flop3" interface="floppy_3"><!-- 2 Locoscript files only: read.me and contents.doc -->
|
||||
<dataarea name="flop" size="195584"><!-- Dump has excess tracks that will not fit a real SD floppy -->
|
||||
<rom name="loco3upgradec.dsk" size="195584" crc="acbb82a2" sha1="09f1e2f9afb202bc929db263dcff80287236d680" offset="0" status="baddump" />
|
||||
</dataarea>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
|
||||
<!--
|
||||
Known cartridges
|
||||
Known cartridges
|
||||
|
||||
Dumped|Name |Notes
|
||||
______|___________|______
|
||||
@ -26,7 +26,7 @@ ______|___________|______
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="tennis" supported="no">
|
||||
<description>Tennis</description>
|
||||
<year>2005</year>
|
||||
@ -37,7 +37,7 @@ ______|___________|______
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="whacmole" supported="no">
|
||||
<description>Whac-A-Mole</description>
|
||||
<year>2005</year>
|
||||
@ -47,6 +47,6 @@ ______|___________|______
|
||||
<rom name="whac-a-mole.bin" size="0x400000" crc="62625c62" sha1="846045308e242aff347f93fab1e9b2e8ef46386f" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
||||
|
@ -1977,7 +1977,7 @@ void mips3_device::handle_cop1_fr0(uint32_t op)
|
||||
if (IS_SINGLE(op)) { /* DIV.S */
|
||||
if (FTVALW_FR0 == 0 && (COP1_FCR31 & (1 << (FCR31_ENABLE + FPE_DIV0)))) {
|
||||
COP1_FCR31 |= (1 << (FCR31_FLAGS + FPE_DIV0)); // Set flag
|
||||
COP1_FCR31 |= (1 << (FCR31_CAUSE + FPE_DIV0)); // Set cause
|
||||
COP1_FCR31 |= (1 << (FCR31_CAUSE + FPE_DIV0)); // Set cause
|
||||
generate_exception(EXCEPTION_FPE, 1);
|
||||
//machine().debug_break();
|
||||
}
|
||||
@ -1988,7 +1988,7 @@ void mips3_device::handle_cop1_fr0(uint32_t op)
|
||||
else { /* DIV.D */
|
||||
if (FTVALL_FR0 == 0ull && (COP1_FCR31 & (1 << (FCR31_ENABLE + FPE_DIV0)))) {
|
||||
COP1_FCR31 |= (1 << (FCR31_FLAGS + FPE_DIV0)); // Set flag
|
||||
COP1_FCR31 |= (1 << (FCR31_CAUSE + FPE_DIV0)); // Set cause
|
||||
COP1_FCR31 |= (1 << (FCR31_CAUSE + FPE_DIV0)); // Set cause
|
||||
generate_exception(EXCEPTION_FPE, 1);
|
||||
//machine().debug_break();
|
||||
}
|
||||
|
@ -161,10 +161,10 @@
|
||||
#define EXCEPTION_TLBSTORE_FILL 17
|
||||
#define EXCEPTION_COUNT 18
|
||||
|
||||
#define FCR31_FLAGS 2 // FLAGS start bit
|
||||
#define FCR31_ENABLE 7 // Enable start bit
|
||||
#define FCR31_CAUSE 12 // Cause start bit
|
||||
#define FPE_DIV0 3 // Divide by zero bit index
|
||||
#define FCR31_FLAGS 2 // FLAGS start bit
|
||||
#define FCR31_ENABLE 7 // Enable start bit
|
||||
#define FCR31_CAUSE 12 // Cause start bit
|
||||
#define FPE_DIV0 3 // Divide by zero bit index
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -81,7 +81,7 @@ private:
|
||||
const uint8_t * m_master_password;
|
||||
const uint8_t * m_user_password;
|
||||
// DMA data transfer time for 1 sector
|
||||
attotime m_dma_transfer_time;
|
||||
attotime m_dma_transfer_time;
|
||||
};
|
||||
|
||||
// ======================> ide_hdd_device
|
||||
|
@ -57,12 +57,12 @@ void spg110_device::configure_spg_io(spg2xx_io_device* io)
|
||||
io->adc_in<0>().set(FUNC(spg110_device::adc_r<0>));
|
||||
io->adc_in<1>().set(FUNC(spg110_device::adc_r<1>));
|
||||
io->chip_select().set(FUNC(spg110_device::cs_w));
|
||||
// io->pal_read_callback().set(FUNC(spg110_device::get_pal_r));
|
||||
// io->write_timer_irq_callback().set(FUNC(spg110_device::timerirq_w));
|
||||
// io->write_uart_adc_irq_callback().set(FUNC(spg110_device::uartirq_w));
|
||||
// io->write_external_irq_callback().set(FUNC(spg110_device::extirq_w));
|
||||
// io->write_ffrq_tmr1_irq_callback().set(FUNC(spg110_device::ffreq1_w));
|
||||
// io->write_ffrq_tmr2_irq_callback().set(FUNC(spg110_device::ffreq2_w));
|
||||
// io->pal_read_callback().set(FUNC(spg110_device::get_pal_r));
|
||||
// io->write_timer_irq_callback().set(FUNC(spg110_device::timerirq_w));
|
||||
// io->write_uart_adc_irq_callback().set(FUNC(spg110_device::uartirq_w));
|
||||
// io->write_external_irq_callback().set(FUNC(spg110_device::extirq_w));
|
||||
// io->write_ffrq_tmr1_irq_callback().set(FUNC(spg110_device::ffreq1_w));
|
||||
// io->write_ffrq_tmr2_irq_callback().set(FUNC(spg110_device::ffreq2_w));
|
||||
}
|
||||
|
||||
READ16_MEMBER(spg110_device::space_r)
|
||||
|
@ -36,7 +36,7 @@ public:
|
||||
auto porta_in() { return m_porta_in.bind(); }
|
||||
auto portb_in() { return m_portb_in.bind(); }
|
||||
auto portc_in() { return m_portc_in.bind(); }
|
||||
|
||||
|
||||
template <size_t Line> auto adc_in() { return m_adc_in[Line].bind(); }
|
||||
|
||||
auto chip_select() { return m_chip_sel.bind(); }
|
||||
|
@ -114,10 +114,10 @@ void spg110_video_device::draw_page(const rectangle &cliprect, uint32_t scanline
|
||||
return;
|
||||
}
|
||||
|
||||
// if (((attr & PAGE_PRIORITY_FLAG_MASK) >> PAGE_PRIORITY_FLAG_SHIFT) != priority)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// if (((attr & PAGE_PRIORITY_FLAG_MASK) >> PAGE_PRIORITY_FLAG_SHIFT) != priority)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
uint8_t bpp = attr & 0x03;
|
||||
|
||||
@ -197,11 +197,11 @@ void spg110_video_device::draw_sprite(const rectangle &cliprect, uint32_t scanli
|
||||
const uint32_t h = 8 << ((attr2 & PAGE_TILE_HEIGHT_MASK) >> PAGE_TILE_HEIGHT_SHIFT);
|
||||
const uint32_t w = 8 << ((attr2 & PAGE_TILE_WIDTH_MASK) >> PAGE_TILE_WIDTH_SHIFT);
|
||||
|
||||
// if (!(m_video_regs[0x42] & SPRITE_COORD_TL_MASK))
|
||||
// {
|
||||
// x = (160 + x) - w / 2;
|
||||
// y = (120 - y) - (h / 2) + 8;
|
||||
// }
|
||||
// if (!(m_video_regs[0x42] & SPRITE_COORD_TL_MASK))
|
||||
// {
|
||||
// x = (160 + x) - w / 2;
|
||||
// y = (120 - y) - (h / 2) + 8;
|
||||
// }
|
||||
|
||||
y = 0x1ff - y - 128 + 1;
|
||||
x = x - 128 + 32;
|
||||
@ -242,7 +242,7 @@ void spg110_video_device::draw_sprites(const rectangle &cliprect, uint32_t scanl
|
||||
{
|
||||
//if (!(m_video_regs[0x42] & SPRITE_ENABLE_MASK))
|
||||
//{
|
||||
// return;
|
||||
// return;
|
||||
//}
|
||||
|
||||
for (uint32_t n = 0; n < 256; n++)
|
||||
@ -663,4 +663,4 @@ WRITE_LINE_MEMBER(spg110_video_device::vblank)
|
||||
void spg110_video_device::check_video_irq()
|
||||
{
|
||||
m_video_irq_cb((m_video_irq_status & m_video_irq_enable) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
SunPlus SPG2xx-series SoC peripheral emulation (Audio)
|
||||
|
||||
This is also used for SPG110, although that should be limited to
|
||||
just 8 channels and has some things shifted around (phase appears
|
||||
to be in the regular register set instead, formats might be fixed
|
||||
or at least not per-channel)
|
||||
This is also used for SPG110, although that should be limited to
|
||||
just 8 channels and has some things shifted around (phase appears
|
||||
to be in the regular register set instead, formats might be fixed
|
||||
or at least not per-channel)
|
||||
|
||||
SPG110 Beat interrupt frequency might be different too, seems to
|
||||
trigger an FIQ, but music is very slow in jak_spdmo
|
||||
SPG110 Beat interrupt frequency might be different too, seems to
|
||||
trigger an FIQ, but music is very slow in jak_spdmo
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -276,7 +276,7 @@ READ16_MEMBER(spg2xx_io_device::io_r)
|
||||
val = m_cpu->get_ds();
|
||||
LOGMASKED(LOG_SEGMENT, "io_r: Data Segment = %04x\n", val);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
LOGMASKED(LOG_UNKNOWN_IO, "io_r: Unknown register %04x\n", 0x3d00 + offset);
|
||||
break;
|
||||
@ -1221,7 +1221,7 @@ void spg2xx_io_device::check_irqs(const uint16_t changed)
|
||||
|
||||
if (changed & 0x0070) // 1024Hz, 2048Hz, 4096Hz IRQ
|
||||
{
|
||||
LOGMASKED(LOG_TIMERS, "%ssserting IRQ6 (%04x, %04x)\n", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070) ? "A" : "Dea", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070), changed); //m_cpu->set_state_unsynced(UNSP_IRQ6_LINE, (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070) ? ASSERT_LINE : CLEAR_LINE);
|
||||
LOGMASKED(LOG_TIMERS, "%ssserting IRQ6 (%04x, %04x)\n", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070) ? "A" : "Dea", (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070), changed); //m_cpu->set_state_unsynced(UNSP_IRQ6_LINE, (IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070) ? ASSERT_LINE : CLEAR_LINE);
|
||||
m_ffreq_tmr1_irq_cb((IO_IRQ_ENABLE & IO_IRQ_STATUS & 0x0070) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ public:
|
||||
|
||||
DECLARE_READ16_MEMBER(io_r);
|
||||
DECLARE_WRITE16_MEMBER(io_w);
|
||||
|
||||
|
||||
virtual DECLARE_READ16_MEMBER(io_extended_r);
|
||||
virtual DECLARE_WRITE16_MEMBER(io_extended_w);
|
||||
|
||||
|
@ -27,7 +27,7 @@ public:
|
||||
|
||||
auto sprlimit_read_callback() { return m_sprlimit_read_cb.bind(); };
|
||||
auto rowscrolloffset_read_callback() { return m_rowscrolloffset_read_cb.bind(); };
|
||||
|
||||
|
||||
auto write_video_irq_callback() { return m_video_irq_cb.bind(); };
|
||||
|
||||
protected:
|
||||
|
@ -41,7 +41,7 @@ private:
|
||||
u32 m_table_adr;
|
||||
u16 m_prg_adr;
|
||||
u16 m_status;
|
||||
|
||||
|
||||
// Table ram access
|
||||
void table_adrh_w(u16 data);
|
||||
void table_adrl_w(u16 data);
|
||||
|
@ -67,7 +67,7 @@ void meg_base_device::lfo_w(u8 reg, u16 value)
|
||||
void meg_base_device::map_w(u8 reg, u16 value)
|
||||
{
|
||||
m_map[reg] = value;
|
||||
logerror("map %d: start = %06x size = %06x extra = %x\n", reg, (value & 0xff) << 10, 1 << (10 + ((value & 0x0700) >> 8)), (value & 0xf800) >> 11);
|
||||
logerror("map %d: start = %06x size = %06x extra = %x\n", reg, (value & 0xff) << 10, 1 << (10 + ((value & 0x0700) >> 8)), (value & 0xf800) >> 11);
|
||||
}
|
||||
|
||||
u64 meg_base_device::prg_r(u16 address) const
|
||||
|
@ -70,51 +70,51 @@ WRITE_LINE_MEMBER(namco_163_sound_device::disable_w)
|
||||
/********************************************************************************/
|
||||
|
||||
/*
|
||||
Register Map (in RAM)
|
||||
Register Map (in RAM)
|
||||
|
||||
40 ffff ffff Channel 0 Frequency bits 0 - 7
|
||||
41 pppp pppp Channel 0 Phase bits 0 - 7
|
||||
42 ffff ffff Channel 0 Frequency bits 8 - 15
|
||||
43 pppp pppp Channel 0 Phase bits 8 - 15
|
||||
44 ---- --ff Channel 0 Frequency bits 16 - 17
|
||||
llll ll-- Channel 0 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
45 pppp pppp Channel 0 Phase bits 16 - 23
|
||||
46 oooo oooo Channel 0 Waveform Offset at 4 bit samples
|
||||
47 ---- cccc Channel 0 Volume
|
||||
40 ffff ffff Channel 0 Frequency bits 0 - 7
|
||||
41 pppp pppp Channel 0 Phase bits 0 - 7
|
||||
42 ffff ffff Channel 0 Frequency bits 8 - 15
|
||||
43 pppp pppp Channel 0 Phase bits 8 - 15
|
||||
44 ---- --ff Channel 0 Frequency bits 16 - 17
|
||||
llll ll-- Channel 0 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
45 pppp pppp Channel 0 Phase bits 16 - 23
|
||||
46 oooo oooo Channel 0 Waveform Offset at 4 bit samples
|
||||
47 ---- cccc Channel 0 Volume
|
||||
|
||||
48 ffff ffff Channel 1 Frequency bits 0 - 7
|
||||
49 pppp pppp Channel 1 Phase bits 0 - 7
|
||||
4a ffff ffff Channel 1 Frequency bits 8 - 15
|
||||
4b pppp pppp Channel 1 Phase bits 8 - 15
|
||||
4c ---- --ff Channel 1 Frequency bits 16 - 17
|
||||
llll ll-- Channel 1 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
4d pppp pppp Channel 1 Phase bits 16 - 23
|
||||
4e oooo oooo Channel 1 Waveform Offset at 4 bit samples
|
||||
4f ---- cccc Channel 1 Volume
|
||||
48 ffff ffff Channel 1 Frequency bits 0 - 7
|
||||
49 pppp pppp Channel 1 Phase bits 0 - 7
|
||||
4a ffff ffff Channel 1 Frequency bits 8 - 15
|
||||
4b pppp pppp Channel 1 Phase bits 8 - 15
|
||||
4c ---- --ff Channel 1 Frequency bits 16 - 17
|
||||
llll ll-- Channel 1 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
4d pppp pppp Channel 1 Phase bits 16 - 23
|
||||
4e oooo oooo Channel 1 Waveform Offset at 4 bit samples
|
||||
4f ---- cccc Channel 1 Volume
|
||||
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
78 ffff ffff Channel 7 Frequency bits 0 - 7
|
||||
79 pppp pppp Channel 7 Phase bits 0 - 7
|
||||
7a ffff ffff Channel 7 Frequency bits 8 - 15
|
||||
7b pppp pppp Channel 7 Phase bits 8 - 15
|
||||
7c ---- --ff Channel 7 Frequency bits 16 - 17
|
||||
llll ll-- Channel 7 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
7d pppp pppp Channel 7 Phase bits 16 - 23
|
||||
7e oooo oooo Channel 7 Waveform Offset at 4 bit samples
|
||||
7f ---- cccc Channel 7 Volume
|
||||
-ccc ---- Enable channels
|
||||
-000 ---- Enable channel 7 only
|
||||
-001 ---- Enable channel 7, 6
|
||||
-010 ---- Enable channel 7, 6, 5
|
||||
78 ffff ffff Channel 7 Frequency bits 0 - 7
|
||||
79 pppp pppp Channel 7 Phase bits 0 - 7
|
||||
7a ffff ffff Channel 7 Frequency bits 8 - 15
|
||||
7b pppp pppp Channel 7 Phase bits 8 - 15
|
||||
7c ---- --ff Channel 7 Frequency bits 16 - 17
|
||||
llll ll-- Channel 7 Waveform Length (256 - (l * 4)) 4 bit samples
|
||||
7d pppp pppp Channel 7 Phase bits 16 - 23
|
||||
7e oooo oooo Channel 7 Waveform Offset at 4 bit samples
|
||||
7f ---- cccc Channel 7 Volume
|
||||
-ccc ---- Enable channels
|
||||
-000 ---- Enable channel 7 only
|
||||
-001 ---- Enable channel 7, 6
|
||||
-010 ---- Enable channel 7, 6, 5
|
||||
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
-111 ---- Enable all channels
|
||||
-111 ---- Enable all channels
|
||||
*/
|
||||
|
||||
void namco_163_sound_device::addr_w(u8 data)
|
||||
|
@ -279,7 +279,7 @@ NETLIST_END()
|
||||
|
||||
NETLIST_START(zac1b11142_schematics_speech)
|
||||
|
||||
CS(I_SP, 0) // Fed through stream ...
|
||||
CS(I_SP, 0) // Fed through stream ...
|
||||
|
||||
LM3900(U5D4)
|
||||
CAP(C31, CAP_U(0.22))
|
||||
@ -314,7 +314,7 @@ NETLIST_END()
|
||||
|
||||
NETLIST_START(zac1b11142_schematics_dac)
|
||||
|
||||
CS(I_DAC, 0) // Fed through stream ...
|
||||
CS(I_DAC, 0) // Fed through stream ...
|
||||
|
||||
QBJT_EB(T4, "2N4401")
|
||||
|
||||
|
28
src/mame/drivers/akkaarrh.cpp
Executable file → Normal file
28
src/mame/drivers/akkaarrh.cpp
Executable file → Normal file
@ -2,15 +2,15 @@
|
||||
// copyright-holders:Aaron Giles
|
||||
/***************************************************************************
|
||||
|
||||
Atari Akka Arrh hardware
|
||||
Atari Akka Arrh hardware
|
||||
|
||||
driver by Aaron Giles
|
||||
driver by Aaron Giles
|
||||
|
||||
Games supported:
|
||||
* Akka Arrh (1982)
|
||||
Games supported:
|
||||
* Akka Arrh (1982)
|
||||
|
||||
Known issues:
|
||||
* none at this time
|
||||
Known issues:
|
||||
* none at this time
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -280,7 +280,7 @@ WRITE8_MEMBER(akkaarrh_state::earom_control_w)
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* CPU memory map
|
||||
* CPU memory map
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -313,7 +313,7 @@ void akkaarrh_state::main_map(address_map &map)
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Port definitions
|
||||
* Port definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -332,8 +332,8 @@ static INPUT_PORTS_START( akkaarrh )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested; if 0, writes 240 to $FD
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // resets game
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested; if 0, writes 240 to $FD
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // resets game
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -353,7 +353,7 @@ INPUT_PORTS_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Graphics definitions
|
||||
* Graphics definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -388,7 +388,7 @@ GFXDECODE_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Machine driver
|
||||
* Machine driver
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -429,7 +429,7 @@ void akkaarrh_state::akkaarrh(machine_config &config)
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROM definitions
|
||||
* ROM definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -461,7 +461,7 @@ ROM_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Game drivers
|
||||
* Game drivers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
@ -53,7 +53,7 @@ void daryde_state::pandart(machine_config &config)
|
||||
|
||||
/* Daryde Panther Darts PCB
|
||||
____________________________________________________________________________
|
||||
| ____________________ _____________________ _______ _______ |
|
||||
| ____________________ _____________________ _______ _______ |
|
||||
| ||||CN8 (16 pins)||| ||||CN5 (16 pins)|||| ||CN6|| |CN15|| ___ |
|
||||
| ___ ___________ ___________ __________ |__| |
|
||||
| |CN3 |_74HC273N_| |_74HC273N_| |_ULN2803A| |__| |
|
||||
|
@ -494,7 +494,7 @@
|
||||
These series are running in a derivative hardware with epoxy CPU brick.
|
||||
CPU is RP65C02A, with 2x Toshiba TC5565APL-10 RAMs. 1x Intel D27128A ROM.
|
||||
and 1x PAL16L8B.
|
||||
|
||||
|
||||
The main program is inside the battery backed RAM, and need to be dumped.
|
||||
See more notes below in the ROM loading.
|
||||
|
||||
@ -509,13 +509,13 @@
|
||||
and waiting for some seconds.
|
||||
|
||||
You can see two options...
|
||||
|
||||
|
||||
STOP 1 ---- OPZIONI 1
|
||||
STOP 3 ---- OPZIONI 2
|
||||
|
||||
OPZIONI 1:
|
||||
You can change game parameters for Gioco AB, Play Max, Play Min, Difficolt, Bonus, and Rilancio.
|
||||
|
||||
|
||||
OPZIONI 2:
|
||||
You can change game parameters for Tabella Vincite, Velocita Simboli, Control Double, Valore Ticket,
|
||||
Limit Credit, and Limit Scarico.
|
||||
@ -1074,7 +1074,7 @@
|
||||
|
||||
- Support for custom CPUs' opcode decryption, affecting
|
||||
Multi Win, Power Card, Mega Card, Joker Card 300 (Amatic)
|
||||
and Royal Card (Slovak Encrypted).
|
||||
and Royal Card (Slovak Encrypted).
|
||||
|
||||
Fixed Saloon & added Nevada:
|
||||
- Added I2C bus and default serial EEPROM.
|
||||
@ -1134,7 +1134,7 @@
|
||||
- Changed game description to Joker Card (Inter Games).
|
||||
- Promoted the game to Working.
|
||||
- Added technical notes.
|
||||
|
||||
|
||||
- Readded CRTC and nuked the periodic interrupt.
|
||||
- Added support for multiplexed CRTC & AY8910.
|
||||
|
||||
@ -1163,7 +1163,7 @@
|
||||
Royal Card (German, set 4):
|
||||
- Verified the GFX dump as a mix of Royal Card
|
||||
& Jolly Card graphics, with faulty address.
|
||||
Used GFX set from parent, that matches 100%.
|
||||
Used GFX set from parent, that matches 100%.
|
||||
- Removed the imperfect graphics flag.
|
||||
|
||||
Joker Card 300 (Ver.A267BC, encrypted):
|
||||
@ -1188,7 +1188,7 @@
|
||||
- Implement the MCU in monglfir and soccernw.
|
||||
- Check for a possible bug in the royalcrdf decryption scheme, that
|
||||
doesn't cover the BRK instruction properly, changing the next value
|
||||
on the fly turning a NOP into a PLA, messing the Stack Pointer.
|
||||
on the fly turning a NOP into a PLA, messing the Stack Pointer.
|
||||
|
||||
|
||||
****************************************************************************************/
|
||||
@ -1519,7 +1519,7 @@ void funworld_state::fw_brick_map(address_map &map)
|
||||
map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
|
||||
map(0x2000, 0x2fff).ram().w(FUNC(funworld_state::funworld_videoram_w)).share("videoram");
|
||||
map(0x3000, 0x3fff).ram().w(FUNC(funworld_state::funworld_colorram_w)).share("colorram");
|
||||
map(0x4000, 0x7fff).nopr(); // check for the brick RAM programming ROM.
|
||||
map(0x4000, 0x7fff).nopr(); // check for the brick RAM programming ROM.
|
||||
map(0x8000, 0xbfff).ram().share("nvram1");
|
||||
map(0xc000, 0xffff).rom();
|
||||
}
|
||||
@ -2816,7 +2816,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START( saloon )
|
||||
PORT_START("IN0") // 0800h
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Play / Start / Enter")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2) // still unknown...
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2) // still unknown...
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Stop 4 / High / Menu Down")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Take / Autohold / Exit")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Menu")
|
||||
@ -2833,7 +2833,7 @@ static INPUT_PORTS_START( saloon )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("1-6") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("1-7") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("1-8") PORT_CODE(KEYCODE_K)
|
||||
|
||||
|
||||
PORT_START("IN2") // 0802h
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Stop 2 / Low")
|
||||
@ -2843,7 +2843,7 @@ static INPUT_PORTS_START( saloon )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Stop 3")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
|
||||
PORT_START("IN3") // 0808h
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -2851,7 +2851,7 @@ static INPUT_PORTS_START( saloon )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Credits IN/OUT")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Keyout (Scarico Coin)")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Warm Reset") PORT_CODE(KEYCODE_R)
|
||||
|
||||
PORT_START("IN4") // 0A00h
|
||||
@ -2887,7 +2887,7 @@ static INPUT_PORTS_START( saloon )
|
||||
PORT_START("I2C_DI") // 1000h Input
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("i2cmem", i2cmem_device, read_sda) // Serial Data In
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -2897,7 +2897,7 @@ static INPUT_PORTS_START( saloon )
|
||||
PORT_START("I2C_DO") // 1000h Output
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("i2cmem", i2cmem_device, write_sda) // Serial Data Out
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -3759,15 +3759,15 @@ void funworld_state::fw_brick_2(machine_config &config)
|
||||
}
|
||||
|
||||
READ8_MEMBER(royalcrdf_state::royalcrdf_opcode_r)
|
||||
{
|
||||
{
|
||||
// address-based data bitswap; 4 address bits are involved, but only
|
||||
// 5 different bitswaps exist, with clear regularities, so the
|
||||
// hardware is probably selecting the appropiate one by
|
||||
// hardware is probably selecting the appropiate one by
|
||||
// applying passive logic to the address bits; we encode it
|
||||
// indexed by all the involved address bits instead. A notable fact is that
|
||||
// all the permutations in royalcrdf & multiwin are odd-parity ones,
|
||||
// so an intriguing possibility is that the hardware be applying
|
||||
// a fixed odd number (3 would suffice) of address-dependent
|
||||
// a fixed odd number (3 would suffice) of address-dependent
|
||||
// 1-bit-to-1-bit bitswaps; furthermore, in both sets one of the
|
||||
// bitswaps is equal to the one applied to all the data (but notice
|
||||
// that, in those cases, we are applying it twice to opcodes here)
|
||||
@ -3789,20 +3789,20 @@ READ8_MEMBER(royalcrdf_state::royalcrdf_opcode_r)
|
||||
5,2,1,7,
|
||||
1,7,5,2,
|
||||
};
|
||||
|
||||
|
||||
// xor masks, dependent on the same address bits than the bitswaps,
|
||||
// and with the same 5-values structure
|
||||
constexpr std::array<uint8_t,16> xm {
|
||||
0x02, 0x02, 0xa6, 0x82, 0x02, 0x02, 0x06, 0x82, 0x02, 0x02, 0xa6, 0x00, 0x02, 0x02, 0x06, 0x00
|
||||
};
|
||||
|
||||
|
||||
uint8_t data {_maincpu->space(AS_PROGRAM).read_byte(offset)};
|
||||
|
||||
if(offset<0x800)
|
||||
if(offset<0x800)
|
||||
data = bitswap<8>(data^0x22,2,6,7,4,3,1,5,0);
|
||||
|
||||
unsigned idx {bitswap<4>(offset, 8,5,2,1)};
|
||||
|
||||
|
||||
return bitswap<8>(data, bs[idx][3],6,bs[idx][2],4,3,bs[idx][1],bs[idx][0],0) ^ xm[idx];
|
||||
}
|
||||
|
||||
@ -3821,10 +3821,10 @@ void royalcrdf_state::driver_init()
|
||||
|
||||
/* Temporary hack to modify the value that ends to be a NOP,
|
||||
after the BRK, and balanced checksums. Will be removed once
|
||||
found a workaround in the decryption routines.
|
||||
found a workaround in the decryption routines.
|
||||
*/
|
||||
ROM[0x802d]=0xa2; // checksum.
|
||||
ROM[0xbc4e]=0x68; // future NOP after BRK.
|
||||
ROM[0xbc4e]=0x68; // future NOP after BRK.
|
||||
}
|
||||
|
||||
void royalcrdf_state::royalcrdf(machine_config &config)
|
||||
@ -3840,9 +3840,9 @@ void royalcrdf_state::royalcrdf(machine_config &config)
|
||||
|
||||
|
||||
READ8_MEMBER(multiwin_state::multiwin_opcode_r)
|
||||
{
|
||||
{
|
||||
// same general encryption scheme than the one used by the EVONA Royald Card set;
|
||||
// 4 address bits determine which bitswap+xor is applied to the opcodes; in this case,
|
||||
// 4 address bits determine which bitswap+xor is applied to the opcodes; in this case,
|
||||
// one of the address bits don't have effect on the bitswap, just on the xor;
|
||||
// again, we have just five different bitswaps, and the hardware is probably using
|
||||
// passive logic on the address bits to do the selection
|
||||
@ -3856,15 +3856,15 @@ READ8_MEMBER(multiwin_state::multiwin_opcode_r)
|
||||
0,5,7,4,2,
|
||||
4,0,2,7,5,
|
||||
};
|
||||
|
||||
|
||||
// xor masks
|
||||
constexpr std::array<uint8_t,16> xm {
|
||||
0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x30, 0x00, 0x00, 0xb5, 0x10, 0xb5, 0x20, 0xb5, 0x30, 0xb5
|
||||
};
|
||||
|
||||
|
||||
uint8_t data {_maincpu->space(AS_PROGRAM).read_byte(offset)};
|
||||
unsigned idx {bitswap<4>(offset, 6,9,5,3)};
|
||||
|
||||
|
||||
return bitswap<8>(data, bs[idx&7][4],6,bs[idx&7][3],bs[idx&7][2],3,bs[idx&7][1],1,bs[idx&7][0]) ^ xm[idx];
|
||||
}
|
||||
|
||||
@ -3898,26 +3898,26 @@ public:
|
||||
: funworld_state(mconfig, type, tag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void powercrd(machine_config& config);
|
||||
|
||||
|
||||
private:
|
||||
cpu_device* _maincpu {};
|
||||
DECLARE_READ8_MEMBER(powercrd_opcode_r);
|
||||
|
||||
|
||||
void powercrd_opcodes_map(address_map& map);
|
||||
};
|
||||
|
||||
READ8_MEMBER(powercrd_state::powercrd_opcode_r)
|
||||
{
|
||||
{
|
||||
// encryption controlled by the lower two bits of the address; no clear structure is
|
||||
// seen in the tables, so it looks like a lookup into randomly or pseudorandomly
|
||||
// generated permutation tables; all opcodes in the [8da0, 9e0b) & [c000, ef80) are
|
||||
// believed to be covered by these tables; errors could be lurking in the least used opcodes;
|
||||
// this same encryption scheme (with different tables) is seen in megacard & jokercrd
|
||||
|
||||
|
||||
constexpr uint8_t UNKN {0xfc};
|
||||
|
||||
|
||||
constexpr std::array<std::array<uint8_t,256>,4> decryption_tables
|
||||
{
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
@ -3992,7 +3992,7 @@ READ8_MEMBER(powercrd_state::powercrd_opcode_r)
|
||||
UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0xa9, UNKN, UNKN, UNKN, UNKN, 0xc5, UNKN, // e_
|
||||
UNKN, 0x86, 0x29, 0x4a, UNKN, UNKN, 0x18, 0x98, UNKN, UNKN, UNKN, 0x9c, UNKN, 0x7a, UNKN, 0x48, // f_
|
||||
};
|
||||
|
||||
|
||||
uint8_t data {_maincpu->space(AS_PROGRAM).read_byte(offset)};
|
||||
return decryption_tables[offset&3][data];
|
||||
}
|
||||
@ -4005,7 +4005,7 @@ void powercrd_state::powercrd_opcodes_map(address_map &map)
|
||||
void powercrd_state::powercrd(machine_config &config)
|
||||
{
|
||||
fw2ndpal(config);
|
||||
|
||||
|
||||
_maincpu = reinterpret_cast<cpu_device*>(config.device("maincpu"));
|
||||
_maincpu->set_addrmap(AS_OPCODES, &powercrd_state::powercrd_opcodes_map);
|
||||
}
|
||||
@ -4017,23 +4017,23 @@ public:
|
||||
: funworld_state(mconfig, type, tag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void megacard(machine_config& config);
|
||||
|
||||
|
||||
private:
|
||||
cpu_device* _maincpu {};
|
||||
DECLARE_READ8_MEMBER(megacard_opcode_r);
|
||||
|
||||
|
||||
void megacard_opcodes_map(address_map& map);
|
||||
};
|
||||
|
||||
READ8_MEMBER(megacard_state::megacard_opcode_r)
|
||||
{
|
||||
// all opcodes in the [c000, fc80) range are believed to be covered by these tables;
|
||||
{
|
||||
// all opcodes in the [c000, fc80) range are believed to be covered by these tables;
|
||||
// errors could be lurking in the least used opcodes
|
||||
|
||||
|
||||
constexpr uint8_t UNKN {0xfc};
|
||||
|
||||
|
||||
constexpr std::array<std::array<uint8_t,256>,4> decryption_tables
|
||||
{
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
@ -4053,7 +4053,7 @@ READ8_MEMBER(megacard_state::megacard_opcode_r)
|
||||
UNKN, UNKN, UNKN, UNKN, 0x2d, UNKN, UNKN, UNKN, 0x4a, 0x88, 0x05, UNKN, UNKN, 0x10, 0xce, UNKN, // d_
|
||||
UNKN, UNKN, 0xc4, UNKN, 0x18, UNKN, UNKN, UNKN, 0x99, 0xf9, UNKN, UNKN, UNKN, UNKN, UNKN, 0xdd, // e_
|
||||
0x11, UNKN, 0x26, UNKN, 0x65, 0x98, UNKN, 0xad, 0x2a, UNKN, UNKN, 0x8d, UNKN, UNKN, UNKN, UNKN, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
UNKN, UNKN, UNKN, 0x18, UNKN, UNKN, UNKN, 0x8e, UNKN, UNKN, UNKN, UNKN, UNKN, 0xaa, 0xcd, 0x0a, // 0_
|
||||
0xe6, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0xad, UNKN, UNKN, UNKN, UNKN, // 1_
|
||||
@ -4071,7 +4071,7 @@ READ8_MEMBER(megacard_state::megacard_opcode_r)
|
||||
UNKN, UNKN, 0x20, 0xb9, UNKN, UNKN, UNKN, UNKN, 0x00, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, // d_
|
||||
UNKN, 0x80, 0x65, UNKN, UNKN, 0xe8, 0xc9, UNKN, UNKN, UNKN, UNKN, UNKN, 0xee, 0xf0, UNKN, UNKN, // e_
|
||||
UNKN, 0xa0, 0xc8, UNKN, UNKN, UNKN, 0xc4, UNKN, 0x4e, 0xe0, 0xa8, UNKN, 0x45, UNKN, UNKN, 0xa6, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
UNKN, 0x86, UNKN, UNKN, 0xe6, 0xc9, UNKN, 0x1a, UNKN, 0xdd, 0x88, UNKN, UNKN, UNKN, UNKN, 0x8e, // 0_
|
||||
UNKN, 0xe0, UNKN, UNKN, 0x4c, 0xd0, UNKN, 0x64, UNKN, 0xa4, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, // 1_
|
||||
@ -4089,7 +4089,7 @@ READ8_MEMBER(megacard_state::megacard_opcode_r)
|
||||
0x69, 0x60, 0x9a, 0xb2, UNKN, UNKN, 0x2a, UNKN, 0x65, UNKN, UNKN, UNKN, 0x25, UNKN, 0x79, 0x6a, // d_
|
||||
UNKN, 0x20, 0xb9, UNKN, 0x3a, 0xd5, UNKN, 0x4a, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x99, 0xa8, // e_
|
||||
UNKN, UNKN, UNKN, UNKN, 0xda, UNKN, UNKN, UNKN, UNKN, 0xcd, UNKN, 0x7a, 0xad, UNKN, UNKN, UNKN, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
UNKN, UNKN, UNKN, 0x60, UNKN, UNKN, 0xb1, UNKN, UNKN, UNKN, 0x29, UNKN, 0x8e, 0x74, 0x9a, 0xea, // 0_
|
||||
UNKN, 0x6d, UNKN, 0x92, 0xb5, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x7d, 0xb9, 0xa2, UNKN, 0x6a, // 1_
|
||||
@ -4108,7 +4108,7 @@ READ8_MEMBER(megacard_state::megacard_opcode_r)
|
||||
UNKN, 0xc9, UNKN, UNKN, UNKN, UNKN, 0x64, 0x48, UNKN, UNKN, 0xa8, UNKN, 0xe8, UNKN, UNKN, UNKN, // e_
|
||||
UNKN, UNKN, 0xa9, UNKN, 0xf0, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x18, UNKN, UNKN, UNKN, UNKN, // f_
|
||||
};
|
||||
|
||||
|
||||
uint8_t data {_maincpu->space(AS_PROGRAM).read_byte(offset)};
|
||||
return decryption_tables[offset&3][data];
|
||||
}
|
||||
@ -4121,7 +4121,7 @@ void megacard_state::megacard_opcodes_map(address_map &map)
|
||||
void megacard_state::megacard(machine_config &config)
|
||||
{
|
||||
fw2ndpal(config);
|
||||
|
||||
|
||||
_maincpu = reinterpret_cast<cpu_device*>(config.device("maincpu"));
|
||||
_maincpu->set_addrmap(AS_OPCODES, &megacard_state::megacard_opcodes_map);
|
||||
}
|
||||
@ -4133,57 +4133,57 @@ public:
|
||||
: funworld_state(mconfig, type, tag)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void jokercrd(machine_config& config);
|
||||
|
||||
|
||||
private:
|
||||
cpu_device* _maincpu {};
|
||||
DECLARE_READ8_MEMBER(jokercrd_opcode_r);
|
||||
|
||||
|
||||
void jokercrd_opcodes_map(address_map& map);
|
||||
};
|
||||
|
||||
READ8_MEMBER(jokercrd_state::jokercrd_opcode_r)
|
||||
{
|
||||
// even when errors could be lurking in the least used opcodes,
|
||||
{
|
||||
// even when errors could be lurking in the least used opcodes,
|
||||
// all of them in the [8050,b369) & [c000, f063) ranges are believed
|
||||
// to be covered by these tables, with the exception of the one @c0f1:
|
||||
|
||||
// c0da: a6 6a ldx $6a
|
||||
// c0dc: ad 5c 00 lda $005c
|
||||
// c0df: 29 3f and #$3f
|
||||
// c0e1: 85 70 sta $70
|
||||
// c0e3: 20 fa c0 jsr $c0fa
|
||||
// c0e6: a5 70 lda $70
|
||||
// c0e8: 9d 33 02 sta $0233, x
|
||||
// c0eb: a2 00 ldx #$00
|
||||
// c0ed: e4 6a cpx $6a
|
||||
// c0ef: f0 08 beq $c0f9
|
||||
// c0f1: XX 33 02 nop #$33 #$02 [YYY $0233, x]
|
||||
// c0f4: f0 e4 beq $c0da
|
||||
// c0f6: e8 inx
|
||||
// c0f7: 80 f4 bra $c0ed
|
||||
// c0f9: 60 rts
|
||||
//
|
||||
// c0fa: ad 4b 07 lda $074b
|
||||
// c0fd: 0d 4c 07 ora $074c
|
||||
// c100: d0 01 bne $c103
|
||||
// c102: 60 rts
|
||||
// c103: a5 70 lda $70
|
||||
// c105: 29 30 and #$30
|
||||
// c107: 09 01 ora #$01
|
||||
// c109: 85 70 sta $70
|
||||
// c10b: 60 rts
|
||||
|
||||
|
||||
// c0da: a6 6a ldx $6a
|
||||
// c0dc: ad 5c 00 lda $005c
|
||||
// c0df: 29 3f and #$3f
|
||||
// c0e1: 85 70 sta $70
|
||||
// c0e3: 20 fa c0 jsr $c0fa
|
||||
// c0e6: a5 70 lda $70
|
||||
// c0e8: 9d 33 02 sta $0233, x
|
||||
// c0eb: a2 00 ldx #$00
|
||||
// c0ed: e4 6a cpx $6a
|
||||
// c0ef: f0 08 beq $c0f9
|
||||
// c0f1: XX 33 02 nop #$33 #$02 [YYY $0233, x]
|
||||
// c0f4: f0 e4 beq $c0da
|
||||
// c0f6: e8 inx
|
||||
// c0f7: 80 f4 bra $c0ed
|
||||
// c0f9: 60 rts
|
||||
//
|
||||
// c0fa: ad 4b 07 lda $074b
|
||||
// c0fd: 0d 4c 07 ora $074c
|
||||
// c100: d0 01 bne $c103
|
||||
// c102: 60 rts
|
||||
// c103: a5 70 lda $70
|
||||
// c105: 29 30 and #$30
|
||||
// c107: 09 01 ora #$01
|
||||
// c109: 85 70 sta $70
|
||||
// c10b: 60 rts
|
||||
|
||||
// it should be noted, however, that the subroutine @c0da seems to be called just from here:
|
||||
// c044: 64 6a stz $6a
|
||||
// c046: 20 da c0 jsr $c0da
|
||||
// c044: 64 6a stz $6a
|
||||
// c046: 20 da c0 jsr $c0da
|
||||
// and, if no interrupt is messing with the accesed data, the STZ @c044 should make the BEQ @c0ef
|
||||
// become an inconditional jump, converting the opcode @c0f1 in dead code
|
||||
|
||||
|
||||
|
||||
|
||||
constexpr uint8_t UNKN {0xfc};
|
||||
|
||||
|
||||
constexpr std::array<std::array<uint8_t,256>,4> decryption_tables
|
||||
{
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
@ -4203,7 +4203,7 @@ READ8_MEMBER(jokercrd_state::jokercrd_opcode_r)
|
||||
UNKN, 0xb9, 0x86, UNKN, 0xca, UNKN, UNKN, UNKN, UNKN, UNKN, 0x7a, UNKN, 0xf0, 0x09, 0x4c, UNKN, // d_
|
||||
0x60, 0x78, UNKN, UNKN, UNKN, 0x48, 0x5a, UNKN, UNKN, UNKN, 0x79, UNKN, UNKN, UNKN, UNKN, 0xba, // e_
|
||||
UNKN, UNKN, 0x6d, 0x92, UNKN, 0x26, UNKN, UNKN, 0xb5, UNKN, 0x69, UNKN, UNKN, 0xa4, UNKN, 0x1d, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
UNKN, UNKN, UNKN, UNKN, 0x48, UNKN, UNKN, 0x0c, UNKN, 0x60, 0x6d, 0x20, 0xda, UNKN, 0xf0, UNKN, // 0_
|
||||
UNKN, 0xcd, 0x95, UNKN, UNKN, 0xae, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x8e, UNKN, 0x29, UNKN, // 1_
|
||||
@ -4221,7 +4221,7 @@ READ8_MEMBER(jokercrd_state::jokercrd_opcode_r)
|
||||
UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x19, 0x65, UNKN, UNKN, UNKN, 0xce, 0x7a, UNKN, 0x3a, // d_
|
||||
UNKN, 0x7d, UNKN, 0x0a, 0x49, UNKN, UNKN, UNKN, 0xe6, 0xd8, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, // e_
|
||||
UNKN, UNKN, UNKN, UNKN, 0x09, 0xa9, 0x25, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x5a, UNKN, 0x68, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
UNKN, 0x20, UNKN, UNKN, UNKN, 0x8e, UNKN, UNKN, UNKN, 0xb0, 0x85, 0x3d, UNKN, 0x86, UNKN, UNKN, // 0_
|
||||
0x18, UNKN, UNKN, UNKN, 0x8a, 0xad, 0x79, 0x98, UNKN, UNKN, 0xc0, UNKN, 0x30, UNKN, 0x10, UNKN, // 1_
|
||||
@ -4239,7 +4239,7 @@ READ8_MEMBER(jokercrd_state::jokercrd_opcode_r)
|
||||
UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0x99, UNKN, 0x88, UNKN, 0xcd, UNKN, 0xe8, // d_
|
||||
0xca, 0xb5, 0x49, 0x68, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, UNKN, 0xe6, 0xe0, 0x4a, UNKN, // e_
|
||||
UNKN, UNKN, UNKN, 0xc8, UNKN, 0xb9, 0x91, UNKN, UNKN, UNKN, UNKN, 0x65, 0x95, UNKN, UNKN, UNKN, // f_
|
||||
|
||||
|
||||
//_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
|
||||
0x65, UNKN, UNKN, UNKN, 0x30, UNKN, UNKN, UNKN, 0x8e, UNKN, UNKN, 0xda, 0x2d, 0xc4, UNKN, 0x68, // 0_
|
||||
UNKN, 0xa2, UNKN, UNKN, 0x2a, 0xa6, UNKN, UNKN, UNKN, 0x86, UNKN, UNKN, 0x60, UNKN, 0xe6, 0xa4, // 1_
|
||||
@ -4258,7 +4258,7 @@ READ8_MEMBER(jokercrd_state::jokercrd_opcode_r)
|
||||
UNKN, 0xec, 0x20, UNKN, 0xad, 0xd0, UNKN, 0x3d, UNKN, 0xb1, 0x6c, 0x66, UNKN, 0x4e, UNKN, 0xd5, // e_
|
||||
0xe9, UNKN, UNKN, 0xa9, UNKN, UNKN, 0xe8, UNKN, UNKN, 0xc9, 0xa8, UNKN, UNKN, 0x48, UNKN, UNKN, // f_
|
||||
};
|
||||
|
||||
|
||||
uint8_t data {_maincpu->space(AS_PROGRAM).read_byte(offset)};
|
||||
return decryption_tables[offset&3][data];
|
||||
}
|
||||
@ -4271,7 +4271,7 @@ void jokercrd_state::jokercrd_opcodes_map(address_map &map)
|
||||
void jokercrd_state::jokercrd(machine_config &config)
|
||||
{
|
||||
fw2ndpal(config);
|
||||
|
||||
|
||||
_maincpu = reinterpret_cast<cpu_device*>(config.device("maincpu"));
|
||||
_maincpu->set_addrmap(AS_OPCODES, &jokercrd_state::jokercrd_opcodes_map);
|
||||
}
|
||||
@ -5965,7 +5965,7 @@ ROM_START( royalcrdc )
|
||||
ROM_LOAD( "3.bin", 0x0000, 0x8000, CRC(c46d804f) SHA1(b089821c7dae6714b49401d787f8bed859815763) )
|
||||
ROM_LOAD( "2.bin", 0x8000, 0x8000, CRC(41f7a0b3) SHA1(9aff2b8832d2a4f868daa9849a0bfe5e44f88fc0) )
|
||||
|
||||
ROM_REGION( 0x10000, "gfxbad", 0 ) // faulty gfx set with bad addressing and mix of royal card & jolly card tiles.
|
||||
ROM_REGION( 0x10000, "gfxbad", 0 ) // faulty gfx set with bad addressing and mix of royal card & jolly card tiles.
|
||||
ROM_LOAD( "roj.ic26", 0x0000, 0x8000, BAD_DUMP CRC(3883cdcb) SHA1(b71a786822fe8fcb2c6fcdc463facb2738ec8c01) )
|
||||
ROM_IGNORE( 0x8000)
|
||||
ROM_LOAD( "roj.ic25", 0x8000, 0x8000, CRC(c5b787e8) SHA1(be88aa901c1f96d171af45c3602e0ce72b8fff34) )
|
||||
@ -7156,7 +7156,7 @@ ROM_START( saloon )
|
||||
|
||||
ROM_REGION( 0x0200, "proms", 0 )
|
||||
ROM_LOAD( "82s147_saloon.bin", 0x0000, 0x0200, CRC(f424ccc1) SHA1(6df1215f58cca786e9f0ea4bf35407cf7fe21d83) )
|
||||
|
||||
|
||||
ROM_REGION( 0x0100, "i2cmem", 0 )
|
||||
ROM_LOAD( "saloon_i2c.bin", 0x0000, 0x0100, CRC(57e9ce5a) SHA1(3a8420a8ed50faf31a30c01f9438f1df95e5789a) )
|
||||
ROM_END
|
||||
@ -7697,7 +7697,7 @@ ROM_END
|
||||
This game is running in a derivative hardware with epoxy CPU brick.
|
||||
CPU is a 65C02, with two 5565 RAMs and one 27128 ROM.
|
||||
Also there are present some PLD and logic. (see above).
|
||||
|
||||
|
||||
The main program is inside the battery backed RAM, and need to be dumped.
|
||||
These RAMs are connected to the mainboard battery, so once the Brick is unplugged,
|
||||
the battery stops to feed the RAM and the program just vanish.
|
||||
@ -7709,11 +7709,11 @@ ROM_END
|
||||
8000-bfff location, where is the battery backed RAM inside the brick.
|
||||
|
||||
We need to find a new working board and reverse the central connector, to construct
|
||||
some interface that allows us to dump the content of the internal battery backed RAM.
|
||||
some interface that allows us to dump the content of the internal battery backed RAM.
|
||||
|
||||
For debug purposes, we plugged an external game code from another similar game, that
|
||||
For debug purposes, we plugged an external game code from another similar game, that
|
||||
matches all calls from the original ROM code. We suspect is the same code with different
|
||||
language (English instead German). With this external code the game is completely playable.
|
||||
language (English instead German). With this external code the game is completely playable.
|
||||
|
||||
----
|
||||
|
||||
@ -7740,8 +7740,8 @@ ROM_START( jokcrdep )
|
||||
ROM_LOAD( "200_zg_1.bin", 0x8000, 0x8000, CRC(367db105) SHA1(400b82dc9e0be4c17a02add009aab3c43dd901f8) )
|
||||
|
||||
ROM_REGION( 0x0800, "nvram", 0 )
|
||||
ROM_LOAD( "joker_nvram.bin", 0x0000, 0x0800, CRC(92019972) SHA1(E6D1E231CD2CE27E718ED9482DBE9DDC8612EB67) ) // Default NVRAM.
|
||||
|
||||
ROM_LOAD( "joker_nvram.bin", 0x0000, 0x0800, CRC(92019972) SHA1(E6D1E231CD2CE27E718ED9482DBE9DDC8612EB67) ) // Default NVRAM.
|
||||
|
||||
ROM_REGION( 0x4000, "nvram1", 0 )
|
||||
ROM_LOAD( "e-0.bin", 0x0000, 0x4000, BAD_DUMP CRC(8FD42F3B) SHA1(208209761DE046189070B88AD4340C8D7FF55F1F) ) // Internal suicide program. Taken from Novo Play.
|
||||
|
||||
@ -7878,8 +7878,8 @@ void funworld_state::init_saloon()
|
||||
Low 11 bits of address are scrambled.
|
||||
|
||||
Color:
|
||||
Data has bits 2-3-5-6-7 scrambled.
|
||||
Address has the 8 lower bits scrambled.
|
||||
Data has bits 2-3-5-6-7 scrambled.
|
||||
Address has the 8 lower bits scrambled.
|
||||
|
||||
*************************************************/
|
||||
{
|
||||
@ -8399,9 +8399,9 @@ void intergames_state::driver_init()
|
||||
rom[0xaeaf] = 0xea;
|
||||
|
||||
// verify checksum against values stored at 07F2-07F3.
|
||||
// rom[0xaf69] = 0xea;
|
||||
// rom[0xaf6a] = 0xea;
|
||||
// rom[0xaf6b] = 0xea;
|
||||
// rom[0xaf69] = 0xea;
|
||||
// rom[0xaf6a] = 0xea;
|
||||
// rom[0xaf6b] = 0xea;
|
||||
|
||||
}
|
||||
|
||||
|
@ -12225,8 +12225,8 @@ MOON WAR II RA20 5D(--36) 1981 STERN
|
||||
NOTE: A PCB with ROMs at 2F & 2H specifically labeled as "RXA22" was dumped and verified to match the moonwara set below,
|
||||
it is unknown if the data is different then the ROMs labeled as "RA22" as shown above. However, according to these
|
||||
notes in the input code:
|
||||
Player 1 Dial: P1 dial works normally, P2 dial is reversed, both share same port
|
||||
Player 2 Dial: doesn't actually work due to bug in game code
|
||||
Player 1 Dial: P1 dial works normally, P2 dial is reversed, both share same port
|
||||
Player 2 Dial: doesn't actually work due to bug in game code
|
||||
It would seem to indicate the code is different becuase for moonwar the issue was corrected.
|
||||
*/
|
||||
ROM_START( moonwar )
|
||||
|
@ -198,8 +198,8 @@ ROM_START(pc)
|
||||
ROM_SYSTEM_BIOS(40, "fday17", "Faraday 5 slot PC") // use pcherc
|
||||
ROMX_LOAD( "fdaypc17.rom", 0x00000, 0x2000, CRC(26bb29ac) SHA1(5a58680b9193f4323db3e7894f853dc82d17f4ee),ROM_BIOS(40))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ROM_END
|
||||
|
||||
#define rom_pcmda rom_pc
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
|
||||
void hunter16(machine_config &config);
|
||||
void hunter1680(machine_config &config);
|
||||
|
||||
|
||||
protected:
|
||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
@ -38,12 +38,12 @@ protected:
|
||||
void io_16_map(address_map &map);
|
||||
void io_1680_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
optional_device<palette_device> m_palette;
|
||||
optional_device<hd61830_device> m_lcdc;
|
||||
optional_device<mc6845_device> m_cga;
|
||||
|
||||
|
||||
private:
|
||||
void palette_init_hunter16(palette_device &palette);
|
||||
};
|
||||
@ -59,7 +59,7 @@ void hunter16_state::io_16_map(address_map &map)
|
||||
{
|
||||
map(0x430, 0x430).w(m_lcdc, FUNC(hd61830_device::data_w));
|
||||
map(0x431, 0x431).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w));
|
||||
// map(0x43e, 0x43e).r(m_lcdc, FUNC(hd61830_device::data_r));
|
||||
// map(0x43e, 0x43e).r(m_lcdc, FUNC(hd61830_device::data_r));
|
||||
}
|
||||
|
||||
void hunter16_state::io_1680_map(address_map &map)
|
||||
@ -103,7 +103,7 @@ void hunter16_state::hunter1680(machine_config &config)
|
||||
MC6845(config, m_cga, 16_MHz_XTAL / 2); // Chips 82C426 CGA, exact clock unknown
|
||||
m_cga->set_screen("screen");
|
||||
m_cga->set_show_border_area(false);
|
||||
|
||||
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_LCD);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->set_size(640, 400);
|
||||
|
@ -962,7 +962,7 @@ void pengo_state::decode_schick_extra(int size, uint8_t* rom)
|
||||
case 0x00: srcdec = (srcdec & ~0x51) | 0x10; break; // looks good for ld ops
|
||||
case 0x01: srcdec = (srcdec & ~0x51) | 0x50; break; // ok?
|
||||
case 0x10: srcdec = (srcdec & ~0x51) | 0x11; break; // ok?
|
||||
case 0x11: srcdec = (srcdec & ~0x51) | 0x51; break; // push/pull opcodes, see f1a1, f1a2, f1fd etc (d3 case too)
|
||||
case 0x11: srcdec = (srcdec & ~0x51) | 0x51; break; // push/pull opcodes, see f1a1, f1a2, f1fd etc (d3 case too)
|
||||
case 0x40: srcdec = (srcdec & ~0x51) | 0x00; break; // ok for some NOPs? and jr ops
|
||||
case 0x41: srcdec = (srcdec & ~0x51) | 0x40; break; // maybe, ret z at f3be
|
||||
case 0x50: srcdec = (srcdec & ~0x51) | 0x01; break; // not 11, not 50, maybe 01? see fcc1
|
||||
@ -987,7 +987,7 @@ void pengo_state::decode_schick_extra(int size, uint8_t* rom)
|
||||
switch (srcdec & 0x51)
|
||||
{
|
||||
case 0x00: srcdec = (srcdec & ~0x51) | 0x40; break;
|
||||
case 0x01: srcdec = (srcdec & ~0x51) | 0x01; break;
|
||||
case 0x01: srcdec = (srcdec & ~0x51) | 0x01; break;
|
||||
case 0x10: srcdec = (srcdec & ~0x51) | 0x41; break; // JMP table EFA0
|
||||
case 0x11: srcdec = (srcdec & ~0x51) | 0x11; break;
|
||||
case 0x40: srcdec = (srcdec & ~0x51) | 0x00; break; // NOPs at e538
|
||||
|
@ -116,11 +116,11 @@ TODO: Volleyball...
|
||||
*/
|
||||
|
||||
//#define MASTER_CLOCK_BREAKOUT (14318000)
|
||||
static const int NS_PER_CLOCK = static_cast<int>((double) NETLIST_INTERNAL_RES / (double) 14318000 + 0.5);
|
||||
static const int NS_PER_CLOCK = static_cast<int>((double) NETLIST_INTERNAL_RES / (double) 14318000 + 0.5);
|
||||
static const int MASTER_CLOCK_BREAKOUT = static_cast<int>((double) NETLIST_INTERNAL_RES / (double) NS_PER_CLOCK + 0.5);
|
||||
|
||||
static const int V_TOTAL_BREAKOUT = (0xFC); // 252
|
||||
static const int H_TOTAL_BREAKOUT = (448*2); // 448
|
||||
static const int V_TOTAL_BREAKOUT = (0xFC); // 252
|
||||
static const int H_TOTAL_BREAKOUT = (448*2); // 448
|
||||
|
||||
enum input_changed_enum
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ Measured clocks:
|
||||
MC68000P12F - 14.99MHz
|
||||
Z0840006PSC - 3.996MHz
|
||||
OKI M6295 - 0.999MHz
|
||||
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
/*
|
||||
SunPlus unSP based hardware, SPG-??? (6xx?) (die is GCM394)
|
||||
SunPlus unSP based hardware, SPG-??? (6xx?) (die is GCM394)
|
||||
|
||||
Compared to vii.cpp this is clearly newer, has extra opcodes, different internal map etc. also scaling and higher resolutions based on Spongebob
|
||||
Compared to vii.cpp this is clearly newer, has extra opcodes, different internal map etc. also scaling and higher resolutions based on Spongebob
|
||||
|
||||
Smart Fit Park
|
||||
SpongeBob SquarePants Bikini Bottom 500
|
||||
Spiderman - The Masked Menace 'Spider Sense' (pad type with Spiderman model)
|
||||
(Wireless Hunting? - maybe, register map looks the same even if it sets stack to 2fff not 6fff)
|
||||
Smart Fit Park
|
||||
SpongeBob SquarePants Bikini Bottom 500
|
||||
Spiderman - The Masked Menace 'Spider Sense' (pad type with Spiderman model)
|
||||
(Wireless Hunting? - maybe, register map looks the same even if it sets stack to 2fff not 6fff)
|
||||
|
||||
as these use newer opcodes in the FExx range they probably need a derived unSP type too
|
||||
as these use newer opcodes in the FExx range they probably need a derived unSP type too
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -150,9 +150,9 @@ Length: 27.78 mm
|
||||
Voltage: 3V
|
||||
Pinout:
|
||||
|
||||
A25 A24
|
||||
| |
|
||||
+--------------------------+
|
||||
A25 A24
|
||||
| |
|
||||
+--------------------------+
|
||||
A21 --|== # # `.__.' ==|-- A20
|
||||
A18 --|== ==|-- A19
|
||||
A17 --|== ==|-- A8
|
||||
@ -175,7 +175,7 @@ GND --|== | | ==|-- A22
|
||||
Q10 --|== ==|-- Q12
|
||||
Q3 --|== ==|-- Q4
|
||||
Q11 --|== ==|-- VCC
|
||||
+--------------------------+
|
||||
+--------------------------+
|
||||
|
||||
|
||||
The only interesting string in this ROM is SPF2ALP,
|
||||
|
@ -1638,7 +1638,7 @@ static INPUT_PORTS_START( jiaojiao )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x01)
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x00)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x00)
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( 2C_3C ) ) PORT_CONDITION("TJUMP", 0x01, EQUALS, 0x00)
|
||||
|
@ -76,7 +76,7 @@
|
||||
|
||||
Chase Bombers proto sports lots of gfx bugs;
|
||||
|
||||
Chase Bombers PCB has TC0360PRI but not hooked up
|
||||
Chase Bombers PCB has TC0360PRI but not hooked up
|
||||
|
||||
Gun calibration
|
||||
---------------
|
||||
|
@ -10,20 +10,20 @@
|
||||
"SunPlus QL8041" ( also known as Sunplus SPG240 & PAC300 )
|
||||
|
||||
All GameKeyReady units
|
||||
Disney Princess (GKR)
|
||||
Wheel of Fortune (GKR)
|
||||
JAKKS WWE (GKR)
|
||||
Fantastic 4 (GKR)
|
||||
Justice League (GKR)
|
||||
Dora the Explorer Nursery Rhyme (GKR)
|
||||
Dora the Explorer Play Park (GKR)
|
||||
Spiderman 5-in-1 (GKR)
|
||||
etc.
|
||||
Disney Princess (GKR)
|
||||
Wheel of Fortune (GKR)
|
||||
JAKKS WWE (GKR)
|
||||
Fantastic 4 (GKR)
|
||||
Justice League (GKR)
|
||||
Dora the Explorer Nursery Rhyme (GKR)
|
||||
Dora the Explorer Play Park (GKR)
|
||||
Spiderman 5-in-1 (GKR)
|
||||
etc.
|
||||
|
||||
(other non GKR JAKKS games)
|
||||
X-Men (Wolverine pad)
|
||||
Avatar: The Last Airbender
|
||||
Superman in Super Villain Showdown
|
||||
Superman in Super Villain Showdown
|
||||
|
||||
(other games)
|
||||
Mattel Classic Sports
|
||||
@ -37,32 +37,32 @@
|
||||
"SunPlus QU7074-P69A"
|
||||
|
||||
The Batman
|
||||
Star Wars (non-gamekey, which model? falcon? - check)
|
||||
Dream Life
|
||||
Star Wars (non-gamekey, which model? falcon? - check)
|
||||
Dream Life
|
||||
|
||||
"SunPlus QL8167b" (is the scrambling built into the CPU, or external?)
|
||||
"SunPlus QL8167b" (is the scrambling built into the CPU, or external?)
|
||||
|
||||
Lexibook Zeus IG900 20-in-1
|
||||
Lexibook Zeus IG900 20-in-1
|
||||
|
||||
"SunPlus QL8139C"
|
||||
"SunPlus QL8139C"
|
||||
|
||||
Radica Cricket
|
||||
V Smile Baby (Sweden) - see vsmileb.cpp
|
||||
Radica Cricket
|
||||
V Smile Baby (Sweden) - see vsmileb.cpp
|
||||
|
||||
---
|
||||
|
||||
Very likely the same
|
||||
Very likely the same
|
||||
|
||||
"Sunplus QL8167" (these might have ROM scrambling if that is a 8167 feature)
|
||||
"Sunplus QL8167" (these might have ROM scrambling if that is a 8167 feature)
|
||||
|
||||
Disney Princess Magical Adventure
|
||||
Go Diego Go
|
||||
Shrek - Over the Hedge (this unit shows a 'GameKey Unlock More Games' on startup, but has no port, not even on the internal PCB)
|
||||
Marvel Heroes (Spider-man)
|
||||
Spiderman 3 (Movie - black)
|
||||
Disney Princess Magical Adventure
|
||||
Go Diego Go
|
||||
Shrek - Over the Hedge (this unit shows a 'GameKey Unlock More Games' on startup, but has no port, not even on the internal PCB)
|
||||
Marvel Heroes (Spider-man)
|
||||
Spiderman 3 (Movie - black)
|
||||
|
||||
|
||||
---
|
||||
---
|
||||
|
||||
It is unknown if the following are close to this architecture or not (no dumps yet)
|
||||
|
||||
@ -79,10 +79,10 @@
|
||||
These are definitely different but still unSP based
|
||||
|
||||
"SunPlus PA7801" ( known as Sunplus SPG110? )
|
||||
- see spg110.cpp instead
|
||||
- see spg110.cpp instead
|
||||
|
||||
"GCM394" (this is clearly newer, has extra opcodes, different internal map etc. also scaling and higher resolutions based on Spongebob)
|
||||
- see sunplus_gcm394.cpp instead
|
||||
- see sunplus_gcm394.cpp instead
|
||||
|
||||
Status:
|
||||
|
||||
|
@ -651,11 +651,11 @@ ROM_START( eurogael )
|
||||
ROM_LOAD( "r2_fu4a01.ic17", 0x060000, 0x10000, CRC(1bcdd99d) SHA1(e37a8308eff79b04ce3da75fec2fffe4021c70d3) ) // fg layer
|
||||
ROM_LOAD( "r2_fu4a02.ic16", 0x040000, 0x10000, CRC(e625de0c) SHA1(ca5a00ea27a5107d2957a1637b260d5aa1ff5563) )
|
||||
ROM_LOAD( "r2_fu4a03.ic15", 0x020000, 0x10000, CRC(995df90d) SHA1(121874c807001bf65a9cec90dd30212f1889a398) )
|
||||
ROM_LOAD( "r2_fu4a04.ic14", 0x000000, 0x10000, CRC(44031f34) SHA1(0b417c6cc1ed029394bcdce80e81262d776105b7) )
|
||||
ROM_LOAD( "r2_fu4a04.ic14", 0x000000, 0x10000, CRC(44031f34) SHA1(0b417c6cc1ed029394bcdce80e81262d776105b7) )
|
||||
ROM_LOAD( "r3_fu4b01.ic17", 0x070000, 0x10000, CRC(adc7feda) SHA1(ff82e973599f13c76ecaf3c027a2967468cd9e72) ) // bg layer
|
||||
ROM_LOAD( "r3_fu4b02.ic16", 0x050000, 0x10000, CRC(1e5c0fda) SHA1(74163098810ff079467bad77796898426acbfac5) )
|
||||
ROM_LOAD( "r3_fu4b03.ic15", 0x030000, 0x10000, CRC(cc9dab0b) SHA1(7e5735e57b45de1b344455fa5a047ae17933de27) )
|
||||
ROM_LOAD( "r3_fu4b04.ic14", 0x010000, 0x10000, CRC(d54704d2) SHA1(7d4ec0120c3516a88abbe687e8916b44bffb7bcd) )
|
||||
ROM_LOAD( "r3_fu4b04.ic14", 0x010000, 0x10000, CRC(d54704d2) SHA1(7d4ec0120c3516a88abbe687e8916b44bffb7bcd) )
|
||||
|
||||
ROM_REGION( 0x080000, "spritegfx", ROMREGION_INVERT )
|
||||
ROM_LOAD( "r4_fu504.bin", 0x000000, 0x10000, CRC(516b6c09) SHA1(9d02514dece864b087f67886009ce54bd51b5575) )
|
||||
@ -695,10 +695,10 @@ void wc90b_state::init_wc90b()
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
int j = bitswap<19>(i, 18, 17, // above bitplane separation limit, no swap, keep value
|
||||
16, 15, 14, 13, // above tile bank limit, no swap, keep value
|
||||
10, 9, 8, 7, 6, 5, 4, 3,
|
||||
12, 11,
|
||||
2, 1, 0); // 8x8x1 tile data, no swap, keep value
|
||||
16, 15, 14, 13, // above tile bank limit, no swap, keep value
|
||||
10, 9, 8, 7, 6, 5, 4, 3,
|
||||
12, 11,
|
||||
2, 1, 0); // 8x8x1 tile data, no swap, keep value
|
||||
buffer[j] = src[i];
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ void mu50_state::p6_w(u16 data)
|
||||
{
|
||||
data ^= P6_LCD_ENABLE;
|
||||
if(!(cur_p6 & P6_LCD_ENABLE) && (data & P6_LCD_ENABLE)) {
|
||||
if(!(cur_p6 & P6_LCD_RW)) {
|
||||
if(!(cur_p6 & P6_LCD_RW)) {
|
||||
if(cur_p6 & P6_LCD_RS)
|
||||
m_lcd->data_write(cur_pa);
|
||||
else
|
||||
|
@ -140,18 +140,18 @@ class multiwin_state : public funworld_state
|
||||
public:
|
||||
|
||||
using funworld_state::funworld_state;
|
||||
|
||||
|
||||
void multiwin(machine_config& config);
|
||||
|
||||
|
||||
void driver_init() override;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void video_start() override;
|
||||
|
||||
private:
|
||||
cpu_device* _maincpu {};
|
||||
DECLARE_READ8_MEMBER(multiwin_opcode_r);
|
||||
|
||||
|
||||
void multiwin_opcodes_map(address_map& map);
|
||||
};
|
||||
|
||||
@ -159,15 +159,15 @@ class royalcrdf_state : public funworld_state
|
||||
{
|
||||
public:
|
||||
using funworld_state::funworld_state;
|
||||
|
||||
|
||||
void royalcrdf(machine_config& config);
|
||||
|
||||
void driver_init() override;
|
||||
|
||||
|
||||
private:
|
||||
cpu_device* _maincpu {};
|
||||
DECLARE_READ8_MEMBER(royalcrdf_opcode_r);
|
||||
|
||||
|
||||
void royalcrdf_map(address_map& map);
|
||||
void royalcrdf_opcodes_map(address_map& map);
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ class raiden2_state : public driver_device
|
||||
public:
|
||||
raiden2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_spriteram(*this, "spriteram")
|
||||
, m_spriteram(*this, "spriteram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_seibu_sound(*this, "seibu_sound")
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
|
@ -28,16 +28,16 @@ TODO:
|
||||
#include "romload.h"
|
||||
#include "sound/cdda.h"
|
||||
|
||||
#define LOG_DECODES (1 << 0)
|
||||
#define LOG_SAMPLES (1 << 1)
|
||||
#define LOG_COMMANDS (1 << 2)
|
||||
#define LOG_SECTORS (1 << 3)
|
||||
#define LOG_IRQS (1 << 4)
|
||||
#define LOG_READS (1 << 5)
|
||||
#define LOG_WRITES (1 << 6)
|
||||
#define LOG_UNKNOWNS (1 << 7)
|
||||
#define LOG_DECODES (1 << 0)
|
||||
#define LOG_SAMPLES (1 << 1)
|
||||
#define LOG_COMMANDS (1 << 2)
|
||||
#define LOG_SECTORS (1 << 3)
|
||||
#define LOG_IRQS (1 << 4)
|
||||
#define LOG_READS (1 << 5)
|
||||
#define LOG_WRITES (1 << 6)
|
||||
#define LOG_UNKNOWNS (1 << 7)
|
||||
|
||||
#define VERBOSE (0)
|
||||
#define VERBOSE (0)
|
||||
#include "logmacro.h"
|
||||
|
||||
// device type definition
|
||||
|
@ -24,13 +24,13 @@ TODO:
|
||||
#include "emu.h"
|
||||
#include "machine/cdislave.h"
|
||||
|
||||
#define LOG_IRQS (1 << 0)
|
||||
#define LOG_COMMANDS (1 << 1)
|
||||
#define LOG_READS (1 << 2)
|
||||
#define LOG_WRITES (1 << 3)
|
||||
#define LOG_UNKNOWNS (1 << 4)
|
||||
#define LOG_IRQS (1 << 0)
|
||||
#define LOG_COMMANDS (1 << 1)
|
||||
#define LOG_READS (1 << 2)
|
||||
#define LOG_WRITES (1 << 3)
|
||||
#define LOG_UNKNOWNS (1 << 4)
|
||||
|
||||
#define VERBOSE (0)
|
||||
#define VERBOSE (0)
|
||||
#include "logmacro.h"
|
||||
|
||||
// device type definition
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
u8 control_read() { return m_lcd->control_read(); }
|
||||
void data_write(u8 data) { m_lcd->data_write(data); }
|
||||
void control_write(u8 data) { m_lcd->control_write(data); }
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
|
@ -40,7 +40,7 @@
|
||||
#define LOG_REJECTS (1 << 8)
|
||||
#define LOG_ALL (LOG_UNKNOWN | LOG_VC2 | LOG_CMAP0 | LOG_CMAP1 | LOG_XMAP0 | LOG_XMAP1 | LOG_REX3)
|
||||
|
||||
#define VERBOSE (0)//(LOG_UNKNOWN | LOG_REX3 | LOG_COMMANDS | LOG_REJECTS)
|
||||
#define VERBOSE (0)//(LOG_UNKNOWN | LOG_REX3 | LOG_COMMANDS | LOG_REJECTS)
|
||||
#include "logmacro.h"
|
||||
|
||||
DEFINE_DEVICE_TYPE(NEWPORT_VIDEO, newport_video_device, "newport_video", "SGI Newport graphics board")
|
||||
|
@ -132,7 +132,7 @@ uint32_t pcw_state::screen_update_pcw(screen_device &screen, bitmap_ind16 &bitma
|
||||
roller_ram_ptr = m_ram->pointer() + m_roller_ram_addr + roller_ram_offs;
|
||||
|
||||
/* get line address */
|
||||
/* b16-14 control which bank the line is to be found in, b13-3 the address in the bank (in 16-byte units),
|
||||
/* b16-14 control which bank the line is to be found in, b13-3 the address in the bank (in 16-byte units),
|
||||
and b2-0 the offset. Thus a roller RAM address bbbxxxxxxxxxxxyyy indicates bank bbb, address 00xxxxxxxxxxx0yyy. */
|
||||
line_data = ((unsigned char *)roller_ram_ptr)[0] | (((unsigned char *)roller_ram_ptr)[1]<<8);
|
||||
|
||||
|
@ -274,7 +274,7 @@ void tc0480scp_device::device_start()
|
||||
set_layer_ptrs();
|
||||
|
||||
/* create the char set (gfx will then be updated dynamically from RAM) */
|
||||
set_gfx(0, std::make_unique<gfx_element>(&palette(), tc0480scp_charlayout, (u8 *)&m_ram[0x7000], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base)); //e000
|
||||
set_gfx(0, std::make_unique<gfx_element>(&palette(), tc0480scp_charlayout, (u8 *)&m_ram[0x7000], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base)); //e000
|
||||
m_gfxdecode->gfx(m_gfxnum)->set_colorbase(m_col_base);
|
||||
|
||||
save_item(NAME(m_ram));
|
||||
|
@ -185,7 +185,7 @@ uint32_t eurogael_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
|
||||
{
|
||||
// the code to write / clear tilemaps for fb and tx layers has been specifically modified to avoid writing to the last 4 bytes
|
||||
// and the game instead writes scroll values there instead, there is no code to copy from there, so it looks like these are the scroll regs
|
||||
|
||||
|
||||
// each of the 3 layer has its own PCB, all PCBs look identical, so why does handling differ slightly?
|
||||
|
||||
int fg_scrollx = ((m_fgvideoram[0xffc]) | (m_fgvideoram[0xffd]<<8)) + 33;
|
||||
|
Loading…
Reference in New Issue
Block a user