sknsspr : Add device_rom_interface instead memory pointer (#3269)

* sknsspr : Add device_rom_interface instead gfx_region
suprnova : add notes

* sknsspr : Add notes
This commit is contained in:
cam900 2018-03-01 18:05:03 +09:00 committed by Vas Crabb
parent b2c8766e54
commit 0fcad60625
6 changed files with 131 additions and 127 deletions

View File

@ -81,23 +81,19 @@ public:
galpani3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_grap2_0(*this,"grap2_0"),
m_grap2_1(*this,"grap2_1"),
m_grap2_2(*this,"grap2_2"),
m_grap2(*this,"grap2_%u", 0),
m_palette(*this, "palette"),
m_spritegen(*this, "spritegen"),
m_paletteram(*this, "palette"),
m_spriteram(*this, "spriteram"),
m_priority_buffer(*this, "priority_buffer"),
m_sprregs(*this, "sprregs"),
m_sprite_bitmap_1(1024, 1024)
m_sprite_bitmap(1024, 1024)
{ }
required_device<cpu_device> m_maincpu;
required_device<kaneko_grap2_device> m_grap2_0;
required_device<kaneko_grap2_device> m_grap2_1;
required_device<kaneko_grap2_device> m_grap2_2;
required_device_array<kaneko_grap2_device, 3> m_grap2;
required_device<palette_device> m_palette;
required_device<sknsspr_device> m_spritegen;
@ -106,11 +102,11 @@ public:
required_shared_ptr<uint16_t> m_priority_buffer;
required_shared_ptr<uint16_t> m_sprregs;
bitmap_ind16 m_sprite_bitmap_1;
bitmap_ind16 m_sprite_bitmap;
uint16_t m_priority_buffer_scrollx;
uint16_t m_priority_buffer_scrolly;
uint32_t m_spriteram32[0x4000/4];
uint32_t m_spc_regs[0x40/4];
std::unique_ptr<uint32_t[]> m_spriteram32;
std::unique_ptr<uint32_t[]> m_spc_regs;
DECLARE_WRITE16_MEMBER(galpani3_suprnova_sprite32_w);
DECLARE_WRITE16_MEMBER(galpani3_suprnova_sprite32regs_w);
@ -153,13 +149,16 @@ TIMER_DEVICE_CALLBACK_MEMBER(galpani3_state::galpani3_vblank)// 2, 3, 5 ?
void galpani3_state::video_start()
{
m_spriteram32 = std::make_unique<uint32_t[]>(0x4000/4);
m_spc_regs = std::make_unique<uint32_t[]>(0x40/4);
/* so we can use video/sknsspr.c */
m_spritegen->skns_sprite_kludge(0,0);
save_item(NAME(m_priority_buffer_scrollx));
save_item(NAME(m_priority_buffer_scrolly));
save_item(NAME(m_spriteram32));
save_item(NAME(m_spc_regs));
save_pointer(NAME(m_spriteram32.get()), 0x4000/4);
save_pointer(NAME(m_spc_regs.get()), 0x40/4);
}
@ -174,27 +173,27 @@ int galpani3_state::gp3_is_alpha_pen(int pen)
}
else if (pen<0x4100)
{
dat = m_grap2_0->m_framebuffer_palette[pen&0xff];
dat = m_grap2[0]->m_framebuffer_palette[pen&0xff];
}
else if (pen<0x4200)
{
dat = m_grap2_1->m_framebuffer_palette[pen&0xff];
dat = m_grap2[1]->m_framebuffer_palette[pen&0xff];
}
else if (pen<0x4300)
{
dat = m_grap2_2->m_framebuffer_palette[pen&0xff];
dat = m_grap2[2]->m_framebuffer_palette[pen&0xff];
}
else if (pen<0x4301)
{
dat = m_grap2_0->m_framebuffer_bgcol;
dat = m_grap2[0]->m_framebuffer_bgcol;
}
else if (pen<0x4302)
{
dat = m_grap2_1->m_framebuffer_bgcol;
dat = m_grap2[1]->m_framebuffer_bgcol;
}
else if (pen<0x4303)
{
dat = m_grap2_2->m_framebuffer_bgcol;
dat = m_grap2[2]->m_framebuffer_bgcol;
}
if (dat&0x8000) return 1;
@ -212,7 +211,7 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
bitmap.fill(0x0000, cliprect);
// popmessage("%02x %02x", m_grap2_0->m_framebuffer_bright2, m_grap2_1->m_framebuffer_bright2);
// popmessage("%02x %02x", m_grap2[0]->m_framebuffer_bright2, m_grap2[1]->m_framebuffer_bright2);
@ -220,17 +219,17 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
int drawy, drawx;
for (drawy=0;drawy<512;drawy++)
{
uint16_t* srcline1 = m_grap2_0->m_framebuffer.get() + ((drawy+m_grap2_0->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* srcline2 = m_grap2_1->m_framebuffer.get() + ((drawy+m_grap2_1->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* srcline3 = m_grap2_2->m_framebuffer.get() + ((drawy+m_grap2_2->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* srcline1 = m_grap2[0]->m_framebuffer.get() + ((drawy+m_grap2[0]->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* srcline2 = m_grap2[1]->m_framebuffer.get() + ((drawy+m_grap2[1]->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* srcline3 = m_grap2[2]->m_framebuffer.get() + ((drawy+m_grap2[2]->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
uint16_t* priline = m_priority_buffer + ((drawy+m_priority_buffer_scrolly+11)&0x1ff) * 0x200;
for (drawx=0;drawx<512;drawx++)
{
int srcoffs1 = (drawx+m_grap2_0->m_framebuffer_scrollx+67)&0x1ff;
int srcoffs2 = (drawx+m_grap2_1->m_framebuffer_scrollx+67)&0x1ff;
int srcoffs3 = (drawx+m_grap2_2->m_framebuffer_scrollx+67)&0x1ff;
int srcoffs1 = (drawx+m_grap2[0]->m_framebuffer_scrollx+67)&0x1ff;
int srcoffs2 = (drawx+m_grap2[1]->m_framebuffer_scrollx+67)&0x1ff;
int srcoffs3 = (drawx+m_grap2[2]->m_framebuffer_scrollx+67)&0x1ff;
int prioffs = (drawx+m_priority_buffer_scrollx+66)&0x1ff;
@ -247,12 +246,12 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
// this is all wrong
if (pridat==0x0f) // relates to the area you've drawn over
{
if (dat1 && m_grap2_0->m_framebuffer_enable)
if (dat1 && m_grap2[0]->m_framebuffer_enable)
{
dst[0] = paldata[dat1+0x4000];
}
if (dat2 && m_grap2_1->m_framebuffer_enable)
if (dat2 && m_grap2[1]->m_framebuffer_enable)
{
dst[0] = paldata[dat2+0x4100];
}
@ -267,7 +266,7 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
/* this isn't right, but the registers have something to do with
alpha / mixing, and bit 0x8000 of the palette is DEFINITELY alpha
enable -- see fading in intro */
if (dat1 && m_grap2_0->m_framebuffer_enable)
if (dat1 && m_grap2[0]->m_framebuffer_enable)
{
uint16_t pen = dat1+0x4000;
uint32_t pal = paldata[pen];
@ -279,9 +278,9 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
g = (pal & 0x0000ff00)>>8;
b = (pal & 0x000000ff)>>0;
r = (r * m_grap2_0->m_framebuffer_bright2) / 0xff;
g = (g * m_grap2_0->m_framebuffer_bright2) / 0xff;
b = (b * m_grap2_0->m_framebuffer_bright2) / 0xff;
r = (r * m_grap2[0]->m_framebuffer_bright2) / 0xff;
g = (g * m_grap2[0]->m_framebuffer_bright2) / 0xff;
b = (b * m_grap2[0]->m_framebuffer_bright2) / 0xff;
pal = (r & 0x000000ff)<<16;
pal |=(g & 0x000000ff)<<8;
@ -295,7 +294,7 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
}
}
if (dat2 && m_grap2_1->m_framebuffer_enable)
if (dat2 && m_grap2[1]->m_framebuffer_enable)
{
uint16_t pen = dat2+0x4100;
uint32_t pal = paldata[pen];
@ -307,9 +306,9 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
g = (pal & 0x0000ff00)>>8;
b = (pal & 0x000000ff)>>0;
r = (r * m_grap2_1->m_framebuffer_bright2) / 0xff;
g = (g * m_grap2_1->m_framebuffer_bright2) / 0xff;
b = (b * m_grap2_1->m_framebuffer_bright2) / 0xff;
r = (r * m_grap2[1]->m_framebuffer_bright2) / 0xff;
g = (g * m_grap2[1]->m_framebuffer_bright2) / 0xff;
b = (b * m_grap2[1]->m_framebuffer_bright2) / 0xff;
pal = (r & 0x000000ff)<<16;
pal |=(g & 0x000000ff)<<8;
@ -323,7 +322,7 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
}
}
if (dat3 && m_grap2_2->m_framebuffer_enable)
if (dat3 && m_grap2[2]->m_framebuffer_enable)
{
dst[0] = paldata[dat3+0x4200];
}
@ -357,14 +356,14 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
}
m_sprite_bitmap_1.fill(0x0000, cliprect);
m_sprite_bitmap.fill(0x0000, cliprect);
m_spritegen->skns_draw_sprites(m_sprite_bitmap_1, cliprect, &m_spriteram32[0], 0x4000, memregion("gfx1")->base(), memregion ("gfx1")->bytes(), m_spc_regs );
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram32.get(), 0x4000, m_spc_regs.get() );
// ignoring priority bits for now..
for (y=0;y<240;y++)
{
src1 = &m_sprite_bitmap_1.pix16(y);
src1 = &m_sprite_bitmap.pix16(y);
dst = &bitmap.pix32(y);
for (x=0;x<320;x++)
@ -555,7 +554,7 @@ ROM_START( galpani3 ) /* All game text in English */
ROM_LOAD16_BYTE( "g3p0e0.u71", 0x000000, 0x080000, CRC(fa681118) SHA1(982b568a77ed620ba5708fec4c186d329d48cb48) )
ROM_LOAD16_BYTE( "g3p1e0.u102", 0x000001, 0x080000, CRC(f1150f1b) SHA1(a6fb719937927a9a39c7a4888017c63c47c2dd6c) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites - RLE encoded */
ROM_REGION( 0x200000, "spritegen", 0 ) /* Sprites - RLE encoded */
ROM_LOAD( "gp320000.1", 0x000000, 0x200000, CRC(a0112827) SHA1(0a6c78d71b75a1d78215aab3104176aa1769b14f) )
ROM_REGION( 0x1000000, "gfx2", 0 ) /* Backgrounds - RLE encoded */
@ -579,7 +578,7 @@ ROM_START( galpani3hk )
ROM_LOAD16_BYTE( "gp3_hk.u71", 0x000000, 0x080000, CRC(b8fc7826) SHA1(9ce97f2bb6af6a3aa19d2a7d4c159e3c33f43f63) )
ROM_LOAD16_BYTE( "gp3_hk.u102", 0x000001, 0x080000, CRC(658f5fe8) SHA1(09c52d7676ccf31a7696596279cb07564ae018b3) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites - RLE encoded */
ROM_REGION( 0x200000, "spritegen", 0 ) /* Sprites - RLE encoded */
ROM_LOAD( "gp320000.1", 0x000000, 0x200000, CRC(a0112827) SHA1(0a6c78d71b75a1d78215aab3104176aa1769b14f) )
ROM_REGION( 0x1000000, "gfx2", 0 ) /* Backgrounds - RLE encoded */
@ -603,7 +602,7 @@ ROM_START( galpani3j ) /* Some game text in Japanese, but no "For use in Japan"
ROM_LOAD16_BYTE( "g3p0j1.71", 0x000000, 0x080000, CRC(52893326) SHA1(78fdbf3436a4ba754d7608fedbbede5c719a4505) )
ROM_LOAD16_BYTE( "g3p1j1.102", 0x000001, 0x080000, CRC(05f935b4) SHA1(81e78875585bcdadad1c302614b2708e60563662) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites - RLE encoded */
ROM_REGION( 0x200000, "spritegen", 0 ) /* Sprites - RLE encoded */
ROM_LOAD( "gp320000.1", 0x000000, 0x200000, CRC(a0112827) SHA1(0a6c78d71b75a1d78215aab3104176aa1769b14f) )
ROM_REGION( 0x1000000, "gfx2", 0 ) /* Backgrounds - RLE encoded */
@ -627,7 +626,7 @@ ROM_START( galpani3k ) /* Some game text in Korean, but no "For use in Korea" ty
ROM_LOAD16_BYTE( "g3p0k0.71", 0x000000, 0x080000, CRC(98147760) SHA1(6db614e1af4e163488ab9675d96db829f45cec22) )
ROM_LOAD16_BYTE( "g3p1k0.102", 0x000001, 0x080000, CRC(27416b22) SHA1(dbb3ec78cf70fd9a56e4f51c1c2b65feabc14190) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites - RLE encoded */
ROM_REGION( 0x200000, "spritegen", 0 ) /* Sprites - RLE encoded */
ROM_LOAD( "gp320000.1", 0x000000, 0x200000, CRC(a0112827) SHA1(0a6c78d71b75a1d78215aab3104176aa1769b14f) )
ROM_REGION( 0x1000000, "gfx2", 0 ) /* Backgrounds - RLE encoded */

View File

@ -180,7 +180,6 @@ public:
, m_sprregs(*this, "sprregs_%u", 1)
, m_mainsub_shared_ram(*this, "mainsub_shared")
, m_ctrl(*this, "ctrl")
, m_spriterom(*this, "gfx%u", 1)
{ }
required_device<cpu_device> m_maincpu;
@ -194,8 +193,6 @@ public:
required_shared_ptr<uint16_t> m_mainsub_shared_ram;
required_shared_ptr<uint16_t> m_ctrl;
required_memory_region_array<2> m_spriterom;
std::unique_ptr<bitmap_ind16> m_sprite_bitmap[2];
std::unique_ptr<uint32_t[]> m_sprite_ram32[2];
std::unique_ptr<uint32_t[]> m_sprite_regs32[2];
@ -308,7 +305,7 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
for (int chip = 0; chip < 2; chip++)
{
m_sprite_bitmap[chip]->fill(0, cliprect);
m_spritegen[chip]->skns_draw_sprites(*m_sprite_bitmap[chip], cliprect, m_sprite_ram32[chip].get(), 0x4000, m_spriterom[chip]->base(), m_spriterom[chip]->bytes(), m_sprite_regs32[chip].get() );
m_spritegen[chip]->skns_draw_sprites(*m_sprite_bitmap[chip], cliprect, m_sprite_ram32[chip].get(), 0x4000, m_sprite_regs32[chip].get() );
}
bitmap_ind8 *tile_primap = &screen.priority();
@ -339,10 +336,12 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (pixdata2 & 0xff)
{
dst[x] = (pixdata2 & 0x3fff)|0x4000;
tilepri[x] = (pridata2 << 1);
}
else if (pixdata1 & 0xff)
{
dst[x] = (pixdata1 & 0x3fff)|0x4000;
tilepri[x] = (pridata1 << 1);
}
}
else
@ -350,10 +349,12 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (pixdata1 & 0xff)
{
dst[x] = (pixdata1 & 0x3fff)|0x4000;
tilepri[x] = (pridata1 << 1);
}
else if (pixdata2 & 0xff)
{
dst[x] = (pixdata2 & 0x3fff)|0x4000;
tilepri[x] = (pridata2 << 1);
}
}
}
@ -362,6 +363,7 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (pixdata1 & 0xff)
{
dst[x] = (pixdata1 & 0x3fff)|0x4000;
tilepri[x] = (pridata1 << 1);
}
}
}
@ -370,6 +372,7 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (pixdata2 & 0xff)
{
dst[x] = (pixdata2 & 0x3fff)|0x4000;
tilepri[x] = (pridata2 << 1);
}
}
}
@ -652,7 +655,7 @@ ROM_START( jchan )
ROM_LOAD16_BYTE( "jsp1x3.u86", 0x000001, 0x080000, CRC(d15d2b8e) SHA1(e253f2d64fee6627f68833b441f41ea6bbb3ab07) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
ROM_LOAD16_BYTE( "jsp0x3.u87", 0x000000, 0x080000, CRC(ebec50b1) SHA1(57d7bd728349c2b9d662bcf20a3be92902cb3ffb) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x2000000, "gfx1", 0 ) /* SPA GFX */
ROM_REGION( 0x2000000, "spritegen1", 0 ) /* SPA GFX */
ROM_LOAD( "jc-100-00.179", 0x0000000, 0x0400000, CRC(578d928c) SHA1(1cfe04f9b02c04f95a85d6fe7c4306a535ff969f) ) // SPA0 kaneko logo
ROM_LOAD( "jc-101-00.180", 0x0400000, 0x0400000, CRC(7f5e1aca) SHA1(66ed3deedfd55d88e7dcd017b9c2ce523ccb421a) ) // SPA1
ROM_LOAD( "jc-102-00.181", 0x0800000, 0x0400000, CRC(72caaa68) SHA1(f6b98aa949768a306ac9bc5f9c05a1c1a3fb6c3f) ) // SPA2
@ -663,7 +666,7 @@ ROM_START( jchan )
ROM_LOAD16_BYTE( "jcs0x3.164", 0x1600000, 0x040000, CRC(9a012cbc) SHA1(b3e7390220c90d55dccfb96397f0af73925e36f9) ) // SPA-7A female portraits
ROM_LOAD16_BYTE( "jcs1x3.165", 0x1600001, 0x040000, CRC(57ae7c8d) SHA1(4086f638c2aabcee84e838243f0fd15cec5c040d) ) // SPA-7B female portraits
ROM_REGION( 0x1000000, "gfx2", 0 ) /* SPB GFX (background sprites) */
ROM_REGION( 0x1000000, "spritegen2", 0 ) /* SPB GFX (background sprites) */
ROM_LOAD( "jc-106-00.171", 0x000000, 0x200000, CRC(bc65661b) SHA1(da28b8fcd7c7a0de427a54be2cf41a1d6a295164) ) // SPB0
ROM_LOAD( "jc-107-00.172", 0x200000, 0x200000, CRC(92a86e8b) SHA1(c37eddbc9d84239deb543504e27b5bdaf2528f79) ) // SPB1
@ -692,7 +695,7 @@ ROM_START( jchan2 ) /* Some kind of semi-sequel? MASK ROMs dumped and confirmed
ROM_LOAD16_BYTE( "j2p1x5.u86", 0x000001, 0x080000, CRC(dc897725) SHA1(d3e94bac96497deb2f79996c2d4a349f6da5b1d6) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
ROM_LOAD16_BYTE( "j2p1x6.u87", 0x000000, 0x080000, CRC(594224f9) SHA1(bc546a98c5f3c5b08f521c54a4b0e9e2cdf83ced) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x2000000, "gfx1", 0 ) /* SPA GFX */
ROM_REGION( 0x2000000, "spritegen1", 0 ) /* SPA GFX */
ROM_LOAD( "jc-100-00.179", 0x0000000, 0x0400000, CRC(578d928c) SHA1(1cfe04f9b02c04f95a85d6fe7c4306a535ff969f) ) // SPA0 kaneko logo
ROM_LOAD( "jc-101-00.180", 0x0400000, 0x0400000, CRC(7f5e1aca) SHA1(66ed3deedfd55d88e7dcd017b9c2ce523ccb421a) ) // SPA1
ROM_LOAD( "jc-102-00.181", 0x0800000, 0x0400000, CRC(72caaa68) SHA1(f6b98aa949768a306ac9bc5f9c05a1c1a3fb6c3f) ) // SPA2
@ -703,7 +706,7 @@ ROM_START( jchan2 ) /* Some kind of semi-sequel? MASK ROMs dumped and confirmed
ROM_LOAD16_BYTE( "j2g1x1.164", 0x1600000, 0x080000, CRC(66a7ea6a) SHA1(605cbc1eb50fb0decbea790f2a11e999d5fde762) ) // SPA-7A female portraits
ROM_LOAD16_BYTE( "j2g1x2.165", 0x1600001, 0x080000, CRC(660e770c) SHA1(1e385a6ee83559b269d2179e6c247238c0f3c850) ) // SPA-7B female portraits
ROM_REGION( 0x1000000, "gfx2", 0 ) /* SPB GFX (background sprites) */
ROM_REGION( 0x1000000, "spritegen2", 0 ) /* SPB GFX (background sprites) */
ROM_LOAD( "jc-106-00.171", 0x000000, 0x200000, CRC(bc65661b) SHA1(da28b8fcd7c7a0de427a54be2cf41a1d6a295164) ) // SPB0
ROM_LOAD( "jc-107-00.172", 0x200000, 0x200000, CRC(92a86e8b) SHA1(c37eddbc9d84239deb543504e27b5bdaf2528f79) ) // SPB1

View File

@ -777,7 +777,7 @@ static const gfx_layout skns_4bpptilemap_layout =
};
static GFXDECODE_START( skns_bg )
/* "gfx1" is sprites, RLE encoded */
/* "spritegen" is sprites, RLE encoded */
GFXDECODE_ENTRY( "gfx2", 0, skns_tilemap_layout, 0x000, 128 )
GFXDECODE_ENTRY( "gfx3", 0, skns_tilemap_layout, 0x000, 128 )
GFXDECODE_ENTRY( "gfx2", 0, skns_4bpptilemap_layout, 0x000, 128 )
@ -1080,7 +1080,7 @@ ROM_START( skns )
ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASE00 ) /* SH-2 Code mapped at 0x04000000 */
ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 ) /* Sprites */
ROM_REGION( 0x800000, "spritegen", ROMREGION_ERASE00 ) /* Sprites */
ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 ) /* Tiles Plane A */
@ -1097,7 +1097,7 @@ ROM_START( cyvern )
ROM_LOAD16_BYTE( "cv-usa.u10", 0x000000, 0x100000, CRC(1023ddca) SHA1(7967e3e876cdb797bdaa2eb5136a33cd43941501) )
ROM_LOAD16_BYTE( "cv-usa.u8", 0x000001, 0x100000, CRC(f696f6be) SHA1(d9e66173ca12693255d2bb0982da2fb96bfd155d) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_REGION( 0x800000, "spritegen", 0 ) /* Sprites */
ROM_LOAD( "cv100-00.u24", 0x000000, 0x400000, CRC(cd4ae88a) SHA1(925f4ae01a6ad3633be2a61be69e163f05401cf6) )
ROM_LOAD( "cv101-00.u20", 0x400000, 0x400000, CRC(a6cb3f0b) SHA1(8d83f44a096ca0a70962ca4c602c4331874c8560) )
@ -1121,7 +1121,7 @@ ROM_START( cyvernj )
ROM_LOAD16_BYTE( "cvj-even.u10", 0x000000, 0x100000, CRC(802fadb4) SHA1(cbfac3a87a4863466117c61f2ecaf63d506352f6) )
ROM_LOAD16_BYTE( "cvj-odd.u8", 0x000001, 0x100000, CRC(f8a0fbdd) SHA1(5cc8c12c13b5eb3456083e70100450ba041de76e) )
ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprites */
ROM_REGION( 0x800000, "spritegen", 0 ) /* Sprites */
ROM_LOAD( "cv100-00.u24", 0x000000, 0x400000, CRC(cd4ae88a) SHA1(925f4ae01a6ad3633be2a61be69e163f05401cf6) )
ROM_LOAD( "cv101-00.u20", 0x400000, 0x400000, CRC(a6cb3f0b) SHA1(8d83f44a096ca0a70962ca4c602c4331874c8560) )
@ -1145,7 +1145,7 @@ ROM_START( galpani4 )
ROM_LOAD16_BYTE( "gp4j1.u10", 0x000000, 0x080000, CRC(919a3893) SHA1(83b89a9e628a1f46f8a56ea512fc8ad641d5e239) )
ROM_LOAD16_BYTE( "gp4j1.u8", 0x000001, 0x080000, CRC(94cb1fb7) SHA1(ac90103dd43cdce6a287ffc13631c1de477a9a71) )
ROM_REGION( 0x400000, "gfx1", 0 )
ROM_REGION( 0x400000, "spritegen", 0 )
ROM_LOAD( "gp4-100-00.u24", 0x000000, 0x200000, CRC(1df61f01) SHA1(a9e95bbb3013e8f2fd01243b1b392ff07b4f7d02) )
ROM_LOAD( "gp4-101-00.u20", 0x200000, 0x100000, CRC(8e2c9349) SHA1(a58fa9bcc9684ed4558e3395d592b64a1978a902) )
@ -1168,7 +1168,7 @@ ROM_START( galpani4k ) /* ROM-BOARD NEP-16 part number GP04K00372 with extra sou
ROM_LOAD16_BYTE( "gp4k1.u10", 0x000000, 0x080000, CRC(cbd5c3a0) SHA1(17fc0d6f6050ffd31707cee3fcc263cd5b9d0c4f) )
ROM_LOAD16_BYTE( "gp4k1.u8", 0x000001, 0x080000, CRC(7a95bfe2) SHA1(82e24fd4674ec25bc6608ced0921e8573fcff2c2) )
ROM_REGION( 0x400000, "gfx1", 0 )
ROM_REGION( 0x400000, "spritegen", 0 )
ROM_LOAD( "gp4-100-00.u24", 0x000000, 0x200000, CRC(1df61f01) SHA1(a9e95bbb3013e8f2fd01243b1b392ff07b4f7d02) )
ROM_LOAD( "gp4-101-00.u20", 0x200000, 0x100000, CRC(8e2c9349) SHA1(a58fa9bcc9684ed4558e3395d592b64a1978a902) )
@ -1192,7 +1192,7 @@ ROM_START( galpanidx )
ROM_LOAD16_BYTE( "gpdx.u10", 0x000000, 0x100000, CRC(8eca883d) SHA1(f5a102ac21aeebc44afcd0ef7f655de21d4442b2) )
ROM_LOAD16_BYTE( "gpdx.u8", 0x000001, 0x100000, CRC(b0088d8f) SHA1(2363620265d3fc53bae1c5889ea761444f80735a) )
ROM_REGION( 0x400000, "gfx1", 0 )
ROM_REGION( 0x400000, "spritegen", 0 )
ROM_LOAD( "gp4-100-00.u24", 0x000000, 0x200000, CRC(1df61f01) SHA1(a9e95bbb3013e8f2fd01243b1b392ff07b4f7d02) )
ROM_LOAD( "gp4-101-00.u20", 0x200000, 0x100000, CRC(8e2c9349) SHA1(a58fa9bcc9684ed4558e3395d592b64a1978a902) )
@ -1216,7 +1216,7 @@ ROM_START( galpanis )
ROM_LOAD16_BYTE( "gps-000-e1.u10", 0x000000, 0x100000, CRC(b9ea3c44) SHA1(c1913545cd71ee75e60ade744a2a1054f770b981) )
ROM_LOAD16_BYTE( "gps-001-e1.u8", 0x000001, 0x100000, CRC(ded57bd0) SHA1(4c0122f0521829d4d83b6b1c403f7e6470f14951) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
@ -1240,7 +1240,7 @@ ROM_START( galpanise )
ROM_LOAD16_BYTE( "u10", 0x000000, 0x100000, CRC(e78e1623) SHA1(f68346b65d2613c8515894d9a239fcbb0b5cb52d) ) /* MASK rom with no labels */
ROM_LOAD16_BYTE( "u8", 0x000001, 0x100000, CRC(098eff7c) SHA1(3cac22cbb11905a46afaa62c0470624b3b554fc0) ) /* MASK rom with no labels */
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
@ -1264,7 +1264,7 @@ ROM_START( galpanisj )
ROM_LOAD16_BYTE( "gps-000-j1.u10", 0x000000, 0x100000, CRC(c6938c3f) SHA1(05853ee6a44a55702788a75580b04a4be45e9bcb) )
ROM_LOAD16_BYTE( "gps-001-j1.u8", 0x000001, 0x100000, CRC(e764177a) SHA1(3a1333eb1022ed1a275b9c3d44b5f4ab81618fb6) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
@ -1288,7 +1288,7 @@ ROM_START( galpanisk )
ROM_LOAD16_BYTE( "gps-000-k1.u10", 0x000000, 0x100000, CRC(c9ff3d8a) SHA1(edfec265654aaa8cb307424e5b2899e708392cd0) )
ROM_LOAD16_BYTE( "gps-001-k1.u8", 0x000001, 0x100000, CRC(354e601d) SHA1(4d176f2337a3b0b63548b2e542f9fa87d0a1ef7b) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gps10000.u24", 0x000000, 0x400000, CRC(a1a7acf2) SHA1(52c86ae907f0c0236808c19f652955b09e90ec5a) )
ROM_LOAD( "gps10100.u20", 0x400000, 0x400000, CRC(49f764b6) SHA1(9f4289858c3dac625ef623cc381a47b45aa5d8e2) )
ROM_LOAD( "gps10200.u17", 0x800000, 0x400000, CRC(51980272) SHA1(6c0706d913b33995579aaf0688c4bf26d6d35a78) )
@ -1312,7 +1312,7 @@ ROM_START( galpans2 ) //only the 2 program ROMs were dumped, but mask ROMs are s
ROM_LOAD16_BYTE( "GPS2E_U6__Ver.3.u6", 0x000000, 0x100000, CRC(72fff5d1) SHA1(57001e04c469281a82a2956c6bc33502d5a3b882) )
ROM_LOAD16_BYTE( "GPS2E_U4__Ver.3.u4", 0x000001, 0x100000, CRC(95061601) SHA1(f98f1af9877b097e97acc5a3844ef9c523a92843) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gs210000.u21", 0x000000, 0x400000, CRC(294b2f14) SHA1(90cbd0acdaa2d89d208c28aae33ab57c03624089) )
ROM_LOAD( "gs210100.u20", 0x400000, 0x400000, CRC(f75c5a9a) SHA1(3919643cee6c88185a1aa3c58c5bc80599bf734e) )
ROM_LOAD( "gs210200.u8", 0x800000, 0x400000, CRC(25b4f56b) SHA1(f9a33d5ed54a04ecece3035e75508d191bbe74b1) )
@ -1338,7 +1338,7 @@ ROM_START( galpans2j )
ROM_LOAD16_BYTE( "gps2j.u6", 0x000000, 0x100000, CRC(6e74005b) SHA1(a57e8307062e262c2e7a84e2c58f7dfe03fc0f78) )
ROM_LOAD16_BYTE( "gps2j.u4", 0x000001, 0x100000, CRC(9b4b2304) SHA1(0b481f4d71d92bf23f38ed22979efd4409004857) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gs210000.u21", 0x000000, 0x400000, CRC(294b2f14) SHA1(90cbd0acdaa2d89d208c28aae33ab57c03624089) )
ROM_LOAD( "gs210100.u20", 0x400000, 0x400000, CRC(f75c5a9a) SHA1(3919643cee6c88185a1aa3c58c5bc80599bf734e) )
ROM_LOAD( "gs210200.u8", 0x800000, 0x400000, CRC(25b4f56b) SHA1(f9a33d5ed54a04ecece3035e75508d191bbe74b1) )
@ -1364,7 +1364,7 @@ ROM_START( galpans2a )
ROM_LOAD16_BYTE( "gps2av11.u6", 0x000000, 0x100000, CRC(61c05d5f) SHA1(e47c7951c1f688edb6c677532f750537a64bb7b3) )
ROM_LOAD16_BYTE( "gps2av11.u4", 0x000001, 0x100000, CRC(2e8c0ac2) SHA1(d066260d6d3c2924b42394e867523e6112a125c5) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "gs210000.u21", 0x000000, 0x400000, CRC(294b2f14) SHA1(90cbd0acdaa2d89d208c28aae33ab57c03624089) )
ROM_LOAD( "gs210100.u20", 0x400000, 0x400000, CRC(f75c5a9a) SHA1(3919643cee6c88185a1aa3c58c5bc80599bf734e) )
ROM_LOAD( "gs210200.u8", 0x800000, 0x400000, CRC(25b4f56b) SHA1(f9a33d5ed54a04ecece3035e75508d191bbe74b1) )
@ -1409,7 +1409,7 @@ ROM_START( galpansu )
ROM_LOAD16_BYTE( "su.u8", 0x000001, 0x100000, CRC(10977a03) SHA1(2ab95398d6b88d8819f368ee6104d7f8b485778d) )
/* the rest of the roms match Gals Panic S2, but are in different locations */
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "24", 0x000000, 0x400000, CRC(294b2f14) SHA1(90cbd0acdaa2d89d208c28aae33ab57c03624089) )
ROM_LOAD( "20", 0x400000, 0x400000, CRC(f75c5a9a) SHA1(3919643cee6c88185a1aa3c58c5bc80599bf734e) )
ROM_LOAD( "17", 0x800000, 0x400000, CRC(25b4f56b) SHA1(f9a33d5ed54a04ecece3035e75508d191bbe74b1) )
@ -1435,7 +1435,7 @@ ROM_START( galpans3 )
ROM_LOAD16_BYTE( "gpss3.u10", 0x000000, 0x100000, CRC(c1449a72) SHA1(02db81a0ea349742d6ddf71d59fcfce45f0c5212) )
ROM_LOAD16_BYTE( "gpss3.u8", 0x000001, 0x100000, CRC(11eb44cf) SHA1(482ef27fa86d6777def46918eac8be019896c0b0) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "u24.bin", 0x000000, 0x800000, CRC(70613168) SHA1(637c50e733dbc0226b1e0acc8000faa7e8977cb6) )
ROM_REGION( 0x800000, "gfx2", 0 )
@ -1456,7 +1456,7 @@ ROM_START( gutsn )
ROM_LOAD16_BYTE( "gts000j0.u6", 0x000000, 0x080000, CRC(8ee91310) SHA1(8dd918189fe445d79c7f028168862b852f70a6f2) )
ROM_LOAD16_BYTE( "gts001j0.u4", 0x000001, 0x080000, CRC(80b8ee66) SHA1(4faf5f358ceee866f09bd81e63ba3ebd21bde835) )
ROM_REGION( 0x400000, "gfx1", 0 )
ROM_REGION( 0x400000, "spritegen", 0 )
ROM_LOAD( "gts10000.u24", 0x000000, 0x400000, CRC(1959979e) SHA1(92a68784664dd833ca6fcca1b15cd46b9365d081) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1477,7 +1477,7 @@ ROM_START( panicstr )
ROM_LOAD16_BYTE( "ps1000j0.u10", 0x000000, 0x100000, CRC(59645f89) SHA1(8da205c6e38899d6c637941700dd7eea56011c10) )
ROM_LOAD16_BYTE( "ps1001j0.u8", 0x000001, 0x100000, CRC(c4722be9) SHA1(7009d320a80cfa7d80efc5fc915081914bc3c827) )
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "ps-10000.u24", 0x000000, 0x400000, CRC(294b2f14) SHA1(90cbd0acdaa2d89d208c28aae33ab57c03624089) )
ROM_LOAD( "ps110100.u20", 0x400000, 0x400000, CRC(e292f393) SHA1(b0914f7f0abf9f821f2592c289ea4e3b3e7f819a) )
@ -1499,7 +1499,7 @@ ROM_START( puzzloop )
ROM_LOAD16_BYTE( "pl00e4.u6", 0x000000, 0x080000, CRC(7d3131a5) SHA1(f9302aa27addb8a730102b1869a34063d8b44e62) ) /* V0.94 */
ROM_LOAD16_BYTE( "pl00e4.u4", 0x000001, 0x080000, CRC(40dc3291) SHA1(d955752a2c884e6dd951f9a87f9d249bb1ab9116) ) /* V0.94 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1521,7 +1521,7 @@ ROM_START( puzzloope )
ROM_LOAD16_BYTE( "pl00e1.u6", 0x000000, 0x080000, CRC(273adc38) SHA1(37ca873342ba9fb9951114048a9cd255f73fe19c) ) /* V0.93 */
ROM_LOAD16_BYTE( "pl00e1.u4", 0x000001, 0x080000, CRC(14ac2870) SHA1(d1abcfd64d7c0ead67e879c40e1010453fd4da13) ) /* V0.93 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1543,7 +1543,7 @@ ROM_START( puzzloopj )
ROM_LOAD16_BYTE( "pl0j2.u6", 0x000000, 0x080000, CRC(23c3bf97) SHA1(77ea1f32bed5709a6ad5b250370f08cfe8036867) ) /* V0.94 */
ROM_LOAD16_BYTE( "pl0j2.u4", 0x000001, 0x080000, CRC(55b2a3cb) SHA1(d4cbe143fe2ad622af808cbd9eedffeff3b77e0d) ) /* V0.94 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1565,7 +1565,7 @@ ROM_START( puzzloopa )
ROM_LOAD16_BYTE( "pl0a3.u6", 0x000000, 0x080000, CRC(4e8673b8) SHA1(17acfb0550912e6f2519df2bc24fbf629a1f6147) ) /* V0.94 */
ROM_LOAD16_BYTE( "pl0a3.u4", 0x000001, 0x080000, CRC(e08a1a07) SHA1(aba58a81ae46c7b4e235a3213984026d170fa189) ) /* V0.94 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1587,7 +1587,7 @@ ROM_START( puzzloopk )
ROM_LOAD16_BYTE( "pl0k4.u6", 0x000000, 0x080000, CRC(8d81f20c) SHA1(c32a525e8f92a625e3fecb7c43dd04b13e0a75e4) ) /* V0.94 */
ROM_LOAD16_BYTE( "pl0k4.u4", 0x000001, 0x080000, CRC(17c78e41) SHA1(4a4b612ae00d521d2947ab32554ebb615be72471) ) /* V0.94 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1609,7 +1609,7 @@ ROM_START( puzzloopu )
ROM_LOAD16_BYTE( "plue5.u6", 0x000000, 0x080000, CRC(e6f3f82f) SHA1(ac61dc22fa3c1b1c2f3a41d3a8fb43938b77ca68) ) /* V0.94 */
ROM_LOAD16_BYTE( "plue5.u4", 0x000001, 0x080000, CRC(0d081d30) SHA1(ec0cdf120126104b9bb706f68c9ba9c3777dd69c) ) /* V0.94 */
ROM_REGION( 0x800000, "gfx1", 0 )
ROM_REGION( 0x800000, "spritegen", 0 )
ROM_LOAD( "pzl10000.u24", 0x000000, 0x400000, CRC(35bf6897) SHA1(8a1f1f5234a61971a62401633de1dec1920fc4da) )
ROM_REGION( 0x400000, "gfx2", 0 )
@ -1631,7 +1631,7 @@ ROM_START( jjparads )
ROM_LOAD16_BYTE( "jp1j1.u10", 0x000000, 0x080000, CRC(de2fb669) SHA1(229ff1ae0ec5bc77fc17642964e0bb0146594e86) )
ROM_LOAD16_BYTE( "jp1j1.u8", 0x000001, 0x080000, CRC(7276efb1) SHA1(3edc265b5c02da7d21a2494a6dc2878fbad93f87) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "jp100-00.u24", 0x000000, 0x400000, CRC(f31b2e95) SHA1(7e5bb518d4f6423785d3f9f2752a624a66b42469) )
ROM_LOAD( "jp101-00.u20", 0x400000, 0x400000, CRC(70cc8c24) SHA1(a4805ce19f512b047829548b635e68690d714175) )
ROM_LOAD( "jp102-00.u17", 0x800000, 0x400000, CRC(35401c1e) SHA1(38fe86a08555bb823b8d64ac043330aaaa6b8892) )
@ -1654,7 +1654,7 @@ ROM_START( jjparad2 )
ROM_LOAD16_BYTE( "jp2000j1.u6", 0x000000, 0x080000, CRC(5d75e765) SHA1(33bcd8f929f6025b00df2ea783b13a391a28a5c3) )
ROM_LOAD16_BYTE( "jp2001j1.u4", 0x000001, 0x080000, CRC(1771910a) SHA1(7ca9584d379d7b41f303a3ba861f943c570ad97c) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "jp210000.u21", 0x000000, 0x400000, CRC(79a7e3d7) SHA1(bd0f8d01971e5895395f97f2520bcd03ab19d229) )
ROM_LOAD( "jp210100.u20", 0x400000, 0x400000, CRC(42415e0c) SHA1(f7bff86d55fa9002fbd14e4c62f9d3df8faaf7d0) )
ROM_LOAD( "jp210200.u8", 0x800000, 0x400000, CRC(26731745) SHA1(8939d36b82b10b1010e4b924e6b9fdd4742efe48) )
@ -1678,7 +1678,7 @@ ROM_START( sengekis )
ROM_LOAD16_BYTE( "ss01a.u6", 0x000000, 0x080000, CRC(962fe857) SHA1(3df74c5efff11333dea9316a063129dcec0d7bdd) )
ROM_LOAD16_BYTE( "ss01a.u4", 0x000001, 0x080000, CRC(ee853c23) SHA1(ddbf7f7cf509788ee3daf7b4d8ae1482e6e31a03) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "ss100-00.u21", 0x000000, 0x400000, CRC(bc7b3dfa) SHA1(dff10a7aef548abda48470293382057a2ca9557e) )
ROM_LOAD( "ss101-00.u20", 0x400000, 0x400000, CRC(ab2df280) SHA1(e456c578a36f585b24379d74def1bcab276c2b1b) )
ROM_LOAD( "ss102-00.u8", 0x800000, 0x400000, CRC(0845eafe) SHA1(663b163bf4e87c7df0030e791f95b1a5827de315) )
@ -1704,7 +1704,7 @@ ROM_START( sengekisj )
ROM_LOAD16_BYTE( "ss01j.u6", 0x000000, 0x080000, CRC(9efdcd5a) SHA1(66cca04d07999dc8ca0bcf19db925996b34d0390) )
ROM_LOAD16_BYTE( "ss01j.u4", 0x000001, 0x080000, CRC(92c3f45e) SHA1(60c647e66b0126fb7749874be39938972481b957) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "ss100-00.u21", 0x000000, 0x400000, CRC(bc7b3dfa) SHA1(dff10a7aef548abda48470293382057a2ca9557e) )
ROM_LOAD( "ss101-00.u20", 0x400000, 0x400000, CRC(ab2df280) SHA1(e456c578a36f585b24379d74def1bcab276c2b1b) )
ROM_LOAD( "ss102-00.u8", 0x800000, 0x400000, CRC(0845eafe) SHA1(663b163bf4e87c7df0030e791f95b1a5827de315) )
@ -1730,7 +1730,7 @@ ROM_START( senknow )
ROM_LOAD16_BYTE( "snw000j1.u6", 0x000000, 0x080000, CRC(0d6136f6) SHA1(eedd011cfe03577bfaf386723502d03f6e5dbd8c) )
ROM_LOAD16_BYTE( "snw001j1.u4", 0x000001, 0x080000, CRC(4a10ec3d) SHA1(bbec4fc53bd61d06ffe5a53debada5785b124fdd) )
ROM_REGION( 0x0800000, "gfx1", 0 )
ROM_REGION( 0x0800000, "spritegen", 0 )
ROM_LOAD( "snw10000.u21", 0x000000, 0x400000, CRC(5133c69c) SHA1(d279df3ffd005dbf0930a8e40eaf2467f8653284) )
ROM_LOAD( "snw10100.u20", 0x400000, 0x400000, CRC(9dafe03f) SHA1(978b4597ff2a54ac5049fd64798e8173b29dd363) )
@ -1754,7 +1754,7 @@ ROM_START( teljan )
ROM_LOAD16_BYTE( "tel1j.u10", 0x000000, 0x080000, CRC(09b552fe) SHA1(2f315fd09eb22fa8c81faa1e926038f20daa845f) )
ROM_LOAD16_BYTE( "tel1j.u8", 0x000001, 0x080000, CRC(070b4345) SHA1(5743f12a351b89593c6adfaeb8a5a2ab7bc8b424) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "tj100-00.u24", 0x000000, 0x400000, CRC(810144f1) SHA1(1c90e71e5f34ee05771ab4a673329f78f17791df) )
ROM_LOAD( "tj101-00.u20", 0x400000, 0x400000, CRC(82f570e1) SHA1(3ba9d1775f897052aca5cff2edbf575399101c5c) )
ROM_LOAD( "tj102-00.u17", 0x800000, 0x400000, CRC(ace875dc) SHA1(be97c895beeac979c5704986e818d4f3cfa00e49) )
@ -1778,7 +1778,7 @@ ROM_START( ryouran )
ROM_LOAD16_BYTE( "or-000-j2.u10", 0x000000, 0x080000, CRC(cba8ca4e) SHA1(7389502622a04101ca34f7b390ca0da820f62590) )
ROM_LOAD16_BYTE( "or-001-j2.u8", 0x000001, 0x080000, CRC(8e79c6b7) SHA1(0441d279cdc998e96abd6f607eceb4f866f58337) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "or100-00.u24", 0x000000, 0x400000, CRC(e9c7695b) SHA1(0a104d4e4e0c933d2eaaf410a8c243db6673786a) )
ROM_LOAD( "or101-00.u20", 0x400000, 0x400000, CRC(fe06bf12) SHA1(f3a2f88aed65bcc1c16f37fd4c0011e3538128f7) )
ROM_LOAD( "or102-00.u17", 0x800000, 0x400000, CRC(f2a5237b) SHA1(b8871f9c0f3864c334ec9a8146cf7dd1961ecb94) )
@ -1802,7 +1802,7 @@ ROM_START( ryourano )
ROM_LOAD16_BYTE( "or000j1.u10", 0x000000, 0x080000, CRC(d93aa491) SHA1(dc01707f1e80d81f28d6b685d08fc6c0d2bf7330) )
ROM_LOAD16_BYTE( "or001j1.u8", 0x000001, 0x080000, CRC(f466e5e9) SHA1(65d699f6f9e299333e51a6a52cb13a0f1a902fe1) )
ROM_REGION( 0x1000000, "gfx1", 0 )
ROM_REGION( 0x1000000, "spritegen", 0 )
ROM_LOAD( "or100-00.u24", 0x000000, 0x400000, CRC(e9c7695b) SHA1(0a104d4e4e0c933d2eaaf410a8c243db6673786a) )
ROM_LOAD( "or101-00.u20", 0x400000, 0x400000, CRC(fe06bf12) SHA1(f3a2f88aed65bcc1c16f37fd4c0011e3538128f7) )
ROM_LOAD( "or102-00.u17", 0x800000, 0x400000, CRC(f2a5237b) SHA1(b8871f9c0f3864c334ec9a8146cf7dd1961ecb94) )
@ -1826,7 +1826,7 @@ ROM_START( vblokbrk )
ROM_LOAD16_BYTE( "sk000e2-e.u10", 0x000000, 0x080000, CRC(5a278f10) SHA1(6f1be0657da76144b0feeed672d92a85091289b6) ) /* labeled SK000e2/E */
ROM_LOAD16_BYTE( "sk000e-o.u8", 0x000001, 0x080000, CRC(aecf0647) SHA1(4752e5012bae8e7af3972b455b4346499ec2b49c) ) /* labeled SK000e/O */
ROM_REGION( 0x0400000, "gfx1", 0 )
ROM_REGION( 0x0400000, "spritegen", 0 )
ROM_LOAD( "sk-100-00.u24", 0x000000, 0x200000, CRC(151dd88a) SHA1(87bb1039a9883f721a315760eb2c4abe4a94046f) )
ROM_LOAD( "sk-101.u20", 0x200000, 0x100000, CRC(779cce23) SHA1(70147b36d982524ba9921823e481ce8fbb5daa26) )
@ -1848,7 +1848,7 @@ ROM_START( vblokbrka )
ROM_LOAD16_BYTE( "sk01a.u10", 0x000000, 0x080000, CRC(4d1be53e) SHA1(3d28b73a67530147962b8df6244af8bea2ab080f) )
ROM_LOAD16_BYTE( "sk01a.u8", 0x000001, 0x080000, CRC(461e0197) SHA1(003573a4abdbecc6dd234a13c61ef07a25d980e2) )
ROM_REGION( 0x0400000, "gfx1", 0 )
ROM_REGION( 0x0400000, "spritegen", 0 )
ROM_LOAD( "sk-100-00.u24", 0x000000, 0x200000, CRC(151dd88a) SHA1(87bb1039a9883f721a315760eb2c4abe4a94046f) )
ROM_LOAD( "sk-101.u20", 0x200000, 0x100000, CRC(779cce23) SHA1(70147b36d982524ba9921823e481ce8fbb5daa26) )
@ -1870,7 +1870,7 @@ ROM_START( sarukani )
ROM_LOAD16_BYTE( "sk1j1.u10", 0x000000, 0x080000, CRC(fcc131b6) SHA1(5e3e71ee1f736b6098e671e6f57b1fb313c81adb) )
ROM_LOAD16_BYTE( "sk1j1.u8", 0x000001, 0x080000, CRC(3b6aa343) SHA1(a969b20b1170d82351024cab9e37f2fbfd01ddeb) )
ROM_REGION( 0x0400000, "gfx1", 0 )
ROM_REGION( 0x0400000, "spritegen", 0 )
ROM_LOAD( "sk-100-00.u24", 0x000000, 0x200000, CRC(151dd88a) SHA1(87bb1039a9883f721a315760eb2c4abe4a94046f) )
ROM_LOAD( "sk-101.u20", 0x200000, 0x100000, CRC(779cce23) SHA1(70147b36d982524ba9921823e481ce8fbb5daa26) )

View File

@ -4,9 +4,9 @@
"CG24173 6186" & "CG24143 4181" (always used as a pair?)
used by suprnova.c
galpani3.c
jchan.c
used by suprnova.cpp
galpani3.cpp
jchan.cpp
TODO:
- Get rid of sprite position kludges
@ -25,11 +25,15 @@ DEFINE_DEVICE_TYPE(SKNS_SPRITE, sknsspr_device, "sknsspr", "SKNS Sprite")
sknsspr_device::sknsspr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, SKNS_SPRITE, tag, owner, clock)
, device_video_interface(mconfig, *this)
, device_rom_interface(mconfig, *this, 27) // TODO : Unknown address bits; maybe 27?
{
}
void sknsspr_device::device_start()
{
m_decodebuffer = make_unique_clear<uint8_t[]>(SUPRNOVA_DECODE_BUFFER_SIZE);
save_pointer(NAME(m_decodebuffer.get()), SUPRNOVA_DECODE_BUFFER_SIZE);
//printf("sknsspr_device::device_start()\n");
}
@ -38,37 +42,39 @@ void sknsspr_device::device_reset()
//printf("sknsspr_device::device_reset()\n");
}
int sknsspr_device::skns_rle_decode ( int romoffset, int size, uint8_t*gfx_source, size_t gfx_length )
void sknsspr_device::rom_bank_updated()
{
//printf("sknsspr_device::rom_bank_updated()\n");
}
int sknsspr_device::skns_rle_decode ( int romoffset, int size )
{
uint8_t *src = gfx_source;
size_t srcsize = gfx_length;
uint8_t *dst = decodebuffer;
int decodeoffset = 0;
while(size>0) {
uint8_t code = src[(romoffset++)%srcsize];
uint8_t code = read_byte((romoffset++) % (1<<27));
size -= (code & 0x7f) + 1;
if(code & 0x80) { /* (code & 0x7f) normal values will follow */
code &= 0x7f;
do {
dst[(decodeoffset++)%SUPRNOVA_DECODE_BUFFER_SIZE] = src[(romoffset++)%srcsize];
m_decodebuffer[(decodeoffset++)%SUPRNOVA_DECODE_BUFFER_SIZE] = read_byte((romoffset++) % (1<<27));
code--;
} while(code != 0xff);
} else { /* repeat next value (code & 0x7f) times */
uint8_t val = src[(romoffset++)%srcsize];
uint8_t val = read_byte((romoffset++) % (1<<27));
do {
dst[(decodeoffset++)%SUPRNOVA_DECODE_BUFFER_SIZE] = val;
m_decodebuffer[(decodeoffset++)%SUPRNOVA_DECODE_BUFFER_SIZE] = val;
code--;
} while(code != 0xff);
}
}
return &src[romoffset%srcsize]-gfx_source;
return romoffset % (1<<27);
}
void sknsspr_device::skns_sprite_kludge(int x, int y)
{
sprite_kludge_x = x;
sprite_kludge_y = y;
m_sprite_kludge_x = x;
m_sprite_kludge_y = y;
}
/* Zooming blitter, zoom is by way of both source and destination offsets */
@ -233,7 +239,7 @@ static void (*const blit_z[4])(bitmap_ind16 &bitmap, const rectangle &cliprect,
blit_fxy_z,
};
void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint32_t* spriteram_source, size_t spriteram_size, uint8_t* gfx_source, size_t gfx_length, uint32_t* sprite_regs)
void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint32_t* spriteram_source, size_t spriteram_size, uint32_t* sprite_regs)
{
/*- SPR RAM Format -**
@ -285,7 +291,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
int disabled = sprite_regs[0x04/4] & 0x08; // RWR1
int xsize,ysize, size, xpos=0,ypos=0, pri=0, romoffset, colour=0, xflip,yflip, joint;
int sx,sy;
int endromoffs=0, gfxlen;
int endromoffs=0;
int grow;
uint16_t zoomx_m, zoomx_s, zoomy_m, zoomy_s;
@ -322,22 +328,20 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if (group_y_offset[3]&0x200) group_y_offset[3] -= 0x400; // Signed
// popmessage ("x %08x y %08x x2 %08x y2 %08x",sprite_x_scroll, sprite_y_scroll,group_x_offset[1], group_y_offset[1]);
// popmessage("%d %d %d %d A:%d B:%d", sprite_kludge_x, sprite_kludge_y, sprite_x_scroll, sprite_y_scroll, (skns_pal_regs[0x00/4] & 0x7000) >> 12, (skns_pal_regs[0x10/4] & 0x7000) >> 12);
// if (keyboard_pressed(KEYCODE_Q)) sprite_kludge_x++;
// if (keyboard_pressed(KEYCODE_W)) sprite_kludge_x--;
// if (keyboard_pressed(KEYCODE_E)) sprite_kludge_y++;
// if (keyboard_pressed(KEYCODE_D)) sprite_kludge_y--;
// popmessage("%d %d %d %d A:%d B:%d", m_sprite_kludge_x, m_sprite_kludge_y, sprite_x_scroll, sprite_y_scroll, (skns_pal_regs[0x00/4] & 0x7000) >> 12, (skns_pal_regs[0x10/4] & 0x7000) >> 12);
// if (keyboard_pressed(KEYCODE_Q)) m_sprite_kludge_x++;
// if (keyboard_pressed(KEYCODE_W)) m_sprite_kludge_x--;
// if (keyboard_pressed(KEYCODE_E)) m_sprite_kludge_y++;
// if (keyboard_pressed(KEYCODE_D)) m_sprite_kludge_y--;
// Tilemap Pri/enables
// popmessage("A: %x %x B: %x %x", skns_v3_regs[0x10/4]>>3, skns_v3_regs[0x10/4]&7, skns_v3_regs[0x34/4]>>3, skns_v3_regs[0x34/4]&7);
/* Seems that sprites are consistently off by a fixed no. of pixels in different games
(Patterns emerge through Manufacturer/Date/Orientation) */
sprite_x_scroll += sprite_kludge_x;
sprite_y_scroll += sprite_kludge_y;
sprite_x_scroll += m_sprite_kludge_x;
sprite_y_scroll += m_sprite_kludge_y;
gfxlen = gfx_length;
while( source<finish )
{
xflip = (source[0] & 0x00000200) >> 9;
@ -443,14 +447,10 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
zoomx_s = (source[2] >> 24)&0x00fc;
zoomy_m = 0;
zoomy_s = (source[3] >> 24)&0x00fc;
}
romoffset &= gfxlen-1;
endromoffs = skns_rle_decode ( romoffset, size, gfx_source, gfx_length );
endromoffs = skns_rle_decode( romoffset, size );
// in Cyvern
@ -470,7 +470,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if(zoomx_m || zoomx_s || zoomy_m || zoomy_s)
{
blit_z[ (xflip<<1) | yflip ](bitmap, cliprect, decodebuffer, sx, sy, xsize, ysize, zoomx_m, zoomx_s, zoomy_m, zoomy_s, NewColour);
blit_z[ (xflip<<1) | yflip ](bitmap, cliprect, m_decodebuffer.get(), sx, sy, xsize, ysize, zoomx_m, zoomx_s, zoomy_m, zoomy_s, NewColour);
}
else
{
@ -486,7 +486,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if ((sy+yy < (cliprect.max_y+1)) && (sy+yy >= cliprect.min_y))
{
int pix;
pix = decodebuffer[xsize*yy+xx];
pix = m_decodebuffer[xsize*yy+xx];
if (pix)
bitmap.pix16(sy+yy, sx+xx) = pix+ NewColour; // change later
}
@ -506,7 +506,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if ((sy+(ysize-1-yy) < (cliprect.max_y+1)) && (sy+(ysize-1-yy) >= cliprect.min_y))
{
int pix;
pix = decodebuffer[xsize*yy+xx];
pix = m_decodebuffer[xsize*yy+xx];
if (pix)
bitmap.pix16(sy+(ysize-1-yy), sx+xx) = pix+ NewColour; // change later
}
@ -526,7 +526,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if ((sy+yy < (cliprect.max_y+1)) && (sy+yy >= cliprect.min_y))
{
int pix;
pix = decodebuffer[xsize*yy+xx];
pix = m_decodebuffer[xsize*yy+xx];
if (pix)
bitmap.pix16(sy+yy, sx+(xsize-1-xx)) = pix+ NewColour; // change later
}
@ -547,7 +547,7 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
if ((sy+(ysize-1-yy) < (cliprect.max_y+1)) && (sy+(ysize-1-yy) >= cliprect.min_y))
{
int pix;
pix = decodebuffer[xsize*yy+xx];
pix = m_decodebuffer[xsize*yy+xx];
if (pix)
bitmap.pix16(sy+(ysize-1-yy), sx+(xsize-1-xx)) = pix+ NewColour; // change later
}

View File

@ -5,22 +5,24 @@
#pragma once
class sknsspr_device : public device_t, public device_video_interface
class sknsspr_device : public device_t, public device_video_interface, public device_rom_interface
{
public:
sknsspr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint32_t* spriteram_source, size_t spriteram_size, uint8_t* gfx_source, size_t gfx_length, uint32_t* sprite_regs);
void skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint32_t* spriteram_source, size_t spriteram_size, uint32_t* sprite_regs);
void skns_sprite_kludge(int x, int y);
protected:
virtual void device_start() override;
virtual void device_reset() override;
virtual void rom_bank_updated() override;
private:
static constexpr unsigned SUPRNOVA_DECODE_BUFFER_SIZE = 0x2000;
int sprite_kludge_x, sprite_kludge_y;
uint8_t decodebuffer[SUPRNOVA_DECODE_BUFFER_SIZE];
int skns_rle_decode ( int romoffset, int size, uint8_t*gfx_source, size_t gfx_length );
int m_sprite_kludge_x, m_sprite_kludge_y;
std::unique_ptr<uint8_t[]> m_decodebuffer;
int skns_rle_decode ( int romoffset, int size );
};
DECLARE_DEVICE_TYPE(SKNS_SPRITE, sknsspr_device)

View File

@ -633,7 +633,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
m_sprite_bitmap.fill(0x0000, cliprect);
if (m_alt_enable_sprites)
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram, m_spriteram.bytes(), memregion("gfx1")->base(), memregion ("gfx1")->bytes(), m_spc_regs );
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram, m_spriteram.bytes(), m_spc_regs ); // TODO : not all 0x4000 of the sprite RAM area can be displayed on real hardware
return 0;