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
- 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.
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.
23
Manuals for both games define the controls as 4 push buttons:
25
Left Push Buttons Right Push Buttons
28
|--------+--------------+-------------+------------------------|
29
| Select | Set | Select Mode | |
31
|--------+--------------+-------------+---------+--------------|
32
|Flipper | Shot & Shake | Game Mode | Flipper | Shot & Shake |
33
| Left | Left | | Right | Right |
34
|--------+--------------+-------------+---------+--------------|
19
36
***************************************************************************/
26
43
#include "includes/galspnbl.h"
29
static WRITE16_HANDLER( soundcommand_w )
46
WRITE16_MEMBER(galspnbl_state::soundcommand_w)
31
galspnbl_state *state = space->machine().driver_data<galspnbl_state>();
33
49
if (ACCESSING_BITS_0_7)
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);
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") /* ??? */
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)
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 )
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")
212
228
static MACHINE_CONFIG_START( galspnbl, galspnbl_state )
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 */
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 */
238
254
/* sound hardware */
239
255
MCFG_SPEAKER_STANDARD_MONO("mono")
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)
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