summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ville Linde <villelin@mamedev.org>2014-09-29 20:06:44 +0000
committer Ville Linde <villelin@mamedev.org>2014-09-29 20:06:44 +0000
commitbf5d2bcf28c9844c53c4b09d805f0c2dff4d69a5 (patch)
tree60718a250467f046799d8844f22a069b210d7df5
parent80acf897236f85b7ebac181157202a2bb07f1666 (diff)
model3.c: fixed missing textures in magtruck (nw)
-rw-r--r--src/mame/drivers/model3.c9
-rw-r--r--src/mame/includes/model3.h1
-rw-r--r--src/mame/video/model3.c26
3 files changed, 23 insertions, 13 deletions
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index 0cbf16adfa6..8fcbfac34a4 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -5391,7 +5391,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(model3_state::model3_interrupt)
if (scanline == 384)
set_irq_line(0x02, ASSERT_LINE);
- else if(scanline == 0)
+ else
set_irq_line(0x0d, ASSERT_LINE);
}
@@ -6010,6 +6010,11 @@ DRIVER_INIT_MEMBER(model3_state,oceanhun)
rom[(0x57995c^4)/4] = 0x60000000; // decrementer
}
+DRIVER_INIT_MEMBER(model3_state,magtruck)
+{
+ DRIVER_INIT_CALL(model3_20);
+}
+
/* Model 3 Step 1.0 */
GAME( 1996, vf3, 0, model3_10, model3, model3_state, vf3, ROT0, "Sega", "Virtua Fighter 3 (Revision C)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
@@ -6058,7 +6063,7 @@ GAME( 1998, swtrilgy, 0, model3_21, swtrilgy, model3_state, swtrilgy, RO
GAME( 1998, swtrilgya, swtrilgy, model3_21, swtrilgy, model3_state, swtrilga, ROT0, "Sega / LucasArts", "Star Wars Trilogy", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1998, spikeout, 0, model3_21, model3, model3_state, spikeout, ROT0, "Sega", "Spikeout (Revision C)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1998, spikeofe, 0, model3_21, model3, model3_state, spikeofe, ROT0, "Sega", "Spikeout Final Edition", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1998, magtruck, 0, model3_21, model3, model3_state, eca, ROT0, "Sega", "Magical Truck Adventure", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
+GAME( 1998, magtruck, 0, model3_21, eca, model3_state, magtruck, ROT0, "Sega", "Magical Truck Adventure", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1999, eca, 0, model3_21, eca, model3_state, eca, ROT0, "Sega", "Emergency Call Ambulance", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1999, ecax, eca, model3_21, eca, model3_state, eca, ROT0, "Sega", "Emergency Call Ambulance (Export)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1999, ecap, eca, model3_21, eca, model3_state, eca, ROT0, "Sega", "Emergency Call Ambulance (US location test?)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h
index e94de3352ac..375fec69c0a 100644
--- a/src/mame/includes/model3.h
+++ b/src/mame/includes/model3.h
@@ -211,6 +211,7 @@ public:
DECLARE_DRIVER_INIT(oceanhun);
DECLARE_DRIVER_INIT(dayto2pe);
DECLARE_DRIVER_INIT(spikeout);
+ DECLARE_DRIVER_INIT(magtruck);
DECLARE_DRIVER_INIT(model3_15);
virtual void video_start();
DECLARE_MACHINE_START(model3_10);
diff --git a/src/mame/video/model3.c b/src/mame/video/model3.c
index aaa5904a002..113b06ebaff 100644
--- a/src/mame/video/model3.c
+++ b/src/mame/video/model3.c
@@ -749,18 +749,22 @@ void model3_state::real3d_display_list2_dma(UINT32 src, UINT32 dst, int length,
void model3_state::real3d_vrom_texture_dma(UINT32 src, UINT32 dst, int length, int byteswap)
{
- address_space &space = m_maincpu->space(AS_PROGRAM);
- if((dst & 0xff) == 0) {
- UINT32 address, header;
-
- if (byteswap) {
- address = BYTE_REVERSE32(space.read_dword((src+0)));
- header = BYTE_REVERSE32(space.read_dword((src+4)));
- } else {
- address = space.read_dword((src+0));
- header = space.read_dword((src+4));
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ if ((dst & 0xff) == 0)
+ {
+ for (int i=0; i < length; i+=12)
+ {
+ UINT32 address, header;
+
+ if (byteswap) {
+ address = BYTE_REVERSE32(space.read_dword((src+i+0)));
+ header = BYTE_REVERSE32(space.read_dword((src+i+4)));
+ } else {
+ address = space.read_dword((src+i+0));
+ header = space.read_dword((src+i+4));
+ }
+ real3d_upload_texture(header, (UINT32*)&m_vrom[address]);
}
- real3d_upload_texture(header, (UINT32*)&m_vrom[address]);
}
}