branches/kale/src/mess/drivers/c65.c
| r243080 | r243081 | |
| 25 | 25 | c65_state(const machine_config &mconfig, device_type type, const char *tag) |
| 26 | 26 | : driver_device(mconfig, type, tag), |
| 27 | 27 | m_maincpu(*this, "maincpu"), |
| 28 | | m_screen(*this, "screen") |
| 28 | m_screen(*this, "screen"), |
| 29 | m_palette(*this, "palette"), |
| 30 | m_palred(*this, "redpal"), |
| 31 | m_palgreen(*this, "greenpal"), |
| 32 | m_palblue(*this, "bluepal") |
| 33 | |
| 29 | 34 | { } |
| 30 | 35 | |
| 31 | 36 | // devices |
| 32 | 37 | required_device<cpu_device> m_maincpu; |
| 33 | 38 | required_device<screen_device> m_screen; |
| 39 | required_device<palette_device> m_palette; |
| 40 | required_shared_ptr<UINT8> m_palred; |
| 41 | required_shared_ptr<UINT8> m_palgreen; |
| 42 | required_shared_ptr<UINT8> m_palblue; |
| 43 | |
| 34 | 44 | DECLARE_READ8_MEMBER(vic4567_dummy_r); |
| 35 | 45 | DECLARE_WRITE8_MEMBER(vic4567_dummy_w); |
| 36 | | |
| 46 | DECLARE_WRITE8_MEMBER(PalRed_w); |
| 47 | DECLARE_WRITE8_MEMBER(PalGreen_w); |
| 48 | DECLARE_WRITE8_MEMBER(PalBlue_w); |
| 49 | |
| 37 | 50 | // screen updates |
| 38 | 51 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 39 | 52 | DECLARE_PALETTE_INIT(c65); |
| r243080 | r243081 | |
| 45 | 58 | virtual void machine_reset(); |
| 46 | 59 | |
| 47 | 60 | virtual void video_start(); |
| 61 | private: |
| 62 | void PalEntryFlush(UINT8 offset); |
| 48 | 63 | }; |
| 49 | 64 | |
| 50 | 65 | void c65_state::video_start() |
| r243080 | r243081 | |
| 89 | 104 | |
| 90 | 105 | } |
| 91 | 106 | |
| 107 | void c65_state::PalEntryFlush(UINT8 offset) |
| 108 | { |
| 109 | m_palette->set_pen_color(offset, pal4bit(m_palred[offset]), pal4bit(m_palgreen[offset]), pal4bit(m_palblue[offset])); |
| 110 | } |
| 111 | |
| 112 | WRITE8_MEMBER(c65_state::PalRed_w) |
| 113 | { |
| 114 | m_palred[offset] = data; |
| 115 | PalEntryFlush(offset); |
| 116 | } |
| 117 | |
| 118 | WRITE8_MEMBER(c65_state::PalGreen_w) |
| 119 | { |
| 120 | m_palblue[offset] = data; |
| 121 | PalEntryFlush(offset); |
| 122 | } |
| 123 | |
| 124 | WRITE8_MEMBER(c65_state::PalBlue_w) |
| 125 | { |
| 126 | m_palgreen[offset] = data; |
| 127 | PalEntryFlush(offset); |
| 128 | } |
| 129 | |
| 130 | |
| 92 | 131 | static ADDRESS_MAP_START( c65_map, AS_PROGRAM, 8, c65_state ) |
| 93 | 132 | AM_RANGE(0x00000, 0x01fff) AM_RAM // TODO: bank |
| 94 | 133 | AM_RANGE(0x0c800, 0x0cfff) AM_ROM AM_REGION("maincpu", 0xc800) |
| 95 | | AM_RANGE(0x0d000, 0x0d07f) AM_READWRITE(vic4567_dummy_r,vic4567_dummy_w) |
| 96 | | // 0x0d000, 0x0d07f VIC-4567 |
| 134 | AM_RANGE(0x0d000, 0x0d07f) AM_READWRITE(vic4567_dummy_r,vic4567_dummy_w) // 0x0d000, 0x0d07f VIC-4567 |
| 97 | 135 | // 0x0d080, 0x0d09f FDC |
| 98 | 136 | // 0x0d0a0, 0x0d0ff Ram Expansion Control (REC) |
| 99 | | // 0x0d100, 0x0d1ff Red Palette |
| 100 | | // 0x0d200, 0x0d2ff Green Palette |
| 101 | | // 0x0d300, 0x0d3ff Blue Palette |
| 137 | AM_RANGE(0x0d100, 0x0d1ff) AM_RAM_WRITE(PalRed_w) AM_SHARE("redpal")// 0x0d100, 0x0d1ff Red Palette |
| 138 | AM_RANGE(0x0d200, 0x0d2ff) AM_RAM_WRITE(PalGreen_w) AM_SHARE("greenpal") // 0x0d200, 0x0d2ff Green Palette |
| 139 | AM_RANGE(0x0d300, 0x0d3ff) AM_RAM_WRITE(PalBlue_w) AM_SHARE("bluepal") // 0x0d300, 0x0d3ff Blue Palette |
| 102 | 140 | // 0x0d400, 0x0d4*f Right SID |
| 103 | 141 | // 0x0d440, 0x0d4*f Left SID |
| 104 | 142 | // 0x0d600, 0x0d6** UART |
| r243080 | r243081 | |
| 107 | 145 | // 0x0dc00, 0x0dc** CIA-1 |
| 108 | 146 | // 0x0dd00, 0x0dd** CIA-2 |
| 109 | 147 | // 0x0de00, 0x0de** Ext I/O Select 1 |
| 110 | | // 0x0df00, 0x0df** Ext I/O Select 2 |
| 148 | AM_RANGE(0x0df00, 0x0dfff) AM_RAM // 0x0df00, 0x0df** Ext I/O Select 2 (RAM window?) |
| 111 | 149 | AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("maincpu",0) |
| 112 | 150 | ADDRESS_MAP_END |
| 113 | 151 | |
| r243080 | r243081 | |
| 181 | 219 | |
| 182 | 220 | PALETTE_INIT_MEMBER(c65_state, c65) |
| 183 | 221 | { |
| 222 | // TODO: initial state? |
| 184 | 223 | } |
| 185 | 224 | |
| 186 | 225 | static MACHINE_CONFIG_START( c65, c65_state ) |