mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
konmedal: use PROM palette (see F4 gfx viewer), more work on VROM readback. (nw)
This commit is contained in:
parent
2654773c5f
commit
c440b9c2b7
@ -41,13 +41,16 @@ public:
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<ymz280b_device> m_ymz;
|
||||
|
||||
DECLARE_PALETTE_INIT(konmedal);
|
||||
|
||||
READ8_MEMBER(vram_r);
|
||||
WRITE8_MEMBER(vram_w);
|
||||
READ8_MEMBER(magic_r);
|
||||
WRITE8_MEMBER(bankswitch_w);
|
||||
WRITE8_MEMBER(control2_w);
|
||||
|
||||
private:
|
||||
u8 m_control;
|
||||
u8 m_control, m_control2;
|
||||
|
||||
public:
|
||||
virtual void machine_start() override;
|
||||
@ -58,9 +61,14 @@ public:
|
||||
K056832_CB_MEMBER(tile_callback);
|
||||
};
|
||||
|
||||
WRITE8_MEMBER(konmedal_state::control2_w)
|
||||
{
|
||||
m_control2 = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(konmedal_state::vram_r)
|
||||
{
|
||||
if (m_control == 0xf)
|
||||
if (!(m_control2 & 0x80))
|
||||
{
|
||||
if (offset & 1)
|
||||
{
|
||||
@ -73,7 +81,8 @@ READ8_MEMBER(konmedal_state::vram_r)
|
||||
}
|
||||
else if (m_control == 0) // ROM readback
|
||||
{
|
||||
//return m_k056832->konmedal_rom_r(space, offset);
|
||||
// printf("offset %x\n", offset);
|
||||
return m_k056832->konmedal_rom_r(space, offset);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -98,7 +107,7 @@ READ8_MEMBER(konmedal_state::magic_r)
|
||||
K056832_CB_MEMBER(konmedal_state::tile_callback)
|
||||
{
|
||||
// *color = m_layer_colorbase[layer] + ((*color & 0x3c) << 2);
|
||||
*color = ((*color & 0x3c) << 2);
|
||||
*color = 0; //((*color & 0x3c) << 2);
|
||||
}
|
||||
|
||||
void konmedal_state::video_start()
|
||||
@ -120,6 +129,20 @@ uint32_t konmedal_state::screen_update_konmedal(screen_device &screen, bitmap_in
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(konmedal_state, konmedal)
|
||||
{
|
||||
int i;
|
||||
uint8_t *PROM = memregion("proms")->base();
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
palette.set_pen_color(i,
|
||||
PROM[i]<<4,
|
||||
PROM[0x100+i]<<4,
|
||||
PROM[0x200+i]<<4);
|
||||
}
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(konmedal_state::konmedal_interrupt)
|
||||
{
|
||||
@ -140,6 +163,7 @@ static ADDRESS_MAP_START( medal_main, AS_PROGRAM, 8, konmedal_state )
|
||||
AM_RANGE(0xa000, 0xafff) AM_RAM // work RAM?
|
||||
AM_RANGE(0xb800, 0xbfff) AM_RAM // stack goes here
|
||||
AM_RANGE(0xc000, 0xc03f) AM_DEVWRITE("k056832", k056832_device, write)
|
||||
AM_RANGE(0xc100, 0xc100) AM_WRITE(control2_w)
|
||||
AM_RANGE(0xc400, 0xc400) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0xc500, 0xc500) AM_NOP // read to reset watchdog
|
||||
AM_RANGE(0xc800, 0xc80f) AM_DEVWRITE("k056832", k056832_device, b_w)
|
||||
@ -180,6 +204,7 @@ static MACHINE_CONFIG_START( konmedal, konmedal_state )
|
||||
MCFG_PALETTE_ADD("palette", 8192)
|
||||
MCFG_PALETTE_ENABLE_SHADOWS()
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
MCFG_PALETTE_INIT_OWNER(konmedal_state, konmedal)
|
||||
|
||||
MCFG_DEVICE_ADD("k056832", K056832, 0)
|
||||
MCFG_K056832_CB(konmedal_state, tile_callback)
|
||||
|
@ -680,13 +680,26 @@ READ32_MEMBER( k056832_device::k_6bpp_rom_long_r )
|
||||
return 0;
|
||||
}
|
||||
|
||||
READ8_MEMBER( k056832_device::konmedal_rom_r )
|
||||
{
|
||||
uint32_t addr = ((m_regs[0x1a] | (m_regs[0x1b]>>4)) * 0x800) + offset;
|
||||
|
||||
return m_rombase[addr];
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER( k056832_device::piratesh_rom_r )
|
||||
{
|
||||
uint32_t addr = 0x2000 * m_cur_gfx_banks + offset;
|
||||
|
||||
return m_rombase[addr + 1] | (m_rombase[addr] << 8);
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER( k056832_device::rom_word_r )
|
||||
{
|
||||
int addr = 0x2000 * m_cur_gfx_banks + 2 * offset;
|
||||
|
||||
|
||||
return m_rombase[addr + 1] | (m_rombase[addr] << 8);
|
||||
}
|
||||
|
||||
@ -2029,17 +2042,31 @@ void k056832_device::create_gfx()
|
||||
{ 0*8*4, 1*8*4, 2*8*4, 3*8*4, 4*8*4, 5*8*4, 6*8*4, 7*8*4 },
|
||||
8*8*4
|
||||
};
|
||||
static const gfx_layout charlayout4dj =
|
||||
|
||||
static const gfx_layout charlayout4ps =
|
||||
{
|
||||
8, 8,
|
||||
0,
|
||||
4,
|
||||
{ 8*3,8*1,8*2,8*0 },
|
||||
8, 8, // W, H
|
||||
0, // Total num elements
|
||||
4, // No. Bit planes
|
||||
{ 8*2,8*0,8*3,8*1 }, // Bit plane offsets
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0, 8*4, 8*4*2, 8*4*3, 8*4*4, 8*4*5, 8*4*6, 8*4*7 },
|
||||
8*8*4
|
||||
8*8*4 // Increment
|
||||
};
|
||||
|
||||
static const gfx_layout charlayout4dj =
|
||||
{
|
||||
8, 8, // W, H
|
||||
0, // Total num elements
|
||||
4, // No. Bit planes
|
||||
{ 8*3,8*1,8*2,8*0 }, // Bit plane offsets
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0, 8*4, 8*4*2, 8*4*3, 8*4*4, 8*4*5, 8*4*6, 8*4*7 },
|
||||
8*8*4 // Increment
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* handle the various graphics formats */
|
||||
i = (m_big) ? 8 : 16;
|
||||
|
||||
@ -2075,6 +2102,11 @@ void k056832_device::create_gfx()
|
||||
total = m_rombase.bytes() / (i*8);
|
||||
konami_decode_gfx(*this, gfx_index, &m_rombase[0], total, &charlayout8, 8);
|
||||
break;
|
||||
|
||||
case K056832_BPP_4PIRATESH:
|
||||
total = m_rombase.bytes() / (i*4);
|
||||
konami_decode_gfx(*this, gfx_index, &m_rombase[0], total, &charlayout4ps, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_4dj:
|
||||
total = m_rombase.bytes() / (i*4);
|
||||
|
@ -28,8 +28,9 @@ typedef device_delegate<void (int layer, int *code, int *color, int *flags)> k05
|
||||
#define K056832_BPP_6 2
|
||||
#define K056832_BPP_8 3
|
||||
#define K056832_BPP_4dj 4
|
||||
#define K056832_BPP_8LE 5
|
||||
#define K056832_BPP_8TASMAN 6
|
||||
#define K056832_BPP_4PIRATESH 5
|
||||
#define K056832_BPP_8LE 6
|
||||
#define K056832_BPP_8TASMAN 7
|
||||
|
||||
#define K056832_DRAW_FLAG_MIRROR 0x00800000
|
||||
#define K056382_DRAW_FLAG_FORCE_XYSCROLL 0x00800000
|
||||
@ -65,6 +66,8 @@ public:
|
||||
DECLARE_READ32_MEMBER( k_5bpp_rom_long_r );
|
||||
DECLARE_READ32_MEMBER( k_6bpp_rom_long_r );
|
||||
DECLARE_READ16_MEMBER( rom_word_r );
|
||||
DECLARE_READ8_MEMBER( konmedal_rom_r );
|
||||
DECLARE_READ16_MEMBER( piratesh_rom_r );
|
||||
DECLARE_READ16_MEMBER( mw_rom_word_r );
|
||||
DECLARE_READ16_MEMBER( bishi_rom_word_r );
|
||||
DECLARE_READ16_MEMBER( old_rom_word_r );
|
||||
|
Loading…
Reference in New Issue
Block a user