mirror of
https://github.com/holub/mame
synced 2025-04-26 18:23:08 +03:00
Merge pull request #5501 from DavidHaywood/170819_3
use ramdac device on policetr
This commit is contained in:
commit
d9d938c88a
@ -333,6 +333,7 @@ public:
|
||||
m_palette(*this, "palette"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_videocpu(*this, "tms"),
|
||||
m_ramdac(*this, "ramdac"),
|
||||
m_vidram(*this, "vidram")
|
||||
{ }
|
||||
|
||||
@ -356,6 +357,7 @@ private:
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<tms34020_device> m_videocpu;
|
||||
required_device<ramdac_device> m_ramdac;
|
||||
|
||||
required_shared_ptr<uint16_t> m_vidram;
|
||||
|
||||
@ -438,9 +440,9 @@ void atronic_state::video_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x01ffffff).ram().share("vidram");
|
||||
|
||||
map(0xa0000010, 0xa000001f).w("ramdac", FUNC(ramdac_device::index_w)).umask16(0x00ff);
|
||||
map(0xa0000020, 0xa000002f).w("ramdac", FUNC(ramdac_device::pal_w)).umask16(0x00ff);
|
||||
map(0xa0000030, 0xa000003f).w("ramdac", FUNC(ramdac_device::mask_w)).umask16(0x00ff);
|
||||
map(0xa0000010, 0xa000001f).w(m_ramdac, FUNC(ramdac_device::index_w)).umask16(0x00ff);
|
||||
map(0xa0000020, 0xa000002f).w(m_ramdac, FUNC(ramdac_device::pal_w)).umask16(0x00ff);
|
||||
map(0xa0000030, 0xa000003f).w(m_ramdac, FUNC(ramdac_device::mask_w)).umask16(0x00ff);
|
||||
|
||||
map(0xfc000000, 0xffffffff).rom().region("user1", 0);
|
||||
}
|
||||
@ -458,7 +460,7 @@ void atronic_state::video_map(address_map &map)
|
||||
|
||||
void atronic_state::ramdac_map(address_map &map)
|
||||
{
|
||||
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w));
|
||||
map(0x000, 0x2ff).rw(m_ramdac, FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w));
|
||||
}
|
||||
|
||||
void atronic_state::atronic(machine_config &config)
|
||||
@ -480,8 +482,8 @@ void atronic_state::atronic(machine_config &config)
|
||||
m_screen->set_screen_update("tms", FUNC(tms34020_device::tms340x0_rgb32));
|
||||
|
||||
PALETTE(config, "palette").set_entries(256);
|
||||
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
|
||||
ramdac.set_addrmap(0, &atronic_state::ramdac_map);
|
||||
RAMDAC(config, m_ramdac, 0, m_palette);
|
||||
m_ramdac->set_addrmap(0, &atronic_state::ramdac_map);
|
||||
|
||||
TMS34020(config, m_videocpu, VIDEO_CLOCK);
|
||||
m_videocpu->set_addrmap(AS_PROGRAM, &atronic_state::video_map);
|
||||
|
@ -235,6 +235,11 @@ WRITE32_MEMBER(policetr_state::speedup_w)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void policetr_state::ramdac_map(address_map &map)
|
||||
{
|
||||
map(0x000, 0x2ff).rw(m_ramdac, FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w));
|
||||
}
|
||||
|
||||
void policetr_state::mem(address_map &map)
|
||||
{
|
||||
map.global_mask(0x3fffffff);
|
||||
@ -246,8 +251,8 @@ void policetr_state::mem(address_map &map)
|
||||
map(0x00600002, 0x00600002).r(FUNC(policetr_state::bsmt2000_data_r));
|
||||
map(0x00700000, 0x00700003).w(FUNC(policetr_state::bsmt2000_reg_w));
|
||||
map(0x00800000, 0x00800003).w(FUNC(policetr_state::bsmt2000_data_w));
|
||||
map(0x00900001, 0x00900001).w(FUNC(policetr_state::palette_offset_w));
|
||||
map(0x00920001, 0x00920001).w(FUNC(policetr_state::palette_data_w));
|
||||
map(0x00900001, 0x00900001).w(m_ramdac, FUNC(ramdac_device::index_w));
|
||||
map(0x00920001, 0x00920001).w(m_ramdac, FUNC(ramdac_device::pal_w));
|
||||
map(0x00a00000, 0x00a00003).w(FUNC(policetr_state::control_w));
|
||||
map(0x00a00000, 0x00a00003).portr("IN0");
|
||||
map(0x00a20000, 0x00a20003).portr("IN1");
|
||||
@ -263,8 +268,8 @@ void sshooter_state::mem(address_map &map)
|
||||
|
||||
map(0x00000000, 0x0001ffff).ram().share(m_rambase);
|
||||
map(0x00200000, 0x00200003).w(FUNC(sshooter_state::bsmt2000_data_w));
|
||||
map(0x00300001, 0x00300001).w(FUNC(sshooter_state::palette_offset_w));
|
||||
map(0x00320001, 0x00320001).w(FUNC(sshooter_state::palette_data_w));
|
||||
map(0x00300001, 0x00300001).w(m_ramdac, FUNC(ramdac_device::index_w));
|
||||
map(0x00320001, 0x00320001).w(m_ramdac, FUNC(ramdac_device::pal_w));
|
||||
map(0x00400000, 0x00400003).r(FUNC(sshooter_state::video_r));
|
||||
map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum
|
||||
map(0x00600002, 0x00600002).r(FUNC(sshooter_state::bsmt2000_data_r));
|
||||
@ -426,6 +431,9 @@ void policetr_state::policetr(machine_config &config)
|
||||
m_screen->screen_vblank().set(FUNC(policetr_state::vblank));
|
||||
|
||||
PALETTE(config, m_palette).set_entries(256);
|
||||
|
||||
RAMDAC(config, m_ramdac, 0, m_palette); // BT481A Palette RAMDAC
|
||||
m_ramdac->set_addrmap(0, &policetr_state::ramdac_map);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, m_lspeaker).front_left();
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "cpu/mips/mips1.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "sound/bsmt2000.h"
|
||||
#include "video/ramdac.h"
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
@ -39,6 +40,7 @@ protected:
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_ramdac(*this, "ramdac"),
|
||||
m_leds(*this, "leds%u", 0U),
|
||||
m_gun_x_io(*this, "GUNX%u", 1U),
|
||||
m_gun_y_io(*this, "GUNY%u", 1U),
|
||||
@ -50,6 +52,8 @@ protected:
|
||||
|
||||
void mem(address_map &map);
|
||||
|
||||
void ramdac_map(address_map& map);
|
||||
|
||||
DECLARE_WRITE32_MEMBER(control_w);
|
||||
DECLARE_WRITE32_MEMBER(speedup_w);
|
||||
|
||||
@ -59,8 +63,6 @@ protected:
|
||||
|
||||
DECLARE_WRITE32_MEMBER(video_w);
|
||||
DECLARE_READ32_MEMBER(video_r);
|
||||
DECLARE_WRITE8_MEMBER(palette_offset_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_data_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(vblank);
|
||||
void render_display_list(offs_t offset);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
@ -75,6 +77,7 @@ protected:
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<ramdac_device> m_ramdac;
|
||||
|
||||
enum
|
||||
{
|
||||
@ -97,9 +100,6 @@ protected:
|
||||
uint32_t m_loop_count;
|
||||
offs_t m_speedup_pc;
|
||||
offs_t m_speedup_addr;
|
||||
uint32_t m_palette_offset;
|
||||
uint8_t m_palette_index;
|
||||
uint8_t m_palette_data[3];
|
||||
rectangle m_render_clip;
|
||||
std::unique_ptr<bitmap_ind8> m_dstbitmap;
|
||||
uint16_t m_src_xoffs;
|
||||
|
@ -25,9 +25,6 @@ void policetr_state::video_start()
|
||||
/* the destination bitmap is not directly accessible to the CPU */
|
||||
m_dstbitmap = std::make_unique<bitmap_ind8>(+DSTBITMAP_WIDTH, +DSTBITMAP_HEIGHT);
|
||||
|
||||
save_item(NAME(m_palette_offset));
|
||||
save_item(NAME(m_palette_index));
|
||||
save_item(NAME(m_palette_data));
|
||||
save_item(NAME(m_src_xoffs));
|
||||
save_item(NAME(m_src_yoffs));
|
||||
save_item(NAME(m_dst_xoffs));
|
||||
@ -300,34 +297,6 @@ READ32_MEMBER(policetr_state::video_r)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Palette access
|
||||
*
|
||||
*************************************/
|
||||
|
||||
WRITE8_MEMBER(policetr_state::palette_offset_w)
|
||||
{
|
||||
m_palette_offset = data;
|
||||
m_palette_index = 0;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(policetr_state::palette_data_w)
|
||||
{
|
||||
m_palette_data[m_palette_index] = data;
|
||||
if (++m_palette_index == 3)
|
||||
{
|
||||
m_palette->set_pen_color(m_palette_offset, rgb_t(m_palette_data[0], m_palette_data[1], m_palette_data[2]));
|
||||
m_palette_index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Main refresh
|
||||
|
Loading…
Reference in New Issue
Block a user