mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +03:00
further cleanup + final untangling from the old code:
optimized sprites data now lives only in the sprite device. got rid of neogeo_helper as a result. nw.
This commit is contained in:
parent
8e58d4099c
commit
c506d36a8d
@ -1895,8 +1895,6 @@ if (BUSES["NEOGEO"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/neogeo/slot.h",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/carts.cpp",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/carts.h",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/neogeo_helper.cpp",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/neogeo_helper.h",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/rom.cpp",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/rom.h",
|
||||
MAME_DIR .. "src/devices/bus/neogeo/fatfury2.cpp",
|
||||
|
@ -1,66 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:S. Smith,David Haywood
|
||||
|
||||
#include "emu.h"
|
||||
#include "neogeo_helper.h"
|
||||
|
||||
static UINT32 get_region_mask(UINT8* rgn, UINT32 rgn_size)
|
||||
{
|
||||
UINT32 mask;
|
||||
UINT32 len;
|
||||
UINT32 bit;
|
||||
|
||||
mask = 0xffffffff;
|
||||
|
||||
len = rgn_size;
|
||||
|
||||
for (bit = 0x80000000; bit != 0; bit >>= 1)
|
||||
{
|
||||
if ((len * 2 - 1) & bit)
|
||||
break;
|
||||
|
||||
mask >>= 1;
|
||||
}
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
UINT32 neogeohelper_optimize_sprite_data(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size)
|
||||
{
|
||||
/* convert the sprite graphics data into a format that
|
||||
allows faster blitting */
|
||||
UINT8 *src;
|
||||
UINT8 *dest;
|
||||
|
||||
UINT32 mask = get_region_mask(region_sprites, region_sprites_size);
|
||||
|
||||
spritegfx.resize(mask + 1);
|
||||
UINT32 spritegfx_address_mask = mask;
|
||||
|
||||
src = region_sprites;
|
||||
dest = &spritegfx[0];
|
||||
|
||||
for (unsigned i = 0; i < region_sprites_size; i += 0x80, src += 0x80)
|
||||
{
|
||||
for (unsigned y = 0; y < 0x10; y++)
|
||||
{
|
||||
for (unsigned x = 0; x < 8; x++)
|
||||
{
|
||||
*(dest++) = (((src[0x43 | (y << 2)] >> x) & 0x01) << 3) |
|
||||
(((src[0x41 | (y << 2)] >> x) & 0x01) << 2) |
|
||||
(((src[0x42 | (y << 2)] >> x) & 0x01) << 1) |
|
||||
(((src[0x40 | (y << 2)] >> x) & 0x01) << 0);
|
||||
}
|
||||
|
||||
for (unsigned x = 0; x < 8; x++)
|
||||
{
|
||||
*(dest++) = (((src[0x03 | (y << 2)] >> x) & 0x01) << 3) |
|
||||
(((src[0x01 | (y << 2)] >> x) & 0x01) << 2) |
|
||||
(((src[0x02 | (y << 2)] >> x) & 0x01) << 1) |
|
||||
(((src[0x00 | (y << 2)] >> x) & 0x01) << 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return spritegfx_address_mask;
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:S. Smith,David Haywood
|
||||
|
||||
extern UINT32 neogeohelper_optimize_sprite_data(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size);
|
@ -21,7 +21,6 @@ const device_type NEOGEO_CART_SLOT = &device_creator<neogeo_cart_slot_device>;
|
||||
|
||||
device_neogeo_cart_interface::device_neogeo_cart_interface(const machine_config &mconfig, device_t &device)
|
||||
: device_slot_card_interface(mconfig, device),
|
||||
m_sprite_gfx_address_mask(0),
|
||||
m_region_rom(*this, "^maincpu"),
|
||||
m_region_fixed(*this, "^fixed"),
|
||||
m_region_audio(*this, "^audiocpu"),
|
||||
@ -263,9 +262,6 @@ bool neogeo_cart_slot_device::call_load()
|
||||
m_cart->get_audio_base(), m_cart->get_audio_size(),
|
||||
m_cart->get_audiocrypt_base(), m_cart->get_audiocrypt_size());
|
||||
|
||||
// create optimized sprite cache [NOT GOOD FOR NOSLOT!!!!]
|
||||
m_cart->m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(m_cart->get_sprites_optimized_arr(), m_cart->get_sprites_base(), m_cart->get_sprites_size());
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@
|
||||
#define __NEOGEO_SLOT_H
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/neogeo/neogeo_helper.h"
|
||||
|
||||
/* PCB */
|
||||
enum
|
||||
@ -135,14 +134,6 @@ public:
|
||||
UINT8* get_region_sprites_base() { if (m_region_spr.found()) return m_region_spr->base(); return nullptr; }
|
||||
UINT32 get_region_sprites_size() { if (m_region_spr.found()) return m_region_spr->bytes(); return 0; }
|
||||
|
||||
UINT8* get_sprites_optimized() { return &m_sprites_optimized[0]; }
|
||||
std::vector<UINT8>& get_sprites_optimized_arr() { return m_sprites_optimized; }
|
||||
|
||||
UINT32 get_sprites_addrmask() { return m_sprite_gfx_address_mask; }
|
||||
void init_sprites_addrmask(UINT8 *spr_base, UINT32 spr_size) {
|
||||
m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(get_sprites_optimized_arr(), &spr_base[0], spr_size);
|
||||
}
|
||||
|
||||
void ym_alloc(UINT32 size) { m_ym.resize(size); }
|
||||
UINT8* get_ym_base() { return &m_ym[0]; }
|
||||
UINT32 get_ym_size() { return m_ym.size(); }
|
||||
@ -155,15 +146,12 @@ public:
|
||||
UINT8* get_region_ymdelta_base() { if (m_region_ymd.found()) return m_region_ymd->base(); return nullptr; }
|
||||
UINT32 get_region_ymdelta_size() { if (m_region_ymd.found()) return m_region_ymd->bytes(); return 0; }
|
||||
|
||||
UINT32 m_sprite_gfx_address_mask;
|
||||
|
||||
protected:
|
||||
// these are allocated when loading from softlist
|
||||
std::vector<UINT16> m_rom;
|
||||
std::vector<UINT8> m_fixed;
|
||||
std::vector<UINT8> m_audio;
|
||||
std::vector<UINT8> m_sprites;
|
||||
std::vector<UINT8> m_sprites_optimized;
|
||||
std::vector<UINT8> m_ym;
|
||||
std::vector<UINT8> m_ymdelta;
|
||||
std::vector<UINT8> m_audiocrypt;
|
||||
@ -310,25 +298,6 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
UINT8* get_sprites_opt_base() {
|
||||
if (m_cart)
|
||||
return m_cart->get_sprites_optimized();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void init_sprites_addrmask() {
|
||||
if (m_cart)
|
||||
{
|
||||
if (!user_loadable())
|
||||
m_cart->init_sprites_addrmask(m_cart->get_region_sprites_base(), m_cart->get_region_sprites_size());
|
||||
else
|
||||
m_cart->init_sprites_addrmask(m_cart->get_sprites_base(), m_cart->get_sprites_size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
UINT32 get_sprites_addrmask() { if (m_cart) return m_cart->get_sprites_addrmask(); return 0; }
|
||||
int get_fixed_bank_type(void) { if (m_cart) return m_cart->get_fixed_bank_type(); return 0; }
|
||||
UINT32 get_bank_base(UINT16 sel) { if (m_cart) return m_cart->get_bank_base(sel); return 0; }
|
||||
UINT32 get_special_bank() { if (m_cart) return m_cart->get_special_bank(); return 0; }
|
||||
|
@ -1142,11 +1142,7 @@ void neogeo_state::init_sprites()
|
||||
{
|
||||
m_sprgen->set_sprite_region(m_slots[m_curr_slot]->get_sprites_base(), m_slots[m_curr_slot]->get_sprites_size());
|
||||
m_sprgen->set_fixed_regions(m_slots[m_curr_slot]->get_fixed_base(), m_slots[m_curr_slot]->get_fixed_size(), m_region_fixedbios);
|
||||
|
||||
// give the sprite chip pointers to the graphics for this cartslot from the slot device
|
||||
if (!m_slots[m_curr_slot]->user_loadable())
|
||||
m_slots[m_curr_slot]->init_sprites_addrmask();
|
||||
m_sprgen->set_optimized_sprite_data(m_slots[m_curr_slot]->get_sprites_opt_base(), m_slots[m_curr_slot]->get_sprites_addrmask());
|
||||
m_sprgen->optimize_sprite_data();
|
||||
m_sprgen->m_fixed_layer_bank_type = m_slots[m_curr_slot]->get_fixed_bank_type();
|
||||
}
|
||||
else
|
||||
|
@ -31,6 +31,13 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_upd4990a(*this, "upd4990a"),
|
||||
m_ym(*this, "ymsnd"),
|
||||
m_sprgen(*this, "spritegen"),
|
||||
m_save_ram(*this, "saveram"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_memcard(*this, "memcard"),
|
||||
m_region_maincpu(*this, "maincpu"),
|
||||
m_region_sprites(*this, "sprites"),
|
||||
m_region_fixed(*this, "fixed"),
|
||||
@ -39,19 +46,12 @@ public:
|
||||
m_region_audiobios(*this, "audiobios"),
|
||||
m_region_audiocpu(*this, "audiocpu"),
|
||||
m_bank_audio_main(*this, "audio_main"),
|
||||
m_upd4990a(*this, "upd4990a"),
|
||||
m_ym(*this, "ymsnd"),
|
||||
m_save_ram(*this, "saveram"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_memcard(*this, "memcard"),
|
||||
m_dsw(*this, "DSW"),
|
||||
m_trackx(*this, "TRACK_X"),
|
||||
m_tracky(*this, "TRACK_Y"),
|
||||
m_edge(*this, "edge"),
|
||||
m_ctrl1(*this, "ctrl1"),
|
||||
m_ctrl2(*this, "ctrl2"),
|
||||
m_sprgen(*this, "spritegen"),
|
||||
m_use_cart_vectors(0),
|
||||
m_use_cart_audio(0),
|
||||
m_slot1(*this, "cslot1"),
|
||||
@ -89,12 +89,6 @@ public:
|
||||
|
||||
UINT32 screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
DECLARE_DRIVER_INIT(mvs);
|
||||
|
||||
// NEW IMPLEMENTATION!!!
|
||||
void set_slot_idx(int slot);
|
||||
void neogeo_postload();
|
||||
|
||||
DECLARE_WRITE8_MEMBER(io_control_w);
|
||||
DECLARE_WRITE8_MEMBER(system_control_w);
|
||||
DECLARE_READ16_MEMBER(banked_vectors_r);
|
||||
@ -111,35 +105,26 @@ public:
|
||||
protected:
|
||||
void common_machine_start();
|
||||
|
||||
void update_interrupts();
|
||||
void create_interrupt_timers();
|
||||
void start_interrupt_timers();
|
||||
void acknowledge_interrupt(UINT16 data);
|
||||
|
||||
void adjust_display_position_interrupt_timer();
|
||||
void set_display_position_interrupt_control(UINT16 data);
|
||||
void set_display_counter_msb(UINT16 data);
|
||||
void set_display_counter_lsb(UINT16 data);
|
||||
void set_video_control(UINT16 data);
|
||||
|
||||
void create_rgb_lookups();
|
||||
void set_pens();
|
||||
void set_screen_shadow(int data);
|
||||
void set_palette_bank(int data);
|
||||
|
||||
void audio_cpu_check_nmi();
|
||||
void set_save_ram_unlock(UINT8 data);
|
||||
void set_outputs();
|
||||
void set_output_latch(UINT8 data);
|
||||
void set_output_data(UINT8 data);
|
||||
|
||||
// device overrides
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
void neogeo_postload();
|
||||
|
||||
// devices
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
// MVS-specific devices
|
||||
optional_device<upd4990a_device> m_upd4990a;
|
||||
optional_device<ym2610_device> m_ym;
|
||||
required_device<neosprite_optimized_device> m_sprgen;
|
||||
optional_shared_ptr<UINT16> m_save_ram;
|
||||
|
||||
required_device<screen_device> m_screen;
|
||||
optional_device<palette_device> m_palette;
|
||||
optional_device<ng_memcard_device> m_memcard;
|
||||
|
||||
// memory
|
||||
optional_memory_region m_region_maincpu;
|
||||
@ -153,31 +138,9 @@ protected:
|
||||
memory_bank *m_bank_audio_cart[4];
|
||||
memory_bank *m_bank_cartridge;
|
||||
|
||||
// MVS-specific devices
|
||||
optional_device<upd4990a_device> m_upd4990a;
|
||||
optional_device<ym2610_device> m_ym;
|
||||
optional_shared_ptr<UINT16> m_save_ram;
|
||||
|
||||
required_device<screen_device> m_screen;
|
||||
optional_device<palette_device> m_palette;
|
||||
optional_device<ng_memcard_device> m_memcard;
|
||||
|
||||
// configuration
|
||||
enum {NEOGEO_MVS, NEOGEO_AES, NEOGEO_CD} m_type;
|
||||
|
||||
// internal state
|
||||
bool m_recurse;
|
||||
bool m_audio_cpu_nmi_enabled;
|
||||
bool m_audio_cpu_nmi_pending;
|
||||
|
||||
// MVS-specific state
|
||||
UINT8 m_save_ram_unlocked;
|
||||
UINT8 m_output_data;
|
||||
UINT8 m_output_latch;
|
||||
UINT8 m_el_value;
|
||||
UINT8 m_led1_value;
|
||||
UINT8 m_led2_value;
|
||||
|
||||
optional_ioport m_dsw;
|
||||
optional_ioport m_trackx;
|
||||
optional_ioport m_tracky;
|
||||
@ -190,31 +153,15 @@ protected:
|
||||
virtual void video_start() override;
|
||||
virtual void video_reset() override;
|
||||
|
||||
emu_timer *m_display_position_interrupt_timer;
|
||||
emu_timer *m_display_position_vblank_timer;
|
||||
emu_timer *m_vblank_interrupt_timer;
|
||||
UINT32 m_display_counter;
|
||||
UINT8 m_vblank_interrupt_pending;
|
||||
UINT8 m_display_position_interrupt_pending;
|
||||
UINT8 m_irq3_pending;
|
||||
UINT8 m_display_position_interrupt_control;
|
||||
const pen_t *m_bg_pen;
|
||||
UINT8 m_vblank_level;
|
||||
UINT8 m_raster_level;
|
||||
|
||||
required_device<neosprite_optimized_device> m_sprgen;
|
||||
UINT16 get_video_control();
|
||||
|
||||
// color/palette related
|
||||
std::vector<UINT16> m_paletteram;
|
||||
UINT8 m_palette_lookup[32][4];
|
||||
const pen_t *m_bg_pen;
|
||||
int m_screen_shadow;
|
||||
int m_palette_bank;
|
||||
|
||||
|
||||
int m_use_cart_vectors;
|
||||
int m_use_cart_audio;
|
||||
|
||||
void set_slot_idx(int slot);
|
||||
|
||||
// cart slots
|
||||
void init_cpu();
|
||||
void init_audio();
|
||||
@ -232,6 +179,58 @@ protected:
|
||||
|
||||
int m_curr_slot;
|
||||
neogeo_cart_slot_device* m_slots[6];
|
||||
|
||||
private:
|
||||
void update_interrupts();
|
||||
void create_interrupt_timers();
|
||||
void start_interrupt_timers();
|
||||
void acknowledge_interrupt(UINT16 data);
|
||||
|
||||
void adjust_display_position_interrupt_timer();
|
||||
void set_display_position_interrupt_control(UINT16 data);
|
||||
void set_display_counter_msb(UINT16 data);
|
||||
void set_display_counter_lsb(UINT16 data);
|
||||
void set_video_control(UINT16 data);
|
||||
|
||||
void create_rgb_lookups();
|
||||
void set_pens();
|
||||
void set_screen_shadow(int data);
|
||||
void set_palette_bank(int data);
|
||||
|
||||
void audio_cpu_check_nmi();
|
||||
void set_save_ram_unlock(UINT8 data);
|
||||
void set_output_latch(UINT8 data);
|
||||
void set_output_data(UINT8 data);
|
||||
|
||||
// internal state
|
||||
bool m_recurse;
|
||||
bool m_audio_cpu_nmi_enabled;
|
||||
bool m_audio_cpu_nmi_pending;
|
||||
|
||||
// MVS-specific state
|
||||
UINT8 m_save_ram_unlocked;
|
||||
UINT8 m_output_data;
|
||||
UINT8 m_output_latch;
|
||||
UINT8 m_el_value;
|
||||
UINT8 m_led1_value;
|
||||
UINT8 m_led2_value;
|
||||
|
||||
emu_timer *m_display_position_interrupt_timer;
|
||||
emu_timer *m_display_position_vblank_timer;
|
||||
emu_timer *m_vblank_interrupt_timer;
|
||||
UINT32 m_display_counter;
|
||||
UINT8 m_vblank_interrupt_pending;
|
||||
UINT8 m_display_position_interrupt_pending;
|
||||
UINT8 m_irq3_pending;
|
||||
UINT8 m_display_position_interrupt_control;
|
||||
|
||||
UINT16 get_video_control();
|
||||
|
||||
// color/palette related
|
||||
std::vector<UINT16> m_paletteram;
|
||||
UINT8 m_palette_lookup[32][4];
|
||||
int m_screen_shadow;
|
||||
int m_palette_bank;
|
||||
};
|
||||
|
||||
|
||||
@ -244,9 +243,7 @@ class aes_state : public neogeo_state
|
||||
{}
|
||||
|
||||
DECLARE_READ16_MEMBER(aes_in2_r);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(aes_jp1);
|
||||
|
||||
DECLARE_MACHINE_START(aes);
|
||||
|
||||
protected:
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "neogeo_spr.h"
|
||||
#include "bus/neogeo/neogeo_helper.h"
|
||||
|
||||
// pure virtual functions
|
||||
//const device_type NEOGEO_SPRITE_BASE = &device_creator<neosprite_base_device>;
|
||||
@ -611,11 +610,6 @@ void neosprite_base_device::optimize_sprite_data()
|
||||
return;
|
||||
}
|
||||
|
||||
void neosprite_base_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mask)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// these are for passing in pointers from the main system
|
||||
void neosprite_base_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size)
|
||||
@ -710,19 +704,52 @@ neosprite_optimized_device::neosprite_optimized_device(const machine_config &mco
|
||||
{
|
||||
}
|
||||
|
||||
UINT32 neosprite_optimized_device::optimize_helper(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size)
|
||||
{
|
||||
// convert the sprite graphics data into a format that allows faster blitting
|
||||
UINT8 *src;
|
||||
UINT8 *dest;
|
||||
|
||||
UINT32 mask = get_region_mask(region_sprites, region_sprites_size);
|
||||
|
||||
spritegfx.resize(mask + 1);
|
||||
UINT32 spritegfx_address_mask = mask;
|
||||
|
||||
src = region_sprites;
|
||||
dest = &spritegfx[0];
|
||||
|
||||
for (unsigned i = 0; i < region_sprites_size; i += 0x80, src += 0x80)
|
||||
{
|
||||
for (unsigned y = 0; y < 0x10; y++)
|
||||
{
|
||||
for (unsigned x = 0; x < 8; x++)
|
||||
{
|
||||
*(dest++) = (((src[0x43 | (y << 2)] >> x) & 0x01) << 3) |
|
||||
(((src[0x41 | (y << 2)] >> x) & 0x01) << 2) |
|
||||
(((src[0x42 | (y << 2)] >> x) & 0x01) << 1) |
|
||||
(((src[0x40 | (y << 2)] >> x) & 0x01) << 0);
|
||||
}
|
||||
|
||||
for (unsigned x = 0; x < 8; x++)
|
||||
{
|
||||
*(dest++) = (((src[0x03 | (y << 2)] >> x) & 0x01) << 3) |
|
||||
(((src[0x01 | (y << 2)] >> x) & 0x01) << 2) |
|
||||
(((src[0x02 | (y << 2)] >> x) & 0x01) << 1) |
|
||||
(((src[0x00 | (y << 2)] >> x) & 0x01) << 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return spritegfx_address_mask;
|
||||
}
|
||||
|
||||
|
||||
void neosprite_optimized_device::optimize_sprite_data()
|
||||
{
|
||||
m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(m_sprite_gfx, m_region_sprites, m_region_sprites_size);
|
||||
m_sprite_gfx_address_mask = optimize_helper(m_sprite_gfx, m_region_sprites, m_region_sprites_size);
|
||||
m_spritegfx8 = &m_sprite_gfx[0];
|
||||
}
|
||||
|
||||
void neosprite_optimized_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mask)
|
||||
{
|
||||
m_spritegfx8 = sprdata;
|
||||
m_sprite_gfx_address_mask = mask;
|
||||
}
|
||||
|
||||
inline void neosprite_optimized_device::draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens)
|
||||
{
|
||||
const UINT8 gfx = m_spritegfx8[romaddr];
|
||||
|
@ -25,7 +25,6 @@ public:
|
||||
// neosprite_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
virtual void optimize_sprite_data();
|
||||
virtual void set_optimized_sprite_data(UINT8* sprdata, UINT32 mask);
|
||||
|
||||
virtual void draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens);
|
||||
void draw_fixed_layer(bitmap_rgb32 &bitmap, int scanline);
|
||||
@ -88,9 +87,6 @@ protected:
|
||||
memory_region* m_region_fixedbios;
|
||||
screen_device* m_screen;
|
||||
const pen_t *m_pens;
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
//extern const device_type NEOGEO_SPRITE_BASE;
|
||||
@ -113,11 +109,12 @@ class neosprite_optimized_device : public neosprite_base_device
|
||||
public:
|
||||
neosprite_optimized_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
virtual void optimize_sprite_data() override;
|
||||
virtual void set_optimized_sprite_data(UINT8* sprdata, UINT32 mask) override;
|
||||
virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) override;
|
||||
std::vector<UINT8> m_sprite_gfx;
|
||||
UINT8* m_spritegfx8;
|
||||
|
||||
private:
|
||||
UINT32 optimize_helper(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size);
|
||||
};
|
||||
|
||||
extern const device_type NEOGEO_SPRITE_OPTIMZIED;
|
||||
|
Loading…
Reference in New Issue
Block a user