Previous 199869 Revisions Next

r23472 Wednesday 5th June, 2013 at 23:51:10 UTC by hap
fix z80 memory handling + misc cleanups
[src/emu]addrmap.h
[src/mame/drivers]seibuspi.c
[src/mame/includes]seibuspi.h
[src/mame/video]seibuspi.c

trunk/src/mame/includes/seibuspi.h
r23471r23472
1010      : driver_device(mconfig, type, tag),
1111      m_maincpu(*this, "maincpu"),
1212      m_audiocpu(*this, "audiocpu"),
13      m_spi_scrollram(*this, "spi_scrollram"),
14      m_spimainram(*this, "spimainram"),
13      m_mainram(*this, "mainram"),
14      m_scrollram(*this, "scrollram"),
15      m_z80_rom(*this, "audiocpu"),
1516      m_eeprom(*this, "eeprom"),
1617      m_soundflash1(*this, "soundflash1"),
1718      m_soundflash2(*this, "soundflash2"),
r23471r23472
2324
2425   required_device<cpu_device> m_maincpu;
2526   optional_device<cpu_device> m_audiocpu;
26   optional_shared_ptr<UINT32> m_spi_scrollram;
27   required_shared_ptr<UINT32> m_spimainram;
27   required_shared_ptr<UINT32> m_mainram;
28   optional_shared_ptr<UINT32> m_scrollram;
29   optional_memory_region m_z80_rom;
2830   required_device<eeprom_device> m_eeprom;
2931   optional_device<intel_e28f008sa_device> m_soundflash1;
3032   optional_device<intel_e28f008sa_device> m_soundflash2;
r23471r23472
3335   optional_device<okim6295_device> m_oki1;
3436   optional_device<okim6295_device> m_oki2;
3537
36   UINT8 *m_z80_rom;
37   int m_z80_prg_fifo_pos;
38   int m_z80_prg_transfer_pos;
3839   int m_z80_lastbank;
3940   UINT8 m_sb_coin_latch;
4041   UINT8 m_ejsakura_input_port;
r23471r23472
5758   UINT32 m_bg_fore_layer_position;
5859   UINT8 m_alpha_table[8192];
5960   UINT8 m_sprite_bpp;
61
6062   DECLARE_READ32_MEMBER(ejanhs_speedup_r);
6163   DECLARE_READ32_MEMBER(spi_layer_bank_r);
6264   DECLARE_WRITE32_MEMBER(spi_layer_bank_w);
r23471r23472
7577   DECLARE_READ8_MEMBER(sound_fifo_status_r);
7678   DECLARE_READ32_MEMBER(spi_int_r);
7779   DECLARE_READ32_MEMBER(spi_unknown_r);
78   DECLARE_WRITE8_MEMBER(z80_prg_fifo_w);
80   DECLARE_WRITE8_MEMBER(z80_prg_transfer_w);
7981   DECLARE_WRITE8_MEMBER(z80_enable_w);
8082   DECLARE_READ8_MEMBER(z80_soundfifo_status_r);
8183   DECLARE_WRITE8_MEMBER(z80_bank_w);
82   DECLARE_WRITE32_MEMBER(input_select_w);
84   DECLARE_WRITE32_MEMBER(ejsakura_input_select_w);
8385   DECLARE_READ32_MEMBER(senkyu_speedup_r);
8486   DECLARE_READ32_MEMBER(senkyua_speedup_r);
8587   DECLARE_READ32_MEMBER(batlball_speedup_r);
r23471r23472
9698   DECLARE_DRIVER_INIT(batlball);
9799   DECLARE_DRIVER_INIT(senkyu);
98100   DECLARE_DRIVER_INIT(viprp1);
99   DECLARE_DRIVER_INIT(rfjet2k);
100101   DECLARE_DRIVER_INIT(viprp1o);
101102   DECLARE_DRIVER_INIT(rdft);
102103   DECLARE_DRIVER_INIT(rfjet);
103   DECLARE_DRIVER_INIT(rdft22kc);
104104   DECLARE_DRIVER_INIT(senkyua);
105105   DECLARE_DRIVER_INIT(rdft2);
106106   DECLARE_DRIVER_INIT(ejanhs);
107107   DECLARE_DRIVER_INIT(sys386f2);
108   DECLARE_DRIVER_INIT(rdft2us);
109108   TILE_GET_INFO_MEMBER(get_text_tile_info);
110109   TILE_GET_INFO_MEMBER(get_back_tile_info);
111110   TILE_GET_INFO_MEMBER(get_mid_tile_info);
r23471r23472
113112   DECLARE_MACHINE_START(spi);
114113   DECLARE_MACHINE_RESET(spi);
115114   DECLARE_VIDEO_START(spi);
115   DECLARE_MACHINE_START(seibu386);
116116   DECLARE_MACHINE_RESET(seibu386);
117117   DECLARE_VIDEO_START(sys386f2);
118118   DECLARE_MACHINE_START(sxx2e);
r23471r23472
121121   UINT32 screen_update_sys386f2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
122122   INTERRUPT_GEN_MEMBER(spi_interrupt);
123123   IRQ_CALLBACK_MEMBER(spi_irq_callback);
124   DECLARE_WRITE_LINE_MEMBER(ymf_irqhandler);
124125   void drawgfx_blend(bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy);
125126   void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri_mask);
126127   void set_rowscroll(tilemap_t *layer, int scroll, INT16* rows);
127128   void set_scroll(tilemap_t *layer, int scroll);
128129   void combine_tilemap(bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tile, int x, int y, int opaque, INT16 *rowscroll);
129   void init_spi();
130   void init_rf2_common();
131   void init_rfjet_common();
132   DECLARE_WRITE_LINE_MEMBER(irqhandler);
130   void init_spi_common();
131   void init_sei252();
132   void init_rise10();
133   void init_rise11();
133134};
134135
135136/*----------- defined in machine/spisprit.c -----------*/
trunk/src/mame/video/seibuspi.c
r23471r23472
1919{
2020   COMBINE_DATA( &m_layer_bank );
2121
22   if (m_layer_bank & 0x80000000) {
22   if (m_layer_bank & 0x80000000)
23   {
2324      m_fore_layer_offset = 0x1000 / 4;
2425      m_mid_layer_offset = 0x2000 / 4;
2526      m_text_layer_offset = 0x3000 / 4;
2627   }
27   else {
28   else
29   {
2830      m_fore_layer_offset = 0x800 / 4;
2931      m_mid_layer_offset = 0x1000 / 4;
3032      m_text_layer_offset = 0x1800 / 4;
r23471r23472
7779      if (m_layer_bank & 0x80000000)
7880      {
7981         /* back layer */
80         for (i=0; i < 0x800/4; i++) {
81            UINT32 tile = m_spimainram[index];
82            if (m_tilemap_ram[i] != tile) {
82         for (i=0; i < 0x800/4; i++)
83         {
84            UINT32 tile = m_mainram[index];
85            if (m_tilemap_ram[i] != tile)
86            {
8387               m_tilemap_ram[i] = tile;
8488               m_back_layer->mark_tile_dirty((i * 2) );
8589               m_back_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
8892         }
8993
9094         /* back layer row scroll */
91         memcpy(&m_tilemap_ram[0x800/4], &m_spimainram[index], 0x800/4);
95         memcpy(&m_tilemap_ram[0x800/4], &m_mainram[index], 0x800/4);
9296         index += 0x800/4;
9397
9498         /* fore layer */
95         for (i=0; i < 0x800/4; i++) {
96            UINT32 tile = m_spimainram[index];
97            if (m_tilemap_ram[i+m_fore_layer_offset] != tile) {
99         for (i=0; i < 0x800/4; i++)
100         {
101            UINT32 tile = m_mainram[index];
102            if (m_tilemap_ram[i+m_fore_layer_offset] != tile)
103            {
98104               m_tilemap_ram[i+m_fore_layer_offset] = tile;
99105               m_fore_layer->mark_tile_dirty((i * 2) );
100106               m_fore_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
103109         }
104110
105111         /* fore layer row scroll */
106         memcpy(&m_tilemap_ram[0x1800/4], &m_spimainram[index], 0x800/4);
112         memcpy(&m_tilemap_ram[0x1800/4], &m_mainram[index], 0x800/4);
107113         index += 0x800/4;
108114
109115         /* mid layer */
110         for (i=0; i < 0x800/4; i++) {
111            UINT32 tile = m_spimainram[index];
112            if (m_tilemap_ram[i+m_mid_layer_offset] != tile) {
116         for (i=0; i < 0x800/4; i++)
117         {
118            UINT32 tile = m_mainram[index];
119            if (m_tilemap_ram[i+m_mid_layer_offset] != tile)
120            {
113121               m_tilemap_ram[i+m_mid_layer_offset] = tile;
114122               m_mid_layer->mark_tile_dirty((i * 2) );
115123               m_mid_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
118126         }
119127
120128         /* mid layer row scroll */
121         memcpy(&m_tilemap_ram[0x1800/4], &m_spimainram[index], 0x800/4);
129         memcpy(&m_tilemap_ram[0x1800/4], &m_mainram[index], 0x800/4);
122130         index += 0x800/4;
123131
124132         /* text layer */
125         for (i=0; i < 0x1000/4; i++) {
126            UINT32 tile = m_spimainram[index];
127            if (m_tilemap_ram[i+m_text_layer_offset] != tile) {
133         for (i=0; i < 0x1000/4; i++)
134         {
135            UINT32 tile = m_mainram[index];
136            if (m_tilemap_ram[i+m_text_layer_offset] != tile)
137            {
128138               m_tilemap_ram[i+m_text_layer_offset] = tile;
129139               m_text_layer->mark_tile_dirty((i * 2) );
130140               m_text_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
135145      else
136146      {
137147         /* back layer */
138         for (i=0; i < 0x800/4; i++) {
139            UINT32 tile = m_spimainram[index];
140            if (m_tilemap_ram[i] != tile) {
148         for (i=0; i < 0x800/4; i++)
149         {
150            UINT32 tile = m_mainram[index];
151            if (m_tilemap_ram[i] != tile)
152            {
141153               m_tilemap_ram[i] = tile;
142154               m_back_layer->mark_tile_dirty((i * 2) );
143155               m_back_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
146158         }
147159
148160         /* fore layer */
149         for (i=0; i < 0x800/4; i++) {
150            UINT32 tile = m_spimainram[index];
151            if (m_tilemap_ram[i+m_fore_layer_offset] != tile) {
161         for (i=0; i < 0x800/4; i++)
162         {
163            UINT32 tile = m_mainram[index];
164            if (m_tilemap_ram[i+m_fore_layer_offset] != tile)
165            {
152166               m_tilemap_ram[i+m_fore_layer_offset] = tile;
153167               m_fore_layer->mark_tile_dirty((i * 2) );
154168               m_fore_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
157171         }
158172
159173         /* mid layer */
160         for (i=0; i < 0x800/4; i++) {
161            UINT32 tile = m_spimainram[index];
162            if (m_tilemap_ram[i+m_mid_layer_offset] != tile) {
174         for (i=0; i < 0x800/4; i++)
175         {
176            UINT32 tile = m_mainram[index];
177            if (m_tilemap_ram[i+m_mid_layer_offset] != tile)
178            {
163179               m_tilemap_ram[i+m_mid_layer_offset] = tile;
164180               m_mid_layer->mark_tile_dirty((i * 2) );
165181               m_mid_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
168184         }
169185
170186         /* text layer */
171         for (i=0; i < 0x1000/4; i++) {
172            UINT32 tile = m_spimainram[index];
173            if (m_tilemap_ram[i+m_text_layer_offset] != tile) {
187         for (i=0; i < 0x1000/4; i++)
188         {
189            UINT32 tile = m_mainram[index];
190            if (m_tilemap_ram[i+m_text_layer_offset] != tile)
191            {
174192               m_tilemap_ram[i+m_text_layer_offset] = tile;
175193               m_text_layer->mark_tile_dirty((i * 2) );
176194               m_text_layer->mark_tile_dirty((i * 2) + 1 );
r23471r23472
188206      int i;
189207      for (i=0; i < ((m_video_dma_length+1) * 2) / 4; i++)
190208      {
191         UINT32 color = m_spimainram[(m_video_dma_address / 4) + i - 0x200];
192         if (m_palette_ram[i] != color) {
209         UINT32 color = m_mainram[(m_video_dma_address / 4) + i - 0x200];
210         if (m_palette_ram[i] != color)
211         {
193212            m_palette_ram[i] = color;
194213            palette_set_color_rgb( machine(), (i * 2), pal5bit(m_palette_ram[i] >> 0), pal5bit(m_palette_ram[i] >> 5), pal5bit(m_palette_ram[i] >> 10) );
195214            palette_set_color_rgb( machine(), (i * 2) + 1, pal5bit(m_palette_ram[i] >> 16), pal5bit(m_palette_ram[i] >> 21), pal5bit(m_palette_ram[i] >> 26) );
r23471r23472
202221{
203222   if (m_video_dma_address != 0)
204223   {
205      memcpy( m_sprite_ram, &m_spimainram[(m_video_dma_address / 4) - 0x200], m_sprite_dma_length);
224      memcpy( m_sprite_ram, &m_mainram[(m_video_dma_address / 4) - 0x200], m_sprite_dma_length);
206225   }
207226}
208227
r23471r23472
354373   if( m_layer_enable & 0x10 )
355374      return;
356375
357   for( a = (m_sprite_dma_length / 4) - 2; a >= 0; a -= 2 ) {
376   for( a = (m_sprite_dma_length / 4) - 2; a >= 0; a -= 2 )
377   {
358378      tile_num = (m_sprite_ram[a + 0] >> 16) & 0xffff;
359379      if( m_sprite_ram[a + 1] & 0x1000 )
360380         tile_num |= 0x10000;
r23471r23472
381401      x1 = 0;
382402      y1 = 0;
383403
384      if( flip_x ) {
404      if( flip_x )
405      {
385406         x1 = 8 - width;
386407         width = width + x1;
387408      }
388      if( flip_y ) {
409      if( flip_y )
410      {
389411         y1 = 8 - height;
390412         height = height + y1;
391413      }
392414
393      for( x=x1; x < width; x++ ) {
394         for( y=y1; y < height; y++ ) {
415      for( x=x1; x < width; x++ )
416      {
417         for( y=y1; y < height; y++ )
418         {
395419            drawgfx_blend(bitmap, cliprect, gfx, tile_num, color, flip_x, flip_y, xpos + sprite_xtable[flip_x][x], ypos + sprite_ytable[flip_y][y]);
396420
397421            /* xpos seems to wrap-around to 0 at 512 */
398            if( (xpos + (16 * x) + 16) >= 512 ) {
422            if( (xpos + (16 * x) + 16) >= 512 )
423            {
399424               drawgfx_blend(bitmap, cliprect, gfx, tile_num, color, flip_x, flip_y, xpos - 512 + sprite_xtable[flip_x][x], ypos + sprite_ytable[flip_y][y]);
400425            }
401426
r23471r23472
483508   m_sprite_bpp = 6;
484509   m_sprite_dma_length = 0x1000;
485510
486   for (i=0; i < 6144; i++) {
511   for (i=0; i < 6144; i++)
512   {
487513      palette_set_color(machine(), i, MAKE_RGB(0, 0, 0));
488514   }
489515
r23471r23472
528554void seibuspi_state::set_rowscroll(tilemap_t *layer, int scroll, INT16* rows)
529555{
530556   int i;
531   int x = m_spi_scrollram[scroll] & 0xffff;
532   int y = (m_spi_scrollram[scroll] >> 16) & 0xffff;
557   int x = m_scrollram[scroll] & 0xffff;
558   int y = (m_scrollram[scroll] >> 16) & 0xffff;
533559   layer->set_scroll_rows(512);
534   for( i=0; i < 512; i++ ) {
560   for( i=0; i < 512; i++ )
561   {
535562      layer->set_scrollx(i, x + rows[i]);
536563   }
537564   layer->set_scrolly(0, y);
r23471r23472
539566
540567void seibuspi_state::set_scroll(tilemap_t *layer, int scroll)
541568{
542   int x = m_spi_scrollram[scroll] & 0xffff;
543   int y = (m_spi_scrollram[scroll] >> 16) & 0xffff;
569   int x = m_scrollram[scroll] & 0xffff;
570   int y = (m_scrollram[scroll] >> 16) & 0xffff;
544571   layer->set_scrollx(0, x);
545572   layer->set_scrolly(0, y);
546573}
r23471r23472
596623UINT32 seibuspi_state::screen_update_spi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
597624{
598625   INT16 *back_rowscroll, *mid_rowscroll, *fore_rowscroll;
599   if( m_layer_bank & 0x80000000 ) {
626   if( m_layer_bank & 0x80000000 )
627   {
600628      back_rowscroll  = (INT16*)&m_tilemap_ram[0x200];
601629      mid_rowscroll   = (INT16*)&m_tilemap_ram[0x600];
602630      fore_rowscroll  = (INT16*)&m_tilemap_ram[0xa00];
603   } else {
631   }
632   else
633   {
604634      back_rowscroll  = NULL;
605635      mid_rowscroll   = NULL;
606636      fore_rowscroll  = NULL;
r23471r23472
610640      bitmap.fill(0, cliprect);
611641
612642   if (!(m_layer_enable & 0x1))
613      combine_tilemap(bitmap, cliprect, m_back_layer, m_spi_scrollram[0] & 0xffff, (m_spi_scrollram[0] >> 16) & 0xffff, 1, back_rowscroll);
643      combine_tilemap(bitmap, cliprect, m_back_layer, m_scrollram[0] & 0xffff, (m_scrollram[0] >> 16) & 0xffff, 1, back_rowscroll);
614644
615645   draw_sprites(bitmap, cliprect, 0);
616646
r23471r23472
619649      draw_sprites(bitmap, cliprect, 1);
620650
621651   if (!(m_layer_enable & 0x2))
622      combine_tilemap(bitmap, cliprect, m_mid_layer, m_spi_scrollram[1] & 0xffff, (m_spi_scrollram[1] >> 16) & 0xffff, 0, mid_rowscroll);
652      combine_tilemap(bitmap, cliprect, m_mid_layer, m_scrollram[1] & 0xffff, (m_scrollram[1] >> 16) & 0xffff, 0, mid_rowscroll);
623653
624654   // if fore layer is disabled, draw priority 1 sprites above mid layer
625655   if ((m_layer_enable & 0x4))
r23471r23472
628658   draw_sprites(bitmap, cliprect, 2);
629659
630660   if (!(m_layer_enable & 0x4))
631      combine_tilemap(bitmap, cliprect, m_fore_layer, m_spi_scrollram[2] & 0xffff, (m_spi_scrollram[2] >> 16) & 0xffff, 0, fore_rowscroll);
661      combine_tilemap(bitmap, cliprect, m_fore_layer, m_scrollram[2] & 0xffff, (m_scrollram[2] >> 16) & 0xffff, 0, fore_rowscroll);
632662
633663   draw_sprites(bitmap, cliprect, 3);
634664
r23471r23472
647677   m_sprite_dma_length = 0x2000;
648678   m_layer_enable = 0;
649679
650   for (i=0; i < 8192; i++) {
680   for (i=0; i < 8192; i++)
681   {
651682      palette_set_color(machine(), i, MAKE_RGB(0, 0, 0));
652683   }
653684
trunk/src/mame/drivers/seibuspi.c
r23471r23472
2525      It has a 40MHz AMD 386 and a considerably weaker sound system (dual MSM6295).
2626
2727TODO:
28- Alpha blending on sprites. In Viper Phase 1, see the blue "Viper" logo when on the
28- Improve alpha blending. In Viper Phase 1, see the blue "Viper" logo when on the
2929  "push 1 or 2 players button" screen. Note that the alpha blended red logo on the
3030  title screen is tiles(that effect is emulated), this blue logo is sprites.
3131
r23471r23472
824824#include "machine/seibuspi.h"
825825#include "includes/seibuspi.h"
826826
827/********************************************************************/
827#define ENABLE_SPEEDUP_HACKS 1 /* speed up at idle loops */
828828
829READ8_MEMBER(seibuspi_state::sb_coin_r)
830{
831   UINT8 r = m_sb_coin_latch;
832829
833   m_sb_coin_latch = 0;
834   return r;
835}
830/********************************************************************/
836831
837WRITE8_MEMBER(seibuspi_state::sb_coin_w)
838{
839   if (data)
840      m_sb_coin_latch = 0xa0 | data;
841   else
842      m_sb_coin_latch = 0;
843}
844
845832READ8_MEMBER(seibuspi_state::sound_fifo_status_r)
846833{
847834   // d0: ?
r23471r23472
882869   m_oki2->set_bank_base((data & 0x04) ? 0x40000 : 0);
883870}
884871
885WRITE8_MEMBER(seibuspi_state::z80_prg_fifo_w)
872WRITE8_MEMBER(seibuspi_state::z80_prg_transfer_w)
886873{
887   if (m_z80_prg_fifo_pos<0x40000) m_z80_rom[m_z80_prg_fifo_pos] = data;
888   m_z80_prg_fifo_pos++;
874   if (m_z80_prg_transfer_pos < m_z80_rom->bytes())
875   {
876      m_z80_rom->base()[m_z80_prg_transfer_pos] = data;
877      m_z80_prg_transfer_pos++;
878   }
889879}
890880
891881WRITE8_MEMBER(seibuspi_state::z80_enable_w)
892882{
893   if (data & 0x1)
883   if (data & 1)
894884   {
895      m_z80_prg_fifo_pos = 0;
885      m_z80_prg_transfer_pos = 0;
896886      m_audiocpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
897887   }
898888   else
r23471r23472
901891   }
902892}
903893
904CUSTOM_INPUT_MEMBER(seibuspi_state::ejsakura_keyboard_r)
894READ8_MEMBER(seibuspi_state::sb_coin_r)
905895{
906   switch(m_ejsakura_input_port)
907   {
908      case 0x01:
909         return ioport("INPUT01")->read();
910      case 0x02:
911         return ioport("INPUT02")->read();
912      case 0x04:
913         return ioport("INPUT04")->read();
914      case 0x08:
915         return ioport("INPUT08")->read();
916      case 0x10:
917         return ioport("INPUT10")->read();
918      default:
919         return ioport("SYSTEM")->read();
920   }
921   return 0xffffffff;
896   UINT8 ret = m_sb_coin_latch;
897
898   m_sb_coin_latch = 0;
899   return ret;
922900}
901
902WRITE32_MEMBER(seibuspi_state::ejsakura_input_select_w)
903{
904   m_ejsakura_input_port = data;
905}
906
907
923908/********************************************************************/
924909
925910READ8_MEMBER(seibuspi_state::z80_soundfifo_status_r)
r23471r23472
932917
933918WRITE8_MEMBER(seibuspi_state::z80_bank_w)
934919{
935   if ((data & 7) != m_z80_lastbank)
920   int bank = data & 7;
921
922   if (bank != m_z80_lastbank)
936923   {
937      m_z80_lastbank = (data & 7);
938      membank("bank4")->set_base(m_z80_rom + (0x8000 * m_z80_lastbank));
924      m_z80_lastbank = bank;
925      membank("bank1")->set_entry(bank);
939926   }
940927}
941928
929WRITE8_MEMBER(seibuspi_state::sb_coin_w)
930{
931   if (data)
932      m_sb_coin_latch = 0xa0 | data;
933   else
934      m_sb_coin_latch = 0;
935}
936
937
942938/********************************************************************/
943939
944940static ADDRESS_MAP_START( spi_map, AS_PROGRAM, 32, seibuspi_state )
r23471r23472
946942   AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w)
947943   AM_RANGE(0x0000041c, 0x0000041f) AM_READNOP
948944   AM_RANGE(0x0000041c, 0x0000041f) AM_WRITE(spi_layer_enable_w)
949   AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_SHARE("spi_scrollram")
945   AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_SHARE("scrollram")
950946   AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w)
951947   AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
952948   AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w)
r23471r23472
962958   AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff)
963959   AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff)
964960   AM_RANGE(0x00000684, 0x00000687) AM_WRITENOP                /* Unknown */
965   AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_fifo_w, 0x000000ff)
961   AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff)
966962   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff)
967963   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_set_layer_banks_w, 0x00ff0000)
968964   AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff)
969965   AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff)
970966   AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff)
971967   AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff)
972   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("spimainram")
968   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram")
973969   AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1")
974970   AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0)
975971   AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1")        /* ROM location in real-mode */
976972ADDRESS_MAP_END
977973
978974static ADDRESS_MAP_START( spisound_map, AS_PROGRAM, 8, seibuspi_state )
979   AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank5")
980   AM_RANGE(0x4002, 0x4002) AM_WRITENOP            /* ack RST 10 */
975   AM_RANGE(0x0000, 0x1fff) AM_ROM
976   AM_RANGE(0x2000, 0x3fff) AM_RAM
977   AM_RANGE(0x4002, 0x4002) AM_WRITENOP            /* Unknown */
981978   AM_RANGE(0x4003, 0x4003) AM_WRITENOP            /* Unknown */
982979   AM_RANGE(0x4004, 0x4004) AM_WRITE(sb_coin_w)    /* single board systems */
983980   AM_RANGE(0x4008, 0x4008) AM_DEVREAD("soundfifo1", fifo7200_device, data_byte_r)
r23471r23472
988985   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
989986   AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w)   /* control register: bits 0-2 = bank @ 8000, bit 3 = watchdog? */
990987   AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_device, read, write)
991   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank4")
988   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
992989ADDRESS_MAP_END
993990
994991
r23471r23472
1002999ADDRESS_MAP_END
10031000
10041001static ADDRESS_MAP_START( sxx2f_map, AS_PROGRAM, 32, seibuspi_state )
1005   AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff)
1006   AM_RANGE(0x00000688, 0x0000068b) AM_WRITENOP
10071002   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000)
1008   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITENOP
1009   AM_IMPORT_FROM( spi_map )
1003   AM_IMPORT_FROM( sxx2e_map )
10101004ADDRESS_MAP_END
10111005
10121006
r23471r23472
10171011   AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w)
10181012   AM_RANGE(0x0000041c, 0x0000041f) AM_READNOP
10191013   AM_RANGE(0x0000041c, 0x0000041f) AM_WRITE(spi_layer_enable_w)
1020   AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_SHARE("spi_scrollram")
1014   AM_RANGE(0x00000420, 0x0000042b) AM_RAM AM_SHARE("scrollram")
10211015   AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w)
10221016   AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
10231017   AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w)
r23471r23472
10301024   AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM")     /* Player controls (start) */
10311025   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000)
10321026   AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(oki_bank_w, 0xff000000)
1033   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("spimainram")
1027   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram")
10341028   AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1")
10351029   AM_RANGE(0x01200000, 0x01200003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff)
10361030   AM_RANGE(0x01200004, 0x01200007) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff)
r23471r23472
10401034
10411035/********************************************************************/
10421036
1043WRITE32_MEMBER(seibuspi_state::input_select_w)
1044{
1045   m_ejsakura_input_port = data;
1046}
1047
10481037static ADDRESS_MAP_START( sys386f2_map, AS_PROGRAM, 32, seibuspi_state )
10491038   AM_RANGE(0x00000000, 0x0000000f) AM_RAM
10501039   AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r)             /* Unknown */
10511040   AM_RANGE(0x00000090, 0x00000097) AM_RAM /* Unknown */
1052   AM_RANGE(0x00000400, 0x00000403) AM_READNOP AM_WRITE(input_select_w)
1041   AM_RANGE(0x00000400, 0x00000403) AM_READNOP AM_WRITE(ejsakura_input_select_w)
10531042   AM_RANGE(0x00000404, 0x00000407) AM_WRITE8(eeprom_w, 0x000000ff)
10541043   AM_RANGE(0x00000408, 0x0000040f) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x000000ff)
10551044   AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w)
r23471r23472
10601049   AM_RANGE(0x00000600, 0x00000607) AM_DEVREAD8("ymz", ymz280b_device, read, 0x000000ff)
10611050   AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r)
10621051   AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("INPUTS")     /* Player controls */
1063   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("spimainram")
1052   AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram")
10641053   AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1")
10651054   AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1")        /* ROM location in real-mode */
10661055ADDRESS_MAP_END
r23471r23472
10861075      m_soundflash2->write(offset & 0x0fffff, data);
10871076}
10881077
1089WRITE_LINE_MEMBER(seibuspi_state::irqhandler)
1078WRITE_LINE_MEMBER(seibuspi_state::ymf_irqhandler)
10901079{
10911080   if (state)
10921081      m_audiocpu->set_input_line_and_vector(0, ASSERT_LINE, 0xd7);    // IRQ is RST10
r23471r23472
12711260   PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_MAHJONG_RON ) PORT_PLAYER(1)
12721261INPUT_PORTS_END
12731262
1263
1264CUSTOM_INPUT_MEMBER(seibuspi_state::ejsakura_keyboard_r)
1265{
1266   switch(m_ejsakura_input_port)
1267   {
1268      case 0x01:
1269         return ioport("INPUT01")->read();
1270      case 0x02:
1271         return ioport("INPUT02")->read();
1272      case 0x04:
1273         return ioport("INPUT04")->read();
1274      case 0x08:
1275         return ioport("INPUT08")->read();
1276      case 0x10:
1277         return ioport("INPUT10")->read();
1278      default:
1279         return ioport("SYSTEM")->read();
1280   }
1281   return 0xffffffff;
1282}
1283
12741284static INPUT_PORTS_START( spi_ejsakura )
12751285   PORT_START("INPUTS")
12761286   PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, seibuspi_state,ejsakura_keyboard_r, NULL)
r23471r23472
14191429   6,
14201430   { 0, 4, 8, 12, 16, 20 },
14211431   {
1422         3, 2, 1, 0,
1432      3, 2, 1, 0,
14231433      27,26,25,24,
14241434      51,50,49,48,
14251435      75,74,73,72
r23471r23472
14381448   1,
14391449   { 0 },
14401450   {
1441         3, 2, 1, 0,
1451      3, 2, 1, 0,
14421452      27,26,25,24,
14431453      51,50,49,48,
14441454      75,74,73,72
r23471r23472
14561466   1,
14571467   { 4 },
14581468   {
1459         3, 2, 1, 0,
1469      3, 2, 1, 0,
14601470      27,26,25,24,
14611471      51,50,49,48,
14621472      75,74,73,72
r23471r23472
14741484   1,
14751485   { 8 },
14761486   {
1477         3, 2, 1, 0,
1487      3, 2, 1, 0,
14781488      27,26,25,24,
14791489      51,50,49,48,
14801490      75,74,73,72
r23471r23472
14921502   1,
14931503   { 12 },
14941504   {
1495         3, 2, 1, 0,
1505      3, 2, 1, 0,
14961506      27,26,25,24,
14971507      51,50,49,48,
14981508      75,74,73,72
r23471r23472
15101520   1,
15111521   { 16 },
15121522   {
1513         3, 2, 1, 0,
1523      3, 2, 1, 0,
15141524      27,26,25,24,
15151525      51,50,49,48,
15161526      75,74,73,72
r23471r23472
15281538   1,
15291539   { 20 },
15301540   {
1531         3, 2, 1, 0,
1541      3, 2, 1, 0,
15321542      27,26,25,24,
15331543      51,50,49,48,
15341544      75,74,73,72
r23471r23472
17241734   return 0x20;
17251735}
17261736
1737
17271738/* SPI */
17281739
1740void seibuspi_state::init_spi_common()
1741{
1742   if (m_z80_rom != NULL)
1743      membank("bank1")->configure_entries(0, 7, m_z80_rom->base(), 0x8000);
1744}
1745
1746void seibuspi_state::init_sei252()
1747{
1748   seibuspi_text_decrypt(memregion("gfx1")->base());
1749   seibuspi_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
1750   seibuspi_sprite_decrypt(memregion("gfx3")->base(), 0x400000);
1751   init_spi_common();
1752}
1753
1754void seibuspi_state::init_rise10()
1755{
1756   seibuspi_rise10_text_decrypt(memregion("gfx1")->base());
1757   seibuspi_rise10_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
1758   seibuspi_rise10_sprite_decrypt(memregion("gfx3")->base(), 0x600000);
1759   init_spi_common();
1760}
1761
1762void seibuspi_state::init_rise11()
1763{
1764   seibuspi_rise11_text_decrypt(memregion("gfx1")->base());
1765   seibuspi_rise11_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
1766   seibuspi_rise11_sprite_decrypt_rfjet(memregion("gfx3")->base(), 0x800000);
1767   init_spi_common();
1768}
1769
1770
17291771MACHINE_START_MEMBER(seibuspi_state,spi)
17301772{
1731   m_z80_rom = auto_alloc_array(machine(), UINT8, 0x40000);
1773   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
17321774}
17331775
17341776MACHINE_RESET_MEMBER(seibuspi_state,spi)
17351777{
1736   UINT8 *rombase = memregion("maincpu")->base();
1737   UINT8 flash_data = rombase[0x1ffffc];
1778   m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
17381779
1739   m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE );
1740   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
1780   membank("bank1")->set_entry(0);
1781   m_z80_lastbank = 0;
1782   m_z80_prg_transfer_pos = 0;
17411783
1742   membank("bank4")->set_base(m_z80_rom);
1743   membank("bank5")->set_base(m_z80_rom);
1744
17451784   /* If the first value doesn't match, the game shows a checksum error */
17461785   /* If any of the other values are wrong, the game goes to update mode */
1786   UINT8 *rombase = memregion("maincpu")->base();
1787   UINT8 country_code = rombase[0x1ffffc];
1788
17471789   m_soundflash1->write(0, 0xff);
17481790   m_soundflash1->write(0, 0x10);
1749   m_soundflash1->write(0, flash_data);           /* country code */
1791   m_soundflash1->write(0, country_code);
17501792
17511793   m_soundflash1->write(0, 0xff);
17521794   m_soundflash2->write(0, 0xff);
r23471r23472
17941836   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17951837
17961838   MCFG_SOUND_ADD("ymf", YMF271, XTAL_16_9344MHz)
1797   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, irqhandler))
1839   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
17981840   MCFG_YMF271_EXT_READ_HANDLER(READ8(seibuspi_state, flashrom_read))
17991841   MCFG_YMF271_EXT_WRITE_HANDLER(WRITE8(seibuspi_state, flashrom_write))
18001842
r23471r23472
18021844   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18031845MACHINE_CONFIG_END
18041846
1847
18051848/* single boards */
18061849
18071850MACHINE_START_MEMBER(seibuspi_state,sxx2e)
18081851{
1809   m_z80_rom = auto_alloc_array(machine(), UINT8, 0x40000);
1852   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
18101853}
18111854
18121855MACHINE_RESET_MEMBER(seibuspi_state,sxx2e)
18131856{
1814   UINT8 *rom = memregion("audiocpu")->base();
1815
1816   membank("bank4")->set_base(m_z80_rom);
1817   membank("bank5")->set_base(m_z80_rom);
1818
1819   memcpy(m_z80_rom, rom, 0x40000);
1820
1821   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
1822
1857   membank("bank1")->set_entry(0);
1858   m_z80_lastbank = 0;
18231859   m_sb_coin_latch = 0;
18241860}
18251861
r23471r23472
18371873
18381874   /* sound hardware */
18391875   MCFG_SOUND_REPLACE("ymf", YMF271, XTAL_16_9344MHz)
1840   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, irqhandler))
1876   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
18411877
18421878   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18431879   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
r23471r23472
18641900
18651901   /* sound hardware */
18661902   MCFG_SOUND_REPLACE("ymf", YMF271, XTAL_16_384MHz) // 16.384MHz
1867   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, irqhandler))
1903   MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
18681904
18691905   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18701906   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18711907MACHINE_CONFIG_END
18721908
1873READ32_MEMBER(seibuspi_state::senkyu_speedup_r)
1874{
1875   if (space.device().safe_pc()==0x00305bb2) space.device().execute().spin_until_interrupt(); // idle
1876   return m_spimainram[(0x0018cb4-0x800)/4];
1877}
18781909
1879READ32_MEMBER(seibuspi_state::senkyua_speedup_r)
1910/* SYS386 */
1911
1912MACHINE_START_MEMBER(seibuspi_state,seibu386)
18801913{
1881   if (space.device().safe_pc()== 0x30582e) space.device().execute().spin_until_interrupt(); // idle
1882   return m_spimainram[(0x0018c9c-0x800)/4];
1914   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
18831915}
18841916
1885READ32_MEMBER(seibuspi_state::batlball_speedup_r)
1917MACHINE_RESET_MEMBER(seibuspi_state,seibu386)
18861918{
1887//  printf("space.device().safe_pc() %06x\n", space.device().safe_pc());
1888
1889   /* batlbalu */
1890   if (space.device().safe_pc()==0x00305996) space.device().execute().spin_until_interrupt(); // idle
1891
1892   /* batlball */
1893   if (space.device().safe_pc()==0x003058aa) space.device().execute().spin_until_interrupt(); // idle
1894
1895   return m_spimainram[(0x0018db4-0x800)/4];
18961919}
18971920
1898READ32_MEMBER(seibuspi_state::rdft_speedup_r)
1899{
1900   /* rdft */
1901   if (space.device().safe_pc()==0x0203f0a) space.device().execute().spin_until_interrupt(); // idle
1921static MACHINE_CONFIG_START( seibu386, seibuspi_state )
19021922
1903   /* rdftau */
1904   if (space.device().safe_pc()==0x0203f16) space.device().execute().spin_until_interrupt(); // idle
1923   /* basic machine hardware */
1924   MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz
1925   MCFG_CPU_PROGRAM_MAP(seibu386_map)
1926   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
19051927
1906   /* rdftj */
1907   if (space.device().safe_pc()==0x0203f22) space.device().execute().spin_until_interrupt(); // idle
1928   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386)
1929   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386)
19081930
1909   /* rdftdi */
1910   if (space.device().safe_pc()==0x0203f46) space.device().execute().spin_until_interrupt(); // idle
1931   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
19111932
1912   /* rdftu */
1913   if (space.device().safe_pc()==0x0203f3a) space.device().execute().spin_until_interrupt(); // idle
1933   /* video hardware */
1934   MCFG_SCREEN_ADD("screen", RASTER)
1935   MCFG_SCREEN_REFRESH_RATE(54)
1936   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
1937   MCFG_SCREEN_SIZE(64*8, 32*8)
1938   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
19141939
1915//  mame_printf_debug("%08x\n",space.device().safe_pc());
1940   MCFG_GFXDECODE(spi)
1941   MCFG_PALETTE_LENGTH(6144)
19161942
1917   return m_spimainram[(0x00298d0-0x800)/4];
1918}
1943   MCFG_VIDEO_START_OVERRIDE(seibuspi_state, spi)
1944   MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
19191945
1920READ32_MEMBER(seibuspi_state::viprp1_speedup_r)
1921{
1922   /* viprp1 */
1923   if (space.device().safe_pc()==0x0202769) space.device().execute().spin_until_interrupt(); // idle
1946   /* sound hardware */
1947   MCFG_SPEAKER_STANDARD_MONO("mono")
19241948
1925   /* viprp1s */
1926   if (space.device().safe_pc()==0x02027e9) space.device().execute().spin_until_interrupt(); // idle
1949   MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH)
1950   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
19271951
1928   /* viprp1ot */
1929   if (space.device().safe_pc()==0x02026bd) space.device().execute().spin_until_interrupt(); // idle
1952   MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH)
1953   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
1954MACHINE_CONFIG_END
19301955
1931//  mame_printf_debug("%08x\n",space.device().safe_pc());
19321956
1933   return m_spimainram[(0x001e2e0-0x800)/4];
1934}
1957/* SYS386-F V2.0 */
19351958
1936READ32_MEMBER(seibuspi_state::viprp1o_speedup_r)
1959DRIVER_INIT_MEMBER(seibuspi_state,sys386f2)
19371960{
1938   /* viperp1o */
1939   if (space.device().safe_pc()==0x0201f99) space.device().execute().spin_until_interrupt(); // idle
1940//  mame_printf_debug("%08x\n",space.device().safe_pc());
1941   return m_spimainram[(0x001d49c-0x800)/4];
1942}
1961   int i, j;
1962   UINT16 *src = (UINT16 *)memregion("gfx3")->base();
1963   UINT16 tmp[0x40 / 2], Offset;
19431964
1944#ifdef UNUSED_FUNCTION
1945// causes input problems?
1946READ32_MEMBER(seibuspi_state::ejanhs_speedup_r)
1947{
1948// mame_printf_debug("%08x\n",space.device().safe_pc());
1949   if (space.device().safe_pc()==0x03032c7) space.device().execute().spin_until_interrupt(); // idle
1950   return m_spimainram[(0x002d224-0x800)/4];
1965   // sprite_reorder() only
1966   for(i = 0; i < memregion("gfx3")->bytes() / 0x40; i++)
1967   {
1968      memcpy(tmp, src, 0x40);
1969
1970      for(j = 0; j < 0x40 / 2; j++)
1971      {
1972         Offset = (j >> 1) | (j << 4 & 0x10);
1973         *src++ = tmp[Offset];
1974      }
1975   }
19511976}
1952#endif
19531977
1954READ32_MEMBER(seibuspi_state::rf2_speedup_r)
1955{
1956   /* rdft22kc */
1957   if (space.device().safe_pc()==0x0203926) space.device().execute().spin_until_interrupt(); // idle
1978static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
19581979
1959   /* rdft2, rdft2j */
1960   if (space.device().safe_pc()==0x0204372) space.device().execute().spin_until_interrupt(); // idle
1980   /* basic machine hardware */
1981   MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // Intel i386DX, 25MHz
1982   MCFG_CPU_PROGRAM_MAP(sys386f2_map)
1983   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
19611984
1962   /* rdft2us */
1963   if (space.device().safe_pc()==0x020420e) space.device().execute().spin_until_interrupt(); // idle
1985   MCFG_MACHINE_START_OVERRIDE(seibuspi_state, seibu386)
1986   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386)
19641987
1965   /* rdft2a */
1966   if (space.device().safe_pc()==0x0204366) space.device().execute().spin_until_interrupt(); // idle
1988   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
19671989
1968//  mame_printf_debug("%08x\n",space.device().safe_pc());
1990   /* video hardware */
1991   MCFG_SCREEN_ADD("screen", RASTER)
1992   MCFG_SCREEN_REFRESH_RATE(57.59)
1993   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
1994   MCFG_SCREEN_SIZE(64*8, 32*8)
1995   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
19691996
1970   return m_spimainram[(0x0282AC-0x800)/4];
1971}
1997   MCFG_GFXDECODE(sys386f2)
1998   MCFG_PALETTE_LENGTH(8192)
19721999
1973READ32_MEMBER(seibuspi_state::rfjet_speedup_r)
1974{
1975   /* rfjet, rfjetu, rfjeta */
1976   if (space.device().safe_pc()==0x0206082) space.device().execute().spin_until_interrupt(); // idle
2000   MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f2)
2001   MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f2)
19772002
1978   /* rfjetus */
1979   if (space.device().safe_pc()==0x0205b39)
1980   {
1981      UINT32 r;
1982      space.device().execute().spin_until_interrupt(); // idle
1983      // Hack to enter test mode
1984      r = m_spimainram[(0x002894c-0x800)/4] & (~0x400);
1985      return r | (((ioport("SYSTEM")->read() ^ 0xff)<<8) & 0x400);
1986   }
2003   /* sound hardware */
2004   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19872005
1988   /* rfjetj */
1989   if (space.device().safe_pc()==0x0205f2e) space.device().execute().spin_until_interrupt(); // idle
2006   MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_384MHz)
2007   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
2008   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
2009MACHINE_CONFIG_END
19902010
1991//  mame_printf_debug("%08x\n",space.device().safe_pc());
19922011
2012/*******************************************************************/
19932013
1994   return m_spimainram[(0x002894c-0x800)/4];
1995}
1996
1997void seibuspi_state::init_spi()
2014DRIVER_INIT_MEMBER(seibuspi_state,senkyu)
19982015{
1999   seibuspi_text_decrypt(memregion("gfx1")->base());
2000   seibuspi_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
2001   seibuspi_sprite_decrypt(memregion("gfx3")->base(), 0x400000);
2016   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018cb4, 0x0018cb7, read32_delegate(FUNC(seibuspi_state::senkyu_speedup_r),this));
2017   init_sei252();
20022018}
20032019
2004DRIVER_INIT_MEMBER(seibuspi_state,rdft)
2020DRIVER_INIT_MEMBER(seibuspi_state,senkyua)
20052021{
2006   m_maincpu->space(AS_PROGRAM).install_read_handler(0x00298d0, 0x00298d3, read32_delegate(FUNC(seibuspi_state::rdft_speedup_r),this));
2007
2008   init_spi();
2022   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018c9c, 0x0018c9f, read32_delegate(FUNC(seibuspi_state::senkyua_speedup_r),this));
2023   init_sei252();
20092024}
20102025
2011DRIVER_INIT_MEMBER(seibuspi_state,senkyu)
2026DRIVER_INIT_MEMBER(seibuspi_state,batlball)
20122027{
2013   m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018cb4, 0x0018cb7, read32_delegate(FUNC(seibuspi_state::senkyu_speedup_r),this));
2014
2015   init_spi();
2028   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018db4, 0x0018db7, read32_delegate(FUNC(seibuspi_state::batlball_speedup_r),this));
2029   init_sei252();
20162030}
20172031
2018DRIVER_INIT_MEMBER(seibuspi_state,senkyua)
2032DRIVER_INIT_MEMBER(seibuspi_state,viprp1)
20192033{
2020   m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018c9c, 0x0018c9f, read32_delegate(FUNC(seibuspi_state::senkyua_speedup_r),this));
2021
2022   init_spi();
2034   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001e2e0, 0x001e2e3, read32_delegate(FUNC(seibuspi_state::viprp1_speedup_r),this));
2035   init_sei252();
20232036}
20242037
2025DRIVER_INIT_MEMBER(seibuspi_state,batlball)
2038DRIVER_INIT_MEMBER(seibuspi_state,viprp1o)
20262039{
2027   m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018db4, 0x0018db7, read32_delegate(FUNC(seibuspi_state::batlball_speedup_r),this));
2028
2029   init_spi();
2040   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001d49c, 0x001d49f, read32_delegate(FUNC(seibuspi_state::viprp1o_speedup_r),this));
2041   init_sei252();
20302042}
20312043
20322044DRIVER_INIT_MEMBER(seibuspi_state,ejanhs)
20332045{
20342046//  idle skip doesn't work properly?
2035//  m_maincpu->space(AS_PROGRAM).install_read_handler(0x002d224, 0x002d227, read32_delegate(FUNC(seibuspi_state::ejanhs_speedup_r),this));
2047//  if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002d224, 0x002d227, read32_delegate(FUNC(seibuspi_state::ejanhs_speedup_r),this));
2048   init_sei252();
2049}
20362050
2037   init_spi();
2051DRIVER_INIT_MEMBER(seibuspi_state,rdft)
2052{
2053   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00298d0, 0x00298d3, read32_delegate(FUNC(seibuspi_state::rdft_speedup_r),this));
2054   init_sei252();
20382055}
20392056
2040DRIVER_INIT_MEMBER(seibuspi_state,viprp1)
2057DRIVER_INIT_MEMBER(seibuspi_state,rdft2)
20412058{
2042   m_maincpu->space(AS_PROGRAM).install_read_handler(0x001e2e0, 0x001e2e3, read32_delegate(FUNC(seibuspi_state::viprp1_speedup_r),this));
2043
2044   init_spi();
2059   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00282ac, 0x00282af, read32_delegate(FUNC(seibuspi_state::rf2_speedup_r),this));
2060   init_rise10();
20452061}
20462062
2047DRIVER_INIT_MEMBER(seibuspi_state,viprp1o)
2063DRIVER_INIT_MEMBER(seibuspi_state,rfjet)
20482064{
2049   m_maincpu->space(AS_PROGRAM).install_read_handler(0x001d49c, 0x001d49f, read32_delegate(FUNC(seibuspi_state::viprp1o_speedup_r),this));
2050
2051   init_spi();
2065   if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002894c, 0x002894f, read32_delegate(FUNC(seibuspi_state::rfjet_speedup_r),this));
2066   init_rise11();
20522067}
20532068
20542069
2070READ32_MEMBER(seibuspi_state::senkyu_speedup_r)
2071{
2072   if (space.device().safe_pc()==0x00305bb2) space.device().execute().spin_until_interrupt(); // idle
20552073
2056void seibuspi_state::init_rf2_common()
2057{
2058   m_maincpu->space(AS_PROGRAM).install_read_handler(0x0282ac, 0x0282af, read32_delegate(FUNC(seibuspi_state::rf2_speedup_r),this));
2059   seibuspi_rise10_text_decrypt(memregion("gfx1")->base());
2060   seibuspi_rise10_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
2061   seibuspi_rise10_sprite_decrypt(memregion("gfx3")->base(), 0x600000);
2074   return m_mainram[(0x0018cb4-0x800)/4];
20622075}
20632076
2064DRIVER_INIT_MEMBER(seibuspi_state,rdft2)
2077READ32_MEMBER(seibuspi_state::senkyua_speedup_r)
20652078{
2066   init_rf2_common();
2079   if (space.device().safe_pc()== 0x30582e) space.device().execute().spin_until_interrupt(); // idle
2080
2081   return m_mainram[(0x0018c9c-0x800)/4];
20672082}
20682083
2069DRIVER_INIT_MEMBER(seibuspi_state,rdft2us)
2084READ32_MEMBER(seibuspi_state::batlball_speedup_r)
20702085{
2071   init_rf2_common();
2072}
2086//  printf("space.device().safe_pc() %06x\n", space.device().safe_pc());
20732087
2088   /* batlbalu */
2089   if (space.device().safe_pc()==0x00305996) space.device().execute().spin_until_interrupt(); // idle
20742090
2075void seibuspi_state::init_rfjet_common()
2076{
2077   m_maincpu->space(AS_PROGRAM).install_read_handler(0x002894c, 0x002894f, read32_delegate(FUNC(seibuspi_state::rfjet_speedup_r),this));
2078   seibuspi_rise11_text_decrypt(memregion("gfx1")->base());
2079   seibuspi_rise11_bg_decrypt(memregion("gfx2")->base(), memregion("gfx2")->bytes());
2080   seibuspi_rise11_sprite_decrypt_rfjet(memregion("gfx3")->base(), 0x800000);
2091   /* batlball */
2092   if (space.device().safe_pc()==0x003058aa) space.device().execute().spin_until_interrupt(); // idle
2093
2094   return m_mainram[(0x0018db4-0x800)/4];
20812095}
20822096
2083DRIVER_INIT_MEMBER(seibuspi_state,rfjet)
2097READ32_MEMBER(seibuspi_state::viprp1_speedup_r)
20842098{
2085   init_rfjet_common();
2086}
2099   /* viprp1 */
2100   if (space.device().safe_pc()==0x0202769) space.device().execute().spin_until_interrupt(); // idle
20872101
2088/* SYS386 */
2102   /* viprp1s */
2103   if (space.device().safe_pc()==0x02027e9) space.device().execute().spin_until_interrupt(); // idle
20892104
2090DRIVER_INIT_MEMBER(seibuspi_state,rdft22kc)
2091{
2092   init_rf2_common();
2105   /* viprp1ot */
2106   if (space.device().safe_pc()==0x02026bd) space.device().execute().spin_until_interrupt(); // idle
2107
2108//  mame_printf_debug("%08x\n",space.device().safe_pc());
2109
2110   return m_mainram[(0x001e2e0-0x800)/4];
20932111}
20942112
2095DRIVER_INIT_MEMBER(seibuspi_state,rfjet2k)
2113READ32_MEMBER(seibuspi_state::viprp1o_speedup_r)
20962114{
2097   init_rfjet_common();
2115   /* viperp1o */
2116   if (space.device().safe_pc()==0x0201f99) space.device().execute().spin_until_interrupt(); // idle
2117//  mame_printf_debug("%08x\n",space.device().safe_pc());
2118   return m_mainram[(0x001d49c-0x800)/4];
20982119}
20992120
2100MACHINE_RESET_MEMBER(seibuspi_state,seibu386)
2121#ifdef UNUSED_FUNCTION
2122// causes input problems?
2123READ32_MEMBER(seibuspi_state::ejanhs_speedup_r)
21012124{
2102   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(seibuspi_state::spi_irq_callback),this));
2125// mame_printf_debug("%08x\n",space.device().safe_pc());
2126   if (space.device().safe_pc()==0x03032c7) space.device().execute().spin_until_interrupt(); // idle
2127   return m_mainram[(0x002d224-0x800)/4];
21032128}
2129#endif
21042130
2105static MACHINE_CONFIG_START( seibu386, seibuspi_state )
2131READ32_MEMBER(seibuspi_state::rdft_speedup_r)
2132{
2133   /* rdft */
2134   if (space.device().safe_pc()==0x0203f0a) space.device().execute().spin_until_interrupt(); // idle
21062135
2107   /* basic machine hardware */
2108   MCFG_CPU_ADD("maincpu", I386, XTAL_40MHz) // AMD 386DX, 40MHz
2109   MCFG_CPU_PROGRAM_MAP(seibu386_map)
2110   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
2136   /* rdftau */
2137   if (space.device().safe_pc()==0x0203f16) space.device().execute().spin_until_interrupt(); // idle
21112138
2112   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, seibu386)
2139   /* rdftj */
2140   if (space.device().safe_pc()==0x0203f22) space.device().execute().spin_until_interrupt(); // idle
21132141
2114   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
2142   /* rdftdi */
2143   if (space.device().safe_pc()==0x0203f46) space.device().execute().spin_until_interrupt(); // idle
21152144
2116   /* video hardware */
2117   MCFG_SCREEN_ADD("screen", RASTER)
2118   MCFG_SCREEN_REFRESH_RATE(54)
2119   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
2120   MCFG_SCREEN_SIZE(64*8, 32*8)
2121   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
2145   /* rdftu */
2146   if (space.device().safe_pc()==0x0203f3a) space.device().execute().spin_until_interrupt(); // idle
21222147
2123   MCFG_GFXDECODE(spi)
2124   MCFG_PALETTE_LENGTH(6144)
2148//  mame_printf_debug("%08x\n",space.device().safe_pc());
21252149
2126   MCFG_VIDEO_START_OVERRIDE(seibuspi_state, spi)
2127   MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_spi)
2150   return m_mainram[(0x00298d0-0x800)/4];
2151}
21282152
2129   /* sound hardware */
2130   MCFG_SPEAKER_STANDARD_MONO("mono")
2153READ32_MEMBER(seibuspi_state::rf2_speedup_r)
2154{
2155   /* rdft22kc */
2156   if (space.device().safe_pc()==0x0203926) space.device().execute().spin_until_interrupt(); // idle
21312157
2132   MCFG_OKIM6295_ADD("oki1", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH)
2133   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
2158   /* rdft2, rdft2j */
2159   if (space.device().safe_pc()==0x0204372) space.device().execute().spin_until_interrupt(); // idle
21342160
2135   MCFG_OKIM6295_ADD("oki2", XTAL_28_63636MHz/20, OKIM6295_PIN7_HIGH)
2136   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
2137MACHINE_CONFIG_END
2161   /* rdft2us */
2162   if (space.device().safe_pc()==0x020420e) space.device().execute().spin_until_interrupt(); // idle
21382163
2139/* SYS386-F V2.0 */
2140DRIVER_INIT_MEMBER(seibuspi_state,sys386f2)
2141{
2142   int i, j;
2143   UINT16 *src = (UINT16 *)memregion("gfx3")->base();
2144   UINT16 tmp[0x40 / 2], Offset;
2164   /* rdft2a */
2165   if (space.device().safe_pc()==0x0204366) space.device().execute().spin_until_interrupt(); // idle
21452166
2146   // sprite_reorder() only
2147   for(i = 0; i < memregion("gfx3")->bytes() / 0x40; i++)
2148   {
2149      memcpy(tmp, src, 0x40);
2167//  mame_printf_debug("%08x\n",space.device().safe_pc());
21502168
2151      for(j = 0; j < 0x40 / 2; j++)
2152      {
2153         Offset = (j >> 1) | (j << 4 & 0x10);
2154         *src++ = tmp[Offset];
2155      }
2156   }
2169   return m_mainram[(0x0282ac-0x800)/4];
21572170}
21582171
2159static MACHINE_CONFIG_START( sys386f2, seibuspi_state )
2172READ32_MEMBER(seibuspi_state::rfjet_speedup_r)
2173{
2174   /* rfjet, rfjetu, rfjeta */
2175   if (space.device().safe_pc()==0x0206082) space.device().execute().spin_until_interrupt(); // idle
21602176
2161   /* basic machine hardware */
2162   MCFG_CPU_ADD("maincpu", I386, XTAL_50MHz/2) // Intel i386DX, 25MHz
2163   MCFG_CPU_PROGRAM_MAP(sys386f2_map)
2164   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
2177   /* rfjetus */
2178   if (space.device().safe_pc()==0x0205b39)
2179   {
2180      UINT32 r;
2181      space.device().execute().spin_until_interrupt(); // idle
2182      // Hack to enter test mode
2183      r = m_mainram[(0x002894c-0x800)/4] & (~0x400);
2184      return r | (((ioport("SYSTEM")->read() ^ 0xff)<<8) & 0x400);
2185   }
21652186
2166   MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state,seibu386)
2187   /* rfjetj */
2188   if (space.device().safe_pc()==0x0205f2e) space.device().execute().spin_until_interrupt(); // idle
21672189
2168   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
2190//  mame_printf_debug("%08x\n",space.device().safe_pc());
21692191
2170   /* video hardware */
2171   MCFG_SCREEN_ADD("screen", RASTER)
2172   MCFG_SCREEN_REFRESH_RATE(57.59)
2173   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
2174   MCFG_SCREEN_SIZE(64*8, 32*8)
2175   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
2192   return m_mainram[(0x002894c-0x800)/4];
2193}
21762194
2177   MCFG_GFXDECODE(sys386f2)
2178   MCFG_PALETTE_LENGTH(8192)
21792195
2180   MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f2)
2181   MCFG_SCREEN_UPDATE_DRIVER(seibuspi_state, screen_update_sys386f2)
2196/*******************************************************************/
21822197
2183   /* sound hardware */
2184   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
2185
2186   MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_384MHz)
2187   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
2188   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
2189MACHINE_CONFIG_END
2190
2191
2192/*******************************************************************/
21932198#define ROM_LOAD24_BYTE(name,offset,length,hash)        ROMX_LOAD(name, offset, length, hash, ROM_SKIP(2))
21942199#define ROM_LOAD24_WORD(name,offset,length,hash)        ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(1) | ROM_REVERSE)
21952200#define ROM_LOAD24_WORD_SWAP(name,offset,length,hash)   ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(1))
r23471r23472
22032208   ROM_LOAD32_BYTE("fb_3.210", 0x100002, 0x40000, CRC(226f0429) SHA1(69d0fe6671278d7fe215e455bb50abf631cdb484) )
22042209   ROM_LOAD32_BYTE("fb_4.29",  0x100003, 0x40000, CRC(b46d66b7) SHA1(1acd0fea9384e1488b44661e0c99b9672a3f9803) )
22052210
2211   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2212
22062213   ROM_REGION( 0x30000, "gfx1", 0 )
22072214   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
22082215   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
22292236   ROM_LOAD32_BYTE("3.bin", 0x100002, 0x40000, CRC(e27ceccd) SHA1(3d6b8e97e89939c72d1a5a4a3856025b5f548645) )
22302237   ROM_LOAD32_BYTE("4.bin", 0x100003, 0x40000, CRC(7c6d4549) SHA1(efc6920a2e518afe849fb6fe191e7cd0bc483be5) )
22312238
2239   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2240
22322241   ROM_REGION( 0x30000, "gfx1", 0 )
22332242   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
22342243   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
22552264   ROM_LOAD32_BYTE("3.210", 0x100002, 0x40000, CRC(520d31e1) SHA1(998ae968113ab5b2891044187d93793903c13452) )
22562265   ROM_LOAD32_BYTE("4.029", 0x100003, 0x40000, CRC(22419b78) SHA1(67475a654d4ad94e5dfda88cbe2f9c1b5ba6d2cc) )
22572266
2267   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2268
22582269   ROM_REGION( 0x30000, "gfx1", 0 )
22592270   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
22602271   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
22812292   ROM_LOAD32_BYTE("3.210",        0x100002, 0x40000, CRC(520d31e1) SHA1(998ae968113ab5b2891044187d93793903c13452) )
22822293   ROM_LOAD32_BYTE("4.029",        0x100003, 0x40000, CRC(22419b78) SHA1(67475a654d4ad94e5dfda88cbe2f9c1b5ba6d2cc) )
22832294
2295   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2296
22842297   ROM_REGION( 0x30000, "gfx1", 0 )
22852298   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
22862299   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
23072320   ROM_LOAD32_BYTE("3_10-16", 0x100002, 0x40000, CRC(8c30180e) SHA1(47b99b04e2e74f1ee5095aed3f45aba66cd3da3f) )
23082321   ROM_LOAD32_BYTE("4_10-16", 0x100003, 0x40000, CRC(048c7aaa) SHA1(5eca2cdf4e6f077988509c3c42c86408b21ffbf1) )
23092322
2323   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2324
23102325   ROM_REGION( 0x30000, "gfx1", 0 )
23112326   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
23122327   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
23332348   ROM_LOAD32_BYTE("sen3.bin", 0x100002, 0x40000, CRC(98e6f19f) SHA1(433f8463e63bba32730d3c098354f8c95257df3f) )
23342349   ROM_LOAD32_BYTE("sen4.bin", 0x100003, 0x40000, CRC(1343ec56) SHA1(8ecc8d7b425ff6512ffa969a7f26423fa50ad258) )
23352350
2351   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2352
23362353   ROM_REGION( 0x30000, "gfx1", 0 )
23372354   ROM_LOAD24_WORD("fb_6.413", 0x000000, 0x20000, CRC(b57115c9) SHA1(eb95f416f522032ca949bfb6348f1ff824101f2d) )
23382355   ROM_LOAD24_BYTE("fb_5.48",  0x000002, 0x10000, CRC(440a9ae3) SHA1(3f57e6da91f0dac2d816c873759f1e1d3259caf1) )
r23471r23472
23602377   ROM_LOAD32_BYTE("ejan3_3.210", 0x100002, 0x40000, CRC(46897b7d) SHA1(a22e0467c016e72bf99df2c1e6ecc792b2151b15) )
23612378   ROM_LOAD32_BYTE("ejan3_4.29",  0x100003, 0x40000, CRC(b3187a2b) SHA1(7fc11ed5ceb2e45f784e75307fef8b850a981a2e) )
23622379
2380   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2381
23632382   ROM_REGION( 0x30000, "gfx1", 0 )
23642383   ROM_LOAD24_WORD("ejan3_6.413", 0x000000, 0x20000, CRC(837e012c) SHA1(815452083b65885d6e66dfc058ceec81bb3e6678) )
23652384   ROM_LOAD24_BYTE("ejan3_5.48",  0x000002, 0x10000, CRC(d62db7bf) SHA1(c88f1bb6106c59179b914962ed8cdd4095fd9ce8) )
r23471r23472
23892408   ROM_LOAD32_BYTE("seibu3.210", 0x000002, 0x80000, CRC(990fa76a) SHA1(7619a631d6f83b3677eb47f984aff684e9518d6d) )
23902409   ROM_LOAD32_BYTE("seibu4.29",  0x000003, 0x80000, CRC(13e3e343) SHA1(aac0c7450059847f53b5081e4abf26303a50f999) )
23912410
2411   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2412
23922413   ROM_REGION( 0x30000, "gfx1", 0 )
23932414   ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
23942415   ROM_LOAD24_BYTE("seibu6.u048",  0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
r23471r23472
24162437   ROM_LOAD32_BYTE("seibu3.u0210", 0x000002, 0x80000, CRC(c38f7b4e) SHA1(d5bf2c7f2f6c812c65005facfd40ac6d3b61f29d) )
24172438   ROM_LOAD32_BYTE("seibu4.u029",  0x000003, 0x80000, CRC(523cbef3) SHA1(5d15261b8fb108e0ba4dfd14d259984ef81ce877) )
24182439
2440   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2441
24192442   ROM_REGION( 0x30000, "gfx1", 0 )
24202443   ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
24212444   ROM_LOAD24_BYTE("seibu6.u048",  0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
r23471r23472
24432466   ROM_LOAD32_BYTE("seibus_3", 0x000002, 0x80000, CRC(f9dd9128) SHA1(ff7460699424de9e9d953343c42e0ef0fa1f0e30) )
24442467   ROM_LOAD32_BYTE("seibus_4", 0x000003, 0x80000, CRC(cb06440c) SHA1(c73647fb72c1579f05298fd884d8aeb3765bfff4) )
24452468
2469   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2470
24462471   ROM_REGION( 0x30000, "gfx1", 0 )
24472472   ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
24482473   ROM_LOAD24_BYTE("seibu6.u048",  0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
r23471r23472
24702495   ROM_LOAD32_BYTE("v_3-n.210", 0x000002, 0x80000, CRC(842434ac) SHA1(982d219c1d329122789c552208db2f4aaa4af7e4) )
24712496   ROM_LOAD32_BYTE("v_4-n.29",  0x000003, 0x80000, CRC(a3948824) SHA1(fe076951427126c8b7fe81be84ecf0699597225b) )
24722497
2498   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2499
24732500   ROM_REGION( 0x30000, "gfx1", 0 )
24742501   ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
24752502   ROM_LOAD24_BYTE("seibu6.u048",  0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
r23471r23472
24972524   ROM_LOAD32_BYTE("viper_prg2.bin", 0x000002, 0x80000, CRC(d7ea460b) SHA1(aed10adacd073f7d2b35f12ba4b7876e5c99d142) )
24982525   ROM_LOAD32_BYTE("viper_prg3.bin", 0x000003, 0x80000, CRC(ca6df094) SHA1(921eec141ce2d449047172fa9cdf39d459b5cc7b) )
24992526
2527   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2528
25002529   ROM_REGION( 0x30000, "gfx1", 0 )
25012530   ROM_LOAD24_WORD("seibu5.u0413", 0x000000, 0x20000, CRC(5ece677c) SHA1(b782cf3296f866f79fafa69ff719211c9d4026df) )
25022531   ROM_LOAD24_BYTE("seibu6.u048",  0x000002, 0x10000, CRC(44844ef8) SHA1(bcbe24d2ffb64f9165ba4ab7de27f44b99b5ff5a) )
r23471r23472
25242553   ROM_LOAD32_BYTE("seibu_3", 0x000002, 0x80000, CRC(91989503) SHA1(8c215fac200cc693396dbd57e0939e7efe883342) )
25252554   ROM_LOAD32_BYTE("seibu_4", 0x000003, 0x80000, CRC(12c9582d) SHA1(a79e26514e5ab8703a7a8c3ac39b359cfa4117c1) )
25262555
2556   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2557
25272558   ROM_REGION( 0x30000, "gfx1", 0 )
25282559   ROM_LOAD24_WORD("seibu_5", 0x000000, 0x20000, CRC(80920fed) SHA1(b35ed080925f6d0a0b6d2d1ab4fa919f625b1e6a) ) /* Different from both "new" & "old" versions */
25292560   ROM_LOAD24_BYTE("seibu_6", 0x000002, 0x10000, CRC(e71a8722) SHA1(3e0133fe1f85058ca6d9ac59d731f342c6b50e92) )
r23471r23472
25512582   ROM_LOAD32_BYTE("v_3-o.210", 0x000002, 0x80000, CRC(6146db39) SHA1(04e68bfff320a3ffcb47686fa012a038538adc1a) )
25522583   ROM_LOAD32_BYTE("v_4-o.29",  0x000003, 0x80000, CRC(dc8dd2b6) SHA1(20970706240c38c54084b4ae24b7ad23b31aa3de) )
25532584
2585   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2586
25542587   ROM_REGION( 0x30000, "gfx1", 0 )
25552588   ROM_LOAD24_WORD("v_5-o.413", 0x000000, 0x20000, CRC(6d863acc) SHA1(3e3e14f51b9394b24d7cbf562f1cfffc9ec2216d) )
25562589   ROM_LOAD24_BYTE("v_6-o.48",  0x000002, 0x10000, CRC(fe7cb8f7) SHA1(55c7ab977c3666c8770deb62718d535673ffd4f8) )
r23471r23472
25782611   ROM_LOAD32_BYTE("ov3.bin", 0x000002, 0x80000, CRC(0e86686b) SHA1(0af207ea77ef378364d80d20ecbfba2f043f2405) )
25792612   ROM_LOAD32_BYTE("ov4.bin", 0x000003, 0x80000, CRC(9d7dd325) SHA1(550a8b5ed60e7ac50c40ec3eaa2cd6462be4a619) )
25802613
2614   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2615
25812616   ROM_REGION( 0x30000, "gfx1", 0 )
25822617   ROM_LOAD24_WORD("v_5-o.413", 0x000000, 0x20000, CRC(6d863acc) SHA1(3e3e14f51b9394b24d7cbf562f1cfffc9ec2216d) )
25832618   ROM_LOAD24_BYTE("v_6-o.48",  0x000002, 0x10000, CRC(fe7cb8f7) SHA1(55c7ab977c3666c8770deb62718d535673ffd4f8) )
r23471r23472
26062641   ROM_LOAD32_BYTE("gd_3.210", 0x000002, 0x80000, CRC(b0f59f44) SHA1(d44fe074ddab35cd0190535cd9fbd7f9e49312a4) )
26072642   ROM_LOAD32_BYTE("gd_4.29",  0x000003, 0x80000, CRC(cd8705bd) SHA1(b19a1486d6b899a134d7b518863ddc8f07967e8b) )
26082643
2644   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2645
26092646   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
26102647   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
26112648   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
26352672   ROM_LOAD32_BYTE("rdftu_gd_3.210", 0x000002, 0x80000, CRC(10761b03) SHA1(e67db2e7c2176987419158fc4cee00fd9b99d03f) )
26362673   ROM_LOAD32_BYTE("rdftu_gd_4.29",  0x000003, 0x80000, CRC(e5a3f01d) SHA1(5ca338f85a020d43d2618f88e798a076d13a5c7f) )
26372674
2675   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2676
26382677   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
26392678   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
26402679   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
26652704   ROM_LOAD32_BYTE("rf3.bin", 0x000002, 0x80000, CRC(beafcd24) SHA1(2dbc47ecef6f898a371a841df2c72151da9c5a8d) )
26662705   ROM_LOAD32_BYTE("rf4.bin", 0x000003, 0x80000, CRC(5236f45f) SHA1(8b05d977d3d07796007a00a52d2396475dc2f7dc) )
26672706
2707   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2708
26682709   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
26692710   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
26702711   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
26942735   ROM_LOAD32_BYTE("3.u0210", 0x000002, 0x80000, CRC(a73e337e) SHA1(93323875c676f38eca3298fcf4a34911db2d78a8) )
26952736   ROM_LOAD32_BYTE("4.u029",  0x000003, 0x80000, CRC(8cc628f0) SHA1(7534eae8a1ea461adad483002b3cecf132e0e325) )
26962737
2738   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2739
26972740   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
26982741   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
26992742   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
27232766   ROM_LOAD32_BYTE("u210.bin", 0x000002, 0x80000, CRC(47fc3c96) SHA1(7378f8caa847f89f235b5be6779118721076873b) )
27242767   ROM_LOAD32_BYTE("u29.bin",  0x000003, 0x80000, CRC(271bdd4b) SHA1(0a805568cbd6a9c18bdb755a41972ff6bba9e6eb) )
27252768
2769   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2770
27262771   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
27272772   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
27282773   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
27522797   ROM_LOAD32_BYTE("u210.bin", 0x000002, 0x80000, CRC(47fc3c96) SHA1(7378f8caa847f89f235b5be6779118721076873b) )
27532798   ROM_LOAD32_BYTE("u29.bin",  0x000003, 0x80000, CRC(271bdd4b) SHA1(0a805568cbd6a9c18bdb755a41972ff6bba9e6eb) )
27542799
2800   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2801
27552802   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
27562803   ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) )
27572804   ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) )
r23471r23472
27802827   ROM_LOAD32_BYTE("raiden-f_prg2.u0212",  0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) // socket is silkscreened on pcb PRG1
27812828   ROM_LOAD32_WORD("raiden-f_prg34.u0219", 0x000002, 0x100000, CRC(63f01d17) SHA1(74dbd0417b974583da87fc6c7a081b03fd4e16b8) ) // socket is silkscreened on pcb PRG23
27822829
2830   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2831
27832832   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
27842833   ROM_LOAD24_WORD("raiden-f_fix.u0425", 0x000000, 0x20000, CRC(2be2936b) SHA1(9e719f7328a52af220b6f084c1e0990ca6e2d533) ) // socket is silkscreened on pcb FIX01
27852834   ROM_LOAD24_BYTE("seibu_7.u048",       0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) // socket is silkscreened on pcb FIXP
r23471r23472
28072856   ROM_LOAD32_BYTE("raiden-f_prg2.u0212",  0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) // socket is silkscreened on pcb PRG1
28082857   ROM_LOAD32_WORD("raiden-f_prg34.u0219", 0x000002, 0x100000, CRC(63f01d17) SHA1(74dbd0417b974583da87fc6c7a081b03fd4e16b8) ) // socket is silkscreened on pcb PRG23
28092858
2859   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2860
28102861   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
28112862   ROM_LOAD24_WORD("raiden-f_fix.u0425", 0x000000, 0x20000, CRC(2be2936b) SHA1(9e719f7328a52af220b6f084c1e0990ca6e2d533) ) // socket is silkscreened on pcb FIX01
28122863   ROM_LOAD24_BYTE("seibu_7.u048",       0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) // socket is silkscreened on pcb FIXP
r23471r23472
28342885   ROM_LOAD32_BYTE("raiden-f_prg2.u0258",  0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) // socket is silkscreened on pcb PRG1
28352886   ROM_LOAD32_WORD("raiden-f_prg34.u0262", 0x000002, 0x100000, CRC(63f01d17) SHA1(74dbd0417b974583da87fc6c7a081b03fd4e16b8) ) // socket is silkscreened on pcb PRG23
28362887
2888   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256K ROM for the Z80 */
2889   ROM_LOAD("seibu_zprg.u1139", 0x000000, 0x20000, CRC(c1fda3e8) SHA1(c1d3a7ba0601a80534ec32249de71d33a828a162) ) // pads are silkscreened ZPRG
2890
28372891   ROM_REGION( 0x30000, "gfx1", 0 ) /* text layer roms */
28382892   ROM_LOAD24_WORD("raiden-f_fix.u0535", 0x000000, 0x20000, CRC(2be2936b) SHA1(9e719f7328a52af220b6f084c1e0990ca6e2d533) ) // socket is silkscreened on pcb FIX01
28392893   ROM_LOAD24_BYTE("seibu_fix2.u0528",   0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) // socket is silkscreened on pcb FIX2
r23471r23472
28512905
28522906   ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 )
28532907
2854   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256k for the Z80 */
2855   ROM_LOAD("seibu_zprg.u1139", 0x000000, 0x20000, CRC(c1fda3e8) SHA1(c1d3a7ba0601a80534ec32249de71d33a828a162) ) // pads are silkscreened ZPRG
2856
28572908   ROM_REGION( 0x200000, "ymf", ROMREGION_ERASE00 )  /* sound roms */
28582909   ROM_LOAD("raiden-f_pcm2.u0975", 0x000000, 0x200000, CRC(3f8d4a48) SHA1(30664a2908daaeaee58f7e157516b522c952e48d) ) // pads are silkscreened SOUND0
28592910   /* SOUND1 socket is unpopulated */
r23471r23472
28672918   ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) )
28682919   ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) )
28692920
2921   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2922
28702923   ROM_REGION( 0x30000, "gfx1", 0 )
28712924   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) )
28722925   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) )
r23471r23472
28992952   ROM_LOAD32_BYTE("3.bin", 0x000002, 0x80000, CRC(86e3d1a8) SHA1(2757cfda57c82dd0f66427caf54eb1f40e85740d) )
29002953   ROM_LOAD32_BYTE("4.bin", 0x000003, 0x80000, CRC(2e409a76) SHA1(cf90aa14a07b5aa861f6f7cc9b1968171e532557) )
29012954
2955   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2956
29022957   ROM_REGION( 0x30000, "gfx1", 0 )
29032958   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) )
29042959   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) )
r23471r23472
29312986   ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) )
29322987   ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) )
29332988
2989   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
2990
29342991   ROM_REGION( 0x30000, "gfx1", 0 )
29352992   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) )
29362993   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) )
r23471r23472
29633020   ROM_LOAD32_BYTE("rf2_3.bin", 0x000002, 0x80000, CRC(e66243b2) SHA1(54e67af37a4586fd1afc79085ed433d599e1bb87) )
29643021   ROM_LOAD32_BYTE("rf2_4.bin", 0x000003, 0x80000, CRC(92b7b73e) SHA1(128649b2a6a0616113bd0f9846fb6cf814ae326d) )
29653022
3023   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3024
29663025   ROM_REGION( 0x30000, "gfx1", 0 )
29673026   ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) )
29683027   ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) )
r23471r23472
29963055   ROM_LOAD32_BYTE("seibu__3.u0221", 0x000002, 0x80000, CRC(83758b0e) SHA1(63adb2d09e7bd7dba47a55b3b579d543dfb553e3) ) // socket is silkscreened on pcb PRG3
29973056   ROM_LOAD32_BYTE("seibu__4.u0220", 0x000003, 0x80000, CRC(084fb5e4) SHA1(588bfe091662b88f02f528181a2f1d9c67c7b280) ) // socket is silkscreened on pcb PRG4
29983057
3058   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3059
29993060   ROM_REGION( 0x30000, "gfx1", 0 ) /* all are 27C512 */
30003061   ROM_LOAD24_BYTE("seibu__5.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) ) // socket is silkscreened on pcb FIX0
30013062   ROM_LOAD24_BYTE("seibu__6.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) ) // socket is silkscreened on pcb FIX1
r23471r23472
30283089   ROM_LOAD32_BYTE("rf2_3.bin", 0x000002, 0x80000, CRC(e66243b2) SHA1(54e67af37a4586fd1afc79085ed433d599e1bb87) )
30293090   ROM_LOAD32_BYTE("rf2_4.bin", 0x000003, 0x80000, CRC(92b7b73e) SHA1(128649b2a6a0616113bd0f9846fb6cf814ae326d) )
30303091
3092   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3093
30313094   ROM_REGION( 0x30000, "gfx1", 0 )
30323095   ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) )
30333096   ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) )
r23471r23472
30603123   ROM_LOAD32_BYTE("prg2", 0x000002, 0x80000, CRC(3eca68dd) SHA1(98378654adf055d72ae685f90e36643c9d6419d7) )
30613124   ROM_LOAD32_BYTE("prg3", 0x000003, 0x80000, CRC(4124daa4) SHA1(42f225c0328df59ffeacc215d37010f825bf507e) )
30623125
3126   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3127
30633128   ROM_REGION( 0x30000, "gfx1", 0 )
30643129   ROM_LOAD24_BYTE("rf2_5.bin", 0x000001, 0x10000, CRC(377cac2f) SHA1(f7c9323d79b77f6c8c02ba2c6cdca127d6e5cb5c) )
30653130   ROM_LOAD24_BYTE("rf2_6.bin", 0x000000, 0x10000, CRC(42bd5372) SHA1(c38df85b25070db9640eac541f71c0511bab0c98) )
r23471r23472
30923157   ROM_LOAD32_BYTE("prg2.u0265", 0x000002, 0x80000, CRC(cae87e1f) SHA1(e460aad693eb2702ae11f758b11d37f852d00790) )
30933158   ROM_LOAD32_BYTE("prg3.u0264", 0x000003, 0x80000, CRC(83f4fb5f) SHA1(73f58daa1aae0c4978db409cedd736fb49b15f1c) )
30943159
3160   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256K ROM for the Z80 */
3161   ROM_LOAD("zprg.u091", 0x000000, 0x20000, CRC(cc543c4f) SHA1(6e5c93fd3d21c594571b071d4a830211e1f162b2) )
3162
30953163   ROM_REGION( 0x30000, "gfx1", 0 )
30963164   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(6fdf4cf6) SHA1(7e9d4a49e829dfdc373c0f5acfbe8c7a91ac115b) )
30973165   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(69b7899b) SHA1(d3cacd4ef4d2c95d803403101beb9d4be75fae61) )
r23471r23472
31133181
31143182   ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 )
31153183
3116   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256k for the Z80 */
3117   ROM_LOAD("zprg.u091", 0x000000, 0x20000, CRC(cc543c4f) SHA1(6e5c93fd3d21c594571b071d4a830211e1f162b2) )
3118
31193184   ROM_REGION( 0x280000, "ymf", ROMREGION_ERASE00 )  /* sound roms */
31203185   ROM_LOAD("pcm.u0103",    0x000000, 0x200000, CRC(2edc30b5) SHA1(c25d690d633657fc3687636b9070f36bd305ae06) )
31213186   ROM_LOAD("sound1.u0107", 0x200000, 0x080000, CRC(20384b0e) SHA1(9c5d725418543df740f9145974ed6ffbbabee1d0) ) /* Different sound1 then SPI carts */
r23471r23472
31293194   ROM_LOAD32_BYTE("prg2.u0221", 0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) )
31303195   ROM_LOAD32_BYTE("prg3.u0220", 0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) )
31313196
3197   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3198
31323199   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
31333200   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
31343201   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
r23471r23472
31583225   ROM_LOAD32_BYTE("prg2.bin", 0x000002, 0x80000, CRC(2f402d55) SHA1(d0d852239abb6f4d73e263de5544fc0893e7a7ab) )
31593226   ROM_LOAD32_BYTE("prg3.bin", 0x000003, 0x80000, CRC(d619e2ad) SHA1(9dbff1babf62c3c5478a84d2a82a428de5949154) )
31603227
3228   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3229
31613230   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
31623231   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
31633232   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
r23471r23472
31873256   ROM_LOAD32_BYTE("prg2.u0221",  0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) )
31883257   ROM_LOAD32_BYTE("prg3.u0220",  0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) )
31893258
3259   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3260
31903261   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
31913262   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
31923263   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
r23471r23472
32163287   ROM_LOAD32_BYTE("prg2(__rfjeta).u0221",  0x000002, 0x80000, CRC(82f7a57e) SHA1(5300015e25d5f2f82eda3ed54bc105d645518498) )
32173288   ROM_LOAD32_BYTE("prg3(__rfjeta).u0220",  0x000003, 0x80000, CRC(cbdf100d) SHA1(c9efd11103429f7f36c1652cadb5384d925cb767) )
32183289
3290   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3291
32193292   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
32203293   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
32213294   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
r23471r23472
32453318   ROM_LOAD32_BYTE( "prg2(__rfjett).u0221",   0x000002, 0x080000, CRC(21c9942e) SHA1(ededa05a4b5dae2dec5c4409f22e9a66d2c8e98e) )
32463319   ROM_LOAD32_BYTE( "prg3(__rfjett).u0220",   0x000003, 0x080000, CRC(ea3657f4) SHA1(2291e31243af7d2e79ae727d9b5484e8d49cc7d9) )
32473320
3321   ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */
3322
32483323   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
32493324   ROM_LOAD24_BYTE("fix0.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) )
32503325   ROM_LOAD24_BYTE("fix1.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) )
r23471r23472
32823357   ROM_LOAD32_BYTE("rfj-08.u0265", 0x000002, 0x80000, CRC(ab6d724b) SHA1(ef7e42b1bf649a354fe22b0edd00475ced4151be) ) /* PRG2 */
32833358   ROM_LOAD32_BYTE("rfj-09.u0264", 0x000003, 0x80000, CRC(b119a67c) SHA1(4fa7dd0e86a3f7c6efa6ae9cf72991b652c877b9) ) /* PRG3 */
32843359
3360   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256K ROM for the Z80 */
3361   ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */
3362
32853363   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
32863364   ROM_LOAD24_BYTE("rfj-01.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) /* FIX0 */
32873365   ROM_LOAD24_BYTE("rfj-02.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) /* FIX1 */
r23471r23472
33003378
33013379   ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 )
33023380
3303   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256k for the Z80 */
3304   ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */
3305
33063381   ROM_REGION( 0x280000, "ymf", ROMREGION_ERASE00 )  /* sound roms */
33073382   ROM_LOAD("pcm-d.u0103",  0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) )
33083383   ROM_LOAD("rfj-04.u0107", 0x200000, 0x080000, CRC(c050da03) SHA1(1002dac51a3a4932c4f0074c1f3d97a597d98755) ) /* SOUND1 */
r23471r23472
33153390   ROM_LOAD32_BYTE("rfj-08(__rfjetsa).u0265", 0x000002, 0x80000, CRC(1f5dd06c) SHA1(6f5a8c9035971a470212cd0a89b94181011602c3) ) /* PRG2 */
33163391   ROM_LOAD32_BYTE("rfj-09(__rfjetsa).u0264", 0x000003, 0x80000, CRC(cc71c402) SHA1(b040e600744e7b3f52de0fa852ce3ae08ae49985) ) /* PRG3 */
33173392
3393   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256K ROM for the Z80 */
3394   ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */
3395
33183396   ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF )
33193397   ROM_LOAD24_BYTE("rfj-01.u0524", 0x000001, 0x10000, CRC(8bc080be) SHA1(ad296fb98242c963072346a8de289e704b445ad4) ) /* FIX0 */
33203398   ROM_LOAD24_BYTE("rfj-02.u0518", 0x000000, 0x10000, CRC(bded85e7) SHA1(ccb8c438ce6b9a742e3ab15be970b1e636783626) ) /* FIX1 */
r23471r23472
33333411
33343412   ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 )
33353413
3336   ROM_REGION( 0x40000, "audiocpu", 0 )      /* 256k for the Z80 */
3337   ROM_LOAD("rfj-05.u091", 0x000000, 0x40000, CRC(a55e8799) SHA1(5d4ca9ae920ab54e23ee3b1b33db72711e744516) ) /* ZPRG */
3338
33393414   ROM_REGION( 0x280000, "ymf", ROMREGION_ERASE00 )  /* sound roms */
33403415   ROM_LOAD("pcm-d.u0103",  0x000000, 0x200000, CRC(8ee3ff45) SHA1(2801b23495866c91c8f8bebd37d5fcae7a625838) )
33413416   ROM_LOAD("rfj-04.u0107", 0x200000, 0x080000, CRC(c050da03) SHA1(1002dac51a3a4932c4f0074c1f3d97a597d98755) ) /* SOUND1 */
r23471r23472
35013576GAME( 1996, rdfts,      rdft,     sxx2e,    spi_3button,      seibuspi_state, rdft,     ROT270, "Seibu Kaihatsu (Explorer System Corp. license)", "Raiden Fighters (Single Board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
35023577
35033578/* SXX2F */
3504GAME( 1997, rdft2us,    rdft2,    sxx2f,    spi_2button,      seibuspi_state, rdft2us,  ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2.1 (US, Single Board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // title screen shows '2.1'
3579GAME( 1997, rdft2us,    rdft2,    sxx2f,    spi_2button,      seibuspi_state, rdft2,    ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2.1 (US, Single Board)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) // title screen shows '2.1'
35053580
35063581/* SXX2G */
35073582GAME( 1999, rfjets,     rfjet,    sxx2g,    spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Single Board, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND  ) // has 1998-99 copyright + planes unlocked
35083583GAME( 1999, rfjetsa,    rfjet,    sxx2g,    spi_2button,      seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Single Board, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND  ) // has 1998-99 copyright + planes unlocked
35093584
35103585/* SYS386 */
3511GAME( 2000, rdft22kc,   rdft2,    seibu386, seibu386_2button, seibuspi_state, rdft22kc, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - 2000 (China)", GAME_IMPERFECT_GRAPHICS )
3512GAME( 2000, rfjet2kc,   rfjet,    seibu386, seibu386_2button, seibuspi_state, rfjet2k,  ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet - 2000 (China)", GAME_IMPERFECT_GRAPHICS )
3586GAME( 2000, rdft22kc,   rdft2,    seibu386, seibu386_2button, seibuspi_state, rdft2,    ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - 2000 (China)", GAME_IMPERFECT_GRAPHICS )
3587GAME( 2000, rfjet2kc,   rfjet,    seibu386, seibu386_2button, seibuspi_state, rfjet,    ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet - 2000 (China)", GAME_IMPERFECT_GRAPHICS )
35133588
35143589/* SYS386F V2.0 */
35153590GAME( 1999, ejsakura,   0,        sys386f2, spi_ejsakura,     seibuspi_state, sys386f2, ROT0,   "Seibu Kaihatsu", "E-Jan Sakurasou (v2.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
trunk/src/emu/addrmap.h
r23471r23472
559559#define AM_UNMAP \
560560   curentry->set_read_type(AMH_UNMAP); \
561561   curentry->set_write_type(AMH_UNMAP);
562#define AM_READUNMAP \
563   curentry->set_read_type(AMH_UNMAP);
564#define AM_WRITEUNMAP \
565   curentry->set_write_type(AMH_UNMAP);
562566#define AM_NOP \
563567   curentry->set_read_type(AMH_NOP); \
564568   curentry->set_write_type(AMH_NOP);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team