trunk/src/mame/drivers/koftball.c
| r30914 | r30915 | |
| 32 | 32 | #include "cpu/m68000/m68000.h" |
| 33 | 33 | #include "sound/okim6295.h" |
| 34 | 34 | #include "sound/2413intf.h" |
| 35 | #include "video/ramdac.h" |
| 35 | 36 | |
| 36 | 37 | |
| 37 | 38 | class koftball_state : public driver_device |
| r30914 | r30915 | |
| 43 | 44 | m_main_ram(*this, "main_ram"), |
| 44 | 45 | m_bmc_1_videoram(*this, "bmc_1_videoram"), |
| 45 | 46 | m_bmc_2_videoram(*this, "bmc_2_videoram"), |
| 46 | | m_colorram(*this, "colorram", 16), |
| 47 | 47 | m_gfxdecode(*this, "gfxdecode"), |
| 48 | 48 | m_palette(*this, "palette") { } |
| 49 | 49 | |
| r30914 | r30915 | |
| 51 | 51 | required_shared_ptr<UINT16> m_main_ram; |
| 52 | 52 | required_shared_ptr<UINT16> m_bmc_1_videoram; |
| 53 | 53 | required_shared_ptr<UINT16> m_bmc_2_videoram; |
| 54 | | required_shared_ptr<UINT8> m_colorram; |
| 55 | 54 | required_device<gfxdecode_device> m_gfxdecode; |
| 56 | 55 | required_device<palette_device> m_palette; |
| 57 | 56 | tilemap_t *m_tilemap_1; |
| r30914 | r30915 | |
| 59 | 58 | int m_clr_offset; |
| 60 | 59 | UINT16 m_prot_data; |
| 61 | 60 | |
| 62 | | DECLARE_WRITE16_MEMBER(bmc_RAMDAC_offset_w); |
| 63 | | DECLARE_WRITE16_MEMBER(bmc_RAMDAC_color_w); |
| 64 | | DECLARE_READ16_MEMBER(bmc_RAMDAC_color_r); |
| 65 | 61 | DECLARE_READ16_MEMBER(random_number_r); |
| 66 | 62 | DECLARE_READ16_MEMBER(prot_r); |
| 67 | 63 | DECLARE_WRITE16_MEMBER(prot_w); |
| r30914 | r30915 | |
| 109 | 105 | return 0; |
| 110 | 106 | } |
| 111 | 107 | |
| 112 | | WRITE16_MEMBER(koftball_state::bmc_RAMDAC_offset_w) |
| 113 | | { |
| 114 | | m_clr_offset=data*3; |
| 115 | | } |
| 116 | | |
| 117 | | WRITE16_MEMBER(koftball_state::bmc_RAMDAC_color_w) |
| 118 | | { |
| 119 | | m_colorram[m_clr_offset]=data; |
| 120 | | m_palette->set_pen_color(m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2])); |
| 121 | | m_clr_offset=(m_clr_offset+1)%768; |
| 122 | | } |
| 123 | | |
| 124 | | READ16_MEMBER(koftball_state::bmc_RAMDAC_color_r) |
| 125 | | { |
| 126 | | return m_colorram[m_clr_offset]; |
| 127 | | } |
| 128 | | |
| 129 | 108 | READ16_MEMBER(koftball_state::random_number_r) |
| 130 | 109 | { |
| 131 | 110 | return machine().rand(); |
| r30914 | r30915 | |
| 178 | 157 | AM_RANGE(0x2d8000, 0x2d8001) AM_READ(random_number_r) |
| 179 | 158 | AM_RANGE(0x2da000, 0x2da003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) |
| 180 | 159 | |
| 181 | | AM_RANGE(0x2db000, 0x2db001) AM_WRITE(bmc_RAMDAC_offset_w) AM_SHARE("colorram") |
| 182 | | AM_RANGE(0x2db002, 0x2db003) AM_READWRITE(bmc_RAMDAC_color_r, bmc_RAMDAC_color_w) |
| 183 | | AM_RANGE(0x2db004, 0x2db005) AM_WRITENOP |
| 160 | AM_RANGE(0x2db000, 0x2db001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) |
| 161 | AM_RANGE(0x2db002, 0x2db003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) |
| 162 | AM_RANGE(0x2db004, 0x2db005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) |
| 163 | |
| 184 | 164 | AM_RANGE(0x2dc000, 0x2dc001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) |
| 185 | 165 | AM_RANGE(0x2f0000, 0x2f0003) AM_READ_PORT("INPUTS") |
| 186 | 166 | AM_RANGE(0x300000, 0x300001) AM_WRITENOP |
| r30914 | r30915 | |
| 189 | 169 | AM_RANGE(0x360000, 0x360001) AM_WRITE(prot_w) |
| 190 | 170 | ADDRESS_MAP_END |
| 191 | 171 | |
| 172 | static ADDRESS_MAP_START( ramdac_map, AS_0, 8, koftball_state ) |
| 173 | AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) |
| 174 | ADDRESS_MAP_END |
| 192 | 175 | |
| 193 | 176 | static INPUT_PORTS_START( koftball ) |
| 194 | 177 | PORT_START("INPUTS") |
| r30914 | r30915 | |
| 256 | 239 | MCFG_SCREEN_PALETTE("palette") |
| 257 | 240 | |
| 258 | 241 | MCFG_PALETTE_ADD("palette", 256) |
| 242 | MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") |
| 259 | 243 | |
| 260 | 244 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", koftball) |
| 261 | 245 | |