trunk/src/mame/machine/3do.c
| r20841 | r20842 | |
| 197 | 197 | READ32_MEMBER(_3do_state::_3do_slow2_r){ |
| 198 | 198 | UINT32 data = 0; |
| 199 | 199 | |
| 200 | | logerror( "%08X: UNK_318 read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset ); |
| 200 | logerror( "%08X: UNK_318 read offset = %08X\n", m_maincpu->pc(), offset ); |
| 201 | 201 | |
| 202 | 202 | switch( offset ) { |
| 203 | 203 | case 0: /* Boot ROM checks here and expects to read 1, 0, 1, 0 in the lowest bit */ |
| r20841 | r20842 | |
| 211 | 211 | |
| 212 | 212 | WRITE32_MEMBER(_3do_state::_3do_slow2_w) |
| 213 | 213 | { |
| 214 | | logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset, data, mem_mask ); |
| 214 | logerror( "%08X: UNK_318 write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset, data, mem_mask ); |
| 215 | 215 | |
| 216 | 216 | switch( offset ) |
| 217 | 217 | { |
| 218 | 218 | case 0: /* Boot ROM writes 03180000 here and then starts reading some things */ |
| 219 | 219 | { |
| 220 | 220 | /* disable ROM overlay */ |
| 221 | | membank("bank1")->set_entry(0); |
| 221 | m_bank1->set_entry(0); |
| 222 | 222 | } |
| 223 | 223 | m_slow2.cg_input = m_slow2.cg_input << 1 | ( data & 0x00000001 ); |
| 224 | 224 | m_slow2.cg_w_count ++; |
| r20841 | r20842 | |
| 236 | 236 | UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9; |
| 237 | 237 | UINT32 *p = m_vram + addr; |
| 238 | 238 | |
| 239 | | logerror( "%08X: SVF read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 ); |
| 239 | logerror( "%08X: SVF read offset = %08X\n", m_maincpu->pc(), offset*4 ); |
| 240 | 240 | |
| 241 | 241 | switch( offset & ( 0xE000 / 4 ) ) |
| 242 | 242 | { |
| r20841 | r20842 | |
| 261 | 261 | UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9; |
| 262 | 262 | UINT32 *p = m_vram + addr; |
| 263 | 263 | |
| 264 | | logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 264 | logerror( "%08X: SVF write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 265 | 265 | |
| 266 | 266 | switch( offset & ( 0xe000 / 4 ) ) |
| 267 | 267 | { |
| r20841 | r20842 | |
| 297 | 297 | |
| 298 | 298 | |
| 299 | 299 | READ32_MEMBER(_3do_state::_3do_madam_r){ |
| 300 | | logerror( "%08X: MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 ); |
| 300 | logerror( "%08X: MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 ); |
| 301 | 301 | |
| 302 | 302 | switch( offset ) { |
| 303 | 303 | case 0x0000/4: /* 03300000 - Revision */ |
| r20841 | r20842 | |
| 448 | 448 | case 0x07f8/4: |
| 449 | 449 | return m_madam.mult_status; |
| 450 | 450 | default: |
| 451 | | logerror( "%08X: unhandled MADAM read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset*4 ); |
| 451 | logerror( "%08X: unhandled MADAM read offset = %08X\n", m_maincpu->pc(), offset*4 ); |
| 452 | 452 | break; |
| 453 | 453 | } |
| 454 | 454 | return 0; |
| r20841 | r20842 | |
| 459 | 459 | if(offset == 0) |
| 460 | 460 | { |
| 461 | 461 | if(data == 0x0a) |
| 462 | | logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 462 | logerror( "%08X: MADAM write offset = %08X, data = %08X (\\n), mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 463 | 463 | else |
| 464 | | logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, data, mem_mask ); |
| 464 | logerror( "%08X: MADAM write offset = %08X, data = %08X (%c), mask = %08X\n", m_maincpu->pc(), offset*4, data, data, mem_mask ); |
| 465 | 465 | } |
| 466 | 466 | else |
| 467 | | logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 467 | logerror( "%08X: MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 468 | 468 | |
| 469 | 469 | switch( offset ) { |
| 470 | 470 | case 0x0000/4: |
| r20841 | r20842 | |
| 641 | 641 | break; |
| 642 | 642 | |
| 643 | 643 | default: |
| 644 | | logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 644 | logerror( "%08X: unhandled MADAM write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 645 | 645 | break; |
| 646 | 646 | } |
| 647 | 647 | } |
| r20841 | r20842 | |
| 655 | 655 | { |
| 656 | 656 | if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 && |
| 657 | 657 | offset != 0x118/4 && offset != 0x11c/4) |
| 658 | | logerror( "%08X: CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 ); |
| 658 | logerror( "%08X: CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 ); |
| 659 | 659 | } |
| 660 | 660 | |
| 661 | 661 | /* TODO: for debug, to be removed once that we write the CPU core */ |
| r20841 | r20842 | |
| 770 | 770 | |
| 771 | 771 | default: |
| 772 | 772 | if (!space.debugger_access()) |
| 773 | | logerror( "%08X: unhandled CLIO read offset = %08X\n", machine().device("maincpu")->safe_pc(), offset * 4 ); |
| 773 | logerror( "%08X: unhandled CLIO read offset = %08X\n", m_maincpu->pc(), offset * 4 ); |
| 774 | 774 | break; |
| 775 | 775 | } |
| 776 | 776 | return 0; |
| r20841 | r20842 | |
| 780 | 780 | { |
| 781 | 781 | if(offset != 0x200/4 && offset != 0x40/4 && offset != 0x44/4 && offset != 0x48/4 && offset != 0x4c/4 && |
| 782 | 782 | offset != 0x118/4 && offset != 0x11c/4) |
| 783 | | logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 783 | logerror( "%08X: CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 784 | 784 | |
| 785 | 785 | /* TODO: for debug, to be removed once that we write the CPU core */ |
| 786 | 786 | if(offset >= 0x1800/4 && offset <= 0x1fff/4) |
| r20841 | r20842 | |
| 1016 | 1016 | break; |
| 1017 | 1017 | |
| 1018 | 1018 | default: |
| 1019 | | logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", machine().device("maincpu")->safe_pc(), offset*4, data, mem_mask ); |
| 1019 | logerror( "%08X: unhandled CLIO write offset = %08X, data = %08X, mask = %08X\n", m_maincpu->pc(), offset*4, data, mem_mask ); |
| 1020 | 1020 | break; |
| 1021 | 1021 | } |
| 1022 | 1022 | } |