summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/spg_renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/spg_renderer.h')
-rw-r--r--src/devices/machine/spg_renderer.h33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/devices/machine/spg_renderer.h b/src/devices/machine/spg_renderer.h
index 50ecf6ff11c..f88991a4b50 100644
--- a/src/devices/machine/spg_renderer.h
+++ b/src/devices/machine/spg_renderer.h
@@ -14,8 +14,9 @@ public:
spg_renderer_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
spg_renderer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void draw_sprites(bool read_from_csspace, bool has_extended_sprites, bool alt_extrasprite_hack, uint32_t palbank, bool highres, const rectangle& cliprect, uint32_t* dst, uint32_t scanline, int priority, uint32_t spritegfxdata_addr, address_space& spc, uint16_t* paletteram, uint16_t* spriteram, int sprlimit);
- void draw_page(bool read_from_csspace, bool has_extended_tilemaps, bool use_alt_tile_addressing, uint32_t palbank, const rectangle& cliprect, uint32_t* dst, uint32_t scanline, int priority, uint32_t tilegfxdata_addr, uint16_t* scrollregs, uint16_t* tilemapregs, address_space& spc, uint16_t* paletteram, uint16_t* scrollram, uint32_t which);
+ void draw_sprites(bool read_from_csspace, bool has_extended_sprites, bool alt_extrasprite_hack, uint32_t palbank, bool highres, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t spritegfxdata_addr, address_space& spc, uint16_t* paletteram, uint16_t* spriteram, int sprlimit);
+ void draw_page(bool read_from_csspace, bool has_extended_tilemaps, bool use_alt_tile_addressing, uint32_t palbank, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t tilegfxdata_addr, uint16_t* scrollregs, uint16_t* tilemapregs, address_space& spc, uint16_t* paletteram, uint16_t* scrollram, uint32_t which);
+ void new_line(const rectangle& cliprect);
void apply_saturation_and_fade(bitmap_rgb32& bitmap, const rectangle& cliprect, int scanline);
@@ -23,8 +24,20 @@ public:
void set_video_reg_1d(uint16_t val) { m_video_regs_1d = val; update_vcmp_table(); }
void set_video_reg_1e(uint16_t val) { m_video_regs_1e = val; update_vcmp_table(); }
void set_video_reg_2a(uint16_t val) { m_video_regs_2a = val; }
- void set_video_reg_30(uint16_t val) { m_video_regs_30 = val; }
- void set_video_reg_3c(uint16_t val) { m_video_regs_3c = val; }
+ void set_video_reg_30(uint16_t val)
+ {
+ if (m_video_regs_30 != val)
+ m_brightness_or_saturation_dirty = true;
+
+ m_video_regs_30 = val;
+ }
+ void set_video_reg_3c(uint16_t val)
+ {
+ if (m_video_regs_3c != val)
+ m_brightness_or_saturation_dirty = true;
+
+ m_video_regs_3c = val;
+ }
void set_video_reg_42(uint16_t val) { m_video_regs_42 = val; }
uint16_t get_video_reg_1c(void) { return m_video_regs_1c; }
@@ -60,18 +73,19 @@ protected:
};
template<spg_renderer_device::blend_enable_t Blend, spg_renderer_device::flipx_t FlipX>
- inline void draw_tilestrip(bool read_from_csspace, uint32_t screenwidth, uint32_t drawwidthmask, const rectangle& cliprect, uint32_t* dst, uint32_t tile_h, uint32_t tile_w, uint32_t tilegfxdata_addr, uint32_t tile, uint32_t tile_scanline, int drawx, bool flip_y, uint32_t palette_offset, const uint32_t nc_bpp, const uint32_t bits_per_row, const uint32_t words_per_tile, address_space &spc, uint16_t* palette, uint8_t blendlevel);
+ inline void draw_tilestrip(bool read_from_csspace, uint32_t screenwidth, uint32_t drawwidthmask, const rectangle& cliprect, uint32_t tile_h, uint32_t tile_w, uint32_t tilegfxdata_addr, uint32_t tile, uint32_t tile_scanline, int drawx, bool flip_y, uint32_t palette_offset, const uint32_t nc_bpp, const uint32_t bits_per_row, const uint32_t words_per_tile, address_space &spc, uint16_t* palette, uint8_t blendlevel);
- inline void draw_tilestrip(bool read_from_csspace, uint32_t screenwidth, uint32_t drawwidthmask, spg_renderer_device::blend_enable_t blend, spg_renderer_device::flipx_t flip_x, const rectangle& cliprect, uint32_t* dst, uint32_t tile_h, uint32_t tile_w, uint32_t tilegfxdata_addr, uint32_t tile, uint32_t tile_scanline, int drawx, bool flip_y, uint32_t palette_offset, const uint32_t nc_bpp, const uint32_t bits_per_row, const uint32_t words_per_tile, address_space& spc, uint16_t* paletteram, uint8_t blendlevel);
+ inline void draw_tilestrip(bool read_from_csspace, uint32_t screenwidth, uint32_t drawwidthmask, spg_renderer_device::blend_enable_t blend, spg_renderer_device::flipx_t flip_x, const rectangle& cliprect, uint32_t tile_h, uint32_t tile_w, uint32_t tilegfxdata_addr, uint32_t tile, uint32_t tile_scanline, int drawx, bool flip_y, uint32_t palette_offset, const uint32_t nc_bpp, const uint32_t bits_per_row, const uint32_t words_per_tile, address_space& spc, uint16_t* paletteram, uint8_t blendlevel);
- inline void draw_sprite(bool read_from_csspace, bool has_extended_sprites, bool alt_extrasprite_hack, uint32_t palbank, bool highres, const rectangle& cliprect, uint32_t* dst, uint32_t scanline, int priority, uint32_t spritegfxdata_addr, uint32_t base_addr, address_space& spc, uint16_t* paletteram, uint16_t* spriteram);
+ inline void draw_sprite(bool read_from_csspace, bool has_extended_sprites, bool alt_extrasprite_hack, uint32_t palbank, bool highres, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t spritegfxdata_addr, uint32_t base_addr, address_space& spc, uint16_t* paletteram, uint16_t* spriteram);
- inline void draw_linemap(bool has_extended_tilemaps, const rectangle& cliprect, uint32_t* dst, uint32_t scanline, int priority, uint32_t tilegfxdata_addr, uint16_t* scrollregs, uint16_t* tilemapregs, address_space& spc, uint16_t* paletteram);
+ inline void draw_linemap(bool has_extended_tilemaps, const rectangle& cliprect, uint32_t scanline, int priority, uint32_t tilegfxdata_addr, uint16_t* scrollregs, uint16_t* tilemapregs, address_space& spc, uint16_t* paletteram);
inline uint8_t mix_channel(uint8_t a, uint8_t b, uint8_t alpha);
uint8_t m_rgb5_to_rgb8[32];
uint32_t m_rgb555_to_rgb888[0x8000];
+ uint32_t m_rgb555_to_rgb888_current[0x8000];
private:
@@ -96,6 +110,9 @@ private:
address_space* m_cpuspace;
address_space* m_cs_space;
int m_csbase;
+ bool m_brightness_or_saturation_dirty;
+ void update_palette_lookup(void);
+ uint16_t m_linebuf[640];
};
DECLARE_DEVICE_TYPE(SPG_RENDERER, spg_renderer_device)