103
103
jokrwild_state(const machine_config &mconfig, device_type type, const char *tag)
104
: driver_device(mconfig, type, tag) { }
104
: driver_device(mconfig, type, tag) ,
105
m_videoram(*this, "videoram"),
106
m_colorram(*this, "colorram"){ }
108
required_shared_ptr<UINT8> m_videoram;
109
required_shared_ptr<UINT8> m_colorram;
108
110
tilemap_t *m_bg_tilemap;
111
DECLARE_WRITE8_MEMBER(jokrwild_videoram_w);
112
DECLARE_WRITE8_MEMBER(jokrwild_colorram_w);
113
DECLARE_READ8_MEMBER(rng_r);
114
119
*************************/
117
static WRITE8_HANDLER( jokrwild_videoram_w )
122
WRITE8_MEMBER(jokrwild_state::jokrwild_videoram_w)
119
jokrwild_state *state = space->machine().driver_data<jokrwild_state>();
120
state->m_videoram[offset] = data;
121
state->m_bg_tilemap->mark_tile_dirty(offset);
124
m_videoram[offset] = data;
125
m_bg_tilemap->mark_tile_dirty(offset);
125
static WRITE8_HANDLER( jokrwild_colorram_w )
129
WRITE8_MEMBER(jokrwild_state::jokrwild_colorram_w)
127
jokrwild_state *state = space->machine().driver_data<jokrwild_state>();
128
state->m_colorram[offset] = data;
129
state->m_bg_tilemap->mark_tile_dirty(offset);
131
m_colorram[offset] = data;
132
m_bg_tilemap->mark_tile_dirty(offset);
176
179
* Read/Write Handlers *
177
180
*****************************/
179
static READ8_HANDLER( rng_r )
182
READ8_MEMBER(jokrwild_state::rng_r)
181
if(cpu_get_pc(&space->device()) == 0xab32)
184
if(cpu_get_pc(&space.device()) == 0xab32)
182
185
return (offset == 0) ? 0x9e : 0x27;
184
if(cpu_get_pc(&space->device()) == 0xab3a)
187
if(cpu_get_pc(&space.device()) == 0xab3a)
185
188
return (offset == 2) ? 0x49 : 0x92;
187
return space->machine().rand() & 0xff;
190
return machine().rand() & 0xff;
190
193
/*************************
191
194
* Memory Map Information *
192
195
*************************/
194
static ADDRESS_MAP_START( jokrwild_map, AS_PROGRAM, 8 )
195
AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(jokrwild_videoram_w) AM_BASE_MEMBER(jokrwild_state, m_videoram)
197
static ADDRESS_MAP_START( jokrwild_map, AS_PROGRAM, 8, jokrwild_state )
198
AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(jokrwild_videoram_w) AM_SHARE("videoram")
196
199
AM_RANGE(0x0400, 0x07ff) AM_RAM //FIXME: backup RAM
197
AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(jokrwild_colorram_w) AM_BASE_MEMBER(jokrwild_state, m_colorram)
200
AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(jokrwild_colorram_w) AM_SHARE("colorram")
198
201
AM_RANGE(0x2400, 0x27ff) AM_RAM //stack RAM
199
AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE_MODERN("pia0", pia6821_device, read, write)
200
AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE_MODERN("pia1", pia6821_device, read, write) //optical sensor is here
202
AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
203
AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //optical sensor is here
201
204
// AM_RANGE(0x4010, 0x4010) AM_READNOP /* R ???? */
202
AM_RANGE(0x6000, 0x6000) AM_DEVWRITE_MODERN("crtc", mc6845_device, address_w)
203
AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE_MODERN("crtc", mc6845_device, register_r, register_w)
205
AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w)
206
AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
204
207
AM_RANGE(0x6100, 0x6100) AM_READ_PORT("SW1")
205
208
AM_RANGE(0x6200, 0x6203) AM_READ(rng_r)//another PIA?
206
209
AM_RANGE(0x6300, 0x6300) AM_READ_PORT("SW2")