diff options
Diffstat (limited to 'src/mame/drivers/cps3.c')
-rw-r--r-- | src/mame/drivers/cps3.c | 268 |
1 files changed, 124 insertions, 144 deletions
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c index 767c373471e..4d069418296 100644 --- a/src/mame/drivers/cps3.c +++ b/src/mame/drivers/cps3.c @@ -1248,35 +1248,32 @@ static SCREEN_UPDATE_RGB32(cps3) return 0; } -static READ32_HANDLER( cps3_ssram_r ) +READ32_MEMBER(cps3_state::cps3_ssram_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if (offset>0x8000/4) - return LITTLE_ENDIANIZE_INT32(state->m_ss_ram[offset]); + return LITTLE_ENDIANIZE_INT32(m_ss_ram[offset]); else - return state->m_ss_ram[offset]; + return m_ss_ram[offset]; } -static WRITE32_HANDLER( cps3_ssram_w ) +WRITE32_MEMBER(cps3_state::cps3_ssram_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if (offset>0x8000/4) { // we only want to endian-flip the character data, the tilemap info is fine data = LITTLE_ENDIANIZE_INT32(data); mem_mask = LITTLE_ENDIANIZE_INT32(mem_mask); - gfx_element_mark_dirty(space->machine().gfx[0], offset/16); + gfx_element_mark_dirty(machine().gfx[0], offset/16); } - COMBINE_DATA(&state->m_ss_ram[offset]); + COMBINE_DATA(&m_ss_ram[offset]); } -static WRITE32_HANDLER( cps3_0xc0000000_ram_w ) +WRITE32_MEMBER(cps3_state::cps3_0xc0000000_ram_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - COMBINE_DATA( &state->m_0xc0000000_ram[offset] ); + COMBINE_DATA( &m_0xc0000000_ram[offset] ); // store a decrypted copy - state->m_0xc0000000_ram_decrypted[offset] = state->m_0xc0000000_ram[offset]^cps3_mask(offset*4+0xc0000000, state->m_key1, state->m_key2); + m_0xc0000000_ram_decrypted[offset] = m_0xc0000000_ram[offset]^cps3_mask(offset*4+0xc0000000, m_key1, m_key2); } @@ -1317,15 +1314,14 @@ DIRECT_UPDATE_HANDLER( cps3_direct_handler ) } -static WRITE32_HANDLER( cram_bank_w ) +WRITE32_MEMBER(cps3_state::cram_bank_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if (ACCESSING_BITS_0_7) { // this seems to be related to accesses to the 0x04100000 region - if (state->m_cram_bank != data) + if (m_cram_bank != data) { - state->m_cram_bank = data; + m_cram_bank = data; //if(data&0xfffffff0) //bank_w 00000000, ffff0000 //bank_w 00000001, ffff0000 @@ -1347,34 +1343,31 @@ static WRITE32_HANDLER( cram_bank_w ) } } -static READ32_HANDLER( cram_data_r ) +READ32_MEMBER(cps3_state::cram_data_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - UINT32 fulloffset = (((state->m_cram_bank&0x7)*0x100000)/4) + offset; + UINT32 fulloffset = (((m_cram_bank&0x7)*0x100000)/4) + offset; - return LITTLE_ENDIANIZE_INT32(state->m_char_ram[fulloffset]); + return LITTLE_ENDIANIZE_INT32(m_char_ram[fulloffset]); } -static WRITE32_HANDLER( cram_data_w ) +WRITE32_MEMBER(cps3_state::cram_data_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - UINT32 fulloffset = (((state->m_cram_bank&0x7)*0x100000)/4) + offset; + UINT32 fulloffset = (((m_cram_bank&0x7)*0x100000)/4) + offset; mem_mask = LITTLE_ENDIANIZE_INT32(mem_mask); data = LITTLE_ENDIANIZE_INT32(data); - COMBINE_DATA(&state->m_char_ram[fulloffset]); - gfx_element_mark_dirty(space->machine().gfx[1], fulloffset/0x40); + COMBINE_DATA(&m_char_ram[fulloffset]); + gfx_element_mark_dirty(machine().gfx[1], fulloffset/0x40); } /* FLASH ROM ACCESS */ -static READ32_HANDLER( cps3_gfxflash_r ) +READ32_MEMBER(cps3_state::cps3_gfxflash_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); UINT32 result = 0; - if (state->m_cram_gfxflash_bank&1) offset += 0x200000/4; + if (m_cram_gfxflash_bank&1) offset += 0x200000/4; - fujitsu_29f016a_device *chip0 = state->m_simm[2 + state->m_cram_gfxflash_bank/8][(state->m_cram_gfxflash_bank % 8) & ~1]; - fujitsu_29f016a_device *chip1 = state->m_simm[2 + state->m_cram_gfxflash_bank/8][(state->m_cram_gfxflash_bank % 8) | 1]; + fujitsu_29f016a_device *chip0 = m_simm[2 + m_cram_gfxflash_bank/8][(m_cram_gfxflash_bank % 8) & ~1]; + fujitsu_29f016a_device *chip1 = m_simm[2 + m_cram_gfxflash_bank/8][(m_cram_gfxflash_bank % 8) | 1]; if (chip0 == NULL || chip1 == NULL) return 0xffffffff; @@ -1401,19 +1394,18 @@ static READ32_HANDLER( cps3_gfxflash_r ) result |= chip1->read( (offset<<1)+0x1 ) << 0; } - //printf("read GFX flash chips addr %02x returning %08x mem_mask %08x crambank %08x gfxbank %08x\n", offset*2, result,mem_mask, state->m_cram_bank, state->m_cram_gfxflash_bank ); + //printf("read GFX flash chips addr %02x returning %08x mem_mask %08x crambank %08x gfxbank %08x\n", offset*2, result,mem_mask, m_cram_bank, m_cram_gfxflash_bank ); return result; } -static WRITE32_HANDLER( cps3_gfxflash_w ) +WRITE32_MEMBER(cps3_state::cps3_gfxflash_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); int command; - if (state->m_cram_gfxflash_bank&1) offset += 0x200000/4; + if (m_cram_gfxflash_bank&1) offset += 0x200000/4; - fujitsu_29f016a_device *chip0 = state->m_simm[2 + state->m_cram_gfxflash_bank/8][(state->m_cram_gfxflash_bank % 8) & ~1]; - fujitsu_29f016a_device *chip1 = state->m_simm[2 + state->m_cram_gfxflash_bank/8][(state->m_cram_gfxflash_bank % 8) | 1]; + fujitsu_29f016a_device *chip0 = m_simm[2 + m_cram_gfxflash_bank/8][(m_cram_gfxflash_bank % 8) & ~1]; + fujitsu_29f016a_device *chip1 = m_simm[2 + m_cram_gfxflash_bank/8][(m_cram_gfxflash_bank % 8) | 1]; if (chip0 == NULL || chip1 == NULL) return; @@ -1447,11 +1439,11 @@ static WRITE32_HANDLER( cps3_gfxflash_w ) /* make a copy in the linear memory region we actually use for drawing etc. having it stored in interleaved flash roms isnt' very useful */ { - UINT32* romdata = (UINT32*)state->m_user5region; + UINT32* romdata = (UINT32*)m_user5region; int real_offset = 0; UINT32 newdata; - real_offset = ((state->m_cram_gfxflash_bank&0x3e) * 0x200000) + offset*4; + real_offset = ((m_cram_gfxflash_bank&0x3e) * 0x200000) + offset*4; newdata =((chip0->read_raw(((offset*2)&0xfffffffe)+0)<<8) | (chip0->read_raw(((offset*2)&0xfffffffe)+1)<<24) | @@ -1501,25 +1493,23 @@ static UINT32 cps3_flashmain_r(address_space *space, int which, UINT32 offset, U -static READ32_HANDLER( cps3_flash1_r ) +READ32_MEMBER(cps3_state::cps3_flash1_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - UINT32 retvalue = cps3_flashmain_r(space, 0, offset,mem_mask); + UINT32 retvalue = cps3_flashmain_r(&space, 0, offset,mem_mask); - if (state->m_altEncryption) return retvalue; + if (m_altEncryption) return retvalue; - retvalue = retvalue ^ cps3_mask(0x6000000+offset*4, state->m_key1, state->m_key2); + retvalue = retvalue ^ cps3_mask(0x6000000+offset*4, m_key1, m_key2); return retvalue; } -static READ32_HANDLER( cps3_flash2_r ) +READ32_MEMBER(cps3_state::cps3_flash2_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - UINT32 retvalue = cps3_flashmain_r(space, 1, offset,mem_mask); + UINT32 retvalue = cps3_flashmain_r(&space, 1, offset,mem_mask); - if (state->m_altEncryption) return retvalue; + if (m_altEncryption) return retvalue; - retvalue = retvalue ^ cps3_mask(0x6800000+offset*4, state->m_key1, state->m_key2); + retvalue = retvalue ^ cps3_mask(0x6800000+offset*4, m_key1, m_key2); return retvalue; } @@ -1584,19 +1574,18 @@ static void cps3_flashmain_w(running_machine &machine, int which, UINT32 offset, } } -static WRITE32_HANDLER( cps3_flash1_w ) +WRITE32_MEMBER(cps3_state::cps3_flash1_w) { - cps3_flashmain_w(space->machine(),0,offset,data,mem_mask); + cps3_flashmain_w(machine(),0,offset,data,mem_mask); } -static WRITE32_HANDLER( cps3_flash2_w ) +WRITE32_MEMBER(cps3_state::cps3_flash2_w) { - cps3_flashmain_w(space->machine(),1,offset,data,mem_mask); + cps3_flashmain_w(machine(),1,offset,data,mem_mask); } -static WRITE32_HANDLER( cram_gfxflash_bank_w ) +WRITE32_MEMBER(cps3_state::cram_gfxflash_bank_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if (ACCESSING_BITS_24_31) { //printf("cram_gfxflash_bank_w MSB32 %08x\n",data); @@ -1640,8 +1629,8 @@ static WRITE32_HANDLER( cram_gfxflash_bank_w ) SIMM 7 (Rom 70/71) ** NOT USED (would follow on in sequence tho) */ - state->m_cram_gfxflash_bank = (data & 0xffff0000) >> 16; - state->m_cram_gfxflash_bank-= 0x0002;// as with sound access etc. first 4 meg is 'special' and skipped + m_cram_gfxflash_bank = (data & 0xffff0000) >> 16; + m_cram_gfxflash_bank-= 0x0002;// as with sound access etc. first 4 meg is 'special' and skipped } if (ACCESSING_BITS_0_7) @@ -1652,23 +1641,23 @@ static WRITE32_HANDLER( cram_gfxflash_bank_w ) } // this seems to be dma active flags, and maybe vblank... not if it is anything else -static READ32_HANDLER( cps3_vbl_r ) +READ32_MEMBER(cps3_state::cps3_vbl_r) { return 0x00000000; } -static READ32_HANDLER( cps3_unk_io_r ) +READ32_MEMBER(cps3_state::cps3_unk_io_r) { // warzard will crash before booting if you return anything here return 0xffffffff; } -static READ32_HANDLER( cps3_40C0000_r ) +READ32_MEMBER(cps3_state::cps3_40C0000_r) { return 0x00000000; } -static READ32_HANDLER( cps3_40C0004_r ) +READ32_MEMBER(cps3_state::cps3_40C0004_r) { return 0x00000000; } @@ -1676,15 +1665,14 @@ static READ32_HANDLER( cps3_40C0004_r ) /* EEPROM access is a little odd, I think it accesses eeprom through some kind of additional interface, as these writes aren't normal for the type of eeprom we have */ -static READ32_HANDLER( cps3_eeprom_r ) +READ32_MEMBER(cps3_state::cps3_eeprom_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); int addr = offset*4; if (addr>=0x100 && addr<=0x17f) { - if (ACCESSING_BITS_24_31) state->m_current_eeprom_read = (state->m_eeprom[offset-0x100/4] & 0xffff0000)>>16; - else state->m_current_eeprom_read = (state->m_eeprom[offset-0x100/4] & 0x0000ffff)>>0; + if (ACCESSING_BITS_24_31) m_current_eeprom_read = (m_eeprom[offset-0x100/4] & 0xffff0000)>>16; + else m_current_eeprom_read = (m_eeprom[offset-0x100/4] & 0x0000ffff)>>0; // read word to latch... return 0x00000000; } @@ -1694,8 +1682,8 @@ static READ32_HANDLER( cps3_eeprom_r ) if (ACCESSING_BITS_24_31) return 0; else { - //if(DEBUG_PRINTF) printf("reading %04x from eeprom\n", state->m_current_eeprom_read); - return state->m_current_eeprom_read; + //if(DEBUG_PRINTF) printf("reading %04x from eeprom\n", m_current_eeprom_read); + return m_current_eeprom_read; } } else @@ -1706,15 +1694,14 @@ static READ32_HANDLER( cps3_eeprom_r ) return 0x00000000; } -static WRITE32_HANDLER( cps3_eeprom_w ) +WRITE32_MEMBER(cps3_state::cps3_eeprom_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); int addr = offset*4; if (addr>=0x080 && addr<=0x0ff) { offset -= 0x80/4; - COMBINE_DATA(&state->m_eeprom[offset]); + COMBINE_DATA(&m_eeprom[offset]); // write word to storage } @@ -1729,54 +1716,52 @@ static WRITE32_HANDLER( cps3_eeprom_w ) } -static READ32_HANDLER( cps3_cdrom_r ) +READ32_MEMBER(cps3_state::cps3_cdrom_r) { UINT32 retval = 0; if (ACCESSING_BITS_24_31) { - retval |= ((UINT16)wd33c93_r(space,0))<<16; + retval |= ((UINT16)wd33c93_r(&space,0))<<16; } if (ACCESSING_BITS_0_7) { - retval |= (UINT16)wd33c93_r(space,1); + retval |= (UINT16)wd33c93_r(&space,1); } return retval; } -static WRITE32_HANDLER( cps3_cdrom_w ) +WRITE32_MEMBER(cps3_state::cps3_cdrom_w) { if (ACCESSING_BITS_24_31) { - wd33c93_w(space,0,(data & 0x00ff0000)>>16); + wd33c93_w(&space,0,(data & 0x00ff0000)>>16); } if (ACCESSING_BITS_0_7) { - wd33c93_w(space,1,(data & 0x000000ff)>>0); + wd33c93_w(&space,1,(data & 0x000000ff)>>0); } } -static WRITE32_HANDLER( cps3_ss_bank_base_w ) +WRITE32_MEMBER(cps3_state::cps3_ss_bank_base_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); // might be scroll registers or something else.. // used to display bank with 'insert coin' on during sfiii2 attract intro - COMBINE_DATA(&state->m_ss_bank_base); + COMBINE_DATA(&m_ss_bank_base); // printf("cps3_ss_bank_base_w %08x %08x\n", data, mem_mask); } -static WRITE32_HANDLER( cps3_ss_pal_base_w ) +WRITE32_MEMBER(cps3_state::cps3_ss_pal_base_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if(DEBUG_PRINTF) printf ("cps3_ss_pal_base_w %08x %08x\n", data, mem_mask); if(ACCESSING_BITS_24_31) { - state->m_ss_pal_base = (data & 0x00ff0000)>>16; + m_ss_pal_base = (data & 0x00ff0000)>>16; if (data & 0xff000000) printf("ss_pal_base MSB32 upper bits used %04x \n", data); } @@ -1790,49 +1775,48 @@ static WRITE32_HANDLER( cps3_ss_pal_base_w ) //<ElSemi> (a word each) -static WRITE32_HANDLER( cps3_palettedma_w ) +WRITE32_MEMBER(cps3_state::cps3_palettedma_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if (offset==0) { - COMBINE_DATA(&state->m_paldma_source); - state->m_paldma_realsource = (state->m_paldma_source<<1)-0x400000; + COMBINE_DATA(&m_paldma_source); + m_paldma_realsource = (m_paldma_source<<1)-0x400000; } else if (offset==1) { - COMBINE_DATA(&state->m_paldma_dest); + COMBINE_DATA(&m_paldma_dest); } else if (offset==2) { - COMBINE_DATA(&state->m_paldma_fade); + COMBINE_DATA(&m_paldma_fade); } else if (offset==3) { - COMBINE_DATA(&state->m_paldma_other2); + COMBINE_DATA(&m_paldma_other2); if (ACCESSING_BITS_24_31) { - state->m_paldma_length = (data & 0xffff0000)>>16; + m_paldma_length = (data & 0xffff0000)>>16; } if (ACCESSING_BITS_0_7) { if (data & 0x0002) { int i; - UINT16* src = (UINT16*)state->m_user5region; - // if(DEBUG_PRINTF) printf("CPS3 pal dma start %08x (real: %08x) dest %08x fade %08x other2 %08x (length %04x)\n", state->m_paldma_source, state->m_paldma_realsource, state->m_paldma_dest, state->m_paldma_fade, state->m_paldma_other2, state->m_paldma_length); + UINT16* src = (UINT16*)m_user5region; + // if(DEBUG_PRINTF) printf("CPS3 pal dma start %08x (real: %08x) dest %08x fade %08x other2 %08x (length %04x)\n", m_paldma_source, m_paldma_realsource, m_paldma_dest, m_paldma_fade, m_paldma_other2, m_paldma_length); - for (i=0;i<state->m_paldma_length;i++) + for (i=0;i<m_paldma_length;i++) { - UINT16 coldata = src[BYTE_XOR_BE(((state->m_paldma_realsource>>1)+i))]; + UINT16 coldata = src[BYTE_XOR_BE(((m_paldma_realsource>>1)+i))]; - //if (state->m_paldma_fade!=0) printf("%08x\n",state->m_paldma_fade); + //if (m_paldma_fade!=0) printf("%08x\n",m_paldma_fade); - cps3_set_mame_colours(space->machine(), (state->m_paldma_dest+i)^1, coldata, state->m_paldma_fade); + cps3_set_mame_colours(machine(), (m_paldma_dest+i)^1, coldata, m_paldma_fade); } - cputag_set_input_line(space->machine(), "maincpu", 10, ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", 10, ASSERT_LINE); } @@ -2073,17 +2057,16 @@ static void cps3_process_character_dma(running_machine &machine, UINT32 address) } } -static WRITE32_HANDLER( cps3_characterdma_w ) +WRITE32_MEMBER(cps3_state::cps3_characterdma_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); if(DEBUG_PRINTF) printf("chardma_w %08x %08x %08x\n", offset, data, mem_mask); if (offset==0) { - //COMBINE_DATA(&state->m_chardma_source); + //COMBINE_DATA(&m_chardma_source); if (ACCESSING_BITS_0_7) { - state->m_chardma_source = data & 0x0000ffff; + m_chardma_source = data & 0x0000ffff; } if (ACCESSING_BITS_24_31) { @@ -2092,70 +2075,67 @@ static WRITE32_HANDLER( cps3_characterdma_w ) } else if (offset==1) { - COMBINE_DATA(&state->m_chardma_other); + COMBINE_DATA(&m_chardma_other); if (ACCESSING_BITS_24_31) { if ((data>>16) & 0x0040) { UINT32 list_address; - list_address = (state->m_chardma_source | ((state->m_chardma_other&0x003f0000))); + list_address = (m_chardma_source | ((m_chardma_other&0x003f0000))); - //printf("chardma_w activated %08x %08x (address = cram %08x)\n", state->m_chardma_source, state->m_chardma_other, list_address*4 ); - cps3_process_character_dma(space->machine(), list_address); + //printf("chardma_w activated %08x %08x (address = cram %08x)\n", m_chardma_source, m_chardma_other, list_address*4 ); + cps3_process_character_dma(machine(), list_address); } else { - if(DEBUG_PRINTF) printf("chardma_w NOT activated %08x %08x\n", state->m_chardma_source, state->m_chardma_other ); + if(DEBUG_PRINTF) printf("chardma_w NOT activated %08x %08x\n", m_chardma_source, m_chardma_other ); } if ((data>>16) & 0xff80) - if(DEBUG_PRINTF) printf("chardma_w unknown bits in activate command %08x %08x\n", state->m_chardma_source, state->m_chardma_other ); + if(DEBUG_PRINTF) printf("chardma_w unknown bits in activate command %08x %08x\n", m_chardma_source, m_chardma_other ); } else { - if(DEBUG_PRINTF) printf("chardma_w LSB32 write to activate command %08x %08x\n", state->m_chardma_source, state->m_chardma_other ); + if(DEBUG_PRINTF) printf("chardma_w LSB32 write to activate command %08x %08x\n", m_chardma_source, m_chardma_other ); } } } -static WRITE32_HANDLER( cps3_irq10_ack_w ) +WRITE32_MEMBER(cps3_state::cps3_irq10_ack_w) { - cputag_set_input_line(space->machine(), "maincpu", 10, CLEAR_LINE); return; + cputag_set_input_line(machine(), "maincpu", 10, CLEAR_LINE); return; } -static WRITE32_HANDLER( cps3_irq12_ack_w ) +WRITE32_MEMBER(cps3_state::cps3_irq12_ack_w) { - cputag_set_input_line(space->machine(), "maincpu", 12, CLEAR_LINE); return; + cputag_set_input_line(machine(), "maincpu", 12, CLEAR_LINE); return; } -static WRITE32_HANDLER( cps3_unk_vidregs_w ) +WRITE32_MEMBER(cps3_state::cps3_unk_vidregs_w) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - COMBINE_DATA(&state->m_unk_vidregs[offset]); + COMBINE_DATA(&m_unk_vidregs[offset]); } -static READ32_HANDLER( cps3_colourram_r ) +READ32_MEMBER(cps3_state::cps3_colourram_r) { - cps3_state *state = space->machine().driver_data<cps3_state>(); - UINT16* src = (UINT16*)state->m_colourram; + UINT16* src = (UINT16*)m_colourram; return src[offset*2+1] | (src[offset*2+0]<<16); } -static WRITE32_HANDLER( cps3_colourram_w ) +WRITE32_MEMBER(cps3_state::cps3_colourram_w) { - //cps3_state *state = space->machine().driver_data<cps3_state>(); -// COMBINE_DATA(&state->m_colourram[offset]); +// COMBINE_DATA(&m_colourram[offset]); if (ACCESSING_BITS_24_31) { - cps3_set_mame_colours(space->machine(), offset*2, (data & 0xffff0000) >> 16, 0); + cps3_set_mame_colours(machine(), offset*2, (data & 0xffff0000) >> 16, 0); } if (ACCESSING_BITS_0_7) { - cps3_set_mame_colours(space->machine(), offset*2+1, (data & 0x0000ffff) >> 0, 0); + cps3_set_mame_colours(machine(), offset*2+1, (data & 0x0000ffff) >> 0, 0); } } @@ -2170,15 +2150,15 @@ static ADDRESS_MAP_START( cps3_map, AS_PROGRAM, 32, cps3_state ) // AM_RANGE(0x04000000, 0x0407dfff) AM_RAM AM_BASE(m_spriteram)//AM_WRITEONLY // Sprite RAM (jojoba tests this size) AM_RANGE(0x04000000, 0x0407ffff) AM_RAM AM_BASE(m_spriteram)//AM_WRITEONLY // Sprite RAM - AM_RANGE(0x04080000, 0x040bffff) AM_READWRITE_LEGACY(cps3_colourram_r, cps3_colourram_w) AM_BASE(m_colourram) // Colour RAM (jojoba tests this size) 0x20000 colours?! + AM_RANGE(0x04080000, 0x040bffff) AM_READWRITE(cps3_colourram_r, cps3_colourram_w) AM_BASE(m_colourram) // Colour RAM (jojoba tests this size) 0x20000 colours?! // video registers of some kind probably - AM_RANGE(0x040C0000, 0x040C0003) AM_READ_LEGACY(cps3_40C0000_r)//?? every frame - AM_RANGE(0x040C0004, 0x040C0007) AM_READ_LEGACY(cps3_40C0004_r)//AM_READ_LEGACY(cps3_40C0004_r) // warzard reads this! + AM_RANGE(0x040C0000, 0x040C0003) AM_READ(cps3_40C0000_r)//?? every frame + AM_RANGE(0x040C0004, 0x040C0007) AM_READ(cps3_40C0004_r)//AM_READ(cps3_40C0004_r) // warzard reads this! // AM_RANGE(0x040C0008, 0x040C000b) AM_WRITENOP//?? - AM_RANGE(0x040C000c, 0x040C000f) AM_READ_LEGACY(cps3_vbl_r)// AM_WRITENOP/ + AM_RANGE(0x040C000c, 0x040C000f) AM_READ(cps3_vbl_r)// AM_WRITENOP/ - AM_RANGE(0x040C0000, 0x040C001f) AM_WRITE_LEGACY(cps3_unk_vidregs_w) + AM_RANGE(0x040C0000, 0x040C001f) AM_WRITE(cps3_unk_vidregs_w) AM_RANGE(0x040C0020, 0x040C002b) AM_WRITEONLY AM_BASE(m_tilemap20_regs_base) AM_RANGE(0x040C0030, 0x040C003b) AM_WRITEONLY AM_BASE(m_tilemap30_regs_base) AM_RANGE(0x040C0040, 0x040C004b) AM_WRITEONLY AM_BASE(m_tilemap40_regs_base) @@ -2187,43 +2167,43 @@ static ADDRESS_MAP_START( cps3_map, AS_PROGRAM, 32, cps3_state ) AM_RANGE(0x040C0060, 0x040C007f) AM_RAM AM_BASE(m_fullscreenzoom) - AM_RANGE(0x040C0094, 0x040C009b) AM_WRITE_LEGACY(cps3_characterdma_w) + AM_RANGE(0x040C0094, 0x040C009b) AM_WRITE(cps3_characterdma_w) - AM_RANGE(0x040C00a0, 0x040C00af) AM_WRITE_LEGACY(cps3_palettedma_w) + AM_RANGE(0x040C00a0, 0x040C00af) AM_WRITE(cps3_palettedma_w) - AM_RANGE(0x040C0084, 0x040C0087) AM_WRITE_LEGACY(cram_bank_w) - AM_RANGE(0x040C0088, 0x040C008b) AM_WRITE_LEGACY(cram_gfxflash_bank_w) + AM_RANGE(0x040C0084, 0x040C0087) AM_WRITE(cram_bank_w) + AM_RANGE(0x040C0088, 0x040C008b) AM_WRITE(cram_gfxflash_bank_w) AM_RANGE(0x040e0000, 0x040e02ff) AM_DEVREADWRITE_LEGACY("cps3", cps3_sound_r, cps3_sound_w) - AM_RANGE(0x04100000, 0x041fffff) AM_READWRITE_LEGACY(cram_data_r, cram_data_w) - AM_RANGE(0x04200000, 0x043fffff) AM_READWRITE_LEGACY(cps3_gfxflash_r, cps3_gfxflash_w) // GFX Flash ROMS + AM_RANGE(0x04100000, 0x041fffff) AM_READWRITE(cram_data_r, cram_data_w) + AM_RANGE(0x04200000, 0x043fffff) AM_READWRITE(cps3_gfxflash_r, cps3_gfxflash_w) // GFX Flash ROMS AM_RANGE(0x05000000, 0x05000003) AM_READ_PORT("INPUTS") AM_RANGE(0x05000004, 0x05000007) AM_READ_PORT("EXTRA") AM_RANGE(0x05000008, 0x0500000b) AM_WRITENOP // ?? every frame - AM_RANGE(0x05000a00, 0x05000a1f) AM_READ_LEGACY(cps3_unk_io_r ) // ?? every frame + AM_RANGE(0x05000a00, 0x05000a1f) AM_READ(cps3_unk_io_r ) // ?? every frame - AM_RANGE(0x05001000, 0x05001203) AM_READWRITE_LEGACY(cps3_eeprom_r, cps3_eeprom_w ) + AM_RANGE(0x05001000, 0x05001203) AM_READWRITE(cps3_eeprom_r, cps3_eeprom_w ) - AM_RANGE(0x05040000, 0x0504ffff) AM_READWRITE_LEGACY(cps3_ssram_r,cps3_ssram_w) // 'SS' RAM (Score Screen) (text tilemap + toles) + AM_RANGE(0x05040000, 0x0504ffff) AM_READWRITE(cps3_ssram_r,cps3_ssram_w) // 'SS' RAM (Score Screen) (text tilemap + toles) //0x25050020 - AM_RANGE(0x05050020, 0x05050023) AM_WRITE_LEGACY(cps3_ss_bank_base_w ) - AM_RANGE(0x05050024, 0x05050027) AM_WRITE_LEGACY(cps3_ss_pal_base_w ) + AM_RANGE(0x05050020, 0x05050023) AM_WRITE(cps3_ss_bank_base_w ) + AM_RANGE(0x05050024, 0x05050027) AM_WRITE(cps3_ss_pal_base_w ) - AM_RANGE(0x05100000, 0x05100003) AM_WRITE_LEGACY(cps3_irq12_ack_w ) - AM_RANGE(0x05110000, 0x05110003) AM_WRITE_LEGACY(cps3_irq10_ack_w ) + AM_RANGE(0x05100000, 0x05100003) AM_WRITE(cps3_irq12_ack_w ) + AM_RANGE(0x05110000, 0x05110003) AM_WRITE(cps3_irq10_ack_w ) - AM_RANGE(0x05140000, 0x05140003) AM_READWRITE_LEGACY(cps3_cdrom_r, cps3_cdrom_w ) + AM_RANGE(0x05140000, 0x05140003) AM_READWRITE(cps3_cdrom_r, cps3_cdrom_w ) - AM_RANGE(0x06000000, 0x067fffff) AM_READWRITE_LEGACY(cps3_flash1_r, cps3_flash1_w ) /* Flash ROMs simm 1 */ - AM_RANGE(0x06800000, 0x06ffffff) AM_READWRITE_LEGACY(cps3_flash2_r, cps3_flash2_w ) /* Flash ROMs simm 2 */ + AM_RANGE(0x06000000, 0x067fffff) AM_READWRITE(cps3_flash1_r, cps3_flash1_w ) /* Flash ROMs simm 1 */ + AM_RANGE(0x06800000, 0x06ffffff) AM_READWRITE(cps3_flash2_r, cps3_flash2_w ) /* Flash ROMs simm 2 */ - AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM_WRITE_LEGACY(cps3_0xc0000000_ram_w ) AM_BASE(m_0xc0000000_ram) /* Executes code from here */ + AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM_WRITE(cps3_0xc0000000_ram_w ) AM_BASE(m_0xc0000000_ram) /* Executes code from here */ ADDRESS_MAP_END static INPUT_PORTS_START( cps3 ) |