Previous 199869 Revisions Next

r17404 Wednesday 22nd August, 2012 at 18:09:45 UTC by Angelo Salese
MT #03398, fixed SNES VRAM size
[src/mame/includes]snes.h
[src/mame/video]snes.c

trunk/src/mame/includes/snes.h
r17403r17404
503503   inline void snes_draw_tile( UINT8 planes, UINT8 layer, UINT32 tileaddr, INT16 x, UINT8 priority, UINT8 flip, UINT8 direct_colors, UINT16 pal, UINT8 hires );
504504   inline UINT32 snes_get_tmap_addr( UINT8 layer, UINT8 tile_size, UINT32 base, UINT32 x, UINT32 y );
505505   inline void snes_update_line( UINT16 curline, UINT8 layer, UINT8 priority_b, UINT8 priority_a, UINT8 color_depth, UINT8 hires, UINT8 offset_per_tile, UINT8 direct_colors );
506   UINT32 snes_get_vram_address( void );
506507   void snes_update_line_mode7( UINT16 curline, UINT8 layer, UINT8 priority_b, UINT8 priority_a );
507508   void snes_update_obsel( void );
508509   void snes_oam_list_build( void );
trunk/src/mame/video/snes.c
r17403r17404
18731873   {
18741874      UINT32 rem = addr & state->m_vram_fgr_mask;
18751875      UINT32 faddr = (addr & ~state->m_vram_fgr_mask) + (rem >> state->m_vram_fgr_shift) + ((rem & (state->m_vram_fgr_count - 1)) << 3);
1876      return faddr;
1876      return faddr << 1;
18771877   }
18781878
1879   return addr;
1879   return addr << 1;
18801880}
18811881
18821882READ8_MEMBER( snes_state::snes_vram_read )
18831883{
18841884   UINT8 res = 0;
1885   offset &= 0x1ffff;
1885   offset &= 0xffff; // only 64KB are present on SNES
18861886
18871887   if (snes_ppu.screen_disabled)
18881888      res = m_snes_vram[offset];
r17403r17404
19141914
19151915WRITE8_MEMBER( snes_state::snes_vram_write )
19161916{
1917   offset &= 0x1ffff;
1917   offset &= 0xffff; // only 64KB are present on SNES, Robocop 3 relies on this
19181918
19191919   if (snes_ppu.screen_disabled)
19201920      m_snes_vram[offset] = data;
r17403r17404
21492149         return snes_ppu.ppu1_open_bus;
21502150      case RVMDATAL:   /* Read data from VRAM (low) */
21512151         {
2152            UINT32 addr = snes_get_vram_address(space->machine()) << 1;
2152            UINT32 addr = snes_get_vram_address(space->machine());
21532153            snes_ppu.ppu1_open_bus = state->m_vram_read_buffer & 0xff;
21542154
21552155            if (!state->m_vram_fgr_high)
r17403r17404
21642164         }
21652165      case RVMDATAH:   /* Read data from VRAM (high) */
21662166         {
2167            UINT32 addr = snes_get_vram_address(space->machine()) << 1;
2167            UINT32 addr = snes_get_vram_address(space->machine());
21682168            snes_ppu.ppu1_open_bus = (state->m_vram_read_buffer >> 8) & 0xff;
21692169
21702170            if (state->m_vram_fgr_high)
r17403r17404
23992399         {
24002400            UINT32 addr;
24012401            state->m_vmadd = (state->m_vmadd & 0xff00) | (data << 0);
2402            addr = snes_get_vram_address(space->machine()) << 1;
2402            addr = snes_get_vram_address(space->machine());
24032403            state->m_vram_read_buffer = state->snes_vram_read(*space, addr);
24042404            state->m_vram_read_buffer |= (state->snes_vram_read(*space, addr + 1) << 8);
24052405         }
r17403r17404
24082408         {
24092409            UINT32 addr;
24102410            state->m_vmadd = (state->m_vmadd & 0x00ff) | (data << 8);
2411            addr = snes_get_vram_address(space->machine()) << 1;
2411            addr = snes_get_vram_address(space->machine());
24122412            state->m_vram_read_buffer = state->snes_vram_read(*space, addr);
24132413            state->m_vram_read_buffer |= (state->snes_vram_read(*space, addr + 1) << 8);
24142414         }
24152415         break;
24162416      case VMDATAL:   /* 2118: Data for VRAM write (low) */
24172417         {
2418            UINT32 addr = snes_get_vram_address(space->machine()) << 1;
2418            UINT32 addr = snes_get_vram_address(space->machine());
24192419            state->snes_vram_write(*space, addr, data);
24202420
24212421            if (!state->m_vram_fgr_high)
r17403r17404
24242424         return;
24252425      case VMDATAH:   /* 2119: Data for VRAM write (high) */
24262426         {
2427            UINT32 addr = snes_get_vram_address(space->machine()) << 1;
2427            UINT32 addr = snes_get_vram_address(space->machine());
24282428            state->snes_vram_write(*space, addr + 1, data);
24292429
24302430            if (state->m_vram_fgr_high)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team