summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-07-06 22:48:41 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-07-06 22:48:41 +0000
commit1794fddf8deb07f5ce1fa6c33806289e9efa6e7f (patch)
tree88e0a9e63f89fd3c9e62026420bcd47b1ffa991e /src
parentb261a8839587ccd2bb4fa20716e9cc59e6f93b3f (diff)
01965: driveyes: Access Violation
01951: cybrcycc: Crash during intro. 01964: gtg2j: Access Violation
Diffstat (limited to 'src')
-rw-r--r--src/emu/video/tms34061.c16
-rw-r--r--src/mame/machine/namcos2.c4
-rw-r--r--src/mame/video/namcos22.c3
3 files changed, 15 insertions, 8 deletions
diff --git a/src/emu/video/tms34061.c b/src/emu/video/tms34061.c
index 0c3859d67d3..8f6919b02cc 100644
--- a/src/emu/video/tms34061.c
+++ b/src/emu/video/tms34061.c
@@ -175,10 +175,13 @@ static void register_w(offs_t offset, UINT8 data)
video_screen_update_partial(tms34061.screen, video_screen_get_vpos(tms34061.screen));
/* store the hi/lo half */
- if (offset & 0x02)
- tms34061.regs[regnum] = (tms34061.regs[regnum] & 0x00ff) | (data << 8);
- else
- tms34061.regs[regnum] = (tms34061.regs[regnum] & 0xff00) | data;
+ if (regnum < ARRAY_LENGTH(tms34061.regs))
+ {
+ if (offset & 0x02)
+ tms34061.regs[regnum] = (tms34061.regs[regnum] & 0x00ff) | (data << 8);
+ else
+ tms34061.regs[regnum] = (tms34061.regs[regnum] & 0xff00) | data;
+ }
/* log it */
if (VERBOSE) logerror("%04X:tms34061 %s = %04x\n", activecpu_get_pc(), regnames[regnum], tms34061.regs[regnum]);
@@ -238,7 +241,10 @@ static UINT8 register_r(offs_t offset)
UINT16 result;
/* extract the correct portion of the register */
- result = tms34061.regs[regnum];
+ if (regnum < ARRAY_LENGTH(tms34061.regs))
+ result = tms34061.regs[regnum];
+ else
+ result = 0xffff;
/* special cases: */
switch (regnum)
diff --git a/src/mame/machine/namcos2.c b/src/mame/machine/namcos2.c
index b65cb6ecc8a..7ab9d9d5dd7 100644
--- a/src/mame/machine/namcos2.c
+++ b/src/mame/machine/namcos2.c
@@ -14,7 +14,7 @@ Namco System II
#include "cpu/m6805/m6805.h"
#include "namcos2.h"
-extern void namcos21_kickstart(int);
+extern void namcos21_kickstart(running_machine *, int);
int namcos2_gametype;
@@ -587,7 +587,7 @@ ReadWriteC148( running_machine *machine, int cpu, offs_t offset, UINT16 data, in
//printf( "dspkick=0x%x\n", data );
if( data&4 )
{
- namcos21_kickstart(1);
+ namcos21_kickstart(machine, 1);
}
}
}
diff --git a/src/mame/video/namcos22.c b/src/mame/video/namcos22.c
index 79f171978a2..0b024eccd80 100644
--- a/src/mame/video/namcos22.c
+++ b/src/mame/video/namcos22.c
@@ -387,7 +387,7 @@ static void renderscanline_uvi_full(void *dest, INT32 scanline, const poly_exten
static void poly3d_DrawQuad(running_machine *machine, bitmap_t *bitmap, int textureBank, int color, Poly3dVertex pv[4], UINT16 flags, int direct, int cmode )
{
poly_extra_data *extra;
- poly_vertex v[4], clipv[5];
+ poly_vertex v[4], clipv[6];
int clipverts;
int vertnum;
@@ -406,6 +406,7 @@ static void poly3d_DrawQuad(running_machine *machine, bitmap_t *bitmap, int text
clipverts = poly_zclip_if_less(4, v, clipv, 4, MIN_Z);
if (clipverts < 3)
return;
+ assert(clipverts <= ARRAY_LENGTH(clipv));
for (vertnum = 0; vertnum < clipverts; vertnum++)
{
float ooz = 1.0f / clipv[vertnum].p[0];