Previous 199869 Revisions Next

r36137 Saturday 28th February, 2015 at 07:51:01 UTC by Osso
ssv.c: added save state support (nw)
[src/mame/drivers]ssv.c
[src/mame/includes]ssv.h
[src/mame/video]ssv.c st0020.c

trunk/src/mame/drivers/ssv.c
r244648r244649
179179   m_maincpu->set_input_line(0, (m_requested_int & m_irq_enable)? ASSERT_LINE : CLEAR_LINE);
180180}
181181
182IRQ_CALLBACK_MEMBER(ssv_state::ssv_irq_callback)
182IRQ_CALLBACK_MEMBER(ssv_state::irq_callback)
183183{
184184   int i;
185185   for ( i = 0; i <= 7; i++ )
r244648r244649
193193   return 0;
194194}
195195
196WRITE16_MEMBER(ssv_state::ssv_irq_ack_w)
196WRITE16_MEMBER(ssv_state::irq_ack_w)
197197{
198198   int level = ((offset * 2) & 0x70) >> 4;
199199
r244648r244649
220220    ultrax:     40,00 at the start then 42,4a
221221    twineag2:   40,00 at the start then 42,4a
222222*/
223WRITE16_MEMBER(ssv_state::ssv_irq_enable_w)
223WRITE16_MEMBER(ssv_state::irq_enable_w)
224224{
225225   COMBINE_DATA(&m_irq_enable);
226226}
227227
228TIMER_DEVICE_CALLBACK_MEMBER(ssv_state::ssv_interrupt)
228TIMER_DEVICE_CALLBACK_MEMBER(ssv_state::interrupt)
229229{
230230   int scanline = param;
231231
r244648r244649
283283    survarts:   83
284284    sxyreact:   80
285285*/
286WRITE16_MEMBER(ssv_state::ssv_lockout_w)
286WRITE16_MEMBER(ssv_state::lockout_w)
287287{
288288//  popmessage("%02X",data & 0xff);
289289   if (ACCESSING_BITS_0_7)
r244648r244649
293293      coin_counter_w(machine(), 1, data & 0x04);
294294      coin_counter_w(machine(), 0, data & 0x08);
295295//                        data & 0x40?
296      ssv_enable_video(data & 0x80);
296      enable_video(data & 0x80);
297297   }
298298}
299299
300300/* Same as above but with inverted lockout lines */
301WRITE16_MEMBER(ssv_state::ssv_lockout_inv_w)
301WRITE16_MEMBER(ssv_state::lockout_inv_w)
302302{
303303//  popmessage("%02X",data & 0xff);
304304   if (ACCESSING_BITS_0_7)
r244648r244649
308308      coin_counter_w(machine(), 1, data & 0x04);
309309      coin_counter_w(machine(), 0, data & 0x08);
310310//                        data & 0x40?
311      ssv_enable_video(data & 0x80);
311      enable_video(data & 0x80);
312312   }
313313}
314314
r244648r244649
396396   AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_SHARE("spriteram")                                       /*  Sprites */  \
397397   AM_RANGE(0x140000, 0x15ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */\
398398   AM_RANGE(0x160000, 0x17ffff) AM_RAM                                                             /*          */  \
399   AM_RANGE(0x1c0000, 0x1c0001) AM_READ(ssv_vblank_r           )                                   /*  Vblank? */  \
399   AM_RANGE(0x1c0000, 0x1c0001) AM_READ(vblank_r           )                                   /*  Vblank? */  \
400400/**/AM_RANGE(0x1c0002, 0x1c007f) AM_READONLY                                    /*  Scroll  */  \
401   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(ssv_scroll_w) AM_SHARE("scroll")                  /*  Scroll  */  \
401   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(scroll_w) AM_SHARE("scroll")                  /*  Scroll  */  \
402402   AM_RANGE(0x210002, 0x210003) AM_READ_PORT("DSW1")                                                               \
403403   AM_RANGE(0x210004, 0x210005) AM_READ_PORT("DSW2")                                                               \
404404   AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1")                                                                 \
405405   AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2")                                                                 \
406406   AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM")                                                             \
407   AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE(ssv_lockout_w)                             /*  Lockout */  \
407   AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE(lockout_w)                             /*  Lockout */  \
408408   AM_RANGE(0x210010, 0x210011) AM_WRITENOP                                                                        \
409409   AM_RANGE(0x230000, 0x230071) AM_WRITEONLY AM_SHARE("irq_vectors")                       /*  IRQ Vec */  \
410   AM_RANGE(0x240000, 0x240071) AM_WRITE(ssv_irq_ack_w )                                           /*  IRQ Ack */  \
411   AM_RANGE(0x260000, 0x260001) AM_WRITE(ssv_irq_enable_w)                                         /*  IRQ En  */  \
410   AM_RANGE(0x240000, 0x240071) AM_WRITE(irq_ack_w )                                           /*  IRQ Ack */  \
411   AM_RANGE(0x260000, 0x260001) AM_WRITE(irq_enable_w)                                         /*  IRQ En  */  \
412412   AM_RANGE(0x300000, 0x30007f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0x00ff)    /*  Sound   */  \
413413   AM_RANGE(_ROM, 0xffffff) AM_ROM AM_REGION("maincpu", 0)                                         /*  ROM     */
414414/***************************************************************************
r244648r244649
513513static ADDRESS_MAP_START( hypreact_map, AS_PROGRAM, 16, ssv_state )
514514   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)            // Watchdog
515515//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                      // ? 5 at the start
516   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)            // Inverted lockout lines
516   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w)            // Inverted lockout lines
517517//  AM_RANGE(0x280000, 0x280001) AM_READNOP                       // ? read at the start, value not used
518518   AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r)              // Inputs
519519   AM_RANGE(0xc00006, 0xc00007) AM_RAM AM_SHARE("input_sel")           //
r244648r244649
529529static ADDRESS_MAP_START( hypreac2_map, AS_PROGRAM, 16, ssv_state )
530530   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)                // Watchdog
531531//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                          // ? 5 at the start
532   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                // Inverted lockout lines
532   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w)                // Inverted lockout lines
533533//  AM_RANGE(0x280000, 0x280001) AM_READNOP                           // ? read at the start, value not used
534534   AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r)                  // Inputs
535535   AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r)                  // (again?)
r244648r244649
587587
588588/* Monster Slider needs the RAM mirrored for the gameplay logic to work correctly */
589589
590READ16_MEMBER(ssv_state::ssv_mainram_r)
590READ16_MEMBER(ssv_state::mainram_r)
591591{
592592   return m_mainram[offset];
593593}
594594
595WRITE16_MEMBER(ssv_state::ssv_mainram_w)
595WRITE16_MEMBER(ssv_state::mainram_w)
596596{
597597   COMBINE_DATA(&m_mainram[offset]);
598598}
599599
600600static ADDRESS_MAP_START( mslider_map, AS_PROGRAM, 16, ssv_state )
601   AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w) // RAM Mirror
601   AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror
602602//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                          // ? 1 at the start
603603   AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY                           // ?
604604//  AM_RANGE(0x500000, 0x500001) AM_WRITENOP                          // ? ff at the start
r244648r244649
684684   AM_RANGE(0x010000, 0x050faf) AM_RAM                                     // More RAM
685685   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)                // Watchdog
686686//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                          // ? 0,4 at the start
687   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                // Coin Counters / Lockouts
687   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w)                // Coin Counters / Lockouts
688688   AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r)                      // Sound
689689//  0x540000, 0x540003, related to lev 5 irq?
690690   AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w)               // Sound Bank
r244648r244649
751751}
752752
753753static ADDRESS_MAP_START( sxyreact_map, AS_PROGRAM, 16, ssv_state )
754//  AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w)             // sxyreac2 reads / writes here, why?
754//  AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(mainram_r, mainram_w)             // sxyreac2 reads / writes here, why?
755755   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)                            // Watchdog
756756//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                                      // ? 1 at the start
757   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                            // Inverted lockout lines
757   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w)                            // Inverted lockout lines
758758   AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r)                         // ?
759759   AM_RANGE(0x500004, 0x500005) AM_READWRITE(sxyreact_dial_r, sxyreact_motor_w)        // Dial Value (serial)
760760   AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w)                              // Dial Value (advance 1 bit)
r244648r244649
828828}
829829
830830static ADDRESS_MAP_START( jsk_map, AS_PROGRAM, 16, ssv_state )
831   AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w) // RAM Mirror?
831   AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror?
832832   AM_RANGE(0x210000, 0x210001) AM_WRITE(watchdog_reset16_w)               // Watchdog
833833   AM_RANGE(0x400000, 0x47ffff) AM_RAM                                     // RAM?
834834   AM_RANGE(0x900000, 0x900007) AM_READWRITE(latch16_r, latch16_w)
r244648r244649
898898   AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(eaglshot_gfxram_r, eaglshot_gfxram_w)
899899   AM_RANGE(0x210000, 0x210001) AM_READNOP /*AM_READ(watchdog_reset16_r)*/                 // Watchdog
900900//  AM_RANGE(0x210002, 0x210003) AM_WRITENOP                                      // ? 0,4 at the start
901   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                            // Inverted lockout lines
901   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w)                            // Inverted lockout lines
902902   AM_RANGE(0x800000, 0x800001) AM_WRITE(eaglshot_gfxrom_bank_w)
903903   AM_RANGE(0x900000, 0x900001) AM_WRITE(eaglshot_trackball_w)
904904   AM_RANGE(0xa00000, 0xbfffff) AM_ROMBANK("gfxrom")
r244648r244649
24812481
24822482***************************************************************************/
24832483
2484void ssv_state::init_ssv(int interrupt_ultrax)
2484void ssv_state::init(int interrupt_ultrax)
24852485{
24862486   int i;
24872487   for (i = 0; i < 16; i++)
r244648r244649
24892489                        ( (i & 4) ? (2 << 16) : 0 ) +
24902490                        ( (i & 2) ? (4 << 16) : 0 ) +
24912491                        ( (i & 1) ? (8 << 16) : 0 ) ;
2492   ssv_enable_video(1);
2492   enable_video(1);
24932493   m_interrupt_ultrax = interrupt_ultrax;
2494   
2495   save_item(NAME(m_requested_int));
2496   save_item(NAME(m_irq_enable));
24942497}
24952498
24962499void ssv_state::init_hypreac2_common()
r244648r244649
25282531   }
25292532}
25302533
2531DRIVER_INIT_MEMBER(ssv_state,drifto94)     {    init_ssv(0); init_st010();  }
2532DRIVER_INIT_MEMBER(ssv_state,eaglshot)     {    init_ssv(0); init_eaglshot_banking();    }
2533DRIVER_INIT_MEMBER(ssv_state,gdfs)         {    init_ssv(0); }
2534DRIVER_INIT_MEMBER(ssv_state,hypreact)     {    init_ssv(0); }
2535DRIVER_INIT_MEMBER(ssv_state,hypreac2)     {    init_ssv(0); init_hypreac2_common();    }
2536DRIVER_INIT_MEMBER(ssv_state,janjans1)     {    init_ssv(0); }
2537DRIVER_INIT_MEMBER(ssv_state,keithlcy)     {    init_ssv(0); }
2538DRIVER_INIT_MEMBER(ssv_state,meosism)       {   init_ssv(0); }
2539DRIVER_INIT_MEMBER(ssv_state,mslider)       {   init_ssv(0); }
2540DRIVER_INIT_MEMBER(ssv_state,ryorioh)       {   init_ssv(0); }
2541DRIVER_INIT_MEMBER(ssv_state,srmp4)        {    init_ssv(0);
2534DRIVER_INIT_MEMBER(ssv_state,drifto94)     {    init(0); init_st010();  }
2535DRIVER_INIT_MEMBER(ssv_state,eaglshot)     {    init(0); init_eaglshot_banking(); save_item(NAME(m_trackball_select)); }
2536DRIVER_INIT_MEMBER(ssv_state,gdfs)         {    init(0); save_item(NAME(m_gdfs_lightgun_select)); save_item(NAME(m_gdfs_eeprom_old)); }
2537DRIVER_INIT_MEMBER(ssv_state,hypreact)     {    init(0); }
2538DRIVER_INIT_MEMBER(ssv_state,hypreac2)     {    init(0); init_hypreac2_common();    }
2539DRIVER_INIT_MEMBER(ssv_state,janjans1)     {    init(0); }
2540DRIVER_INIT_MEMBER(ssv_state,keithlcy)     {    init(0); }
2541DRIVER_INIT_MEMBER(ssv_state,meosism)       {   init(0); }
2542DRIVER_INIT_MEMBER(ssv_state,mslider)       {   init(0); }
2543DRIVER_INIT_MEMBER(ssv_state,ryorioh)       {   init(0); }
2544DRIVER_INIT_MEMBER(ssv_state,srmp4)        {    init(0);
25422545//  ((UINT16 *)memregion("maincpu")->base())[0x2b38/2] = 0x037a;   /* patch to see gal test mode */
25432546}
2544DRIVER_INIT_MEMBER(ssv_state,srmp7)        {    init_ssv(0); }
2545DRIVER_INIT_MEMBER(ssv_state,stmblade)     {    init_ssv(0); init_st010(); }
2546DRIVER_INIT_MEMBER(ssv_state,survarts)     {    init_ssv(0); }
2547DRIVER_INIT_MEMBER(ssv_state,dynagear)     {    init_ssv(0); }
2548DRIVER_INIT_MEMBER(ssv_state,sxyreact)     {    init_ssv(0); init_hypreac2_common();    }
2549DRIVER_INIT_MEMBER(ssv_state,cairblad)     {    init_ssv(0); init_hypreac2_common();    }
2550DRIVER_INIT_MEMBER(ssv_state,sxyreac2)     {    init_ssv(0); init_hypreac2_common();    }
2551DRIVER_INIT_MEMBER(ssv_state,twineag2)     {    init_ssv(1); init_st010();  }
2552DRIVER_INIT_MEMBER(ssv_state,ultrax)        {   init_ssv(1); }
2553DRIVER_INIT_MEMBER(ssv_state,vasara)        {   init_ssv(0); }
2554DRIVER_INIT_MEMBER(ssv_state,jsk)          {    init_ssv(0); }
2547DRIVER_INIT_MEMBER(ssv_state,srmp7)        {    init(0); }
2548DRIVER_INIT_MEMBER(ssv_state,stmblade)     {    init(0); init_st010(); }
2549DRIVER_INIT_MEMBER(ssv_state,survarts)     {    init(0); }
2550DRIVER_INIT_MEMBER(ssv_state,dynagear)     {    init(0); }
2551DRIVER_INIT_MEMBER(ssv_state,sxyreact)     {    init(0); init_hypreac2_common();  save_item(NAME(m_sxyreact_serial)); save_item(NAME(m_sxyreact_dial)); }
2552DRIVER_INIT_MEMBER(ssv_state,cairblad)     {    init(0); init_hypreac2_common();    }
2553DRIVER_INIT_MEMBER(ssv_state,sxyreac2)     {    init(0); init_hypreac2_common();  save_item(NAME(m_sxyreact_serial)); save_item(NAME(m_sxyreact_dial)); }
2554DRIVER_INIT_MEMBER(ssv_state,twineag2)     {    init(1); init_st010();  }
2555DRIVER_INIT_MEMBER(ssv_state,ultrax)        {   init(1); }
2556DRIVER_INIT_MEMBER(ssv_state,vasara)        {   init(0); }
2557DRIVER_INIT_MEMBER(ssv_state,jsk)          {    init(0); save_item(NAME(m_latches)); }
25552558
25562559#define SSV_MASTER_CLOCK XTAL_48MHz/3
25572560
r244648r244649
25672570
25682571   /* basic machine hardware */
25692572   MCFG_CPU_ADD("maincpu", V60, SSV_MASTER_CLOCK) /* Based on STA-0001 & STA-0001B System boards */
2570   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ssv_state,ssv_irq_callback)
2573   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(ssv_state,irq_callback)
25712574
2572   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ssv_state, ssv_interrupt, "screen", 0, 1)
2575   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ssv_state, interrupt, "screen", 0, 1)
25732576
25742577   /* video hardware */
25752578   MCFG_SCREEN_ADD("screen", RASTER)
25762579   MCFG_SCREEN_RAW_PARAMS(SSV_PIXEL_CLOCK,SSV_HTOTAL,SSV_HBEND,SSV_HBSTART,SSV_VTOTAL,SSV_VBEND,SSV_VBSTART)
2577   MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update_ssv)
2580   MCFG_SCREEN_UPDATE_DRIVER(ssv_state, screen_update)
25782581   MCFG_SCREEN_PALETTE("palette")
25792582
25802583   MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssv)
r244648r244649
47064709
47074710//     year   rom       clone     machine   inputs    init      monitor manufacturer          title                                               flags
47084711
4709GAME( 1993,  dynagear,  0,        dynagear, dynagear, ssv_state, dynagear, ROT0,   "Sammy",              "Dyna Gear",                                                              GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4712GAME( 1993,  dynagear,  0,        dynagear, dynagear, ssv_state, dynagear, ROT0,   "Sammy",              "Dyna Gear",                                                              GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
47104713
4711GAME( 1993,  keithlcy,  0,        keithlcy, keithlcy, ssv_state, keithlcy, ROT0,   "Visco",              "Dramatic Adventure Quiz Keith & Lucy (Japan)",                           GAME_NO_COCKTAIL )
4714GAME( 1993,  keithlcy,  0,        keithlcy, keithlcy, ssv_state, keithlcy, ROT0,   "Visco",              "Dramatic Adventure Quiz Keith & Lucy (Japan)",                           GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47124715
4713GAME( 1993,  srmp4,     0,        srmp4,    srmp4,    ssv_state, srmp4,    ROT0,   "Seta",               "Super Real Mahjong PIV (Japan)",                                         GAME_NO_COCKTAIL )
4714GAME( 1993,  srmp4o,    srmp4,    srmp4,    srmp4,    ssv_state, srmp4,    ROT0,   "Seta",               "Super Real Mahjong PIV (Japan, older set)",                              GAME_NO_COCKTAIL ) // by the numbering of the program roms this should be older
4716GAME( 1993,  srmp4,     0,        srmp4,    srmp4,    ssv_state, srmp4,    ROT0,   "Seta",               "Super Real Mahjong PIV (Japan)",                                         GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
4717GAME( 1993,  srmp4o,    srmp4,    srmp4,    srmp4,    ssv_state, srmp4,    ROT0,   "Seta",               "Super Real Mahjong PIV (Japan, older set)",                              GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // by the numbering of the program roms this should be older
47154718
4716GAME( 1993,  survarts,  0,        survarts, survarts, ssv_state, survarts, ROT0,   "Sammy",              "Survival Arts (World)",                                                  GAME_NO_COCKTAIL )
4717GAME( 1993,  survartsu, survarts, survarts, survarts, ssv_state, survarts, ROT0,   "American Sammy",     "Survival Arts (USA)",                                                    GAME_NO_COCKTAIL )
4718GAME( 1993,  survartsj, survarts, survarts, survarts, ssv_state, survarts, ROT0,   "Sammy",              "Survival Arts (Japan)",                                                  GAME_NO_COCKTAIL )
4719GAME( 1993,  survarts,  0,        survarts, survarts, ssv_state, survarts, ROT0,   "Sammy",              "Survival Arts (World)",                                                  GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
4720GAME( 1993,  survartsu, survarts, survarts, survarts, ssv_state, survarts, ROT0,   "American Sammy",     "Survival Arts (USA)",                                                    GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
4721GAME( 1993,  survartsj, survarts, survarts, survarts, ssv_state, survarts, ROT0,   "Sammy",              "Survival Arts (Japan)",                                                  GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47194722
4720GAME( 1994,  drifto94,  0,        drifto94, drifto94, ssv_state, drifto94, ROT0,   "Visco",              "Drift Out '94 - The Hard Order (Japan)",                                 GAME_NO_COCKTAIL )
4723GAME( 1994,  drifto94,  0,        drifto94, drifto94, ssv_state, drifto94, ROT0,   "Visco",              "Drift Out '94 - The Hard Order (Japan)",                                 GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47214724
4722GAME( 1994,  eaglshot,  0,        eaglshot, eaglshot, ssv_state, eaglshot, ROT0,   "Sammy",              "Eagle Shot Golf",                                                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4725GAME( 1994,  eaglshot,  0,        eaglshot, eaglshot, ssv_state, eaglshot, ROT0,   "Sammy",              "Eagle Shot Golf",                                                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
47234726
4724GAME( 1995,  hypreact,  0,        hypreact, hypreact, ssv_state, hypreact, ROT0,   "Sammy",              "Mahjong Hyper Reaction (Japan)",                                         GAME_NO_COCKTAIL )
4727GAME( 1995,  hypreact,  0,        hypreact, hypreact, ssv_state, hypreact, ROT0,   "Sammy",              "Mahjong Hyper Reaction (Japan)",                                         GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47254728
4726GAME( 1994,  twineag2,  0,        twineag2, twineag2, ssv_state, twineag2, ROT270, "Seta",               "Twin Eagle II - The Rescue Mission",                                     GAME_NO_COCKTAIL )
4729GAME( 1994,  twineag2,  0,        twineag2, twineag2, ssv_state, twineag2, ROT270, "Seta",               "Twin Eagle II - The Rescue Mission",                                     GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47274730
4728GAME( 1995,  gdfs,      0,        gdfs,     gdfs,     ssv_state, gdfs,     ROT0,   "Banpresto",          "Mobil Suit Gundam Final Shooting (Japan)",                               GAME_NO_COCKTAIL )
4731GAME( 1995,  gdfs,      0,        gdfs,     gdfs,     ssv_state, gdfs,     ROT0,   "Banpresto",          "Mobil Suit Gundam Final Shooting (Japan)",                               GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47294732
4730GAME( 1995,  ultrax,    0,        ultrax,   ultrax,   ssv_state, ultrax,   ROT270, "Banpresto / Tsuburaya Productions", "Ultra X Weapons / Ultra Keibitai",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) // 95-01-30 13:27:15 on startup
4731GAME( 1995,  ultraxg,   ultrax,   ultrax,   ultrax,   ssv_state, ultrax,   ROT270, "Banpresto / Tsuburaya Productions", "Ultra X Weapons / Ultra Keibitai (GAMEST review build)",  GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) // 95-02-16 15:30:24 on startup (newer, but could have pause functionality due to being a review build so left as clone)
4733GAME( 1995,  ultrax,    0,        ultrax,   ultrax,   ssv_state, ultrax,   ROT270, "Banpresto / Tsuburaya Productions", "Ultra X Weapons / Ultra Keibitai",                        GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 95-01-30 13:27:15 on startup
4734GAME( 1995,  ultraxg,   ultrax,   ultrax,   ultrax,   ssv_state, ultrax,   ROT270, "Banpresto / Tsuburaya Productions", "Ultra X Weapons / Ultra Keibitai (GAMEST review build)",  GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 95-02-16 15:30:24 on startup (newer, but could have pause functionality due to being a review build so left as clone)
47324735
4733GAME( 1996,  janjans1,  0,        janjans1, janjans1, ssv_state, janjans1, ROT0,   "Visco",              "Lovely Pop Mahjong JangJang Shimasho (Japan)",                           GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4736GAME( 1996,  janjans1,  0,        janjans1, janjans1, ssv_state, janjans1, ROT0,   "Visco",              "Lovely Pop Mahjong JangJang Shimasho (Japan)",                           GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
47344737
4735GAME( 1996?, meosism,   0,        meosism,  meosism,  ssv_state, meosism,  ROT0,   "Sammy",              "Meosis Magic (Japan)",                                                   GAME_NO_COCKTAIL )
4738GAME( 1996?, meosism,   0,        meosism,  meosism,  ssv_state, meosism,  ROT0,   "Sammy",              "Meosis Magic (Japan)",                                                   GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47364739
4737GAME( 1996,  stmblade,  0,        stmblade, stmblade, ssv_state, stmblade, ROT270, "Visco",              "Storm Blade (US)",                                                       GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4738GAME( 1996,  stmbladej, stmblade, stmblade, stmblade, ssv_state, stmblade, ROT270, "Visco",              "Storm Blade (Japan)",                                                    GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4740GAME( 1996,  stmblade,  0,        stmblade, stmblade, ssv_state, stmblade, ROT270, "Visco",              "Storm Blade (US)",                                                       GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
4741GAME( 1996,  stmbladej, stmblade, stmblade, stmblade, ssv_state, stmblade, ROT270, "Visco",              "Storm Blade (Japan)",                                                    GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
47394742
4740GAME( 1997,  hypreac2,  0,        hypreac2, hypreac2, ssv_state, hypreac2, ROT0,   "Sammy",              "Mahjong Hyper Reaction 2 (Japan)",                                       GAME_NO_COCKTAIL )
4743GAME( 1997,  hypreac2,  0,        hypreac2, hypreac2, ssv_state, hypreac2, ROT0,   "Sammy",              "Mahjong Hyper Reaction 2 (Japan)",                                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47414744
4742GAME( 1997,  jsk,       0,        jsk,      jsk,      ssv_state, jsk,      ROT0,   "Visco",              "Joryuu Syougi Kyoushitsu (Japan)",                                       GAME_NO_COCKTAIL )
4745GAME( 1997,  jsk,       0,        jsk,      jsk,      ssv_state, jsk,      ROT0,   "Visco",              "Joryuu Syougi Kyoushitsu (Japan)",                                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47434746
4744GAME( 1997,  koikois2,  0,        janjans1, koikois2, ssv_state, janjans1, ROT0,   "Visco",              "Koi Koi Shimasho 2 - Super Real Hanafuda (Japan)",                       GAME_NO_COCKTAIL )
4747GAME( 1997,  koikois2,  0,        janjans1, koikois2, ssv_state, janjans1, ROT0,   "Visco",              "Koi Koi Shimasho 2 - Super Real Hanafuda (Japan)",                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47454748
4746GAME( 1997,  mslider,   0,        mslider,  mslider,  ssv_state, mslider,  ROT0,   "Visco / Datt Japan", "Monster Slider (Japan)",                                                 GAME_NO_COCKTAIL )
4749GAME( 1997,  mslider,   0,        mslider,  mslider,  ssv_state, mslider,  ROT0,   "Visco / Datt Japan", "Monster Slider (Japan)",                                                 GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47474750
4748GAME( 1997,  srmp7,     0,        srmp7,    srmp7,    ssv_state, srmp7,    ROT0,   "Seta",               "Super Real Mahjong P7 (Japan)",                                          GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
4751GAME( 1997,  srmp7,     0,        srmp7,    srmp7,    ssv_state, srmp7,    ROT0,   "Seta",               "Super Real Mahjong P7 (Japan)",                                          GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
47494752
4750GAME( 1998,  ryorioh,   0,        ryorioh,  ryorioh,  ssv_state, ryorioh,  ROT0,   "Visco",              "Gourmet Battle Quiz Ryohrioh CooKing (Japan)",                           GAME_NO_COCKTAIL )
4753GAME( 1998,  ryorioh,   0,        ryorioh,  ryorioh,  ssv_state, ryorioh,  ROT0,   "Visco",              "Gourmet Battle Quiz Ryohrioh CooKing (Japan)",                           GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47514754
4752GAME( 1998,  sxyreact,  0,        sxyreact, sxyreact, ssv_state, sxyreact, ROT0,   "Sammy",              "Pachinko Sexy Reaction (Japan)",                                         GAME_NO_COCKTAIL )
4755GAME( 1998,  sxyreact,  0,        sxyreact, sxyreact, ssv_state, sxyreact, ROT0,   "Sammy",              "Pachinko Sexy Reaction (Japan)",                                         GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47534756
4754GAME( 1999,  sxyreac2,  0,        sxyreac2, sxyreact, ssv_state, sxyreac2, ROT0,   "Sammy",              "Pachinko Sexy Reaction 2 (Japan)",                                       GAME_NO_COCKTAIL )
4757GAME( 1999,  sxyreac2,  0,        sxyreac2, sxyreact, ssv_state, sxyreac2, ROT0,   "Sammy",              "Pachinko Sexy Reaction 2 (Japan)",                                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47554758
4756GAME( 1999,  cairblad,  0,        cairblad, cairblad, ssv_state, cairblad, ROT270, "Sammy",              "Change Air Blade (Japan)",                                               GAME_NO_COCKTAIL )
4759GAME( 1999,  cairblad,  0,        cairblad, cairblad, ssv_state, cairblad, ROT270, "Sammy",              "Change Air Blade (Japan)",                                               GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47574760
4758GAME( 2000,  janjans2,  0,        janjans1, janjans2, ssv_state, janjans1, ROT0,   "Visco",              "Lovely Pop Mahjong JangJang Shimasho 2 (Japan)",                         GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
4761GAME( 2000,  janjans2,  0,        janjans1, janjans2, ssv_state, janjans1, ROT0,   "Visco",              "Lovely Pop Mahjong JangJang Shimasho 2 (Japan)",                         GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
47594762
4760GAME( 2000,  vasara,    0,        vasara,   vasara,   ssv_state, vasara,   ROT270, "Visco",              "Vasara",                                                                 GAME_NO_COCKTAIL )
4763GAME( 2000,  vasara,    0,        vasara,   vasara,   ssv_state, vasara,   ROT270, "Visco",              "Vasara",                                                                 GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
47614764
4762GAME( 2001,  vasara2,   0,        vasara,   vasara2,  ssv_state, vasara,   ROT270, "Visco",              "Vasara 2 (set 1)",                                                       GAME_NO_COCKTAIL )
4763GAME( 2001,  vasara2a,  vasara2,  vasara,   vasara2,  ssv_state, vasara,   ROT270, "Visco",              "Vasara 2 (set 2)",                                                       GAME_NO_COCKTAIL )
4765GAME( 2001,  vasara2,   0,        vasara,   vasara2,  ssv_state, vasara,   ROT270, "Visco",              "Vasara 2 (set 1)",                                                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
4766GAME( 2001,  vasara2a,  vasara2,  vasara,   vasara2,  ssv_state, vasara,   ROT270, "Visco",              "Vasara 2 (set 2)",                                                       GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/ssv.h
r244648r244649
5252   optional_shared_ptr<UINT16> m_input_sel;
5353
5454   int m_tile_code[16];
55
5655   int m_enable_video;
5756   int m_shadow_pen_mask;
5857   int m_shadow_pen_shift;
59
6058   UINT8 m_requested_int;
6159   UINT16 m_irq_enable;
62
6360   UINT16 *m_eaglshot_gfxram;
64
6561   tilemap_t *m_gdfs_tmap;
66
6762   int m_interrupt_ultrax;
68
6963   int m_gdfs_lightgun_select;
70
7164   UINT16 m_sxyreact_serial;
7265   int m_sxyreact_dial;
7366   UINT16 m_gdfs_eeprom_old;
74
7567   UINT32 m_latches[8];
76
7768   UINT8 m_trackball_select;
78   DECLARE_WRITE16_MEMBER(ssv_irq_ack_w);
79   DECLARE_WRITE16_MEMBER(ssv_irq_enable_w);
80   DECLARE_WRITE16_MEMBER(ssv_lockout_w);
81   DECLARE_WRITE16_MEMBER(ssv_lockout_inv_w);
69
70   DECLARE_WRITE16_MEMBER(irq_ack_w);
71   DECLARE_WRITE16_MEMBER(irq_enable_w);
72   DECLARE_WRITE16_MEMBER(lockout_w);
73   DECLARE_WRITE16_MEMBER(lockout_inv_w);
8274   DECLARE_READ16_MEMBER(dsp_dr_r);
8375   DECLARE_WRITE16_MEMBER(dsp_dr_w);
8476   DECLARE_READ16_MEMBER(dsp_r);
r244648r244649
9082   DECLARE_READ16_MEMBER(gdfs_blitram_r);
9183   DECLARE_WRITE16_MEMBER(gdfs_blitram_w);
9284   DECLARE_READ16_MEMBER(hypreact_input_r);
93   DECLARE_READ16_MEMBER(ssv_mainram_r);
94   DECLARE_WRITE16_MEMBER(ssv_mainram_w);
85   DECLARE_READ16_MEMBER(mainram_r);
86   DECLARE_WRITE16_MEMBER(mainram_w);
9587   DECLARE_READ16_MEMBER(srmp4_input_r);
9688   DECLARE_READ16_MEMBER(srmp7_irqv_r);
9789   DECLARE_WRITE16_MEMBER(srmp7_sound_bank_w);
r244648r244649
110102   DECLARE_READ16_MEMBER(eaglshot_gfxram_r);
111103   DECLARE_WRITE16_MEMBER(eaglshot_gfxram_w);
112104   DECLARE_WRITE16_MEMBER(gdfs_tmapram_w);
113   DECLARE_READ16_MEMBER(ssv_vblank_r);
114   DECLARE_WRITE16_MEMBER(ssv_scroll_w);
105   DECLARE_READ16_MEMBER(vblank_r);
106   DECLARE_WRITE16_MEMBER(scroll_w);
115107   DECLARE_READ16_MEMBER(gdfs_eeprom_r);
116108   DECLARE_WRITE16_MEMBER(gdfs_eeprom_w);
109   
110   TILE_GET_INFO_MEMBER(get_tile_info_0);
111   
117112   DECLARE_DRIVER_INIT(gdfs);
118113   DECLARE_DRIVER_INIT(sxyreac2);
119114   DECLARE_DRIVER_INIT(hypreac2);
r244648r244649
136131   DECLARE_DRIVER_INIT(jsk);
137132   DECLARE_DRIVER_INIT(twineag2);
138133   DECLARE_DRIVER_INIT(mslider);
139   TILE_GET_INFO_MEMBER(get_tile_info_0);
140134   virtual void machine_reset();
141135   virtual void video_start();
142136   DECLARE_VIDEO_START(gdfs);
143137   DECLARE_VIDEO_START(eaglshot);
144   UINT32 screen_update_ssv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
138   
139   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
145140   UINT32 screen_update_gdfs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
146141   UINT32 screen_update_eaglshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
147   TIMER_DEVICE_CALLBACK_MEMBER(ssv_interrupt);
142   
143   TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
148144   TIMER_DEVICE_CALLBACK_MEMBER(gdfs_interrupt);
149145   void update_irq_state();
150   IRQ_CALLBACK_MEMBER(ssv_irq_callback);
151   void ssv_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,int shadow);
146   IRQ_CALLBACK_MEMBER(irq_callback);
147   
148   void drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,int shadow);
152149   void draw_row(bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int sy, int scroll);
153150   void draw_layer(bitmap_ind16 &bitmap, const rectangle &cliprect, int  nr);
154151   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
155   void ssv_enable_video(int enable);
156   void init_ssv(int interrupt_ultrax);
152   void enable_video(int enable);
153   void init(int interrupt_ultrax);
157154   void init_hypreac2_common();
158155   void init_eaglshot_banking();
159156   void init_st010();
trunk/src/mame/video/ssv.c
r244648r244649
141141#endif
142142
143143
144void ssv_state::ssv_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,
144void ssv_state::drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,
145145               UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,
146146               int shadow )
147147{
r244648r244649
194194void ssv_state::video_start()
195195{
196196   m_gfxdecode->gfx(0)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */
197   
198   save_item(NAME(m_enable_video));
199   save_item(NAME(m_shadow_pen_mask));
200   save_item(NAME(m_shadow_pen_shift));
197201}
198202
199203VIDEO_START_MEMBER(ssv_state,eaglshot)
r244648r244649
204208
205209   m_gfxdecode->gfx(0)->set_source((UINT8 *)m_eaglshot_gfxram);
206210   m_gfxdecode->gfx(1)->set_source((UINT8 *)m_eaglshot_gfxram);
211   
212   save_pointer(NAME(m_eaglshot_gfxram), 16 * 0x40000 / 2);
207213}
208214
209215TILE_GET_INFO_MEMBER(ssv_state::get_tile_info_0)
r244648r244649
368374
369375***************************************************************************/
370376
371READ16_MEMBER(ssv_state::ssv_vblank_r)
377READ16_MEMBER(ssv_state::vblank_r)
372378{
373379   if (m_screen->vblank())
374380      return 0x2000 | 0x1000;
r244648r244649
376382      return 0x0000;
377383}
378384
379WRITE16_MEMBER(ssv_state::ssv_scroll_w)
385WRITE16_MEMBER(ssv_state::scroll_w)
380386{
381387   COMBINE_DATA(m_scroll + offset);
382388
r244648r244649
688694         {
689695            for (ty = ystart; ty != yend; ty += yinc)
690696            {
691               ssv_drawgfx( bitmap, clip, m_gfxdecode->gfx(gfx),
697               drawgfx( bitmap, clip, m_gfxdecode->gfx(gfx),
692698                                 code++,
693699                                 color,
694700                                 flipx, flipy,
r244648r244649
913919            {
914920               for (y = ystart; y != yend; y += yinc)
915921               {
916                  ssv_drawgfx( bitmap, cliprect, m_gfxdecode->gfx(gfx),
922                  drawgfx( bitmap, cliprect, m_gfxdecode->gfx(gfx),
917923                                    code++,
918924                                    color,
919925                                    flipx, flipy,
r244648r244649
948954
949955UINT32 ssv_state::screen_update_eaglshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
950956{
951   return screen_update_ssv(screen, bitmap, cliprect);
957   return screen_update(screen, bitmap, cliprect);
952958}
953959
954960UINT32 ssv_state::screen_update_gdfs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
955961{
956   screen_update_ssv(screen, bitmap, cliprect);
962   screen_update(screen, bitmap, cliprect);
957963
958964   // draw zooming sprites
959965   m_gdfs_st0020->st0020_draw_all(bitmap, cliprect);
r244648r244649
965971   return 0;
966972}
967973
968void ssv_state::ssv_enable_video(int enable)
974void ssv_state::enable_video(int enable)
969975{
970976   m_enable_video = enable;
971977}
972978
973UINT32 ssv_state::screen_update_ssv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
979UINT32 ssv_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
974980{
975981   rectangle clip;
976982
trunk/src/mame/video/st0020.c
r244648r244649
8585   save_pointer(NAME(m_st0020_gfxram), 4 * 0x100000/2);
8686   save_pointer(NAME(m_st0020_spriteram), 0x80000/2);
8787   save_pointer(NAME(m_st0020_blitram), 0x100/2);
88   save_item(NAME(m_st0020_gfxram_bank));
8889}
8990
9091void st0020_device::device_reset()


Previous 199869 Revisions Next


© 1997-2024 The MAME Team