trunk/src/mame/machine/seicop.c
| r17793 | r17794 | |
| 1774 | 1774 | |
| 1775 | 1775 | /* outbound X check */ |
| 1776 | 1776 | if(cop_collision_info[0].max_x >= cop_collision_info[1].min_x && cop_collision_info[0].min_x <= cop_collision_info[1].max_x) |
| 1777 | | res &= ~1; |
| 1777 | res &= ~2; |
| 1778 | 1778 | |
| 1779 | 1779 | /* outbound Y check */ |
| 1780 | 1780 | if(cop_collision_info[0].max_y >= cop_collision_info[1].min_y && cop_collision_info[0].min_y <= cop_collision_info[1].max_y) |
| 1781 | | res &= ~2; |
| 1781 | res &= ~1; |
| 1782 | 1782 | |
| 1783 | | /* TODO: Legionnaire does collision detection via the other two regs, |
| 1784 | | for now just implement a version that allows the player to spam flying kicks and hit everything else on the screen ;-) */ |
| 1785 | 1783 | cop_hit_val_x = (cop_collision_info[0].min_x - cop_collision_info[1].min_x) >> 16; |
| 1786 | 1784 | cop_hit_val_y = (cop_collision_info[0].min_y - cop_collision_info[1].min_y) >> 16; |
| 1787 | 1785 | cop_hit_val_z = 1; |
| 1788 | | cop_hit_val_unk = 0;//((cop_collision_info[0].min_y >> 16) != (cop_collision_info[1].min_y >> 16)); |
| 1786 | cop_hit_val_unk = res;//((cop_collision_info[0].min_y >> 16) != (cop_collision_info[1].min_y >> 16)); |
| 1789 | 1787 | |
| 1790 | 1788 | //if(res == 0) |
| 1791 | 1789 | //popmessage("0:%08x %08x %08x 1:%08x %08x %08x\n",cop_collision_info[0].x,cop_collision_info[0].y,cop_collision_info[0].hitbox,cop_collision_info[1].x,cop_collision_info[1].y,cop_collision_info[1].hitbox); |
| r17793 | r17794 | |
| 2298 | 2296 | //(heatbrl) | 9 | ffff | b080 | b40 bc0 bc2 |
| 2299 | 2297 | if(COP_CMD(0xb40,0xbc0,0xbc2,0x000,0x000,0x000,0x000,0x000,u1,u2)) |
| 2300 | 2298 | { |
| 2301 | | UINT8 start_x,/*start_y,*/end_x,end_y; |
| 2299 | UINT8 start_x,end_x,end_y; |
| 2300 | //UINT8 start_y; |
| 2302 | 2301 | cop_collision_info[0].hitbox = space->read_word(cop_register[2]); |
| 2303 | 2302 | cop_collision_info[0].hitbox_y = space->read_word((cop_register[2]&0xffff0000)|(cop_collision_info[0].hitbox)); |
| 2304 | 2303 | cop_collision_info[0].hitbox_x = space->read_word(((cop_register[2]&0xffff0000)|(cop_collision_info[0].hitbox))+2); |
| r17793 | r17794 | |
| 2335 | 2334 | //(heatbrl) | 6 | ffff | b880 | b60 be0 be2 |
| 2336 | 2335 | if(COP_CMD(0xb60,0xbe0,0xbe2,0x000,0x000,0x000,0x000,0x000,u1,u2)) |
| 2337 | 2336 | { |
| 2338 | | UINT8 start_x,/*start_y,*/end_x,end_y; |
| 2337 | UINT8 start_x, end_x,end_y; |
| 2338 | //UINT8 start_y; |
| 2339 | 2339 | |
| 2340 | 2340 | /* Take hitbox param, TODO */ |
| 2341 | 2341 | cop_collision_info[1].hitbox = space->read_word(cop_register[3]); |