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

« back to all changes in this revision

Viewing changes to src/mame/drivers/cabaret.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:
30
30
{
31
31
public:
32
32
        cabaret_state(const machine_config &mconfig, device_type type, const char *tag)
33
 
                : driver_device(mconfig, type, tag) { }
 
33
                : driver_device(mconfig, type, tag) ,
 
34
                m_fg_tile_ram(*this, "fg_tile_ram"),
 
35
                m_fg_color_ram(*this, "fg_color_ram"),
 
36
                m_bg_scroll(*this, "bg_scroll"),
 
37
                m_bg_tile_ram(*this, "bg_tile_ram"){ }
34
38
 
35
 
        UINT8 *m_bg_tile_ram;
 
39
        required_shared_ptr<UINT8> m_fg_tile_ram;
 
40
        required_shared_ptr<UINT8> m_fg_color_ram;
 
41
        required_shared_ptr<UINT8> m_bg_scroll;
 
42
        required_shared_ptr<UINT8> m_bg_tile_ram;
36
43
        tilemap_t *m_bg_tilemap;
37
 
        UINT8 *m_bg_scroll;
38
 
        UINT8 *m_fg_tile_ram;
39
 
        UINT8 *m_fg_color_ram;
40
44
        tilemap_t *m_fg_tilemap;
41
45
        int m_nmi_enable;
42
46
        UINT8 m_out[3];
 
47
        DECLARE_WRITE8_MEMBER(bg_scroll_w);
 
48
        DECLARE_WRITE8_MEMBER(bg_tile_w);
 
49
        DECLARE_WRITE8_MEMBER(fg_tile_w);
 
50
        DECLARE_WRITE8_MEMBER(fg_color_w);
 
51
        DECLARE_WRITE8_MEMBER(cabaret_nmi_and_coins_w);
 
52
        void show_out();
43
53
};
44
54
 
45
55
 
51
61
 
52
62
 
53
63
 
54
 
static WRITE8_HANDLER( bg_scroll_w )
 
64
WRITE8_MEMBER(cabaret_state::bg_scroll_w)
55
65
{
56
 
        cabaret_state *state = space->machine().driver_data<cabaret_state>();
57
 
        state->m_bg_scroll[offset] = data;
58
 
        state->m_bg_tilemap->set_scrolly(offset,data);
 
66
        m_bg_scroll[offset] = data;
 
67
        m_bg_tilemap->set_scrolly(offset,data);
59
68
}
60
69
 
61
 
static WRITE8_HANDLER( bg_tile_w )
 
70
WRITE8_MEMBER(cabaret_state::bg_tile_w)
62
71
{
63
 
        cabaret_state *state = space->machine().driver_data<cabaret_state>();
64
 
        state->m_bg_tile_ram[offset] = data;
65
 
        state->m_bg_tilemap->mark_tile_dirty(offset);
 
72
        m_bg_tile_ram[offset] = data;
 
73
        m_bg_tilemap->mark_tile_dirty(offset);
66
74
}
67
75
 
68
76
static TILE_GET_INFO( get_bg_tile_info )
80
88
        SET_TILE_INFO(0, code, tile != 0x1fff ? ((code >> 12) & 0xe) + 1 : 0, 0);
81
89
}
82
90
 
83
 
static WRITE8_HANDLER( fg_tile_w )
 
91
WRITE8_MEMBER(cabaret_state::fg_tile_w)
84
92
{
85
 
        cabaret_state *state = space->machine().driver_data<cabaret_state>();
86
 
        state->m_fg_tile_ram[offset] = data;
87
 
        state->m_fg_tilemap->mark_tile_dirty(offset);
 
93
        m_fg_tile_ram[offset] = data;
 
94
        m_fg_tilemap->mark_tile_dirty(offset);
88
95
}
89
96
 
90
 
static WRITE8_HANDLER( fg_color_w )
 
97
WRITE8_MEMBER(cabaret_state::fg_color_w)
91
98
{
92
 
        cabaret_state *state = space->machine().driver_data<cabaret_state>();
93
 
        state->m_fg_color_ram[offset] = data;
94
 
        state->m_fg_tilemap->mark_tile_dirty(offset);
 
99
        m_fg_color_ram[offset] = data;
 
100
        m_fg_tilemap->mark_tile_dirty(offset);
95
101
}
96
102
 
97
103
static VIDEO_START(cabaret)
122
128
 
123
129
 
124
130
 
125
 
static void show_out(cabaret_state *state)
 
131
void cabaret_state::show_out()
126
132
{
127
133
#ifdef MAME_DEBUG
128
 
        popmessage("%02x %02x %02x", state->m_out[0], state->m_out[1], state->m_out[2]);
 
134
        popmessage("%02x %02x %02x",m_out[0], m_out[1], m_out[2]);
129
135
#endif
130
136
}
131
137
 
132
 
static WRITE8_HANDLER( cabaret_nmi_and_coins_w )
 
138
WRITE8_MEMBER(cabaret_state::cabaret_nmi_and_coins_w)
133
139
{
134
 
        cabaret_state *state = space->machine().driver_data<cabaret_state>();
135
 
        if ((state->m_nmi_enable ^ data) & (~0xdd))
 
140
        if ((m_nmi_enable ^ data) & (~0xdd))
136
141
        {
137
 
                logerror("PC %06X: nmi_and_coins = %02x\n",cpu_get_pc(&space->device()),data);
 
142
                logerror("PC %06X: nmi_and_coins = %02x\n",cpu_get_pc(&space.device()),data);
138
143
//      popmessage("%02x",data);
139
144
        }
140
145
 
141
 
        coin_counter_w(space->machine(), 0,             data & 0x01);   // coin_a
142
 
        coin_counter_w(space->machine(), 1,             data & 0x04);   // coin_c
143
 
        coin_counter_w(space->machine(), 2,             data & 0x08);   // key in
144
 
        coin_counter_w(space->machine(), 3,             data & 0x10);   // coin state->m_out mech
145
 
 
146
 
        set_led_status(space->machine(), 6,             data & 0x40);   // led for coin state->m_out / hopper active
147
 
 
148
 
        state->m_nmi_enable = data;     //  data & 0x80     // nmi enable?
149
 
 
150
 
        state->m_out[0] = data;
151
 
        show_out(state);
 
146
        coin_counter_w(machine(), 0,            data & 0x01);   // coin_a
 
147
        coin_counter_w(machine(), 1,            data & 0x04);   // coin_c
 
148
        coin_counter_w(machine(), 2,            data & 0x08);   // key in
 
149
        coin_counter_w(machine(), 3,            data & 0x10);   // coin m_out mech
 
150
 
 
151
        set_led_status(machine(), 6,            data & 0x40);   // led for coin m_out / hopper active
 
152
 
 
153
        m_nmi_enable = data;    //  data & 0x80     // nmi enable?
 
154
 
 
155
        m_out[0] = data;
 
156
        show_out();
152
157
}
153
158
 
154
159
 
155
160
 
156
 
static ADDRESS_MAP_START( cabaret_map, AS_PROGRAM, 8 )
 
161
static ADDRESS_MAP_START( cabaret_map, AS_PROGRAM, 8, cabaret_state )
157
162
        AM_RANGE( 0x00000, 0x0efff ) AM_ROM
158
163
        AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM AM_REGION("maincpu", 0xf000)
159
164
ADDRESS_MAP_END
160
165
 
161
 
static ADDRESS_MAP_START( cabaret_portmap, AS_IO, 8 )
 
166
static ADDRESS_MAP_START( cabaret_portmap, AS_IO, 8, cabaret_state )
162
167
        AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs
163
168
 
164
169
        AM_RANGE( 0x0080, 0x0080 ) AM_READ_PORT( "BUTTONS2" )
165
170
        AM_RANGE( 0x0081, 0x0081 ) AM_READ_PORT( "SERVICE" )
166
171
        AM_RANGE( 0x0082, 0x0082 ) AM_READ_PORT( "COINS" )
167
172
        AM_RANGE( 0x0090, 0x0090 ) AM_READ_PORT( "BUTTONS1" )
168
 
        AM_RANGE( 0x00a0, 0x00a0 ) AM_WRITE( cabaret_nmi_and_coins_w )
 
173
        AM_RANGE( 0x00a0, 0x00a0 ) AM_WRITE(cabaret_nmi_and_coins_w )
169
174
 
170
175
        AM_RANGE( 0x00a1, 0x00a1 ) AM_READ_PORT("DSW1")                 /* DSW1 */
171
176
        AM_RANGE( 0x00a2, 0x00a2 ) AM_READ_PORT("DSW2")                 /* DSW2 */
172
177
        AM_RANGE( 0x00b0, 0x00b0 ) AM_READ_PORT("DSW3")                 /* DSW3 */
173
178
 
174
 
        AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE( "ymsnd", ym2413_w )
175
 
 
176
 
        AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE( fg_tile_w )  AM_BASE_MEMBER(cabaret_state, m_fg_tile_ram )
177
 
        AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE( fg_color_w ) AM_BASE_MEMBER(cabaret_state, m_fg_color_ram )
178
 
 
179
 
        AM_RANGE( 0x3000, 0x37ff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE_GENERIC( paletteram )
180
 
        AM_RANGE( 0x3800, 0x3fff ) AM_RAM_WRITE( paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE_GENERIC( paletteram2 )
181
 
 
182
 
        AM_RANGE( 0x1000, 0x103f ) AM_RAM_WRITE( bg_scroll_w ) AM_BASE_MEMBER(cabaret_state, m_bg_scroll )
183
 
 
184
 
        AM_RANGE( 0x1800, 0x19ff ) AM_RAM_WRITE( bg_tile_w )  AM_BASE_MEMBER(cabaret_state, m_bg_tile_ram )
 
179
        AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w )
 
180
 
 
181
        AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE(fg_tile_w )  AM_SHARE("fg_tile_ram")
 
182
        AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram")
 
183
 
 
184
        AM_RANGE( 0x3000, 0x37ff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_lo_w ) AM_SHARE("paletteram")
 
185
        AM_RANGE( 0x3800, 0x3fff ) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_split_hi_w ) AM_SHARE("paletteram2")
 
186
 
 
187
        AM_RANGE( 0x1000, 0x103f ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll")
 
188
 
 
189
        AM_RANGE( 0x1800, 0x19ff ) AM_RAM_WRITE(bg_tile_w )  AM_SHARE("bg_tile_ram")
185
190
        AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("gfx3", 0)
186
191
ADDRESS_MAP_END
187
192
 
356
361
 
357
362
static DRIVER_INIT( cabaret )
358
363
{
359
 
        UINT8 *rom = machine.region("maincpu")->base();
 
364
        UINT8 *rom = machine.root_device().memregion("maincpu")->base();
360
365
        int i;
361
366
 
362
367
        /* decrypt the program ROM */