summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2014-04-16 02:13:31 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2014-04-16 02:13:31 +0000
commit1c65c756f56e2827faeb254852789602e47bc10a (patch)
treede5f0abe90f54fc60014bff3841a3a180749bded /src
parentd7c246e45da23362b429e89b0b3f9b27c74ed1f8 (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.c10
-rw-r--r--src/mame/video/model2.c2
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;