From d6aa62abb9b61af4ebd72a0b53ff1030e98d678f Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 31 Dec 2018 17:41:18 +1100 Subject: [PATCH] restore additional Sega 315-5313 palette entries used by 32X (nw) --- src/devices/video/315_5124.h | 12 +++++++----- src/devices/video/315_5313.cpp | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/devices/video/315_5124.h b/src/devices/video/315_5124.h index 2151f44b336..3ff7b5165a1 100644 --- a/src/devices/video/315_5124.h +++ b/src/devices/video/315_5124.h @@ -52,7 +52,6 @@ public: // construction/destruction sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); void set_is_pal(bool is_pal) { m_is_pal = is_pal; } @@ -85,6 +84,7 @@ protected: static constexpr unsigned SEGA315_5377_CRAM_SIZE = 0x40; /* 32 colors x 2 bytes per color = 64 bytes */ static constexpr unsigned SEGA315_5124_CRAM_SIZE = 0x20; /* 32 colors x 1 bytes per color = 32 bytes */ + sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); // device-level overrides virtual void device_start() override; @@ -202,9 +202,10 @@ class sega315_5246_device : public sega315_5124_device { public: sega315_5246_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega315_5246_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); protected: + sega315_5246_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); + virtual uint16_t name_table_row_mode4(int row) override; virtual uint16_t sprite_attributes_addr_mode4(uint16_t base) override; virtual uint8_t sprite_tile_mask_mode4(uint8_t tile_number) override; @@ -216,11 +217,12 @@ class sega315_5377_device : public sega315_5246_device { public: sega315_5377_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega315_5377_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); virtual void set_sega315_5124_compatibility_mode(bool sega315_5124_compatibility_mode) override; protected: + sega315_5377_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); + virtual void device_reset() override; virtual void device_add_mconfig(machine_config &config) override; @@ -237,11 +239,11 @@ private: class sega315_5313_mode4_device : public sega315_5246_device { public: - sega315_5313_mode4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - sega315_5313_mode4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); void stop_timers(); protected: + sega315_5313_mode4_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing); + virtual void write_memory(uint8_t data) override; virtual void load_vram_addr(uint8_t data) override; virtual void select_sprites(int line) override; diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp index 24c7c9fb3a7..921c7011a29 100644 --- a/src/devices/video/315_5313.cpp +++ b/src/devices/video/315_5313.cpp @@ -225,6 +225,8 @@ void sega315_5313_device::device_add_mconfig(machine_config &config) { sega315_5313_mode4_device::device_add_mconfig(config); + m_palette->set_entries(0x200); // more entries for 32X - not really the cleanest way to do this + SEGAPSG(config, m_snsnd, DERIVED_CLOCK(1, 15)).add_route(ALL_OUTPUTS, *this, 0.5, AUTO_ALLOC_INPUT, 0); }