Previous 15994 Revisions Next

r9307 Sunday 3rd October, 2010 at 07:27:09 UTC by Angelo Salese
[32x]: Note updates, reverted WWF Raw kludge
[src/mame/drivers]megadriv.c

src/mame/drivers/megadriv.c
r9306r9307
3636
3737    Fix 32X support (not used by any arcade systems?)
3838     - this seems to require far greater sync and timing accuracy on rom / ram access than MAME can provide
39     - World Series Baseball 95 (and others) are odd, they write data to the normal DRAM framebuffer
40       expecting it to act like the 'overwrite area' (where 00 bytes ignored)  this can't be right..
39     - split NTSC / PAL drivers
40     - 36greatju: missing backup ram, has issues with golfer select due of that
41     - afterbju: black screen, has a bug with Master SH-2 code snippet at 060037f8 (R0 should be 0x3ff but it's instead 0x3fff****)
42     - bcracers: write to undefined PWM register?
43     - cosmiccp: black screen, Master SH-2 stalls on a RTS? (unchecked)
44     - eccodemo: black screen after the Sega logo, faulty comms check
45     - fifa96 / nbajamte: dies on the gameplay, waiting for a comm change that never occurs;
46     - nbajamte: missing I2C hookup, startup fails due of that (same I2C type as plain MD version);
47     - nflquart: black screen, missing h irq?
48     - sangoku4: black screen after the Sega logo
49     - sharrierju: black screen;
50     - soulstar: hangs almost soon, it just plays the BGM and shows a galaxy background;
51     - tempo: intro is too fast, mostly noticeable with the PWM sound that cuts off too early when it gets to the title screen;
52     - tmek: gameplay is clearly too fast
53     - vfju: dies when a match starts or when attempts to enter into attract mode, master SH-2 jumps to a misaligned vector;
54     - vham: Master SH-2 crashes when entering into gameplay
55     - vrdxu: no 3d gfxs
56     - wwfraw: writes fb data to the cart area and expects it to be read back, kludging the cart area to be writeable makes the 32x gfxs to appear
57     - wwfwre: no 32x gfxs
58     - xmen: black screen after that you choose the level
4159
42
43
4460    Add PicoDrive support (not arcade)
4561
4662    Change SegaC2 to use the VDP emulation here
r9306r9307
24282444
24292445static READ16_HANDLER( _32x_68k_dram_overwrite_r )
24302446{
2431   return _32x_access_dram[offset+0x10000];
2447   return _32x_access_dram[offset];
24322448}
24332449
24342450static WRITE16_HANDLER( _32x_68k_dram_overwrite_w )
24352451{
2436   COMBINE_DATA(&_32x_access_dram[offset+0x10000]);
2452   //COMBINE_DATA(&_32x_access_dram[offset+0x10000]);
24372453
24382454   if (ACCESSING_BITS_8_15)
24392455   {
r9306r9307
25702586            printf("Fifo block a isn't filled!\n");
25712587
25722588         if (current_fifo_readblock == fifo_block_b && !fifo_block_b_full)
2573            printf("Fifo block b isn't filled!\n");
2589            printf("%08x Fifo block b isn't filled!\n",cpu_get_pc(space->cpu));
25742590
25752591
25762592         if (current_fifo_read_pos==4)
r9306r9307
26172633      case 0x02/2: // a1510a / 400a
26182634         dreq_src_addr[offset&1] = ((offset&1) == 0) ? (data & 0xff) : (data & 0xfffe);
26192635
2620         if((dreq_src_addr[0]<<16)|dreq_src_addr[1])
2621            printf("DREQ set SRC = %08x\n",(dreq_src_addr[0]<<16)|dreq_src_addr[1]);
2636         //if((dreq_src_addr[0]<<16)|dreq_src_addr[1])
2637         //   printf("DREQ set SRC = %08x\n",(dreq_src_addr[0]<<16)|dreq_src_addr[1]);
26222638
26232639         break;
26242640
r9306r9307
26262642      case 0x06/2: // a1510e / 400e
26272643         dreq_dst_addr[offset&1] = ((offset&1) == 0) ? (data & 0xff) : (data & 0xffff);
26282644
2629         if((dreq_dst_addr[0]<<16)|dreq_dst_addr[1])
2630            printf("DREQ set DST = %08x\n",(dreq_dst_addr[0]<<16)|dreq_dst_addr[1]);
2645         //if((dreq_dst_addr[0]<<16)|dreq_dst_addr[1])
2646         //   printf("DREQ set DST = %08x\n",(dreq_dst_addr[0]<<16)|dreq_dst_addr[1]);
26312647
26322648         break;
26332649
r9306r9307
32123228         break;
32133229
32143230      case 0x0a/2:
3215         // bit 0 is the framebuffer select;
3231         // bit 0 is the framebuffer select, change is delayed until vblank;
32163232         _32x_a1518a_reg = (_32x_a1518a_reg & 0xfffe) | (data & 1);
32173233
32183234         if (_32x_a1518a_reg & 1)
r9306r9307
36433659   AM_RANGE(0x04020000, 0x0403ffff) AM_READWRITE(_32x_sh2_framebuffer_overwrite_dram_r, _32x_sh2_framebuffer_overwrite_dram_w)
36443660
36453661   AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE("share10")
3646   AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_REGION("gamecart_sh2", 0) // program is writeable (wwfraw)
3662   AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION("gamecart_sh2", 0) // program is writeable (wwfraw)
36473663
3648   AM_RANGE(0x22000000, 0x223fffff) AM_RAM AM_REGION("gamecart_sh2", 0) // cart mirror (fifa96)
3664   AM_RANGE(0x22000000, 0x223fffff) AM_ROM AM_REGION("gamecart_sh2", 0) // cart mirror (fifa96)
36493665
36503666   AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM
36513667ADDRESS_MAP_END
r9306r9307
36723688   AM_RANGE(0x04020000, 0x0403ffff) AM_READWRITE(_32x_sh2_framebuffer_overwrite_dram_r, _32x_sh2_framebuffer_overwrite_dram_w)
36733689
36743690   AM_RANGE(0x06000000, 0x0603ffff) AM_RAM AM_SHARE("share10")
3675   AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_REGION("gamecart_sh2", 0) // program is writeable (wwfraw)
3691   AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_REGION("gamecart_sh2", 0) // program is writeable (wwfraw)
36763692
3677   AM_RANGE(0x22000000, 0x223fffff) AM_RAM AM_REGION("gamecart_sh2", 0) // cart mirror (fifa96)
3693   AM_RANGE(0x22000000, 0x223fffff) AM_ROM AM_REGION("gamecart_sh2", 0) // cart mirror (fifa96)
36783694
36793695   AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM
36803696ADDRESS_MAP_END
r9306r9307
63016317
63026318      }
63036319
6304      if (megadrive_vblank_flag>=224)
6305         megadrive_vblank_flag = 1;
6320      #if 0
6321      if(_32x_is_connected)
6322      {
6323         if (genesis_scanline_counter >= megadrive_irq6_scanline)
6324         {
6325            _32x_a1518a_reg = (_32x_a1518a_reg & 0xfffe) | (_32x_fb_swap & 1);
63066326
6307      if (megadrive_vblank_flag>=236)
6308         megadrive_vblank_flag = 0;
6327            if (_32x_fb_swap & 1)
6328            {
6329               _32x_access_dram = _32x_dram0;
6330               _32x_display_dram = _32x_dram1;
6331            }
6332            else
6333            {
6334               _32x_display_dram = _32x_dram0;
6335               _32x_access_dram = _32x_dram1;
6336            }
6337         }
6338      }
6339      #endif
63096340
63106341   //  if (genesis_scanline_counter==0) irq4counter = MEGADRIVE_REG0A_HINT_VALUE;
63116342      // irq4counter = MEGADRIVE_REG0A_HINT_VALUE;

Previous 15994 Revisions Next


© 1998-2018 The MESS Team