trunk/src/mame/machine/seicop.c
| r31892 | r31893 | |
| 2479 | 2479 | Surprisingly atan maths are nowhere to be found from the roms. |
| 2480 | 2480 | */ |
| 2481 | 2481 | |
| 2482 | | /* "automatic" movement */ |
| 2482 | /* "automatic" movement, 0205 */ |
| 2483 | 2483 | if(COP_CMD(0x188,0x282,0x082,0xb8e,0x98e,0x000,0x000,0x000,6,0xffeb)) |
| 2484 | 2484 | { |
| 2485 | 2485 | UINT8 offs; |
| 2486 | 2486 | |
| 2487 | 2487 | offs = (offset & 3) * 4; |
| 2488 | int ppos = space.read_dword(m_cop_register[0] + 4 + offs); |
| 2489 | int npos = ppos + space.read_dword(m_cop_register[0] + 0x10 + offs); |
| 2490 | int delta = (npos >> 16) - (ppos >> 16); |
| 2488 | 2491 | |
| 2489 | | space.write_dword(m_cop_register[0] + 0x04 + offs, space.read_dword(m_cop_register[0] + 0x04 + offs) + space.read_dword(m_cop_register[0] + 0x10 + offs)); |
| 2490 | | space.write_dword(m_cop_register[0] + 0x1c + offs, space.read_dword(m_cop_register[0] + 0x10 + offs) + space.read_dword(m_cop_register[0] + 0x1c + offs)); |
| 2492 | space.write_dword(m_cop_register[0] + 4 + offs, npos); |
| 2493 | space.write_word(m_cop_register[0] + 0x1c + offs, space.read_word(m_cop_register[0] + 0x1c + offs) + delta); |
| 2491 | 2494 | return; |
| 2492 | 2495 | } |
| 2493 | 2496 | |
| 2494 | | /* "automatic" movement, for arcs in Legionnaire / Zero Team (expression adjustment) */ |
| 2497 | /* "automatic" movement, for arcs in Legionnaire / Zero Team (expression adjustment) 0905 */ |
| 2495 | 2498 | if(COP_CMD(0x194,0x288,0x088,0x000,0x000,0x000,0x000,0x000,6,0xfbfb)) |
| 2496 | 2499 | { |
| 2497 | 2500 | UINT8 offs; |