Previous 199869 Revisions Next

r36656 Thursday 26th March, 2015 at 08:01:12 UTC by Miodrag Milanović
Merge branch 'master' of https://github.com/mamedev/mame
[src/mame/drivers]powerins.c
[src/mame/includes]powerins.h
[src/mame/video]powerins.c

trunk/src/mame/drivers/powerins.c
r245167r245168
1818Note:
1919- To enter test mode press F2 (Test)
2020  Use 9 (Service Coin) to change page.
21- In powerina there is a hidden test mode screen because it's a bootleg
21- In powerinsa there is a hidden test mode screen because it's a bootleg
2222  without a sound CPU. Set 18ff08 to 4 during test mode that calls the
2323  data written to $10001e "sound code".
2424
r245167r245168
4343***************************************************************************/
4444
4545
46WRITE16_MEMBER(powerins_state::okibank_w)
46WRITE8_MEMBER(powerins_state::powerinsa_okibank_w)
4747{
48   if (ACCESSING_BITS_0_7)
49   {
50      UINT8 *RAM = memregion("oki1")->base();
51      int new_bank = data & 0x7;
52
53      if (new_bank != m_oki_bank)
54      {
55         m_oki_bank = new_bank;
56         memcpy(&RAM[0x30000],&RAM[0x40000 + 0x10000*new_bank],0x10000);
57      }
58   }
48   membank("okibank")->set_entry(data & 7);
5949}
6050
61WRITE16_MEMBER(powerins_state::soundlatch_w)
51READ8_MEMBER(powerins_state::powerinsb_fake_ym2203_r)
6252{
63   if (ACCESSING_BITS_0_7)
64      soundlatch_byte_w(space, 0, data & 0xff);
65}
66
67READ8_MEMBER(powerins_state::powerinb_fake_ym2203_r)
68{
6953   return 0x01;
7054}
7155
7256
7357static ADDRESS_MAP_START( powerins_map, AS_PROGRAM, 16, powerins_state )
74   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                         // ROM
58   AM_RANGE(0x000000, 0x0fffff) AM_ROM
7559   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
7660   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
7761   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
7862   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
79   AM_RANGE(0x100014, 0x100015) AM_WRITE(flipscreen_w)                                // Flip Screen
80   AM_RANGE(0x100016, 0x100017) AM_WRITENOP                                                    // ? always 1
81   AM_RANGE(0x100018, 0x100019) AM_WRITE(tilebank_w)                                  // Tiles Banking (VRAM 0)
82   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(soundlatch_w)                                // Sound Latch
83   AM_RANGE(0x100030, 0x100031) AM_WRITE(okibank_w)                                   // Sound
84   AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")   // Palette
85   AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0")                             // VRAM 0 Control
86   AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0")     // VRAM 0
87   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1")     // VRAM 1
88   AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w)                                    // Mirror of VRAM 1?
89   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram")                                   // RAM + Sprites
63   AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff)
64   AM_RANGE(0x100016, 0x100017) AM_WRITENOP          // ? always 1
65   AM_RANGE(0x100018, 0x100019) AM_WRITE8(tilebank_w, 0x00ff)
66   AM_RANGE(0x10001e, 0x10001f) AM_WRITE8(soundlatch_byte_w, 0x00ff)
67   AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
68   AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0")
69   AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0")
70   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1")
71   AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w)
72   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram")
9073ADDRESS_MAP_END
9174
92/* powerina: same as the original one but without the sound cpu (and inferior sound HW) */
93static ADDRESS_MAP_START( powerina_map, AS_PROGRAM, 16, powerins_state )
94   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                         // ROM
95   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
96   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
97   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
98   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
99   AM_RANGE(0x100014, 0x100015) AM_WRITE(flipscreen_w)                                // Flip Screen
100   AM_RANGE(0x100016, 0x100017) AM_WRITENOP                                                    // ? always 1
101   AM_RANGE(0x100018, 0x100019) AM_WRITE(tilebank_w)                                  // Tiles Banking (VRAM 0)
102   AM_RANGE(0x10001e, 0x10001f) AM_WRITENOP                                                    // Sound Latch, NOPed since there is no sound cpu
103   AM_RANGE(0x100030, 0x100031) AM_WRITE(okibank_w)                                   // Sound
104   AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)     // (used by powerina)
105   AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")   // Palette
106   AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0")                             // VRAM 0 Control
107   AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0")     // VRAM 0
108   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1")     // VRAM 1
109   AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w)                                    // Mirror of VRAM 1?
110   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram")                                   // RAM + Sprites
75/* powerinsa: same as the original one but without the sound cpu (and inferior sound HW) */
76static ADDRESS_MAP_START( powerinsa_map, AS_PROGRAM, 16, powerins_state )
77   AM_IMPORT_FROM(powerins_map)
78   AM_RANGE(0x100030, 0x100031) AM_WRITE8(powerinsa_okibank_w, 0x00ff)
79   AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
11180ADDRESS_MAP_END
11281
11382static ADDRESS_MAP_START( powerins_sound_map, AS_PROGRAM, 8, powerins_state )
r245167r245168
12695   AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
12796ADDRESS_MAP_END
12897
129static ADDRESS_MAP_START( powerinb_sound_io_map, AS_IO, 8, powerins_state )
98static ADDRESS_MAP_START( powerinsb_sound_io_map, AS_IO, 8, powerins_state )
13099   ADDRESS_MAP_GLOBAL_MASK(0xff)
131   AM_RANGE(0x00, 0x00) AM_READ(powerinb_fake_ym2203_r) AM_WRITENOP
100   AM_RANGE(0x00, 0x00) AM_READ(powerinsb_fake_ym2203_r) AM_WRITENOP
132101   AM_RANGE(0x01, 0x01) AM_NOP
133102   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
134103   AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
135104   AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w)
136105ADDRESS_MAP_END
137106
107static ADDRESS_MAP_START( powerinsa_oki_map, AS_0, 8, powerins_state )
108   AM_RANGE(0x00000, 0x2ffff) AM_ROM
109   AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank")
110ADDRESS_MAP_END
138111
112
139113/***************************************************************************
140114
141115                                Input Ports
r245167r245168
311285
312286***************************************************************************/
313287
314void powerins_state::machine_start()
288MACHINE_START_MEMBER(powerins_state, powerinsa)
315289{
316   save_item(NAME(m_oki_bank));
290   membank("okibank")->configure_entries(0, 5, memregion("oki1")->base() + 0x30000, 0x10000);
317291}
318292
319void powerins_state::machine_reset()
320{
321   m_oki_bank = -1;    // samples bank "uninitialised"
322}
323
324293static MACHINE_CONFIG_START( powerins, powerins_state )
325294
326295   /* basic machine hardware */
r245167r245168
365334   MCFG_NMK112_ROM1("oki2")
366335MACHINE_CONFIG_END
367336
368static MACHINE_CONFIG_DERIVED( powerina, powerins )
337static MACHINE_CONFIG_DERIVED( powerinsa, powerins )
369338
370339   /* basic machine hardware */
371340
372341   MCFG_CPU_MODIFY("maincpu")
373   MCFG_CPU_PROGRAM_MAP(powerina_map)
342   MCFG_CPU_PROGRAM_MAP(powerinsa_map)
374343
375344   MCFG_SCREEN_MODIFY("screen")
376345   MCFG_SCREEN_REFRESH_RATE(60)
377346
378347   MCFG_DEVICE_REMOVE("soundcpu")
379348
349   MCFG_MACHINE_START_OVERRIDE(powerins_state, powerinsa)
350
380351   MCFG_OKIM6295_REPLACE("oki1", 990000, OKIM6295_PIN7_LOW) // pin7 not verified
352   MCFG_DEVICE_ADDRESS_MAP(AS_0, powerinsa_oki_map)
381353   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
382354
383355   MCFG_DEVICE_REMOVE("oki2")
r245167r245168
385357   MCFG_DEVICE_REMOVE("nmk112")
386358MACHINE_CONFIG_END
387359
388static MACHINE_CONFIG_DERIVED( powerinb, powerins )
360static MACHINE_CONFIG_DERIVED( powerinsb, powerins )
389361
390362   /* basic machine hardware */
391363
r245167r245168
393365   MCFG_SCREEN_REFRESH_RATE(60)
394366
395367   MCFG_CPU_MODIFY("soundcpu") /* 6 MHz */
396   MCFG_CPU_IO_MAP(powerinb_sound_io_map)
368   MCFG_CPU_IO_MAP(powerinsb_sound_io_map)
397369   MCFG_CPU_PERIODIC_INT_DRIVER(powerins_state, irq0_line_hold,  120)  // YM2203 rate is at 150??
398370
399371   MCFG_DEVICE_REMOVE("ym2203")    // Sound code talks to one, but it's not fitted on the board
r245167r245168
590562   ROM_LOAD( "rom8",  0x400000, 0x200000, CRC(b02fdd6d) SHA1(1e2c52b4e9999f0b564fcf13ff41b097ad7d0c39) )
591563   ROM_LOAD( "rom7",  0x600000, 0x200000, CRC(92ab9996) SHA1(915ec8f383cc3652c3816a9b56ee54e22e104a5c) )
592564
593   ROM_REGION( 0x090000, "oki1", 0 )   /* 8 bit adpcm (banked) */
594   ROM_LOAD( "rom5", 0x000000, 0x030000, CRC(88579c8f) SHA1(13083934ab294c9b08d3e36f55c00a6a2e5a0507) )
595   ROM_CONTINUE(     0x040000, 0x050000 )
565   ROM_REGION( 0x080000, "oki1", 0 )   /* 8 bit adpcm (banked) */
566   ROM_LOAD( "rom5", 0x000000, 0x080000, CRC(88579c8f) SHA1(13083934ab294c9b08d3e36f55c00a6a2e5a0507) )
596567ROM_END
597568
598569/***************************************************************************
r245167r245168
701672
702673
703674/* all supported sets give a 93.10.20 date */
704GAME( 1993, powerins,  0,        powerins, powerins, driver_device, 0, ROT0, "Atlus", "Power Instinct (USA)", GAME_SUPPORTS_SAVE )
705GAME( 1993, powerinsj, powerins, powerins, powerinj, driver_device, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", GAME_SUPPORTS_SAVE )
706GAME( 1993, powerinsa, powerins, powerina, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", GAME_SUPPORTS_SAVE )
707GAME( 1993, powerinsb, powerins, powerinb, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", GAME_SUPPORTS_SAVE )
675GAME( 1993, powerins,  0,        powerins,  powerins, driver_device, 0, ROT0, "Atlus", "Power Instinct (USA)", GAME_SUPPORTS_SAVE )
676GAME( 1993, powerinsj, powerins, powerins,  powerinj, driver_device, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", GAME_SUPPORTS_SAVE )
677GAME( 1993, powerinsa, powerins, powerinsa, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", GAME_SUPPORTS_SAVE )
678GAME( 1993, powerinsb, powerins, powerinsb, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/powerins.h
r245167r245168
2727
2828   tilemap_t *m_tilemap_0;
2929   tilemap_t *m_tilemap_1;
30   int m_oki_bank;
3130   int m_tile_bank;
3231
33   DECLARE_WRITE16_MEMBER(okibank_w);
34   DECLARE_WRITE16_MEMBER(soundlatch_w);
35   DECLARE_WRITE16_MEMBER(flipscreen_w);
36   DECLARE_WRITE16_MEMBER(tilebank_w);
32   DECLARE_WRITE8_MEMBER(powerinsa_okibank_w);
33   DECLARE_WRITE8_MEMBER(flipscreen_w);
34   DECLARE_WRITE8_MEMBER(tilebank_w);
3735   DECLARE_WRITE16_MEMBER(vram_0_w);
3836   DECLARE_WRITE16_MEMBER(vram_1_w);
39   DECLARE_READ8_MEMBER(powerinb_fake_ym2203_r);
37   DECLARE_READ8_MEMBER(powerinsb_fake_ym2203_r);
4038
39   DECLARE_MACHINE_START(powerinsa);
40
4141   TILE_GET_INFO_MEMBER(get_tile_info_0);
4242   TILE_GET_INFO_MEMBER(get_tile_info_1);
4343   TILEMAP_MAPPER_MEMBER(get_memory_offset_0);
4444   
45   virtual void machine_start();
46   virtual void machine_reset();
4745   virtual void video_start();
4846   
4947   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/video/powerins.c
r245167r245168
4848***************************************************************************/
4949
5050
51WRITE16_MEMBER(powerins_state::flipscreen_w)
51WRITE8_MEMBER(powerins_state::flipscreen_w)
5252{
53   if (ACCESSING_BITS_0_7) flip_screen_set(data & 1 );
53   flip_screen_set(data & 1 );
5454}
5555
56WRITE16_MEMBER(powerins_state::tilebank_w)
56WRITE8_MEMBER(powerins_state::tilebank_w)
5757{
58   if (ACCESSING_BITS_0_7)
58   if (data != m_tile_bank)
5959   {
60      if (data != m_tile_bank)
61      {
62         m_tile_bank = data;     // Tiles Bank (VRAM 0)
63         m_tilemap_0->mark_all_dirty();
64      }
60      m_tile_bank = data;     // Tiles Bank (VRAM 0)
61      m_tilemap_0->mark_all_dirty();
6562   }
6663}
6764
6865
69
70
7166/***************************************************************************
7267
7368                        Callbacks for the TileMap code


Previous 199869 Revisions Next


© 1997-2024 The MAME Team