diff options
author | 2014-04-16 02:13:31 +0000 | |
---|---|---|
committer | 2014-04-16 02:13:31 +0000 | |
commit | 1c65c756f56e2827faeb254852789602e47bc10a (patch) | |
tree | de5f0abe90f54fc60014bff3841a3a180749bded /src | |
parent | d7c246e45da23362b429e89b0b3f9b27c74ed1f8 (diff) |
Added geometry "eye mode", used by Sega Rally on car selection to display them on different boxes.
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/model2.c | 10 | ||||
-rw-r--r-- | src/mame/video/model2.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c index d9d5471e975..9a937d4e20c 100644 --- a/src/mame/drivers/model2.c +++ b/src/mame/drivers/model2.c @@ -15,6 +15,7 @@ - fvipers: enables timers, but then irq register is empty, hence it crashes with an "interrupt halt" at POST (regression); - lastbrnx: uses external DMA port 0 for uploading SHARC program, hook-up might not be 100% right; - lastbrnx: uses a shitload of unsupported SHARC opcodes (compute_fmul_avg, shift operation 0x11, ALU operation 0x89 (compute_favg)); + - lastbrnx: eventually crashes in attract mode, geo_parse_nn_s() is the culprit apparently; - manxtt: missing 3d; - motoraid: stalls after course select; - pltkidsa: after few secs of gameplay, background 3d disappears and everything reports a collision against the player; @@ -975,7 +976,14 @@ WRITE32_MEMBER(model2_state::geo_w) r |= data & 0x000fffff; r |= ((address >> 4) & 0x3f) << 23; if((address >> 4) & 0xc0) - popmessage("Eye mode? Contact MAMEdev"); + { + UINT8 function = (address >> 4) & 0x3f; + if(function == 1) + { + r |= ((address>>10)&3)<<29; // Eye Mode, used by Sega Rally on car select + //popmessage("Eye mode %02x? Contact MAMEdev",function); + } + } push_geo_data(r); } } diff --git a/src/mame/video/model2.c b/src/mame/video/model2.c index 99dd8f22056..488784884d3 100644 --- a/src/mame/video/model2.c +++ b/src/mame/video/model2.c @@ -2621,7 +2621,7 @@ static UINT32 * geo_code_jump( geo_state *geo, UINT32 opcode, UINT32 *input ) static UINT32 * geo_process_command( geo_state *geo, UINT32 opcode, UINT32 *input ) { - switch( opcode >> 23 ) + switch( (opcode >> 23) & 0x1f ) { case 0x00: input = geo_nop( geo, opcode, input ); break; case 0x01: input = geo_object_data( geo, opcode, input ); break; |