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

« back to all changes in this revision

Viewing changes to src/mame/drivers/galspnbl.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:
9
9
- to start a 2 or more players game, press the start button multiple times
10
10
- the sprite graphics contain a "(c) Tecmo", and the sprite system is
11
11
  indeed similar to other Tecmo games like Ninja Gaiden.
12
 
 
 
12
- Clearly based on Temco's Super Pinball Action (see spbactn.c)
 
13
- There seems to be a bug in Hot Pinball's Demo Sounds. If you start the
 
14
  game normally you get no demo sounds. However if you select the "Slide
 
15
  Show" and run all the way through the game will start with demo sounds.
 
16
  Gals Pinball's Demo Sounds works as expected according to DSW setting.
13
17
 
14
18
TODO:
15
19
- scrolling is wrong.
16
20
- sprite/tile priority might be wrong. There is an unknown bit in the fg
17
21
  tilemap, marking some tiles that I'm not currently drawing.
18
22
 
 
23
Manuals for both games define the controls as 4 push buttons:
 
24
 
 
25
   Left Push Buttons                     Right Push Buttons
 
26
 
 
27
|   o    |      o       |             |    o    |      o       |
 
28
|--------+--------------+-------------+------------------------|
 
29
| Select |     Set      | Select Mode |                        |
 
30
|  Stage |    Stage     |             |                        |
 
31
|--------+--------------+-------------+---------+--------------|
 
32
|Flipper | Shot & Shake |  Game Mode  | Flipper | Shot & Shake |
 
33
| Left   |    Left      |             |  Right  |    Right     |
 
34
|--------+--------------+-------------+---------+--------------|
 
35
 
19
36
***************************************************************************/
20
37
 
21
38
#include "emu.h"
26
43
#include "includes/galspnbl.h"
27
44
 
28
45
 
29
 
static WRITE16_HANDLER( soundcommand_w )
 
46
WRITE16_MEMBER(galspnbl_state::soundcommand_w)
30
47
{
31
 
        galspnbl_state *state = space->machine().driver_data<galspnbl_state>();
32
48
 
33
49
        if (ACCESSING_BITS_0_7)
34
50
        {
35
 
                soundlatch_w(space,offset,data & 0xff);
36
 
                device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
 
51
                soundlatch_byte_w(space,offset,data & 0xff);
 
52
                device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
37
53
        }
38
54
}
39
55
 
40
56
 
41
 
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 )
 
57
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, galspnbl_state )
42
58
        AM_RANGE(0x000000, 0x3fffff) AM_ROM
43
59
        AM_RANGE(0x700000, 0x703fff) AM_RAM             /* galspnbl work RAM */
44
60
        AM_RANGE(0x708000, 0x70ffff) AM_RAM             /* galspnbl work RAM, bitmaps are decompressed here */
45
61
        AM_RANGE(0x800000, 0x803fff) AM_RAM             /* hotpinbl work RAM */
46
62
        AM_RANGE(0x808000, 0x80ffff) AM_RAM             /* hotpinbl work RAM, bitmaps are decompressed here */
47
 
        AM_RANGE(0x880000, 0x880fff) AM_RAM AM_BASE_SIZE_MEMBER(galspnbl_state, m_spriteram, m_spriteram_size)
 
63
        AM_RANGE(0x880000, 0x880fff) AM_RAM AM_SHARE("spriteram")
48
64
        AM_RANGE(0x8ff400, 0x8fffff) AM_WRITENOP        /* ??? */
49
 
        AM_RANGE(0x900000, 0x900fff) AM_RAM AM_BASE_MEMBER(galspnbl_state, m_colorram)
 
65
        AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("colorram")
50
66
        AM_RANGE(0x901000, 0x903fff) AM_WRITENOP        /* ??? */
51
 
        AM_RANGE(0x904000, 0x904fff) AM_RAM AM_BASE_MEMBER(galspnbl_state, m_videoram)
 
67
        AM_RANGE(0x904000, 0x904fff) AM_RAM AM_SHARE("videoram")
52
68
        AM_RANGE(0x905000, 0x907fff) AM_WRITENOP        /* ??? */
53
 
        AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_BASE_MEMBER(galspnbl_state, m_bgvideoram)
 
69
        AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bgvideoram")
54
70
        AM_RANGE(0xa00000, 0xa00fff) AM_WRITENOP        /* more palette ? */
55
 
        AM_RANGE(0xa01000, 0xa017ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
 
71
        AM_RANGE(0xa01000, 0xa017ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
56
72
        AM_RANGE(0xa01800, 0xa027ff) AM_WRITENOP        /* more palette ? */
57
73
        AM_RANGE(0xa80000, 0xa80001) AM_READ_PORT("IN0")
58
74
        AM_RANGE(0xa80010, 0xa80011) AM_READ_PORT("IN1") AM_WRITE(soundcommand_w)
59
75
        AM_RANGE(0xa80020, 0xa80021) AM_READ_PORT("SYSTEM") AM_WRITENOP         /* w - could be watchdog, but causes resets when picture is shown */
60
76
        AM_RANGE(0xa80030, 0xa80031) AM_READ_PORT("DSW1") AM_WRITENOP           /* w - irq ack? */
61
77
        AM_RANGE(0xa80040, 0xa80041) AM_READ_PORT("DSW2")
62
 
        AM_RANGE(0xa80050, 0xa80051) AM_WRITEONLY AM_BASE_MEMBER(galspnbl_state, m_scroll)      /* ??? */
 
78
        AM_RANGE(0xa80050, 0xa80051) AM_WRITEONLY AM_SHARE("scroll")    /* ??? */
63
79
ADDRESS_MAP_END
64
80
 
65
 
static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8 )
 
81
static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, galspnbl_state )
66
82
        AM_RANGE(0x0000, 0xefff) AM_ROM
67
83
        AM_RANGE(0xf000, 0xf7ff) AM_RAM
68
 
        AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
69
 
        AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_w)
 
84
        AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
 
85
        AM_RANGE(0xf810, 0xf811) AM_DEVWRITE_LEGACY("ymsnd", ym3812_w)
70
86
        AM_RANGE(0xfc00, 0xfc00) AM_NOP /* irq ack ?? */
71
 
        AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
 
87
        AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_byte_r)
72
88
ADDRESS_MAP_END
73
89
 
74
90
 
79
95
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
80
96
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
81
97
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Left Flippers" )
82
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Launch Ball / Tilt" )
 
98
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Launch Ball / Shake (Left Side)" )
83
99
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )            /* uncalled (?) code at 0x007ed2 ('hotpinbl') or 0x008106 ('galspnbl') */
84
100
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
85
101
 
88
104
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
89
105
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
90
106
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
91
 
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )            /* same as BUTTON3 - leftover from another game ? */
 
107
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Launch Ball / Shake (Right Side)" )
92
108
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Right Flippers" )
93
109
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )            /* uncalled (?) code at 0x007e90 ('hotpinbl') or 0x0080c4 ('galspnbl') */
94
110
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
96
112
        PORT_START("SYSTEM")
97
113
        PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
98
114
        PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
99
 
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME( "Start" )  /* needed to avoid confusion with # of players */
 
115
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME( "Start" )  /* needed to avoid confusion with # of players. Press mulitple times for multiple players */
100
116
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
101
117
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
102
118
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
117
133
        PORT_DIPNAME( 0x10, 0x10, "Hit Difficulty" )            PORT_DIPLOCATION("SW2:5")
118
134
        PORT_DIPSETTING(    0x10, DEF_STR( Normal ) )
119
135
        PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )
120
 
        PORT_DIPNAME( 0x20, 0x20, "Slide Show" )                PORT_DIPLOCATION("SW2:6")
 
136
        PORT_DIPNAME( 0x20, 0x20, "Slide Show" )                PORT_DIPLOCATION("SW2:6") /* Listed as unused on manuals for both games */
121
137
        PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
122
138
        PORT_DIPSETTING(    0x00, DEF_STR( On ) )
123
139
        PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )      PORT_DIPLOCATION("SW2:7")
156
172
 
157
173
        PORT_MODIFY("IN1")
158
174
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Right Flippers" )
159
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL )            /* same as BUTTON3 - leftover from another game ? */
 
175
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Launch Ball / Shake (Right Side)" )
160
176
INPUT_PORTS_END
161
177
 
162
178
 
212
228
static MACHINE_CONFIG_START( galspnbl, galspnbl_state )
213
229
 
214
230
        /* basic machine hardware */
215
 
        MCFG_CPU_ADD("maincpu", M68000, 10000000)       /* 10 MHz ??? */
 
231
        MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz)     /* 12 MHz ??? - Use value from Temco's Super Pinball Action - NEEDS VERIFICATION!! */
216
232
        MCFG_CPU_PROGRAM_MAP(main_map)
217
233
        MCFG_CPU_VBLANK_INT("screen", irq3_line_hold)/* also has vector for 6, but it does nothing */
218
234
 
219
 
        MCFG_CPU_ADD("audiocpu", Z80, 4000000)  /* 4 MHz ??? */
 
235
        MCFG_CPU_ADD("audiocpu", Z80, XTAL_4MHz)        /* 4 MHz ??? - Use value from Temco's Super Pinball Action - NEEDS VERIFICATION!! */
220
236
        MCFG_CPU_PROGRAM_MAP(audio_map)
221
237
                                                                /* NMI is caused by the main CPU */
222
238
 
238
254
        /* sound hardware */
239
255
        MCFG_SPEAKER_STANDARD_MONO("mono")
240
256
 
241
 
        MCFG_SOUND_ADD("ymsnd", YM3812, 3579545)
 
257
        MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* Use value from Super Pinball Action - NEEDS VERIFICATION!! */
242
258
        MCFG_SOUND_CONFIG(ym3812_config)
243
259
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
244
260
 
245
 
        MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
 
261
        MCFG_OKIM6295_ADD("oki", XTAL_4MHz/4, OKIM6295_PIN7_HIGH) /* Use value from Super Pinball Action - clock frequency & pin 7 not verified */
246
262
        MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
247
263
MACHINE_CONFIG_END
248
264