Previous 199869 Revisions Next

r18036 Thursday 20th September, 2012 at 09:17:56 UTC by Miodrag Milanović
making pcecommn to be a main class for other pce related drivers (nw)
[src/mame/drivers]ggconnie.c paranoia.c tourvis.c uapce.c
[src/mame/machine]pcecommn.c pcecommn.h
[src/mess/drivers]x1twin.c

trunk/src/mame/machine/pcecommn.c
r18035r18036
44#include "video/vdc.h"
55#include "cpu/h6280/h6280.h"
66
7/* system RAM */
8struct pce_struct pce;
7#define TG_16_JOY_SIG      0x00
8#define PCE_JOY_SIG         0x40
9#define NO_CD_SIG         0x80
10#define CD_SIG            0x00
11/* these might be used to indicate something, but they always seem to return 1 */
12#define CONST_SIG         0x30
913
1014/* joystick related data*/
11
1215#define JOY_CLOCK   0x01
1316#define JOY_RESET   0x02
1417
15static int joystick_port_select;        /* internal index of joystick ports */
16static int joystick_data_select;        /* which nibble of joystick data we want */
1718
18static UINT8 (*pce_joystick_readinputport_callback)(running_machine &) = NULL;
19
20void init_pce() {
21   pce.io_port_options = PCE_JOY_SIG | CONST_SIG;
22}
23
24MACHINE_RESET( pce ) {
25}
26
2719/* todo: how many input ports does the PCE have? */
28WRITE8_HANDLER ( pce_joystick_w )
20WRITE8_MEMBER(pce_common_state::pce_joystick_w)
2921{
3022   h6280io_set_buffer(&space.device(), data);
3123    /* bump counter on a low-to-high transition of bit 1 */
32    if((!joystick_data_select) && (data & JOY_CLOCK))
24    if((!m_joystick_data_select) && (data & JOY_CLOCK))
3325    {
34        joystick_port_select = (joystick_port_select + 1) & 0x07;
26        m_joystick_port_select = (m_joystick_port_select + 1) & 0x07;
3527    }
3628
3729    /* do we want buttons or direction? */
38    joystick_data_select = data & JOY_CLOCK;
30    m_joystick_data_select = data & JOY_CLOCK;
3931
4032    /* clear counter if bit 2 is set */
4133    if(data & JOY_RESET)
4234    {
43        joystick_port_select = 0;
35        m_joystick_port_select = 0;
4436    }
4537}
4638
47READ8_HANDLER ( pce_joystick_r )
39UINT8 pce_common_state::joy_read()
4840{
49   UINT8 ret;
50   int data;
41   return machine().root_device().ioport("JOY")->read();
42}
5143
52   if ( pce_joystick_readinputport_callback != NULL )
53   {
54      data = pce_joystick_readinputport_callback(space.machine());
55   }
56   else
57   {
58      data = space.machine().root_device().ioport("JOY")->read();
59   }
60   if(joystick_data_select) data >>= 4;
61   ret = (data & 0x0F) | pce.io_port_options;
44READ8_MEMBER(pce_common_state::pce_joystick_r)
45{
46   UINT8 ret;
47   int data = joy_read();
48   if (m_joystick_data_select) data >>= 4;
49   ret = (data & 0x0F) | m_io_port_options;
6250#ifdef UNIFIED_PCE
6351   ret &= ~0x40;
6452#endif
6553   return (ret);
6654}
6755
68void pce_set_joystick_readinputport_callback( UINT8 (*joy_read)(running_machine &))
56DRIVER_INIT_MEMBER(pce_common_state,pce_common)
6957{
70   pce_joystick_readinputport_callback = joy_read;
58   m_io_port_options = PCE_JOY_SIG | CONST_SIG;
7159}
60
trunk/src/mame/machine/pcecommn.h
r18035r18036
1111
1212#define   PCE_MAIN_CLOCK      21477270
1313
14DECLARE_WRITE8_HANDLER ( pce_joystick_w );
15 DECLARE_READ8_HANDLER ( pce_joystick_r );
16
17#define TG_16_JOY_SIG      0x00
18#define PCE_JOY_SIG         0x40
19#define NO_CD_SIG         0x80
20#define CD_SIG            0x00
21/* these might be used to indicate something, but they always seem to return 1 */
22#define CONST_SIG         0x30
23
24struct pce_struct
14class pce_common_state : public driver_device
2515{
26   UINT8 io_port_options; /*driver-specific options for the PCE*/
27};
28extern struct pce_struct pce;
29void init_pce();
30MACHINE_RESET( pce );
16public:
17   pce_common_state(const machine_config &mconfig, device_type type, const char *tag)
18      : driver_device(mconfig, type, tag) { }
3119
32void pce_set_joystick_readinputport_callback( UINT8 (*joy_read)(running_machine &));
20   DECLARE_WRITE8_MEMBER(pce_joystick_w);
21   DECLARE_READ8_MEMBER(pce_joystick_r);     
22   
23   DECLARE_DRIVER_INIT(pce_common);
24   
25   virtual UINT8 joy_read();
26private:
27   UINT8 m_io_port_options;    /*driver-specific options for the PCE*/
28   int m_joystick_port_select; /* internal index of joystick ports */
29   int m_joystick_data_select; /* which nibble of joystick data we want */
30};
3331#endif
trunk/src/mame/drivers/ggconnie.c
r18035r18036
2323#include "sound/c6280.h"
2424
2525
26class ggconnie_state : public driver_device
26class ggconnie_state : public pce_common_state
2727{
2828public:
2929   ggconnie_state(const machine_config &mconfig, device_type type, const char *tag)
30      : driver_device(mconfig, type, tag) { }
30      : pce_common_state(mconfig, type, tag) { }
3131
3232   DECLARE_WRITE8_MEMBER(lamp_w);
33   DECLARE_WRITE8_MEMBER(output_w);
34   DECLARE_DRIVER_INIT(ggconnie);
33   DECLARE_WRITE8_MEMBER(output_w);   
3534};
3635
3736
r18035r18036
193192   ROM_LOAD( "adpcm_u31.bin", 0x0000, 0x80000, CRC(de514c2b) SHA1(da73aa825d73646f556f6d4dbb46f43acf7c3357) )
194193ROM_END
195194
196DRIVER_INIT_MEMBER(ggconnie_state,ggconnie)
197{
198   init_pce();
199}
200
201GAME( 1996, ggconnie, 0, ggconnie, ggconnie, ggconnie_state, ggconnie, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", GAME_NO_SOUND | GAME_NOT_WORKING )
195GAME( 1996, ggconnie, 0, ggconnie, ggconnie, pce_common_state, pce_common, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", GAME_NO_SOUND | GAME_NOT_WORKING )
trunk/src/mame/drivers/tourvis.c
r18035r18036
187187#include "machine/i8155.h"
188188
189189
190class tourvision_state : public driver_device
190class tourvision_state : public pce_common_state
191191{
192192public:
193193   tourvision_state(const machine_config &mconfig, device_type type, const char *tag)
194      : driver_device(mconfig, type, tag) { }
194      : pce_common_state(mconfig, type, tag) { }
195195
196196   DECLARE_WRITE8_MEMBER(tourvision_8085_d000_w);
197197   DECLARE_WRITE8_MEMBER(tourvision_i8155_a_w);
198198   DECLARE_WRITE8_MEMBER(tourvision_i8155_b_w);
199199   DECLARE_WRITE8_MEMBER(tourvision_i8155_c_w);
200200   DECLARE_WRITE_LINE_MEMBER(tourvision_timer_out);
201   DECLARE_DRIVER_INIT(tourvision);
202201};
203202
204203
r18035r18036
285284   AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE_LEGACY(vce_r, vce_w )
286285   AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE_LEGACY("c6280", c6280_r, c6280_w )
287286   AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE_LEGACY(h6280_timer_r, h6280_timer_w )
288   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE_LEGACY(pce_joystick_r, pce_joystick_w )
287   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
289288   AM_RANGE( 0x1FF400, 0x1FF7FF) AM_READWRITE_LEGACY(h6280_irq_status_r, h6280_irq_status_w )
290289ADDRESS_MAP_END
291290
r18035r18036
513512   TOURVISION_BIOS
514513ROM_END
515514
516
517DRIVER_INIT_MEMBER(tourvision_state,tourvision)
518{
519   init_pce();
520}
521
522GAME( 19??, tourvis,  0,       tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", GAME_IS_BIOS_ROOT | GAME_NOT_WORKING )
523GAME( 1988, tvlegaxe, tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Makyo Densetsu - The Legenary Axe (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
524GAME( 1989, tvusapb,  tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Aicom", "USA Pro Basketball (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
525GAME( 1989, tvdunexp, tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Hudson / Atlus", "Dungeon Explorer (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
526GAME( 1990, tvthbld,  tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Sega / NEC Avenue", "Thunder Blade (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
527GAME( 1990, tvrs2,    tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Taito", "Rastan Saga II (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
528GAME( 1990, tvsvball, tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Video System", "Super Volley ball (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
529GAME( 1991, tvpwlg4,  tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Hudson", "Power League IV (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
530GAME( 1991, tvsci,    tourvis, tourvision, tourvision, tourvision_state, tourvision, ROT0, "bootleg (Tourvision) / Taito", "Special Criminal Investigation (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
515GAME( 19??, tourvis,  0,       tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", GAME_IS_BIOS_ROOT | GAME_NOT_WORKING )
516GAME( 1988, tvlegaxe, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Makyo Densetsu - The Legenary Axe (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
517GAME( 1989, tvusapb,  tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Aicom", "USA Pro Basketball (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
518GAME( 1989, tvdunexp, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson / Atlus", "Dungeon Explorer (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
519GAME( 1990, tvthbld,  tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / NEC Avenue", "Thunder Blade (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
520GAME( 1990, tvrs2,    tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Rastan Saga II (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
521GAME( 1990, tvsvball, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Video System", "Super Volley ball (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
522GAME( 1991, tvpwlg4,  tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson", "Power League IV (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
523GAME( 1991, tvsci,    tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Special Criminal Investigation (Tourvision PCE bootleg)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
trunk/src/mame/drivers/paranoia.c
r18035r18036
4343#include "sound/c6280.h"
4444
4545
46class paranoia_state : public driver_device
46class paranoia_state : public pce_common_state
4747{
4848public:
4949   paranoia_state(const machine_config &mconfig, device_type type, const char *tag)
50      : driver_device(mconfig, type, tag) { }
50      : pce_common_state(mconfig, type, tag) { }
5151
5252   DECLARE_WRITE8_MEMBER(paranoia_8085_d000_w);
5353   DECLARE_READ8_MEMBER(paranoia_z80_io_01_r);
r18035r18036
5858   DECLARE_WRITE8_MEMBER(paranoia_i8155_b_w);
5959   DECLARE_WRITE8_MEMBER(paranoia_i8155_c_w);
6060   DECLARE_WRITE_LINE_MEMBER(paranoia_i8155_timer_out);
61   DECLARE_DRIVER_INIT(paranoia);
6261};
6362
6463
r18035r18036
8180   AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE_LEGACY(vce_r, vce_w )
8281   AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE_LEGACY("c6280", c6280_r, c6280_w )
8382   AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE_LEGACY(h6280_timer_r, h6280_timer_w )
84   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE_LEGACY(pce_joystick_r, pce_joystick_w )
83   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
8584   AM_RANGE( 0x1FF400, 0x1FF7FF) AM_READWRITE_LEGACY(h6280_irq_status_r, h6280_irq_status_w )
8685ADDRESS_MAP_END
8786
r18035r18036
228227   ROM_LOAD( "4.352", 0x18000, 0x8000, CRC(11297fed) SHA1(17a294e65ba1c4806307602dee4c7c627ad1fcfd) )
229228ROM_END
230229
231DRIVER_INIT_MEMBER(paranoia_state,paranoia)
232{
233   init_pce();
234}
235
236GAME( 1990, paranoia, 0, paranoia, paranoia, paranoia_state, paranoia, ROT0, "Naxat Soft", "Paranoia", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
230GAME( 1990, paranoia, 0, paranoia, paranoia, pce_common_state, pce_common, ROT0, "Naxat Soft", "Paranoia", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
trunk/src/mame/drivers/uapce.c
r18035r18036
9999#include "sound/discrete.h"
100100
101101
102class uapce_state : public driver_device
102class uapce_state : public pce_common_state
103103{
104104public:
105105   uapce_state(const machine_config &mconfig, device_type type, const char *tag)
106      : driver_device(mconfig, type, tag) { }
106      : pce_common_state(mconfig, type, tag) { }
107107
108108   UINT8 m_jamma_if_control_latch;
109109   DECLARE_WRITE8_MEMBER(jamma_if_control_latch_w);
110110   DECLARE_READ8_MEMBER(jamma_if_control_latch_r);
111111   DECLARE_READ8_MEMBER(jamma_if_read_dsw);
112   DECLARE_DRIVER_INIT(uapce);
112   virtual UINT8 joy_read();
113113   virtual void machine_reset();
114114};
115115
r18035r18036
213213   return dsw_val & 1;
214214}
215215
216static UINT8 jamma_if_read_joystick( running_machine &machine )
216UINT8 uapce_state::joy_read()
217217{
218   uapce_state *state = machine.driver_data<uapce_state>();
219   if ( state->m_jamma_if_control_latch & 0x10 )
218   if ( m_jamma_if_control_latch & 0x10 )
220219   {
221      return state->ioport("JOY" )->read();
220      return ioport("JOY" )->read();
222221   }
223222   else
224223   {
225      return machine.root_device().ioport("JOY" )->read() | 0x08;
224      return machine().root_device().ioport("JOY" )->read() | 0x08;
226225   }
227226}
228227
229228void uapce_state::machine_reset()
230229{
231   pce_set_joystick_readinputport_callback( jamma_if_read_joystick );
232230   m_jamma_if_control_latch = 0;
233231}
234232
r18035r18036
290288   AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE_LEGACY(vce_r, vce_w )
291289   AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE_LEGACY("c6280", c6280_r, c6280_w )
292290   AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE_LEGACY(h6280_timer_r, h6280_timer_w )
293   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE_LEGACY(pce_joystick_r, pce_joystick_w )
291   AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w )
294292   AM_RANGE( 0x1FF400, 0x1FF7FF) AM_READWRITE_LEGACY(h6280_irq_status_r, h6280_irq_status_w )
295293ADDRESS_MAP_END
296294
r18035r18036
374372   ROM_LOAD( "u1.bin", 0x0000, 0x800, CRC(f5e538a9) SHA1(19ac9525c9ad6bea1789cc9e63cdb7fe949867d9) )
375373ROM_END
376374
377DRIVER_INIT_MEMBER(uapce_state,uapce)
378{
379   init_pce();
380}
381
382GAME( 1989, blazlaz, 0, uapce, uapce, uapce_state, uapce, ROT0, "Hudson Soft", "Blazing Lazers", GAME_IMPERFECT_SOUND )
383GAME( 1989, keith,   0, uapce, uapce, uapce_state, uapce, ROT0, "Hudson Soft", "Keith Courage In Alpha Zones", GAME_IMPERFECT_SOUND )
384GAME( 1989, aliencr, 0, uapce, uapce, uapce_state, uapce, ROT0, "Hudson Soft", "Alien Crush", GAME_IMPERFECT_SOUND )
385GAME( 1989, paclandp,0, uapce, uapce, uapce_state, uapce, ROT0, "Namco", "Pac-Land (United Amusements PC Engine)", GAME_IMPERFECT_SOUND )
375GAME( 1989, blazlaz, 0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Blazing Lazers", GAME_IMPERFECT_SOUND )
376GAME( 1989, keith,   0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Keith Courage In Alpha Zones", GAME_IMPERFECT_SOUND )
377GAME( 1989, aliencr, 0, uapce, uapce, pce_common_state, pce_common, ROT0, "Hudson Soft", "Alien Crush", GAME_IMPERFECT_SOUND )
378GAME( 1989, paclandp,0, uapce, uapce, pce_common_state, pce_common, ROT0, "Namco", "Pac-Land (United Amusements PC Engine)", GAME_IMPERFECT_SOUND )
trunk/src/mess/drivers/x1twin.c
r18035r18036
1818#include "video/vdc.h"
1919//#include "cpu/h6280/h6280.h"
2020//#include "sound/c6280.h"
21#include "machine/pcecommn.h"
2221
2322#include "rendlay.h"
2423
r18035r18036
3736#define X1_MAIN_CLOCK XTAL_16MHz
3837#define VDP_CLOCK  XTAL_42_9545MHz
3938#define MCU_CLOCK  XTAL_6MHz
39#define   PCE_MAIN_CLOCK      VDP_CLOCK / 2
4040
4141UINT32 x1twin_state::screen_update_x1pce(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
4242{

Previous 199869 Revisions Next


© 1997-2024 The MAME Team