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

« back to all changes in this revision

Viewing changes to src/mame/drivers/deco156.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:
41
41
        UINT16   m_pf1_rowscroll[0x800/2];
42
42
        UINT16   m_pf2_rowscroll[0x800/2];
43
43
        UINT16* m_spriteram;
 
44
        DECLARE_WRITE32_MEMBER(hvysmsh_eeprom_w);
 
45
        DECLARE_WRITE32_MEMBER(wcvol95_nonbuffered_palette_w);
 
46
        DECLARE_WRITE32_MEMBER(deco156_nonbuffered_palette_w);
 
47
        DECLARE_READ32_MEMBER(wcvol95_pf1_rowscroll_r);
 
48
        DECLARE_READ32_MEMBER(wcvol95_pf2_rowscroll_r);
 
49
        DECLARE_READ32_MEMBER(wcvol95_spriteram_r);
 
50
        DECLARE_WRITE32_MEMBER(wcvol95_pf1_rowscroll_w);
 
51
        DECLARE_WRITE32_MEMBER(wcvol95_pf2_rowscroll_w);
 
52
        DECLARE_WRITE32_MEMBER(wcvol95_spriteram_w);
44
53
};
45
54
 
46
55
 
59
68
static SCREEN_UPDATE_RGB32( wcvol95 )
60
69
{
61
70
        //FIXME: flip_screen_x should not be written!
62
 
        flip_screen_set_no_update(screen.machine(), 1);
63
 
 
64
71
        deco156_state *state = screen.machine().driver_data<deco156_state>();
 
72
        state->flip_screen_set_no_update(1);
65
73
 
66
74
        screen.machine().priority_bitmap.fill(0);
67
75
        bitmap.fill(0);
76
84
 
77
85
/***************************************************************************/
78
86
 
79
 
static WRITE32_HANDLER(hvysmsh_eeprom_w)
 
87
WRITE32_MEMBER(deco156_state::hvysmsh_eeprom_w)
80
88
{
81
 
        deco156_state *state = space->machine().driver_data<deco156_state>();
82
89
        if (ACCESSING_BITS_0_7)
83
90
        {
84
 
                state->m_oki2->set_bank_base(0x40000 * (data & 0x7));
85
 
                input_port_write(space->machine(), "EEPROMOUT", data, 0xff);
 
91
                m_oki2->set_bank_base(0x40000 * (data & 0x7));
 
92
                ioport("EEPROMOUT")->write(data, 0xff);
86
93
        }
87
94
}
88
95
 
92
99
        oki->set_bank_base((data & 1) * 0x40000);
93
100
}
94
101
 
95
 
static WRITE32_HANDLER(wcvol95_nonbuffered_palette_w)
 
102
WRITE32_MEMBER(deco156_state::wcvol95_nonbuffered_palette_w)
96
103
{
97
 
        COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]);
98
 
        palette_set_color_rgb(space->machine(),offset,pal5bit(space->machine().generic.paletteram.u32[offset] >> 0),pal5bit(space->machine().generic.paletteram.u32[offset] >> 5),pal5bit(space->machine().generic.paletteram.u32[offset] >> 10));
 
104
        COMBINE_DATA(&m_generic_paletteram_32[offset]);
 
105
        palette_set_color_rgb(machine(),offset,pal5bit(m_generic_paletteram_32[offset] >> 0),pal5bit(m_generic_paletteram_32[offset] >> 5),pal5bit(m_generic_paletteram_32[offset] >> 10));
99
106
}
100
107
 
101
108
/* This is the same as deco32_nonbuffered_palette_w in video/deco32.c */
102
 
static WRITE32_HANDLER( deco156_nonbuffered_palette_w )
 
109
WRITE32_MEMBER(deco156_state::deco156_nonbuffered_palette_w)
103
110
{
104
111
        int r,g,b;
105
112
 
106
 
        COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]);
107
 
 
108
 
        b = (space->machine().generic.paletteram.u32[offset] >>16) & 0xff;
109
 
        g = (space->machine().generic.paletteram.u32[offset] >> 8) & 0xff;
110
 
        r = (space->machine().generic.paletteram.u32[offset] >> 0) & 0xff;
111
 
 
112
 
        palette_set_color(space->machine(),offset,MAKE_RGB(r,g,b));
 
113
        COMBINE_DATA(&m_generic_paletteram_32[offset]);
 
114
 
 
115
        b = (m_generic_paletteram_32[offset] >>16) & 0xff;
 
116
        g = (m_generic_paletteram_32[offset] >> 8) & 0xff;
 
117
        r = (m_generic_paletteram_32[offset] >> 0) & 0xff;
 
118
 
 
119
        palette_set_color(machine(),offset,MAKE_RGB(r,g,b));
113
120
}
114
121
 
115
 
static READ32_HANDLER( wcvol95_pf1_rowscroll_r ) { deco156_state *state = space->machine().driver_data<deco156_state>(); return state->m_pf1_rowscroll[offset] ^ 0xffff0000; }
116
 
static READ32_HANDLER( wcvol95_pf2_rowscroll_r ) { deco156_state *state = space->machine().driver_data<deco156_state>();        return state->m_pf2_rowscroll[offset] ^ 0xffff0000; }
117
 
static READ32_HANDLER( wcvol95_spriteram_r )     { deco156_state *state = space->machine().driver_data<deco156_state>(); return state->m_spriteram[offset] ^ 0xffff0000; }
118
 
static WRITE32_HANDLER( wcvol95_pf1_rowscroll_w ) { deco156_state *state = space->machine().driver_data<deco156_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->m_pf1_rowscroll[offset]); }
119
 
static WRITE32_HANDLER( wcvol95_pf2_rowscroll_w ) { deco156_state *state = space->machine().driver_data<deco156_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&state->m_pf2_rowscroll[offset]); }
120
 
static WRITE32_HANDLER( wcvol95_spriteram_w )    { deco156_state *state = space->machine().driver_data<deco156_state>(); data &= 0x0000ffff; mem_mask &= 0x0000ffff;    COMBINE_DATA(&state->m_spriteram[offset]); }
121
 
 
122
 
 
123
 
static ADDRESS_MAP_START( hvysmsh_map, AS_PROGRAM, 32 )
 
122
READ32_MEMBER(deco156_state::wcvol95_pf1_rowscroll_r){ return m_pf1_rowscroll[offset] ^ 0xffff0000; }
 
123
READ32_MEMBER(deco156_state::wcvol95_pf2_rowscroll_r){ return m_pf2_rowscroll[offset] ^ 0xffff0000; }
 
124
READ32_MEMBER(deco156_state::wcvol95_spriteram_r){ return m_spriteram[offset] ^ 0xffff0000; }
 
125
WRITE32_MEMBER(deco156_state::wcvol95_pf1_rowscroll_w){ data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_pf1_rowscroll[offset]); }
 
126
WRITE32_MEMBER(deco156_state::wcvol95_pf2_rowscroll_w){ data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_pf2_rowscroll[offset]); }
 
127
WRITE32_MEMBER(deco156_state::wcvol95_spriteram_w){ data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_spriteram[offset]); }
 
128
 
 
129
 
 
130
static ADDRESS_MAP_START( hvysmsh_map, AS_PROGRAM, 32, deco156_state )
124
131
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
125
132
        AM_RANGE(0x100000, 0x107fff) AM_RAM
126
133
        AM_RANGE(0x120000, 0x120003) AM_READ_PORT("INPUTS")
127
134
        AM_RANGE(0x120000, 0x120003) AM_WRITENOP // Volume control in low byte
128
135
        AM_RANGE(0x120004, 0x120007) AM_WRITE(hvysmsh_eeprom_w)
129
136
        AM_RANGE(0x120008, 0x12000b) AM_WRITENOP // IRQ ack?
130
 
        AM_RANGE(0x12000c, 0x12000f) AM_DEVWRITE("oki1", hvysmsh_oki_0_bank_w)
131
 
        AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x000000ff)
132
 
        AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x000000ff)
133
 
        AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
134
 
        AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
135
 
        AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
137
        AM_RANGE(0x12000c, 0x12000f) AM_DEVWRITE_LEGACY("oki1", hvysmsh_oki_0_bank_w)
 
138
        AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff)
 
139
        AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff)
 
140
        AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
141
        AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
142
        AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
136
143
        AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(wcvol95_pf1_rowscroll_r, wcvol95_pf1_rowscroll_w)
137
144
        AM_RANGE(0x1a4000, 0x1a4fff) AM_READWRITE(wcvol95_pf2_rowscroll_r, wcvol95_pf2_rowscroll_w)
138
 
        AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_WRITE(deco156_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
 
145
        AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_WRITE(deco156_nonbuffered_palette_w) AM_SHARE("paletteram")
139
146
        AM_RANGE(0x1d0010, 0x1d002f) AM_READNOP // Check for DMA complete?
140
147
        AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(wcvol95_spriteram_r, wcvol95_spriteram_w)
141
148
ADDRESS_MAP_END
142
149
 
143
 
static ADDRESS_MAP_START( wcvol95_map, AS_PROGRAM, 32 )
 
150
static ADDRESS_MAP_START( wcvol95_map, AS_PROGRAM, 32, deco156_state )
144
151
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
145
 
        AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
146
 
        AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
147
 
        AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
152
        AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
153
        AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
154
        AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
148
155
        AM_RANGE(0x120000, 0x120fff) AM_READWRITE(wcvol95_pf1_rowscroll_r, wcvol95_pf1_rowscroll_w)
149
156
        AM_RANGE(0x124000, 0x124fff) AM_READWRITE(wcvol95_pf2_rowscroll_r, wcvol95_pf2_rowscroll_w)
150
157
        AM_RANGE(0x130000, 0x137fff) AM_RAM
152
159
        AM_RANGE(0x150000, 0x150003) AM_WRITE_PORT("EEPROMOUT")
153
160
        AM_RANGE(0x160000, 0x161fff) AM_READWRITE(wcvol95_spriteram_r, wcvol95_spriteram_w)
154
161
        AM_RANGE(0x170000, 0x170003) AM_NOP // Irq ack?
155
 
        AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(wcvol95_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
156
 
        AM_RANGE(0x1a0000, 0x1a0007) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x000000ff)
 
162
        AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(wcvol95_nonbuffered_palette_w) AM_SHARE("paletteram")
 
163
        AM_RANGE(0x1a0000, 0x1a0007) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0x000000ff)
157
164
ADDRESS_MAP_END
158
165
 
159
166
 
182
189
        PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN2 )
183
190
        PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 )
184
191
        PORT_SERVICE_NO_TOGGLE( 0x00080000, IP_ACTIVE_LOW )
185
 
        PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_VBLANK )
 
192
        PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
186
193
        PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED )
187
194
        PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED )
188
195
        PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED )
224
231
        PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN2 )
225
232
        PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 )
226
233
        PORT_SERVICE_NO_TOGGLE( 0x00080000, IP_ACTIVE_LOW )
227
 
        PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_VBLANK )
 
234
        PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
228
235
        PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED ) /* 'soundmask' */
229
236
        PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED )
230
237
        PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED )
606
613
 
607
614
static void descramble_sound( running_machine &machine, const char *tag )
608
615
{
609
 
        UINT8 *rom = machine.region(tag)->base();
610
 
        int length = machine.region(tag)->bytes();
 
616
        UINT8 *rom = machine.root_device().memregion(tag)->base();
 
617
        int length = machine.root_device().memregion(tag)->bytes();
611
618
        UINT8 *buf1 = auto_alloc_array(machine, UINT8, length);
612
619
        UINT32 x;
613
620