~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/mame/drivers/bmcbowl.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
111
111
{
112
112
public:
113
113
        bmcbowl_state(const machine_config &mconfig, device_type type, const char *tag)
114
 
                : driver_device(mconfig, type, tag) { }
 
114
                : driver_device(mconfig, type, tag) ,
 
115
                m_stats_ram(*this, "stats_ram", 16),
 
116
                m_vid1(*this, "vid1"),
 
117
                m_vid2(*this, "vid2"){ }
115
118
 
116
 
        UINT16 *m_vid1;
117
 
        UINT16 *m_vid2;
 
119
        optional_shared_ptr<UINT8> m_stats_ram;
 
120
        required_shared_ptr<UINT16> m_vid1;
 
121
        required_shared_ptr<UINT16> m_vid2;
118
122
        UINT8 *m_bmc_colorram;
119
 
        UINT8 *m_stats_ram;
120
 
        size_t m_stats_ram_size;
121
123
        int m_clr_offset;
122
124
        int m_bmc_input;
 
125
        DECLARE_READ16_MEMBER(bmc_random_read);
 
126
        DECLARE_READ16_MEMBER(bmc_protection_r);
 
127
        DECLARE_WRITE16_MEMBER(bmc_RAMDAC_offset_w);
 
128
        DECLARE_WRITE16_MEMBER(bmc_RAMDAC_color_w);
 
129
        DECLARE_WRITE16_MEMBER(scroll_w);
123
130
};
124
131
 
125
132
 
181
188
        return 0;
182
189
}
183
190
 
184
 
static READ16_HANDLER( bmc_random_read )
 
191
READ16_MEMBER(bmcbowl_state::bmc_random_read)
185
192
{
186
 
        return space->machine().rand();
 
193
        return machine().rand();
187
194
}
188
195
 
189
 
static READ16_HANDLER( bmc_protection_r )
 
196
READ16_MEMBER(bmcbowl_state::bmc_protection_r)
190
197
{
191
 
        switch(cpu_get_previouspc(&space->device()))
 
198
        switch(cpu_get_previouspc(&space.device()))
192
199
        {
193
200
                case 0xca68:
194
 
                        switch(cpu_get_reg(&space->device(), M68K_D2))
 
201
                        switch(cpu_get_reg(&space.device(), M68K_D2))
195
202
                        {
196
203
                                case 0:                  return 0x37<<8;
197
204
                                case 0x1013: return 0;
199
206
                        }
200
207
                        break;
201
208
        }
202
 
        logerror("Protection read @ %X\n",cpu_get_previouspc(&space->device()));
203
 
        return space->machine().rand();
204
 
}
205
 
 
206
 
static WRITE16_HANDLER( bmc_RAMDAC_offset_w )
207
 
{
208
 
        bmcbowl_state *state = space->machine().driver_data<bmcbowl_state>();
209
 
        state->m_clr_offset=data*3;
210
 
}
211
 
 
212
 
static WRITE16_HANDLER( bmc_RAMDAC_color_w )
213
 
{
214
 
        bmcbowl_state *state = space->machine().driver_data<bmcbowl_state>();
215
 
        state->m_bmc_colorram[state->m_clr_offset]=data;
216
 
        palette_set_color_rgb(space->machine(),state->m_clr_offset/3,pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+1]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+2]));
217
 
        state->m_clr_offset=(state->m_clr_offset+1)%768;
218
 
}
219
 
 
220
 
static WRITE16_HANDLER( scroll_w )
 
209
        logerror("Protection read @ %X\n",cpu_get_previouspc(&space.device()));
 
210
        return machine().rand();
 
211
}
 
212
 
 
213
WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_offset_w)
 
214
{
 
215
        m_clr_offset=data*3;
 
216
}
 
217
 
 
218
WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_color_w)
 
219
{
 
220
        m_bmc_colorram[m_clr_offset]=data;
 
221
        palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_bmc_colorram[(m_clr_offset/3)*3]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+2]));
 
222
        m_clr_offset=(m_clr_offset+1)%768;
 
223
}
 
224
 
 
225
WRITE16_MEMBER(bmcbowl_state::scroll_w)
221
226
{
222
227
        //TODO - scroll
223
228
}
225
230
 
226
231
static READ8_DEVICE_HANDLER(via_b_in)
227
232
{
228
 
        return input_port_read(device->machine(), "IN3");
 
233
        return device->machine().root_device().ioport("IN3")->read();
229
234
}
230
235
 
231
236
 
302
307
        int i;
303
308
 
304
309
        if (read_or_write)
305
 
                file->write(state->m_stats_ram, state->m_stats_ram_size);
 
310
                file->write(state->m_stats_ram, state->m_stats_ram.bytes());
306
311
        else
307
312
 
308
313
#ifdef NVRAM_HACK
309
 
        for (i = 0; i < state->m_stats_ram_size; i++)
 
314
        for (i = 0; i < state->m_stats_ram.bytes(); i++)
310
315
                state->m_stats_ram[i] = 0xff;
311
316
 
312
317
        init_stats(state,bmc_nv1,ARRAY_LENGTH(bmc_nv1),0);
314
319
        init_stats(state,bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2);
315
320
#else
316
321
        if (file)
317
 
                file->read(state->m_stats_ram, state->m_stats_ram_size);
 
322
                file->read(state->m_stats_ram, state->m_stats_ram.bytes());
318
323
        else
319
324
 
320
 
                for (i = 0; i < state->m_stats_ram_size; i++)
 
325
                for (i = 0; i < state->m_stats_ram.bytes(); i++)
321
326
                        state->m_stats_ram[i] = 0xff;
322
327
#endif
323
328
 
324
329
}
325
330
 
326
 
static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16 )
 
331
static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state )
327
332
        AM_RANGE(0x000000, 0x01ffff) AM_ROM
328
333
 
329
334
        AM_RANGE(0x090000, 0x090001) AM_WRITE(bmc_RAMDAC_offset_w)
334
339
        AM_RANGE(0x091000, 0x091001) AM_WRITENOP
335
340
        AM_RANGE(0x091800, 0x091801) AM_WRITE(scroll_w)
336
341
 
337
 
        AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8_MODERN("via6522_0", via6522_device, read, write, 0x00ff)
 
342
        AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8("via6522_0", via6522_device, read, write, 0x00ff)
338
343
 
339
344
        AM_RANGE(0x093000, 0x093003) AM_WRITENOP  // related to music
340
 
        AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("aysnd", ay8910_data_address_w, 0xff00)
341
 
        AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("aysnd", ay8910_r, 0xff00)
 
345
        AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8_LEGACY("aysnd", ay8910_data_address_w, 0xff00)
 
346
        AM_RANGE(0x092802, 0x092803) AM_DEVREAD8_LEGACY("aysnd", ay8910_r, 0xff00)
342
347
        AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0")
343
 
        AM_RANGE(0x095000, 0x095fff) AM_RAM AM_BASE_MEMBER(bmcbowl_state, m_stats_ram) AM_SIZE_MEMBER(bmcbowl_state, m_stats_ram_size) /* 8 bit */
 
348
        AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("stats_ram") /* 8 bit */
344
349
        AM_RANGE(0x097000, 0x097001) AM_READNOP
345
350
        AM_RANGE(0x140000, 0x1bffff) AM_ROM
346
 
        AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_BASE_MEMBER(bmcbowl_state, m_vid1)
 
351
        AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_SHARE("vid1")
347
352
        AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
348
 
        AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_BASE_MEMBER(bmcbowl_state, m_vid2)
 
353
        AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("vid2")
349
354
 
350
 
        AM_RANGE(0x28c000, 0x28c001) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0xff00)
 
355
        AM_RANGE(0x28c000, 0x28c001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
351
356
 
352
357
        /* protection device*/
353
358
        AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP
439
444
        PORT_START("IN3")
440
445
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1)
441
446
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
442
 
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
 
447
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
443
448
 
444
449
INPUT_PORTS_END
445
450
 
448
453
        bmcbowl_state *state = device->machine().driver_data<bmcbowl_state>();
449
454
        switch(state->m_bmc_input)
450
455
        {
451
 
                        case 0x00:      return  input_port_read(device->machine(), "IN1");
452
 
                        case 0x40:      return  input_port_read(device->machine(), "IN2");
 
456
                        case 0x00:      return  state->ioport("IN1")->read();
 
457
                        case 0x40:      return  state->ioport("IN2")->read();
453
458
        }
454
459
        logerror("%s:unknown input - %X\n",device->machine().describe_context(),state->m_bmc_input);
455
460
        return 0xff;