89
89
calorie_state(const machine_config &mconfig, device_type type, const char *tag)
90
: driver_device(mconfig, type, tag) { }
90
: driver_device(mconfig, type, tag) ,
91
m_fg_ram(*this, "fg_ram"),
92
m_sprites(*this, "sprites"){ }
92
94
/* memory pointers */
95
required_shared_ptr<UINT8> m_fg_ram;
96
required_shared_ptr<UINT8> m_sprites;
95
97
// UINT8 * m_paletteram; // currently this uses generic palette handling
97
99
/* video-related */
98
100
tilemap_t *m_bg_tilemap;
99
101
tilemap_t *m_fg_tilemap;
103
DECLARE_WRITE8_MEMBER(fg_ram_w);
104
DECLARE_WRITE8_MEMBER(bg_bank_w);
105
DECLARE_WRITE8_MEMBER(calorie_flipscreen_w);
106
DECLARE_READ8_MEMBER(calorie_soundlatch_r);
107
DECLARE_WRITE8_MEMBER(bogus_w);
199
206
*************************************/
201
static WRITE8_HANDLER( fg_ram_w )
203
calorie_state *state = space->machine().driver_data<calorie_state>();
204
state->m_fg_ram[offset] = data;
205
state->m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
208
static WRITE8_HANDLER( bg_bank_w )
210
calorie_state *state = space->machine().driver_data<calorie_state>();
211
if((state->m_bg_bank & ~0x10) != (data & ~0x10))
212
state->m_bg_tilemap->mark_all_dirty();
214
state->m_bg_bank = data;
217
static WRITE8_HANDLER( calorie_flipscreen_w )
219
flip_screen_set(space->machine(), data & 1);
222
static READ8_HANDLER( calorie_soundlatch_r )
224
UINT8 latch = soundlatch_r(space, 0);
225
soundlatch_clear_w(space, 0, 0);
208
WRITE8_MEMBER(calorie_state::fg_ram_w)
210
m_fg_ram[offset] = data;
211
m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
214
WRITE8_MEMBER(calorie_state::bg_bank_w)
216
if((m_bg_bank & ~0x10) != (data & ~0x10))
217
m_bg_tilemap->mark_all_dirty();
222
WRITE8_MEMBER(calorie_state::calorie_flipscreen_w)
224
flip_screen_set(data & 1);
227
READ8_MEMBER(calorie_state::calorie_soundlatch_r)
229
UINT8 latch = soundlatch_byte_r(space, 0);
230
soundlatch_clear_byte_w(space, 0, 0);
229
static WRITE8_HANDLER( bogus_w )
234
WRITE8_MEMBER(calorie_state::bogus_w)
231
236
popmessage("written to 3rd sound chip: data = %02X port = %02X", data, offset);
238
243
*************************************/
240
static ADDRESS_MAP_START( calorie_map, AS_PROGRAM, 8 )
245
static ADDRESS_MAP_START( calorie_map, AS_PROGRAM, 8, calorie_state )
241
246
AM_RANGE(0x0000, 0x7fff) AM_ROM
242
247
AM_RANGE(0x8000, 0xbfff) AM_ROM
243
248
AM_RANGE(0xc000, 0xcfff) AM_RAM
244
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_BASE_MEMBER(calorie_state, m_fg_ram)
245
AM_RANGE(0xd800, 0xdbff) AM_RAM AM_BASE_MEMBER(calorie_state, m_sprites)
246
AM_RANGE(0xdc00, 0xdcff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram)
249
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram")
250
AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("sprites")
251
AM_RANGE(0xdc00, 0xdcff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_byte_le_w) AM_SHARE("paletteram")
247
252
AM_RANGE(0xde00, 0xde00) AM_WRITE(bg_bank_w)
248
253
AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1")
249
254
AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P2")
250
255
AM_RANGE(0xf002, 0xf002) AM_READ_PORT("SYSTEM")
251
256
AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW1") AM_WRITE(calorie_flipscreen_w)
252
257
AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW2")
253
AM_RANGE(0xf800, 0xf800) AM_WRITE(soundlatch_w)
258
AM_RANGE(0xf800, 0xf800) AM_WRITE(soundlatch_byte_w)
257
static ADDRESS_MAP_START( calorie_sound_map, AS_PROGRAM, 8 )
262
static ADDRESS_MAP_START( calorie_sound_map, AS_PROGRAM, 8, calorie_state )
258
263
AM_RANGE(0x0000, 0x3fff) AM_ROM
259
264
AM_RANGE(0x8000, 0x87ff) AM_RAM
260
265
AM_RANGE(0xc000, 0xc000) AM_READ(calorie_soundlatch_r)
263
static ADDRESS_MAP_START( calorie_sound_io_map, AS_IO, 8 )
268
static ADDRESS_MAP_START( calorie_sound_io_map, AS_IO, 8, calorie_state )
264
269
ADDRESS_MAP_GLOBAL_MASK(0xff)
265
AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_address_data_w)
266
AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_r)
267
AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay2", ay8910_address_data_w)
268
AM_RANGE(0x11, 0x11) AM_DEVREAD("ay2", ay8910_r)
270
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("ay1", ay8910_address_data_w)
271
AM_RANGE(0x01, 0x01) AM_DEVREAD_LEGACY("ay1", ay8910_r)
272
AM_RANGE(0x10, 0x11) AM_DEVWRITE_LEGACY("ay2", ay8910_address_data_w)
273
AM_RANGE(0x11, 0x11) AM_DEVREAD_LEGACY("ay2", ay8910_r)
270
275
AM_RANGE(0x00, 0xff) AM_WRITE(bogus_w)