summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/spg110.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/spg110.h')
-rw-r--r--src/devices/machine/spg110.h156
1 files changed, 153 insertions, 3 deletions
diff --git a/src/devices/machine/spg110.h b/src/devices/machine/spg110.h
index 0726bbf73ae..763b363813d 100644
--- a/src/devices/machine/spg110.h
+++ b/src/devices/machine/spg110.h
@@ -8,8 +8,11 @@
//#include "spg2xx.h"
#include "cpu/unsp/unsp.h"
+#include "emupal.h"
+
+
+class spg110_device : public device_t, public device_memory_interface
-class spg110_device : public device_t
{
public:
spg110_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -23,7 +26,9 @@ public:
}
void map(address_map &map);
+ void map_video(address_map &map);
+ double hue2rgb(double p, double q, double t);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(vblank);
@@ -31,15 +36,160 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+ virtual space_config_vector memory_space_config() const override;
+
+ address_space_config m_space_config;
+
private:
required_device<unsp_device> m_cpu;
+ required_device<palette_device> m_palette;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_shared_ptr<uint16_t> m_bg_videoram;
+ required_shared_ptr<uint16_t> m_fg_videoram;
+ required_shared_ptr<uint16_t> m_bg_attrram;
+ required_shared_ptr<uint16_t> m_fg_attrram;
+ required_shared_ptr<uint16_t> m_palram;
+
+ tilemap_t *m_bg_tilemap;
+ tilemap_t *m_fg_tilemap;
+
//TIMER_CALLBACK_MEMBER(test_timer);
//emu_timer *m_test_timer;
+
+ DECLARE_WRITE16_MEMBER(bg_videoram_w);
+ DECLARE_WRITE16_MEMBER(bg_attrram_w);
+ TILE_GET_INFO_MEMBER(get_bg_tile_info);
+
+ DECLARE_WRITE16_MEMBER(fg_videoram_w);
+ DECLARE_WRITE16_MEMBER(fg_attrram_w);
+ TILE_GET_INFO_MEMBER(get_fg_tile_info);
+
+
+ DECLARE_READ16_MEMBER(spg110_2013_r);
+ DECLARE_READ16_MEMBER(spg110_2019_r);
+
+ DECLARE_WRITE16_MEMBER(spg110_bg_scrollx_w);
+ DECLARE_WRITE16_MEMBER(spg110_bg_scrolly_w);
+ DECLARE_WRITE16_MEMBER(spg110_2012_w);
+ DECLARE_WRITE16_MEMBER(spg110_2013_w);
+ DECLARE_WRITE16_MEMBER(spg110_2014_w);
+ DECLARE_WRITE16_MEMBER(spg110_2015_w);
+ DECLARE_WRITE16_MEMBER(spg110_2016_w);
+ DECLARE_WRITE16_MEMBER(spg110_2017_w);
+ DECLARE_WRITE16_MEMBER(spg110_2018_w);
+ DECLARE_WRITE16_MEMBER(spg110_2019_w);
+ DECLARE_WRITE16_MEMBER(spg110_201a_w);
+ DECLARE_WRITE16_MEMBER(spg110_201b_w);
+ DECLARE_WRITE16_MEMBER(spg110_201c_w);
+ DECLARE_WRITE16_MEMBER(spg110_2020_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_2028_w);
+ DECLARE_WRITE16_MEMBER(spg110_2029_w);
+
+ DECLARE_READ16_MEMBER(spg110_2028_r);
+ DECLARE_READ16_MEMBER(spg110_2029_r);
+
+ DECLARE_WRITE16_MEMBER(spg110_2031_w);
+ DECLARE_WRITE16_MEMBER(spg110_2032_w);
+ DECLARE_WRITE16_MEMBER(spg110_2033_w);
+ DECLARE_WRITE16_MEMBER(spg110_2034_w);
+ DECLARE_WRITE16_MEMBER(spg110_2035_w);
+ DECLARE_WRITE16_MEMBER(spg110_2036_w);
+ DECLARE_WRITE16_MEMBER(spg110_2037_w);
+ DECLARE_WRITE16_MEMBER(spg110_2039_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_203c_w);
+ DECLARE_WRITE16_MEMBER(spg110_203d_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_2042_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_2045_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_2050_w);
+ DECLARE_WRITE16_MEMBER(spg110_2051_w);
+ DECLARE_WRITE16_MEMBER(spg110_2052_w);
+ DECLARE_WRITE16_MEMBER(spg110_2053_w);
+ DECLARE_WRITE16_MEMBER(spg110_2054_w);
+ DECLARE_WRITE16_MEMBER(spg110_2055_w);
+ DECLARE_WRITE16_MEMBER(spg110_2056_w);
+ DECLARE_WRITE16_MEMBER(spg110_2057_w);
+ DECLARE_WRITE16_MEMBER(spg110_2058_w);
+ DECLARE_WRITE16_MEMBER(spg110_2059_w);
+ DECLARE_WRITE16_MEMBER(spg110_205a_w);
+ DECLARE_WRITE16_MEMBER(spg110_205b_w);
+ DECLARE_WRITE16_MEMBER(spg110_205c_w);
+ DECLARE_WRITE16_MEMBER(spg110_205d_w);
+ DECLARE_WRITE16_MEMBER(spg110_205e_w);
+ DECLARE_WRITE16_MEMBER(spg110_205f_w);
+
+
+ DECLARE_READ16_MEMBER(spg110_2037_r);
+ DECLARE_READ16_MEMBER(spg110_2042_r);
+
+ DECLARE_WRITE16_MEMBER(spg110_2060_w);
+ DECLARE_WRITE16_MEMBER(spg110_2061_w);
+ DECLARE_WRITE16_MEMBER(spg110_2062_w);
+ DECLARE_WRITE16_MEMBER(spg110_2063_w);
+ DECLARE_WRITE16_MEMBER(spg110_2064_w);
+ DECLARE_WRITE16_MEMBER(spg110_2066_w);
+ DECLARE_WRITE16_MEMBER(spg110_2067_w);
+ DECLARE_WRITE16_MEMBER(spg110_2068_w);
+
DECLARE_READ16_MEMBER(spg110_2062_r);
DECLARE_READ16_MEMBER(spg110_2063_r);
- DECLARE_WRITE16_MEMBER(spg110_2063_w);
-};
+ DECLARE_WRITE16_MEMBER(spg110_3200_w);
+ DECLARE_WRITE16_MEMBER(spg110_3201_w);
+ DECLARE_WRITE16_MEMBER(spg110_3203_w);
+ DECLARE_WRITE16_MEMBER(spg110_3204_w);
+ DECLARE_WRITE16_MEMBER(spg110_3206_w);
+ DECLARE_WRITE16_MEMBER(spg110_3208_w);
+ DECLARE_WRITE16_MEMBER(spg110_3209_w);
+
+ DECLARE_READ16_MEMBER(spg110_3201_r);
+
+ DECLARE_WRITE16_MEMBER(spg110_3221_w);
+ DECLARE_WRITE16_MEMBER(spg110_3223_w);
+ DECLARE_WRITE16_MEMBER(spg110_3225_w);
+
+ DECLARE_READ16_MEMBER(spg110_3225_r);
+ DECLARE_READ16_MEMBER(spg110_322c_r);
+
+ READ16_MEMBER(datasegment_r);
+ WRITE16_MEMBER(datasegment_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_3100_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_3101_w);
+ DECLARE_WRITE16_MEMBER(spg110_3102_w);
+ DECLARE_WRITE16_MEMBER(spg110_3104_w);
+ DECLARE_WRITE16_MEMBER(spg110_3105_w);
+ DECLARE_WRITE16_MEMBER(spg110_3106_w);
+ DECLARE_WRITE16_MEMBER(spg110_3107_w);
+ DECLARE_WRITE16_MEMBER(spg110_3108_w);
+ DECLARE_WRITE16_MEMBER(spg110_3109_w);
+
+ DECLARE_WRITE16_MEMBER(spg110_310b_w);
+ DECLARE_WRITE16_MEMBER(spg110_310c_w);
+ DECLARE_WRITE16_MEMBER(spg110_310d_w);
+
+ DECLARE_READ16_MEMBER(spg110_310f_r);
+
+
+ uint16_t m_2068_outer;
+ uint16_t m_2064_outer;
+ uint16_t m_2061_outer;
+ uint16_t m_2067_outer;
+
+ uint16_t m_2060_inner;
+ uint16_t m_2066_inner;
+
+ uint16_t m_bg_scrollx;
+ uint16_t m_bg_scrolly;
+ uint16_t m_2036_scroll;
+};
DECLARE_DEVICE_TYPE(SPG110, spg110_device)