summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author kazblox <kazbloxmc@gmail.com>2015-09-25 20:10:02 +0800
committer kazblox <kazbloxmc@gmail.com>2015-09-25 20:10:02 +0800
commitbd41a1ad64469c7f0bca2be4b424955e25e4b246 (patch)
tree342cde99abeeada1b262e9cd617f0cb2b77fc2f1 /src
parent4e3fb779dcfe2dfe34feec7a816d4c9dfd4ee13b (diff)
parent4d391b1a0477e7aca9806c900bf06bfa90fe8b01 (diff)
Merge branch 'master' of https://github.com/mamedev/mame
Diffstat (limited to 'src')
-rw-r--r--src/mame/arcade.lst12
-rw-r--r--src/mame/drivers/piggypas.c169
-rw-r--r--src/mame/drivers/tapatune.c41
-rw-r--r--src/mame/includes/n64.h9
-rw-r--r--src/mame/machine/n64.c16
-rw-r--r--src/mame/video/n64.c208
-rw-r--r--src/mame/video/n64.h9
-rw-r--r--src/mame/video/n64types.h2
-rw-r--r--src/mess/drivers/decwritr.c4
9 files changed, 342 insertions, 128 deletions
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 1499d192536..ddf3c6e7362 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -8373,6 +8373,8 @@ ccclass
tsclass
// Bromley
srockbwl
+// Smart Industries
+smartoss
// Cinematronics raster games
@@ -32209,3 +32211,13 @@ alinvade
joystand // 1997 Yuvo
chexx83 // 1983 ICE
faceoffh // 1983 SoftLogic / Entertainment Enterprises
+
+// Doyle & Assoc.
+piggypas
+hoopshot
+rndrndqs
+fidlstix
+jackbean
+dumpump
+3lilpigs
+
diff --git a/src/mame/drivers/piggypas.c b/src/mame/drivers/piggypas.c
new file mode 100644
index 00000000000..cc12d00ad74
--- /dev/null
+++ b/src/mame/drivers/piggypas.c
@@ -0,0 +1,169 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/*
+
+Piggy Pass
+
+hw platform unknown
+game details unknown
+
+*/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/okim6295.h"
+
+class piggypas_state : public driver_device
+{
+public:
+ piggypas_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ virtual void machine_start();
+ virtual void machine_reset();
+ required_device<cpu_device> m_maincpu;
+};
+
+
+
+static ADDRESS_MAP_START( piggypas_map, AS_PROGRAM, 8, piggypas_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( piggypas )
+ PORT_START("IN0")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+
+void piggypas_state::machine_start()
+{
+}
+
+void piggypas_state::machine_reset()
+{
+}
+
+static MACHINE_CONFIG_START( piggypas, piggypas_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80,8000000) // wrong CPU? (not valid Z80 code)
+ MCFG_CPU_PROGRAM_MAP(piggypas_map)
+// MCFG_CPU_VBLANK_INT_DRIVER("screen", piggypas_state, irq0_line_hold)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) // not verified
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+
+ROM_START( piggypas )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pigypass.u6", 0x00000, 0x10000, CRC(c8dc4e26) SHA1(f9643945f84fe2679742922abf5a92b77bf59e4c) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "pigypass.u14", 0x00000, 0x40000, CRC(855504c1) SHA1(dfe91943057fa66798c8395348cf703cb11468d2) )
+ROM_END
+
+
+ROM_START( hoopshot )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hoopshot.u6", 0x00000, 0x08000, CRC(fa8ae8aa) SHA1(2266a775fba7c8f8e3e24441aca6c4b89a6d1ec7) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "hoopshot.u14", 0x00000, 0x40000, CRC(748462b5) SHA1(ccb8f1dbb6471b134c1e97699383c3ef139c42c3) )
+ROM_END
+
+
+
+ROM_START( rndrndqs )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "round.u6", 0x00000, 0x10000, CRC(3eb64b10) SHA1(66051cdd6be33f4f7249be1c8d56e5e43c838163) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "round.u14", 0x00000, 0x40000, CRC(36d1c07a) SHA1(3c978d4d03d8dbf79e1afe7dc46209d9ac4d3cc3) )
+ROM_END
+
+ROM_START( fidlstix )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "fiddle.u6", 0x00000, 0x08000, CRC(48125bf1) SHA1(5772fe3c0987fc6b2508da5efe3c4c3c179b76a1) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "fiddle.u14", 0x00000, 0x40000, CRC(baf4e1cd) SHA1(ae153f832cbd188e9f3f357a1a1f68cc8264d346) )
+ROM_END
+
+// bad dump of program rom
+ROM_START( jackbean )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "beanstlk.u6", 0x00000, 0x10000, BAD_DUMP CRC(127c4d6c) SHA1(c864293f42e81a1b8e5dcb12abc1c0019853792e) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "beanstlk.u14", 0x00000, 0x40000, CRC(e33ef0a3) SHA1(337ce3d0c901b0b3241d76601eaad6e3e2724e1a) )
+ROM_END
+
+// bad dump of program rom
+ROM_START( dumpump )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "dump-ump.u6", 0x00000, 0x08000, BAD_DUMP CRC(410fc27e) SHA1(d9505c11f4844b9b58c12b3ff6b860357a4be75e))
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "dump-ump.u14", 0x00000, 0x20000, CRC(08bc7bb5) SHA1(2355783ec614d8f4e1dca3cb415a97a28411157b))
+ROM_END
+
+// bad dump of program rom
+ROM_START( 3lilpigs )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3-pigs.u6", 0x00000, 0x10000, BAD_DUMP CRC(1db9d754) SHA1(9b1db9c9bb155ebb5509970476b20b9dda6d3021) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "3-pigs.u14", 0x00000, 0x40000, CRC(62eb76e2) SHA1(c4cad241dedf2c290f9bf80038415fe39b3ce17d) )
+ROM_END
+
+
+
+
+
+// COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 04.40
+GAME( 1992, piggypas, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Piggy Pass (version 04.40)", MACHINE_IS_SKELETON_MECHANICAL )
+// COPYRIGHT (c) 1990, 1991, 1992, DOYLE & ASSOC., INC. VERSION 05.22
+GAME( 1992, hoopshot, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Hoop Shot (version 05.22)", MACHINE_IS_SKELETON_MECHANICAL )
+// Quick $ilver Development Co. 10/08/96 ROUND REV 6
+GAME( 1996, rndrndqs, 0, piggypas, piggypas, driver_device, 0, ROT0, "Quick $ilver Development Co.", "Round and Round (Rev 6) (Quick $ilver)", MACHINE_IS_SKELETON_MECHANICAL )
+// Quick$ilver Development Co. 10/02/95 -FIDDLESTIX- REV 15T
+GAME( 1995, fidlstix, 0, piggypas, piggypas, driver_device, 0, ROT0, "Quick $ilver Development Co.", "Fiddle Stix (1st Rev)", MACHINE_IS_SKELETON_MECHANICAL )
+// bad dump, so version unknown
+GAME( 199?, jackbean, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Jack & The Beanstalk (Doyle & Assoc.?)", MACHINE_IS_SKELETON_MECHANICAL )
+// bad dump, so version unknown
+GAME( 199?, dumpump, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "Dump The Ump", MACHINE_IS_SKELETON_MECHANICAL )
+// bad dump, so version unknown
+GAME( 199?, 3lilpigs, 0, piggypas, piggypas, driver_device, 0, ROT0, "Doyle & Assoc.", "3 Lil' Pigs", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/tapatune.c b/src/mame/drivers/tapatune.c
index 3e8ef777cf3..ee7c6ef7930 100644
--- a/src/mame/drivers/tapatune.c
+++ b/src/mame/drivers/tapatune.c
@@ -584,6 +584,42 @@ ROM_START( srockbwl )
ROM_END
+/*
+
+Smart Toss 'Em
+
+romset was marked "Smart Toss 'em"
+
+one of the roms contains the string
+
+SMART INDUSTRIES SMARTBALL V2.0
+
+a reference to Smart Toss 'em can be found at
+http://www.museumofplay.org/online-collections/22/67/109.17072
+
+also contains
+
+"Creative Electronics Software"
+
+*/
+
+
+ROM_START( smartoss )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "s-tossem.u8", 0x0000, 0x10000,CRC(ce07c837) SHA1(5a474cc9d3163385a3dac6da935bc77af67ac85a) )
+
+ ROM_REGION( 0x1000000, "bsmt", 0 )
+ ROM_LOAD( "s-tossem.u16", 0x000000, 0x20000, CRC(633222dc) SHA1(f95713902920737c9d20aafbdeb975daf98c7078) )
+ ROM_CONTINUE( 0x040000, 0x20000 )
+ ROM_CONTINUE( 0x080000, 0x20000 )
+ ROM_CONTINUE( 0x0c0000, 0x20000 )
+ // U21 is not populated?
+
+ // for a different sub-board maybe? or banked CPU data?
+ ROM_REGION( 0x40000, "unkdata", 0 )
+ ROM_LOAD( "s-tossem.u27", 0x0000, 0x40000, CRC(703d19b7) SHA1(75641d885885a67bd66afa38577c7907fa505b0b) )
+ROM_END
+
/*************************************
*
* Game driver(s)
@@ -591,4 +627,7 @@ ROM_END
*************************************/
GAME(1994, tapatune, 0, tapatune, tapatune, driver_device, 0, ROT0, "Moloney Manufacturing Inc. / Creative Electronics and Software", "Tap a Tune", MACHINE_SUPPORTS_SAVE )
-GAME(1994, srockbwl, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Bromley", "Super Rock and Bowl (V1.1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
+
+// below appear to be mechanical games with the same Z80 board as the above
+GAME(1994, srockbwl, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Bromley", "Super Rock and Bowl (V1.1)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
+GAME(199?, smartoss, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Smart Industries / Creative Electronics and Software", "Smart Toss 'em / Smartball (Ver 2.0)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h
index 1a35812e87b..bcbd8879188 100644
--- a/src/mame/includes/n64.h
+++ b/src/mame/includes/n64.h
@@ -100,6 +100,7 @@ public:
void si_dma_tick();
void vi_scanline_tick();
void reset_tick();
+ void video_update(bitmap_rgb32 &bitmap);
// Video Interface (VI) registers
UINT32 vi_width;
@@ -263,6 +264,14 @@ private:
// Video Interface (VI) functions
void vi_recalculate_resolution();
+ void video_update16(bitmap_rgb32 &bitmap);
+ void video_update32(bitmap_rgb32 &bitmap);
+ UINT8 random_seed; // %HACK%, adds 19 each time it's read and is more or less random
+ UINT8 get_random() { return random_seed += 0x13; }
+
+ INT32 m_gamma_table[256];
+ INT32 m_gamma_dither_table[0x4000];
+
};
// device type definition
diff --git a/src/mame/machine/n64.c b/src/mame/machine/n64.c
index cfdcb914117..d4c0eec9f8f 100644
--- a/src/mame/machine/n64.c
+++ b/src/mame/machine/n64.c
@@ -27,7 +27,18 @@ n64_periphs::n64_periphs(const machine_config &mconfig, const char *tag, device_
, dd_present(false)
, disk_present(false)
, cart_present(false)
-{
+{
+ for (INT32 i = 0; i < 256; i++)
+ {
+ m_gamma_table[i] = sqrt((float)(i << 6));
+ m_gamma_table[i] <<= 1;
+ }
+
+ for (INT32 i = 0; i < 0x4000; i++)
+ {
+ m_gamma_dither_table[i] = sqrt((float)i);
+ m_gamma_dither_table[i] <<= 1;
+ }
}
TIMER_CALLBACK_MEMBER(n64_periphs::reset_timer_callback)
@@ -1029,14 +1040,13 @@ void n64_periphs::vi_recalculate_resolution()
if(vi_control & 0x40) /* Interlace */
{
- height *= 2;
}
//state->m_rdp->m_misc_state.m_fb_height = height;
visarea.max_x = width - 1;
visarea.max_y = height - 1;
- m_screen->configure(width, 525, visarea, period);
+ m_screen->configure((vi_hsync & 0x00000fff)>>2, (vi_vsync & 0x00000fff), visarea, period);
}
READ32_MEMBER( n64_periphs::vi_reg_r )
diff --git a/src/mame/video/n64.c b/src/mame/video/n64.c
index e11de1b95b7..181b50cf7cc 100644
--- a/src/mame/video/n64.c
+++ b/src/mame/video/n64.c
@@ -89,16 +89,93 @@ INT32 n64_rdp::get_alpha_cvg(INT32 comb_alpha, rdp_span_aux* userdata, const rdp
/*****************************************************************************/
-void n64_rdp::video_update(n64_periphs* n64, bitmap_rgb32 &bitmap)
+void n64_state::video_start()
{
- switch(n64->vi_control & 0x3)
+ m_rdp = auto_alloc(machine(), n64_rdp(*this));
+
+ m_rdp->set_machine(machine());
+ m_rdp->init_internal_state();
+
+ m_rdp->m_blender.set_machine(machine());
+ m_rdp->m_blender.set_processor(m_rdp);
+
+ m_rdp->m_tex_pipe.set_machine(machine());
+
+ m_rdp->m_aux_buf = auto_alloc_array_clear(machine(), UINT8, EXTENT_AUX_COUNT);
+
+ if (LOG_RDP_EXECUTION)
+ {
+ rdp_exec = fopen("rdp_execute.txt", "wt");
+ }
+}
+
+UINT32 n64_state::screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ n64_periphs* n64 = machine().device<n64_periphs>("rcp");
+
+ //UINT16* frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ //UINT8* cvg_buffer = &m_rdp.m_hidden_bits[((n64->vi_origin & 0xffffff) >> 2) >> 1];
+ //INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
+
+ //vibuffering = 0; // Disabled for now
+
+ /*
+ if (vibuffering && ((n64->vi_control & 3) == 2))
+ {
+ if (frame_buffer)
+ {
+ for (j=0; j < vres; j++)
+ {
+ for (i=0; i < hres; i++)
+ {
+ UINT16 pix;
+ pix = frame_buffer[pixels ^ WORD_ADDR_XOR];
+ curpixel_cvg = ((pix & 1) << 2) | (cvg_buffer[pixels ^ BYTE_ADDR_XOR] & 3); // Reuse of this variable
+ if (curpixel_cvg < 7 && i > 1 && j > 1 && i < (hres - 2) && j < (vres - 2) && fsaa)
+ {
+ newc = video_filter16(&frame_buffer[pixels ^ WORD_ADDR_XOR], &cvg_buffer[pixels ^ BYTE_ADDR_XOR], n64->vi_width);
+ ViBuffer[i][j] = newc;
+ }
+ else
+ {
+ newc.i.r = ((pix >> 8) & 0xf8) | (pix >> 13);
+ newc.i.g = ((pix >> 3) & 0xf8) | ((pix >> 8) & 0x07);
+ newc.i.b = ((pix << 2) & 0xf8) | ((pix >> 3) & 0x07);
+ ViBuffer[i][j] = newc;
+ }
+ pixels++;
+ }
+ pixels += invisiblewidth;
+ }
+ }
+ }
+ */
+
+ if (n64->vi_blank)
+ {
+ bitmap.fill(0, screen.visible_area());
+ return 0;
+ }
+
+ n64->video_update(bitmap);
+
+ return 0;
+}
+
+void n64_state::screen_eof_n64(screen_device &screen, bool state)
+{
+}
+
+void n64_periphs::video_update(bitmap_rgb32 &bitmap)
+{
+ switch(vi_control & 0x3)
{
case PIXEL_SIZE_16BIT:
- video_update16(n64, bitmap);
+ video_update16(bitmap);
break;
case PIXEL_SIZE_32BIT:
- video_update32(n64, bitmap);
+ video_update32(bitmap);
break;
default:
@@ -107,7 +184,7 @@ void n64_rdp::video_update(n64_periphs* n64, bitmap_rgb32 &bitmap)
}
}
-void n64_rdp::video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap)
+void n64_periphs::video_update16(bitmap_rgb32 &bitmap)
{
//INT32 fsaa = (((n64->vi_control >> 8) & 3) < 2);
//INT32 divot = (n64->vi_control >> 4) & 1;
@@ -117,17 +194,17 @@ void n64_rdp::video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap)
//INT32 dither_filter = (n64->vi_control >> 16) & 1;
//INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT16* frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ UINT16* frame_buffer = (UINT16*)&rdram[(vi_origin & 0xffffff) >> 2];
//UINT32 hb = ((n64->vi_origin & 0xffffff) >> 2) >> 1;
//UINT8* hidden_buffer = &m_hidden_bits[hb];
- INT32 hdiff = (n64->vi_hstart & 0x3ff) - ((n64->vi_hstart >> 16) & 0x3ff);
- float hcoeff = ((float)(n64->vi_xscale & 0xfff) / (1 << 10));
+ INT32 hdiff = (vi_hstart & 0x3ff) - ((vi_hstart >> 16) & 0x3ff);
+ float hcoeff = ((float)(vi_xscale & 0xfff) / (1 << 10));
UINT32 hres = ((float)hdiff * hcoeff);
- INT32 invisiblewidth = n64->vi_width - hres;
+ INT32 invisiblewidth = vi_width - hres;
- INT32 vdiff = ((n64->vi_vstart & 0x3ff) - ((n64->vi_vstart >> 16) & 0x3ff)) >> 1;
- float vcoeff = ((float)(n64->vi_yscale & 0xfff) / (1 << 10));
+ INT32 vdiff = ((vi_vstart & 0x3ff) - ((vi_vstart >> 16) & 0x3ff)) >> 1;
+ float vcoeff = ((float)(vi_yscale & 0xfff) / (1 << 10));
UINT32 vres = ((float)vdiff * vcoeff);
if (vdiff <= 0 || hdiff <= 0)
@@ -169,21 +246,21 @@ void n64_rdp::video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap)
}
}
-void n64_rdp::video_update32(n64_periphs* n64, bitmap_rgb32 &bitmap)
+void n64_periphs::video_update32(bitmap_rgb32 &bitmap)
{
- INT32 gamma = (n64->vi_control >> 3) & 1;
- INT32 gamma_dither = (n64->vi_control >> 2) & 1;
+ INT32 gamma = (vi_control >> 3) & 1;
+ INT32 gamma_dither = (vi_control >> 2) & 1;
//INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT32* frame_buffer32 = (UINT32*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ UINT32* frame_buffer32 = (UINT32*)&rdram[(vi_origin & 0xffffff) >> 2];
- const INT32 hdiff = (n64->vi_hstart & 0x3ff) - ((n64->vi_hstart >> 16) & 0x3ff);
- const float hcoeff = ((float)(n64->vi_xscale & 0xfff) / (1 << 10));
+ const INT32 hdiff = (vi_hstart & 0x3ff) - ((vi_hstart >> 16) & 0x3ff);
+ const float hcoeff = ((float)(vi_xscale & 0xfff) / (1 << 10));
UINT32 hres = ((float)hdiff * hcoeff);
- INT32 invisiblewidth = n64->vi_width - hres;
+ INT32 invisiblewidth = vi_width - hres;
- const INT32 vdiff = ((n64->vi_vstart & 0x3ff) - ((n64->vi_vstart >> 16) & 0x3ff)) >> 1;
- const float vcoeff = ((float)(n64->vi_yscale & 0xfff) / (1 << 10));
+ const INT32 vdiff = ((vi_vstart & 0x3ff) - ((vi_vstart >> 16) & 0x3ff)) >> 1;
+ const float vcoeff = ((float)(vi_yscale & 0xfff) / (1 << 10));
const UINT32 vres = ((float)vdiff * vcoeff);
if (vdiff <= 0 || hdiff <= 0)
@@ -242,7 +319,6 @@ void n64_rdp::video_update32(n64_periphs* n64, bitmap_rgb32 &bitmap)
pix = (r << 24) | (g << 16) | (b << 8);
}
-
d[i] = (pix >> 8);
}
frame_buffer32 += invisiblewidth;
@@ -3067,19 +3143,6 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
//memset(m_hidden_bits, 3, 8388608);
m_prim_lod_fraction.set(0, 0, 0, 0);
-
- for (INT32 i = 0; i < 256; i++)
- {
- m_gamma_table[i] = sqrt((float)(i << 6));
- m_gamma_table[i] <<= 1;
- }
-
- for (INT32 i = 0; i < 0x4000; i++)
- {
- m_gamma_dither_table[i] = sqrt((float)i);
- m_gamma_dither_table[i] <<= 1;
- }
-
z_build_com_table();
for (INT32 i = 0; i < 0x4000; i++)
@@ -3122,83 +3185,6 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
m_compute_cvg[1] = &n64_rdp::compute_cvg_flip;
}
-void n64_state::video_start()
-{
- m_rdp = auto_alloc(machine(), n64_rdp(*this));
-
- m_rdp->set_machine(machine());
- m_rdp->init_internal_state();
-
- m_rdp->m_blender.set_machine(machine());
- m_rdp->m_blender.set_processor(m_rdp);
-
- m_rdp->m_tex_pipe.set_machine(machine());
-
- m_rdp->m_aux_buf = auto_alloc_array_clear(machine(), UINT8, EXTENT_AUX_COUNT);
-
- if (LOG_RDP_EXECUTION)
- {
- rdp_exec = fopen("rdp_execute.txt", "wt");
- }
-}
-
-UINT32 n64_state::screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- n64_periphs* n64 = machine().device<n64_periphs>("rcp");
-
- //UINT16* frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
- //UINT8* cvg_buffer = &m_rdp.m_hidden_bits[((n64->vi_origin & 0xffffff) >> 2) >> 1];
- //INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
-
- //vibuffering = 0; // Disabled for now
-
- /*
- if (vibuffering && ((n64->vi_control & 3) == 2))
- {
- if (frame_buffer)
- {
- for (j=0; j < vres; j++)
- {
- for (i=0; i < hres; i++)
- {
- UINT16 pix;
- pix = frame_buffer[pixels ^ WORD_ADDR_XOR];
- curpixel_cvg = ((pix & 1) << 2) | (cvg_buffer[pixels ^ BYTE_ADDR_XOR] & 3); // Reuse of this variable
- if (curpixel_cvg < 7 && i > 1 && j > 1 && i < (hres - 2) && j < (vres - 2) && fsaa)
- {
- newc = video_filter16(&frame_buffer[pixels ^ WORD_ADDR_XOR], &cvg_buffer[pixels ^ BYTE_ADDR_XOR], n64->vi_width);
- ViBuffer[i][j] = newc;
- }
- else
- {
- newc.i.r = ((pix >> 8) & 0xf8) | (pix >> 13);
- newc.i.g = ((pix >> 3) & 0xf8) | ((pix >> 8) & 0x07);
- newc.i.b = ((pix << 2) & 0xf8) | ((pix >> 3) & 0x07);
- ViBuffer[i][j] = newc;
- }
- pixels++;
- }
- pixels += invisiblewidth;
- }
- }
- }
- */
-
- if (n64->vi_blank)
- {
- bitmap.fill(0, screen.visible_area());
- return 0;
- }
-
- m_rdp->video_update(n64, bitmap);
-
- return 0;
-}
-
-void n64_state::screen_eof_n64(screen_device &screen, bool state)
-{
-}
-
void n64_rdp::render_spans(INT32 start, INT32 end, INT32 tilenum, bool flip, extent_t* spans, bool rect, rdp_poly_state* object)
{
const INT32 clipy1 = m_scissor.m_yh;
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h
index 25238d9b881..2d44786f232 100644
--- a/src/mame/video/n64.h
+++ b/src/mame/video/n64.h
@@ -195,9 +195,6 @@ public:
UINT8* get_tmem8() { return m_tmem; }
UINT16* get_tmem16() { return (UINT16*)m_tmem; }
- // Emulation Accelerators
- UINT8 get_random() { return m_misc_state.m_random_seed += 0x13; }
-
// YUV Factors
void set_yuv_factors(color_t k023, color_t k1, color_t k4, color_t k5) { m_k023 = k023; m_k1 = k1; m_k4 = k4; m_k5 = k5; }
color_t& get_k023() { return m_k023; }
@@ -226,9 +223,6 @@ public:
INT32 normalize_dzpix(INT32 sum);
bool z_compare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix, rdp_span_aux* userdata, const rdp_poly_state &object);
- // Fullscreen update-related
- void video_update(n64_periphs* n64, bitmap_rgb32 &bitmap);
-
// Commands
void cmd_invalid(UINT32 w1, UINT32 w2);
void cmd_noop(UINT32 w1, UINT32 w2);
@@ -374,9 +368,6 @@ private:
INT32 m_norm_point_rom[64];
INT32 m_norm_slope_rom[64];
- INT32 m_gamma_table[256];
- INT32 m_gamma_dither_table[0x4000];
-
static UINT32 s_special_9bit_clamptable[512];
static const z_decompress_entry_t m_z_dec_table[8];
diff --git a/src/mame/video/n64types.h b/src/mame/video/n64types.h
index fedac9e0225..74a7a958888 100644
--- a/src/mame/video/n64types.h
+++ b/src/mame/video/n64types.h
@@ -27,8 +27,6 @@ struct misc_state_t
INT32 m_ti_width; // Width (in pixels) of TI transfers
UINT32 m_ti_address; // Destination address for TI transfers
- UINT8 m_random_seed; // %HACK%, adds 19 each time it's read and is more or less random
-
UINT32 m_max_level; // Maximum LOD level for texture filtering
UINT32 m_min_level; // Minimum LOD level for texture filtering
diff --git a/src/mess/drivers/decwritr.c b/src/mess/drivers/decwritr.c
index 7e96170a90d..12bcf33d1df 100644
--- a/src/mess/drivers/decwritr.c
+++ b/src/mess/drivers/decwritr.c
@@ -371,8 +371,8 @@ MACHINE_CONFIG_END
ROM_START( la120 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- // later romset, with 23-003e2.e6, 23-004e2.e8, 23-005e2.e12, 23-006e2.e17 replaced by one rom, 23-038e4.e6
- ROM_LOAD( "23-038e4-00.e6", 0x0000, 0x2000, BAD_DUMP CRC(12b80c00) SHA1(35875a85c5037454ac4a82ee19ea9f0337ad0dbe))
+ // later romset, with 23-003e2.e6, 23-004e2.e8, 23-005e2.e12, 23-006e2.e17 replaced by one rom, 23-038e4.e6 which may be a concatenation of the old roms, unclear.
+ ROM_LOAD( "23-038e4-00.e6", 0x0000, 0x2000, CRC(cad4eb09) SHA1(d5db117da363d36817476F906251ea4ee1cb14b8))
ROM_LOAD( "23-007e2-00.e4", 0x2000, 0x0800, CRC(41eaebf1) SHA1(c7d05417b24b853280d1636776d399a0aea34720)) // used by both earlier and later romset
// there is an optional 3 roms, european and APL (and BOTH) rom which goes from 2000-2fff in e4, all undumped.
// there is another romset used on the Bell Teleprinter 1000 (Model LAS12) which I believe is 23-004e4.e6 and 23-086e2.e4