void k05324x_device::device_start() { UINT32 total; static const gfx_layout spritelayout = { 16,16, 0, 4, { 24, 16, 8, 0 }, { 0, 1, 2, 3, 4, 5, 6, 7, 8*32+0, 8*32+1, 8*32+2, 8*32+3, 8*32+4, 8*32+5, 8*32+6, 8*32+7 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 }, 128*8 }; /* decode the graphics */ switch (m_plane_order) { case NORMAL_PLANE_ORDER: total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 128; konami_decode_gfx(machine(), m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &spritelayout, 4); break; default: fatalerror("Unsupported plane_order\n"); } if (VERBOSE && !(machine().config().m_video_attributes & VIDEO_HAS_SHADOWS)) popmessage("driver should use VIDEO_HAS_SHADOWS"); /* deinterleave the graphics, if needed */ konami_deinterleave_gfx(machine(), m_gfx_memory_region, m_deinterleave); m_ramsize = 0x800; m_z_rejection = -1; m_gfx = machine().gfx[m_gfx_num]; m_ram = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2); m_buffer = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2); save_pointer(NAME(m_ram), m_ramsize / 2); save_pointer(NAME(m_buffer), m_ramsize / 2); save_item(NAME(m_rombank)); save_item(NAME(m_z_rejection)); save_item(NAME(m_regs)); }
void k052109_device::device_start() { UINT32 total; static const gfx_layout charlayout = { 8,8, 0, 4, { 24, 16, 8, 0 }, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, 32*8 }; static const gfx_layout charlayout_gradius3 = { 8,8, 0, 4, { 0, 1, 2, 3 }, { XOR(0)*4, XOR(1)*4, XOR(2)*4, XOR(3)*4, XOR(4)*4, XOR(5)*4, XOR(6)*4, XOR(7)*4 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, 32*8 }; /* decode the graphics */ switch (m_plane_order) { case NORMAL_PLANE_ORDER: total = machine().root_device().memregion(m_gfx_memory_region)->bytes() / 32; konami_decode_gfx(machine(), m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout, 4); break; case GRADIUS3_PLANE_ORDER: total = 0x1000; konami_decode_gfx(machine(), m_gfx_num, machine().root_device().memregion(m_gfx_memory_region)->base(), total, &charlayout_gradius3, 4); break; default: fatalerror("Unsupported plane_order\n"); } /* deinterleave the graphics, if needed */ konami_deinterleave_gfx(machine(), m_gfx_memory_region, m_deinterleave); m_tilemap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_ram = auto_alloc_array_clear(machine(), UINT8, 0x6000); m_colorram_F = &m_ram[0x0000]; m_colorram_A = &m_ram[0x0800]; m_colorram_B = &m_ram[0x1000]; m_videoram_F = &m_ram[0x2000]; m_videoram_A = &m_ram[0x2800]; m_videoram_B = &m_ram[0x3000]; m_videoram2_F = &m_ram[0x4000]; m_videoram2_A = &m_ram[0x4800]; m_videoram2_B = &m_ram[0x5000]; m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); m_tilemap[2]->set_transparent_pen(0); save_pointer(NAME(m_ram), 0x6000); save_item(NAME(m_rmrd_line)); save_item(NAME(m_romsubbank)); save_item(NAME(m_scrollctrl)); save_item(NAME(m_irq_enabled)); save_item(NAME(m_charrombank)); save_item(NAME(m_charrombank_2)); save_item(NAME(m_dx)); save_item(NAME(m_dy)); save_item(NAME(m_has_extra_video_ram)); machine().save().register_postload(save_prepost_delegate(FUNC(k052109_device::tileflip_reset), this)); }