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

« back to all changes in this revision

Viewing changes to src/mame/drivers/surpratk.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:
25
25
                device_set_input_line(device, 0, HOLD_LINE);
26
26
}
27
27
 
28
 
static READ8_HANDLER( bankedram_r )
29
 
{
30
 
        surpratk_state *state = space->machine().driver_data<surpratk_state>();
31
 
 
32
 
        if (state->m_videobank & 0x02)
33
 
        {
34
 
                if (state->m_videobank & 0x04)
35
 
                        return space->machine().generic.paletteram.u8[offset + 0x0800];
36
 
                else
37
 
                        return space->machine().generic.paletteram.u8[offset];
38
 
        }
39
 
        else if (state->m_videobank & 0x01)
40
 
                return k053245_r(state->m_k053244, offset);
41
 
        else
42
 
                return state->m_ram[offset];
43
 
}
44
 
 
45
 
static WRITE8_HANDLER( bankedram_w )
46
 
{
47
 
        surpratk_state *state = space->machine().driver_data<surpratk_state>();
48
 
 
49
 
        if (state->m_videobank & 0x02)
50
 
        {
51
 
                if (state->m_videobank & 0x04)
52
 
                        paletteram_xBBBBBGGGGGRRRRR_be_w(space,offset + 0x0800,data);
53
 
                else
54
 
                        paletteram_xBBBBBGGGGGRRRRR_be_w(space,offset,data);
55
 
        }
56
 
        else if (state->m_videobank & 0x01)
57
 
                k053245_w(state->m_k053244, offset, data);
58
 
        else
59
 
                state->m_ram[offset] = data;
60
 
}
61
 
 
62
 
static WRITE8_HANDLER( surpratk_videobank_w )
63
 
{
64
 
        surpratk_state *state = space->machine().driver_data<surpratk_state>();
65
 
 
66
 
        logerror("%04x: videobank = %02x\n",cpu_get_pc(&space->device()),data);
 
28
READ8_MEMBER(surpratk_state::bankedram_r)
 
29
{
 
30
 
 
31
        if (m_videobank & 0x02)
 
32
        {
 
33
                if (m_videobank & 0x04)
 
34
                        return m_generic_paletteram_8[offset + 0x0800];
 
35
                else
 
36
                        return m_generic_paletteram_8[offset];
 
37
        }
 
38
        else if (m_videobank & 0x01)
 
39
                return k053245_r(m_k053244, offset);
 
40
        else
 
41
                return m_ram[offset];
 
42
}
 
43
 
 
44
WRITE8_MEMBER(surpratk_state::bankedram_w)
 
45
{
 
46
 
 
47
        if (m_videobank & 0x02)
 
48
        {
 
49
                if (m_videobank & 0x04)
 
50
                        paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space,offset + 0x0800,data);
 
51
                else
 
52
                        paletteram_xBBBBBGGGGGRRRRR_byte_be_w(space,offset,data);
 
53
        }
 
54
        else if (m_videobank & 0x01)
 
55
                k053245_w(m_k053244, offset, data);
 
56
        else
 
57
                m_ram[offset] = data;
 
58
}
 
59
 
 
60
WRITE8_MEMBER(surpratk_state::surpratk_videobank_w)
 
61
{
 
62
 
 
63
        logerror("%04x: videobank = %02x\n",cpu_get_pc(&space.device()),data);
67
64
        /* bit 0 = select 053245 at 0000-07ff */
68
65
        /* bit 1 = select palette at 0000-07ff */
69
66
        /* bit 2 = select palette bank 0 or 1 */
70
 
        state->m_videobank = data;
 
67
        m_videobank = data;
71
68
}
72
69
 
73
 
static WRITE8_HANDLER( surpratk_5fc0_w )
 
70
WRITE8_MEMBER(surpratk_state::surpratk_5fc0_w)
74
71
{
75
 
        surpratk_state *state = space->machine().driver_data<surpratk_state>();
76
72
 
77
73
        if ((data & 0xf4) != 0x10)
78
 
                logerror("%04x: 3fc0 = %02x\n",cpu_get_pc(&space->device()),data);
 
74
                logerror("%04x: 3fc0 = %02x\n",cpu_get_pc(&space.device()),data);
79
75
 
80
76
        /* bit 0/1 = coin counters */
81
 
        coin_counter_w(space->machine(), 0, data & 0x01);
82
 
        coin_counter_w(space->machine(), 1, data & 0x02);
 
77
        coin_counter_w(machine(), 0, data & 0x01);
 
78
        coin_counter_w(machine(), 1, data & 0x02);
83
79
 
84
80
        /* bit 3 = enable char ROM reading through the video RAM */
85
 
        k052109_set_rmrd_line(state->m_k052109, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
 
81
        k052109_set_rmrd_line(m_k052109, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
86
82
 
87
83
        /* other bits unknown */
88
84
}
90
86
 
91
87
/********************************************/
92
88
 
93
 
static ADDRESS_MAP_START( surpratk_map, AS_PROGRAM, 8 )
94
 
        AM_RANGE(0x0000, 0x07ff) AM_READWRITE(bankedram_r, bankedram_w) AM_BASE_MEMBER(surpratk_state, m_ram)
 
89
static ADDRESS_MAP_START( surpratk_map, AS_PROGRAM, 8, surpratk_state )
 
90
        AM_RANGE(0x0000, 0x07ff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram")
95
91
        AM_RANGE(0x0800, 0x1fff) AM_RAM
96
92
        AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")                                    /* banked ROM */
97
93
        AM_RANGE(0x5f8c, 0x5f8c) AM_READ_PORT("P1")
99
95
        AM_RANGE(0x5f8e, 0x5f8e) AM_READ_PORT("DSW3")
100
96
        AM_RANGE(0x5f8f, 0x5f8f) AM_READ_PORT("DSW1")
101
97
        AM_RANGE(0x5f90, 0x5f90) AM_READ_PORT("DSW2")
102
 
        AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE("k053244", k053244_r, k053244_w)
103
 
        AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE("k053251", k053251_w)
104
 
        AM_RANGE(0x5fc0, 0x5fc0) AM_READWRITE(watchdog_reset_r, surpratk_5fc0_w)
105
 
        AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_w)
 
98
        AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE_LEGACY("k053244", k053244_r, k053244_w)
 
99
        AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE_LEGACY("k053251", k053251_w)
 
100
        AM_RANGE(0x5fc0, 0x5fc0) AM_READ(watchdog_reset_r) AM_WRITE(surpratk_5fc0_w)
 
101
        AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
106
102
        AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w)
107
 
        AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_r, k052109_w)
 
103
        AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_r, k052109_w)
108
104
        AM_RANGE(0x8000, 0xffff) AM_ROM                                 /* ROM */
109
105
ADDRESS_MAP_END
110
106
 
170
166
 
171
167
static const ym2151_interface ym2151_config =
172
168
{
173
 
        irqhandler
 
169
        DEVCB_LINE(irqhandler)
174
170
};
175
171
 
176
172
 
195
191
static MACHINE_START( surpratk )
196
192
{
197
193
        surpratk_state *state = machine.driver_data<surpratk_state>();
198
 
        UINT8 *ROM = machine.region("maincpu")->base();
199
 
 
200
 
        memory_configure_bank(machine, "bank1", 0, 28, &ROM[0x10000], 0x2000);
201
 
        memory_configure_bank(machine, "bank1", 28, 4, &ROM[0x08000], 0x2000);
202
 
        memory_set_bank(machine, "bank1", 0);
203
 
 
204
 
        machine.generic.paletteram.u8 = auto_alloc_array_clear(machine, UINT8, 0x1000);
 
194
        UINT8 *ROM = state->memregion("maincpu")->base();
 
195
 
 
196
        state->membank("bank1")->configure_entries(0, 28, &ROM[0x10000], 0x2000);
 
197
        state->membank("bank1")->configure_entries(28, 4, &ROM[0x08000], 0x2000);
 
198
        state->membank("bank1")->set_entry(0);
 
199
 
 
200
        state->m_generic_paletteram_8.allocate(0x1000);
205
201
 
206
202
        state->m_maincpu = machine.device("maincpu");
207
203
        state->m_k053244 = machine.device("k053244");
212
208
        state->save_item(NAME(state->m_sprite_colorbase));
213
209
        state->save_item(NAME(state->m_layer_colorbase));
214
210
        state->save_item(NAME(state->m_layerpri));
215
 
        state_save_register_global_pointer(machine, machine.generic.paletteram.u8, 0x1000);
216
211
}
217
212
 
218
213
static MACHINE_RESET( surpratk )
328
323
static KONAMI_SETLINES_CALLBACK( surpratk_banking )
329
324
{
330
325
        logerror("%04x: setlines %02x\n",cpu_get_pc(device), lines);
331
 
        memory_set_bank(device->machine(), "bank1", lines & 0x1f);
 
326
        device->machine().root_device().membank("bank1")->set_entry(lines & 0x1f);
332
327
}
333
328
 
334
329