diff -Nru base0109/src/drivers/8080bw.c w0109/src/drivers/8080bw.c
--- base0109/src/drivers/8080bw.c	2006-09-14 17:43:50.000000000 +1200
+++ w0109/src/drivers/8080bw.c	2006-09-27 12:22:46.000000000 +1200
@@ -3416,7 +3416,7 @@
 		case 0x5ffc:	return 0;
 	}
 	logerror("unknown port 0 read @ %x\n",activecpu_get_pc());
-	return rand();
+	return mame_rand(Machine);
 }
 
 static ADDRESS_MAP_START( indianbt_port, ADDRESS_SPACE_IO, 8 )
diff -Nru base0109/src/drivers/ace.c w0109/src/drivers/ace.c
--- base0109/src/drivers/ace.c	2006-09-13 02:00:34.000000000 +1200
+++ w0109/src/drivers/ace.c	2006-09-27 12:22:39.000000000 +1200
@@ -138,7 +138,7 @@
 
 static READ8_HANDLER( unk_r )
 {
-	return rand()&0xff;
+	return mame_rand(Machine)&0xff;
 }
 
 
diff -Nru base0109/src/drivers/airbustr.c w0109/src/drivers/airbustr.c
--- base0109/src/drivers/airbustr.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/airbustr.c	2006-09-27 12:22:31.000000000 +1200
@@ -264,7 +264,7 @@
 		/* Reading eff4, F0 times must yield at most 80-1 consecutive
            equal values */
 		case 0xff4:
-			return rand();
+			return mame_rand(Machine);
 
 		default:
 			return devram[offset];
diff -Nru base0109/src/drivers/atarigx2.c w0109/src/drivers/atarigx2.c
--- base0109/src/drivers/atarigx2.c	2006-02-21 05:32:38.000000000 +1300
+++ w0109/src/drivers/atarigx2.c	2006-09-27 12:21:57.000000000 +1200
@@ -1146,7 +1146,7 @@
 		if (lookup_table[i][0] == 0xffffffff)
 		{
 			if (last_write_offset*2 >= 0x700 && last_write_offset*2 < 0x720)
-				result = rand() << 16;
+				result = mame_rand(Machine) << 16;
 			else
 				result = 0xffff << 16;
 			logerror("%06X:Unhandled protection R@%04X = %04X\n", activecpu_get_previouspc(), offset, result);
diff -Nru base0109/src/drivers/backfire.c w0109/src/drivers/backfire.c
--- base0109/src/drivers/backfire.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/backfire.c	2006-09-27 12:21:42.000000000 +1200
@@ -233,7 +233,7 @@
 static READ32_HANDLER(backfire_eeprom_r)
 {
 	/* some kind of screen indicator?  checked by backfira set before it will boot */
-	int backfire_screen = rand()&1;
+	int backfire_screen = mame_rand(Machine)&1;
 	return ((EEPROM_read_bit()<<24) | readinputport(0) | (readinputport(3)<<16)) ^  (backfire_screen << 26) ;
 }
 
diff -Nru base0109/src/drivers/bigfghtr.c w0109/src/drivers/bigfghtr.c
--- base0109/src/drivers/bigfghtr.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/drivers/bigfghtr.c	2006-09-27 12:21:33.000000000 +1200
@@ -313,7 +313,7 @@
 				if(read_latch)
 				{
 					read_latch=0;
-					return rand();
+					return mame_rand(Machine);
 				}
 			break;
 
diff -Nru base0109/src/drivers/blmbycar.c w0109/src/drivers/blmbycar.c
--- base0109/src/drivers/blmbycar.c	2006-03-01 05:39:15.000000000 +1300
+++ w0109/src/drivers/blmbycar.c	2006-09-27 12:21:22.000000000 +1200
@@ -93,7 +93,7 @@
 static READ16_HANDLER( blmbycar_pot_wheel_r )
 {
 	return	((pot_wheel & 0x80) ? 0x04 : 0) |
-			(rand() & 0x08);
+			(mame_rand(Machine) & 0x08);
 }
 
 
diff -Nru base0109/src/drivers/ddrible.c w0109/src/drivers/ddrible.c
--- base0109/src/drivers/ddrible.c	2006-07-11 13:20:23.000000000 +1200
+++ w0109/src/drivers/ddrible.c	2006-09-27 12:20:59.000000000 +1200
@@ -90,7 +90,7 @@
 
 static READ8_HANDLER( ddrible_vlm5030_busy_r )
 {
-	return rand(); /* patch */
+	return mame_rand(Machine); /* patch */
 	if (VLM5030_BSY()) return 1;
 	else return 0;
 }
diff -Nru base0109/src/drivers/deco32.c w0109/src/drivers/deco32.c
--- base0109/src/drivers/deco32.c	2006-09-27 01:33:44.000000000 +1200
+++ w0109/src/drivers/deco32.c	2006-09-27 12:20:40.000000000 +1200
@@ -376,7 +376,7 @@
 //logerror("%08x:Read gun %d\n",activecpu_get_pc(),offset);
 //return ((rand()%0xffff)<<16) | rand()%0xffff;
 	if (offset) /* Mirror of player 1 and player 2 fire buttons */
-		return readinputport(5) | ((rand()%0xff)<<16);
+		return readinputport(5) | ((mame_rand(Machine)%0xff)<<16);
 	return readinputport(4) | readinputport(6) | (readinputport(6)<<16) | (readinputport(6)<<24); //((rand()%0xff)<<16);
 }
 
diff -Nru base0109/src/drivers/deco_mlc.c w0109/src/drivers/deco_mlc.c
--- base0109/src/drivers/deco_mlc.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/deco_mlc.c	2006-09-27 12:20:27.000000000 +1200
@@ -125,7 +125,7 @@
 //  if (offset==0)
 //      return readinputport(0); //0xffffffff;
 //   logerror("%08x:  Test2_r %d\n",activecpu_get_pc(),offset);
-	return rand(); //0xffffffff;
+	return mame_rand(Machine); //0xffffffff;
 }
 
 static READ32_HANDLER(test3_r)
diff -Nru base0109/src/drivers/ertictac.c w0109/src/drivers/ertictac.c
--- base0109/src/drivers/ertictac.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/ertictac.c	2006-09-27 12:20:06.000000000 +1200
@@ -98,7 +98,7 @@
 
 static READ32_HANDLER(IRQRQB_r)
 {
-	return rand()&IRQMSKB; /* hack  0x20 - controls,  0x02 - ?sound? */
+	return mame_rand(Machine)&IRQMSKB; /* hack  0x20 - controls,  0x02 - ?sound? */
 }
 
 static READ32_HANDLER(IRQMSKB_r)
diff -Nru base0109/src/drivers/fitfight.c w0109/src/drivers/fitfight.c
--- base0109/src/drivers/fitfight.c	2006-02-16 17:03:26.000000000 +1300
+++ w0109/src/drivers/fitfight.c	2006-09-27 12:19:43.000000000 +1200
@@ -228,19 +228,19 @@
 static READ8_HANDLER(snd_porta_r)
 {
 	//printf("PA R @%x\n",activecpu_get_pc());
-	return rand();
+	return mame_rand(Machine);
 }
 
 static READ8_HANDLER(snd_portb_r)
 {
 	//printf("PB R @%x\n",activecpu_get_pc());
-	return rand();
+	return mame_rand(Machine);
 }
 
 static READ8_HANDLER(snd_portc_r)
 {
 	//printf("PC R @%x\n",activecpu_get_pc());
-	return rand();
+	return mame_rand(Machine);
 }
 
 static WRITE8_HANDLER(snd_porta_w)
diff -Nru base0109/src/drivers/fortecar.c w0109/src/drivers/fortecar.c
--- base0109/src/drivers/fortecar.c	2006-06-29 16:18:26.000000000 +1200
+++ w0109/src/drivers/fortecar.c	2006-09-27 12:19:32.000000000 +1200
@@ -32,7 +32,7 @@
 
 READ8_HANDLER( fortecar_read62 )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static ADDRESS_MAP_START( fortecar_ports, ADDRESS_SPACE_IO, 8 )
diff -Nru base0109/src/drivers/gladiatr.c w0109/src/drivers/gladiatr.c
--- base0109/src/drivers/gladiatr.c	2006-05-18 18:00:44.000000000 +1200
+++ w0109/src/drivers/gladiatr.c	2006-09-27 12:19:24.000000000 +1200
@@ -361,9 +361,9 @@
 
 static WRITE8_HANDLER(qx3_w){ }
 
-static READ8_HANDLER(qx2_r){ return rand(); }
+static READ8_HANDLER(qx2_r){ return mame_rand(Machine); }
 
-static READ8_HANDLER(qx3_r){ return rand()&0xf; }
+static READ8_HANDLER(qx3_r){ return mame_rand(Machine)&0xf; }
 
 static READ8_HANDLER(qx0_r)
 {
@@ -654,7 +654,7 @@
 
 static READ8_HANDLER(f1_r)
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static struct YM2203interface ppking_ym2203_interface =
diff -Nru base0109/src/drivers/gunpey.c w0109/src/drivers/gunpey.c
--- base0109/src/drivers/gunpey.c	2006-06-29 16:18:26.000000000 +1200
+++ w0109/src/drivers/gunpey.c	2006-09-27 12:18:39.000000000 +1200
@@ -73,7 +73,7 @@
 	// 40,41,44 = ?
 	// 4a = flags?
 		if(offset==0xc9 )//|| offset==0x40 || offset==0x41 || offset==0x44)
-			return rand();
+			return mame_rand(Machine);
 	return unkram[offset];
 }
 
diff -Nru base0109/src/drivers/hshavoc.c w0109/src/drivers/hshavoc.c
--- base0109/src/drivers/hshavoc.c	2006-09-11 13:31:12.000000000 +1200
+++ w0109/src/drivers/hshavoc.c	2006-09-27 12:18:22.000000000 +1200
@@ -200,7 +200,7 @@
 
 static READ16_HANDLER( vdp_fake_r )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static DRIVER_INIT(genesis)
diff -Nru base0109/src/drivers/itech32.c w0109/src/drivers/itech32.c
--- base0109/src/drivers/itech32.c	2006-09-22 16:23:42.000000000 +1200
+++ w0109/src/drivers/itech32.c	2006-09-27 12:17:59.000000000 +1200
@@ -796,7 +796,7 @@
 		mame_fread(file, main_ram, main_ram_size);
 	else
 		for (i = 0x80; i < main_ram_size; i++)
-			((UINT8 *)main_ram)[i] = rand();
+			((UINT8 *)main_ram)[i] = mame_rand(Machine);
 }
 
 
@@ -810,7 +810,7 @@
 		mame_fread(file, nvram, nvram_size);
 	else
 		for (i = 0; i < nvram_size; i++)
-			((UINT8 *)nvram)[i] = rand();
+			((UINT8 *)nvram)[i] = mame_rand(Machine);
 }
 
 static NVRAM_HANDLER( gt3dt )
diff -Nru base0109/src/drivers/itech8.c w0109/src/drivers/itech8.c
--- base0109/src/drivers/itech8.c	2006-08-13 11:34:17.000000000 +1200
+++ w0109/src/drivers/itech8.c	2006-09-27 12:17:50.000000000 +1200
@@ -912,7 +912,7 @@
 		mame_fread(file, main_ram, main_ram_size);
 	else
 		for (i = 0; i < main_ram_size; i++)
-			main_ram[i] = rand();
+			main_ram[i] = mame_rand(Machine);
 }
 
 
diff -Nru base0109/src/drivers/kopunch.c w0109/src/drivers/kopunch.c
--- base0109/src/drivers/kopunch.c	2006-07-28 05:05:11.000000000 +1200
+++ w0109/src/drivers/kopunch.c	2006-09-27 12:17:43.000000000 +1200
@@ -36,9 +36,9 @@
 {
 	/* port 31 + low 3 bits of port 32 contain the punch strength */
 	if (offset == 0)
-		return rand();
+		return mame_rand(Machine);
 	else
-		return (rand() & 0x07) | input_port_1_r(0);
+		return (mame_rand(Machine) & 0x07) | input_port_1_r(0);
 }
 
 static WRITE8_HANDLER( kopunch_lamp_w )
diff -Nru base0109/src/drivers/legionna.c w0109/src/drivers/legionna.c
--- base0109/src/drivers/legionna.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/legionna.c	2006-09-27 12:17:09.000000000 +1200
@@ -181,25 +181,25 @@
 
 		case (0x470/2):	/* read PC $110a, could be some sort of control word:
                 sometimes a bit is changed then it's poked back in... */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x582/2):	/* read PC $3594 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x584/2):	/* read PC $3588 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x586/2):	/* read PC $35a0 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x588/2):	/* read PC $3580 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x5b0/2):	/* bit 15 is branched on a few times in the $3300 area */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x5b4/2):	/* read and stored in ram before +0x5b0 bit 15 tested */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		/* Non-protection reads */
 
@@ -304,28 +304,28 @@
 		/* Protection is not understood */
 
 		case (0x580/2):	/* read PC $1a9e */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x582/2):	/* read PC $1ab2 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x584/2):	/* read PC $1aa6 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x590/2):	/* read PC $8622 */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x592/2):	/* read PC $85ee */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x594/2):	/* read PC $85be */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x5b0/2):	/* bit 15 is branched on a few times in the $1938 area */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		case (0x5b4/2):	/* read at $1932 and stored in ram before +0x5b0 bit 15 tested */
-			return (rand() &0xffff);
+			return (mame_rand(Machine) &0xffff);
 
 		/* Non-protection reads */
 
diff -Nru base0109/src/drivers/metro.c w0109/src/drivers/metro.c
--- base0109/src/drivers/metro.c	2006-09-11 13:31:12.000000000 +1200
+++ w0109/src/drivers/metro.c	2006-09-27 12:16:48.000000000 +1200
@@ -4586,7 +4586,7 @@
 	metro_vram_1 = RAM + (0x20000/2) * 1;
 	metro_vram_2 = RAM + (0x20000/2) * 2;
 for (i = 0;i < (0x20000*3)/2;i++)
-	RAM[i] = rand();
+	RAM[i] = mame_rand(Machine);
 
 	init_metro(machine);
 }
diff -Nru base0109/src/drivers/nwk-tr.c w0109/src/drivers/nwk-tr.c
--- base0109/src/drivers/nwk-tr.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/nwk-tr.c	2006-09-27 12:16:40.000000000 +1200
@@ -666,7 +666,7 @@
 	int i;
 	for (i=0; i < length; i++)
 	{
-		jamma_rdata[i] = rand();
+		jamma_rdata[i] = mame_rand(Machine);
 	}
 }
 
diff -Nru base0109/src/drivers/nycaptor.c w0109/src/drivers/nycaptor.c
--- base0109/src/drivers/nycaptor.c	2006-05-06 02:13:39.000000000 +1200
+++ w0109/src/drivers/nycaptor.c	2006-09-27 12:16:31.000000000 +1200
@@ -453,7 +453,7 @@
 
 static READ8_HANDLER(cyclshtg_mcu_status_r1)
 {
-  return rand();
+  return mame_rand(Machine);
 }
 
 static WRITE8_HANDLER( cyclshtg_generic_control_w )
@@ -531,7 +531,7 @@
 
 static READ8_HANDLER(unk_r)
 {
-  return rand();
+  return mame_rand(Machine);
 }
 
 static ADDRESS_MAP_START( bronx_readmem, ADDRESS_SPACE_PROGRAM, 8 )
diff -Nru base0109/src/drivers/othldrby.c w0109/src/drivers/othldrby.c
--- base0109/src/drivers/othldrby.c	2005-11-07 02:41:09.000000000 +1300
+++ w0109/src/drivers/othldrby.c	2006-09-27 12:16:22.000000000 +1200
@@ -39,7 +39,7 @@
 
 static READ16_HANDLER( pap )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 
diff -Nru base0109/src/drivers/pacman.c w0109/src/drivers/pacman.c
--- base0109/src/drivers/pacman.c	2006-08-25 02:16:56.000000000 +1200
+++ w0109/src/drivers/pacman.c	2006-09-27 12:16:11.000000000 +1200
@@ -510,7 +510,7 @@
 {
 	/* The return value determines what the mystery item is.  Each bit corresponds
        to a question mark */
-	return rand() & 0x0f;
+	return mame_rand(Machine) & 0x0f;
 }
 
 
diff -Nru base0109/src/drivers/seta2.c w0109/src/drivers/seta2.c
--- base0109/src/drivers/seta2.c	2006-07-28 05:05:11.000000000 +1200
+++ w0109/src/drivers/seta2.c	2006-09-27 12:15:59.000000000 +1200
@@ -444,7 +444,7 @@
 
 READ16_HANDLER( pzlbowl_coins_r )
 {
-	return readinputport(4) | (rand() & 0x80 );
+	return readinputport(4) | (mame_rand(Machine) & 0x80 );
 }
 
 WRITE16_HANDLER( pzlbowl_coin_counter_w )
diff -Nru base0109/src/drivers/shanghai.c w0109/src/drivers/shanghai.c
--- base0109/src/drivers/shanghai.c	2006-09-13 02:00:34.000000000 +1200
+++ w0109/src/drivers/shanghai.c	2006-09-27 12:15:53.000000000 +1200
@@ -828,7 +828,7 @@
 
 static READ8_HANDLER(shanghai_rand_r)
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static READ8_HANDLER( kothello_HD63484_status_r )
diff -Nru base0109/src/drivers/spcforce.c w0109/src/drivers/spcforce.c
--- base0109/src/drivers/spcforce.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/spcforce.c	2006-09-27 12:15:38.000000000 +1200
@@ -68,7 +68,7 @@
 static READ8_HANDLER( spcforce_t0_r )
 {
 	/* SN76496 status according to Al - not supported by MAME?? */
-	return rand() & 1;
+	return mame_rand(Machine) & 1;
 }
 
 
diff -Nru base0109/src/drivers/strnskil.c w0109/src/drivers/strnskil.c
--- base0109/src/drivers/strnskil.c	2006-05-06 02:13:39.000000000 +1200
+++ w0109/src/drivers/strnskil.c	2006-09-27 12:15:23.000000000 +1200
@@ -53,7 +53,7 @@
 		case 0x6066:	res = 0xa5;	break;
 		case 0x60dc:	res = 0x20;	break;	/* bits 0-3 unknown */
 		case 0x615d:	res = 0x30;	break;	/* bits 0-3 unknown */
-		case 0x61b9:	res = 0x60|(rand()&0x0f);	break;	/* bits 0-3 unknown */
+		case 0x61b9:	res = 0x60|(mame_rand(Machine)&0x0f);	break;	/* bits 0-3 unknown */
 		case 0x6219:	res = 0x77;	break;
 		case 0x626c:	res = 0xb4;	break;
 		default:		res = 0xff; break;
diff -Nru base0109/src/drivers/superqix.c w0109/src/drivers/superqix.c
--- base0109/src/drivers/superqix.c	2006-03-01 05:39:15.000000000 +1300
+++ w0109/src/drivers/superqix.c	2006-09-27 12:15:14.000000000 +1200
@@ -483,7 +483,7 @@
 {
 //  logerror("%04x: ay_port_a_r\n",activecpu_get_pc());
 	 /* bits 76------  MCU status bits */
-	return (rand()&0xc0)|readinputport(3);
+	return (mame_rand(Machine)&0xc0)|readinputport(3);
 }
 
 
diff -Nru base0109/src/drivers/suprgolf.c w0109/src/drivers/suprgolf.c
--- base0109/src/drivers/suprgolf.c	2006-06-29 16:18:26.000000000 +1200
+++ w0109/src/drivers/suprgolf.c	2006-09-27 12:15:02.000000000 +1200
@@ -92,7 +92,7 @@
 
 READ8_HANDLER( suprgolf_random )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
diff -Nru base0109/src/drivers/taito_z.c w0109/src/drivers/taito_z.c
--- base0109/src/drivers/taito_z.c	2006-08-11 05:24:37.000000000 +1200
+++ w0109/src/drivers/taito_z.c	2006-09-27 12:14:34.000000000 +1200
@@ -1296,7 +1296,7 @@
 	switch (offset)
 	{
 		case 0x0:
-			return (rand() &0xff);	/* motor status ?? */
+			return (mame_rand(Machine) &0xff);	/* motor status ?? */
 
 		case 0x101:
 			return 0x55;	/* motor cpu status ? */
diff -Nru base0109/src/drivers/tetrisp2.c w0109/src/drivers/tetrisp2.c
--- base0109/src/drivers/tetrisp2.c	2006-09-11 13:31:12.000000000 +1200
+++ w0109/src/drivers/tetrisp2.c	2006-09-27 12:14:13.000000000 +1200
@@ -230,8 +230,8 @@
 static READ16_HANDLER( tetrisp2_ip_1_word_r )
 {
 	return	( readinputportbytag("IN1") &  0xfcff ) |
-			(           rand() & ~0xfcff ) |
-			(      1 << (8 + (rand()&1)) );
+			(           mame_rand(Machine) & ~0xfcff ) |
+			(      1 << (8 + (mame_rand(Machine)&1)) );
 }
 
 
diff -Nru base0109/src/drivers/tmnt.c w0109/src/drivers/tmnt.c
--- base0109/src/drivers/tmnt.c	2006-09-11 13:31:12.000000000 +1200
+++ w0109/src/drivers/tmnt.c	2006-09-27 12:14:02.000000000 +1200
@@ -371,7 +371,7 @@
 	/* 0xffffff, and returning 0 causes the game to mess up - locking up in a */
 	/* loop where the ball is continuously bouncing from the basket. Returning */
 	/* a random number seems to prevent that. */
-	return rand();
+	return mame_rand(Machine);
 }
 
 
diff -Nru base0109/src/drivers/topshoot.c w0109/src/drivers/topshoot.c
--- base0109/src/drivers/topshoot.c	2006-02-23 03:33:55.000000000 +1300
+++ w0109/src/drivers/topshoot.c	2006-09-27 12:13:52.000000000 +1200
@@ -293,7 +293,7 @@
 
 static READ16_HANDLER( vdp_fake_r )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 DRIVER_INIT(topshoot)
diff -Nru base0109/src/drivers/topspeed.c w0109/src/drivers/topspeed.c
--- base0109/src/drivers/topspeed.c	2006-03-01 05:39:15.000000000 +1300
+++ w0109/src/drivers/topspeed.c	2006-09-27 12:13:38.000000000 +1200
@@ -334,7 +334,7 @@
 	switch (offset)
 	{
 		case 0x0:
-			return (rand() &0xff);	/* motor status ?? */
+			return (mame_rand(Machine) &0xff);	/* motor status ?? */
 
 		case 0x101:
 			return 0x55;	/* motor cpu status ? */
diff -Nru base0109/src/drivers/ttchamp.c w0109/src/drivers/ttchamp.c
--- base0109/src/drivers/ttchamp.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/drivers/ttchamp.c	2006-09-27 12:13:30.000000000 +1200
@@ -134,7 +134,7 @@
 
 static READ8_HANDLER( peno_rand2 )
 {
-	return rand();
+	return mame_rand(Machine);
 }
 
 static ADDRESS_MAP_START( ttchamp_map, ADDRESS_SPACE_PROGRAM, 8 )
diff -Nru base0109/src/drivers/wldarrow.c w0109/src/drivers/wldarrow.c
--- base0109/src/drivers/wldarrow.c	2006-03-01 05:39:15.000000000 +1300
+++ w0109/src/drivers/wldarrow.c	2006-09-27 12:13:12.000000000 +1200
@@ -84,7 +84,7 @@
 
 static READ8_HANDLER( unk_r )
 {
-	return (rand()&0xf)|(input_port_2_r(0)&0xf0)|0x80;
+	return (mame_rand(Machine)&0xf)|(input_port_2_r(0)&0xf0)|0x80;
 }
 
 
diff -Nru base0109/src/machine/ajax.c w0109/src/machine/ajax.c
--- base0109/src/machine/ajax.c	2006-02-21 05:32:38.000000000 +1300
+++ w0109/src/machine/ajax.c	2006-09-27 12:24:33.000000000 +1200
@@ -113,7 +113,7 @@
 
 	switch ((offset & 0x01c0) >> 6){
 		case 0x00:	/* ??? */
-			data = rand();
+			data = mame_rand(Machine);
 			break;
 		case 0x04:	/* 2P inputs */
 			data = readinputport(5);
diff -Nru base0109/src/machine/balsente.c w0109/src/machine/balsente.c
--- base0109/src/machine/balsente.c	2006-03-01 05:39:15.000000000 +1300
+++ w0109/src/machine/balsente.c	2006-09-27 12:24:25.000000000 +1200
@@ -298,7 +298,7 @@
 	else
 	{
 		while (count--)
-			*buffer++ = rand() & 0x1000;
+			*buffer++ = mame_rand(Machine) & 0x1000;
 	}
 
 	/* remember the noise position */
diff -Nru base0109/src/machine/bublbobl.c w0109/src/machine/bublbobl.c
--- base0109/src/machine/bublbobl.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/machine/bublbobl.c	2006-09-27 12:23:56.000000000 +1200
@@ -294,7 +294,7 @@
 	if (offset == 0)
 		return ic43_a << 4;
 	else
-		return rand() & 0xff;
+		return mame_rand(Machine) & 0xff;
 }
 
 WRITE8_HANDLER( boblbobl_ic43_a_w )
diff -Nru base0109/src/machine/generic.c w0109/src/machine/generic.c
--- base0109/src/machine/generic.c	2006-09-22 15:16:31.000000000 +1200
+++ w0109/src/machine/generic.c	2006-09-27 12:23:42.000000000 +1200
@@ -340,7 +340,7 @@
 	{
 		UINT8 *nvram = nvram_select();
 		for (i = 0; i < generic_nvram_size; i++)
-			nvram[i] = rand();
+			nvram[i] = mame_rand(Machine);
 	}
 }
 
diff -Nru base0109/src/machine/midwayic.c w0109/src/machine/midwayic.c
--- base0109/src/machine/midwayic.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/machine/midwayic.c	2006-09-27 12:23:34.000000000 +1200
@@ -127,8 +127,8 @@
 	serial_digit[7] = (serial_number / 10) % 10;
 	serial_digit[8] = (serial_number / 1) % 10;
 
-	serial.data[12] = rand() & 0xff;
-	serial.data[13] = rand() & 0xff;
+	serial.data[12] = mame_rand(Machine) & 0xff;
+	serial.data[13] = mame_rand(Machine) & 0xff;
 
 	serial.data[14] = 0; /* ??? */
 	serial.data[15] = 0; /* ??? */
diff -Nru base0109/src/machine/rainbow.c w0109/src/machine/rainbow.c
--- base0109/src/machine/rainbow.c	2006-02-22 17:48:42.000000000 +1300
+++ w0109/src/machine/rainbow.c	2006-09-27 12:23:12.000000000 +1200
@@ -714,7 +714,7 @@
 
 static void request_goalin_data(void)
 {
-	int n = rand() % 15;
+	int n = mame_rand(Machine) % 15;
 
 	CRAM[1][0x14B] = 0x00; /* x coordinates */
 	CRAM[1][0x14D] = 0x10;
diff -Nru base0109/src/machine/scramble.c w0109/src/machine/scramble.c
--- base0109/src/machine/scramble.c	2006-09-11 14:01:54.000000000 +1200
+++ w0109/src/machine/scramble.c	2006-09-27 12:23:04.000000000 +1200
@@ -451,7 +451,7 @@
        that it's working, doesn't actually use return value, so we can just use
        rand() */
 
-	return (readinputport(1) & ~0x20) | (rand() & 0x20);
+	return (readinputport(1) & ~0x20) | (mame_rand(Machine) & 0x20);
 }
 
 WRITE8_HANDLER( kingball_speech_dip_w )
diff -Nru base0109/src/machine/stactics.c w0109/src/machine/stactics.c
--- base0109/src/machine/stactics.c	2005-04-18 13:06:38.000000000 +1200
+++ w0109/src/machine/stactics.c	2006-09-27 12:22:55.000000000 +1200
@@ -29,7 +29,7 @@
 
 READ8_HANDLER( stactics_port_2_r )
 {
-    return (input_port_2_r(0)&0xf0)+(stactics_vblank_count&0x08)+(rand()%8);
+    return (input_port_2_r(0)&0xf0)+(stactics_vblank_count&0x08)+(mame_rand(Machine)%8);
 }
 
 READ8_HANDLER( stactics_port_3_r )
diff -Nru base0109/src/romload.c w0109/src/romload.c
--- base0109/src/romload.c	2006-09-26 04:49:11.000000000 +1200
+++ w0109/src/romload.c	2006-09-27 12:11:59.000000000 +1200
@@ -229,7 +229,7 @@
 static void fill_random(UINT8 *base, UINT32 length)
 {
 	while (length--)
-		*base++ = rand();
+		*base++ = mame_rand(Machine);
 }
 
 
diff -Nru base0109/src/sndhrdw/cinemat.c w0109/src/sndhrdw/cinemat.c
--- base0109/src/sndhrdw/cinemat.c	2006-09-11 14:01:54.000000000 +1200
+++ w0109/src/sndhrdw/cinemat.c	2006-09-27 12:25:19.000000000 +1200
@@ -160,11 +160,11 @@
 {
 	/* Explosion - rising edge */
 	if (SOUNDVAL_RISING_EDGE(0x01))
-		sample_start(0, (rand() & 1) ? 0 : 6, 0);
+		sample_start(0, (mame_rand(Machine) & 1) ? 0 : 6, 0);
 
 	/* Fire sound - rising edge */
 	if (SOUNDVAL_RISING_EDGE(0x02))
-		sample_start(1, (rand() & 1) ? 1 : 7, 0);
+		sample_start(1, (mame_rand(Machine) & 1) ? 1 : 7, 0);
 
 	/* Player 1 thrust - 0=on, 1=off */
 	if (SOUNDVAL_FALLING_EDGE(0x04))
diff -Nru base0109/src/sndhrdw/exidy.c w0109/src/sndhrdw/exidy.c
--- base0109/src/sndhrdw/exidy.c	2006-04-20 14:54:10.000000000 +1200
+++ w0109/src/sndhrdw/exidy.c	2006-09-27 12:25:04.000000000 +1200
@@ -236,7 +236,7 @@
 	for (i = 0; i < clocks * 2; i++)
 	{
 		/* keep a history of the last few noise samples */
-		history = (history << 1) | (rand() & 1);
+		history = (history << 1) | (mame_rand(Machine) & 1);
 
 		/* if we clocked 0->1, that will serve as an external clock */
 		if ((history & 0x03) == 0x01)
diff -Nru base0109/src/sndhrdw/jaguar.c w0109/src/sndhrdw/jaguar.c
--- base0109/src/sndhrdw/jaguar.c	2005-12-16 05:21:01.000000000 +1300
+++ w0109/src/sndhrdw/jaguar.c	2006-09-27 12:24:54.000000000 +1200
@@ -260,13 +260,13 @@
 		jaguar_wave_rom[0x200 + i] = (int)(32767. * sin(2.0 * M_PI * (double)i / (double)0x80));
 
 		/* F1DA00 = traingle wave with noise */
-		jaguar_wave_rom[0x280 + i] = jaguar_wave_rom[0x000 + i] * (rand() % 32768) / 32768;
+		jaguar_wave_rom[0x280 + i] = jaguar_wave_rom[0x000 + i] * (mame_rand(Machine) % 32768) / 32768;
 
 		/* F1DC00 = spike */
 		jaguar_wave_rom[0x300 + i] = (i == 0x40) ? 32767 : 0;
 
 		/* F1DE00 = white noise */
-		jaguar_wave_rom[0x380 + i] = rand() % 32768;
+		jaguar_wave_rom[0x380 + i] = mame_rand(Machine) % 32768;
 	}
 
 #if ENABLE_SPEEDUP_HACKS
diff -Nru base0109/src/sound/astrocde.c w0109/src/sound/astrocde.c
--- base0109/src/sound/astrocde.c	2006-03-10 02:56:14.000000000 +1300
+++ w0109/src/sound/astrocde.c	2006-09-27 12:26:22.000000000 +1200
@@ -83,7 +83,7 @@
 
 		if (chip->current_count_N == 0)
 		{
-			chip->randbyte = rand() & 0xff;
+			chip->randbyte = mame_rand(Machine) & 0xff;
 		}
 
 		chip->current_size_V = 32768*chip->vibrato_speed/chip->div_by_N_factor;
@@ -113,7 +113,7 @@
 
 		if (chip->noise_am)
 		{
-			chip->randbit = rand() & 1;
+			chip->randbit = mame_rand(Machine) & 1;
 			data = data + chip->randbit*chip->vol_noise4;
 		}
 
diff -Nru base0109/src/sound/c6280.c w0109/src/sound/c6280.c
--- base0109/src/sound/c6280.c	2006-03-17 02:57:03.000000000 +1300
+++ w0109/src/sound/c6280.c	2006-09-27 12:26:14.000000000 +1200
@@ -269,7 +269,7 @@
                     p->channel[ch].noise_counter += step;
                     if(p->channel[ch].noise_counter >= 0x800)
                     {
-                        data = (rand() & 1) ? 0x1F : 0;
+                        data = (mame_rand(Machine) & 1) ? 0x1F : 0;
                     }
                     p->channel[ch].noise_counter &= 0x7FF;
                     buffer[0][i] += (INT16)(vll * (data - 16));
diff -Nru base0109/src/sound/disc_wav.c w0109/src/sound/disc_wav.c
--- base0109/src/sound/disc_wav.c	2006-05-25 16:06:42.000000000 +1200
+++ w0109/src/sound/disc_wav.c	2006-09-27 12:26:06.000000000 +1200
@@ -495,7 +495,7 @@
 		/* Only sample noise on rollover to next cycle */
 		if(context->phase>(2.0*M_PI))
 		{
-			int newval=rand() & 0x7fff;
+			int newval=mame_rand(Machine) & 0x7fff;
 			node->output=DSS_NOISE__AMP*(1-(newval/16384.0));
 
 			/* Add DC Bias component */
diff -Nru base0109/src/sound/scsplfo.c w0109/src/sound/scsplfo.c
--- base0109/src/sound/scsplfo.c	2005-08-30 04:13:20.000000000 +1200
+++ w0109/src/sound/scsplfo.c	2006-09-27 12:25:59.000000000 +1200
@@ -83,7 +83,7 @@
 
 		//noise
 		//a=lfo_noise[i];
-		a=rand()&0xff;
+		a=mame_rand(Machine)&0xff;
 		p=128-a;
 		ALFO_NOI[i]=a;
 		PLFO_NOI[i]=p;
diff -Nru base0109/src/sound/tms5220.c w0109/src/sound/tms5220.c
--- base0109/src/sound/tms5220.c	2006-03-07 06:16:14.000000000 +1300
+++ w0109/src/sound/tms5220.c	2006-09-27 12:25:50.000000000 +1200
@@ -625,7 +625,7 @@
         else if (tms->old_pitch == 0)
         {
             /* generate unvoiced samples here */
-            tms->randbit = (rand() % 2) * 2 - 1;
+            tms->randbit = (mame_rand(Machine) % 2) * 2 - 1;
             current_val = (tms->randbit * tms->current_energy) / 4;
         }
         else
diff -Nru base0109/src/sound/vlm5030.c w0109/src/sound/vlm5030.c
--- base0109/src/sound/vlm5030.c	2006-08-14 16:33:45.000000000 +1200
+++ w0109/src/sound/vlm5030.c	2006-09-27 12:25:42.000000000 +1200
@@ -368,7 +368,7 @@
 			}
 			else if (chip->old_pitch <= 1)
 			{	/* generate unvoiced samples here */
-				current_val = (rand()&1) ? chip->current_energy : -chip->current_energy;
+				current_val = (mame_rand(Machine)&1) ? chip->current_energy : -chip->current_energy;
 			}
 			else
 			{
diff -Nru base0109/src/vidhrdw/40love.c w0109/src/vidhrdw/40love.c
--- base0109/src/vidhrdw/40love.c	2006-09-13 02:00:34.000000000 +1200
+++ w0109/src/vidhrdw/40love.c	2006-09-27 12:28:30.000000000 +1200
@@ -287,7 +287,7 @@
 		color = (spriteram[offs+2] & 0x07) + 0x08;
 
 		if (spriteram[offs+2] & 0xe0)
-			color = rand()&0xf;
+			color = mame_rand(Machine)&0xf;
 
 		drawgfx(bitmap,Machine->gfx[1],
 				code,
@@ -316,7 +316,7 @@
 		color = (spriteram_2[offs+2] & 0x07) + 0x08;
 
 		if (spriteram_2[offs+2] & 0xe0)
-			color = rand()&0xf;
+			color = mame_rand(Machine)&0xf;
 
 		drawgfx(bitmap,Machine->gfx[1],
 				code,
diff -Nru base0109/src/vidhrdw/atarirle.c w0109/src/vidhrdw/atarirle.c
--- base0109/src/vidhrdw/atarirle.c	2006-08-13 11:34:17.000000000 +1200
+++ w0109/src/vidhrdw/atarirle.c	2006-09-27 12:28:21.000000000 +1200
@@ -877,13 +877,13 @@
 
 			for (ty = sy; ty <= ey; ty++)
 			{
-				plot_pixel(bitmap1, sx, ty, rand() & 0xff);
-				plot_pixel(bitmap1, ex, ty, rand() & 0xff);
+				plot_pixel(bitmap1, sx, ty, mame_rand(Machine) & 0xff);
+				plot_pixel(bitmap1, ex, ty, mame_rand(Machine) & 0xff);
 			}
 			for (tx = sx; tx <= ex; tx++)
 			{
-				plot_pixel(bitmap1, tx, sy, rand() & 0xff);
-				plot_pixel(bitmap1, tx, ey, rand() & 0xff);
+				plot_pixel(bitmap1, tx, sy, mame_rand(Machine) & 0xff);
+				plot_pixel(bitmap1, tx, ey, mame_rand(Machine) & 0xff);
 			}
 		} while (0);
 fprintf(stderr, "   Sprite: c=%04X l=%04X h=%d X=%4d (o=%4d w=%3d) Y=%4d (o=%4d h=%d) s=%04X\n",
diff -Nru base0109/src/vidhrdw/crshrace.c w0109/src/vidhrdw/crshrace.c
--- base0109/src/vidhrdw/crshrace.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/vidhrdw/crshrace.c	2006-09-27 12:27:54.000000000 +1200
@@ -139,7 +139,7 @@
 		zoomx = 16 - zoomtable[zoomx]/8;
 		zoomy = 16 - zoomtable[zoomy]/8;
 
-		if (buffered_spriteram16[attr_start + 2] & 0x20ff) color = rand();
+		if (buffered_spriteram16[attr_start + 2] & 0x20ff) color = mame_rand(Machine);
 
 		for (y = 0;y <= ysize;y++)
 		{
diff -Nru base0109/src/vidhrdw/darkmist.c w0109/src/vidhrdw/darkmist.c
--- base0109/src/vidhrdw/darkmist.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/vidhrdw/darkmist.c	2006-09-27 12:27:44.000000000 +1200
@@ -198,7 +198,7 @@
 		palette=((spriteram[i+1])>>1)&0xf;
 
 		if(spriteram[i+1]&0x1)
-			palette=rand()&15;
+			palette=mame_rand(Machine)&15;
 
 		palette+=32;
 
diff -Nru base0109/src/vidhrdw/dkong.c w0109/src/vidhrdw/dkong.c
--- base0109/src/vidhrdw/dkong.c	2006-09-13 02:00:34.000000000 +1200
+++ w0109/src/vidhrdw/dkong.c	2006-09-27 12:27:34.000000000 +1200
@@ -319,7 +319,7 @@
 		{
 			if (table[counter] & 0x80)	/* star */
 			{
-				if (rand() & 1)	/* noise coming from sound board */
+				if (mame_rand(Machine) & 1)	/* noise coming from sound board */
 					plot_pixel(bitmap,x,y,Machine->pens[256]);
 			}
 			else if (grid_on)			/* radar */
diff -Nru base0109/src/vidhrdw/f1gp.c w0109/src/vidhrdw/f1gp.c
--- base0109/src/vidhrdw/f1gp.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/vidhrdw/f1gp.c	2006-09-27 12:27:24.000000000 +1200
@@ -357,7 +357,7 @@
 		zoomx = 32 - zoomx;
 		zoomy = 32 - zoomy;
 
-		if (f1gp2_spritelist[attr_start + 2] & 0x20ff) color = rand();
+		if (f1gp2_spritelist[attr_start + 2] & 0x20ff) color = mame_rand(Machine);
 
 		for (y = 0;y <= ysize;y++)
 		{
diff -Nru base0109/src/vidhrdw/galpani2.c w0109/src/vidhrdw/galpani2.c
--- base0109/src/vidhrdw/galpani2.c	2006-09-14 04:56:35.000000000 +1200
+++ w0109/src/vidhrdw/galpani2.c	2006-09-27 12:27:15.000000000 +1200
@@ -36,7 +36,7 @@
 { \
 	switch (offset * 2) \
 	{ \
-		case 0x16:	return rand() & 1; \
+		case 0x16:	return mame_rand(Machine) & 1; \
 		default: \
 			logerror("CPU #0 PC %06X : Warning, bg8 #%d screen reg %04X read\n",activecpu_get_pc(),_n_,offset*2); \
 	} \
diff -Nru base0109/src/vidhrdw/macrossp.c w0109/src/vidhrdw/macrossp.c
--- base0109/src/vidhrdw/macrossp.c	2006-09-12 04:52:43.000000000 +1200
+++ w0109/src/vidhrdw/macrossp.c	2006-09-27 12:27:00.000000000 +1200
@@ -43,7 +43,7 @@
 			break;
 
 		default:
-			color = rand() & 7;
+			color = mame_rand(Machine) & 7;
 			break;
 	}
 
@@ -78,7 +78,7 @@
 			break;
 
 		default:
-			color = rand() & 7;
+			color = mame_rand(Machine) & 7;
 			break;
 	}
 
@@ -113,7 +113,7 @@
 			break;
 
 		default:
-			color = rand() & 7;
+			color = mame_rand(Machine) & 7;
 			break;
 	}
 
@@ -236,7 +236,7 @@
 					break;
 
 				default:
-					col = rand();
+					col = mame_rand(Machine);
 					break;
 			}
 
diff -Nru base0109/src/vidhrdw/sbugger.c w0109/src/vidhrdw/sbugger.c
--- base0109/src/vidhrdw/sbugger.c	2006-09-13 02:00:34.000000000 +1200
+++ w0109/src/vidhrdw/sbugger.c	2006-09-27 12:29:30.000000000 +1200
@@ -53,9 +53,9 @@
 
 	for (i = 0;i < 256;i++)
 	{
-		int r = rand()|0x80;
-		int g = rand()|0x80;
-		int b = rand()|0x80;
+		int r = mame_rand(Machine)|0x80;
+		int g = mame_rand(Machine)|0x80;
+		int b = mame_rand(Machine)|0x80;
 		if (i == 0) r = g = b = 0;
 
 		palette_set_color(machine,i*2+1,r,g,b);
diff -Nru base0109/src/vidhrdw/seta2.c w0109/src/vidhrdw/seta2.c
--- base0109/src/vidhrdw/seta2.c	2006-09-11 14:01:54.000000000 +1200
+++ w0109/src/vidhrdw/seta2.c	2006-09-27 12:29:20.000000000 +1200
@@ -190,7 +190,7 @@
 		{
 			default:
 				popmessage("unknown gfxset %x",(num & 0x0700)>>8);
-				gfx = rand()&3; break;
+				gfx = mame_rand(Machine)&3; break;
 			case 0x0700: 	// 8bpp tiles (76543210)
 				gfx = 3; break;
 			case 0x0600:	// 6bpp tiles (--543210) (myangel sliding blocks test)
diff -Nru base0109/src/vidhrdw/stvvdp1.c w0109/src/vidhrdw/stvvdp1.c
--- base0109/src/vidhrdw/stvvdp1.c	2006-09-22 16:12:59.000000000 +1200
+++ w0109/src/vidhrdw/stvvdp1.c	2006-09-27 12:29:14.000000000 +1200
@@ -736,7 +736,7 @@
 				transmask = 0x8000;
 				break;
 			default: // other settings illegal
-				pix = rand();
+				pix = mame_rand(Machine);
 				mode = 0;
 				transmask = 0xff;
 		}
diff -Nru base0109/src/vidhrdw/vector.c w0109/src/vidhrdw/vector.c
--- base0109/src/vidhrdw/vector.c	2006-08-18 04:31:07.000000000 +1200
+++ w0109/src/vidhrdw/vector.c	2006-09-27 12:28:37.000000000 +1200
@@ -205,7 +205,7 @@
 
 	if (flicker && (intensity > 0))
 	{
-		intensity += (intensity * (0x80-(rand()&0xff)) * flicker)>>16;
+		intensity += (intensity * (0x80-(mame_rand(Machine)&0xff)) * flicker)>>16;
 		if (intensity < 0)
 			intensity = 0;
 		if (intensity > 0xff)
