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

« back to all changes in this revision

Viewing changes to src/mame/drivers/missb2.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:
26
26
{
27
27
public:
28
28
        missb2_state(const machine_config &mconfig, device_type type, const char *tag)
29
 
                : bublbobl_state(mconfig, type, tag) { }
 
29
                : bublbobl_state(mconfig, type, tag),
 
30
                  m_bgvram(*this, "bgvram"),
 
31
                  m_bg_paletteram(*this, "bg_paletteram") { }
30
32
 
31
 
        UINT8 *  m_bgvram;
32
 
        UINT8 *  m_bg_paletteram;
 
33
        required_shared_ptr<UINT8> m_bgvram;
 
34
        required_shared_ptr<UINT8> m_bg_paletteram;
 
35
        DECLARE_WRITE8_MEMBER(bg_paletteram_RRRRGGGGBBBBxxxx_be_w);
 
36
        DECLARE_WRITE8_MEMBER(missb2_bg_bank_w);
33
37
};
34
38
 
35
39
 
68
72
 
69
73
        sx = 0;
70
74
 
71
 
        prom = screen.machine().region("proms")->base();
72
 
        for (offs = 0; offs < state->m_objectram_size; offs += 4)
 
75
        prom = screen.machine().root_device().memregion("proms")->base();
 
76
        for (offs = 0; offs < state->m_objectram.bytes(); offs += 4)
73
77
        {
74
78
                /* skip empty sprites */
75
79
                /* this is dword aligned so the UINT32 * cast shouldn't give problems */
110
114
                                x = sx + xc * 8;
111
115
                                y = (sy + yc * 8) & 0xff;
112
116
 
113
 
                                if (flip_screen_get(screen.machine()))
 
117
                                if (state->flip_screen())
114
118
                                {
115
119
                                        x = 248 - x;
116
120
                                        y = 248 - y;
136
140
        palette_set_color_rgb(machine, color + 256, pal4bit(data >> 12), pal4bit(data >> 8), pal4bit(data >> 4));
137
141
}
138
142
 
139
 
static WRITE8_HANDLER( bg_paletteram_RRRRGGGGBBBBxxxx_be_w )
 
143
WRITE8_MEMBER(missb2_state::bg_paletteram_RRRRGGGGBBBBxxxx_be_w)
140
144
{
141
 
        missb2_state *state = space->machine().driver_data<missb2_state>();
142
 
        state->m_bg_paletteram[offset] = data;
143
 
        bg_changecolor_RRRRGGGGBBBBxxxx(space->machine(), offset / 2, state->m_bg_paletteram[offset | 1] | (state->m_bg_paletteram[offset & ~1] << 8));
 
145
 
 
146
        m_bg_paletteram[offset] = data;
 
147
        bg_changecolor_RRRRGGGGBBBBxxxx(machine(), offset / 2, m_bg_paletteram[offset | 1] | (m_bg_paletteram[offset & ~1] << 8));
144
148
}
145
149
 
146
 
static WRITE8_HANDLER( missb2_bg_bank_w )
 
150
WRITE8_MEMBER(missb2_state::missb2_bg_bank_w)
147
151
{
148
152
        int bank;
149
153
 
150
154
        // I don't know how this is really connected, bit 1 is always high afaik...
151
155
        bank = ((data & 2) ? 1 : 0) | ((data & 1) ? 4 : 0);
152
156
 
153
 
        memory_set_bank(space->machine(), "bank2", bank);
154
 
        memory_set_bank(space->machine(), "bank3", bank);
 
157
        membank("bank2")->set_entry(bank);
 
158
        membank("bank3")->set_entry(bank);
155
159
}
156
160
 
157
161
/* Memory Maps */
158
162
 
159
 
static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8 )
 
163
static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, missb2_state )
160
164
        AM_RANGE(0x0000, 0x7fff) AM_ROM
161
165
        AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
162
 
        AM_RANGE(0xc000, 0xdcff) AM_RAM AM_BASE_SIZE_MEMBER(missb2_state, m_videoram, m_videoram_size)
163
 
        AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_BASE_SIZE_MEMBER(missb2_state, m_objectram, m_objectram_size)
 
166
        AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram")
 
167
        AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram")
164
168
        AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
165
 
        AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram)
 
169
        AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_byte_be_w) AM_SHARE("paletteram")
166
170
        AM_RANGE(0xfa00, 0xfa00) AM_WRITE(bublbobl_sound_command_w)
167
171
        AM_RANGE(0xfa03, 0xfa03) AM_WRITENOP // sound cpu reset
168
172
        AM_RANGE(0xfa80, 0xfa80) AM_WRITENOP
179
183
        AM_RANGE(0xff98, 0xff98) AM_WRITENOP    // ???
180
184
ADDRESS_MAP_END
181
185
 
182
 
static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8 )
 
186
static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, missb2_state )
183
187
        AM_RANGE(0x0000, 0x7fff) AM_ROM
184
188
        AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank2")    // ROM data for the background palette ram
185
189
        AM_RANGE(0xa000, 0xafff) AM_ROMBANK("bank3")    // ROM data for the background palette ram
186
190
        AM_RANGE(0xb000, 0xb1ff) AM_ROM                 // banked ???
187
 
        AM_RANGE(0xc000, 0xc1ff) AM_RAM_WRITE(bg_paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_MEMBER(missb2_state, m_bg_paletteram)
 
191
        AM_RANGE(0xc000, 0xc1ff) AM_RAM_WRITE(bg_paletteram_RRRRGGGGBBBBxxxx_be_w) AM_SHARE("bg_paletteram")
188
192
        AM_RANGE(0xc800, 0xcfff) AM_RAM                 // main ???
189
193
        AM_RANGE(0xd000, 0xd000) AM_WRITE(missb2_bg_bank_w)
190
194
        AM_RANGE(0xd002, 0xd002) AM_WRITENOP
191
 
        AM_RANGE(0xd003, 0xd003) AM_RAM AM_BASE_MEMBER(missb2_state, m_bgvram)
 
195
        AM_RANGE(0xd003, 0xd003) AM_RAM AM_SHARE("bgvram")
192
196
        AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1")
193
197
ADDRESS_MAP_END
194
198
 
195
199
// Looks like the original bublbobl code modified to support the OKI M6295.
196
200
 
197
 
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
 
201
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, missb2_state )
198
202
        AM_RANGE(0x0000, 0x7fff) AM_ROM
199
203
        AM_RANGE(0x8000, 0x8fff) AM_RAM
200
 
        AM_RANGE(0x9000, 0x9000) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
201
 
        AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_r, ym3526_w)
202
 
        AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r) AM_WRITENOP // message for main cpu
 
204
        AM_RANGE(0x9000, 0x9000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
 
205
        AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym3526_r, ym3526_w)
 
206
        AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_byte_r) AM_WRITENOP // message for main cpu
203
207
        AM_RANGE(0xb001, 0xb001) AM_READNOP AM_WRITE(bublbobl_sh_nmi_enable_w)  // bit 0: message pending for main cpu, bit 1: message pending for sound cpu
204
208
        AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
205
209
        AM_RANGE(0xe000, 0xefff) AM_ROM                 // space for diagnostic ROM?
407
411
/* Sound Interfaces */
408
412
 
409
413
// Handler called by the 3526 emulator when the internal timers cause an IRQ
410
 
static void irqhandler(device_t *device, int irq)
 
414
static WRITE_LINE_DEVICE_HANDLER( irqhandler )
411
415
{
412
416
        logerror("YM3526 firing an IRQ\n");
413
417
//  cputag_set_input_line(device->machine(), "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
415
419
 
416
420
static const ym3526_interface ym3526_config =
417
421
{
418
 
        irqhandler
 
422
        DEVCB_LINE(irqhandler)
419
423
};
420
424
 
421
425
/* Interrupt Generator */
569
573
 
570
574
static void configure_banks( running_machine& machine )
571
575
{
572
 
        UINT8 *ROM = machine.region("maincpu")->base();
573
 
        UINT8 *SLAVE = machine.region("slave")->base();
 
576
        UINT8 *ROM = machine.root_device().memregion("maincpu")->base();
 
577
        UINT8 *SLAVE = machine.root_device().memregion("slave")->base();
574
578
 
575
 
        memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x4000);
 
579
        machine.root_device().membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
576
580
 
577
581
        /* 2009-11 FP: isn't there a way to configure both at once? */
578
 
        memory_configure_bank(machine, "bank2", 0, 7, &SLAVE[0x8000], 0x1000);
579
 
        memory_configure_bank(machine, "bank3", 0, 7, &SLAVE[0x9000], 0x1000);
 
582
        machine.root_device().membank("bank2")->configure_entries(0, 7, &SLAVE[0x8000], 0x1000);
 
583
        machine.root_device().membank("bank3")->configure_entries(0, 7, &SLAVE[0x9000], 0x1000);
580
584
}
581
585
 
582
586
static DRIVER_INIT( missb2 )