misc/policetr: Use BT481 device

This commit is contained in:
Dirk Best 2025-01-11 18:16:16 +01:00
parent ee01ec6aa3
commit bd65f40587
3 changed files with 12 additions and 24 deletions

View File

@ -244,11 +244,6 @@ void policetr_state::speedup_w(offs_t offset, uint32_t data, uint32_t mem_mask)
* *
*************************************/ *************************************/
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) void policetr_state::mem(address_map &map)
{ {
map.global_mask(0x3fffffff); map.global_mask(0x3fffffff);
@ -260,8 +255,9 @@ void policetr_state::mem(address_map &map)
map(0x00600002, 0x00600002).r(FUNC(policetr_state::bsmt2000_data_r)); map(0x00600002, 0x00600002).r(FUNC(policetr_state::bsmt2000_data_r));
map(0x00700000, 0x00700003).w(FUNC(policetr_state::bsmt2000_reg_w)); map(0x00700000, 0x00700003).w(FUNC(policetr_state::bsmt2000_reg_w));
map(0x00800000, 0x00800003).w(FUNC(policetr_state::bsmt2000_data_w)); map(0x00800000, 0x00800003).w(FUNC(policetr_state::bsmt2000_data_w));
map(0x00900001, 0x00900001).w(m_ramdac, FUNC(ramdac_device::index_w)); map(0x00900001, 0x00900001).w(m_ramdac, FUNC(bt481_device::address_w));
map(0x00920001, 0x00920001).w(m_ramdac, FUNC(ramdac_device::pal_w)); map(0x00920001, 0x00920001).w(m_ramdac, FUNC(bt481_device::palette_w));
map(0x00940001, 0x00940001).w(m_ramdac, FUNC(bt481_device::mask_w));
map(0x00a00000, 0x00a00003).w(FUNC(policetr_state::control_w)); map(0x00a00000, 0x00a00003).w(FUNC(policetr_state::control_w));
map(0x00a00000, 0x00a00003).portr("IN0"); map(0x00a00000, 0x00a00003).portr("IN0");
map(0x00a20000, 0x00a20003).portr("IN1"); map(0x00a20000, 0x00a20003).portr("IN1");
@ -277,8 +273,9 @@ void sshooter_state::mem(address_map &map)
map(0x00000000, 0x0001ffff).ram().share(m_rambase); map(0x00000000, 0x0001ffff).ram().share(m_rambase);
map(0x00200000, 0x00200003).w(FUNC(sshooter_state::bsmt2000_data_w)); map(0x00200000, 0x00200003).w(FUNC(sshooter_state::bsmt2000_data_w));
map(0x00300001, 0x00300001).w(m_ramdac, FUNC(ramdac_device::index_w)); map(0x00300001, 0x00300001).w(m_ramdac, FUNC(bt481_device::address_w));
map(0x00320001, 0x00320001).w(m_ramdac, FUNC(ramdac_device::pal_w)); map(0x00320001, 0x00320001).w(m_ramdac, FUNC(bt481_device::palette_w));
map(0x00340001, 0x00340001).w(m_ramdac, FUNC(bt481_device::mask_w));
map(0x00400000, 0x00400003).r(FUNC(sshooter_state::video_r)); map(0x00400000, 0x00400003).r(FUNC(sshooter_state::video_r));
map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum
map(0x00600002, 0x00600002).r(FUNC(sshooter_state::bsmt2000_data_r)); map(0x00600002, 0x00600002).r(FUNC(sshooter_state::bsmt2000_data_r));
@ -452,10 +449,7 @@ void policetr_state::policetr(machine_config &config)
m_screen->set_screen_update(FUNC(policetr_state::screen_update)); m_screen->set_screen_update(FUNC(policetr_state::screen_update));
m_screen->screen_vblank().set(FUNC(policetr_state::vblank)); m_screen->screen_vblank().set(FUNC(policetr_state::vblank));
PALETTE(config, m_palette).set_entries(256); BT481(config, m_ramdac, 0); // Bt481AKPJ110
RAMDAC(config, m_ramdac, 0, m_palette); // BT481A Palette RAMDAC
m_ramdac->set_addrmap(0, &policetr_state::ramdac_map);
/* sound hardware */ /* sound hardware */
SPEAKER(config, m_lspeaker).front_left(); SPEAKER(config, m_lspeaker).front_left();

View File

@ -9,8 +9,7 @@
#include "cpu/mips/mips1.h" #include "cpu/mips/mips1.h"
#include "machine/eepromser.h" #include "machine/eepromser.h"
#include "sound/bsmt2000.h" #include "sound/bsmt2000.h"
#include "video/ramdac.h" #include "video/bt48x.h"
#include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
@ -37,7 +36,6 @@ protected:
m_rspeaker(*this, "rspeaker"), m_rspeaker(*this, "rspeaker"),
m_eeprom(*this, "eeprom"), m_eeprom(*this, "eeprom"),
m_screen(*this, "screen"), m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_ramdac(*this, "ramdac"), m_ramdac(*this, "ramdac"),
m_leds(*this, "leds%u", 0U), m_leds(*this, "leds%u", 0U),
m_gun_x_io(*this, "GUNX%u", 1U), m_gun_x_io(*this, "GUNX%u", 1U),
@ -51,8 +49,6 @@ protected:
void mem(address_map &map) ATTR_COLD; void mem(address_map &map) ATTR_COLD;
void ramdac_map(address_map &map) ATTR_COLD;
void control_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); void control_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
void speedup_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); void speedup_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
@ -75,8 +71,7 @@ protected:
required_device<speaker_device> m_rspeaker; required_device<speaker_device> m_rspeaker;
required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<palette_device> m_palette; required_device<bt481_device> m_ramdac;
required_device<ramdac_device> m_ramdac;
enum enum
{ {

View File

@ -306,16 +306,15 @@ uint32_t policetr_state::video_r()
uint32_t policetr_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) uint32_t policetr_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{ {
const int width = cliprect.width(); const int width = cliprect.width();
rgb_t const *const palette = m_palette->palette()->entry_list_raw();
/* render all the scanlines from the dstbitmap to MAME's bitmap */ /* render all the scanlines from the dstbitmap to MAME's bitmap */
for (int y = cliprect.min_y; y <= cliprect.max_y; y++) for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{ {
uint8_t const *src = &m_dstbitmap->pix(y,cliprect.min_x); uint8_t const *src = &m_dstbitmap->pix(y, cliprect.min_x);
uint32_t *dst = &bitmap.pix(y,cliprect.min_x); uint32_t *dst = &bitmap.pix(y, cliprect.min_x);
//draw_scanline8(bitmap, cliprect.min_x, y, width, src, nullptr); //draw_scanline8(bitmap, cliprect.min_x, y, width, src, nullptr);
for (int x = 0; x < width; x++, dst++, src++) for (int x = 0; x < width; x++, dst++, src++)
*dst = palette[*src]; *dst = m_ramdac->pixel_select(*src);
} }
return 0; return 0;